Добавлен метод получения статистики для 1 отделения
This commit is contained in:
@@ -376,7 +376,7 @@ class DutyReportController extends Controller
|
||||
$isRangeOneDay = $this->dateRangeService->isRangeOneDay($startDate, $endDate);
|
||||
$department = Department::find($queryDepartmentId);
|
||||
|
||||
$finalData = $this->statisticsService->getStatisticsData($user, $startDate, $endDate, $isRangeOneDay, $department->department_id);
|
||||
$finalData = $this->statisticsService->getStatisticsDataForDepartment($department->department_id, $startDate, $endDate, $isRangeOneDay);
|
||||
|
||||
return Excel::download(new DutyReportExport($finalData['data'], [$startDate, $endDate], $user, $department), 'statistics.xlsx');
|
||||
}
|
||||
|
||||
@@ -50,10 +50,34 @@ class StatisticsService
|
||||
|
||||
public function getStatisticsData(User $user, string $startDate, string $endDate, bool $isRangeOneDay): array
|
||||
{
|
||||
$this->bedDayService->clearMemoryCache();
|
||||
return $this->buildStatisticsData($this->resolveUserDepartments($user), $startDate, $endDate, $isRangeOneDay);
|
||||
}
|
||||
|
||||
// 1. Получаем отделения
|
||||
$departments = $this->resolveUserDepartments($user);
|
||||
/**
|
||||
* Статистика по одному конкретному отделению (для отчёта дежурного).
|
||||
* В отличие от getStatisticsData не привязана к списку отделений пользователя.
|
||||
*/
|
||||
public function getStatisticsDataForDepartment(int $departmentId, string $startDate, string $endDate, bool $isRangeOneDay): array
|
||||
{
|
||||
return $this->buildStatisticsData($this->resolveSingleDepartment($departmentId), $startDate, $endDate, $isRangeOneDay);
|
||||
}
|
||||
|
||||
/**
|
||||
* Одно конкретное отделение в том же формате, что и resolveUserDepartments —
|
||||
* сгруппировано по типу отделения.
|
||||
*/
|
||||
private function resolveSingleDepartment(int $departmentId)
|
||||
{
|
||||
return Department::select('department_id', 'name_short', 'rf_department_type')
|
||||
->with('departmentType')
|
||||
->where('department_id', $departmentId)
|
||||
->get()
|
||||
->groupBy('departmentType.name_full');
|
||||
}
|
||||
|
||||
private function buildStatisticsData($departments, string $startDate, string $endDate, bool $isRangeOneDay): array
|
||||
{
|
||||
$this->bedDayService->clearMemoryCache();
|
||||
|
||||
if ($departments->isEmpty()) {
|
||||
return $this->emptyResponse();
|
||||
|
||||
Reference in New Issue
Block a user