예제 #1
0
 /**
  * Creates a new CalendarEvents model.
  * If creation is successful, the browser will be redirected to the 'view' page.
  * @return mixed
  */
 public function actionCreate()
 {
     $model = new CalendarEvents();
     if ($model->load(Yii::$app->request->post()) && $model->save()) {
         return $this->redirect(['view', 'id' => $model->id]);
     } else {
         return $this->render('create', ['model' => $model]);
     }
 }
 /**
  * Updates an existing CalendarEvents model.
  * Not possible to insert in past
  * not possible than  more than 6 month in future to setup
  * not more than 3 month in past to show
  * @param integer $dd
  * @return model
  * als usertoview niet leeg is is er sprake van een gebruiker welke wil bekijken
  */
 public function actionMijnkalender($_id, $_dd = '')
 {
     //indien niet ingelogged ga dan naar de login pagina
     //Yii::$app()->user->loginRequired();
     // print_r(Yii::$app->getModule("user")->loginRedirect); exit;
     if (Yii::$app->user->isGuest) {
         //  \Yii::$app->getModule("user")->loginRedirect = \Yii::$app->getRequest()->url;
         \Yii::$app->getResponse()->redirect(\Yii::$app->getUser()->loginUrl);
         //throw new UnauthorizedHttpException('U dient in te loggen. Geen toegang');
     }
     $n = null;
     $vandaag = date('Y-m-d');
     $n = User::findOne(['id' => $_id]);
     if ($_dd != '') {
         $defaultdate = substr($_dd, 0, 10);
     } else {
         $defaultdate = $vandaag;
     }
     if (!$n) {
         throw new HttpException(400, 'Foutieve pagina.');
     } else {
         $name = $n->username;
     }
     //haal het user model op van de binnenkomende kalender
     $usermdl = User::findOne(['id' => $_id]);
     //haal het bedrijf op van de gebruiker (contactpersoon)
     $company = Company::findOne(['user_id' => Yii::$app->user->id]);
     $companyOntvanger = Company::findOne(['id' => $usermdl->company_id]);
     if (Yii::$app->user->id == $_id || $company->id == $usermdl->company_id) {
         $kalenderIsvan = 'MIJN';
     } else {
         $kalenderIsvan = 'ZIJN';
     }
     $user_id = $_id;
     //stop als de gebruiker niet is ingelogged
     if (Yii::$app->user->isGuest) {
         throw new UnauthorizedHttpException('U dient in te loggen. Geen toegang');
     } else {
         if (!Yii::$app->user->can("user")) {
             throw new HttpException(403, 'Geen toegang.');
         } else {
             //set en check incoming data from POST.
             //Eigenlijk wordt er nu op de kalender een  event geplaatst welke hieronder opgeslagen wordt.
             $code_title = ArrayHelper::getValue($_POST, 'code_title');
             $title = ArrayHelper::getValue($_POST, 'title');
             $color = ArrayHelper::getValue($_POST, 'color');
             $start = ArrayHelper::getValue($_POST, 'start');
             $end = ArrayHelper::getValue($_POST, 'end');
             if ($start != '' && $title != '' && $color != '' && $code_title != '' && $end != '') {
                 // haal het aantal events voor deze dag van deze user op
                 $count = CalendarEvents::find()->where(['start' => $start, 'user_id' => $user_id])->count();
                 if ($count < 2) {
                     $model = new CalendarEvents();
                     $model->code_title = $code_title;
                     $model->title = $title;
                     $model->color = $color;
                     $model->start = $start;
                     $model->end = $end;
                     $model->user_id = $user_id;
                     $model->save(false);
                 }
             } else {
                 //haal alle events op van deze gebruiker tussen huidige dag - 3 maanden en huidge dag + 6 maanden
                 // totaal worden maximaal 9 maanden opgehaald.
                 $date3maandenterug = new \DateTime();
                 $d3t = $date3maandenterug->sub(new \DateInterval('P3M'))->format('Y-m-d');
                 $date6maandenverder = new \DateTime();
                 $d6v = $date6maandenverder->add(new \DateInterval('P6M'))->format('Y-m-d');
                 //haal alle kalender_evenst met evt. contract_deals op 3 maanden terug en 6 maanden vooruit
                 //
                 $sql = "SELECT A.*,B.description FROM calendar_events as A \n                                left join contract_deals B \n                                on A.id = B.event_id\n                                and A.code_title = B.code_title_current\n                                where \n                                A.user_id = {$user_id}  and A.start >= '{$vandaag}' and A.start  <= '{$d6v}'";
                 $connection = \Yii::$app->db;
                 $mdl = $connection->createCommand($sql);
                 $model = $mdl->queryAll();
                 return $this->render('mijnkalender', ['model' => $model, 'date3maandenterug' => $date3maandenterug, 'date6maandenverder' => $date6maandenverder, 'name' => $name, 'kalenderIsvan' => $kalenderIsvan, 'company' => $company, 'usermdl' => $usermdl, 'companyOntvanger' => $companyOntvanger, 'defaultdate' => $defaultdate]);
             }
         }
     }
 }