Всем привет, подскажите пожалуйста как правильно оптимизируется код в контролерах 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;
}
}
}