belongsTo(Customers::class, 'customer_id', 'id'); } /** * Campagne model relation * @return BelongsTo */ public function campagne() { return $this->belongsTo(Campagne::class, 'campagne_id', 'camp_id'); } /** * BasketContent model relation * @return HasMany */ public function contents() { return $this->hasMany(BasketContent::class); } public static function updateContent(Campagne $campagne, array $coupons, Customers $customer) { $basket = self::where(['campagne_id' => $campagne->camp_id, 'customer_id' => $customer->id])->first(); if (!$basket) { $basket = new Basket(); $basket->uuid = (string) Str::uuid(); $basket->campagne()->associate($campagne); $basket->customer()->associate($customer); $basket->save(); } foreach ($coupons as $couponId => $quantity) { $associatedCoupon = $campagne->coupons()->where('coupon_id', $couponId)->first(); if ($associatedCoupon) { $basketContent = BasketContent::where(['basket_id' => $basket->id, 'coupon_id' => $associatedCoupon->coupon_id])->first(); if ($basketContent) { $basketContent->quantity += $quantity; $basketContent->save(); } else { if ($quantity > 0) { $newBasketContent = new BasketContent(); $newBasketContent->basket_id = $basket->id; $newBasketContent->coupon_id = $associatedCoupon->coupon_id; $newBasketContent->quantity = $quantity; $newBasketContent->save(); } } } } return $basket; } }