123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- <?php
- namespace App\Models;
- use Illuminate\Database\Eloquent\Model;
- use DB;
- use OwenIt\Auditing\Contracts\Audit;
- use OwenIt\Auditing\Contracts\Auditable;
- class Orders extends Model implements Auditable
- {
- use \OwenIt\Auditing\Auditable;
- protected $auditInclude = [
- 'status',
- ];
- //
- protected $table = "tb_dm_orders";
- public function waiters(){
- return $this->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);
- }
- }
|