add customer api

This commit is contained in:
2019-10-08 22:33:25 +02:00
committed by Roland Schneider
parent 9aee187d11
commit 1300bfc752
33 changed files with 1164 additions and 246 deletions

View File

@@ -0,0 +1,13 @@
<?php
namespace customerapi\models;
class DayToDisplay
{
public $date;//: number; //seconds
public $active;//: true;
public $events;//: Event[];
public $comment;
}

View File

@@ -0,0 +1,21 @@
<?php
namespace customerapi\models;
use yii\base\Component;
use yii\base\Model;
class EventView extends Component
{
public $id;//: number;
public $name;//: string;
public $start;//: number;
public $end;//: number;
public $trainer;//?: Trainer;
public $seatCount;//: number;
public $reservationCount;//: number;
public $eventType;//: EventType;
public $reservedAt;//: number;
}

View File

@@ -0,0 +1,70 @@
<?php
namespace customerapi\models;
use common\models\Customer;
use Yii;
use yii\base\Model;
/**
* Login form
*/
class LoginForm extends Model
{
public $username;
public $password;
public $customer;
/**
* @inheritdoc
*/
public function rules()
{
return [
// username and password are both required
[['username', 'password'], 'required'],
// password is validated by validatePassword()
['password', 'validatePassword'],
];
}
public function attributeLabels(){
return [
'username' =>Yii::t('common/site', 'Username'),
'password' =>Yii::t('common/site', 'Password'),
];
}
/**
* Validates the password.
* This method serves as the inline validation for password.
*
* @param string $attribute the attribute currently being validated
* @param array $params the additional name-value pairs given in the rule
* @throws \yii\base\InvalidConfigException
*/
public function validatePassword($attribute, $params)
{
if (!$this->hasErrors()) {
/** @var \common\models\Customer $user */
$customer = $this->getCustomer();
if (!$customer || !$customer->validatePassword($this->password)) {
$this->addError($attribute, 'Incorrect username or password.');
}
}
}
/**
* Finds user by [[username]]
*
* @return Customer|null
*/
public function getCustomer()
{
if ( $this->customer === null ){
$this->customer = Customer::findIdentity( $this->username );
}
return $this->customer;
}
}

View File

@@ -0,0 +1,58 @@
<?php
namespace customerapi\models\available;
use common\models\Event;
use common\models\EventType;
class EventAvailable extends Event
{
public $reservationCount;
protected function getTrainerClass()
{
// override trainer class to have more control
// about json fields
return TrainerAvailable::class;
}
protected function getEventTypeClass()
{
return EventTypeAvailable::class;
}
protected function getRoomClass()
{
return RoomAvailable::class;
}
function fields()
{
$fields = [
"id" => "id",
"start" => "start",
"end" => "end",
"seat_count" => "seat_count",
"active" => "active",
// "reservationCount" => "reservationCount"
];
$fields['trainer'] = 'trainer';
$fields['eventType'] = 'eventType';
$fields['room'] = 'room';
return $fields;
}
function extraFields()
{
$extra= parent::extraFields();
$extra[] = 'trainer';
return $extra;
}
}

View File

@@ -0,0 +1,56 @@
<?php
namespace customerapi\models\available;
use DateTime;
/**
* Class DateIntervalHelper
* @package customerapi\models\available
* @property \DateTime $firstActiveDate
* @property \DateTime $lastActiveDate
* @property \DateTime $firstDisplayDate
* @property \DateTime $lastDisplayDate
*/
class EventInterval
{
public $countOfActiveDays = 14;
public $daysToDisplay = 21;
public $firstActiveDate;
public $lastActiveDate;
public $firstDisplayDate;
public $lastDisplayDate;
private function __construct()
{
$firstActiveDay = new DateTime();
$firstActiveDay->setTime(0, 0);
$this->firstActiveDate = $firstActiveDay;
$lastActiveDay = new DateTime();
$lastActiveDay->setTime(0, 0);
$lastActiveDay->modify('+' . $this->countOfActiveDays . ' day');
$this->lastActiveDate = $lastActiveDay;
$firstDisplayDate = new DateTime();
$firstDisplayDate->modify('this week');
$firstDisplayDate->setTime(0, 0);
$this->firstDisplayDate = $firstDisplayDate;
$lastDisplayDate = clone $firstDisplayDate;
$lastDisplayDate->setTime(0, 0);
$lastDisplayDate->modify('+' . $this->daysToDisplay . ' day');
$this->lastDisplayDate = $lastDisplayDate;
}
public static function createInterval(){
return new EventInterval();
}
}

View File

@@ -0,0 +1,13 @@
<?php
namespace customerapi\models\available;
use common\models\EventRegistration;
class EventRegistrationAvailable extends EventRegistration
{
}

View File

@@ -0,0 +1,20 @@
<?php
namespace customerapi\models\available;
use common\models\EventType;
class EventTypeAvailable extends EventType
{
function fields()
{
return [
'id' => 'id',
'name' => 'name'
];
}
}

View File

@@ -0,0 +1,19 @@
<?php
namespace customerapi\models\available;
use common\models\Room;
class RoomAvailable extends Room
{
function fields()
{
return [
'id' => 'id',
'name' => 'name',
'seat_count' => 'seat_count'
];
}
}

View File

@@ -0,0 +1,20 @@
<?php
namespace customerapi\models\available;
use common\models\Trainer;
class TrainerAvailable extends Trainer
{
public function fields()
{
return [
'id' => 'id',
'name' => 'name'
];
}
}