| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 | 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<LicenseRegistrationDetails>{    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<LicenseRegistrationDetails> criteria, Columns<LicenseRegistrationDetails> columns, ref SortOrder<LicenseRegistrationDetails>? sort, Action<CoreTable, Exception> action)    {    }        protected override LicenseRegistrationDetails LoadItem(CoreRow row)    {        return new LicenseRegistrationDetails();    }        protected override void DoValidate(LicenseRegistrationDetails[] items, List<string> errors)    {        base.DoValidate(items, errors);        var validates = new Dictionary<String,Func<LicenseRegistrationDetails,String>>()        {            // { 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<DynamicGridOption> options)    {                }        public void LoadCompanyInfo(object sender)    {                        if (sender is EmbeddedDynamicEditorForm form)        {                        var info = new Client<CompanyInformation>().Query().Rows.FirstOrDefault()?.ToObject<CompanyInformation>() ??                       new CompanyInformation();                        void UpdateEditor(Expression<Func<LicenseRegistrationDetails,String>> 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);        }    }}
 |