Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Привет.
Собеседовали меня недавно и попросили сделать ревью кода на лету:
<?php
namespace App\Http\Controllers;
use App\Jobs\SendCustomerConfirmation;
use App\Jobs\SendParkingConfirmation;
use App\Jobs\UpdateParkingCapacity;
use App\Reservation;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class ReservationController extends Controller
{
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$start = Carbon::parse($request->get('start'));
$end = Carbon::parse($request->get('start'));
if ($start->isFuture() && $end->isAfter($start)) {
$reservation = new Reservation;
$reservation->name = $request->get('name');
$reservation->start = $start->format('Y-m-d H:i');
$reservation->end = $end->format('Y-m-d H:i');
$reservation->parking_id = $request->get('parking_id');
$reservation->created_at = $request->get('created_at');
$reservation->updated_at = $request->get('updated_at');
$reservation->save();
$parking = DB::table('parkings')->where('id', $reservation->parking_id)->get();
SendCustomerConfirmation::dispatch($reservation);
SendParkingConfirmation::dispatch($reservation);
UpdateParkingCapacity::dispatch($parking, $reservation);
return view('reservation.success', [
'parking' => $parking,
'reservation' => $reservation,
]);
}
return view('reservation.failed');
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Reservation $reservation
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Reservation $reservation)
{
$start = Carbon::parse($request->get('start'));
$end = Carbon::parse($request->get('start'));
if ($start->isFuture() && $end->isAfter($start)) {
$reservation->name = $request->get('name');
$reservation->start = $start->format('Y-m-d H:i');
$reservation->end = $end->format('Y-m-d H:i');
$reservation->parking_id = $request->get('parking_id');
$reservation->created_at = $request->get('created_at');
$reservation->updated_at = $request->get('updated_at');
$reservation->save();
$parking = DB::table('parkings')->where('id', $reservation->parking_id)->get();
SendCustomerConfirmation::dispatch($reservation);
SendParkingConfirmation::dispatch($reservation);
UpdateParkingCapacity::dispatch($parking, $reservation);
return view('reservation.update.success', [
'parking' => $parking,
'reservation' => $reservation,
]);
}
return view('reservation.update.failed');
}
}
Хотелось бы услышать экспертные мнения по данному вопросу, кто что бы переделал?
Интересно насколько я справился с задачей )
Изменено manzhos (14.05.2021 11:01:15)
Не в сети
1) нету валидации реквестов
2) вынести логику в какой-нибудь сервис и избавиться от дублирования кода
3) работу с моделями вынести в репозитории
4) доставать паркинг через отношения из резервации
Не в сети
Спасибо!
Я еще и строчку пустую внизу добавил, согласно спецификации RSR-2)
Расскажу после, чем закончилось) когда будет ответ.
Не в сети
не заметил что тут должен быть $end - 'end'
$end = Carbon::parse($request->get('start'));
будем внимательнее к мелочам, друзья )
Не в сети
Страницы 1