Laravel по-русски
      
      
    Русское сообщество разработки на 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