78 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace common\services;
 | |
| 
 | |
| use common\models\ProjectTask;
 | |
| use PhpOffice\PhpSpreadsheet\Spreadsheet;
 | |
| use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
 | |
| use yii\helpers\ArrayHelper;
 | |
| 
 | |
| class ImportProjectTaskService
 | |
| {
 | |
|     /**
 | |
|      * @param array $tasks
 | |
|      * @return string|void
 | |
|      */
 | |
|     public function importTasks(array $tasks)
 | |
|     {
 | |
|         try {
 | |
|             $spreadsheet = new Spreadsheet();
 | |
|             $sheet = $spreadsheet->getActiveSheet();
 | |
| 
 | |
|             $sheet
 | |
|                 ->setCellValue('A1', 'ID')
 | |
|                 ->setCellValue('B1', 'ID проекта')
 | |
|                 ->setCellValue('C1', 'Название проекта')
 | |
|                 ->setCellValue('D1', 'Задача')
 | |
|                 ->setCellValue('E1', 'Дата создания')
 | |
|                 ->setCellValue('F1', 'Дата обновления')
 | |
|                 ->setCellValue('G1', 'Дедлайн')
 | |
|                 ->setCellValue('H1', 'Описание')
 | |
|                 ->setCellValue('I1', 'Статус')
 | |
|                 ->setCellValue('J1', 'Колонка')
 | |
|                 ->setCellValue('G1', 'ID создателя задачи')
 | |
|                 ->setCellValue('K1', 'Создатель задачи')
 | |
|                 ->setCellValue('L1', 'ID исполнителя')
 | |
|                 ->setCellValue('M1', 'Приоритет')
 | |
|                 ->setCellValue('N1', 'Исполнитель')
 | |
|                 ->setCellValue('O1', 'Количество коментариев')
 | |
|                 ->setCellValue('P1', 'Участники')
 | |
|                 ->setCellValue('Q1', 'Теги')
 | |
|                 ->setCellValue('R1', 'Приоритет выполнения');
 | |
| 
 | |
|             $i = 2;
 | |
|             /** @var ProjectTask $task */
 | |
|             foreach ($tasks as $task) {
 | |
|                 $sheet
 | |
|                     ->setCellValue('A' . $i, $task->id)
 | |
|                     ->setCellValue('B' . $i, $task->project_id)
 | |
|                     ->setCellValue('C' . $i, $task->project->name)
 | |
|                     ->setCellValue('D' . $i, $task->title)
 | |
|                     ->setCellValue('E' . $i, $task->created_at)
 | |
|                     ->setCellValue('F' . $i, $task->updated_at)
 | |
|                     ->setCellValue('G' . $i, $task->dead_line)
 | |
|                     ->setCellValue('H' . $i, $task->description)
 | |
|                     ->setCellValue('I' . $i, ArrayHelper::getValue(ProjectTask::getStatus(), $task->status))
 | |
|                     ->setCellValue('J' . $i, $task->column->title)
 | |
|                     ->setCellValue('G' . $i, $task->user_id)
 | |
|                     ->setCellValue('K' . $i, $task->user->userCard->fio ?? ($task->user->username ?? 'kkk'))
 | |
|                     ->setCellValue('L' . $i, $task->executor_id)
 | |
|                     ->setCellValue('M' . $i, $task->priority)
 | |
|                     ->setCellValue('N' . $i, $task->executor->userCard->fio ?? ($task->executor->username ?? 'ggg'))
 | |
|                     ->setCellValue('O' . $i, $task->getCommentCount())
 | |
|                     ->setCellValue('P' . $i, $task->getTaskUsersToStr())
 | |
|                     ->setCellValue('Q' . $i, $task->getMarkTitleToStr())
 | |
|                     ->setCellValue('R' . $i, $task->execution_priority);
 | |
|                 $i++;
 | |
|             }
 | |
| 
 | |
|             $writer = new Xlsx($spreadsheet);
 | |
|             header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
 | |
|             header('Content-Disposition: attachment; filename="'. urlencode('tasks.xlsx').'"');
 | |
|             $writer->save('php://output');
 | |
|             exit();
 | |
|         } catch (\Exception $ex) {
 | |
|             return $ex->getMessage();
 | |
|         }
 | |
|     }
 | |
| } | 
