@usdbuy

Как правильно оптимизируется код в контроллерах Laravel?

Всем привет, подскажите пожалуйста как правильно оптимизируется код в контролерах Laravel

Нагромоздил работающий код в контролере и теперь хотелось бы понять как правильно такие вещи распределяются

public function store(Request $request)
    {
        $id = $request['userId'];
        $start_date = $request['startDate'];
        $end_date = $request['endDate'];

        $user = User::find($id);

        // Проверка на корректность дат
        $check_date_correct = $user->checkDateForm($start_date, $end_date);

        if ($check_date_correct === false) {
            return view('timetable', ['data' => 'Неверно указана дата']);
        }

        // Период дат с формы получение в массив
        $period_date_form = $user->getPeriodDateForm($start_date, $end_date);

        // Получение в массив дат отпуска сотрудника
        $holidays_employee = $user->getHolidays($id);
        $date_holidays_employee = $user->getDateHolidayArr($holidays_employee);

        // Получение колличества дней запрошенного периода
        $end_date_time = strtotime($end_date);
        $start_date_time = strtotime($start_date);
        $days_period = $end_date_time - $start_date_time;
        $quantity_days = $days_period / 86400;

        // Получение праздников компании
        $parties_company = $user->getParties();
       /* dd($user->getDatePartiesArr($parties_company)); */

        // Получение по API праздников
        $arr = [];

        for($i=0; $i <= $quantity_days; $i++)
        {
            $add_day_unix = strtotime("+$i day", strtotime($start_date));
            $add_day = date("Y-m-d", $add_day_unix);
            $api_date = json_decode(file_get_contents('https://api.sm.su/v1/calendar/business/?day='.$add_day),1);

            if($api_date['work'] == 0) {
                $arr[] = $add_day;
            }
        }
}
  • Вопрос задан
  • 131 просмотр
Пригласить эксперта
Ответы на вопрос 2
Alex_Wells
@Alex_Wells
PHP/TS/Kotlin developer
Получение праздников по АПИ? Это можно делать без АПИ, на крайняк дергать это АПИ регулярно и сохранять результаты в кэш - это по оптимизации.

Остальное по code style и качеству кода - PSR стандарты, laravel validation, carbon, логику за пределы контроллера.
Ответ написан
Комментировать
@antimind
Вынести логику в сервис, а в контроллере уже оперировать результатами выполнения этих операций. Ни в коем случае не в модель, как советовали выше в комментах. Слой сервисов как раз и существует для того, что бы всю логику писать там. А контроллер совсем не об этом.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы