LicenseRegistrationGrid.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics.CodeAnalysis;
  4. using System.Linq;
  5. using System.Linq.Expressions;
  6. using System.Windows.Data;
  7. using InABox.Clients;
  8. using InABox.Configuration;
  9. using InABox.Core;
  10. using InABox.DynamicGrid;
  11. using InABox.WPF;
  12. using PRS.Shared;
  13. using Stripe;
  14. namespace PRSServer.Forms.DatabaseLicense;
  15. public class LicenseRegistrationGrid : DynamicGrid<LicenseRegistrationDetails>
  16. {
  17. public override void LoadEditorButtons(LicenseRegistrationDetails item, DynamicEditorButtons buttons)
  18. {
  19. base.LoadEditorButtons(item, buttons);
  20. buttons.Add("Get Info", null, null, (sender, o) => LoadCompanyInfo(sender));
  21. }
  22. protected override void Reload(Filters<LicenseRegistrationDetails> criteria, Columns<LicenseRegistrationDetails> columns, ref SortOrder<LicenseRegistrationDetails>? sort, Action<CoreTable, Exception> action)
  23. {
  24. }
  25. protected override LicenseRegistrationDetails LoadItem(CoreRow row)
  26. {
  27. return new LicenseRegistrationDetails();
  28. }
  29. protected override void DoValidate(LicenseRegistrationDetails[] items, List<string> errors)
  30. {
  31. base.DoValidate(items, errors);
  32. var validates = new Dictionary<String,Func<LicenseRegistrationDetails,String>>()
  33. {
  34. // { nameof(LicenseRegistrationDetails.Company.CompanyName), x=>x.Company.CompanyName },
  35. // { nameof(LicenseRegistrationDetails.Company.ABN), x=>x.Company.ABN },
  36. // { nameof(LicenseRegistrationDetails.Company.Email), x=>x.Company.Email },
  37. // { nameof(LicenseRegistrationDetails.Company.Telephone), x=>x.Company.Telephone },
  38. // { nameof(LicenseRegistrationDetails.Company.PostalAddress.Street), x=>x.Company.PostalAddress.Street },
  39. // { nameof(LicenseRegistrationDetails.Company.PostalAddress.City), x=>x.Company.PostalAddress.City },
  40. // { nameof(LicenseRegistrationDetails.Company.PostalAddress.State), x=>x.Company.PostalAddress.State },
  41. // { nameof(LicenseRegistrationDetails.Company.PostalAddress.PostCode), x=>x.Company.PostalAddress.PostCode },
  42. // { nameof(LicenseRegistrationDetails.Card.CardNumber), x=>x.Card.CardNumber },
  43. // { nameof(LicenseRegistrationDetails.Card.Month), x=>x.Card.Month },
  44. // { nameof(LicenseRegistrationDetails.Card.Year), x=>x.Card.Year },
  45. // { nameof(LicenseRegistrationDetails.Card.Cvv), x=>x.Card.Cvv },
  46. };
  47. foreach (var key in validates.Keys)
  48. {
  49. if (items.Any(x => string.IsNullOrWhiteSpace(validates[key](x))))
  50. errors.Add($"{key.SplitCamelCase()} may not be blank!");
  51. }
  52. }
  53. public override void SaveItem(LicenseRegistrationDetails item)
  54. {
  55. }
  56. protected override void DeleteItems(params CoreRow[] rows)
  57. {
  58. }
  59. protected override void Init()
  60. {
  61. }
  62. protected override void DoReconfigure(FluentList<DynamicGridOption> options)
  63. {
  64. }
  65. public void LoadCompanyInfo(object sender)
  66. {
  67. if (sender is EmbeddedDynamicEditorForm form)
  68. {
  69. var info = new Client<CompanyInformation>().Query().Rows.FirstOrDefault()?.ToObject<CompanyInformation>() ??
  70. new CompanyInformation();
  71. void UpdateEditor(Expression<Func<LicenseRegistrationDetails,String>> property, String value)
  72. {
  73. var editor = form.FindEditor(CoreUtils.GetFullPropertyName(property,"."));
  74. editor.SetValue("Value",value);
  75. }
  76. UpdateEditor(x=>x.Company.CompanyName, info.CompanyName);
  77. UpdateEditor(x=>x.Company.ABN, info.ABN);
  78. UpdateEditor(x=>x.Company.Telephone, info.Telephone);
  79. UpdateEditor(x=>x.Company.Email, info.Email);
  80. UpdateEditor(x=>x.Company.PostalAddress.Street, info.PostalAddress.Street);
  81. UpdateEditor(x=>x.Company.PostalAddress.City, info.PostalAddress.City);
  82. UpdateEditor(x=>x.Company.PostalAddress.State, info.PostalAddress.State);
  83. UpdateEditor(x=>x.Company.PostalAddress.PostCode, info.PostalAddress.PostCode);
  84. UpdateEditor(x=>x.Company.DeliveryAddress.Street, info.DeliveryAddress.Street);
  85. UpdateEditor(x=>x.Company.DeliveryAddress.City, info.DeliveryAddress.City);
  86. UpdateEditor(x=>x.Company.DeliveryAddress.State, info.DeliveryAddress.State);
  87. UpdateEditor(x=>x.Company.DeliveryAddress.PostCode, info.DeliveryAddress.PostCode);
  88. }
  89. }
  90. }