| Current Path : /var/www/html/project/controllers/ |
| Current File : /var/www/html/project/controllers/ProjectsController.php |
<?php
namespace app\controllers;
use Yii;
use app\models\Projects;
use app\models\ProjectsSearch;
use yii\web\Controller;
use yii\web\NotFoundHttpException;
use yii\filters\VerbFilter;
use yii\helpers\Url;
use app\models\Log;
use app\models\LogSearch;
use app\models\Products;
use app\models\Tasks;
use app\models\Adhoc;
use app\models\User;
use yii\helpers\Html;
use yii\helpers\ArrayHelper;
use app\models\ParamList;
use app\models\Pic;
/**
* ProjectsController implements the CRUD actions for Projects model.
*/
class ProjectsController extends Controller {
/**
* {@inheritdoc}
*/
public function behaviors() {
return [
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'delete' => ['post'],
],
],
'access' => [
'class' => \yii\filters\AccessControl::className(),
'only' => ['index', 'create', 'update', 'view'],
'rules' => [
// allow authenticated users
[
'allow' => true,
'roles' => ['@'],
],
// everything else is denied
],
],
];
}
/**
* Lists all Projects models.
* @return mixed
*/
public function actionIndex() {
$searchModel = new ProjectsSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
return $this->render('index', ['searchModel' => $searchModel, 'dataProvider' => $dataProvider,]);
}
/**
* Displays a single Projects model.
* @param integer $id
* @return mixed
* @throws NotFoundHttpException if the model cannot be found
*/
public function actionView($id) {
return $this->render('view', [
'model' => $this->findModel($id),
]);
}
/**
* Creates a new Projects model.
* If creation is successful, the browser will be redirected to the 'view' page.
* @return mixed
*/
public function actionCreate() {
$model = new Projects();
$model->start_dt = date("Y-m-d");
$model->end_dt = date('Y-m-d', strtotime($model->start_dt . ' + 60 days'));
$model->created_dt = date("Y-m-d H:i:s");
$model->created_by = Yii::$app->user->identity->id;
$model->updated_dt = date("Y-m-d H:i:s");
$model->updated_by = Yii::$app->user->identity->id;
$model->status = 1;
$model->progress = 'Pending';
if ($model->load(Yii::$app->request->post()) && $model->save()) {
$Log = new Log();
$Log->insertlog('project', 'create', $model->id);
if (!empty($_POST['new_pic_id'])) {
foreach ($_POST['new_pic_id'] as $pic) {
$modelPic = new Pic();
$modelPic->status = 1;
$modelPic->project_id = $model->id;
$modelPic->role = $_POST['new_pic_role_' . $pic];
$modelPic->user_id = $_POST['new_pic_user_' . $pic];
$modelPic->created_dt = date("Y-m-d H:i:s");
$modelPic->created_by = Yii::$app->user->identity->id;
$modelPic->updated_dt = date("Y-m-d H:i:s");
$modelPic->updated_by = Yii::$app->user->identity->id;
$modelPic->save();
$Log->insertlog('pic', 'create', $modelPic->id);
}
}
if (!empty($_POST['phaseno'])) {
$countphase = 0;
foreach ($_POST['phaseno'] as $phaseno) {
if (!empty($_POST['phase_checkbox_' . $phaseno])) {
$countphase++;
$modelTask1 = new Tasks();
$modelTask1->project_id = $model->id;
$modelTask1->task_type = 'phase';
$modelTask1->data_id = $phaseno;
$modelTask1->task_no = $_POST['phase_sort_' . $phaseno];
$modelTask1->task_full_no = $_POST['phase_sort_' . $phaseno];
$modelTask1->task_name = $_POST['phase_name_' . $phaseno];
$modelTask1->sort = $countphase;
$modelTask1->task_status = 'pending';
$modelTask1->deleted_status = '0';
$modelTask1->created_dt = date("Y-m-d H:i:s");
$modelTask1->created_by = Yii::$app->user->identity->id;
$modelTask1->updated_dt = date("Y-m-d H:i:s");
$modelTask1->updated_by = Yii::$app->user->identity->id;
$modelTask1->save();
}
}
}
if (!empty($_POST['taskno'])) {
$counttask = 0;
foreach ($_POST['taskno'] as $taskno) {
if (!empty($_POST['task_checkbox_' . $taskno])) {
$counttask++;
$parent_id = '';
$parent_no = '';
if (($modelParent = Tasks::findOne(['project_id' => $model->id, 'task_type' => 'phase', 'data_id' => $_POST['task_phaseid_' . $taskno]])) !== null) {
$parent_id = $modelParent->id;
$parent_no = $modelParent->task_no;
}
$modelTask = new Tasks();
$modelTask->project_id = $model->id;
$modelTask->task_type = 'step';
$modelTask->parent_id = $parent_id;
$modelTask->data_id = $_POST['task_id_' . $taskno];
$modelTask->task_no = $_POST['task_sort_' . $taskno];
$modelTask->task_full_no = $parent_no . '.' . $modelTask->task_no;
$modelTask->task_name = $_POST['task_name_' . $taskno];
$modelTask->sort = $counttask;
if (!empty($_POST['task_assignto_' . $taskno]))
$modelTask->assign_to = implode(',', $_POST['task_assignto_' . $taskno]);
$modelTask->duration = $_POST['task_duration_' . $taskno];
$modelTask->start_dt = $_POST['task_startdt_' . $taskno];
$modelTask->end_dt = $_POST['task_enddt_' . $taskno];
$modelTask->track_type = $_POST['task_tracktype_' . $taskno];
$modelTask->task_status = 'pending';
$modelTask->deleted_status = '0';
$modelTask->created_dt = date("Y-m-d H:i:s");
$modelTask->created_by = Yii::$app->user->identity->id;
$modelTask->updated_dt = date("Y-m-d H:i:s");
$modelTask->updated_by = Yii::$app->user->identity->id;
$modelTask->save();
}
}
}
$this->getView()->registerJs("swal.fire({
position: 'center-center',type: 'success',title: 'Project have been created.',showConfirmButton: false,timer: 5000,
}).then(function(result){window.location = '" . Url::to(['projects/index', 'id' => $model->id]) . "';});");
}
return $this->render('create', ['model' => $model,]);
}
/**
* Updates an existing Projects model.
* If update is successful, the browser will be redirected to the 'view' page.
* @param integer $id
* @return mixed
* @throws NotFoundHttpException if the model cannot be found
*/
public function actionUpdate($id) {
$Log = new Log();
$model = $this->findModel($id);
$model->updated_dt = date("Y-m-d H:i:s");
$model->updated_by = Yii::$app->user->identity->id;
if ($model->load(Yii::$app->request->post()) && $model->save()) {
$Log->insertlog('project', 'update', $model->id);
if (!empty($_POST['pic_id'])) {
foreach ($_POST['pic_id'] as $pic_id) {
if (($modelPic = Pic::findOne($pic_id)) !== null) {
$modelPic->role = $_POST['pic_role_' . $pic_id];
$modelPic->user_id = $_POST['pic_user_' . $pic_id];
$modelPic->updated_dt = date("Y-m-d H:i:s");
$modelPic->updated_by = Yii::$app->user->identity->id;
if ($modelPic->save(false)) {
$Log->insertlog('pic', 'update', $modelPic->id);
}
}
}
}
if (!empty($_POST['new_pic_id'])) {
foreach ($_POST['new_pic_id'] as $pic) {
$modelPic = new Pic();
$modelPic->status = 1;
$modelPic->project_id = $model->id;
$modelPic->role = $_POST['new_pic_role_' . $pic];
$modelPic->user_id = $_POST['new_pic_user_' . $pic];
$modelPic->created_dt = date("Y-m-d H:i:s");
$modelPic->created_by = Yii::$app->user->identity->id;
$modelPic->updated_dt = date("Y-m-d H:i:s");
$modelPic->updated_by = Yii::$app->user->identity->id;
$modelPic->save();
$Log->insertlog('pic', 'create', $modelPic->id);
}
}
if (!empty($_POST['taskid'])) {
foreach ($_POST['taskid'] as $taskid) {
if (($modelTask = Tasks::findOne($taskid)) !== null) {
if ($modelTask->task_type == 'step') {
$modelTask->task_no = $_POST['task_no_' . $taskid];
$modelTask->sort = $modelTask->task_no;
$modelTask->task_name = $_POST['task_name_' . $taskid];
}
$parent_no = '';
if (($modelParent = Tasks::findOne($modelTask->parent_id)) !== null) {
$parent_no = $modelParent->task_full_no;
}
$modelTask->task_full_no = $parent_no . '.' . $modelTask->task_no;
if (!empty($_POST['task_assignto_' . $taskid]))
$modelTask->assign_to = implode(',', $_POST['task_assignto_' . $taskid]);
$modelTask->duration = $_POST['task_duration_' . $taskid];
$modelTask->start_dt = $_POST['task_startdt_' . $taskid];
$modelTask->end_dt = $_POST['task_enddt_' . $taskid];
$modelTask->actual_start_dt = $_POST['task_actual_start_dt_' . $taskid];
$modelTask->actual_end_dt = $_POST['task_actual_end_dt_' . $taskid];
$modelTask->percentage_complete = $_POST['task_percentage_complete_' . $taskid];
$modelTask->updated_dt = date("Y-m-d H:i:s");
$modelTask->updated_by = Yii::$app->user->identity->id;
$modelTask->save();
}
}
}
//new task
if (!empty($_POST['newtaskno'])) {
foreach ($_POST['newtaskno'] as $taskno) {
$parent_id = '';
$parent_no = '';
if (($modelParent = Tasks::findOne(['project_id' => $model->id, 'task_type' => 'phase', 'data_id' => $_POST['newtask_phaseid_' . $taskno]])) !== null) {
$parent_id = $modelParent->id;
$parent_no = $modelParent->task_no;
}
$modelTask = new Tasks();
$modelTask->project_id = $model->id;
$modelTask->task_type = 'step';
$modelTask->parent_id = $parent_id;
$modelTask->data_id = $_POST['newtask_id_' . $taskno];
$modelTask->task_no = $_POST['newtask_sort_' . $taskno];
$modelTask->task_full_no = $parent_no . '.' . $modelTask->task_no;
$modelTask->task_name = $_POST['newtask_name_' . $taskno];
$modelTask->sort = $_POST['newtask_sort_' . $taskno];
$modelTask->assign_to = implode(',', $_POST['newtask_assignto_' . $taskno]);
$modelTask->duration = $_POST['newtask_duration_' . $taskno];
$modelTask->start_dt = $_POST['newtask_startdt_' . $taskno];
$modelTask->end_dt = $_POST['newtask_enddt_' . $taskno];
$modelTask->track_type = $_POST['newtask_tracktype_' . $taskno];
$modelTask->task_status = 'pending';
$modelTask->deleted_status = '0';
$modelTask->created_dt = date("Y-m-d H:i:s");
$modelTask->created_by = Yii::$app->user->identity->id;
$modelTask->updated_dt = date("Y-m-d H:i:s");
$modelTask->updated_by = Yii::$app->user->identity->id;
$modelTask->save();
}
}
//add adhoc
if (!empty($_POST['newadhocid'])) {
foreach ($_POST['newadhocid'] as $newadhocid) {
$modelNewAdhoc = new Tasks();
$modelNewAdhoc->project_id = $model->id;
$modelNewAdhoc->sort = $_POST['new_adhoc_sort_' . $newadhocid];
$modelNewAdhoc->task_name = $_POST['new_adhoc_task_name_' . $newadhocid];
$modelNewAdhoc->assign_to = $_POST['new_adhoc_assign_to_' . $newadhocid];
$modelNewAdhoc->duration = $_POST['new_adhoc_duration_' . $newadhocid];
$modelNewAdhoc->start_dt = $_POST['new_adhoc_start_dt_' . $newadhocid];
$modelNewAdhoc->end_dt = $_POST['new_adhoc_end_dt_' . $newadhocid];
$modelNewAdhoc->created_dt = date("Y-m-d H:i:s");
$modelNewAdhoc->created_by = Yii::$app->user->identity->id;
$modelNewAdhoc->updated_dt = date("Y-m-d H:i:s");
$modelNewAdhoc->updated_by = Yii::$app->user->identity->id;
$modelNewAdhoc->task_type = 'adhoc';
$modelNewAdhoc->task_status = 'pending';
$modelNewAdhoc->deleted_status = '0';
$modelNewAdhoc->save(false);
}
}
//update adhoc
if (!empty($_POST['adhocid'])) {
foreach ($_POST['adhocid'] as $adhocid) {
if (($modelAdhoc = Tasks::findOne($adhocid)) !== null) {
$modelAdhoc->sort = $_POST['adhoc_sort_' . $adhocid];
$modelAdhoc->task_name = $_POST['adhoc_task_name_' . $adhocid];
$modelAdhoc->assign_to = $_POST['adhoc_assign_to_' . $adhocid];
$modelAdhoc->duration = $_POST['adhoc_duration_' . $adhocid];
$modelAdhoc->start_dt = $_POST['adhoc_start_dt_' . $adhocid];
$modelAdhoc->end_dt = $_POST['adhoc_end_dt_' . $adhocid];
$modelAdhoc->actual_start_dt = $_POST['adhoc_actual_start_dt_' . $adhocid];
$modelAdhoc->actual_end_dt = $_POST['adhoc_actual_end_dt_' . $adhocid];
$modelAdhoc->percentage_complete = $_POST['adhoc_percentage_complete_' . $adhocid];
$modelAdhoc->updated_dt = date("Y-m-d H:i:s");
$modelAdhoc->updated_by = Yii::$app->user->identity->id;
$modelAdhoc->save(false);
}
}
}
$this->getView()->registerJs("swal.fire({
position: 'center-center',type: 'success',title: 'Data has been saved',showConfirmButton: false,timer: 1500,
}).then(function(result){window.location = '" . Url::to(['projects/index']) . "';});");
}
return $this->render('update', ['model' => $model,]);
}
/**
* Deletes an existing Projects model.
* If deletion is successful, the browser will be redirected to the 'index' page.
* @param integer $id
* @return mixed
* @throws NotFoundHttpException if the model cannot be found
*/
public function actionDelete() {
$id = $_POST['id'];
$status = 'failed';
$model = Projects::findOne($id);
if (!empty($model)) {
$model->status = 0;
if ($model->save(false)) {
$Log = new Log();
$Log->insertlog('project', 'delete', $model->id);
$status = 'success';
}
}
return $status;
}
/**
* Finds the Projects model based on its primary key value.
* If the model is not found, a 404 HTTP exception will be thrown.
* @param integer $id
* @return Projects the loaded model
* @throws NotFoundHttpException if the model cannot be found
*/
protected function findModel($id) {
if (($model = Projects::findOne($id)) !== null) {
return $model;
}
throw new NotFoundHttpException('The requested page does not exist.');
}
public function actionCalcprojectdue() {
return date('Y-m-d', strtotime($_POST['start_dt'] . ' + 60 days'));
}
public function actionCalctaskend() {
$duration = $_POST['duration'];
if ($duration == '0.5')
$duration = 1;
$end_date = date('Y-m-d', strtotime($_POST['start_dt'] . ' ' . ($duration - 1) . ' weekdays'));
$next_start_date = date('Y-m-d', strtotime($end_date . ' 1 weekdays'));
return $end_date . '<--->' . $next_start_date;
}
public function actionAddadhoc() {
$output = '';
$no = $_POST['countaddhoc'];
$ParamList = new ParamList();
if (($model = Adhoc::findOne($_POST['selected_adhoc'])) !== null) {
$output = '<tr>
<td class="text-center align-middle">
<input type="text" class="form-control adhocinput" name="adhoc_no_' . $no . '" value="' . $no . '">
<input type="hidden" value="' . $no . '" name="adhoc[]">
<input type="hidden" value="' . $model->id . '" name="adhoc_dataid_' . $no . '">
<input type="hidden" value="' . strtolower($model->assignto) . '" id="adhoc_usertype_' . $no . '">
</td>
<td><input type="text" class="form-control adhocinput" name="adhoc_name_' . $no . '" value="' . $model->name . '"></td>
<td>' . Html::dropDownList('adhoc_freq_' . $no, $model->freq, $ParamList->getparamlist2(36), [
'class' => 'form-control kt-selectpicker',
'id' => 'adhoc_freq_' . $no]) . '</td>
<td>' . Html::dropDownList('adhoc_assignto_' . $no, NULL, ArrayHelper::map(User::find()->where(['status' => '1'])->orderBy(['name' => SORT_ASC])->all(), 'id', 'name'), [
'class' => 'form-control kt-selectpicker',
'id' => 'adhoc_assignto_' . $no]) . '</td>
<td><input type="text" class="form-control adhocinput" onchange="updateadhocenddate(' . $no . ')" name="adhoc_duration_' . $no . '" id="adhoc_duration_' . $no . '"></td>
<td><input type="text" id="adhoc_startdt_' . $no . '" onchange="updateadhocenddate(' . $no . ')" name="adhoc_startdt_' . $no . '" class="form-control datepicker adhocinput" readonly="" style="width:110px;"></td>
<td><input type="text" id="adhoc_enddt_' . $no . '" name="adhoc_enddt_' . $no . '" class="form-control adhocinput" readonly=""></td>
</tr>';
}
return $output;
}
}