/** * Returns the data model based on the primary key given in the GET variable. * If the data model is not found, an HTTP exception will be raised. * @param integer the ID of the model to be loaded */ public function loadModel($id) { $model = CompetitionUser::model()->findByPk($id); if ($model === null) { throw new CHttpException(404, Yii::t('app', 'The requested page does not exist.')); } return $model; }
public function actionIndex() { $redirect = false; $competition_user_id = isset(Yii::app()->session['competition_user_id']) ? Yii::app()->session['competition_user_id'] : 0; if ($competition_user_id == 0) { $redirect = true; header('Location: /index.php/StartCompetition'); die; } $competitionUser = CompetitionUser::model()->findByPk($competition_user_id); if ($competitionUser != null) { if ($competitionUser == null) { $competitionUser = new CompetitionUser(); } if ($competitionUser->start_time != null) { $duration = $competitionUser->competition->duration * 60; $starttime = strtotime($competitionUser->start_time); $endtime = $starttime + $duration; if ($competitionUser->finished == 1 || $competitionUser->finish_time != null) { if ($competitionUser->finished == 1 && $competitionUser->finish_time == null) { $competitionUser->finish_time = $endtime; $competitionUser->save(true, array('finish_time')); } else { $competitionUser->finished = 1; $competitionUser->save(true, array('finished')); } $redirect = true; } else { if ($endtime < time()) { $competitionUser->finished = 1; $competitionUser->finish_time = $endtime; $competitionUser->save(true, array('finished', 'finish_time')); $redirect = true; } } } } else { $redirect = true; } if ($redirect) { header('Location: /index.php/StartCompetition'); die; } $this->render('index'); }
public function calculateCompetitionAdvancingToNextLevel($competition_id, $competition_category_id, $number_of_points_needed_for_advancing_to_next_level = 0) { if ($number_of_points_needed_for_advancing_to_next_level == 0) { return false; } // reset advancing_to_next_level to null to all competitiors CompetitionUser::model()->updateAll(array('advancing_to_next_level' => 0), 'competition_id=:competition_id and competition_category_id=:competition_category_id', array(':competition_id' => $competition_id, ':competition_category_id' => $competition_category_id)); $cus = CompetitionUser::model()->findAll('competition_id=:competition_id and competition_category_id=:competition_category_id and disqualified=:disqualified', array(':competition_id' => $competition_id, ':competition_category_id' => $competition_category_id, ':disqualified' => 0)); foreach ($cus as $cu) { if ($cu == null) { $cu = new CompetitionUser(); } $result = $cu->getCompetitionNumericResult(true); if ((int) $result['result'] >= $number_of_points_needed_for_advancing_to_next_level) { $cu->advancing_to_next_level = 1; $cu->save(true, array('advancing_to_next_level')); } } return true; }
public function actionFinishCompetition() { $competition_user_id = isset(Yii::app()->session['competition_user_id']) ? Yii::app()->session['competition_user_id'] : 0; // demo if ($competition_user_id == 0) { self::reponseJSON(array('success' => false, 'error' => Yii::t('app', 'User is not authenticated.'))); } $competitionUser = CompetitionUser::model()->findByPk($competition_user_id); if ($competitionUser != null) { if ($competitionUser == null) { $competitionUser = new CompetitionUser(); } if ($competitionUser->start_time == null) { self::reponseJSON(array('success' => false, 'error' => Yii::t('app', 'You cannot finish competition that was never started.'))); } else { if ($competitionUser->finished == 0) { $competitionUser->finished = 1; $duration = $competitionUser->competition->duration * 60; $starttime = strtotime($competitionUser->start_time); $endtime = $starttime + $duration; if ($endtime < time()) { $competitionUser->finish_time = date('Y-m-d H:i:s', $endtime); } else { $competitionUser->finish_time = date('Y-m-d H:i:s'); } $competitionUser->ip_stop = isset($_SERVER) && isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '/'; if ($competitionUser->save(true, array('finished', 'finish_time', 'ip_stop'))) { unset(Yii::app()->session['competition_user_id']); self::reponseJSON(array('success' => true)); } else { self::reponseJSON(array('success' => false, 'error' => Yii::t('app', 'Error saving competition finished state!'))); } } else { unset(Yii::app()->session['competition_user_id']); self::reponseJSON(array('success' => false, 'error' => Yii::t('app', 'You have already clicked Finish Competition!'))); } } } else { unset(Yii::app()->session['competition_user_id']); self::reponseJSON(array('success' => false, 'error' => Yii::t('app', 'User is not authenticated.'))); } }
<?php echo $form->labelEx($model, 'award'); ?> <?php echo CHtml::activeDropDownList($model, 'award', $model->GetAwardOptions(), array('disabled' => $edit_all ? '' : 'disabled', 'empty' => Yii::t('app', 'choose'))); ?> <?php echo $form->error($model, 'award'); ?> </div> <?php } ?> <?php if (CompetitionUser::canShowAdvancingToNextLevel($model->competition_id)) { ?> <div class="row"> <?php echo $form->labelEx($model, 'advancing_to_next_level'); ?> <?php echo CustomCHtml::radioButtonSwitch('CompetitionUser[advancing_to_next_level]', $model->advancing_to_next_level, array(0 => Yii::t('app', 'no'), 1 => Yii::t('app', 'yes')), array('disabled' => $edit_all ? '' : 'disabled')); ?> <?php echo $form->error($model, 'advancing_to_next_level'); ?> </div> <?php } ?>
<?php /* @var $this CompetitionUserController */ /* @var $model CompetitionUser */ $this->breadcrumbs = array(Yii::t('app', 'Competition Users') => array('index'), $model->id); $user = User::model()->find('id=:id', array(':id' => Yii::app()->user->id)); $superuser = $user != null ? $user->superuser : 0; $create_competition_user = false; $delete_competition_user = false; if ($superuser == 1) { $create_competition_user = true; $delete_competition_user = true; } $this->menu = array(array('label' => Yii::t('app', 'Create Competition User'), 'url' => array('create'), 'visible' => $create_competition_user), array('label' => Yii::t('app', 'Update Competition User'), 'url' => array('update', 'id' => $model->id)), array('label' => Yii::t('app', 'Delete Competition User'), 'url' => '#', 'visible' => $delete_competition_user, 'linkOptions' => array('submit' => array('delete', 'id' => $model->id), 'confirm' => Yii::t('app', 'are_you_sure_you_want_to_delete_this_item'))), array('label' => Yii::t('app', 'Manage Competition Users'), 'url' => array('admin'))); ?> <h1><?php echo Yii::t('app', 'Competition User'); ?> "<?php echo $model->id; ?> "</h1> <?php $this->widget('zii.widgets.CDetailView', array('data' => $model, 'attributes' => array('id', array('name' => 'competition_id', 'value' => $model->competition->name), array('name' => 'competition_category_id', 'value' => $model->competitionCategory->name), array('name' => 'competition_category_school_mentor_id', 'value' => $model->competitionCategorySchoolMentor->user->profile->last_name . ' ' . $model->competitionCategorySchoolMentor->user->profile->first_name), 'last_name', 'first_name', array('name' => 'gender', 'value' => $model->gender == 0 ? Yii::t('app', 'Male') : Yii::t('app', 'Female')), 'class', array('name' => 'school_id', 'value' => $model->school->name), array('name' => 'disqualified_request', 'value' => $model->disqualified_request == 1 ? Yii::t('app', 'yes') : Yii::t('app', 'no')), 'disqualified_reason', array('name' => 'disqualified_request_by', 'value' => $model->disqualified_request_by != null ? $model->disqualifiedRequestBy->profile->last_name . ' ' . $model->disqualifiedRequestBy->profile->first_name : '/'), array('name' => 'disqualified', 'value' => $model->disqualified == 1 ? Yii::t('app', 'yes') : Yii::t('app', 'no')), array('name' => 'disqualified_by', 'value' => $model->disqualified_by != null ? $model->disqualifiedBy->profile->last_name . ' ' . $model->disqualifiedBy->profile->first_name : '/'), array('name' => 'start_time', 'value' => date('j. n. Y H:i:s', strtotime($model->start_time))), array('name' => 'finish_time', 'value' => date('j. n. Y H:i:s', strtotime($model->finish_time))), array('name' => 'finished', 'value' => $model->finished == 1 ? Yii::t('app', 'yes') : Yii::t('app', 'no')), array('name' => 'competition_results', 'value' => $model->getCompetitionResults(), 'visible' => CompetitionUser::canShowCompetitionResults($model->competition_id)), array('name' => 'award', 'value' => $model->GetAwardName($model->award), 'visible' => CompetitionUser::canShowAwardField($model->competition_id)), array('name' => 'advancing_to_next_level', 'value' => $model->advancing_to_next_level == 1 ? Yii::t('app', 'yes') : Yii::t('app', 'no'), 'visible' => CompetitionUser::canShowAdvancingToNextLevel($model->competition_id)))));