sarga/packages/Webkul/CartRule/src/Models/CartRule.php

126 lines
3.3 KiB
PHP
Raw Normal View History

2019-12-21 05:25:32 +00:00
<?php
namespace Webkul\CartRule\Models;
use Illuminate\Database\Eloquent\Model;
use Webkul\CartRule\Contracts\CartRule as CartRuleContract;
use Webkul\Core\Models\ChannelProxy;
use Webkul\Customer\Models\CustomerGroupProxy;
class CartRule extends Model implements CartRuleContract
{
2020-02-26 17:31:49 +00:00
protected $fillable = [
'name',
'description',
'starts_from',
'ends_till',
'status',
'coupon_type',
'use_auto_generation',
'usage_per_customer',
'uses_per_coupon',
'times_used',
'condition_type',
'conditions',
'actions',
'end_other_rules',
'uses_attribute_conditions',
'action_type',
'discount_amount',
'discount_quantity',
'discount_step',
'apply_to_shipping',
'free_shipping',
'sort_order',
];
2019-12-21 05:25:32 +00:00
protected $casts = [
'conditions' => 'array',
];
/**
* Get the channels that owns the cart rule.
2020-08-10 13:32:15 +00:00
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
2019-12-21 05:25:32 +00:00
*/
2020-08-10 13:32:15 +00:00
public function cart_rule_channels(): \Illuminate\Database\Eloquent\Relations\BelongsToMany
2019-12-21 05:25:32 +00:00
{
return $this->belongsToMany(ChannelProxy::modelClass(), 'cart_rule_channels');
}
2020-08-10 13:32:15 +00:00
/**
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
*
* @deprecated laravel standard should be used
*/
public function channels(): \Illuminate\Database\Eloquent\Relations\BelongsToMany
{
return $this->cart_rule_channels();
}
2019-12-21 05:25:32 +00:00
/**
* Get the customer groups that owns the cart rule.
2020-08-10 13:32:15 +00:00
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
2019-12-21 05:25:32 +00:00
*/
2020-08-10 13:32:15 +00:00
public function cart_rule_customer_groups(): \Illuminate\Database\Eloquent\Relations\BelongsToMany
2019-12-21 05:25:32 +00:00
{
return $this->belongsToMany(CustomerGroupProxy::modelClass(), 'cart_rule_customer_groups');
}
2020-08-10 13:32:15 +00:00
/**
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
*
* @deprecated laravel standard should be used
*/
public function customer_groups(): \Illuminate\Database\Eloquent\Relations\BelongsToMany
{
return $this->cart_rule_customer_groups();
}
2019-12-21 05:25:32 +00:00
/**
* Get the coupons that owns the cart rule.
2020-08-10 13:32:15 +00:00
*
* @return \Illuminate\Database\Eloquent\Relations\HasOne
2019-12-21 05:25:32 +00:00
*/
2020-08-10 13:32:15 +00:00
public function cart_rule_coupon(): \Illuminate\Database\Eloquent\Relations\HasOne
2019-12-21 05:25:32 +00:00
{
return $this->hasOne(CartRuleCouponProxy::modelClass());
}
2020-08-10 13:32:15 +00:00
/**
* @return \Illuminate\Database\Eloquent\Relations\HasOne
*
* @deprecated laravel standard should be used
*/
public function coupons(): \Illuminate\Database\Eloquent\Relations\HasOne
{
return $this->cart_rule_coupon();
}
2019-12-21 05:25:32 +00:00
/**
* Get primary coupon code for cart rule.
2020-08-10 13:32:15 +00:00
*
* @return \Illuminate\Database\Eloquent\Relations\HasOne
2019-12-21 05:25:32 +00:00
*/
2020-08-10 13:32:15 +00:00
public function coupon_code(): \Illuminate\Database\Eloquent\Relations\HasOne
2019-12-21 05:25:32 +00:00
{
2020-08-10 13:32:15 +00:00
return $this->cart_rule_coupon()->where('is_primary', 1);
2019-12-21 05:25:32 +00:00
}
/**
* Get primary coupon code for cart rule.
2020-08-10 13:32:15 +00:00
*
* @return string|void
2019-12-21 05:25:32 +00:00
*/
public function getCouponCodeAttribute()
{
$coupon = $this->coupon_code()->first();
2020-02-19 11:49:52 +00:00
if (! $coupon) {
2019-12-21 05:25:32 +00:00
return;
2020-02-19 11:49:52 +00:00
}
2019-12-21 05:25:32 +00:00
return $coupon->code;
}
}