/** * 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 $company = isset($_GET['company']) ? $_GET['company'] : null; if ($company !== 'all' && !ctype_digit($company)) { $company = 'all'; } $paymentMethod = isset($_GET['paymentMethod']) ? $_GET['paymentMethod'] : null; if ($paymentMethod !== 'all' && $paymentMethod !== (string) CompanyPayment::CASH && $paymentMethod !== (string) CompanyPayment::CHECK && $paymentMethod !== (string) CompanyPayment::CREDIT_CARD && $paymentMethod !== (string) CompanyPayment::PAYPAL && $paymentMethod !== (string) CompanyPayment::WIRE) { $paymentMethod = 'all'; } // criteria $criteria = new CDbCriteria(); $criteria->group = "`t`.`id`"; // required by together() $criteria->select = "`t`.amount, `t`.paymentDate, `t`.paymentMethod, `t`.paymentNumber"; //$criteria->select="`t`.`amount`, `t`.`paymentDate`, `t`.`paymentMethod`, `t`.`paymentNumber`"; // uncomment in yii-1.1.2 if ($jqGrid['searchField'] !== null && $jqGrid['searchString'] !== null && $jqGrid['searchOper'] !== null) { $field = array('amount' => "`t`.`amount`", 'paymentDate' => "`t`.`paymentDate`", 'paymentMethod' => "`t`.`paymentMethod`", 'paymentNumber' => "`t`.`paymentNumber`", 'company' => "`CompanyPayment_Company`.`title`"); $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 ($company !== 'all') { $criteria->addCondition("`CompanyPayment_Company`.`id`=:companyId"); $criteria->params[':companyId'] = $company; } if ($paymentMethod === (string) CompanyPayment::CASH) { $criteria->addCondition("`t`.`paymentMethod`=:cash"); $criteria->params[':cash'] = CompanyPayment::CASH; } else { if ($paymentMethod === (string) CompanyPayment::CHECK) { $criteria->addCondition("`t`.`paymentMethod`=:check"); $criteria->params[':check'] = CompanyPayment::CHECK; } else { if ($paymentMethod === (string) CompanyPayment::CREDIT_CARD) { $criteria->addCondition("`t`.`paymentMethod`=:creditCard"); $criteria->params[':creditCard'] = CompanyPayment::CREDIT_CARD; } else { if ($paymentMethod === (string) CompanyPayment::PAYPAL) { $criteria->addCondition("`t`.`paymentMethod`=:paypal"); $criteria->params[':paypal'] = CompanyPayment::PAYPAL; } else { if ($paymentMethod === (string) CompanyPayment::WIRE) { $criteria->addCondition("`t`.`paymentMethod`=:wire"); $criteria->params[':wire'] = CompanyPayment::WIRE; } } } } } if (User::isClient()) { $criteria->addCondition("`Company_User2Company`.`userId`=:clientId AND `Company_User2Company`.`position`=:clientPosition"); $criteria->params[':clientId'] = Yii::app()->user->id; $criteria->params[':clientPosition'] = Company::OWNER; } // pagination $with = array(); if (strpos($criteria->condition, 'CompanyPayment_Company') !== false) { $with[] = 'company'; } if (strpos($criteria->condition, 'Company_User2Company') !== false) { $with[] = 'company.allUser2Company'; } if (count($with) >= 1) { $pages = new CPagination(CompanyPayment::model()->with($with)->count($criteria)); } else { $pages = new CPagination(CompanyPayment::model()->count($criteria)); } $pages->pageSize = $jqGrid['pageSize'] !== null ? $jqGrid['pageSize'] : self::GRID_PAGE_SIZE; $pages->applyLimit($criteria); // sort $sort = new CSort('CompanyPayment'); $sort->attributes = array('amount' => array('asc' => "`t`.`amount`", 'desc' => "`t`.`amount` desc", 'label' => CompanyPayment::model()->getAttributeLabel('amount')), 'paymentDate' => array('asc' => "`t`.`paymentDate`", 'desc' => "`t`.`paymentDate` desc", 'label' => CompanyPayment::model()->getAttributeLabel('Date')), 'paymentMethod' => array('asc' => "`t`.`paymentMethod`", 'desc' => "`t`.`paymentMethod` desc", 'label' => CompanyPayment::model()->getAttributeLabel('Method')), 'paymentNumber' => array('asc' => "`t`.`paymentNumber`", 'desc' => "`t`.`paymentNumber` desc", 'label' => CompanyPayment::model()->getAttributeLabel('Number')), 'company' => array('asc' => "`CompanyPayment_Company`.`title`", 'desc' => "`CompanyPayment_Company`.`title` desc", 'label' => CompanyPayment::model()->getAttributeLabel('companyId'))); $sort->defaultOrder = "`t`.`paymentDate` DESC"; $sort->applyOrder($criteria); // find all $with = array('company' => array('select' => 'title')); if (strpos($criteria->condition, 'Company_User2Company') !== false) { $with['company.allUser2Company'] = array('select' => 'id'); } $together = strpos($criteria->condition, 'Company_User2Company') !== false; if ($together) { $models = CompanyPayment::model()->with($with)->together()->findAll($criteria); } else { $models = CompanyPayment::model()->with($with)->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(isset($model->company->id) ? CHtml::link(CHtml::encode($model->company->title), array('company/show', 'id' => $model->company->id)) : '', CHtml::encode(MDate::format($model->paymentDate, 'medium', null)), CHtml::encode($model->amount), CHtml::encode($model->getAttributeView('paymentMethod')), CHtml::encode($model->paymentNumber), 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); }
echo CHtml::encode($model->getAttributeLabel('createTime')); ?> </div> <div class="w3-detail-row-value"><?php echo CHtml::encode(MDate::format($model->createTime, 'full')); ?> </div> <div class="clear"> </div> </div> <div class="w3-detail-row"> <div class="w3-detail-row-label"><?php echo CHtml::encode($model->getAttributeLabel('updateTime')); ?> </div> <div class="w3-detail-row-value"><?php echo CHtml::encode(MDate::format($model->updateTime, 'full')); ?> </div> <div class="clear"> </div> </div> <div class="w3-detail-row"> <div class="w3-detail-row-label"><?php echo CHtml::encode($model->getAttributeLabel('title')); ?> </div> <div class="w3-detail-row-value"><?php echo CHtml::encode($model->title); ?> </div> <div class="clear"> </div> </div>
/** * 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 $company = isset($_GET['company']) ? $_GET['company'] : null; if ($company !== 'all' && !ctype_digit($company)) { $company = 'all'; } $priority = isset($_GET['priority']) ? $_GET['priority'] : null; if ($priority !== 'all' && $priority !== (string) Project::PRIORITY_HIGHEST && $priority !== (string) Project::PRIORITY_HIGH && $priority !== (string) Project::PRIORITY_MEDIUM && $priority !== (string) Project::PRIORITY_LOW && $priority !== (string) Project::PRIORITY_LOWEST) { $priority = 'all'; } $state = isset($_GET['state']) ? $_GET['state'] : null; if ($state !== 'all' && $state !== 'closed' && $state !== 'open') { $state = 'all'; } // criteria $criteria = new CDbCriteria(); $criteria->group = "`t`.`id`"; // required by together() $criteria->select = "`t`.closeDate, `t`.hourlyRate, `t`.openDate, `t`.priority, `t`.title"; //$criteria->select="`t`.`closeDate`, `t`.`hourlyRate`, `t`.`openDate`, `t`.`priority`, `t`.`title`"; // uncomment in yii-1.1.2 if ($jqGrid['searchField'] !== null && $jqGrid['searchString'] !== null && $jqGrid['searchOper'] !== null) { $field = array('closeDate' => "`t`.`closeDate`", 'hourlyRate' => "`t`.`hourlyRate`", 'openDate' => "`t`.`openDate`", 'priority' => "`t`.`priority`", 'title' => "`t`.`title`", 'company' => "`Project_Company`.`title`"); $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 ($company !== 'all') { $criteria->addCondition("`Project_Company`.`id`=:companyId"); $criteria->params[':companyId'] = $company; } if ($priority === (string) Project::PRIORITY_HIGHEST) { $criteria->addCondition("`t`.`priority`=:priorityHighest"); $criteria->params[':priorityHighest'] = Project::PRIORITY_HIGHEST; } else { if ($priority === (string) Project::PRIORITY_HIGH) { $criteria->addCondition("`t`.`priority`=:priorityHigh"); $criteria->params[':priorityHigh'] = Project::PRIORITY_HIGH; } else { if ($priority === (string) Project::PRIORITY_MEDIUM) { $criteria->addCondition("`t`.`priority`=:priorityMedium"); $criteria->params[':priorityMedium'] = Project::PRIORITY_MEDIUM; } else { if ($priority === (string) Project::PRIORITY_LOW) { $criteria->addCondition("`t`.`priority`=:priorityLow"); $criteria->params[':priorityLow'] = Project::PRIORITY_LOW; } else { if ($priority === (string) Project::PRIORITY_LOWEST) { $criteria->addCondition("`t`.`priority`=:priorityLowest"); $criteria->params[':priorityLowest'] = Project::PRIORITY_LOWEST; } } } } } if ($state === 'closed') { $criteria->addCondition("`t`.`closeDate` IS NOT NULL"); } else { if ($state === 'open') { $criteria->addCondition("(`t`.`closeDate` IS NULL OR TO_DAYS('" . MDate::formatToDb(time(), 'date') . "') < TO_DAYS(`t`.`closeDate`))"); } } if (User::isClient()) { $criteria->addCondition("`Company_User2Company`.`userId`=:clientId AND `Company_User2Company`.`position`=:clientPosition"); $criteria->params[':clientId'] = Yii::app()->user->id; $criteria->params[':clientPosition'] = Company::OWNER; } if (User::isConsultant()) { $criteria->addCondition("`Task_Consultant`.`id`=:consultantId"); $criteria->params[':consultantId'] = Yii::app()->user->id; } // pagination $with = array(); if (strpos($criteria->condition, 'Project_Company') !== false) { $with[] = 'allCompany'; } if (strpos($criteria->condition, 'Company_User2Company') !== false) { $with[] = 'allCompany.allUser2Company'; } if (strpos($criteria->condition, 'Task_Consultant') !== false) { $with[] = 'allTask.allConsultant'; } if (count($with) >= 1) { $pages = new CPagination(Project::model()->with($with)->count($criteria)); } else { $pages = new CPagination(Project::model()->count($criteria)); } $pages->pageSize = $jqGrid['pageSize'] !== null ? $jqGrid['pageSize'] : self::GRID_PAGE_SIZE; $pages->applyLimit($criteria); // sort $sort = new CSort('Project'); $sort->attributes = array('closeDate' => array('asc' => "`t`.`closeDate`", 'desc' => "`t`.`closeDate` desc", 'label' => Project::model()->getAttributeLabel('Closed')), 'hourlyRate' => array('asc' => "`t`.`hourlyRate`", 'desc' => "`t`.`hourlyRate` desc", 'label' => Project::model()->getAttributeLabel('Rate')), 'openDate' => array('asc' => "`t`.`openDate`", 'desc' => "`t`.`openDate` desc", 'label' => Project::model()->getAttributeLabel('Opened')), 'priority' => array('asc' => "`t`.`priority`", 'desc' => "`t`.`priority` desc", 'label' => Project::model()->getAttributeLabel('priority')), 'title' => array('asc' => "`t`.`title`", 'desc' => "`t`.`title` desc", 'label' => Project::model()->getAttributeLabel('title')), 'company' => array('asc' => "`Project_Company`.`title`", 'desc' => "`Project_Company`.`title` desc", 'label' => Company2Project::model()->getAttributeLabel('companyId'))); $sort->defaultOrder = "`t`.`closeDate` ASC, `t`.`priority` ASC, `t`.`createTime` DESC"; $sort->applyOrder($criteria); // find all $with = array('allCompany' => array('select' => 'title')); if (strpos($criteria->condition, 'Company_User2Company') !== false) { $with['allCompany.allUser2Company'] = array('select' => 'id'); } if (strpos($criteria->condition, 'Task_Consultant') !== false) { $with['allTask.allConsultant'] = array('select' => 'id'); } $together = strpos($criteria->condition, 'Project_Company') !== false || strpos($criteria->order, 'Project_Company') !== false || strpos($criteria->condition, 'Company_User2Company') !== false || strpos($criteria->condition, 'Task_Consultant') !== false; if ($together) { $models = Project::model()->with($with)->together()->findAll($criteria); } else { $models = Project::model()->with($with)->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(isset($model->allCompany[0]->id) ? CHtml::link(CHtml::encode($model->allCompany[0]->title), array('company/show', 'id' => $model->allCompany[0]->id)) : '', CHtml::encode($model->title), CHtml::encode($model->hourlyRate), CHtml::encode($model->getAttributeView('priority')), CHtml::encode(MDate::format($model->openDate, 'medium', null)), CHtml::encode(MDate::format($model->closeDate, 'medium', null)), 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); }
/** * 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 $state = isset($_GET['state']) ? $_GET['state'] : null; if ($state !== 'all' && $state !== 'closed' && $state !== 'open') { $state = 'all'; } // criteria $criteria = new CDbCriteria(); $criteria->group = "`t`.`id`"; // required by together() $criteria->select = "`t`.contactName, `t`.createTime, `t`.deactivationTime, `t`.title, `t`.titleAbbr"; //$criteria->select="`t`.`contactName`, `t`.`createTime`, `t`.`deactivationTime`, `t`.`title`, `t`.`titleAbbr`"; // uncomment in yii-1.1.2 if ($jqGrid['searchField'] !== null && $jqGrid['searchString'] !== null && $jqGrid['searchOper'] !== null) { $field = array('contactName' => "`t`.`contactName`", 'createTime' => "`t`.`createTime`", 'deactivationTime' => "`t`.`deactivationTime`", 'title' => "`t`.`title`", 'titleAbbr' => "`t`.`titleAbbr`"); $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 ($state === 'closed') { $criteria->addCondition("(`t`.`isActive` IS NULL OR `t`.`isActive`!=:isActive)"); $criteria->params[':isActive'] = Company::IS_ACTIVE; } else { if ($state === 'open') { $criteria->addCondition("`t`.`isActive`=:isActive"); $criteria->params[':isActive'] = Company::IS_ACTIVE; } } if (User::isClient()) { $criteria->addCondition("`Company_User2Company`.`userId`=:clientId AND `Company_User2Company`.`position`=:clientPosition"); $criteria->params[':clientId'] = Yii::app()->user->id; $criteria->params[':clientPosition'] = Company::OWNER; } // pagination $with = array(); if (strpos($criteria->condition, 'Company_User2Company') !== false) { $with[] = 'allUser2Company'; } if (count($with) >= 1) { $pages = new CPagination(Company::model()->with($with)->count($criteria)); } else { $pages = new CPagination(Company::model()->count($criteria)); } $pages->pageSize = $jqGrid['pageSize'] !== null ? $jqGrid['pageSize'] : self::GRID_PAGE_SIZE; $pages->applyLimit($criteria); // sort $sort = new CSort('Company'); $sort->attributes = array('contactName' => array('asc' => "`t`.`contactName`", 'desc' => "`t`.`contactName` desc", 'label' => Company::model()->getAttributeLabel('contactName')), 'createTime' => array('asc' => "`t`.`createTime`", 'desc' => "`t`.`createTime` desc", 'label' => Company::model()->getAttributeLabel('Opened')), 'deactivationTime' => array('asc' => "`t`.`deactivationTime`", 'desc' => "`t`.`deactivationTime` desc", 'label' => Company::model()->getAttributeLabel('Closed')), 'title' => array('asc' => "`t`.`title`", 'desc' => "`t`.`title` desc", 'label' => Company::model()->getAttributeLabel('title')), 'titleAbbr' => array('asc' => "`t`.`titleAbbr`", 'desc' => "`t`.`titleAbbr` desc", 'label' => Company::model()->getAttributeLabel('Abbr'))); $sort->defaultOrder = "`t`.`deactivationTime` ASC, `t`.`title` ASC"; $sort->applyOrder($criteria); // find all $with = array(); if (strpos($criteria->condition, 'Company_User2Company') !== false) { $with['allUser2Company'] = array('select' => 'id'); } $together = strpos($criteria->condition, 'Company_User2Company') !== false; if ($together) { $models = Company::model()->with($with)->together()->findAll($criteria); } else { $models = Company::model()->with($with)->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->title), CHtml::encode($model->titleAbbr), CHtml::encode($model->contactName), CHtml::encode(MDate::format($model->createTime, 'medium', null)), CHtml::encode(MDate::format($model->deactivationTime, 'medium', null)), 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); }
?> ui-widget-content ui-corner-all"> <?php echo CHtml::encode($model->getAttributeLabel('companyId')); ?> : <?php echo isset($model->company->id) ? CHtml::link(CHtml::encode($model->company->title), array('company/show', 'id' => $model->company->id)) : ''; ?> <br/> <?php echo CHtml::encode($model->getAttributeLabel('paymentDate')); ?> : <?php echo CHtml::encode(MDate::format($model->paymentDate, 'full', null)); ?> <br/> <?php echo CHtml::encode($model->getAttributeLabel('amount')); ?> : <?php echo CHtml::encode($model->amount); ?> <br/> <?php echo CHtml::encode($model->getAttributeLabel('paymentMethod')); ?> : <?php
/** * 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 inputCalendar($control) { $this->page->addDojoRequire('manager/DateTextBox'); $control->addDojoProp('promptMessage', "Formato: DD/MM/AAAA"); $control->setDojoType('manager/DateTextBox'); if ($control->property->rangeDate) { $minDate = $control->property->rangeDate[0]; $maxDate = $control->property->rangeDate[1]; if ($minDate) { $date = new MDate($minDate); $min = $date->format('Y') . ',' . ($date->format('m') - 1) . ',' . $date->format('d'); $this->page->onload("manager.byId('{$control->id}').constraints.min = new Date({$min});"); } if ($maxDate) { $date = new MDate($maxDate); $max = $date->format('Y') . ',' . ($date->format('m') - 1) . ',' . $date->format('d'); $this->page->onload("manager.byId('{$control->id}').constraints.max = new Date({$max});"); } } return $this->inputfield($control); }
/** * Time report. */ public function actionReport() { $criteria = new CDbCriteria(); $criteria->select = "`t`.billedMinute, `t`.spentMinute, `t`.timeDate, `t`.title"; //$criteria->select="`t`.`billedMinute`, `t`.`spentMinute`, `t`.`timeDate`, `t`.`title`"; // uncomment in yii-1.1.2 $criteria->condition = "TO_DAYS(`t`.`timeDate`) >= TO_DAYS('2009-09-09')"; $criteria->order = "`t`.`timeDate` ASC, `t`.`createTime` ASC"; $with = array('task' => array('select' => 'hourlyRate,title'), 'task.company' => array('select' => 'title'), 'task.project' => array('select' => 'title')); if (Yii::app()->user->checkAccess(User::CLIENT)) { $with['manager'] = array('select' => 'screenName'); } else { $with['consultant'] = array('select' => 'screenName'); } $models = Time::model()->with($with)->findAll($criteria); $data = array(); foreach ($models as $model) { $companyId = isset($model->task->company->id) ? $model->task->company->id : 0; if (!isset($data[$companyId]['company']) && isset($model->task->company->id)) { $data[$companyId]['company'] = $model->task->company; } $projectId = isset($model->task->project->id) ? $model->task->project->id : 0; if (!isset($data[$companyId]['allProject'][$projectId]['project']) && isset($model->task->project->id)) { $data[$companyId]['allProject'][$projectId]['project'] = $model->task->project; } $taskId = isset($model->task->id) ? $model->task->id : 0; if (!isset($data[$companyId]['allProject'][$projectId]['allTask'][$taskId]['task']) && isset($model->task->id)) { $data[$companyId]['allProject'][$projectId]['allTask'][$taskId]['task'] = $model->task; } $timeId = $model->id; if (Yii::app()->user->checkAccess(User::CLIENT) || Yii::app()->user->checkAccess(User::CONSULTANT)) { $member = isset($model->manager->id) ? $model->manager : null; } else { $member = isset($model->consultant->id) ? $model->consultant : null; } $data[$companyId]['allProject'][$projectId]['allTask'][$taskId]['gridRows'][] = array(array('content' => $member !== null ? CHtml::link($member->screenName !== '' ? CHtml::encode($member->screenName) : $member->id, array('user/show', 'id' => $member->id)) : ''), array('align' => 'right', 'content' => CHtml::encode(MDate::format($model->timeDate, 'short', null)), 'title' => CHtml::encode(MDate::format($model->timeDate, 'full', null))), array('content' => CHtml::link($model->title !== '' ? CHtml::encode($model->title) : $model->id, array('time/show', 'id' => $model->id))), array('align' => 'right', 'content' => $model->getAttributeView('billedMinute'), 'title' => Yii::t('t', 'Hourly rate') . ': ' . (isset($model->task->id) ? (int) $model->task->hourlyRate : '?')), array('align' => 'right', 'content' => $model->getAttributeView('spentMinute'), 'title' => Yii::t('t', 'Hourly rate') . ': ' . (isset($model->task->id) ? (int) $model->task->hourlyRate : '?'))); if (!isset($data[$companyId]['total']['billedMinute'])) { $data[$companyId]['total']['billedMinute'] = 0; } if (!isset($data[$companyId]['total']['spentMinute'])) { $data[$companyId]['total']['spentMinute'] = 0; } if (!isset($data[$companyId]['total']['billedAmount'])) { $data[$companyId]['total']['billedAmount'] = 0; } if (!isset($data[$companyId]['total']['spentAmount'])) { $data[$companyId]['total']['spentAmount'] = 0; } if (!isset($data[$companyId]['allProject'][$projectId]['total']['billedMinute'])) { $data[$companyId]['allProject'][$projectId]['total']['billedMinute'] = 0; } if (!isset($data[$companyId]['allProject'][$projectId]['total']['spentMinute'])) { $data[$companyId]['allProject'][$projectId]['total']['spentMinute'] = 0; } if (!isset($data[$companyId]['allProject'][$projectId]['total']['billedAmount'])) { $data[$companyId]['allProject'][$projectId]['total']['billedAmount'] = 0; } if (!isset($data[$companyId]['allProject'][$projectId]['total']['spentAmount'])) { $data[$companyId]['allProject'][$projectId]['total']['spentAmount'] = 0; } if (!isset($data[$companyId]['allProject'][$projectId]['allTask'][$taskId]['total']['billedMinute'])) { $data[$companyId]['allProject'][$projectId]['allTask'][$taskId]['total']['billedMinute'] = 0; } if (!isset($data[$companyId]['allProject'][$projectId]['allTask'][$taskId]['total']['spentMinute'])) { $data[$companyId]['allProject'][$projectId]['allTask'][$taskId]['total']['spentMinute'] = 0; } if (!isset($data[$companyId]['allProject'][$projectId]['allTask'][$taskId]['total']['billedAmount'])) { $data[$companyId]['allProject'][$projectId]['allTask'][$taskId]['total']['billedAmount'] = 0; } if (!isset($data[$companyId]['allProject'][$projectId]['allTask'][$taskId]['total']['spentAmount'])) { $data[$companyId]['allProject'][$projectId]['allTask'][$taskId]['total']['spentAmount'] = 0; } $data[$companyId]['total']['billedMinute'] += $model->billedMinute; $data[$companyId]['total']['spentMinute'] += $model->spentMinute; $data[$companyId]['allProject'][$projectId]['total']['billedMinute'] += $model->billedMinute; $data[$companyId]['allProject'][$projectId]['total']['spentMinute'] += $model->spentMinute; $data[$companyId]['allProject'][$projectId]['allTask'][$taskId]['total']['billedMinute'] += $model->billedMinute; $data[$companyId]['allProject'][$projectId]['allTask'][$taskId]['total']['spentMinute'] += $model->spentMinute; if (isset($model->task->id)) { $data[$companyId]['total']['billedAmount'] += $model->billedMinute / 60 * (int) $model->task->hourlyRate; $data[$companyId]['total']['spentAmount'] += $model->spentMinute / 60 * (int) $model->task->hourlyRate; $data[$companyId]['allProject'][$projectId]['total']['billedAmount'] += $model->billedMinute / 60 * (int) $model->task->hourlyRate; $data[$companyId]['allProject'][$projectId]['total']['spentAmount'] += $model->spentMinute / 60 * (int) $model->task->hourlyRate; $data[$companyId]['allProject'][$projectId]['allTask'][$taskId]['total']['billedAmount'] += $model->billedMinute / 60 * (int) $model->task->hourlyRate; $data[$companyId]['allProject'][$projectId]['allTask'][$taskId]['total']['spentAmount'] += $model->spentMinute / 60 * (int) $model->task->hourlyRate; } } $this->render($this->action->id, array('data' => $data, 'models' => $models, 'cn', 'pn', 'tn')); }
/** * 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 $company = isset($_GET['company']) ? $_GET['company'] : null; if ($company !== 'all' && !ctype_digit($company)) { $company = 'all'; } $project = isset($_GET['project']) ? $_GET['project'] : null; if ($project !== 'all' && !ctype_digit($project)) { $project = 'all'; } $billToCompany = isset($_GET['billToCompany']) ? $_GET['billToCompany'] : null; if ($billToCompany !== 'all' && $billToCompany !== (string) Expense::BILL_TO_COMPANY && $billToCompany !== (string) Expense::DO_NOT_BILL_TO_COMPANY) { $billToCompany = 'all'; } // criteria $criteria = new CDbCriteria(); $criteria->group = "`t`.`id`"; // required by together() $criteria->select = "`t`.amount, `t`.billToCompany, `t`.expenseDate"; //$criteria->select="`t`.`amount`, `t`.`billToCompany`, `t`.`expenseDate`"; // uncomment in yii-1.1.2 if ($jqGrid['searchField'] !== null && $jqGrid['searchString'] !== null && $jqGrid['searchOper'] !== null) { $field = array('amount' => "`t`.`amount`", 'billToCompany' => "`t`.`billToCompany`", 'expenseDate' => "`t`.`expenseDate`", 'company' => "`Expense_Company`.`title`", 'project' => "`Expense_Project`.`title`"); $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 ($company !== 'all') { $criteria->addCondition("`Expense_Company`.`id`=:companyId"); $criteria->params[':companyId'] = $company; } if ($project !== 'all') { $criteria->addCondition("`Expense_Project`.`id`=:projectId"); $criteria->params[':projectId'] = $project; } if ($billToCompany === (string) Expense::BILL_TO_COMPANY) { $criteria->addCondition("`t`.`billToCompany`=:billToCompany"); $criteria->params[':billToCompany'] = Expense::BILL_TO_COMPANY; } else { if ($billToCompany === (string) Expense::DO_NOT_BILL_TO_COMPANY) { $criteria->addCondition("`t`.`billToCompany`=:doNotBillToCompany"); $criteria->params[':doNotBillToCompany'] = Expense::DO_NOT_BILL_TO_COMPANY; } } if (User::isClient()) { $criteria->addCondition("`Company_User2Company`.`userId`=:clientId AND `Company_User2Company`.`position`=:clientPosition"); $criteria->params[':clientId'] = Yii::app()->user->id; $criteria->params[':clientPosition'] = Company::OWNER; } // pagination $with = array(); if (strpos($criteria->condition, 'Expense_Company') !== false) { $with[] = 'company'; } if (strpos($criteria->condition, 'Expense_Project') !== false) { $with[] = 'project'; } if (strpos($criteria->condition, 'Company_User2Company') !== false) { $with[] = 'company.allUser2Company'; } if (count($with) >= 1) { $pages = new CPagination(Expense::model()->with($with)->count($criteria)); } else { $pages = new CPagination(Expense::model()->count($criteria)); } $pages->pageSize = $jqGrid['pageSize'] !== null ? $jqGrid['pageSize'] : self::GRID_PAGE_SIZE; $pages->applyLimit($criteria); //sort $sort = new CSort('Expense'); $sort->attributes = array('amount' => array('asc' => "`t`.`amount`", 'desc' => "`t`.`amount` desc", 'label' => Expense::model()->getAttributeLabel('amount')), 'billToCompany' => array('asc' => "`t`.`billToCompany`", 'desc' => "`t`.`billToCompany` desc", 'label' => Expense::model()->getAttributeLabel('Bill')), 'expenseDate' => array('asc' => "`t`.`expenseDate`", 'desc' => "`t`.`expenseDate` desc", 'label' => Expense::model()->getAttributeLabel('Date')), 'company' => array('asc' => "`Expense_Company`.`title`", 'desc' => "`Expense_Company`.`title` desc", 'label' => Expense::model()->getAttributeLabel('companyId')), 'project' => array('asc' => "`Expense_Project`.`title`", 'desc' => "`Expense_Project`.`title` desc", 'label' => Expense::model()->getAttributeLabel('projectId'))); $sort->defaultOrder = "`t`.`expenseDate` DESC, `t`.`id` DESC"; $sort->applyOrder($criteria); // find all $with = array('company' => array('select' => 'title'), 'project' => array('select' => 'title')); if (strpos($criteria->condition, 'Company_User2Company') !== false) { $with['company.allUser2Company'] = array('select' => 'id'); } $together = strpos($criteria->condition, 'Company_User2Company') !== false; if ($together) { $models = Expense::model()->with($with)->together()->findAll($criteria); } else { $models = Expense::model()->with($with)->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(isset($model->company->id) ? CHtml::link(CHtml::encode($model->company->title), array('company/show', 'id' => $model->company->id)) : '', isset($model->project->id) ? CHtml::link(CHtml::encode($model->project->title), array('project/show', 'id' => $model->project->id)) : '', CHtml::encode(MDate::format($model->expenseDate, 'medium', null)), CHtml::encode($model->amount), CHtml::encode($model->getAttributeView('billToCompany', 'grid')), User::isManager() && empty($model->invoiceId) || User::isAdministrator() ? 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 ui-corner-all', 'title' => Yii::t('link', 'Edit'))) . CHtml::link('<span class="ui-icon ui-icon-trash"></span>', array('delete', 'id' => $model->id), array('class' => 'w3-ig w3-link-icon w3-border-1px-transparent w3-last ui-corner-all', 'title' => Yii::t('link', 'Delete the record number {id}', array('{id}' => $model->id)))) : 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 w3-last ui-corner-all', 'title' => Yii::t('link', 'Show'))))); } $this->printJson($data); }
?> </div> <div class="clear"> </div> </div> <?php } if ($model->isActive === User::IS_NOT_ACTIVE && !empty($model->details->deactivationTime) && ($model->isMe || Yii::app()->user->checkAccess(User::ADMINISTRATOR))) { // FIXME: decide/define by default (NULL) is active or not? - currently yes ?> <div class="w3-detail-row"> <div class="w3-detail-row-label"><?php echo CHtml::encode($model->details->getAttributeLabel('deactivationTime')); ?> </div> <div class="w3-detail-row-value"><?php echo CHtml::encode(MDate::format($model->details->deactivationTime, 'full')); ?> </div> <div class="clear"> </div> </div> <?php } if ($model->hasVirtualAttribute('id') && ($model->isMe || Yii::app()->user->checkAccess(User::ADMINISTRATOR))) { ?> <div class="w3-detail-row"> <div class="w3-detail-row-label"><?php echo CHtml::encode($model->getAttributeLabel('id')); ?> </div> <div class="w3-detail-row-value"><?php echo CHtml::encode($model->id);