hasOne('App\Models\Waiters','id','waiter_id'); } public function tables(){ return $this->hasOne('App\Models\RestoTables','id','table_id'); } public function orderItems(){ return $this->hasMany('App\Models\OrderItems','order_id','id')->where("status",1); } public function orderCollectivePrice(){ return $this->hasMany('App\Models\OrderItems','order_id','id')->select(DB::raw('sum(tb_dm_order_items.qty*tb_dm_order_items.price) AS total_price'))->where("status",1); } public function order_activities(){ return $this->hasMany('App\Models\OrderActivities','order_id','id')->orderBy('created_at','DESC'); } public function customers(){ return $this->belongsTo('App\Models\Customers','customer_id','id'); } public function recipients(){ return $this->belongsTo('App\Models\Recipients','recipient_id','id'); } public function restaurants(){ return $this->belongsTo('App\Models\Restaurants','resto_id','id'); } public function outlet(){ return $this->belongsTo('App\Models\Outlets','outlet_id','id'); } public function order_with_discounts(){ return $this->hasOne('App\Models\DiscountWithOrder','order_id','id')->with('discounts'); } public function loyalty_with_orders(){ return $this->hasOne('App\Models\CustomerLoyaltyHistories','order_id','id')->where('type','used'); } public function getActualPriceAttribute(){ $discount = ($this->order_with_discounts); $final_price =$this->total_price; $discounted_delivery_price = 0; if(isset($discount) && $discount->discount_type=="percentage"){ $is_whole_order_discount = $discount->is_for_whole_order=="Yes"?true:false; if($discount->discount_type=="percentage") $applied_discount = $discount->discount_value/100; else $applied_discount = $discount->discount_value; if($discount->is_delivery_discount=="Yes"){ if($discount->delivery_discount_type=="percentage") $applied_delivery_discount = $discount->delivery_discount_value/100; else $applied_delivery_discount = $discount->delivery_discount_value; } if(isset($discount) && $discount->is_delivery_discount=="Yes" && $this->delivery_fee > 0){ if($discount->delivery_discount_type=="percentage") $discounted_delivery_price = $this->delivery_fee * $applied_delivery_discount; else $discounted_delivery_price = $applied_delivery_discount; } if($is_whole_order_discount){ $final_price = $final_price - ($final_price * $applied_discount) ; } } $order_loyalty = $this->loyalty_with_orders; $is_loyalty = isset($order_loyalty)?true:false; if($is_loyalty){ $final_price = $final_price - $order_loyalty->used_redeemable_amount; } $final_price = $final_price + ($this->delivery_fee - $discounted_delivery_price); return number_format($final_price); } }