add import tasks to xlsx

This commit is contained in:
iIronside
2023-11-10 15:55:01 +03:00
parent bc4cb3b54c
commit 05271d5f17
20 changed files with 542 additions and 116 deletions

View File

@ -2,6 +2,8 @@
namespace backend\modules\task\controllers;
use common\models\forms\TasksImportForm;
use common\services\ImportProjectTaskService;
use yii\data\ActiveDataProvider;
use Yii;
use backend\modules\task\models\ProjectTask;
@ -137,4 +139,33 @@ class TaskController extends Controller
throw new NotFoundHttpException('The requested page does not exist.');
}
public function actionImport()
{
$model = new TasksImportForm();
if ($model->load(Yii::$app->request->post()) && $model->validate()) {
$importTaskService = new ImportProjectTaskService();
$query = ProjectTask::genQueryToImport(
(int)$model->companyId,
(int)$model->userId,
(int)$model->projectId,
(int)$model->fromDate,
(int)$model->toDate
);
$tasks = $query->all();
if (!$tasks) {
Yii::$app->session->setFlash('danger', 'Задачи не найдены!');
return Yii::$app->getResponse()->redirect(['/task/task/import']);
} else {
return $importTaskService->importTasks($tasks);
}
}
return $this->render('_form-import', [
'model' => $model,
]);
}
}

View File

@ -0,0 +1,79 @@
<?php
use backend\modules\project\models\Project;
use common\models\forms\TasksImportForm;
use kartik\date\DatePicker;
use kartik\select2\Select2;
use yii\helpers\Html;
use yii\widgets\ActiveForm;
/* @var $this yii\web\View */
/* @var $model TasksImportForm*/
/* @var $form yii\widgets\ActiveForm */
$this->title = 'Импорт задач';
$this->params['breadcrumbs'][] = ['label' => 'Tasks', 'url' => ['index']];
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="task-index">
<?php $form = ActiveForm::begin(); ?>
<?= $form->field($model, 'companyId')->dropDownList(\common\models\Company::find()
->select(['name', 'id'])->indexBy('id')->column(),
[
'prompt' => 'Выберите'
]
);
?>
<?= $form->field($model, 'userId')->widget(
Select2::class,
[
'data' => \common\models\UserCard::getListUserWithUserId(),
'options' => ['placeholder' => '...', 'class' => 'form-control'],
'pluginOptions' => [
'allowClear' => true
],
]
); ?>
<?= $form->field($model, 'projectId')->widget(
Select2::class,
[
'data' => Project::find()->select(['name', 'id'])->indexBy('id')->column(),
'options' => ['placeholder' => '...', 'class' => 'form-control'],
'pluginOptions' => [
'allowClear' => true
],
]
); ?>
<?= $form->field($model, 'fromDate')->widget(DatePicker::class,[
'type' => DatePicker::TYPE_COMPONENT_APPEND,
'pluginOptions' => [
'autoclose' => true,
'format' => 'yyyy-mm-dd'
]
]);
?>
<?= $form->field($model, 'toDate')->widget(DatePicker::class,[
'type' => DatePicker::TYPE_COMPONENT_APPEND,
'pluginOptions' => [
'autoclose' => true,
'format' => 'yyyy-mm-dd'
]
]);
?>
<div class="form-group">
<?= Html::submitButton('Импорт', ['class' => 'btn btn-success']) ?>
</div>
<?php ActiveForm::end(); ?>
</div>

View File

@ -22,6 +22,7 @@ $this->params['breadcrumbs'][] = $this->title;
<p>
<?= Html::a('Создать задачу', ['create'], ['class' => 'btn btn-success']) ?>
<?= Html::a('Импорт задач', ['import'], ['class' => 'btn btn-primary']) ?>
</p>
<?= GridView::widget([

View File

@ -83,7 +83,7 @@ YiiAsset::register($this);
[
'attribute' => 'project_user_id',
'value' => 'user.email'
'value' => 'user.username'
],
[