public function actionEvents()
 {
     /**
      * @var $task Task
      * @var $cmd CDbCommand
      */
     $result = array('success' => 1);
     if (isset($_GET['from']) && isset($_GET['to'])) {
         $start = date(Task::DF_INTER, intval($_GET['from']) / 1000);
         $end = date(Task::DF_INTER, intval($_GET['to']) / 1000);
         //echo $start."\n".$end;
         $criteria = new CDbCriteria();
         $criteria->addBetweenCondition('start_date', $start, $end);
         if ($this->_user()->role == User::ROLE_USER) {
             $cmd = Yii::app()->db->createCommand();
             $taskIds = $cmd->select('task_id')->from(Job::model()->tableName())->where('organization_id = :id AND (updated_at BETWEEN :start AND :end)', array(':id' => $this->_user()->organization_id, ':start' => $start, ':end' => $end))->queryColumn();
             $criteria->addInCondition('id', $taskIds);
         }
         $tasks = Task::model()->findAll($criteria, array('order' => array('priority' => 'DESC')));
         $data = array();
         foreach ($tasks as $task) {
             $data[] = array('id' => $task->id, 'title' => $task->name, 'url' => Yii::app()->createUrl('task/view', array('id' => $task->id)), 'start' => strtotime($task->created_at) . '000', 'end' => strtotime($task->created_at) + 1800 . '000', 'class' => 'priority-' . $task->priority);
         }
         $result['result'] = $data;
     }
     $this->renderJSON($result);
 }
Example #2
0
 /**
  * This is the default 'index' action that is invoked
  * when an action is not explicitly requested by users.
  */
 public function actionIndex()
 {
     $model = new Task();
     $tasks = Task::model()->findAllByAttributes(array('owner' => Yii::app()->user->id));
     // renders the view file 'protected/views/site/index.php'
     // using the default layout 'protected/views/layouts/main.php'
     $this->render('index', array('model' => $model, 'tasks' => $tasks));
 }
Example #3
0
 /**
  * @param $jobId
  * @return null|JobInterface
  */
 public function getJob($jobId)
 {
     /**
      * @var JobIdentity $identity
      */
     $identity = JobIdentity::model()->findByPk($jobId);
     return $this->createJob($identity);
 }
 private function loadModel($id)
 {
     $task = Task::model()->findByPk($id);
     if (!$task) {
         $this->sendResponse(array(), 404, array('Task not found.'));
     }
     return $task;
 }
Example #5
0
 /**
  * Получает доступ к редактированию проекту если:
  * Администратор, содатель проекта, участник конкретного действия.
  * @param type $projectID
  * @return boolean
  */
 public static function accessEditProject($projectID, $taskId = NULL)
 {
     if (self::currentUserIsAdmin()) {
         return true;
     }
     if (!is_null(Project::model()->find(array('select' => 'id', 'condition' => 'id=:id AND user_id=:user_id', 'params' => array(':id' => $projectID, ':user_id' => Yii::app()->user->getId()))))) {
         return true;
     }
     if (!is_null($taskId) && !is_null(Task::model()->find(array('select' => 'id', 'condition' => 'id=:id  AND project_id=:project_id AND executor=:user_id', 'params' => array(':id' => $taskId, ':project_id' => $projectID, ':user_id' => Yii::app()->user->getId()))))) {
         return true;
     }
     return false;
 }
Example #6
0
 /**
  * Query for calendar
  */
 public function actionAjaxList($start, $end)
 {
     $user_id = Yii::app()->user->getId();
     $conditionDate = '(start_date < :end AND end_date > :start)';
     if (Yii::app()->db->driverName == 'sqlite') {
         $conditionDate = '(date(start_date) < date(:end) AND date(end_date) > date(:start))';
     }
     $tasks = Task::model()->findAll(array('condition' => $conditionDate . ' AND (project.user_id = :user_id OR t.executor =:user_id1 )', 'params' => array(':end' => date('Y-m-d', $end), ':start' => date('Y-m-d', $start), ':user_id' => $user_id, ':user_id1' => $user_id), 'with' => array('project' => array('select' => 'user_id'))));
     $data = array();
     foreach ($tasks as $task) {
         $data[] = array('title' => $task->description, 'start' => strtotime($task->start_date), 'end' => strtotime($task->end_date), 'url' => $this->createUrl('/project/view', array('id' => $task->project_id)));
     }
     echo CJSON::encode($data);
     Yii::app()->end();
 }
 public function actionViewlog($id)
 {
     $this->layout = '//layouts/column1';
     if (!Yii::app()->user->checkAccess('Admin')) {
         throw new CHttpException(403, 'You are not authorized to perform this action.');
     }
     $model = Task::model()->findByPk($id);
     $tasklog = new TaskLog('search');
     $tasklog->unsetAttributes();
     if (isset($_GET['TaskLog'])) {
         $tasklog->attributes = $_GET['TaskLog'];
         if (isset($_GET['TaskLog']['date_search']) && $_GET['TaskLog']['date_search'] != '') {
             $tasklog->date = date('Y-m-d', strtotime($_GET['TaskLog']['date_search']));
         }
     }
     $this->render('viewlog', array('tasklog' => $tasklog, 'model' => $model));
 }
Example #8
0
function print_task($tasks)
{
    $id = 1;
    foreach ($tasks as $task) {
        $childcount = Task::model()->count(array('condition' => 'parent_id=' . $task->id . ' AND deleted=0'));
        $assignment = TaskAssignment::model()->find(array('condition' => 'task_id=' . $task->id . ' AND deleted=0'));
        if ($childcount > 0) {
            $childtasks = Task::model()->findAll(array('condition' => 'parent_id=' . $task->id . ' AND deleted=0'));
            echo 'g.AddTaskItem(new JSGantt.TaskItem("' . $task->id . '", "' . $task->title . '", "' . date('m/d/Y', strtotime($task->start_date)) . '", "' . date('m/d/Y', strtotime($task->due_date)) . '", "659af7", "#", 0, "' . (isset($assignment) ? $assignment->member->username : '') . '", 0, 1, ' . ($task->has_parent ? $task->parent_id : 0) . ', 0));';
            print_task($childtasks);
        } else {
            echo 'g.AddTaskItem(new JSGantt.TaskItem("' . $task->id . '", "' . $task->title . '", "' . date('m/d/Y', strtotime($task->start_date)) . '", "' . date('m/d/Y', strtotime($task->due_date)) . '", "659af7", "#", 0, "' . (isset($assignment) ? $assignment->member->username : '') . '", 0, 0, ' . ($task->has_parent ? $task->parent_id : 0) . ', 0));';
            // set criteria for tasklog
            $criteria = new CDbCriteria();
            $criteria->with = array('taskAssignment.task');
            $criteria->order = 'date ASC';
            $criteria->condition = 'type="Project" AND task.id=' . $task->id . ' AND t.deleted=0 and task.deleted=0';
            $criteria2 = new CDbCriteria();
            $criteria2->with = array('taskAssignment.task');
            $criteria2->condition = 'type="Non-project" AND t.member_id=' . $assignment->member_id . ' AND t.deleted=0 AND t.date BETWEEN "' . $task->start_date . '" AND "' . $task->due_date . '"';
            $criteria3 = new CDbCriteria();
            $criteria3->with = array('taskAssignment.task');
            $criteria3->condition = 'type="Project" AND t.member_id=' . $assignment->member_id . ' AND t.deleted=0 AND t.date BETWEEN "' . $task->start_date . '" AND "' . $task->due_date . '"';
            // Merge criteria
            $criteria->mergeWith($criteria2, 'OR');
            $criteria->mergeWith($criteria3, 'OR');
            // Get tasklog based on criteria
            $tasklog = TaskLog::model()->findAll($criteria);
            if ($tasklog) {
                echo 'g.AddTaskItem(new JSGantt.TaskItem("' . $task->id . '.1", "' . $task->title . ' - REAL", "", "", "fe7e7e", "#", 0, "-", 0, 1, ' . ($task->has_parent ? $task->parent_id : 0) . ', 0));';
                foreach ($tasklog as $item) {
                    if ($item->type == "Non-project") {
                        echo 'g.AddTaskItem(new JSGantt.TaskItem("' . $task->id . '.' . $item->id . '", "' . $item->date . ' - ' . $item->task_title . ' (Non-project)", "' . date('m/d/Y', strtotime($item->date)) . '", "' . date('m/d/Y', strtotime($item->date)) . '", "737070", "#", 0, "' . $item->member->username . '", 0, 0, "' . $task->id . '.1", "' . $task->title . '-REAL", 0));';
                    } else {
                        if ($item->type == "Project" && $item->taskAssignment->task->id != $task->id) {
                            echo 'g.AddTaskItem(new JSGantt.TaskItem("' . $task->id . '.' . $item->id . '", "' . $item->date . ' - ' . $item->taskAssignment->task->title . ' (Different project)", "' . date('m/d/Y', strtotime($item->date)) . '", "' . date('m/d/Y', strtotime($item->date)) . '", "737070", "#", 0, "' . $item->member->username . '", 0, 0, "' . $task->id . '.1", "' . $task->title . '-REAL", 0));';
                        } else {
                            echo 'g.AddTaskItem(new JSGantt.TaskItem("' . $task->id . '.' . $item->id . '", "' . $item->date . '", "' . date('m/d/Y', strtotime($item->date)) . '", "' . date('m/d/Y', strtotime($item->date)) . '", "fe7e7e", "#", 0, "' . $item->member->username . '", 0, 0, "' . $task->id . '.1", "' . $task->title . '-REAL", 0));';
                        }
                    }
                }
            }
        }
    }
}
 private function loadIdentities()
 {
     $model = JobIdentity::model();
     $criteria = new \CDbCriteria();
     $criteria->addCondition('broker_name = :name');
     $criteria->addCondition('routing_key = :key');
     $criteria->addCondition('status = ' . JobInterface::IS_NEW);
     $criteria->order = 'task_id';
     $criteria->limit = 5;
     //1000; todo
     $criteria->params = [':name' => $this->broker->getName(), ':key' => $this->routingKey];
     /**
      * @var JobIdentity[] $identities
      */
     $identities = $model->findAll($criteria);
     $identityIds = [];
     foreach ($identities as $identity) {
         $this->identities[$identity->getId()] = $identity;
         $identityIds[] = $identity->getId();
     }
     $model->updateByPk($identityIds, ['status' => JobInterface::SCHEDULED]);
 }
 public function init()
 {
     if (ContactsModule::shouldUpdateLatestActivityDateTimeWhenATaskIsCompleted()) {
         $eventHandler = array($this, 'updateContactLatestActivityDateTimeByTask');
         Task::model()->attachEventHandler('onAfterSave', $eventHandler);
         $this->attachedEventHandlersIndexedByModelClassName['Task'] = array('onAfterSave', $eventHandler);
     }
     if (ContactsModule::shouldUpdateLatestActivityDateTimeWhenANoteIsCreated()) {
         $eventHandler = array($this, 'updateContactLatestActivityDateTimeByNote');
         Note::model()->attachEventHandler('onAfterSave', $eventHandler);
         $this->attachedEventHandlersIndexedByModelClassName['Note'] = array('onAfterSave', $eventHandler);
     }
     if (ContactsModule::shouldUpdateLatestActivityDateTimeWhenAnEmailIsSentOrArchived()) {
         $eventHandler = array($this, 'updateContactLatestActivityDateTimeByEmailMessage');
         EmailMessage::model()->attachEventHandler('onAfterSave', $eventHandler);
         $this->attachedEventHandlersIndexedByModelClassName['EmailMessage'] = array('onAfterSave', $eventHandler);
     }
     if (ContactsModule::shouldUpdateLatestActivityDateTimeWhenAMeetingIsInThePast()) {
         $eventHandler = array($this, 'resolveModelLatestActivityDateTimeProcessFlagByMeeting');
         Meeting::model()->attachEventHandler('onBeforeSave', $eventHandler);
         $this->attachedEventHandlersIndexedByModelClassName['Meeting'] = array('onBeforeSave', $eventHandler);
     }
 }
Example #11
0
 /**
  * @return JobIdentity
  */
 protected function getIdentity()
 {
     return $this->identity = JobIdentity::model()->findByPk($this->getId());
 }
Example #12
0
 /**
  * Returns data array of the attribute for create/update.
  * @param string the attribute name
  * @return array the attribute's data
  */
 public function getAttributeData($attribute)
 {
     switch ($attribute) {
         case 'billedM':
         case 'spentM':
             $minutes = range(0, 60, 5);
             if (ctype_digit((string) $this->{$attribute}) && $this->{$attribute} >= 0 && $this->{$attribute} <= 60 && !in_array($this->{$attribute}, $minutes)) {
                 $minutes[] = $this->{$attribute};
                 sort($minutes);
             }
             $retval = array();
             foreach ($minutes as $minute) {
                 $retval[$minute] = sprintf('%02u', $minute);
             }
             return $retval;
         case 'consultantId':
             return array(null => Yii::t('t', '- Please select -')) + CHtml::listData(User::model()->findAllActiveRecords(array($this->{$attribute})), 'id', 'screenName');
         case 'isConfirmed':
             return array(null => Yii::t('attr', 'By default (The record is not confirmed by the project manager)'), self::IS_NOT_CONFIRMED => Yii::t('attr', 'No (The record is not confirmed by the project manager)'), self::IS_CONFIRMED => Yii::t('attr', 'Yes (The record is confirmed by the project manager)'));
         case 'managerId':
             return array(null => Yii::t('t', '- Please select -')) + CHtml::listData(User::model()->findAllActiveRecords(array($this->{$attribute})), 'id', 'screenName');
         case 'taskId':
             return array(null => Yii::t('t', '- Please select -')) + CHtml::listData(Task::model()->findAllOpenRecords(array($this->{$attribute})), 'id', 'title');
         default:
             return $this->{$attribute};
     }
 }
 /**
  * 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 = Task::model()->findByPk($id);
     if ($model === null) {
         throw new CHttpException(404, 'The requested page does not exist.');
     }
     return $model;
 }
Example #14
0
<?php

/* @var $this TaskController */
/* @var $model Task */
// Making task array
$task = $model;
$links = array();
$links = array_merge(array($task->title), $links);
while ($task->has_parent) {
    $task = Task::model()->findByPk($task->parent_id);
    $links = array_merge(array($task->title => array('task/view', 'id' => $task->id)), $links);
}
$links = array_merge(array($model->project->name => array('project/view', 'id' => $model->project_id)), $links);
$links = array_merge(array('Projects' => array('project/index')), $links);
// Displaying breadcrumbs
$this->widget('booster.widgets.TbBreadcrumbs', array('links' => $links));
$this->menu = array(array('label' => 'See my projects', 'url' => array('project/myProjects')), array('label' => 'See all projects', 'url' => array('project/index')), array('label' => 'Add task', 'url' => array('task/create', 'id' => $model->project_id)), array('label' => 'Update task', 'url' => array('task/update', 'id' => $model->id)));
?>
<h2 class="page-header">Task Detail : <?php 
echo $model->title;
?>
</h2>
<?php 
$this->widget('booster.widgets.TbDetailView', array('id' => 'task-detail', 'data' => $model, 'attributes' => array('project.name', array('label' => 'Parent Task', 'value' => $model->has_parent == 0 ? '-' : $model->parent->title), array('label' => 'Creator', 'value' => $model->creator->username), array('label' => 'Assigned to', 'value' => TaskAssignment::model()->find(array('condition' => 'task_id=' . $model->id . ' AND deleted=0')) ? TaskAssignment::model()->find(array('condition' => 'task_id=' . $model->id . ' AND deleted=0'))->member->username : '******'), array('label' => 'Start date', 'value' => date('d-m-Y', strtotime($model->start_date))), array('label' => 'Due date', 'value' => date('d-m-Y', strtotime($model->due_date))), array('label' => 'Status', 'value' => $model->status))));
?>

<!-- Display current status -->
<!--<h4>
    <b>Current Status :</b>
    <?php 
/*$model->status=="New" ? $this->widget('booster.widgets.TbLabel', array('context' => 'default','label' => 'NEW')) : 
Example #15
0
 public function userAllTasks(User $user)
 {
     $criteria = new CDbCriteria();
     $criteria->alias = 'job';
     $criteria->select = 'task.user_id as task_user_id, task.name as name, task.number as number, task.priority as priority, user.name as user_name, job.*';
     $criteria->join = 'LEFT JOIN ' . Task::model()->tableName() . ' on task.id = job.task_id
                          LEFT JOIN ' . User::model()->tableName() . ' on user.id = task.user_id';
     $criteria->compare('job.organization_id', $user->organization_id);
     if ($this->number) {
         $criteria->compare('task.number', $this->number);
     }
     if ($this->period_id) {
         $criteria->compare('task.period_id', $this->period_id);
     }
     if ($this->priority) {
         $criteria->compare('task.priority', $this->priority);
     }
     if ($this->status) {
         $criteria->compare('job.status', $this->status);
     }
     return new CActiveDataProvider(Job::model(), array('criteria' => $criteria, 'sort' => array('defaultOrder' => 'task.period_id DESC, job.status ASC, task.priority DESC', 'route' => "task/user", 'attributes' => array('priority' => array('asc' => 'task.priority', 'desc' => 'task.priority DESC'), 'name' => array('asc' => 'task.name', 'desc' => 'task.name DESC'), 'number' => array('asc' => 'task.number', 'desc' => 'task.number DESC'), 'user_name' => array('asc' => 'user.name', 'desc' => 'user.name DESC'), '*')), 'pagination' => array('pageSize' => 20, 'route' => "task/user")));
 }
Example #16
0
            <?php 
$actives = array(false, false, false);
if (preg_match('#^\\S*\\@task\\%20created\\_by\\_username\\:\\(\\=\\=\\%7B' . Yii::app()->user->username . '\\%7D\\)$#', Yii::app()->request->requestUri)) {
    $actives[1] = true;
} else {
    if (preg_match('#^\\S*\\@task\\%20responsible_username\\:\\(\\=\\=\\%7B' . Yii::app()->user->username . '\\%7D\\)$#', Yii::app()->request->requestUri)) {
        $actives[2] = true;
    } else {
        $actives[0] = true;
    }
}
$this->widget('zii.widgets.CMenu', array('id' => 'sub-menu', 'items' => array(array('label' => Yii::t('TOAST', 'All Task'), 'url' => array('/task'), 'active' => $actives[0]), array('label' => Yii::t('TOAST', 'Created By Me'), 'url' => array('/task/index/q/@task created_by_username:(=={' . Yii::app()->user->username . '})'), 'active' => $actives[1]), array('label' => Yii::t('TOAST', 'Responsible By Me'), 'url' => array('/task/index/q/@task responsible_username:(=={' . Yii::app()->user->username . '})'), 'active' => $actives[2]), array('label' => Yii::t('TOAST', 'Recent Run'), 'url' => array('/run'), 'active' => false))));
?>
            <div class="search">
            <?php 
$this->Widget('application.extensions.querybuilder.QueryBuilderWidget', array('name' => 'search', 'options' => array('action' => Yii::app()->getBaseUrl(true) . '/#table#/index', 'cTable' => 'task', 'queryListUrl' => Yii::app()->getBaseUrl(true) . '/query/getlist', 'createQueryUrl' => Yii::app()->getBaseUrl(true) . '/query/create', 'updateQueryUrl' => Yii::app()->getBaseUrl(true) . '/query/update', 'deleteQueryUrl' => Yii::app()->getBaseUrl(true) . '/query/delete', 'tables' => array('task' => array('label' => '任务', 'items' => array('id' => array('label' => 'ID', 'type' => 'text', 'operators' => array('==' => '等于', '-=' => '不等于', '>=' => '大于等于', '>' => '大于', '<' => '小于', '<=' => '小于等于', '=' => '包含', '!=' => '不包含')), 'name' => array('label' => '任务名称', 'type' => 'text', 'operators' => array('' => '含有', '-' => '不含有')), 'type' => array('label' => '任务类型', 'type' => 'select', 'operators' => array('==' => '等于', '-=' => '不等于'), 'data' => Task::model()->getTypeOptions()), 'product_id' => array('label' => '所属产品', 'type' => 'select', 'operators' => array('==' => '等于', '-=' => '不等于'), 'data' => Product::getAllProductsList()), 'project_path' => array('label' => '模块路径', 'type' => 'text', 'operators' => array('in' => '在某路径下', '==' => '等于', '-=' => '不等于')), 'responsible_username' => array('label' => '负责人', 'type' => 'select', 'operators' => array('==' => '等于', '-=' => '不等于'), 'data' => Yii::app()->user->getUsernameOpts()), 'svn_url' => array('label' => 'SVN监控', 'type' => 'text', 'operators' => array('' => '含有', '-' => '不含有')), 'created_by_username' => array('label' => '创建者', 'type' => 'select', 'operators' => array('==' => '等于', '-=' => '不等于'), 'data' => Yii::app()->user->getUsernameOpts()), 'create_time' => array('label' => '创建时间', 'type' => 'text', 'operators' => array('' => '等于', '-' => '不等于', '>=' => '大于等于', '>' => '大于', '<' => '小于', '<=' => '小于等于')), 'updated_by_username' => array('label' => '修改者', 'type' => 'select', 'operators' => array('==' => '等于', '-=' => '不等于'), 'data' => Yii::app()->user->getUsernameOpts()), 'update_time' => array('label' => '修改时间', 'type' => 'text', 'operators' => array('' => '等于', '-' => '不等于', '>=' => '大于等于', '>' => '大于', '<' => '小于', '<=' => '小于等于'))))))));
?>
            </div>
        </div>
        <div class="main-list">
            <div class="link-bar">
                <span class="task-new icon-link"><?php 
echo CHtml::link(Yii::t("TOAST", "Create"), array('/task/create'));
?>
</span>
            </div>
            <?php 
$this->widget('GridView', array('id' => 'vtasks', 'dataProvider' => $vTaskProvider, 'htmlOptions' => array('class' => 'widget-view'), 'enablePageSize' => true, 'selectionChanged' => 'js:function(id){
                                    var selectedID = $.fn.yiiGridView.getSelection(id);
                                    if(selectedID.toString().match(/\\d+/))
                                        location.href = getRootPath() + "/task/view/id/" + selectedID;
Example #17
0
						</div>
						<div class="dash-non-editabble-date" >
							<?php 
        if ($d['due_date'] != '') {
            echo $d['due_date'];
            ?>
							
							<?php 
        }
        ?>
						</div>

					</td>
					<td>
						<?php 
        echo Task::model()->findByPk($d['pts'])->name;
        ?>
					<!--
						<?php 
        // echo $d['sp'];
        if ($d['due_date'] != '') {
            ?>
							<select style="background:transparent;border:none;color:white" disabled>
								<option class="option" value="0">choose</option>
								<?php 
            foreach ($liststatus as $l) {
                ?>
									<option value="<?php 
                echo $l->id;
                ?>
" <?php 
Example #18
0
 public function actionEventDetail($id)
 {
     if (@$_GET['asModal'] == true) {
         if (!Yii::app()->user->checkAccess('Staff')) {
             $model = Project::model()->findByPk($id);
         } else {
             $model = Task::model()->findByPk($id);
         }
     }
     $this->renderPartial('event_detail', array('model' => $model), false, true);
 }
Example #19
0
<?php

/* @var $this ProjectController */
/* @var $model Project */
// Get member from creator id
$project_owner = Member::model()->find(array('condition' => 'account_id=' . $model->creator->id));
// Get progress of the project
$task = Task::model()->count(array('condition' => 'project_id=' . $model->id . ' AND deleted=0 and has_parent=0'));
$completedtask = Task::model()->count(array('condition' => 'project_id=' . $model->id . ' AND status="Complete" AND deleted=0 and has_parent=0'));
$this->widget('booster.widgets.TbBreadcrumbs', array('links' => array('Projects' => array('project/index'), $model->name)));
$this->menu = array(array('label' => 'See my projects', 'url' => array('project/myProjects')), array('label' => 'See all projects', 'url' => array('project/index')), array('label' => 'Update this project', 'url' => array('project/update', 'id' => $model->id)), array('label' => 'Add task', 'url' => array('task/create', 'id' => $model->id)));
?>
<h2 class="page-header">Project Detail : <?php 
echo $model->name;
?>
</h2>
<?php 
$this->widget('booster.widgets.TbDetailView', array('id' => 'project-detail', 'data' => $model, 'attributes' => array('code', array('label' => 'Project Owner', 'value' => $project_owner->name), array('label' => 'Department', 'value' => $project_owner->department), 'description', array('label' => 'Start date', 'value' => date('d-m-Y', strtotime($model->start_date))), array('label' => 'Due date', 'value' => date('d-m-Y', strtotime($model->due_date))))));
?>
<hr>

<!-- Display current status -->
<h4>
    <b>Current Status :</b>
    <?php 
$model->status == "Upcoming" ? $this->widget('booster.widgets.TbLabel', array('context' => 'primary', 'label' => 'Upcoming')) : ($model->status == "Active" ? $this->widget('booster.widgets.TbLabel', array('context' => 'success', 'label' => 'Active')) : $this->widget('booster.widgets.TbLabel', array('context' => 'danger', 'label' => 'Expired')));
?>
</h4><hr>

<!-- Display current progress -->
<h4>
Example #20
0
 public function actionView()
 {
     if (!isset($_GET['id'])) {
         $this->_sendResponse(500, 'Error: Parameter <b>id</b> is missing');
     }
     switch ($_GET['model']) {
         case 'user':
             $model = User::model()->findByPk($_GET['id']);
             unset($model->password);
             break;
         case 'task':
             $model = Task::model()->findByPk($_GET['id']);
             break;
         default:
             $this->_sendResponse(501, Yii::t('tasklist', 'Mode "view" is not implemented for model "{model}"', array('{model}' => $_GET['model'])));
             exit;
     }
     if (is_null($model)) {
         $this->_sendResponse(404, Yii::t('tasklist', 'Couldn\'t find any {model} with id "{id}"', array('{model}' => $_GET['model'], '{id}' => $_GET['id'])));
     } else {
         $this->_sendResponse(200, CJSON::encode($model->attributes));
     }
 }
 /**
  * 取得特定時間(Taskid)資料
  */
 public function actionGetTeachJsonByID($id)
 {
     if (floor($id) == $id) {
         //檢查ID是否存在
         if (Task::model()->exists('TaskID = :TaskID', array(":TaskID" => $id))) {
             echo $this->getJson($id, '教學單位');
         } else {
             echo "error";
         }
     }
 }
Example #22
0
    ?>
/img/icon-team/rizki-new.jpg" data-description=""></option>
					<option value="cash" data-image="<?php 
    echo Yii::app()->request->baseUrl;
    ?>
/img/icon-team/yuda-new.jpg" data-description="" ></option>
					-->
				</select>
			</div>
	</td>
	<td >
			
		<select class="combo-t" style="display:inline">
		<?php 
    $task = Project::model()->findByPk($de[id])->task;
    foreach (Task::model()->findAll() as $d) {
        ?>
			<option <?php 
        if ($task == $d[id]) {
            echo "selected";
        }
        ?>
 value="<?php 
        echo $d->id;
        ?>
"><?php 
        echo $d->name;
        ?>
</option>
			<?php 
    }
Example #23
0
 public function getAllTasks()
 {
     $tasks = Task::model()->findAll();
     $tasks = CHtml::listData($tasks, 'id', 'name');
     return $tasks;
 }
Example #24
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
     $company = isset($_GET['company']) ? $_GET['company'] : null;
     if ($company !== 'all' && !ctype_digit($company)) {
         $company = 'all';
     }
     $consultant = isset($_GET['consultant']) ? $_GET['consultant'] : null;
     if ($consultant !== 'all' && $consultant !== 'me' && $consultant !== 'none' && !ctype_digit($consultant)) {
         $consultant = 'all';
     }
     if (Yii::app()->user->checkAccess(User::CONSULTANT) && $consultant !== 'none') {
         $consultant = 'me';
     }
     $priority = isset($_GET['priority']) ? $_GET['priority'] : null;
     if ($priority !== 'all' && $priority !== (string) Task::PRIORITY_HIGHEST && $priority !== (string) Task::PRIORITY_HIGH && $priority !== (string) Task::PRIORITY_MEDIUM && $priority !== (string) Task::PRIORITY_LOW && $priority !== (string) Task::PRIORITY_LOWEST) {
         $priority = 'all';
     }
     $project = isset($_GET['project']) ? $_GET['project'] : null;
     if ($project !== 'all' && !ctype_digit($project)) {
         $project = 'all';
     }
     $state = isset($_GET['state']) ? $_GET['state'] : null;
     if (Yii::app()->user->checkAccess(User::CLIENT) && $state === null) {
         $state = 'all';
     }
     if ($state !== 'all' && $state !== 'closed' && $state !== 'open' && $state !== 'overdue') {
         $state = 'open';
     }
     // criteria
     $criteria = new CDbCriteria();
     $criteria->group = "`t`.`id`";
     // required by together()
     $criteria->select = "`t`.dueDate, `t`.priority, `t`.status, `t`.title";
     //$criteria->select="`t`.`dueDate`, `t`.`priority`, `t`.`status`, `t`.`title`"; // uncomment in yii-1.1.2
     if ($jqGrid['searchField'] !== null && $jqGrid['searchString'] !== null && $jqGrid['searchOper'] !== null) {
         $field = array('dueDate' => "`t`.`dueDate`", 'priority' => "`t`.`priority`", 'status' => "`t`.`status`", 'title' => "`t`.`title`", 'company' => "`Task_Company`.`title`", 'project' => "`Task_Project`.`title`", 'consultant' => "`Task_Consultant`.`screenName`");
         $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("`Task_Company`.`id`=:companyId");
         $criteria->params[':companyId'] = $company;
     }
     if ($consultant !== 'all') {
         if ($consultant === 'none') {
             $criteria->addCondition("NOT EXISTS (SELECT 1 FROM `" . User2Task::model()->tableName() . "` `u2t` WHERE `u2t`.`taskId`=`t`.`id` AND `u2t`.`role`=:consultantRole)");
             $criteria->params[':consultantRole'] = User2Task::CONSULTANT;
         } else {
             if ($consultant === 'me') {
                 $criteria->addCondition("`Task_Consultant`.`id`=:consultantId");
                 $criteria->params[':consultantId'] = Yii::app()->user->id;
             } else {
                 $criteria->addCondition("`Task_Consultant`.`id`=:consultantId");
                 $criteria->params[':consultantId'] = $consultant;
             }
         }
     }
     if ($priority === (string) Task::PRIORITY_HIGHEST) {
         $criteria->addCondition("`t`.`priority`=:priorityHighest");
         $criteria->params[':priorityHighest'] = Task::PRIORITY_HIGHEST;
     } else {
         if ($priority === (string) Task::PRIORITY_HIGH) {
             $criteria->addCondition("`t`.`priority`=:priorityHigh");
             $criteria->params[':priorityHigh'] = Task::PRIORITY_HIGH;
         } else {
             if ($priority === (string) Task::PRIORITY_MEDIUM) {
                 $criteria->addCondition("`t`.`priority`=:priorityMedium");
                 $criteria->params[':priorityMedium'] = Task::PRIORITY_MEDIUM;
             } else {
                 if ($priority === (string) Task::PRIORITY_LOW) {
                     $criteria->addCondition("`t`.`priority`=:priorityLow");
                     $criteria->params[':priorityLow'] = Task::PRIORITY_LOW;
                 } else {
                     if ($priority === (string) Task::PRIORITY_LOWEST) {
                         $criteria->addCondition("`t`.`priority`=:priorityLowest");
                         $criteria->params[':priorityLowest'] = Task::PRIORITY_LOWEST;
                     }
                 }
             }
         }
     }
     if ($project !== 'all') {
         $criteria->addCondition("`Task_Project`.`id`=:projectId");
         $criteria->params[':projectId'] = $project;
     }
     if ($state === 'closed') {
         $criteria->addCondition("((`t`.`closeDate` IS NOT NULL AND TO_DAYS('" . MDate::formatToDb(time(), 'date') . "') <= TO_DAYS(`t`.`closeDate`))" . " OR `t`.`status`='" . Task::CANCELLED . "' OR `t`.`status`='" . Task::COMPLETED . "')");
     } else {
         if ($state === 'open') {
             $criteria->addCondition("((`t`.`closeDate` IS NULL OR TO_DAYS('" . MDate::formatToDb(time(), 'date') . "') < TO_DAYS(`t`.`closeDate`))" . " AND `t`.`status`!='" . Task::CANCELLED . "' AND `t`.`status`!='" . Task::COMPLETED . "')");
         } else {
             if ($state === 'overdue') {
                 $criteria->addCondition("(((`t`.`closeDate` IS NULL OR TO_DAYS('" . MDate::formatToDb(time(), 'date') . "') < TO_DAYS(`t`.`closeDate`))" . " AND `t`.`status`!='" . Task::CANCELLED . "' AND `t`.`status`!='" . Task::COMPLETED . "')" . " AND TO_DAYS('" . MDate::formatToDb(time(), 'date') . "') >= TO_DAYS(`t`.`dueDate`))");
             }
         }
     }
     if (Yii::app()->user->checkAccess(User::CLIENT)) {
         $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, 'Task_Company') !== false) {
         $with[] = 'company';
     }
     if (strpos($criteria->condition, 'Task_Consultant') !== false) {
         $with[] = 'allConsultant';
     }
     if (strpos($criteria->condition, 'Task_Project') !== false) {
         $with[] = 'project';
     }
     if (strpos($criteria->condition, 'Company_User2Company') !== false) {
         $with[] = 'company.allUser2Company';
     }
     if (count($with) >= 1) {
         $pages = new CPagination(Task::model()->with($with)->count($criteria));
     } else {
         $pages = new CPagination(Task::model()->count($criteria));
     }
     $pages->pageSize = $jqGrid['pageSize'] !== null ? $jqGrid['pageSize'] : self::GRID_PAGE_SIZE;
     $pages->applyLimit($criteria);
     // sort
     $sort = new CSort('Task');
     $sort->attributes = array('dueDate' => array('asc' => "`t`.`dueDate`", 'desc' => "`t`.`dueDate` desc", 'label' => Task::model()->getAttributeLabel('Due')), 'priority' => array('asc' => "`t`.`priority`", 'desc' => "`t`.`priority` desc", 'label' => Task::model()->getAttributeLabel('Pr')), 'status' => array('asc' => "`t`.`status`", 'desc' => "`t`.`status` desc", 'label' => Task::model()->getAttributeLabel('status')), 'title' => array('asc' => "`t`.`title`", 'desc' => "`t`.`title` desc", 'label' => Task::model()->getAttributeLabel('title')), 'company' => array('asc' => "`Task_Company`.`title`", 'desc' => "`Task_Company`.`title` desc", 'label' => Task::model()->getAttributeLabel('companyId')), 'consultant' => array('asc' => "`Task_Consultant`.`screenName`", 'desc' => "`Task_Consultant`.`screenName` desc", 'label' => User::model()->getAttributeLabel('screenName')), 'project' => array('asc' => "`Task_Project`.`title`", 'desc' => "`Task_Project`.`title` desc", 'label' => Task::model()->getAttributeLabel('projectId')));
     $sort->defaultOrder = "`t`.`closeDate` ASC, `t`.`priority` ASC, `t`.`dueDate` DESC";
     $sort->applyOrder($criteria);
     // find all
     $with = array('allConsultant' => array('select' => 'screenName'), '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, 'Task_Consultant') !== false || strpos($criteria->order, 'Task_Consultant') !== false || strpos($criteria->condition, 'Company_User2Company') !== false || strpos($criteria->order, 'Company_User2Company') !== false;
     if ($together) {
         $models = Task::model()->with($with)->together()->findAll($criteria);
     } else {
         $models = Task::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($model->getAttributeView('priority')), CHtml::encode($model->title), isset($model->allConsultant[0]->id) ? CHtml::link(CHtml::encode($model->allConsultant[0]->screenName), array('user/show', 'id' => $model->allConsultant[0]->id)) : '', CHtml::encode(MDate::format($model->dueDate, 'medium', null)), CHtml::encode($model->getAttributeView('status')), 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);
 }
Example #25
0
<div class="w3-detail-box ui-widget-content ui-corner-all">

<div class="w3-detail-row w3-first">
  <div class="w3-detail-row-label"><?php 
echo CHtml::encode(Task::model()->getAttributeLabel('companyId'));
?>
</div>
  <div class="w3-detail-row-value"><?php 
echo isset($model->task->company->id) ? CHtml::link(CHtml::encode($model->task->company->title), array('company/show', 'id' => $model->task->company->id)) : '';
?>
</div>
  <div class="clear">&nbsp;</div>
</div>
<div class="w3-detail-row">
  <div class="w3-detail-row-label"><?php 
echo CHtml::encode(Task::model()->getAttributeLabel('projectId'));
?>
</div>
  <div class="w3-detail-row-value"><?php 
echo isset($model->task->project->id) ? CHtml::link(CHtml::encode($model->task->project->title), array('project/show', 'id' => $model->task->project->id)) : '';
?>
</div>
  <div class="clear">&nbsp;</div>
</div>
<div class="w3-detail-row">
  <div class="w3-detail-row-label"><?php 
echo CHtml::encode($model->getAttributeLabel('taskId'));
?>
</div>
  <div class="w3-detail-row-value"><?php 
echo isset($model->task->id) ? CHtml::link(CHtml::encode($model->task->title), array('task/show', 'id' => $model->task->id)) : '';
Example #26
0
				<b style="font-size:20px">WORKING ON</b>
				<br>
				<p style="text-transform:uppercase" class="project-name" >
				<?php 
    // echo Yii::app()->user->id;
    $userid = Team::model()->find("username='******'")->id;
    // $userid;
    $pd = ProjectDetail::model()->find("worker_id='{$userid}'")->project_id;
    // echo $pd;
    echo Project::model()->findByPk($pd)->project_name;
    ?>
</p>
			</div>
			<div class="right">
			<?php 
    $liststatus = Task::model()->findAll();
    $id = Yii::app()->user->id;
    $idt = Team::model()->find("username = '******'")->id;
    $idp = Project::model()->find("worker={$idt} and status!=5")->id;
    $name = Project::model()->find("worker={$idt} and status!=5")->username;
    $ids = Project::model()->find("worker={$idt} and status!=5")->task;
    ?>
				<br>
				<b style="font-size:20px;display:none;">set by : (<?php 
    echo $name;
    ?>
) 
				</b>				
					
				<div class="btn view-project" >	
					<div class="status-work" style="visibility:hidden">
Example #27
0
 public function actionCheckTop()
 {
     if ($task = Task::model()->delayed()->find()) {
         $task->goTask();
         Yii::log('Task ' . $task->type . ' Anketa ' . $task->id_user . ' ' . date('d.m.Y H:i:s', $task->time_task), 'info', 'payment');
     } else {
         echo ';';
     }
 }
Example #28
0
File: row.php Project: Dvionst/vvfy
                    }
                    ?>
 value="<?php 
                    echo $x->id;
                    ?>
"><?php 
                    echo $x->name;
                    ?>
</option>
			<?php 
                }
                ?>
		</select>
		<?php 
            } else {
                echo Task::model()->findByPk($d->task_id)->name;
            }
            ?>

	</td>
	<td style="width:60px;">	
	<div title="<?php 
            echo $d->progres . "% ";
            ?>
" style="margin-bottom:-10px;width:50px" class="progresbar pro-bar-container color-belize-hole">
		
		<div class="pro-bar bar-<?php 
            echo $d->progres;
            ?>
 color-peter-river" data-pro-bar-percent="100" data-pro-bar-delay="200">
			<div class="pro-bar-candy candy-ltr"></div>
Example #29
0
 /**
  * Grid of all models.
  */
 public function actionGrid()
 {
     // 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 ($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 AND TO_DAYS('" . MDate::formatToDb(time(), 'date') . "') <= TO_DAYS(`t`.`closeDate`))");
     } 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 = 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);
     }
     // filters data
     $filters = array('company' => $company, 'priority' => $priority, 'state' => $state);
     $allCompany = array(array('text' => Yii::t('t', 'All'), 'url' => Yii::app()->createUrl($this->id . '/' . $this->action->id, array_merge($filters, array('company' => 'all'))), 'active' => $company === 'all'));
     $companyLinkText = $company === 'all' ? Yii::t('t', 'All companies') : '&nbsp;';
     $criteria = new CDbCriteria();
     $criteria->select = "`t`.`id`, `t`.`title`, COUNT(DISTINCT `project`.`id`) as countProject";
     if (User::isConsultant()) {
         $criteria->join = "INNER JOIN `" . Company2Project::model()->tableName() . "` `c2p` ON `c2p`.`companyId`=`t`.`id`" . " INNER JOIN `" . Project::model()->tableName() . "` `project` ON `project`.`id`=`c2p`.`projectId`" . " INNER JOIN `" . Task::model()->tableName() . "` `task` ON `task`.`projectId`=`project`.`id`" . " INNER JOIN `" . User2Task::model()->tableName() . "` `u2t` ON `u2t`.`taskId`=`task`.`id`";
         $criteria->condition = "`u2t`.`userId`=:consultantId AND `u2t`.`role`=:consultantRole";
         $criteria->params[':consultantId'] = Yii::app()->user->id;
         $criteria->params[':consultantRole'] = User2Task::CONSULTANT;
     } else {
         if (User::isClient()) {
             $criteria->join = "INNER JOIN `" . Company2Project::model()->tableName() . "` `c2p` ON `c2p`.`companyId`=`t`.`id`" . " INNER JOIN `" . Project::model()->tableName() . "` `project` ON `project`.`id`=`c2p`.`projectId`" . " INNER JOIN `" . User2Company::model()->tableName() . "` `u2c` ON `u2c`.`companyId`=`t`.`id`";
             $criteria->condition = "`u2c`.`userId`=:clientId AND `u2c`.`position`=:clientPosition";
             $criteria->params[':clientId'] = Yii::app()->user->id;
             $criteria->params[':clientPosition'] = Company::OWNER;
         } else {
             $criteria->join = "INNER JOIN `" . Company2Project::model()->tableName() . "` `c2p` ON `c2p`.`companyId`=`t`.`id`" . " INNER JOIN `" . Project::model()->tableName() . "` `project` ON `project`.`id`=`c2p`.`projectId`";
         }
     }
     $criteria->group = "`t`.`id`";
     $criteria->order = "`t`.`title` ASC";
     $criteria->limit = 3000;
     foreach (Company::model()->findAll($criteria) as $model) {
         $allCompany[] = array('text' => CHtml::encode($model->title), 'url' => Yii::app()->createUrl($this->id . '/' . $this->action->id, array_merge($filters, array('company' => $model->id))), 'active' => $company === (string) $model->id);
         $i = count($allCompany) - 1;
         if ($allCompany[$i]['text'] === '') {
             $allCompany[$i]['text'] = Yii::t('t', '[no title]');
         }
         $allCompany[$i]['text'] .= ' (' . $model->countProject . ')';
         if ($company === (string) $model->id) {
             $companyLinkText = $model->title === '' ? Yii::t('t', '[no title]') : $model->title;
         }
     }
     $allPriority = array(array('text' => Yii::t('t', 'All'), 'url' => Yii::app()->createUrl($this->id . '/' . $this->action->id, array_merge($filters, array('priority' => 'all'))), 'active' => $priority === 'all'), array('text' => Yii::t('t', 'Highest[priority]'), 'url' => Yii::app()->createUrl($this->id . '/' . $this->action->id, array_merge($filters, array('priority' => Project::PRIORITY_HIGHEST))), 'active' => $priority === (string) Project::PRIORITY_HIGHEST), array('text' => Yii::t('t', 'High[priority]'), 'url' => Yii::app()->createUrl($this->id . '/' . $this->action->id, array_merge($filters, array('priority' => Project::PRIORITY_HIGH))), 'active' => $priority === (string) Project::PRIORITY_HIGH), array('text' => Yii::t('t', 'Medium[priority]'), 'url' => Yii::app()->createUrl($this->id . '/' . $this->action->id, array_merge($filters, array('priority' => Project::PRIORITY_MEDIUM))), 'active' => $priority === (string) Project::PRIORITY_MEDIUM), array('text' => Yii::t('t', 'Low[priority]'), 'url' => Yii::app()->createUrl($this->id . '/' . $this->action->id, array_merge($filters, array('priority' => Project::PRIORITY_LOW))), 'active' => $priority === (string) Project::PRIORITY_LOW), array('text' => Yii::t('t', 'Lowest[priority]'), 'url' => Yii::app()->createUrl($this->id . '/' . $this->action->id, array_merge($filters, array('priority' => Project::PRIORITY_LOWEST))), 'active' => $priority === (string) Project::PRIORITY_LOWEST));
     switch ($priority) {
         case 'all':
             $priorityLinkText = Yii::t('t', 'All priorities');
             break;
         case (string) Project::PRIORITY_HIGHEST:
             $priorityLinkText = Yii::t('t', 'Highest[priority]');
             break;
         case (string) Project::PRIORITY_HIGH:
             $priorityLinkText = Yii::t('t', 'High[priority]');
             break;
         case (string) Project::PRIORITY_MEDIUM:
             $priorityLinkText = Yii::t('t', 'Medium[priority]');
             break;
         case (string) Project::PRIORITY_LOW:
             $priorityLinkText = Yii::t('t', 'Low[priority]');
             break;
         case (string) Project::PRIORITY_LOWEST:
             $priorityLinkText = Yii::t('t', 'Lowest[priority]');
             break;
         default:
             $priorityLinkText = '&nbsp;';
     }
     $allState = array(array('text' => Yii::t('t', 'All'), 'url' => Yii::app()->createUrl($this->id . '/' . $this->action->id, array_merge($filters, array('state' => 'all'))), 'active' => $state === 'all'), array('text' => Yii::t('t', 'Open[projects]'), 'url' => Yii::app()->createUrl($this->id . '/' . $this->action->id, array_merge($filters, array('state' => 'open'))), 'active' => $state === 'open'), array('text' => Yii::t('t', 'Closed[projects]'), 'url' => Yii::app()->createUrl($this->id . '/' . $this->action->id, array_merge($filters, array('state' => 'closed'))), 'active' => $state === 'closed'));
     switch ($state) {
         case 'all':
             $stateLinkText = Yii::t('t', 'All states[project]');
             break;
         case 'closed':
             $stateLinkText = Yii::t('t', 'Closed[projects]');
             break;
         case 'open':
             $stateLinkText = Yii::t('t', 'Open[projects]');
             break;
             break;
         default:
             $stateLinkText = '&nbsp;';
     }
     // rows for the static grid
     $gridRows = array();
     foreach ($models as $model) {
         $gridRows[] = array(array('content' => isset($model->allCompany[0]->id) ? CHtml::link(CHtml::encode($model->allCompany[0]->title), array('company/show', 'id' => $model->allCompany[0]->id)) : ''), array('content' => CHtml::encode($model->title)), array('align' => 'right', 'content' => CHtml::encode($model->hourlyRate)), array('content' => CHtml::encode($model->getAttributeView('priority'))), array('align' => 'right', 'content' => CHtml::encode(MDate::format($model->openDate, 'medium', null)), 'title' => CHtml::encode(MDate::format($model->openDate, 'full', null))), array('align' => 'right', 'content' => CHtml::encode(MDate::format($model->closeDate, 'medium', null)), 'title' => CHtml::encode(MDate::format($model->closeDate, 'full', null))), array('content' => 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')))));
     }
     // render the view file
     $this->render($this->action->id, array('models' => $models, 'pages' => $pages, 'sort' => $sort, 'company' => $company, 'priority' => $priority, 'state' => $state, 'filters' => $filters, 'allCompany' => $allCompany, 'companyLinkText' => $companyLinkText, 'allPriority' => $allPriority, 'priorityLinkText' => $priorityLinkText, 'allState' => $allState, 'stateLinkText' => $stateLinkText, 'gridRows' => $gridRows));
 }
Example #30
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
     $company = isset($_GET['company']) ? $_GET['company'] : null;
     if ($company !== 'all' && !ctype_digit($company)) {
         $company = 'all';
     }
     $consultant = isset($_GET['consultant']) ? $_GET['consultant'] : null;
     if ($consultant !== 'all' && $consultant !== 'me' && !ctype_digit($consultant)) {
         $consultant = 'all';
     }
     if (Yii::app()->user->checkAccess(User::CONSULTANT)) {
         $consultant = 'me';
     }
     $manager = isset($_GET['manager']) ? $_GET['manager'] : null;
     if ($manager !== 'all' && !ctype_digit($manager)) {
         $manager = 'all';
     }
     $project = isset($_GET['project']) ? $_GET['project'] : null;
     if ($project !== 'all' && !ctype_digit($project)) {
         $project = 'all';
     }
     $task = isset($_GET['task']) ? $_GET['task'] : null;
     if ($task !== 'all' && !ctype_digit($task)) {
         $task = 'all';
     }
     // criteria
     $criteria = new CDbCriteria();
     $criteria->group = "`t`.`id`";
     // required by together()
     $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
     if ($jqGrid['searchField'] !== null && $jqGrid['searchString'] !== null && $jqGrid['searchOper'] !== null) {
         $field = array('billedMinute' => "`t`.`billedMinute`", 'spentMinute' => "`t`.`spentMinute`", 'timeDate' => "`t`.`timeDate`", 'title' => "`t`.`title`", 'consultant' => "`Time_Consultant`.`screenName`", 'manager' => "`Time_Manager`.`screenName`", 'task' => "`Time_Task`.`title`", 'company' => "`Task_Company`.`title`", 'project' => "`Task_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("`Task_Company`.`id`=:companyId");
         $criteria->params[':companyId'] = $company;
     }
     if ($consultant !== 'all') {
         if ($consultant === 'me') {
             $criteria->addCondition("`Time_Consultant`.`id`=:consultantId");
             $criteria->params[':consultantId'] = Yii::app()->user->id;
         } else {
             $criteria->addCondition("`Time_Consultant`.`id`=:consultantId");
             $criteria->params[':consultantId'] = $consultant;
         }
     }
     if ($manager !== 'all') {
         $criteria->addCondition("`Time_Manager`.`id`=:managerId");
         $criteria->params[':managerId'] = $manager;
     }
     if ($project !== 'all') {
         $criteria->addCondition("`Task_Project`.`id`=:projectId");
         $criteria->params[':projectId'] = $project;
     }
     if ($task !== 'all') {
         $criteria->addCondition("`Time_Task`.`id`=:taskId");
         $criteria->params[':taskId'] = $task;
     }
     if (Yii::app()->user->checkAccess(User::CLIENT)) {
         $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, 'Task_Company') !== false) {
         $with[] = 'task.company';
     }
     if (strpos($criteria->condition, 'Time_Consultant') !== false) {
         $with[] = 'consultant';
     }
     if (strpos($criteria->condition, 'Time_Manager') !== false) {
         $with[] = 'manager';
     }
     if (strpos($criteria->condition, 'Task_Project') !== false) {
         $with[] = 'task.project';
     }
     if (strpos($criteria->condition, 'Time_Task') !== false) {
         $with[] = 'task';
     }
     if (strpos($criteria->condition, 'Company_User2Company') !== false) {
         $with[] = 'task.company.allUser2Company';
     }
     if (count($with) >= 1) {
         $pages = new CPagination(Time::model()->with($with)->count($criteria));
     } else {
         $pages = new CPagination(Time::model()->count($criteria));
     }
     $pages->pageSize = $jqGrid['pageSize'] !== null ? $jqGrid['pageSize'] : self::GRID_PAGE_SIZE;
     $pages->applyLimit($criteria);
     // sort
     $sort = new CSort('Time');
     $sort->attributes = array('billedMinute' => array('asc' => "`t`.`billedMinute`", 'desc' => "`t`.`billedMinute` desc", 'label' => Time::model()->getAttributeLabel('Bld')), 'spentMinute' => array('asc' => "`t`.`spentMinute`", 'desc' => "`t`.`spentMinute` desc", 'label' => Time::model()->getAttributeLabel('Spt')), 'timeDate' => array('asc' => "`t`.`timeDate`", 'desc' => "`t`.`timeDate` desc", 'label' => Time::model()->getAttributeLabel('Date')), 'title' => array('asc' => "`t`.`title`", 'desc' => "`t`.`title` desc", 'label' => Time::model()->getAttributeLabel('title')), 'consultant' => array('asc' => "`Time_Consultant`.`screenName`", 'desc' => "`Time_Consultant`.`screenName` desc", 'label' => Time::model()->getAttributeLabel('consultantId')), 'manager' => array('asc' => "`Time_Manager`.`screenName`", 'desc' => "`Time_Manager`.`screenName` desc", 'label' => Time::model()->getAttributeLabel('managerId')), 'task' => array('asc' => "`Time_Task`.`title`", 'desc' => "`Time_Task`.`title` desc", 'label' => Time::model()->getAttributeLabel('taskId')), 'company' => array('asc' => "`Task_Company`.`title`", 'desc' => "`Task_Company`.`title` desc", 'label' => Task::model()->getAttributeLabel('companyId')), 'project' => array('asc' => "`Task_Project`.`title`", 'desc' => "`Task_Project`.`title` desc", 'label' => Task::model()->getAttributeLabel('projectId')));
     $sort->defaultOrder = "`t`.`timeDate` DESC, `t`.`createTime` DESC";
     $sort->applyOrder($criteria);
     // find all
     $with = array('consultant' => array('select' => 'screenName'), 'manager' => array('select' => 'screenName'), 'task' => array('select' => 'title'), 'task.company' => array('select' => 'title'), 'task.project' => array('select' => 'title'));
     if (strpos($criteria->condition, 'Company_User2Company') !== false) {
         $with['task.company.allUser2Company'] = array('select' => 'id');
     }
     $together = strpos($criteria->condition, 'Company_User2Company') !== false;
     if ($together) {
         $models = Time::model()->with($with)->together()->findAll($criteria);
     } else {
         $models = Time::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->task->company->id) ? CHtml::link(CHtml::encode($model->task->company->title), array('company/show', 'id' => $model->task->company->id)) : '', isset($model->task->project->id) ? CHtml::link(CHtml::encode($model->task->project->title), array('project/show', 'id' => $model->task->project->id)) : '', isset($model->task->id) ? CHtml::link(CHtml::encode($model->task->title), array('task/show', 'id' => $model->task->id)) : '', isset($model->manager->id) ? CHtml::link(CHtml::encode($model->manager->screenName), array('user/show', 'id' => $model->manager->id)) : '', isset($model->consultant->id) ? CHtml::link(CHtml::encode($model->consultant->screenName), array('user/show', 'id' => $model->consultant->id)) : '', CHtml::encode(MDate::format($model->timeDate, 'medium', null)), CHtml::encode($model->getAttributeView('spentMinute')), CHtml::encode($model->getAttributeView('billedMinute')), CHtml::encode($model->title), Yii::app()->user->checkAccess('time/show') ? 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);
 }