Как запретить принимать предложение на автомобиль, который уже был принят Laravel - PullRequest
0 голосов
/ 22 марта 2019

Я пытаюсь подробно объяснить код.Продавец получает больше предложения для своего автомобиля.Когда он принимает определенное предложение для конкретной машины, я хочу запретить ему снова принимать другие предложения для той же машины.Пример.Продавец принял предложение id.2, цена 3000, car_id 4. Продавец больше не может принимать предложение id.3 или 4 или 5, цена 4000, car_id 4. Посмотрите мой код и базу данных

   public function accept($id){
        $userId =  Auth::user();
        $offerId = Offer::with('user')->find($id);
        if(!$offerId){
            return response()->json([
                'message' => 'Oooops this offer does not exist or is currently unavailable'
            ]);
        }
        if($offerId->accepted === 1){
            return response()->json([
                'message' => 'Oooops this offer is already accepted'
            ]);
        }

     $res =   DB::table('offers')
            ->where('id', $id)
            ->update(['accepted' => 1]);
     if(!$res){
         return response()->json([
             'message' => 'Ooooops the offer is already accepted'
         ]);
     }
        Mail::to($offerId->user->email)->send(new AcceptOffer());
        return response()->json([
            'message' => 'Successfully accepted offer',
            'offer' => $id
        ]);

    }

Моя таблица Предложение с манипуляцией с предложением:

https://imgur.com/ccs4abV

Отношение между предложением и автомобилем и пользователем:

Автомобиль:

public function user() {
    return $this->belongsTo('App\User');
}
public function offer() {
    return $this->hasMany('App\Offer');
}

Предложение:

public function car() {
    return $this->belongsTo('App\Car');
}
public function user() {
    return $this->belongsTo('App\User');
}

Пользователь:

public function cars(){
    return $this->hasMany('App\Car');
}
public function offers(){
    return $this->hasMany('App\Offer');
}

1 Ответ

1 голос
/ 22 марта 2019

Просто проверьте, есть ли какое-то предложение для этого конкретного автомобиля, уже принятое.

$acceptedCount = Offer::where('car_id', $offerId->car_id)->where('accepted', 1)->count(); 
if($acceptedCount > 0){
    return response()->json([
         'message' => 'Another offer for this car was already accepted'
     ]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...