catalog rule form underway

This commit is contained in:
Prashant Singh 2019-05-03 19:14:38 +05:30
parent 050271ded7
commit e2659f4dac
6 changed files with 147 additions and 26 deletions

View File

@ -764,8 +764,10 @@ return [
'add-cart-rule' => 'Add Cart Rule',
'create-catalog-rule' => 'Create Catalog Rule',
'create-cart-rule' => 'Create Cart Rule',
'create' => 'Create',
'save-btn-title' => 'Create',
'select-attr' => 'Select Attribute',
'select-attr-fam' => 'Select Attribute Family',
'select-cart-attr' => 'Select Cart Attribute',
'general-info' => [
'name' => 'Rule Name',
'description' => 'Description',

View File

@ -97,33 +97,76 @@
<label for="criteria" class="required">{{ __('admin::app.promotion.general-info.add-condition') }}</label>
<select type="text" class="control" name="criteria" v-model="criteria" v-validate="'required'" value="{{ old('channels') }}" data-vv-as="&quot;{{ __('admin::app.promotion.general-info.cust-groups') }}&quot;">
<option disabled="disabled">Select Criteria</option>
<option value="attribute">Attribute</option>
<option value="attribute_family">Attribute Family</option>
<option value="cart_attributes">Cart Attributes</option>
<option value="cart_attribute">Cart Attribute</option>
</select>
<span class="control-error" v-if="errors.has('criteria')">@{{ errors.first('criteria') }}</span>
</div>
<span class="btn btn-primary btn-lg" v-on:click="addCondition">Add Condition</span>
<span class="btn btn-primary btn-lg" v-on:click="addCondition">Select Condition</span>
</div>
<div class="selectors-set">
<div class="control-group" :class="[errors.has('attribute') ? 'has-error' : '']" v-if="enableAttribute">
<label for="attribute" class="required">{{ __('admin::app.promotion.general-info.add-attribute') }}</label>
<label for="attribute" class="required">{{ __('admin::app.promotion.select-attr') }}</label>
<select type="text" class="control" name="attribute" v-model="attribute" v-validate="'required'" value="{{ old('attribute') }}" data-vv-as="&quot;{{ __('admin::app.promotion.attribute') }}&quot;">
<option disabled="disabled">Select attribute</option>
<option v-for="attribute in attributes" value="attribute.id">@{{ attribute.name }}</option>
</select>
<span class="control-error" v-if="errors.has('attribute')">@{{ errors.first('attribute') }}</span>
</div>
<div class="control-group" :class="[errors.has('attribute_family') ? 'has-error' : '']" v-if="enableAttributeFamily">
<label for="attribute_family" class="required">{{ __('admin::app.promotion.select-attr-fam') }}</label>
<select type="text" class="control" v-model="attribute_family" v-validate="'required'" data-vv-as="&quot;{{ __('admin::app.promotion.attribute') }}&quot;">
<option disabled="disabled">Select Attribute Family</option>
<option v-for="attribute_family in attribute_families" value="attribute_family.id">@{{ attribute_family.name }}</option>
</select>
<span class="control-error" v-if="errors.has('attribute_family')">@{{ errors.first('attribute_family') }}</span>
</div>
<div class="control-group" :class="[errors.has('cart_attribute') ? 'has-error' : '']" v-if="enableCartAttribute">
<label for="cart_attribute" class="required">{{ __('admin::app.promotion.general-info.add-cart-attribute') }}</label>
<label for="cart_attribute" class="required">{{ __('admin::app.promotion.select-cart-attr') }}</label>
<select type="text" class="control" name="cart_attribute" v-model="cart_attribute" v-validate="'required'" value="{{ old('cart_attribute') }}" data-vv-as="&quot;{{ __('admin::app.promotion.general-info.cust-groups') }}&quot;">
<option disabled="disabled">Select Cart Attribute</option>
<option v-for="(cartAttribute, index) in this.criteria.cart" value="cartAttribute[index]">@{{ cartAttribute[index] }}</option>
</select>
<span class="control-error" v-if="errors.has('cart_attribute')">@{{ errors.first('cart_attribute') }}</span>
</div>
</div>
<div class="condition-set">
<div class="control-group" :class="[errors.has('cart_attr') ? 'has-error' : '']" v-if="enableCartAttrLine">
<label for="cart_attr" class="required">{{ __('admin::app.promotion.select-cart-attr') }}</label>
<input type="text" class="control" v-model="cart_attr.cart_attribute">
<input type="text" class="control" v-model="cart_attr.condition_one">
<input type="text" class="control" v-model="cart_attr.value_one">
<input type="text" class="control" v-model="cart_attr.condition_two">
<input type="text" class="control" v-model="cart_attr.value_two">
<span class="control-error" v-if="errors.has('cart_attr')">@{{ errors.first('cart_attr') }}</span>
</div>
<div class="control-group" :class="[errors.has('attr') ? 'has-error' : '']" v-if="enableAttrLine">
<label for="attr" class="required">{{ __('admin::app.promotion.select-attr') }}</label>
<input type="text" class="control" v-model="attr.attribute">
<input type="text" class="control" v-model="attr.condition_one">
<input type="text" class="control" v-model="attr.value_one">
<input type="text" class="control" v-model="attr.condition_two">
<input type="text" class="control" v-model="attr.value_two">
<span class="control-error" v-if="errors.has('attr')">@{{ errors.first('attr') }}</span>
</div>
<div class="control-group" :class="[errors.has('attr_fam') ? 'has-error' : '']" v-if="enableAttrFamLine">
<label for="attr_fam" class="required">{{ __('admin::app.promotion.select-attr') }}</label>
<input type="text" class="control" v-model="attr_fam.attribute">
<input type="text" class="control" v-model="attr_fam.condition_one">
<input type="text" class="control" v-model="attr_fam.value_one">
<input type="text" class="control" v-model="attr_fam.condition_two">
<input type="text" class="control" v-model="attr_fam.value_two">
<span class="control-error" v-if="errors.has('attr_fam')">@{{ errors.first('attr_fam') }}</span>
</div>
</div>
</div>
</script>
@ -133,36 +176,81 @@
inject: ['$validator'],
data() {
data () {
return {
criteria: @json($criteria[0]),
attributes: @json($criteria[1]),
attribute: null,
attribute_families: null,
name: null,
description: null,
attribute_families: @json($criteria[2]),
attribute_family: null,
cart_attribute: null,
channels: [],
criteria: @json($criteria[0]),
conditions: [],
cart_attr: {
cart_attribute : null,
condition_one: null,
value_one: null,
condition_two: null,
value_two: null
},
attr_family: {
attribute_family : null,
condition_one: null,
value_one: null,
condition_two: null,
value_two: null
},
attr: {
attribute : null,
condition_one: null,
value_one: null,
condition_two: null,
value_two: null
},
customer_groups: [],
criteria: null,
priority: 0,
starts_from: null,
description: null,
ends_till: null,
enableAttribute: false,
enableCartAttribute: false
enableCartAttribute: false,
enableAttributeFamily: false,
enableCartAttrLine: false,
enableAttrLine: false,
enableAttrFamLine: false,
name: null,
priority: 0,
starts_from: null
}
},
mounted() {
console.log(this.attribute);
mounted () {
console.log(this.criteria.cart);
for(index in this.criteria.cart) {
console.log(this.criteria.cart[index]);
}
},
methods: {
addCondition() {
if (this.criteria == "attribute_family") {
addCondition () {
if (this.criteria == "attribute" || this.criteria == "attribute_family" || this.criteria == "cart_attribute") {
this.condition_on = this.criteria;
} else {
alert('please try again');
}
if (this.condition_on == "attribute") {
this.attr.push();
this.enableAttribute = true;
this.enableCartAttribute = false;
} else if (this.criteria == "cart_attribute") {
this.enableAttributeFamily = false;
} else if (this.condition_on == "attribute_family") {
this.enableAttributeFamily = true;
this.enableAttribute = false;
this.enableCartAttribute = false;
} else {
this.enableCartAttribute = true;
this.enableAttributeFamily = false;
this.enableAttribute = false;
}
}

View File

@ -153,6 +153,23 @@ class AttributeFamilyRepository extends Repository
return $family;
}
public function getNameAndId()
{
$attributeFamilies = $this->model->all();
$trimmed = array();
foreach($attributeFamilies as $key => $attributeFamily) {
if ($attributeFamily->name != null || $attributeFamily->name != "") {
$trimmed[$key] = [
'id' => $attributeFamily->id,
'name' => $attributeFamily->name
];
}
}
return $trimmed;
}
/**
* @param $id
* @return void

View File

@ -222,10 +222,12 @@ class AttributeRepository extends Repository
$trimmed = array();
foreach($attributes as $key => $attribute) {
$trimmed[$key] = [
'id' => $attribute->id,
'name' => $attribute->name
];
if ($attribute->name != null || $attribute->name != "") {
$trimmed[$key] = [
'id' => $attribute->id,
'name' => $attribute->name
];
}
}
return $trimmed;

View File

@ -7,6 +7,7 @@ use Illuminate\Http\Response;
use Illuminate\Routing\Controller;
use Webkul\Attribute\Repositories\AttributeRepository as Attribute;
use Webkul\Attribute\Repositories\AttributeFamilyRepository as AttributeFamily;
/**
* Catalog Rule controller
@ -18,11 +19,13 @@ class CatalogRuleController extends Controller
{
protected $_config;
protected $attribute;
protected $attributeFamily;
public function __construct(Attribute $attribute)
public function __construct(Attribute $attribute, AttributeFamily $attributeFamily)
{
$this->_config = request('_config');
$this->attribute = $attribute;
$this->attributeFamily = $attributeFamily;
}
public function index()
@ -39,14 +42,22 @@ class CatalogRuleController extends Controller
2 => 'grand_total'
],
'product' => [
'attribute' => [
0 => 'attribute',
1 => 'attribute_groups',
2 => 'attribute_familes'
]
];
return view($this->_config['view'])->with('criteria', [$ruleCriterias, $this->attribute->getNameAndId()]);
$arr = array();
foreach($ruleCriterias as $key => $ruleCriteria) {
array_push($arr, $ruleCriteria);
}
$arr;
return view($this->_config['view'])->with('criteria', [$ruleCriterias, $this->attribute->getNameAndId(), $this->attributeFamily->getNameAndId()]);
}
public function store()

View File

@ -16,6 +16,7 @@ return [
'title' => 'Free Shipping',
'description' => 'This is a free shipping',
'active' => true,
'default_rate' => '0',
'class' => 'Webkul\Shipping\Carriers\Free',
]
];