FruitBank/Presentation/Nop.Web/Areas/Admin/Views/Customer/_CreateOrUpdate.Info.cshtml

533 lines
20 KiB
Plaintext

@model CustomerModel
@using Newtonsoft.Json
@if (Model.CountryEnabled && Model.StateProvinceEnabled)
{
<script>
$(function() {
$("#@Html.IdFor(model => model.CountryId)").change(function() {
var selectedItem = $(this).val();
var ddlStates = $("#@Html.IdFor(model => model.StateProvinceId)");
var postData = {
countryId: selectedItem,
addSelectStateItem: "true"
};
$.ajax({
cache: false,
type: "GET",
url: "@(Url.Action("GetStatesByCountryId", "Country"))",
data: postData,
success: function (data, textStatus, jqXHR) {
ddlStates.html('');
$.each(data, function(id, option) {
ddlStates.append($('<option></option>').val(option.id).html(option.name));
});
},
error: function (jqXHR, textStatus, errorThrown) {
$("#statesAlert").trigger("click");
}
});
});
});
</script>
}
<div class="card-body">
@if (Model.UsernamesEnabled)
{
<div class="form-group row">
<div class="col-md-3">
<nop-label asp-for="Username" />
</div>
<div class="col-md-9">
<nop-editor asp-for="Username" />
<span asp-validation-for="Username"></span>
</div>
</div>
}
<div class="form-group row">
<div class="col-md-3">
<nop-label asp-for="Email" />
</div>
<div class="col-md-9">
<nop-editor asp-for="Email" />
<span asp-validation-for="Email"></span>
</div>
</div>
<div class="form-group row">
<div class="col-md-3">
<nop-label asp-for="Password" />
</div>
<div class="col-md-9">
<div class="input-group">
<nop-editor asp-for="Password" html-attributes="@(new { autocomplete = "new-password" })"/>
<div class="input-group-append">
@if (Model.Id > 0)
{
<button type="submit" name="changepassword" class="btn btn-info">
@T("Admin.Customers.Customers.Fields.Password.Change")
</button>
}
</div>
</div>
<span asp-validation-for="Password"></span>
</div>
</div>
<div class="form-group row">
<div class="col-md-3">
<nop-label asp-for="FirstName" />
</div>
<div class="col-md-9">
<nop-editor asp-for="FirstName" />
<span asp-validation-for="FirstName"></span>
</div>
</div>
<div class="form-group row">
<div class="col-md-3">
<nop-label asp-for="LastName" />
</div>
<div class="col-md-9">
<nop-editor asp-for="LastName" />
<span asp-validation-for="LastName"></span>
</div>
</div>
@if (Model.GenderEnabled)
{
<div class="form-group row">
<div class="col-md-3">
<nop-label asp-for="Gender" />
</div>
<div class="col-md-9">
<div class="raw">
<div class="form-check">
<input type="radio" class="form-check-input" name="Gender" id="Gender_Male" value="M" @(Model.Gender == "M" ? Html.Raw("checked") : null)>
<label class="form-check-label" for="Gender_Male">
@T("Admin.Customers.Customers.Fields.Gender.Male")
</label>
</div>
<div class="form-check">
<input type="radio" class="form-check-input" name="Gender" id="Gender_Female" value="F" @(Model.Gender == "F" ? Html.Raw("checked") : null)>
<label class="form-check-label" for="Gender_Female">
@T("Admin.Customers.Customers.Fields.Gender.Female")
</label>
</div>
@if (Model.NeutralGenderEnabled)
{
<div class="form-check">
<input type="radio" class="form-check-input" name="Gender" id="Gender_Neutral" value="N" @(Model.Gender == "N" ? Html.Raw("checked") : null)>
<label class="form-check-label" for="Gender_Female">
@T("Admin.Customers.Customers.Fields.Gender.Neutral")
</label>
</div>
}
</div>
</div>
</div>
}
@if (Model.DateOfBirthEnabled)
{
<div class="form-group row">
<div class="col-md-3">
<nop-label asp-for="DateOfBirth" />
</div>
<div class="col-md-9">
<nop-editor asp-for="DateOfBirth" />
<span asp-validation-for="DateOfBirth"></span>
</div>
</div>
}
@if (Model.CompanyEnabled)
{
<div class="form-group row">
<div class="col-md-3">
<nop-label asp-for="Company" />
</div>
<div class="col-md-9">
<nop-editor asp-for="Company" />
<span asp-validation-for="Company"></span>
</div>
</div>
}
@if (Model.StreetAddressEnabled)
{
<div class="form-group row">
<div class="col-md-3">
<nop-label asp-for="StreetAddress" />
</div>
<div class="col-md-9">
<nop-editor asp-for="StreetAddress" />
<span asp-validation-for="StreetAddress"></span>
</div>
</div>
}
@if (Model.StreetAddress2Enabled)
{
<div class="form-group row">
<div class="col-md-3">
<nop-label asp-for="StreetAddress2" />
</div>
<div class="col-md-9">
<nop-editor asp-for="StreetAddress2" />
<span asp-validation-for="StreetAddress2"></span>
</div>
</div>
}
@if (Model.ZipPostalCodeEnabled)
{
<div class="form-group row">
<div class="col-md-3">
<nop-label asp-for="ZipPostalCode" />
</div>
<div class="col-md-9">
<nop-editor asp-for="ZipPostalCode" />
<span asp-validation-for="ZipPostalCode"></span>
</div>
</div>
}
@if (Model.CityEnabled)
{
<div class="form-group row">
<div class="col-md-3">
<nop-label asp-for="City" />
</div>
<div class="col-md-9">
<nop-editor asp-for="City" />
<span asp-validation-for="City"></span>
</div>
</div>
}
@if (Model.CountyEnabled)
{
<div class="form-group row">
<div class="col-md-3">
<nop-label asp-for="County" />
</div>
<div class="col-md-9">
<nop-editor asp-for="County" />
<span asp-validation-for="County"></span>
</div>
</div>
}
@if (Model.CountryEnabled)
{
<div class="form-group row">
<div class="col-md-3">
<nop-label asp-for="CountryId" />
</div>
<div class="col-md-9">
<nop-select asp-for="CountryId" asp-items="Model.AvailableCountries" />
<span asp-validation-for="CountryId"></span>
</div>
</div>
}
@if (Model.CountryEnabled && Model.StateProvinceEnabled)
{
<div class="form-group row">
<div class="col-md-3">
<nop-label asp-for="StateProvinceId" />
</div>
<div class="col-md-9">
<nop-select asp-for="StateProvinceId" asp-items="Model.AvailableStates" />
<span asp-validation-for="StateProvinceId"></span>
</div>
</div>
}
@if (Model.PhoneEnabled)
{
<div class="form-group row">
<div class="col-md-3">
<nop-label asp-for="Phone" />
</div>
<div class="col-md-9">
<nop-editor asp-for="Phone" />
<span asp-validation-for="Phone"></span>
</div>
</div>
}
@if (Model.FaxEnabled)
{
<div class="form-group row">
<div class="col-md-3">
<nop-label asp-for="Fax" />
</div>
<div class="col-md-9">
<nop-editor asp-for="Fax" />
<span asp-validation-for="Fax"></span>
</div>
</div>
}
@if (Model.CustomerAttributes.Count > 0)
{
@await Html.PartialAsync("_CustomerAttributes", Model.CustomerAttributes)
}
<div class="form-group row">
<div class="col-md-3">
<nop-label asp-for="IsTaxExempt" />
</div>
<div class="col-md-9">
<nop-editor asp-for="IsTaxExempt" />
<span asp-validation-for="IsTaxExempt"></span>
</div>
</div>
@if (Model.DisplayVatNumber)
{
<div class="form-group row">
<div class="col-md-3">
<nop-label asp-for="VatNumber" />
</div>
<div class="col-md-9">
<nop-editor asp-for="VatNumber" />
<div class="margin-t-5">
(@string.Format(T("Admin.Customers.Customers.Fields.VatNumberStatus").Text, Model.VatNumberStatusNote))
<button type="submit" name="markVatNumberAsValid" class="btn btn-primary">
@T("Admin.Customers.Customers.Fields.VatNumber.MarkAsValid")
</button>
<button type="submit" name="markVatNumberAsInvalid" class="btn btn-danger">
@T("Admin.Customers.Customers.Fields.VatNumber.MarkAsInvalid")
</button>
</div>
<span asp-validation-for="VatNumber"></span>
</div>
</div>
}
@if (Model.AllowCustomersToSetTimeZone)
{
<div class="form-group row">
<div class="col-md-3">
<nop-label asp-for="TimeZoneId" />
</div>
<div class="col-md-9">
<nop-select asp-for="TimeZoneId" asp-items="Model.AvailableTimeZones" />
<span asp-validation-for="TimeZoneId"></span>
</div>
</div>
}
@if (Model.AvailableNewsletterSubscriptionStores != null && Model.AvailableNewsletterSubscriptionStores.Count > 0)
{
<div class="form-group row">
<div class="col-md-3">
<nop-label asp-for="SelectedNewsletterSubscriptionStoreIds" />
</div>
<div class="col-md-9">
<div class="input-group-append">
<div class="input-group">
<nop-select asp-for="SelectedNewsletterSubscriptionStoreIds" asp-items="Model.AvailableNewsletterSubscriptionStores" asp-multiple="true" />
</div>
<div class="input-group-btn"></div>
</div>
<script>
$(function() {
var newsletterSubscriptionStoreIdsInput = $('#@Html.IdFor(model => model.SelectedNewsletterSubscriptionStoreIds)').select2();
});
</script>
</div>
</div>
}
<div class="form-group row">
<div class="col-md-3">
<nop-label asp-for="SelectedCustomerRoleIds" />
</div>
<div class="col-md-9">
<div class="input-group-append input-group-required">
<div class="input-group">
<nop-select asp-for="SelectedCustomerRoleIds" asp-items="Model.AvailableCustomerRoles" asp-multiple="true" />
</div>
<div class="input-group-btn">
<nop-required />
</div>
</div>
<script>
$(function() {
var customerRoleIdsInput = $('#@Html.IdFor(model => model.SelectedCustomerRoleIds)').select2({
closeOnSelect: false,
@if (!Model.AvailableCustomerRoles.Any())
{
<text>
disabled: true,
placeholder: '@T("Admin.Customers.Customers.Fields.CustomerRoles.NoRoles")',
</text>
}
});
});
</script>
</div>
</div>
<div class="form-group row">
<div class="col-md-3">
<nop-label asp-for="VendorId" />
</div>
<div class="col-md-9">
<nop-select asp-for="VendorId" asp-items="Model.AvailableVendors" />
<span asp-validation-for="VendorId"></span>
<em>@T("Admin.Customers.Customers.VendorShouldBeInVendorsRole")</em>
</div>
</div>
@if (Model.AffiliateId > 0)
{
<div class="form-group row">
<div class="col-md-3">
<nop-label asp-for="AffiliateId" />
</div>
<div class="col-md-9">
<a asp-controller="Affiliate" asp-action="Edit" asp-route-id="@Model.AffiliateId">@Model.AffiliateName - @T("Admin.Common.View")</a>
<button type="submit" name="remove-affiliate" class="btn btn-danger">
@T("Admin.Customers.Customers.Fields.Affiliate.Remove")
</button>
</div>
</div>
}
<div class="form-group row">
<div class="col-md-3">
<nop-label asp-for="Active" />
</div>
<div class="col-md-9">
<nop-editor asp-for="Active" />
<span asp-validation-for="Active"></span>
</div>
</div>
@if (!string.IsNullOrEmpty(Model.MultiFactorAuthenticationProvider))
{
<div class="form-group row">
<div class="col-md-3">
<nop-label asp-for="MultiFactorAuthenticationProvider" />
</div>
<div class="col-md-9">
<div class="input-group">
<nop-editor asp-for="MultiFactorAuthenticationProvider" html-attributes="@(new { disabled = true })"/>
<div class="input-group-append">
@if (Model.Id > 0)
{
<a id="mfa-bind-delete" href="#" class="btn btn-danger">
@T("Admin.Common.Delete")
</a>
}
</div>
</div>
<span asp-validation-for="MultiFactorAuthenticationProvider"></span>
</div>
</div>
}
@if (Model.Id > 0 && Model.CustomerAssociatedExternalAuthRecordsSearchModel.AssociatedExternalAuthRecords.Count > 0)
{
<div class="form-group row">
<div class="col-md-3">
<nop-label asp-for="CustomerAssociatedExternalAuthRecordsSearchModel.AssociatedExternalAuthRecords" />
</div>
<div class="col-md-9">
@await Html.PartialAsync("Table", new DataTablesModel
{
Name = "externalauthrecords-grid",
Paging = false,
ServerSide = false,
Length = Model.CustomerAssociatedExternalAuthRecordsSearchModel.PageSize,
LengthMenu = Model.CustomerAssociatedExternalAuthRecordsSearchModel.AvailablePageSizes,
ColumnCollection = new List<ColumnProperty>
{
new ColumnProperty(nameof(CustomerAssociatedExternalAuthModel.AuthMethodName))
{
Title = T("Admin.Customers.Customers.AssociatedExternalAuth.Fields.AuthMethodName").Text,
Width = "100"
},
new ColumnProperty(nameof(CustomerAssociatedExternalAuthModel.Email))
{
Title = T("Admin.Customers.Customers.AssociatedExternalAuth.Fields.Email").Text,
Width = "100"
},
new ColumnProperty(nameof(CustomerAssociatedExternalAuthModel.ExternalIdentifier))
{
Title = T("Admin.Customers.Customers.AssociatedExternalAuth.Fields.ExternalIdentifier").Text,
Width = "300"
}
},
Data = JsonConvert.SerializeObject(Model.CustomerAssociatedExternalAuthRecordsSearchModel.AssociatedExternalAuthRecords.Select(externalAuthRecord => new
{
//We must display this data encoded, since the data can contain Unicode characters or malicious exploits
AuthMethodName = WebUtility.HtmlEncode(externalAuthRecord.AuthMethodName),
Email = WebUtility.HtmlEncode(externalAuthRecord.Email),
ExternalIdentifier = WebUtility.HtmlEncode(externalAuthRecord.ExternalIdentifier)
}).ToList())
})
</div>
</div>
}
<div class="form-group row">
<div class="col-md-3">
<nop-label asp-for="MustChangePassword" />
</div>
<div class="col-md-9">
<nop-editor asp-for="MustChangePassword" />
<span asp-validation-for="MustChangePassword"></span>
</div>
</div>
<div class="form-group row">
<div class="col-md-3">
<nop-label asp-for="AdminComment" />
</div>
<div class="col-md-9">
<nop-textarea asp-for="AdminComment" />
<span asp-validation-for="AdminComment"></span>
</div>
</div>
@if (Model.DisplayRegisteredInStore)
{
<div class="form-group row">
<div class="col-md-3">
<nop-label asp-for="RegisteredInStore" />
</div>
<div class="col-md-9">
<div class="form-text-row">@Model.RegisteredInStore</div>
</div>
</div>
}
@if (Model.Id > 0)
{
<div class="form-group row">
<div class="col-md-3">
<nop-label asp-for="LastIpAddress" />
</div>
<div class="col-md-9">
<div class="form-text-row">@Model.LastIpAddress</div>
</div>
</div>
}
@if (Model.Id > 0)
{
<div class="form-group row">
<div class="col-md-3">
<nop-label asp-for="CreatedOn" />
</div>
<div class="col-md-9">
<div class="form-text-row">@Model.CreatedOn</div>
</div>
</div>
}
@if (Model.Id > 0)
{
<div class="form-group row">
<div class="col-md-3">
<nop-label asp-for="LastActivityDate" />
</div>
<div class="col-md-9">
<div class="form-text-row">@Model.LastActivityDate</div>
</div>
</div>
}
@if (Model.Id > 0 && !string.IsNullOrEmpty(Model.LastVisitedPage))
{
<div class="form-group row">
<div class="col-md-3">
<nop-label asp-for="LastVisitedPage" />
</div>
<div class="col-md-9">
<div class="form-text-row">@Model.LastVisitedPage</div>
</div>
</div>
}
</div>
<nop-alert asp-alert-id="statesAlert" asp-alert-message="@T("Admin.Common.Alert.States.Failed")" />