Есть 2 однометодных контроллера с похожим кодом:
NewPostUpdate и OldPostUpdate. Эти контроллеры работают с одной моделью Post. Эти контроллеры принимают параметром $request и $id.
Логик у них похожа - в зависимости от даты полученной из формы, в контроллерах обновляется информация полученная из формы.
Например:
public function __invoke(Request $request, $id)
{
$data = $request->all();
$newPost = Post::where('id', $id)->firstOrFail();
if($data['date_time'] > now()){
// обновляем модель
// создаем связанную модель для названия файла
// сохраняем полученный файл
} elseif ($data['date_time'] < now()){
// обновляем модель
// создаем связанную модель для названия файла
// сохраняем полученный файл
} else {
// обновляем модель
// создаем связанную модель для названия файла
// сохраняем полученный файл
}
return redirect()->back()->with('success', 'Saved');
}
Фактически этот код дублируется в обеих контроллерах.
Подскажите, пожалуйста, можно ли как то вынести этот код за пределы этих контроллеров, передать параметром туда провалидированные из request данные и $id Post, сохранить там данные и вернуть обратно ответ?
Если можно, то куда правильнее было бы перенести этот код (модель Post, или action...), и каким должен быть ответ выполнения этой функции (как его обработать в контроллере)?