using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Linq.Expressions; using System.Windows.Data; using InABox.Clients; using InABox.Configuration; using InABox.Core; using InABox.DynamicGrid; using InABox.WPF; using PRS.Shared; using Stripe; namespace PRSServer.Forms.DatabaseLicense; public class LicenseRegistrationGrid : DynamicGrid { public override void LoadEditorButtons(LicenseRegistrationDetails item, DynamicEditorButtons buttons) { base.LoadEditorButtons(item, buttons); buttons.Add("Get Info", null, null, (sender, o) => LoadCompanyInfo(sender)); } protected override void Reload(Filters criteria, Columns columns, ref SortOrder? sort, Action action) { } protected override LicenseRegistrationDetails LoadItem(CoreRow row) { return new LicenseRegistrationDetails(); } protected override void DoValidate(LicenseRegistrationDetails[] items, List errors) { base.DoValidate(items, errors); var validates = new Dictionary>() { // { nameof(LicenseRegistrationDetails.Company.CompanyName), x=>x.Company.CompanyName }, // { nameof(LicenseRegistrationDetails.Company.ABN), x=>x.Company.ABN }, // { nameof(LicenseRegistrationDetails.Company.Email), x=>x.Company.Email }, // { nameof(LicenseRegistrationDetails.Company.Telephone), x=>x.Company.Telephone }, // { nameof(LicenseRegistrationDetails.Company.PostalAddress.Street), x=>x.Company.PostalAddress.Street }, // { nameof(LicenseRegistrationDetails.Company.PostalAddress.City), x=>x.Company.PostalAddress.City }, // { nameof(LicenseRegistrationDetails.Company.PostalAddress.State), x=>x.Company.PostalAddress.State }, // { nameof(LicenseRegistrationDetails.Company.PostalAddress.PostCode), x=>x.Company.PostalAddress.PostCode }, // { nameof(LicenseRegistrationDetails.Card.CardNumber), x=>x.Card.CardNumber }, // { nameof(LicenseRegistrationDetails.Card.Month), x=>x.Card.Month }, // { nameof(LicenseRegistrationDetails.Card.Year), x=>x.Card.Year }, // { nameof(LicenseRegistrationDetails.Card.Cvv), x=>x.Card.Cvv }, }; foreach (var key in validates.Keys) { if (items.Any(x => string.IsNullOrWhiteSpace(validates[key](x)))) errors.Add($"{key.SplitCamelCase()} may not be blank!"); } } public override void SaveItem(LicenseRegistrationDetails item) { } protected override void DeleteItems(params CoreRow[] rows) { } protected override void Init() { } protected override void DoReconfigure(FluentList options) { } public void LoadCompanyInfo(object sender) { if (sender is EmbeddedDynamicEditorForm form) { var info = new Client().Query().Rows.FirstOrDefault()?.ToObject() ?? new CompanyInformation(); void UpdateEditor(Expression> property, String value) { var editor = form.FindEditor(CoreUtils.GetFullPropertyName(property,".")); editor.SetValue("Value",value); } UpdateEditor(x=>x.Company.CompanyName, info.CompanyName); UpdateEditor(x=>x.Company.ABN, info.ABN); UpdateEditor(x=>x.Company.Telephone, info.Telephone); UpdateEditor(x=>x.Company.Email, info.Email); UpdateEditor(x=>x.Company.PostalAddress.Street, info.PostalAddress.Street); UpdateEditor(x=>x.Company.PostalAddress.City, info.PostalAddress.City); UpdateEditor(x=>x.Company.PostalAddress.State, info.PostalAddress.State); UpdateEditor(x=>x.Company.PostalAddress.PostCode, info.PostalAddress.PostCode); UpdateEditor(x=>x.Company.DeliveryAddress.Street, info.DeliveryAddress.Street); UpdateEditor(x=>x.Company.DeliveryAddress.City, info.DeliveryAddress.City); UpdateEditor(x=>x.Company.DeliveryAddress.State, info.DeliveryAddress.State); UpdateEditor(x=>x.Company.DeliveryAddress.PostCode, info.DeliveryAddress.PostCode); } } }