backend/group-training : improve delete© week
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace common\modules\event\models\copy;
|
||||
|
||||
use common\manager\EventRegistrationManager;
|
||||
use common\modules\event\manager\EventManager;
|
||||
use common\modules\event\models\timetable\TimeTableMonth;
|
||||
use common\modules\event\models\timetable\TimeTableMonthDay;
|
||||
@@ -38,6 +39,8 @@ class CopyWeekSearch extends Model
|
||||
public $sourceTimeTable;
|
||||
public $targetTimeTable;
|
||||
|
||||
public $selectedEvents;
|
||||
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
@@ -45,7 +48,8 @@ class CopyWeekSearch extends Model
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
[['sourceDateString','targetDateString'], 'required'],
|
||||
[['selectedEvents'], 'safe'],
|
||||
[['sourceDateString', 'targetDateString'], 'required'],
|
||||
[['sourceDateString',], 'date', 'format' => Yii::$app->formatter->dateFormat, 'timestampAttribute' => 'timestampSource', 'timeZone' => 'UTC'],
|
||||
[['targetDateString',], 'date', 'format' => Yii::$app->formatter->dateFormat, 'timestampAttribute' => 'timestampTarget', 'timeZone' => 'UTC'],
|
||||
];
|
||||
@@ -71,46 +75,55 @@ class CopyWeekSearch extends Model
|
||||
$targetDate = null;
|
||||
$this->load($params);
|
||||
if ($this->validate()) {
|
||||
$sourceDate = new DateTime();
|
||||
$sourceDate = new DateTime();
|
||||
$sourceDate->setTimestamp($this->timestampSource);
|
||||
|
||||
$targetDate = new DateTime();
|
||||
$targetDate = new DateTime();
|
||||
$targetDate->setTimestamp($this->timestampTarget);
|
||||
}
|
||||
$this->sourceInterval = EventInterval::createInterval($sourceDate,7,7);
|
||||
$this->targetInterval = EventInterval::createInterval($targetDate,7,7);
|
||||
$this->sourceInterval = EventInterval::createInterval($sourceDate, 7, 7);
|
||||
$this->targetInterval = EventInterval::createInterval($targetDate, 7, 7);
|
||||
|
||||
$eventManager = new EventManager();
|
||||
$this->sourceTimeTable = $eventManager->loadTimeTable($this->sourceInterval,"display");
|
||||
$this->targetTimeTable = $eventManager->loadTimeTable($this->targetInterval,"display");
|
||||
$this->sourceTimeTable = $eventManager->loadTimeTable($this->sourceInterval, "display");
|
||||
$this->targetTimeTable = $eventManager->loadTimeTable($this->targetInterval, "display");
|
||||
// if ( !isset($_POST['command'])){
|
||||
// $this->selectedEvents = [];
|
||||
// $events = $this->sourceTimeTable->getAllEvents();
|
||||
// foreach ($events as $event){
|
||||
// $this->selectedEvents[] = $event->id;
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws Exception
|
||||
*/
|
||||
public function save(){
|
||||
public function save()
|
||||
{
|
||||
|
||||
$sourceDate = new DateTime();
|
||||
$sourceDate = new DateTime();
|
||||
$sourceDate->setTimestamp($this->timestampSource);
|
||||
$sourceDate->modify('this week');
|
||||
|
||||
$targetDate = new DateTime();
|
||||
$targetDate = new DateTime();
|
||||
$targetDate->setTimestamp($this->timestampTarget);
|
||||
$targetDate->modify('this week');
|
||||
|
||||
$this->sourceInterval = EventInterval::createInterval($sourceDate,7,7);
|
||||
$this->targetInterval = EventInterval::createInterval($targetDate,7,7);
|
||||
$this->sourceInterval = EventInterval::createInterval($sourceDate, 7, 7);
|
||||
$this->targetInterval = EventInterval::createInterval($targetDate, 7, 7);
|
||||
|
||||
// load the time table objects for source and target interval
|
||||
$eventManager = new EventManager();
|
||||
$this->sourceTimeTable = $eventManager->loadTimeTable($this->sourceInterval,"display");
|
||||
$this->targetTimeTable = $eventManager->loadTimeTable($this->targetInterval,"display");
|
||||
$this->sourceTimeTable = $eventManager->loadTimeTable($this->sourceInterval, "display");
|
||||
$this->targetTimeTable = $eventManager->loadTimeTable($this->targetInterval, "display");
|
||||
|
||||
$sourceWeek = array_values( $this->sourceTimeTable->weeks )[0];
|
||||
$targetWeek = array_values( $this->targetTimeTable->weeks )[0];
|
||||
$sourceWeek = array_values($this->sourceTimeTable->weeks)[0];
|
||||
$targetWeek = array_values($this->targetTimeTable->weeks)[0];
|
||||
|
||||
$eventRegistrationManager = new EventRegistrationManager();
|
||||
// Iterate over all the week days: monday, tuesday, ...
|
||||
foreach (EventInterval::weekdays as $weekday ){
|
||||
foreach (EventInterval::weekdays as $weekday) {
|
||||
// this is very ugly
|
||||
// it returns eg.: $sourceWeek->monday , $sourceWeek->tuesday...
|
||||
/** @var TimeTableMonthDay $sourceDay */
|
||||
@@ -121,25 +134,35 @@ class CopyWeekSearch extends Model
|
||||
$sourceEvents = $sourceDay->events;
|
||||
|
||||
/** @var Event $sourceEvent */
|
||||
foreach ($sourceEvents as $sourceEvent ){
|
||||
$event = new Event();
|
||||
$event->start = $sourceEvent->start;
|
||||
$event->id_room = $sourceEvent->id_room;
|
||||
$event->id_event_type = $sourceEvent->id_event_type;
|
||||
$event->id_trainer = $sourceEvent->id_trainer;
|
||||
$event->seat_count = $sourceEvent->seat_count;
|
||||
$event->active = $sourceEvent->active;
|
||||
$event->deleted_at = $sourceEvent->deleted_at;
|
||||
foreach ($sourceEvents as $sourceEvent) {
|
||||
|
||||
$start = $this->createDateTime( clone $targetDay->date , new DateTime( '@'. $event->start ) );
|
||||
$event->start = $start->getTimestamp();
|
||||
$processEvent = true;
|
||||
if (isset($this->selectedEvents)) {
|
||||
$processEvent = in_array($sourceEvent->id, $this->selectedEvents);
|
||||
}
|
||||
if ($processEvent) {
|
||||
if ($_POST['command' ] == 'delete') {
|
||||
$eventRegistrationManager->deleteEvent($sourceEvent);
|
||||
} else {
|
||||
$event = new Event();
|
||||
$event->start = $sourceEvent->start;
|
||||
$event->id_room = $sourceEvent->id_room;
|
||||
$event->id_event_type = $sourceEvent->id_event_type;
|
||||
$event->id_trainer = $sourceEvent->id_trainer;
|
||||
$event->seat_count = $sourceEvent->seat_count;
|
||||
$event->active = $sourceEvent->active;
|
||||
$event->deleted_at = $sourceEvent->deleted_at;
|
||||
|
||||
// end date is start date + duration
|
||||
$eventDuration = $sourceEvent->end - $sourceEvent->start;
|
||||
$event->end = $start->getTimestamp() + $eventDuration;
|
||||
$start = $this->createDateTime(clone $targetDay->date, new DateTime('@' . $event->start));
|
||||
$event->start = $start->getTimestamp();
|
||||
|
||||
$event->save(false);
|
||||
// end date is start date + duration
|
||||
$eventDuration = $sourceEvent->end - $sourceEvent->start;
|
||||
$event->end = $start->getTimestamp() + $eventDuration;
|
||||
|
||||
$event->save(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -156,11 +179,12 @@ class CopyWeekSearch extends Model
|
||||
* @return DateTime
|
||||
* @throws Exception
|
||||
*/
|
||||
private function createDateTime($date,$time){
|
||||
private function createDateTime($date, $time)
|
||||
{
|
||||
$result = new DateTime();
|
||||
$result->setDate($date->format('Y'),$date->format('m'),$date->format('d'));
|
||||
$result->setDate($date->format('Y'), $date->format('m'), $date->format('d'));
|
||||
$result->setTimezone($time->getTimezone());
|
||||
$result->setTime($time->format('H'),$time->format('i'));
|
||||
$result->setTime($time->format('H'), $time->format('i'));
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user