Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 14.05.2021 10:41:19

Код ревью

Привет.
Собеседовали меня недавно и попросили сделать ревью кода на лету:

<?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)

Не в сети

#2 14.05.2021 14:13:21

Re: Код ревью

1) нету валидации реквестов
2) вынести логику в какой-нибудь сервис и избавиться от дублирования кода
3) работу с моделями вынести в репозитории
4) доставать паркинг через отношения из резервации

Не в сети

#3 14.05.2021 14:20:09

Re: Код ревью

Спасибо!
Я еще и строчку пустую внизу добавил, согласно спецификации RSR-2)
Расскажу после, чем закончилось) когда будет ответ.

Не в сети

#4 17.05.2021 12:06:04

Re: Код ревью

не заметил что тут должен быть $end - 'end'

$end = Carbon::parse($request->get('start'));

будем внимательнее к мелочам, друзья )

Не в сети

Подвал раздела