| Current Path : /var/www/html/dyna-project/views/projects/ |
| Current File : /var/www/html/dyna-project/views/projects/update.php |
<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
use app\models\User;
use yii\helpers\ArrayHelper;
use app\models\Tasks;
use app\models\ParamList;
use app\models\Pic;
use app\models\Templates;
$ParamList = new ParamList();
?>
<div class="kt-subheader kt-grid__item" id="kt_subheader">
<div class="kt-container ">
<div class="kt-subheader__main">
<h3 class="kt-subheader__title">Manage Projects</h3>
<div class="kt-subheader__breadcrumbs">
<span class="kt-subheader__breadcrumbs-separator"></span>
<span class="kt-subheader__breadcrumbs-link"> Manage Projects</span>
<span class="kt-subheader__breadcrumbs-separator"></span>
<span class="kt-subheader__breadcrumbs-link"> Update Project</span>
</div>
</div>
</div>
</div>
<div class="projects-create">
<div class="projects-form">
<div class="kt-container kt-grid__item kt-grid__item--fluid">
<?php $form = ActiveForm::begin(); ?>
<div class="row">
<div class="col-sm-4">
<div class="kt-portlet kt-portlet--height-fluid">
<div class="kt-portlet__head">
<div class="kt-portlet__head-label">
<h3 class="kt-portlet__head-title">Project Details</h3>
</div>
</div>
<div class="kt-portlet__body">
<div class="kt-portlet__content">
<div class='form-group-custom'>
<?php
echo $form->field($model, 'template_id', ['template' => "{label}
{input}{error}"])
->dropDownList(ArrayHelper::map(Templates::find()->where(['status' => '1'])->orderBy(['name' => SORT_ASC])->all(), 'id', 'name'), [
'prompt' => '-- Please choose --', 'class' => 'form-control kt-selectpicker', 'disabled' => true]);
?>
</div>
<div class='form-group-custom'>
<?=
$form->field($model, 'name', ['template' =>
"{label}<span class='required'>*</span>{input}
<span class='kt-font-danger font-weight-bold'>{error}</span>"])->textInput(['maxlength' => true]);
?>
</div>
<div class='form-group-custom'>
<?php
echo $form->field($model, 'cat', ['template' => "{label}
{input}{error}"])
->dropDownList($ParamList->getparamlist2(37), ['prompt' => '-- Please choose --', 'class' => 'form-control']);
?>
</div>
<div class='form-group-custom'>
<?=
$form->field($model, 'start_dt', [
'template' => "{label}<span class='required'>*</span>
<div class='input-group'>
{input}
<div class='input-group-append'><span class='input-group-text'><i class='la la-calendar-check-o'></i></span></div>
</div>
<span class='kt-font-danger font-weight-bold'>{error}</span>"
])->textInput(['readonly' => true, 'onchange' => 'calcprojectdue()']);
?>
</div>
<div class='form-group-custom'>
<?=
$form->field($model, 'end_dt', [
'template' => "{label}<span class='required'>*</span>
<div class='input-group'>
{input}
<div class='input-group-append'><span class='input-group-text'><i class='la la-calendar-check-o'></i></span></div>
</div>
<span class='kt-font-danger font-weight-bold'>{error}</span>"
])->textInput(['readonly' => true]);
?>
</div>
</div>
</div>
</div>
</div>
<div class="col-sm-8">
<div class="kt-portlet kt-portlet--height-fluid">
<div class="kt-portlet__head">
<div class="kt-portlet__head-label">
<h3 class="kt-portlet__head-title">Assign To (Person In-Charge)</h3>
</div>
<div class="kt-portlet__head-toolbar">
<button type="button" onclick="addpic()" class="btn btn-sm btn-label-brand">Add User</button>
</div>
</div>
<div class="kt-portlet__body">
<div class="kt-portlet__content">
<div class="row">
<div class="col-5"><div class="form-group mb-0"><label class="control-label">Role</label></div></div>
<div class="col-7"><div class="form-group mb-0"><label class="control-label">User Name</label></div></div>
</div>
<?php
$modelPic = Pic::find()->where(['project_id' => $model->id])->andwhere(['status' => '1'])->orderBy(['id' => SORT_ASC])->all();
if (!empty($modelPic)) {
foreach ($modelPic as $rowpic) {
echo '<div class="row">
<div class="col-5">
<input type="hidden" value="' . $rowpic->id . '" name="pic_id[]">
' . Html::dropDownList('pic_role_' . $rowpic->id, $rowpic->role, $ParamList->getparamlist2(2), [
'class' => 'mb-2 form-control kt-selectpicker',
'id' => 'pic_role_' . $rowpic->id,
'prompt' => '-- Please choose --',
'onchange' => 'changerole(this.value,' . $rowpic->id . ')',
'data-live-search' => 'true']) . '
</div>
<div class="col-7">
' . Html::dropDownList('pic_user_' . $rowpic->id, $rowpic->user_id, ArrayHelper::map(User::find()->where(['status' => '1'])->orderBy(['name' => SORT_ASC])->all(), 'id', 'name'), [
'class' => 'form-control kt-selectpicker',
'id' => 'pic_user_' . $rowpic->id,
'prompt' => '-- Please choose --',
'data-live-search' => 'true',
]) . '
</div>
</div>';
}
}
?>
<div id="piclist"></div>
</div>
</div>
</div>
</div>
</div>
<div class="kt-portlet" data-ktportlet="true">
<div class="kt-portlet__head">
<div class="kt-portlet__head-label">
<h3 class="kt-portlet__head-title">
Tasks Details
</h3>
</div>
<div class="kt-portlet__head-toolbar">
<div class="kt-portlet__head-group">
<div class="tooltip tooltip-portlet tooltip bs-tooltip-top" role="tooltip" id="tooltip_mtpb3la6ln" aria-hidden="true" x-placement="top" style="position: absolute; will-change: transform; visibility: hidden; top: 0px; left: 0px; transform: translate3d(440px, -39px, 0px);">
<div class="tooltip-arrow arrow" style="left: 34px;"></div>
<div class="tooltip-inner">Collapse</div>
</div>
</div>
</div>
</div>
<div class="kt-portlet__body">
<input type="hidden" id="totaltask" value="0">
<table class="table mb-0 table-borderless table-striped">
<thead>
<tr>
<th width="1%"></th>
<th scope="col" class="text-center align-middle" width="5%">No.</th>
<th scope="col" class="align-middle">Task</th>
<th scope="col" class="align-middle" width="25%">Assign To</th>
<th scope="col" width="1%" class="align-middle">Duration</th>
<th scope="col" width="10%" class="align-middle">Start Date</th>
<th scope="col" width="10%" class="align-middle">End Date</th>
<th scope="col" width="1%" class="align-middle text-nowrap">Completed %</th>
<th scope="col" class="text-center align-middle" width="1%"></th>
</tr>
</thead>
<tbody>
<?php
$modelPhase = Tasks::find()
->where(['project_id' => $model->id])
->andwhere(['deleted_status' => '0'])
->andwhere(['task_type' => 'phase'])
->orderBy(['sort' => SORT_ASC])
->all();
if (!empty($modelPhase)) {
foreach ($modelPhase as $rowPhase) {
$modelStep = Tasks::find()
->where(['project_id' => $model->id])
->andwhere(['deleted_status' => '0'])
->andwhere(['task_type' => 'step'])
->andwhere(['parent_id' => $rowPhase->id])
->orderBy(['sort' => SORT_ASC])
->all();
if (!empty($modelStep)) {
echo '<tr><th colspan="9" class="align-middle">Phase ' . $rowPhase->sort . ' : ' . $rowPhase->task_name . '</th></tr>';
foreach ($modelStep as $rowStep) {
echo '<tr id="oldrowtask_' . $rowStep->id . '" class="rowtask_' . $rowStep->id . '">
<input type="hidden" value="' . $rowStep->id . '" name="taskid[]">
<td>
<button type="button" class="btn btn-outline-hover-primary btn-icon btn-sm" data-placement="top"
data-toggle="tooltip" title="Add new task" onclick="addnewtask2(\'oldrowtask_' . $rowStep->id . '\',' . $rowPhase->data_id . ',' . $model->id . ')">
<i class="fas fa-plus"></i>
</button>
</td>
<td><input type="text" class="form-control taskno" value="' . $rowStep->task_no . '" name="task_no_' . $rowStep->id . '"></td>
<td><input type="text" class="form-control taskname" value="' . $rowStep->task_name . '" name="task_name_' . $rowStep->id . '"></td>
<td>' . Html::dropDownList('task_assignto_' . $rowStep->id, explode(',', $rowStep->assign_to), ArrayHelper::map(
User::find()->innerjoin('pic', 'user.id=pic.user_id')
->where(['user.status' => '1'])
->andwhere(['=', 'pic.project_id', $model->id])
->orderBy(['name' => SORT_ASC])->all(), 'id', 'name'), [
'class' => 'taskassignto form-control kt-selectpicker',
'empty' => '- Please choose -',
'data-live-search' => 'true',
'multiple' => 'true']) . '
</td>
<td><input type="text" value="' . $rowStep->duration . '" onchange="updatetaskenddate(' . $rowStep->id . ')" id="task_duration_' . $rowStep->id . '" name="task_duration_' . $rowStep->id . '" class="form-control task_duration"></td>
<td>
<input type="text" value="' . $rowStep->start_dt . '" onchange="updatetaskenddate(' . $rowStep->id . ')" id="task_startdt_' . $rowStep->id . '" name="task_startdt_' . $rowStep->id . '" class="form-control datepicker taskstardt" readonly="" style="width:110px;">
<input type="text" value="' . $rowStep->actual_start_dt . '" name="task_actual_start_dt_' . $rowStep->id . '" class="form-control datepicker mt-1" readonly="" style="width:110px;" placeholder="Actual Date">
</td>
<td>
<input type="text" value="' . $rowStep->end_dt . '" id="task_enddt_' . $rowStep->id . '" name="task_enddt_' . $rowStep->id . '" class="form-control taskenddt" readonly="">
<input type="text" value="' . $rowStep->actual_end_dt . '" name="task_actual_end_dt_' . $rowStep->id . '" class="form-control datepicker mt-1" readonly="" style="width:110px;" placeholder="Actual Date">
</td>
<td>
<input type="text" class="form-control" value="' . $rowStep->percentage_complete . '" name="task_percentage_complete_' . $rowStep->id . '">
</td>
<td>
<button type="button" class="btn btn-outline-hover-danger btn-icon">
<i class="far fa-trash-alt kt-font-danger" onclick="deletetask(' . $rowStep->id . ')"></i>
</button>
</td>
</tr>';
}
}
}
}
//adhoc task
$modelAdhoc = Tasks::find()->where(['project_id' => $model->id])->andwhere(['deleted_status' => '0'])->andwhere(['=', 'task_type', 'adhoc'])->orderBy(['sort' => SORT_ASC])->all();
if (!empty($modelAdhoc)) {
echo '<tr><th colspan="9" class="align-middle">Adhoc Task</th></tr>';
foreach ($modelAdhoc as $rowadhoc) {
echo '<tr id="old_adhoc_' . $rowadhoc->id . '">
<td>
<input type="hidden" value="' . $rowadhoc->id . '" name="adhocid[]">
<button type="button" class="btn btn-outline-hover-primary btn-icon btn-sm" data-placement="top"
data-toggle="tooltip" title="Add new adhoc task" onclick="addnewadhoc(\'old_adhoc_' . $rowadhoc->id . '\','.$model->id.')">
<i class="fas fa-plus"></i>
</button>
</td>
<td><input type="text" class="form-control" value="' . $rowadhoc->sort . '" name="adhoc_sort_' . $rowadhoc->id . '"></td>
<td><input type="text" class="form-control" value="' . $rowadhoc->task_name . '" name="adhoc_task_name_' . $rowadhoc->id . '"></td>
<td>' . Html::dropDownList('adhoc_assign_to_' . $rowadhoc->id, $rowadhoc->assign_to, ArrayHelper::map(
User::find()->innerjoin('pic', 'user.id=pic.user_id')
->where(['user.status' => '1'])
->andwhere(['=', 'pic.project_id', $model->id])
->orderBy(['name' => SORT_ASC])->all(), 'id', 'name'), [
'class' => 'form-control kt-selectpicker',
'empty' => '- Please choose -',
'data-live-search' => 'true']) . '
</td>
<td><input type="text" name="adhoc_duration_' . $rowadhoc->id . '" value="' . $rowadhoc->duration . '" onchange="updatetaskenddate3(' . $rowadhoc->id . ')" id="old_adhoc_duration_' . $rowadhoc->id . '" class="form-control"></td>
<td>
<input type="text" name="adhoc_start_dt_' . $rowadhoc->id . '" value="' . $rowadhoc->start_dt . '" onchange="updatetaskenddate3(' . $rowadhoc->id . ')" id="old_adhoc_start_dt_' . $rowadhoc->id . '" class="form-control datepicker" readonly="" style="width:110px;">
<input type="text" value="' . $rowadhoc->actual_start_dt . '" name="adhoc_actual_start_dt_' . $rowadhoc->id . '" class="form-control datepicker mt-1" readonly="" style="width:110px;" placeholder="Actual Date">
</td>
<td>
<input type="text" name="adhoc_end_dt_' . $rowadhoc->id . '" value="' . $rowadhoc->end_dt . '" class="form-control" readonly="" id="old_adhoc_end_dt_' . $rowadhoc->id . '">
<input type="text" name="adhoc_actual_end_dt_' . $rowadhoc->id . '" value="' . $rowadhoc->actual_end_dt . '" class="form-control datepicker mt-1" readonly="" style="width:110px;" placeholder="Actual Date">
</td>
<td>
<input type="text" class="form-control" value="' . $rowadhoc->percentage_complete . '" name="adhoc_percentage_complete_' . $rowadhoc->id . '">
</td>
<td>
<button type="button" class="btn btn-outline-hover-danger btn-icon">
<i class="far fa-trash-alt kt-font-danger" onclick="deleteadhoc(' . $rowadhoc->id . ')"></i>
</button>
</td>
</tr>';
}
}
?>
</tbody>
</table>
</div>
</div>
<div class="kt-form__actions">
<?= Html::a('<i class="fas fa-arrow-left"></i> Back', ['index'], ['class' => 'btn btn-outline-brand']) ?>
<?= Html::a('<i class="fas fa-sync"></i> Reset', [Yii::$app->controller->action->id, 'id' => Yii::$app->getRequest()->getQueryParam('id')], ['class' => 'btn btn-outline-success']); ?>
<?= Html::button('<i class="fas fa-pencil-alt"></i> Update Project', ['class' => 'btn btn-info', 'onclick' => 'checkform()']); ?>
</div>
<?php ActiveForm::end(); ?>
</div>
</div>
</div>
<?php
include 'footer.php';
$this->registerJs("countaddhoc = $('#totaladhoc').val();");
?>
<script>
var countadhoc = 0;
function addnewadhoc(rowname, projectid) {
countadhoc++;
$.ajax({
url: "index.php?r=templates/addnewadhoc&countadhoc=" + countadhoc+'&projectid='+projectid,
method: "GET",
success: function (response) {
if (response !== '') {
$("#" + rowname).after(response);
$('#new_adhoc_start_dt_' + countadhoc).datepicker("destroy");
$('#new_adhoc_start_dt_' + countadhoc).datepicker({
rtl: KTUtil.isRTL(),
todayHighlight: false,
orientation: 'top right',
format: 'yyyy-mm-dd',
clearBtn: false,
});
$('#new_adhoc_end_dt_' + countadhoc).datepicker("destroy");
$('#new_adhoc_end_dt_' + countadhoc).datepicker({
rtl: KTUtil.isRTL(),
todayHighlight: false,
orientation: 'top right',
format: 'yyyy-mm-dd',
clearBtn: false,
});
$('#new_adhoc_assign_to_' + countadhoc).selectpicker('refresh');
}
},
});
}
function deletetask(id) {
Swal.fire({
title: 'Are you sure to delete this data?',
text: "You won't be able to revert this!",
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Yes, delete it!'
}).then((result) => {
if (result.value) {
$.ajax({
url: "index.php?r=tasks/delete",
method: "POST",
data: {"id": id},
success: function (response) {
$('.rowtask_' + id).remove();
},
});
}
});
}
function changecurrentstaff(old_id, new_id) {
if (new_id !== '') {
$('.taskassignto').each(function () {
var current_staff = $(this).find("option:selected").val();
if (parseInt(current_staff) === parseInt(old_id)) {
//alert(current_staff + ' ' + old_id + ' = match');
$(this).val(new_id);
$(this).selectpicker('refresh');
}
});
}
}
function deleteadhoc(id) {
Swal.fire({
title: 'Are you sure to delete this data?',
text: "You won't be able to revert this!",
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Yes, delete it!'
}).then((result) => {
if (result.value) {
$.ajax({
url: "index.php?r=tasks/deleteadhoc",
method: "POST",
data: {"id": id},
success: function (response) {
if (response === 'success') {
swal.fire({
position: 'center-center',
type: 'success',
title: 'Data has been deleted',
showConfirmButton: false,
timer: 1500, }).then(function (result) {
location.reload();
});
}
},
});
}
});
}
</script>