added addStarter function to Event

This commit is contained in:
marko
2022-10-28 12:54:44 +02:00
parent 3e60b97050
commit c332fcdcd8
7 changed files with 483 additions and 1761 deletions

View File

@@ -3,7 +3,7 @@
/**
* frame for a shiai
*/
class shiai
class Shiai
{
private $id = null; //< unique id
private $date = null; //< date of the shiai
@@ -90,7 +90,10 @@ class shiai
}
} // end class shiai
class event
/**
* Framework for a event
*/
class Event
{
private $id = null; //< unique id of the event in the db
private $date = null; //< date for the event (@todo ranges?)
@@ -98,8 +101,18 @@ class event
private $deadline = null; //< until when one can register for the event
private $remarks = null; //< remarks to the event (special rules) or a json object for missing data (e.g. non-shiai events)
private $shiai = null;
private $shiai = null; //< a place to load the linked shiai to (if loaded)
/**
* constructor
*
* @param int $id id in the database
* @param string $date date of the event as string in the format "YYYY-MM-DD"
* @param int $shiaiId id of the linked shiai or null if not appropriate
* @param string $deadline deadline for sign ins in the format "YYYY-MM-DD"
* @param string $remarks (json formatted) string with meta information
* @param Shiai $shiai if the shiai is loaded anyway it can be placed here.
*/
public function __construct($id, $date, $shiaiId, $deadline, $remarks, $shiai)
{
//! @todo InputValidation
@@ -112,6 +125,11 @@ class event
$this->shiai = $shiai;
}
/**
* Representation of an event as (materializeCss) card
*
* @return string string with the html code of the event
*/
public function asHtmlCard()
{
return
@@ -135,7 +153,8 @@ class event
'<tr>' .
'<td>' . $this->date->format('Y-m-d') . '</td>' .
'<td><a href="/pages/desktop/wkParticipo/showWkEvent.php?eventId=' . $this->id . '" >' . $this->shiai->getName() . '</a></td>' .
'<td><a class="waves-effect waves-light btn-floating modal-trigger" href="#event-modal-' . $this->id . '"><i class="material-icons">add</i></a></td>' .
'<td><a class="waves-effect waves-light btn-floating modal-trigger" href="#event-modal-' . $this->id . '"><i class="material-icons">zoom_in
</i></a></td>' .
'</tr>';
}
@@ -166,8 +185,140 @@ class event
shiai::fromArray(($shiai != null) ? $shiai : $member)
);
}
/// Einen Starter per userId mit typeId zu einem Event per eventId hinzufügen
/// Es erfolgt keine Überprüfung der Meldeberechtigung!
public static function addStarter($dbConnection, $starter)
{
$retMessage = [];
$query = 'INSERT INTO `wkParticipo_Starter` (eventId, userId, type) values (:eventId, :userId, :typeId);';
$params = [
':eventId' => ['value' => $starter->getEventId(), 'data_type' => PDO::PARAM_INT],
':userId' => ['value' => $starter->getUserId(), 'data_type' => PDO::PARAM_INT],
':typeId' => ['value' => $starter->getTypeId(), 'data_type' => PDO::PARAM_INT]
];
return dbConnector::query($query, $params);
}
} // end class event
abstract class StartingType
{
const __default = null;
const Fighter = 1;
const Audience = 2;
const NoParticipation = 3;
/**
* convert a variable into a StartingType
*
* @param [int] $type starting type candidate
* @return int representation of the StartingType if successful converted, otherwise null
*/
public static function toStartingType($type)
{
return filter_var($type, FILTER_VALIDATE_INT, ['options' => ['default' => null, 'min_range' => 1, 'max_range' => 3]]);
}
/**
* string representations of the starting type
*
* @var array array of StartingType=> its string representation
*/
public static $AsString = [1 => 'Kämpfer', 2 => 'Zuschauer', 3 => 'keine Teilnahme'];
}
class Starter
{
private $id = null; //< id of the event in the database
private $eventId = null; //< dbId of the event one is starting
private $typeId = null; //< type(id) of the starter
private $userId = null; //< id of the starting user
private $rideId = null; //< id of the ride where the starter can car pool
private $mass = null; //< mass in kg on the scale
private $result = null; //< result of the start (array of places if multi start)
// Getter for the member
public function getId()
{
return $this->id;
}
public function getEventId()
{
return $this->eventId;
}
public function getTypeId()
{
return $this->typeId;
}
public function getUserId()
{
return $this->userId;
}
public function getRideId()
{
return $this->rideId;
}
public function getMass()
{
return $this->mass;
}
public function getResult()
{
return $this->result;
}
/**
* Construtor
*
* @todo Document
* @todo Rethink validation: filter_var is supposed to return the converted value in case of success. But the reference didn't say anything about not success...
*/
public function __construct($id, $eventId, $typeId, $userId, $rideId, $mass, $result)
{
$this->id = filter_var($id, FILTER_VALIDATE_INT, ['options' => ['default' => null, 'min_range' => 1]]);
$this->eventId = filter_var($id, FILTER_VALIDATE_INT, ['options' => ['default' => null, 'min_range' => 1]]);
$this->typeId = StartingType::toStartingType($type);
$this->userId = filter_var($id, FILTER_VALIDATE_INT, ['options' => ['default' => null, 'min_range' => 1]]);
$this->rideId = filter_var($id, FILTER_VALIDATE_INT, ['options' => ['default' => null, 'min_range' => 1]]);
$this->mass = filter_var($mass, FILTER_VALIDATE_FLOAT, ['options' => ['default' => null, 'min_range' => 0.0]]);
if (is_iterable($result)) {
$this->result = [];
foreach ($result as $r) {
$r = filter_var($r, FILTER_VAR_INT, ['options' => ['default' => null, 'min_range' => 0]]);
if ($r) {
array_push($this->result, $r);
}
}
} else {
$this->$result = filter_var($r, FILTER_VAR_INT, ['options' => ['default' => null, 'min_range' => 0]]);
}
}
// create starter from assoc array
public static function create($parameter)
{
$id = $parameter['id'] ?? null; //< id of the event in the database
$eventId = $parameter['eventId'] ?? null; //< dbId of the event one is starting
$typeId = $parameter['typeId'] ?? null; //< type(id) of the starter
$userId = $parameter['userId'] ?? null; //< id of the starting user
$rideId = $parameter['rideId'] ?? null; //< id of the ride where the starter can car pool
$mass = $parameter['mass'] ?? null; //< mass in kg on the scale
$result = $parameter['result'] ?? null; //< result of the start (array of places if multi start)
return new Starter($id, $eventId, $typeId, $userId, $rideId, $mass, $result);
}
}
class eventPlaner
{
private static $db = null;