/**
  * Updates a particular model.
  * If update is successful, the browser will be redirected to the 'view' page.
  * @param integer $id the ID of the model to be updated
  */
 public function actionUpdate($id)
 {
     $model = $this->loadModel($id);
     // Uncomment the following line if AJAX validation is needed
     // $this->performAjaxValidation($model);
     if (isset($_POST['DonationRequest'])) {
         $model->attributes = $_POST['DonationRequest'];
         $model->city = Utilities::getLookupIdByValue(Constants::$city_lookup_code, $model->city);
         $model->blood_group = Utilities::getLookupIdByValue(Constants::$bloodgrp_lookup_code, $model->blood_group);
         $model->area = Utilities::getLookupIdByValue(Constants::$area_lookup_code, $model->area);
         $model->state = $model->city0->lookup_parent_id;
         if (!Utilities::checkDateFormat($model->date)) {
             $model->date = DateTime::createFromFormat('d/M/yyyy', $model->date)->format('Y-m-d');
         }
         if ($model->save()) {
             if ($model->status == "Donor Assigned") {
                 $donor = UserDetails::model()->findByPk($model->donor);
                 $donor->last_donation_date = date("Y-m-d");
                 $donor->donation_status = 'Y';
                 $donor->save(false);
             }
             $this->redirect(array('view', 'id' => $model->request_id));
         }
     }
     $model->city = $model->city0->lookup_value;
     $model->area = $model->area0->lookup_value;
     $model->blood_group = $model->bloodGroup->lookup_value;
     //$model->date = DateTime::createFromFormat('Y-m-d', $model->date )->format('d/M/y');
     $this->render('update', array('model' => $model));
 }
 public function loadModel($id)
 {
     $model = UserDetails::model()->findByPk($id);
     if ($model === null) {
         throw new CHttpException(404, 'The requested page does not exist.');
     }
     return $model;
 }
Exemple #3
0
 /**
  * Displays the login page
  */
 public function actionLogin()
 {
     $form = new LoginForm();
     // collect user input data
     if (isset($_POST['LoginForm'])) {
         if (isset($_POST['LoginForm']['loginWithField'])) {
             // if user is logging with email, but param changed to username,
             // we should try to log him in with email.
             // if login attempt is unsuccessful, he will have to try again with username
             LoginForm::$loginWithField = $_POST['LoginForm']['loginWithField'];
             unset($_POST['LoginForm']['loginWithField']);
         }
         $form->attributes = $_POST['LoginForm'];
         // validate user input and redirect to return page if valid
         if ($form->validate()) {
             // set the welcome message
             MUserFlash::setTopSuccess(Yii::t('hint', '{screenName}, you have been successfully logged in.', array('{screenName}' => MHtml::wrapInTag(Yii::app()->user->screenName, 'strong'))));
             // user was just authenticated, but let's check anyway
             if (!Yii::app()->user->isGuest) {
                 // update user stats
                 if (($userDetails = UserDetails::model()->findByPk(Yii::app()->user->id)) !== null) {
                     $userDetails->saveAttributes(array('lastLoginTime' => time(), 'lastVisitTime' => time(), 'totalTimeLoggedIn' => $userDetails->totalTimeLoggedIn + 60));
                 } else {
                     // hmmm, user details does not exists
                     Yii::log(W3::t('system', 'Member with ID {userId} has no UserDetails record associated. Method called: {method}.', array('{userId}' => Yii::app()->user->id, '{method}' => __METHOD__ . '()')), 'error', 'w3');
                 }
             }
             // go to previous/profile page
             $url = Yii::app()->homeUrl == Yii::app()->user->returnUrl ? array('site/index') : Yii::app()->user->returnUrl;
             $this->redirect($url);
         }
     }
     if (!Yii::app()->user->isGuest) {
         // warn user if already logged in
         MUserFlash::setTopInfo(Yii::t('hint', '{screenName}, this action will log you out from your current account.', array('{screenName}' => MHtml::wrapInTag(Yii::app()->user->screenName, 'strong'))));
     }
     // display the login form
     $this->render($this->action->id, array('form' => $form));
 }
Exemple #4
0
 public function getUserelepass($id)
 {
     $pass = UserDetails::model()->findByAttributes(array('user_id' => $id));
     return $pass->sign;
 }
Exemple #5
0
 /**
  * @return UserDetails
  */
 private function getUserDetails()
 {
     return UserDetails::model()->findShardedDataByUserId($this->id, 'user_id');
 }
Exemple #6
0
 /**
  * Print out array of models for the jqGrid rows.
  */
 public function actionGridData()
 {
     if (!Yii::app()->request->isPostRequest) {
         throw new CHttpException(400, Yii::t('http', 'Invalid request. Please do not repeat this request again.'));
         exit;
     }
     // specify request details
     $jqGrid = $this->processJqGridRequest();
     // specify filter parameters
     $accessType = isset($_GET['accessType']) ? $_GET['accessType'] : null;
     if ($accessType !== 'all' && $accessType !== (string) User::MEMBER && $accessType !== (string) User::CLIENT && $accessType !== (string) User::CONSULTANT && $accessType !== (string) User::MANAGER && $accessType !== (string) User::ADMINISTRATOR) {
         $accessType = 'all';
     }
     $state = isset($_GET['state']) ? $_GET['state'] : null;
     if ($state !== 'all' && $state !== 'active' && $state !== 'inactive') {
         $state = 'all';
     }
     // criteria
     $criteria = new CDbCriteria();
     if ($jqGrid['searchField'] !== null && $jqGrid['searchString'] !== null && $jqGrid['searchOper'] !== null) {
         $field = array('accessType' => "`t`.`accessType`", 'createTime' => "`t`.`createTime`", 'email' => "`t`.`email`", 'screenName' => "`t`.`screenName`", 'deactivationTime' => "`User_UserDetails`.`deactivationTime`", 'occupation' => "`User_UserDetails`.`occupation`");
         $operation = $this->getJqGridOperationArray();
         $keywordFormula = $this->getJqGridKeywordFormulaArray();
         if (isset($field[$jqGrid['searchField']]) && isset($operation[$jqGrid['searchOper']])) {
             $criteria->condition = '(' . $field[$jqGrid['searchField']] . ' ' . $operation[$jqGrid['searchOper']] . ' :keyword)';
             $criteria->params = array(':keyword' => str_replace('keyword', $jqGrid['searchString'], $keywordFormula[$jqGrid['searchOper']]));
             // search by special field types
             if ($jqGrid['searchField'] === 'createTime' && ($keyword = strtotime($jqGrid['searchString'])) !== false) {
                 $criteria->params = array(':keyword' => str_replace('keyword', $keyword, $keywordFormula[$jqGrid['searchOper']]));
                 if (date('H:i:s', $keyword) === '00:00:00') {
                     // visitor is looking for a precision by day, not by second
                     $criteria->condition = '(TO_DAYS(FROM_UNIXTIME(' . $field[$jqGrid['searchField']] . ',"%Y-%m-%d")) ' . $operation[$jqGrid['searchOper']] . ' TO_DAYS(FROM_UNIXTIME(:keyword,"%Y-%m-%d")))';
                 }
             }
         }
     }
     if ($accessType === (string) User::MEMBER) {
         $criteria->addCondition("`t`.`accessType`=:member");
         $criteria->params[':member'] = User::MEMBER;
     } else {
         if ($accessType === (string) User::CLIENT) {
             $criteria->addCondition("`t`.`accessType`=:client");
             $criteria->params[':client'] = User::CLIENT;
         } else {
             if ($accessType === (string) User::CONSULTANT) {
                 $criteria->addCondition("`t`.`accessType`=:consultant");
                 $criteria->params[':consultant'] = User::CONSULTANT;
             } else {
                 if ($accessType === (string) User::MANAGER) {
                     $criteria->addCondition("`t`.`accessType`=:manager");
                     $criteria->params[':manager'] = User::MANAGER;
                 } else {
                     if ($accessType === (string) User::ADMINISTRATOR) {
                         $criteria->addCondition("`t`.`accessType`=:administrator");
                         $criteria->params[':administrator'] = User::ADMINISTRATOR;
                     }
                 }
             }
         }
     }
     if ($state === 'active') {
         $criteria->addCondition("(`t`.`isActive` IS NULL OR `t`.`isActive`!=:isNotActive)");
         $criteria->params[':isNotActive'] = User::IS_NOT_ACTIVE;
     } else {
         if ($state === 'inactive') {
             $criteria->addCondition("`t`.`isActive`=:isNotActive");
             $criteria->params[':isNotActive'] = User::IS_NOT_ACTIVE;
         }
     }
     // pagination
     $with = array();
     if (strpos($criteria->condition, 'User_UserDetails') !== false) {
         $with[] = 'details';
     }
     if (count($with) >= 1) {
         $pages = new CPagination(User::model()->with($with)->count($criteria));
     } else {
         $pages = new CPagination(User::model()->count($criteria));
     }
     $pages->pageSize = $jqGrid['pageSize'] !== null ? $jqGrid['pageSize'] : self::GRID_PAGE_SIZE;
     $pages->applyLimit($criteria);
     // sort
     $sort = new CSort('User');
     $sort->attributes = array('accessType' => array('asc' => "`t`.`accessLevel`", 'desc' => "`t`.`accessLevel` desc", 'label' => User::model()->getAttributeLabel('accessType')), 'createTime' => array('asc' => "`t`.`createTime`", 'desc' => "`t`.`createTime` desc", 'label' => User::model()->getAttributeLabel('Registered')), 'email' => array('asc' => "`t`.`email`", 'desc' => "`t`.`email` desc", 'label' => User::model()->getAttributeLabel('email')), 'screenName' => array('asc' => "`t`.`screenName`", 'desc' => "`t`.`screenName` desc", 'label' => User::model()->getAttributeLabel('screenName')), 'deactivationTime' => array('asc' => "`User_UserDetails`.`deactivationTime`", 'desc' => "`User_UserDetails`.`deactivationTime` desc", 'label' => UserDetails::model()->getAttributeLabel('Deact')), 'occupation' => array('asc' => "`User_UserDetails`.`occupation`", 'desc' => "`User_UserDetails`.`occupation` desc", 'label' => UserDetails::model()->getAttributeLabel('occupation')));
     $sort->defaultOrder = "`t`.`screenName`";
     $sort->applyOrder($criteria);
     // find all
     $models = User::model()->with('details')->findAll($criteria);
     // create resulting data array
     $data = array('page' => $pages->getCurrentPage() + 1, 'total' => $pages->getPageCount(), 'records' => $pages->getItemCount(), 'rows' => array());
     foreach ($models as $model) {
         $data['rows'][] = array('id' => $model->id, 'cell' => array(CHtml::encode($model->screenName), CHtml::encode($model->details->occupation), CHtml::encode($model->email), CHtml::encode(MDate::format($model->createTime, 'medium', null)), CHtml::encode(MDate::format($model->details->deactivationTime, 'medium', null)), CHtml::encode($model->getAttributeView('accessType')), CHtml::link('<span class="ui-icon ui-icon-zoomin"></span>', array('show', 'id' => $model->id), array('class' => 'w3-ig w3-link-icon w3-border-1px-transparent w3-first ui-corner-all', 'title' => Yii::t('link', 'Show'))) . CHtml::link('<span class="ui-icon ui-icon-pencil"></span>', array('update', 'id' => $model->id), array('class' => 'w3-ig w3-link-icon w3-border-1px-transparent w3-last ui-corner-all', 'title' => Yii::t('link', 'Edit')))));
     }
     $this->printJson($data);
 }
 public function getuserphoto($id)
 {
     $name = UserDetails::model()->findByAttributes(array('user_id' => $id));
     if ($name->photo != NULL) {
         return '<img src="users/' . $id . '/' . $name->photo . '.jpg" width="59" height="59" />';
     } else {
         return '<img src="images/user.jpg" width="59" height="59" />';
     }
 }
 static function getDonorsList($bloodGroup)
 {
     return CHtml::listData(UserDetails::model()->getActiveDonors(self::getLookupIdByValue(Constants::$bloodgrp_lookup_code, $bloodGroup)), 'user_id', 'name');
 }
Exemple #9
0
 /**
  * Migrate from old project management system.
  */
 public function actionIndex()
 {
     // check rights
     if (!Yii::app()->user->checkAccess(User::ADMINISTRATOR)) {
         throw new CHttpException(403, Yii::t('Yii', 'You are not authorized to perform this action.'));
     }
     // models to migrate
     $migrate = array('User' => false, 'Company' => false, 'CompanyPayment' => false, 'Project' => false, 'Task' => false, 'Time' => true, 'Invoice' => false, 'Expense' => false);
     // start
     $message = '';
     // we won't migrate unless form is submitted
     if (Yii::app()->request->isPostRequest) {
         // default criteria
         $findAllCriteria = new CDbCriteria();
         $findAllCriteria->order = "`id` ASC";
         if ($migrate['User']) {
             // user
             $mUsers = MUser::model()->findAll($findAllCriteria);
             if (is_array($mUsers)) {
                 $i = $j = $c = 0;
                 $accessType = array('customer' => 'client', 'consultant' => 'consultant', 'manager' => 'manager', 'admin' => 'administrator');
                 $accessLevel = array('customer' => 2, 'consultant' => 3, 'manager' => 4, 'admin' => 5);
                 foreach ($mUsers as $oldModel) {
                     if (($model = User::model()->findByPk($oldModel->id)) !== null) {
                         $model->delete();
                     }
                     // old model validation
                     if (User::model()->findByAttributes(array('email' => $oldModel->email))) {
                         $oldModel->email = rand(10, 99) . $oldModel->email;
                     }
                     $closeTime = strtotime($oldModel->close_date);
                     $isActive = empty($oldModel->close_date) || $oldModel->close_date === '0000-00-00' || $closeTime === false;
                     // new model
                     $model = new User('migrate');
                     $model->username = $oldModel->email;
                     $model->password = md5($oldModel->password);
                     $model->email = $oldModel->email;
                     $model->screenName = $oldModel->name;
                     $model->accessType = isset($accessType[$oldModel->class]) ? $accessType[$oldModel->class] : 'member';
                     $model->accessLevel = isset($accessLevel[$oldModel->class]) ? $accessLevel[$oldModel->class] : 1;
                     $model->isActive = $isActive ? '1' : '0';
                     $model->createTime = strtotime($oldModel->last);
                     $model->id = $oldModel->id;
                     if ($model->save()) {
                         $i++;
                         if (($userDetails = UserDetails::model()->findByPk($model->id)) !== null) {
                             $userDetails->delete();
                         }
                         $userDetails = new UserDetails('migrate');
                         $userDetails->emailConfirmationKey = md5(uniqid(rand(), true));
                         $userDetails->initials = $oldModel->inits;
                         $userDetails->occupation = $oldModel->title;
                         $userDetails->deactivationTime = $isActive ? null : $closeTime;
                         $userDetails->administratorNote = '[from migration]';
                         $userDetails->userId = $model->id;
                         $userDetails->save();
                         // relation between user and company
                         if ($oldModel->customer_id >= 1) {
                             $user2Company = new User2Company('migrate');
                             $user2Company->userId = $model->id;
                             $user2Company->companyId = $oldModel->customer_id;
                             $user2Company->position = 'owner';
                             //$oldModel->title
                             if ($user2Company->save()) {
                                 $c++;
                             }
                         }
                     }
                     $j++;
                 }
                 $message .= $i . ' of ' . $j . ' users' . ($i === $c ? '' : ' with ' . $c . ' company (relations)') . ' have been migrated.<br/>';
             }
         }
         if ($migrate['Company']) {
             // company
             $mCustomers = MCustomer::model()->findAll($findAllCriteria);
             if (is_array($mCustomers)) {
                 $i = $j = $l = 0;
                 foreach ($mCustomers as $oldModel) {
                     if (($model = Company::model()->findByPk($oldModel->id)) !== null) {
                         $model->delete();
                     }
                     $closeTime = strtotime($oldModel->close_date);
                     $isActive = empty($oldModel->close_date) || $oldModel->close_date === '0000-00-00' || $closeTime === false;
                     $model = new Company('migrate');
                     $model->title = $oldModel->name;
                     $model->titleAbbr = $oldModel->inits;
                     $model->contactName = $oldModel->contact;
                     $model->contactEmail = $oldModel->contact_email;
                     $model->content = '[from migration]';
                     $model->contentMarkup = 'text';
                     $model->invoiceDueDay = $oldModel->terms_days;
                     $model->isActive = $isActive ? '1' : '0';
                     $model->deactivationTime = $isActive ? null : $closeTime;
                     $model->createTime = strtotime($oldModel->last);
                     $model->id = $oldModel->id;
                     if ($model->save()) {
                         $i++;
                         // associated location
                         $location = new Location('migrate');
                         $location->address1 = $oldModel->addr;
                         $location->address2 = $oldModel->addr2;
                         $location->city = $oldModel->city;
                         $location->state = $oldModel->state;
                         $location->zipcode = $oldModel->zip;
                         $location->content = '[from migration]';
                         $location->contentMarkup = 'text';
                         $location->createTime = strtotime($oldModel->last);
                         if ($location->save()) {
                             // relation between company and location
                             $location2Record = new Location2Record('migrate');
                             $location2Record->locationId = $location->id;
                             $location2Record->record = get_class($model);
                             $location2Record->recordId = $model->id;
                             if ($location2Record->save()) {
                                 $l++;
                             }
                         }
                     }
                     $j++;
                 }
                 $message .= $i . ' of ' . $j . ' companies' . ($i === $l ? '' : ' with ' . $l . ' locations') . ' have been migrated.<br/>';
             }
         }
         if ($migrate['CompanyPayment']) {
             // company payment
             $mCustomerPayments = MCustomerPayment::model()->findAll($findAllCriteria);
             if (is_array($mCustomerPayments)) {
                 $i = $j = 0;
                 $paymentMethod = array('cash' => 'cash', 'check' => 'check', 'credit card' => 'creditCard');
                 foreach ($mCustomerPayments as $oldModel) {
                     if (($model = CompanyPayment::model()->findByPk($oldModel->id)) !== null) {
                         $model->delete();
                     }
                     $model = new CompanyPayment('migrate');
                     $model->companyId = $oldModel->id;
                     $model->paymentDate = MDate::formatToDb($oldModel->payment_date, 'date');
                     $model->amount = $oldModel->amount;
                     $model->paymentMethod = $paymentMethod[$oldModel->payment_method];
                     $model->paymentNumber = $oldModel->payment_number;
                     $model->content = $oldModel->note . "\n" . '[from migration]';
                     $model->contentMarkup = 'text';
                     $model->id = $oldModel->id;
                     if ($model->save()) {
                         $i++;
                     }
                     $j++;
                 }
                 $message .= $i . ' of ' . $j . ' company payments have been migrated.<br/>';
             }
         }
         if ($migrate['Project']) {
             // project
             $mProjects = MProject::model()->findAll($findAllCriteria);
             if (is_array($mProjects)) {
                 $i = $j = $c = $u = 0;
                 foreach ($mProjects as $oldModel) {
                     if (($model = Project::model()->findByPk($oldModel->id)) !== null) {
                         $model->delete();
                     }
                     $openDateNotSet = empty($oldModel->open_date) || $oldModel->open_date === '0000-00-00' || strtotime($oldModel->open_date) === false;
                     $closeDateNotSet = empty($oldModel->close_date) || $oldModel->close_date === '0000-00-00' || strtotime($oldModel->close_date) === false;
                     $model = new Project('migrate');
                     $model->title = $oldModel->name;
                     $model->content = $oldModel->description . "\n" . '[from migration]';
                     $model->contentMarkup = 'text';
                     $model->hourlyRate = $oldModel->rate;
                     $model->openDate = $openDateNotSet ? null : MDate::formatToDb($oldModel->open_date, 'date');
                     $model->closeDate = $closeDateNotSet ? null : MDate::formatToDb($oldModel->close_date, 'date');
                     $model->createTime = strtotime($oldModel->last);
                     $model->id = $oldModel->id;
                     if ($model->save()) {
                         $i++;
                         // relation between project and company
                         if ($oldModel->customer_id >= 1) {
                             $company2Project = new Company2Project('migrate');
                             $company2Project->companyId = $oldModel->customer_id;
                             $company2Project->projectId = $model->id;
                             if ($company2Project->save()) {
                                 $c++;
                             }
                         }
                         // relation between project and manager
                         if ($oldModel->manager_id >= 1) {
                             $user2Project = new User2Project('migrate');
                             $user2Project->userId = $oldModel->manager_id;
                             $user2Project->projectId = $model->id;
                             $user2Project->role = 'manager';
                             if ($user2Project->save()) {
                                 $u++;
                             }
                         }
                     }
                     $j++;
                 }
                 $message .= $i . ' of ' . $j . ' projects' . ($i === $c ? '' : ' with ' . $c . ' company (relations)') . ($i === $u ? '' : ' with ' . $u . ' manager (relations)') . ' have been migrated.<br/>';
             }
         }
         if ($migrate['Task']) {
             // task
             $mTasks = MTask::model()->findAll($findAllCriteria);
             if (is_array($mTasks)) {
                 $i = $j = $u = $m = 0;
                 $priority = array('A' => 2, 'B' => 3, 'C' => 4, '' => 3);
                 $status = array('' => 'completed', 'Open' => 'completed', '0' => 'notStarted', 'New' => 'notStarted', 'Done' => 'completed', 'In Progress' => 'inProgress', 'Ready to Test' => 'readyToTest');
                 foreach ($mTasks as $oldModel) {
                     if (($model = Task::model()->findByPk($oldModel->id)) !== null) {
                         $model->delete();
                     }
                     $hourlyRate = null;
                     if ($oldModel->project_id >= 1 && ($project = Project::model()->findByPk($oldModel->project_id)) !== null) {
                         $hourlyRate = $project->hourlyRate;
                     }
                     $dueDateNotSet = empty($oldModel->due_date) || $oldModel->due_date === '0000-00-00' || strtotime($oldModel->due_date) === false;
                     $openDateNotSet = empty($oldModel->open_date) || $oldModel->open_date === '0000-00-00' || strtotime($oldModel->open_date) === false;
                     $closeDateNotSet = empty($oldModel->close_date) || $oldModel->close_date === '0000-00-00' || strtotime($oldModel->close_date) === false;
                     $model = new Task('migrate');
                     $model->title = $oldModel->name;
                     $model->content = $oldModel->description . "\n" . '[from migration]';
                     $model->contentMarkup = 'text';
                     $model->companyId = $oldModel->customer_id;
                     $model->projectId = $oldModel->project_id;
                     $model->estimateMinute = (int) $oldModel->hours_estimate * 60;
                     $model->dueDate = $dueDateNotSet ? null : MDate::formatToDb($oldModel->due_date, 'date');
                     $model->priority = $priority[$oldModel->priority];
                     $model->openDate = $openDateNotSet ? null : MDate::formatToDb($oldModel->open_date, 'date');
                     $model->closeDate = $closeDateNotSet ? null : MDate::formatToDb($oldModel->close_date, 'date');
                     $model->status = $status[$oldModel->task_status];
                     $model->report = $oldModel->work_report;
                     $model->reportMarkup = 'text';
                     $model->hourlyRate = $hourlyRate;
                     $model->isConfirmed = '1';
                     $model->confirmationTime = strtotime($oldModel->last);
                     $model->createTime = strtotime($oldModel->last);
                     $model->id = $oldModel->id;
                     if ($model->save()) {
                         $i++;
                         // relation between task and consultant
                         if ($oldModel->leader_id >= 1) {
                             $user2Task = new User2Task('migrate');
                             $user2Task->userId = $oldModel->leader_id;
                             $user2Task->taskId = $model->id;
                             $user2Task->role = User2Task::CONSULTANT;
                             if ($user2Task->save()) {
                                 $u++;
                             }
                         }
                         // relation between task and manager
                         if ($model->projectId >= 1) {
                             $criteria = new CDbCriteria();
                             $criteria->order = "`" . User2Project::model()->tableName() . "`.`userPriority` ASC";
                             $criteria->order .= ",`" . User2Project::model()->tableName() . "`.`id` ASC";
                             if (($user2Project = User2Project::model()->findByAttributes(array('projectId' => $model->projectId, 'role' => 'manager'), $criteria)) !== null) {
                                 $user2Task = new User2Task('migrate');
                                 $user2Task->userId = $user2Project->userId;
                                 $user2Task->taskId = $model->id;
                                 $user2Task->role = 'manager';
                                 if ($user2Task->save()) {
                                     $m++;
                                 }
                             }
                         }
                     }
                     $j++;
                 }
                 $message .= $i . ' of ' . $j . ' tasks' . ($i === $u ? '' : ' with ' . $u . ' consultant (relations)') . ($i === $m ? '' : ' with ' . $m . ' manager (relations)') . ' have been migrated.<br/>';
             }
         }
         if ($migrate['Time']) {
             // time
             $mTime = MTime::model()->findAll($findAllCriteria);
             if (is_array($mTime)) {
                 $i = $j = $t = 0;
                 foreach ($mTime as $oldModel) {
                     if (($model = Time::model()->findByPk($oldModel->id)) !== null) {
                         $model->delete();
                     }
                     $taskId = $oldModel->task_id;
                     if (empty($taskId) && $oldModel->project_id >= 1) {
                         $criteria = new CDbCriteria();
                         $criteria->order = "`" . Task::model()->tableName() . "`.`id` ASC";
                         if (($task = Task::model()->findByAttributes(array('projectId' => $oldModel->project_id), $criteria)) !== null) {
                             $taskId = $task->id;
                         } else {
                             // auto-generate a task
                             $companyId = 0;
                             $criteria = new CDbCriteria();
                             $criteria->order = "`" . Company2Project::model()->tableName() . "`.`companyPriority` ASC";
                             $criteria->order .= ", `" . Company2Project::model()->tableName() . "`.`id` ASC";
                             if (($company2Project = Company2Project::model()->findByAttributes(array('projectId' => $oldModel->project_id), $criteria)) !== null) {
                                 $companyId = $company2Project->companyId;
                             }
                             $hourlyRate = null;
                             if (($project = Project::model()->findByPk($oldModel->project_id)) !== null) {
                                 $hourlyRate = $project->hourlyRate;
                             }
                             $task = new Task('migrate');
                             $task->projectId = $oldModel->project_id;
                             $task->companyId = $companyId;
                             $task->title = '[Auto Generated]';
                             $task->status = 'completed';
                             $task->dueDate = MDate::formatToDb($project === null ? 1234567890 : $project->createTime, 'date');
                             $task->openDate = MDate::formatToDb($project === null ? 1234567890 : $project->createTime, 'date');
                             $task->closeDate = MDate::formatToDb($project === null ? 1234567890 : $project->createTime, 'date');
                             $task->hourlyRate = $hourlyRate;
                             $task->isConfirmed = 1;
                             $task->confirmationTime = $project === null ? 1234567890 : $project->createTime;
                             if ($task->save()) {
                                 $t++;
                                 $taskId = $task->id;
                                 // assigned consultant
                                 if ($oldModel->user_id >= 1) {
                                     $consultant2Task = new User2Task('migrate');
                                     $consultant2Task->userId = $oldModel->user_id;
                                     $consultant2Task->taskId = $task->id;
                                     $consultant2Task->role = User2Task::CONSULTANT;
                                     $consultant2Task->save();
                                 }
                                 // assigned manager
                                 $criteria = new CDbCriteria();
                                 $criteria->order = "`" . User2Project::model()->tableName() . "`.`userPriority` ASC";
                                 $criteria->order .= ", `" . User2Project::model()->tableName() . "`.`id` ASC";
                                 if (($user2Project = User2Project::model()->findByAttributes(array('projectId' => $oldModel->project_id, 'role' => 'manager'), $criteria)) !== null) {
                                     $manager2Task = new User2Task('migrate');
                                     $manager2Task->userId = $user2Project->userId;
                                     $manager2Task->taskId = $task->id;
                                     $manager2Task->role = User2Task::MANAGER;
                                     $manager2Task->save();
                                 }
                             }
                         }
                     }
                     $managerId = null;
                     if (!empty($taskId)) {
                         $criteria = new CDbCriteria();
                         $criteria->order = "`" . User2Task::model()->tableName() . "`.`userPriority` ASC";
                         $criteria->order .= ",`" . User2Task::model()->tableName() . "`.`id` ASC";
                         if (($user2Task = User2Task::model()->findByAttributes(array('taskId' => $taskId, 'role' => 'manager'), $criteria)) !== null) {
                             $managerId = $user2Task->userId;
                         }
                     }
                     $timeDateNotSet = empty($oldModel->time_date) || $oldModel->time_date === '0000-00-00' || strtotime($oldModel->time_date) === false;
                     $model = new Time('migrate');
                     $model->consultantId = $oldModel->user_id;
                     $model->taskId = $taskId;
                     $model->spentMinute = (int) $oldModel->hours_spent * 60;
                     $model->timeDate = $timeDateNotSet ? null : MDate::formatToDb($oldModel->time_date, 'date');
                     $model->title = $oldModel->note;
                     $model->content = $oldModel->details . "\n" . '[from migration]';
                     $model->contentMarkup = 'text';
                     $model->managerId = $managerId;
                     $model->billedMinute = (int) $oldModel->hours_billed * 60;
                     $model->invoiceId = $oldModel->invoice_id;
                     $model->invoiceAmount = $oldModel->invoice_amount;
                     $model->isConfirmed = '1';
                     $model->confirmationTime = strtotime($oldModel->last);
                     $model->createTime = strtotime($oldModel->last);
                     $model->id = $oldModel->id;
                     if ($model->save()) {
                         $i++;
                     }
                     $j++;
                 }
                 $message .= $i . ' of ' . $j . ' time records' . ($i === $t ? '' : ' with ' . $t . ' tasks') . ' have been migrated.<br/>';
             }
         }
         if ($migrate['Invoice']) {
             // invoice
             $mInvoices = MInvoice::model()->findAll($findAllCriteria);
             if (is_array($mInvoices)) {
                 $i = $j = 0;
                 foreach ($mInvoices as $oldModel) {
                     if (($model = Invoice::model()->findByPk($oldModel->id)) !== null) {
                         $model->delete();
                     }
                     $invoiceDateNotSet = empty($oldModel->invoice_date) || $oldModel->invoice_date === '0000-00-00' || strtotime($oldModel->invoice_date) === false;
                     $startDateNotSet = empty($oldModel->start_date) || $oldModel->start_date === '0000-00-00' || strtotime($oldModel->start_date) === false;
                     $endDateNotSet = empty($oldModel->end_date) || $oldModel->end_date === '0000-00-00' || strtotime($oldModel->end_date) === false;
                     $dueDateNotSet = empty($oldModel->due_date) || $oldModel->due_date === '0000-00-00' || strtotime($oldModel->due_date) === false;
                     $model = new Invoice('migrate');
                     $model->invoiceDate = $invoiceDateNotSet ? null : MDate::formatToDb($oldModel->invoice_date, 'date');
                     $model->companyId = $oldModel->customer_id;
                     $model->billedMinute = (int) $oldModel->hours_billed * 60;
                     $model->amountTotal = number_format($oldModel->total, 2, '.', '');
                     $model->startDate = $startDateNotSet ? null : MDate::formatToDb($oldModel->start_date, 'date');
                     $model->endDate = $endDateNotSet ? null : MDate::formatToDb($oldModel->end_date, 'date');
                     $model->dueDate = $dueDateNotSet ? null : MDate::formatToDb($oldModel->due_date, 'date');
                     $model->amountTime = number_format($oldModel->total, 2, '.', '');
                     $model->amountExpense = 0;
                     $model->content = '[from migration]';
                     $model->contentMarkup = 'text';
                     $model->createTime = $invoiceDateNotSet ? null : strtotime($oldModel->invoice_date);
                     $model->id = $oldModel->id;
                     if ($model->save()) {
                         $i++;
                     }
                     $j++;
                 }
                 $message .= $i . ' of ' . $j . ' invoices have been migrated.<br/>';
             }
         }
         if ($migrate['Expense']) {
             // expense
             $mExpenses = MExpense::model()->findAll($findAllCriteria);
             if (is_array($mExpenses)) {
                 $i = $j = 0;
                 $billToCompany = array('Yes' => '1', 'No' => '0');
                 foreach ($mExpenses as $oldModel) {
                     if (($model = Expense::model()->findByPk($oldModel->id)) !== null) {
                         $model->delete();
                     }
                     $expenseDateNotSet = empty($oldModel->expense_date) || $oldModel->expense_date === '0000-00-00' || strtotime($oldModel->expense_date) === false;
                     $model = new Expense('migrate');
                     $model->managerId = $oldModel->user_id;
                     $model->companyId = $oldModel->customer_id;
                     $model->projectId = $oldModel->project_id;
                     $model->invoiceId = $oldModel->invoice_id;
                     $model->expenseDate = $expenseDateNotSet ? null : MDate::formatToDb($oldModel->expense_date, 'date');
                     $model->amount = $oldModel->amount;
                     $model->billToCompany = $billToCompany[$oldModel->bill_to_customer];
                     $model->content = $oldModel->note . "\n" . '[from migration]';
                     $model->contentMarkup = 'text';
                     $model->createTime = strtotime($oldModel->last);
                     $model->id = $oldModel->id;
                     if ($model->save()) {
                         $i++;
                     }
                     $j++;
                 }
                 $message .= $i . ' of ' . $j . ' expenses have been migrated.<br/>';
             }
         }
         // last message line
         $message .= 'done';
     }
     $this->render($this->action->id, array('message' => $message));
 }
 private function _checkAuth()
 {
     // Check if we have the USERNAME and PASSWORD HTTP headers set?
     if (!(isset($_SERVER['HTTP_X_USERNAME']) and isset($_SERVER['HTTP_X_PASSWORD']))) {
         // Error: Unauthorized
         $this->_sendResponse(401);
     }
     $username = $_SERVER['HTTP_X_USERNAME'];
     $password = $_SERVER['HTTP_X_PASSWORD'];
     // Find the user
     $user = UserDetails::model()->find('number=?', array($username));
     if ($user === null) {
         // Error: Unauthorized
         $this->_sendResponse(401, 'Error: User Name is invalid');
     } else {
         if (!$user->validatePassword($password)) {
             // Error: Unauthorized
             $this->_sendResponse(401, 'Error: User Password is invalid');
         }
     }
 }