public function addEvent($title)
 {
     $event = new Schedule();
     $event['title'] = $title;
     $event['start'] = $this->start;
     $event['end'] = $this->end;
     $event['create_at'] = $this->create_at;
     $event['own_id'] = $this->own_id;
     $event['color'] = $this->color;
     $event->save();
     return $event['id'];
 }
 public function actionAcceptReceivedSchedule($id)
 {
     $scheduleNotify = ScheduleNotification::findOne(['id' => $id]);
     $schedule = Schedule::findOne(['id' => $scheduleNotify['schedule_id']]);
     $newSchedule = new Schedule();
     $newSchedule['title'] = $schedule['title'];
     $newSchedule['color'] = $schedule['color'];
     $newSchedule['start'] = $schedule['start'];
     $newSchedule['end'] = $schedule['end'];
     $newSchedule['create_at'] = $schedule['create_at'];
     $newSchedule['own_id'] = \Yii::$app->user->getId();
     $newSchedule->save();
     ScheduleNotification::deleteAll(['id' => $id]);
     $this->redirect('?r=schedule/create-event');
 }
 public function actionLogWork($remote = false)
 {
     $model = new Schedule(['scenario' => Schedule::SCENARIO_REMOTE]);
     $model->loadDefaultValues();
     $model->duration = null;
     $model->tech_id = Yii::$app->user->id;
     $note = new Note(['scenario' => Note::SCENARIO_REMOTE]);
     $ticket = new Ticket(['scenario' => Ticket::SCENARIO_REMOTE]);
     if ($model->load(Yii::$app->request->post()) && $model->validate() && $note->load(Yii::$app->request->post()) && $note->validate()) {
         if (empty($note->ticket_id)) {
             // new ticket
             if (!($ticket->load(Yii::$app->request->post()) && !empty(trim($ticket->title)) && $ticket->validate())) {
                 $ticket->addError('title', 'Select a ticket or enter a title to create a new one');
             } else {
                 $ticket->invoice_id = $model->invoice_id;
                 $ticket->status_id = $ticket::STATUS_IN_PROGRESS;
                 if ($ticket->save(false) && $model->save(false)) {
                     $note->link('ticket', $ticket);
                     $note->link('schedule', $model, ['hours' => $model->duration / 60]);
                     return $this->redirect(['ticket/view', 'id' => $note->ticket_id]);
                 }
             }
         } elseif ($model->save(false) && $note->save(false)) {
             $note->link('schedule', $model, ['hours' => $model->duration / 60]);
             if ($note->ticket->status_id == $ticket::STATUS_SUBMITTED) {
                 $note->ticket->status_id = $ticket::STATUS_IN_PROGRESS;
                 $note->ticket->save(false);
             }
             return $this->redirect(['ticket/view', 'id' => $note->ticket_id]);
         }
     } elseif (!Yii::$app->request->isPost) {
         $model->load(Yii::$app->request->get());
         $note->load(Yii::$app->request->get());
         $ticket->load(Yii::$app->request->get());
     }
     if (empty($model->start_time)) {
         $minutes = time() / 60;
         $minutes = $minutes - $minutes % 5;
         // round down to 5 min increment
         $model->start_time = date('Y-m-d H:i:00', $minutes * 60);
     }
     if (Yii::$app->request->isAjax) {
         return $this->renderAjax('log-work', ['model' => $model, 'note' => $note, 'ticket' => $ticket, 'remote' => $remote]);
     }
     return $this->render('log-work', ['model' => $model, 'note' => $note, 'ticket' => $ticket, 'remote' => $remote]);
 }