copy only events with assigned trainers in timetable copy-week
This commit is contained in:
parent
5e06348996
commit
5fe59ff1d3
@ -2,8 +2,11 @@
|
||||
|
||||
namespace common\modules\event\manager;
|
||||
|
||||
use common\components\RoleDefinition;
|
||||
use common\models\Event;
|
||||
use common\models\EventRegistration;
|
||||
use common\models\Trainer;
|
||||
use common\models\User;
|
||||
use common\modules\event\models\timetable\TimeTableMonth;
|
||||
use common\modules\event\models\timetable\TimeTableMonthDay;
|
||||
use common\modules\event\models\timetable\TimeTableMonthWeek;
|
||||
@ -88,7 +91,12 @@ class EventManager
|
||||
}
|
||||
// get events between active dates
|
||||
|
||||
$events = $this->getEvents($dateTimeFrom, $dateTimeTo);
|
||||
$trainers = null;
|
||||
if ( RoleDefinition::isTrainer() ){
|
||||
$trainers = $this->getAssignedTrainerIDs(\Yii::$app->user->id);
|
||||
}
|
||||
|
||||
$events = $this->getEvents($dateTimeFrom, $dateTimeTo,$trainers);
|
||||
|
||||
// set events per day
|
||||
/** @var Event $event */
|
||||
@ -113,9 +121,12 @@ class EventManager
|
||||
* Get all active events between the to dates
|
||||
* @param DateTime $fromInc from date inclusive (>=)
|
||||
* @param DateTime $toExcl to date exclusive (<)
|
||||
* @param int[] trainers if set, load only events assigend to the given trainers
|
||||
* if the array is set, but emtpy,
|
||||
* then no sql will be executed, empty array will be returned
|
||||
* @return Event[]
|
||||
*/
|
||||
public function getEvents($fromInc, $toExcl)
|
||||
public function getEvents($fromInc, $toExcl,$trainers = null)
|
||||
{
|
||||
$query = Event::find();
|
||||
|
||||
@ -129,6 +140,12 @@ class EventManager
|
||||
->orderBy([
|
||||
'event.start' => SORT_ASC
|
||||
]);
|
||||
if ( isset($trainers)){
|
||||
if ( count($trainers) == 0 ){
|
||||
return [];
|
||||
}
|
||||
$query->andWhere(['in','id_trainer',$trainers]);
|
||||
}
|
||||
$query = $this->withEventConditions($query);
|
||||
return $query
|
||||
->all();
|
||||
@ -210,4 +227,23 @@ class EventManager
|
||||
->andWhere(['event.active' => '1'])->all();
|
||||
}
|
||||
|
||||
public function getAssignedTrainers($idUser){
|
||||
return Trainer::find()
|
||||
->innerJoinWith('userTrainerAssignments')
|
||||
->andWhere(['user_trainer_assignment.id_user' => $idUser])
|
||||
->all();
|
||||
}
|
||||
|
||||
public function getAssignedTrainerIDs($idUser){
|
||||
$trainerObjects = $this->getAssignedTrainers($idUser);
|
||||
|
||||
$trainers = [];
|
||||
foreach ($trainerObjects as $trainerObject){
|
||||
$trainers[] = $trainerObject->id;
|
||||
}
|
||||
return $trainers;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user