Try your search with a different keyword or use * as a wildcard.
@model DiscountModel
<script src="~/lib_npm/jsrender/jsrender.min.js" asp-location="Head"></script>
<div class="card-body">
<div class="cards-group">
@if (Model.Id > 0)
{
<p>
@T("Admin.Promotions.Discounts.Requirements.Description")
</p>
<script>
$(function() {
$("#@Html.IdFor(model => model.AddDiscountRequirement)").change(loadNewRequirementBox);
//load add requirement box
loadNewRequirementBox();
//load existing requirements
loadRequirements();
//adding requirement event
$("#discountRequirementContainer").on('nopnewdiscountruleadded', function(event, newRequirementId) {
var parentId = $("#@Html.IdFor(model => model.RequirementGroupId)").val();
loadRequirements(newRequirementId, parentId);
});
});
//load HTML for adding requirement
function loadNewRequirementBox() {
//load URL
var ruleSystemName = $("#@Html.IdFor(model => model.AddDiscountRequirement)").val();
if (ruleSystemName) {
var groupsElement = $("#@Html.IdFor(model => model.RequirementGroupId)");
if (groupsElement.find('option').length > 1) {
$("#pnlGroup").showElement();
}
else {
$("#pnlGroup").hideElement();
}
if (ruleSystemName == 'AddGroup') {
$("#pnlAddNewGroup").showElement();
$("#pnlGroupName").showElement();
$('#addrequirementplaceholder').html('');
}
else {
$("#pnlAddNewGroup").hideElement();
$("#pnlGroupName").hideElement();
$.ajax({
cache: false,
url: "@(Url.Action("GetDiscountRequirementConfigurationUrl", "Discount"))",
data: {
"systemName": ruleSystemName,
"discountId": @Model.Id
},
success: function (data, textStatus, jqXHR) {
loadRequirementIntoBox(data.url, '#addrequirementplaceholder');
},
error: function (jqXHR, textStatus, errorThrown) {
$('#addrequirementplaceholder').html('Failed to load requirement URL');
}
});
}
} else {
$("#pnlGroupName").hideElement();
$("#pnlGroup").hideElement();
$("#pnlAddNewGroup").hideElement();
$('#addrequirementplaceholder').html('');
}
};
//load requirement HTML
function loadRequirementIntoBox(configureRuleUrl, placeholderName) {
$.ajax({
cache: false,
url: configureRuleUrl,
dataType: "html",
success: function (data, textStatus, jqXHR) {
$(placeholderName).html(data);
},
error: function (jqXHR, textStatus, errorThrown) {
$(placeholderName).html('Failed to load requirement content.');
}
});
};
function loadRequirements(discountRequirementId, parentId, interactionTypeId, deleteRequirement) {
var postData = {
discountId: @Model.Id,
discountRequirementId: (typeof discountRequirementId === 'undefined' ? 0 : discountRequirementId),
parentId: (typeof parentId === 'undefined' ? null : parentId),
interactionTypeId: (typeof interactionTypeId === 'undefined' ? null : interactionTypeId),
deleteRequirement: (typeof deleteRequirement === 'undefined' ? false : deleteRequirement)
};
addAntiForgeryToken(postData);
$.ajax({
cache: false,
type: "POST",
url: "@(Url.Action("GetDiscountRequirements", "Discount"))",
data: postData,
success: function (data, textStatus, jqXHR) {
//set requirements
loadRequirementBoxes(data.Requirements, "#discountRequirementContainer", true);
//set available groups
var groupsElement = $("#@Html.IdFor(model => model.RequirementGroupId)");
groupsElement.html('');
$.each(data.AvailableGroups, function (id, option) {
groupsElement.append($('<option></option>').val(option.Value).html(option.Text));
});
var ruleSystemName = $("#@Html.IdFor(model => model.AddDiscountRequirement)").val();
if (ruleSystemName && groupsElement.find('option').length > 1) {
$("#pnlGroup").showElement();
}
else {
$("#pnlGroup").hideElement();
}
},
error: function (jqXHR, textStatus, errorThrown) {
$("#getDiscountRequirementsAlert").trigger("click");
}
});
};
//load HTML for exisiting requirements
function loadRequirementBoxes(requirements, placeholder, hideEmptyString) {
if (requirements.length > 0 || hideEmptyString)
$(placeholder).html('');
else
$(placeholder).html('@T("Admin.Promotions.Discounts.Requirements.GroupIsEmpty")');
$(placeholder).append(
$("#discountRequirementTemplate").render(requirements)
);
for (var i = 0; i < requirements.length; i++) {
var placeholderName = '#editrequirementplaceholder' + requirements[i].DiscountRequirementId;
$(placeholderName).html('loading...');
if (requirements[i].IsGroup) {
loadRequirementBoxes(requirements[i].ChildRequirements, placeholderName, false);
}
else {
loadRequirementIntoBox(requirements[i].ConfigurationUrl, placeholderName);
}
}
};
//add new group
function addNewGroup() {
var postData = {
discountId: @Model.Id,
name: $("#@Html.IdFor(model => model.GroupName)").val(),
};
addAntiForgeryToken(postData);
$.ajax({
cache: false,
type: "POST",
data: postData,
url: "@(Url.Action("AddNewGroup", "Discount"))",
success: function (data, textStatus, jqXHR) {
$("#discountRequirementContainer").trigger('nopnewdiscountruleadded', [data.NewRequirementId]);
},
error: function (jqXHR, textStatus, errorThrown) {
$("#failedToSave").trigger("click");
}
});
};
//delete requirement rule
function deleteRequirement(discountRequirementId) {
loadRequirements(discountRequirementId, null, null, true);
};
//change interaction type
function changeInteraction(discountRequirementId, parentId, typeId) {
loadRequirements(discountRequirementId, parentId, typeId);
};
</script>
<!-- Template container -->
<div id="discountRequirementContainer"></div>
<!-- Discount requirement template -->
<script id="discountRequirementTemplate" type="text/x-jsrender">
<div class="requirement-container {{if IsGroup}}requirement-group{{/if}}" id="editrequirement{{>DiscountRequirementId}}">
<div class="requirement-heading clearfix">
{{if IsGroup}}
<span class="float-left margin-r-5">
@T("Admin.Promotions.Discounts.Requirements.RequirementGroup.Title")
<i>{{:RuleName}}</i>
</span>
<div class="interaction-type float-left clearfix">
<span class="float-left margin-r-10">@T("Admin.Promotions.Discounts.Requirements.InteractionTypeInGroup")</span>
<select class="form-control input-sm float-left" id="interactiontype{{>DiscountRequirementId}}"
name="interactiontype{{>DiscountRequirementId}}"
onchange="changeInteraction({{> DiscountRequirementId}}, {{if ParentId}} {{>ParentId}} {{else}} null {{/if}}, this.value)">
{{for AvailableInteractionTypes}}
{{if Selected}}
<option value="{{>Value}}" selected>{{>Text}}</option>
{{else}}
<option value="{{>Value}}">{{>Text}}</option>
{{/if}}
{{/for}}
</select>
</div>
{{else}}
<div class="float-left">
@T("Admin.Promotions.Discounts.Requirements.Requirement.Title")
<i>{{:RuleName}}</i>
</div>
{{/if}}
{{if ParentId}}
<button type="button" class="btn btn-link" id="deleterequirement{{>DiscountRequirementId}}" onclick="deleteRequirement({{>DiscountRequirementId}})">
<i class="far fa-trash-can"></i>
{{if IsGroup}}
@T("Admin.Promotions.Discounts.Requirements.RemoveGroup")
{{else}}
@T("Admin.Promotions.Discounts.Requirements.RemoveRequirement")
{{/if}}
</button>
{{/if}}
</div>
<div class="requirement-body">
<div id="editrequirementplaceholder{{>DiscountRequirementId}}"></div>
</div>
</div>
{{if !IsLastInGroup}}
<div class="interaction-type-label">
{{>InteractionType}}
</div>
{{/if}}
</script>
<div class="card card-default card-add-requirement">
<div class="card-header">
@T("Admin.Promotions.Discounts.Requirements.AddNew")
</div>
<div class="card-body">
<div class="form-group row">
<div class="col-md-3">
<nop-label asp-for="AddDiscountRequirement" />
</div>
<div class="col-md-9">
<nop-select asp-for="AddDiscountRequirement" asp-items="Model.AvailableDiscountRequirementRules" />
<span asp-validation-for="AddDiscountRequirement"></span>
</div>
</div>
<div class="form-group row d-none" id="pnlGroup">
<div class="col-md-3">
<nop-label asp-for="RequirementGroupId" />
</div>
<div class="col-md-9">
<nop-select asp-for="RequirementGroupId" asp-items="Model.AvailableRequirementGroups" />
<span asp-validation-for="RequirementGroupId"></span>
</div>
</div>
<div id="addrequirementplaceholder"></div>
<div class="form-group row d-none" id="pnlGroupName">
<div class="col-md-3">
<nop-label asp-for="GroupName" />
</div>
<div class="col-md-9">
<nop-editor asp-for="GroupName" />
<span asp-validation-for="GroupName"></span>
</div>
</div>
<div class="form-group row d-none" id="pnlAddNewGroup">
<div class="col-md-9 offset-md-3">
<button type="button" id="saverequirement" class="btn btn-primary" onclick="addNewGroup()">@T("Admin.Common.Save")</button>
</div>
</div>
</div>
</div>
}
else
{
<div class="card card-default">
<div class="card-body">
@T("Admin.Promotions.Discounts.Requirements.SaveBeforeEdit")
</div>
</div>
}
</div>
<nop-alert asp-alert-id="failedToSave" asp-alert-message="@T("Admin.Promotions.Discounts.Requirements.Alert.FailedToSave")" />
<nop-alert asp-alert-id="getDiscountRequirementsAlert" asp-alert-message="@T("Admin.Promotions.Discounts.Requirements.Alert.FailedGetDiscountRequirements")" />
</div>