/**
  * Creates a new model.
  * If creation is successful, the browser will be redirected to the 'view' page.
  */
 public function actionCreate()
 {
     if ($this->CanAccess('create')) {
         $model = new CompetitionCategorySchool();
         // Uncomment the following line if AJAX validation is needed
         // $this->performAjaxValidation($model);
         if (isset($_POST['CompetitionCategorySchool'])) {
             $model->attributes = $_POST['CompetitionCategorySchool'];
             // check if unique
             $check = CompetitionCategorySchool::model()->find('competition_id=:competition_id and school_id=:school_id and competition_category_id=:competition_category_id', array(':competition_category_id' => $model->competition_category_id, ':school_id' => $model->school_id, ':competition_id' => $model->competition_id));
             if ($check == null) {
                 if ($model->CanUpdate() && $model->save()) {
                     // if AJAX request , we should not redirect the browser
                     if (!Yii::app()->request->isAjaxRequest) {
                         $this->redirect(array('view', 'id' => $model->id));
                     } else {
                         // UNCOMMENT THIS IF YOU WANT TO RETURN ID OF THE NEWLY CREATED
                         // OBJECT (USEFUL WHEN CREATING NEW OBJECTS VIA AJAX AND INFO ABOUT
                         // THEN NEWLY CREATED OBJECT MUST BE SENT TO THE BROWSER)
                         // echo CJSON::encode(array('error' => '', 'id' => $model->id));
                         // die();
                     }
                 } else {
                     throw new CHttpException(405, Yii::t('app', 'You do not have permissions to access this page.'));
                 }
             } else {
                 throw new CHttpException(403, Yii::t('app', 'This school in this category on this competition is already signed up.'));
             }
         }
         if (!Yii::app()->request->isAjaxRequest) {
             $this->render('create', array('model' => $model));
             // IF YOU NEED DIFFERENT RENDERING FOR AJAX AND NON-AJAX CALLS,
             // USE THIS LINE AND DELETE THE LINE ABOVE
             // $this->render('create', array('model' => $model, 'ajaxRendering' => false));
         } else {
             throw new CHttpException(400, Yii::t('app', 'Bad request. The request cannot be fulfilled.'));
             // IF YOU NEED DIFFERENT RENDERING FOR AJAX AND NON-AJAX CALLS,
             // USE THIS LINE AND DELETE THE LINE ABOVE
             // $this->renderPartial('create', array('model' => $model, 'ajaxRendering' => true));
         }
     } else {
         throw new CHttpException(405, Yii::t('app', 'You do not have permissions to access this page.'));
     }
 }
 public function importMentorsWithIdsAndCodes($competition_id, $country_id, $csv)
 {
     $country = Country::model()->findByPk($country_id);
     if ($country == null) {
         echo 'Country does not exist!';
         die;
     }
     $competition = Competition::model()->findByPk($competition_id);
     if ($competition == null) {
         echo 'Competition does not exist!';
         die;
     }
     header('Content-Type: text/html; charset=utf-8');
     if ($country->country == 'Srbija') {
         // popravek imen kategorij, ki se parsajo
         $cols = array('Mentor ID' => 'mentor_id', 'kategorija' => 'category_name', 'koda' => 'access_code');
     } else {
         $cols = array('Mentor ID' => 'mentor_id', 'kategorija' => 'category_name', 'koda' => 'access_code');
     }
     $lines = explode("\n", trim($csv));
     $header_line = $lines[0];
     $header_cols = explode(';', trim($header_line));
     $keys = array_keys($cols);
     $cols_matrix = array();
     $index = 0;
     foreach ($header_cols as $h_cols) {
         $h_cols = trim($h_cols);
         if (in_array($h_cols, $keys)) {
             $cols_matrix[$index] = $cols[$h_cols];
         }
         $index++;
     }
     if (count($cols_matrix) != count($cols)) {
         echo 'One of required header columns is missing. Required columns: ', implode(', ', $keys), "<br />";
         die;
     }
     // pre_print($cols_matrix);
     $datas = array();
     for ($i = 1; $i < count($lines); ++$i) {
         $col = explode(';', trim($lines[$i]));
         $data = array();
         $index = 0;
         foreach ($col as $c) {
             $data[$cols_matrix[$index]] = trim($c);
             $index++;
         }
         $datas[] = $data;
     }
     // pre_print($datas);
     $categoryCache = array();
     $imported = 0;
     foreach ($datas as $data) {
         if (isset($data['mentor_id']) && $data['mentor_id'] != '' && mb_substr($data['mentor_id'], 0, 1, 'UTF-8') == 'M') {
             $mentor_id = trim(ltrim($data['mentor_id'], "M"));
             $category_name = $data['category_name'];
             if (isset($categoryCache[$category_name])) {
                 $competition_category_id = $categoryCache[$category_name];
             } else {
                 $competitionCategory = CompetitionCategory::model()->find('country_id=:country_id and name=:name', array(':country_id' => $country_id, ':name' => $category_name));
                 if ($competitionCategory == null) {
                     echo 'Competition Category ', $category_name, ' cannot be found in database.';
                     die;
                 } else {
                     $categoryCache[$category_name] = $competitionCategory->id;
                     $competition_category_id = $categoryCache[$category_name];
                 }
             }
             $access_code = $data['access_code'];
             $schoolMentor = SchoolMentor::model()->findByPk($mentor_id);
             if ($schoolMentor == null) {
                 echo 'School mentor with ID: ', $mentor_id, ' could not be found!';
                 die;
             }
             // check if school already on competition in this category
             $competitionCategorySchool = CompetitionCategorySchool::model()->find('competition_id=:cid and competition_category_id=:ccid and school_id=:sid', array(':cid' => $competition_id, ':ccid' => $competition_category_id, ':sid' => $schoolMentor->school_id));
             if ($competitionCategorySchool == null) {
                 $competitionCategorySchool = new CompetitionCategorySchool();
                 $competitionCategorySchool->competition_id = $competition_id;
                 $competitionCategorySchool->competition_category_id = $competition_category_id;
                 $competitionCategorySchool->school_id = $schoolMentor->school_id;
                 if (!$competitionCategorySchool->save()) {
                     echo 'Error saving competition category school!';
                     die;
                 }
             }
             // check if access code already in use
             $competitionCategorySchoolMentor = CompetitionCategorySchoolMentor::model()->find('access_code=:access_code', array(':access_code' => $access_code));
             if ($competitionCategorySchoolMentor != null) {
                 if ($competitionCategorySchoolMentor->user_id != $schoolMentor->user_id || $competitionCategorySchoolMentor->competition_category_school_id != $competitionCategorySchool->id) {
                     echo 'Cannot import access code: ', $access_code, ', because is already used by id: ', $competitionCategorySchoolMentor->id;
                     die;
                 }
             } else {
                 $competitionCategorySchoolMentor = new CompetitionCategorySchoolMentor();
                 $competitionCategorySchoolMentor->access_code = $access_code;
                 $competitionCategorySchoolMentor->competition_category_school_id = $competitionCategorySchool->id;
                 $competitionCategorySchoolMentor->user_id = $schoolMentor->user_id;
                 if (!$competitionCategorySchoolMentor->save()) {
                     echo 'Error saving CompetitionCategorySchoolMentor for access code: ', $access_code;
                     die;
                 } else {
                     $imported++;
                 }
             }
         } else {
             echo 'Error importing data: <br />';
             pre_print($data);
             die;
         }
     }
     echo '<br />Number of imported access codes: ', $imported;
 }