Your IP : 216.73.216.79


Current Path : /var/www/html/dyna-project/views/tasks/
Upload File :
Current File : /var/www/html/dyna-project/views/tasks/index.php

<?php

use yii\helpers\Html;
use yii\grid\GridView;
use app\models\Projects;
use app\models\Tasks;

/* @var $this yii\web\View */
/* @var $searchModel app\models\TasksSearch */
/* @var $dataProvider yii\data\ActiveDataProvider */

$this->title = 'Tasks';
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="kt-subheader   kt-grid__item" id="kt_subheader">
    <div class="kt-container ">
        <div class="kt-subheader__main">
            <h3 class="kt-subheader__title">My Tasks</h3>
            <div class="kt-subheader__breadcrumbs">
                <span class="kt-subheader__breadcrumbs-separator"></span>
                <span class="kt-subheader__breadcrumbs-link"> My Tasks</span>
                <span class="kt-subheader__breadcrumbs-separator"></span>
                <span class="kt-subheader__breadcrumbs-link"> My Tasks List</span>
            </div>
        </div>
    </div>
</div>
<div class="tasks-index">
    <div class="kt-container kt-grid__item kt-grid__item--fluid">
        <div class="kt-portlet kt-portlet--mobile">
            <div class="kt-portlet__head"><?php echo $this->render('_search', ['model' => $searchModel]); ?></div>
            <div class="kt-portlet__body p-0">
                <?=
                GridView::widget([
                    'dataProvider' => $dataProvider,
                    'tableOptions' => ['class' => 'table mb-0 table-borderless table-striped table-hover table-custom'],
                    'pager' => [
                        'firstPageLabel' => '<i class="fa fa-angle-double-left kt-font-brand"></i>',
                        'lastPageLabel' => '<i class="fa fa-angle-double-right kt-font-brand"></i>',
                        'prevPageLabel' => '<i class="fa fa-angle-left kt-font-brand"></i>',
                        'nextPageLabel' => '<i class="fa fa-angle-right kt-font-brand"></i>',
                        'maxButtonCount' => 3,
                        'options' => ['tag' => 'ul', 'class' => 'p-4 kt-pagination--brand kt-pagination__links',],
                        'activePageCssClass' => 'kt-pagination__link--active',
                        'prevPageCssClass' => 'kt-pagination__link--prev',
                        'nextPageCssClass' => 'kt-pagination__link--next',
                        'firstPageCssClass' => 'kt-pagination__link--first',
                        'lastPageCssClass' => 'kt-pagination__link--last',
                    ],
                    'columns' => [
                        [
                            'class' => 'yii\grid\SerialColumn',
                            'headerOptions' => ['class' => 'text-center'],
                            'contentOptions' => ['class' => 'text-center align-middle'],
                        ], [
                            'attribute' => 'project_name',
                            'headerOptions' => ['class' => 'head-sort'],
                            'contentOptions' => ['class' => 'align-middle'],
                            'format' => 'raw',
                            'value' => function ($model) {
                                $Projects = new Projects();
                                $project_name = $Projects->getname($model->project_id);
                                return Html::a($project_name, ['index', 'TasksSearch[search_keyword]' => $project_name]);
                            },
                        ],
                        [
                            'attribute' => 'task_name',
                            'headerOptions' => ['class' => 'head-sort'],
                            'contentOptions' => ['class' => 'align-middle'],
                            'format' => 'raw',
                            'value' => function ($model) {
                                $output = $model->task_name;
                                if (!empty($model->descr) || !empty($model->file_url)) {
                                    $file_url = '';
                                    if (!empty($model->file_url))
                                        $file_url = '<p><a href="' . $model->file_url . '" target="_blank">Download file attach here</a></p>';
                                    $output .= '<button type="button" class="btn btn-link m-0 p-0 ml-2 btn-sm" data-toggle="modal" data-target="#modaldetails' . $model->id . '">
                                        <i class="fas fa-info-circle"></i>
                                    </button>
                                    <div class="modal fade" id="modaldetails' . $model->id . '" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
                                      <div class="modal-dialog modal-dialog-centered" role="document">
                                        <div class="modal-content">
                                          <div class="modal-header">
                                            <h5 class="modal-title" id="exampleModalLabel">Task Details</h5>
                                            <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                                              <span aria-hidden="true">&times;</span>
                                            </button>
                                          </div>
                                          <div class="modal-body">
                                            ' . $model->descr . '
                                            ' . $file_url . '
                                          </div>
                                        </div>
                                      </div>
                                    </div>';
                                }
                                return $output;
                            }
                        ],
                        [
                            'attribute' => 'start_dt',
                            'headerOptions' => ['class' => 'head-sort text-nowrap'],
                            'contentOptions' => ['class' => 'align-middle text-nowrap'],
                            'value' => function ($model) {
                                return date("d M Y", strtotime($model->start_dt));
                            },
                        ], [
                            'attribute' => 'end_dt',
                            'headerOptions' => ['class' => 'head-sort text-nowrap'],
                            'contentOptions' => ['class' => 'align-middle text-nowrap'],
                            'value' => function ($model) {
                                return date("d M Y", strtotime($model->end_dt));
                            },
                        ], [
                            'header' => 'Due Days',
                            'headerOptions' => ['class' => 'text-nowrap'],
                            'contentOptions' => ['class' => 'align-middle text-nowrap'],
                            'format' => 'raw',
                            'value' => function ($model) {
                                if ($model->task_status != 'complete')
                                    return $model->getduedays($model->end_dt);
                                else
                                    return '';
                            },
                        ],
                        [
                            'contentOptions' => ['class' => 'text-center align-middle'],
                            'header' => 'Modules',
                            'format' => 'raw',
                            'value' => function ($model) {
                                $total_module = Tasks::find()->where(['parent_id' => $model->id])->andwhere(['task_type' => 'module'])->count();
                                $link_module = Html::a('<span class="kt-font-primary icon-custom"><i class="far fa-edit"></i></span>', [
                                            'tasks/managemodules',
                                            'parent_id' => $model->id
                                                ], ['title' => 'Manage Modules',]);
                                return $total_module . '&nbsp;&nbsp;&nbsp;' . $link_module;
                            }
                        ],
                        [
                            'attribute' => 'task_status',
                            'headerOptions' => ['class' => 'text-center head-sort', 'width' => '10%'],
                            'contentOptions' => ['class' => 'align-middle'],
                            'format' => 'raw',
                            'value' => function ($model) {
                                return $model->displaytaskstatus($model->task_status);
                            }
                        ],
                        [
                            'class' => 'yii\grid\ActionColumn',
                            'header' => 'Action',
                            'headerOptions' => ['class' => 'text-center', 'width' => '10%'],
                            'contentOptions' => ['class' => 'text-center align-middle'],
                            'template' => '{start}{update}{complete}{log}',
                            'buttons' => [
                                'start' => function ($url, $model) {
                                    if ($model->task_status == 'pending')
                                        return Html::a('Start Task', $url, ['class' => 'btn btn-label-primary btn-sm btn-bold m-0 btn-block',]);
                                },
                                'update' => function ($url, $model) {
                                    if ($model->task_status != 'pending')
                                        return Html::a('<span class="kt-font-primary icon-custom"><i class="fas fa-plus fa-lg"></i></span>', ['taskslog/create', 'task_id' => $model->id], ['class' => 'mr-3', 'title' => 'Add task log',]);
                                }, 'complete' => function ($url, $model) {
                                    if ($model->task_status == 'on-going')
                                        return Html::a('<span class="kt-font-success icon-custom"><i class="fas fa-clipboard-check fa-lg"></i></span>', $url, ['class' => 'mr-3', 'title' => 'Update task status to compete',]);
                                }, 'log' => function ($url, $model) {
                                    if ($model->task_status != 'pending')
                                        return '<span class="kt-font-warning icon-custom" onclick="displaylog(' . $model->id . ')" style="cursor:pointer;"><i class="fas fa-sticky-note fa-lg"></i></span>';
                                },
                            ],
                        ],
                    ],
                ]);
                ?>
            </div>
        </div>
    </div>
</div>


<div class="modal fade" id="logModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
    <div class="modal-dialog modal-dialog-centered modal-dialog-scrollable modal-lg" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title" id="exampleModalLabel">Task Log</h5>
                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                    <span aria-hidden="true">&times;</span>
                </button>
            </div>
            <div class="modal-body">
                <div class="kt-timeline-v3">
                    <div class="kt-timeline-v3__items">
                        <div id="logcontent"></div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

<script>
    function displaylog(task_id) {
        $.ajax({
            url: "index.php?r=taskslog/getlog",
            method: "POST",
            data: {"task_id": task_id},
            success: function (response) {
                $('#logcontent').html(response);
                $('#logModal').modal('show');
            },
        });

    }

    function deletelog(id, task_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=taskslog/delete",
                    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();
                                displaylog(task_id);
                            });
                        }
                    },
                });
            }
        });
    }
</script>