* восстановление окна наблюдения
* добавил получение выбывших * фильтрация выбывших по результатам лечения * добавил подсказку при наведении на операции * добавил вывод причины наблюдения * добавил вкладки для выбывших * изменил связь и сохранение пациентов на контроле * добавил возможность редактирования причины контроля * полное изменение окна с нежелательными событиями * исправил просмотр причины контроля * работа над окном редактирования причины контроля в таблице * визуальное выделение умерших и проведенных операций * добавил выбор даты для роли врач * центрирование блоков статистики * разделение выполненных операций на срочность * поправил метод определения текущего дня для роли врач * функция блокировки при выборе другой даты для роли врач
This commit is contained in:
70
app/Services/DateRangeService.php
Normal file
70
app/Services/DateRangeService.php
Normal file
@@ -0,0 +1,70 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services;
|
||||
|
||||
use Illuminate\Support\Carbon;
|
||||
|
||||
class DateRangeService
|
||||
{
|
||||
public function getDateRangeForUser($user, $startAt = null, $endAt = null): array
|
||||
{
|
||||
if ($startAt && $endAt) {
|
||||
return $this->getCustomDateRange($startAt, $endAt, $user);
|
||||
}
|
||||
|
||||
return $this->getDefaultDateRange($user);
|
||||
}
|
||||
|
||||
private function getCustomDateRange($startAt, $endAt, $user): array
|
||||
{
|
||||
$startDate = $this->parseDate($startAt);
|
||||
$endDate = $this->parseDate($endAt);
|
||||
|
||||
if ($startDate->isSameDay($endDate)) {
|
||||
$startDate = $startDate->subDay()->setTime(6, 0);
|
||||
$endDate = $endDate->setTime(6, 0);
|
||||
} else {
|
||||
$startDate = $startDate->setTime(6, 0);
|
||||
$endDate = $endDate->setTime(6, 0);
|
||||
}
|
||||
|
||||
return [
|
||||
$startDate->format('Y-m-d H:i:s'),
|
||||
$endDate->format('Y-m-d H:i:s')
|
||||
];
|
||||
}
|
||||
|
||||
private function getDefaultDateRange($user): array
|
||||
{
|
||||
if ($user->isHeadOfDepartment() || $user->isAdmin()) {
|
||||
$startDate = Carbon::now('Asia/Yakutsk')
|
||||
->firstOfMonth()
|
||||
->setTime(6, 0);
|
||||
|
||||
$endDate = Carbon::now('Asia/Yakutsk')
|
||||
->setTime(6, 0);
|
||||
} else {
|
||||
$startDate = Carbon::now('Asia/Yakutsk')
|
||||
->subDay()
|
||||
->setTime(6, 0);
|
||||
|
||||
$endDate = Carbon::now('Asia/Yakutsk')
|
||||
->setTime(6, 0);
|
||||
}
|
||||
|
||||
return [
|
||||
$startDate->format('Y-m-d H:i:s'),
|
||||
$endDate->format('Y-m-d H:i:s')
|
||||
];
|
||||
}
|
||||
|
||||
private function parseDate($dateInput): Carbon
|
||||
{
|
||||
if (is_numeric($dateInput)) {
|
||||
return Carbon::createFromTimestampMs($dateInput)
|
||||
->setTimezone('Asia/Yakutsk');
|
||||
}
|
||||
|
||||
return Carbon::parse($dateInput, 'Asia/Yakutsk');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user