LicenseRegistrationGrid.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  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(
  23. Filters<LicenseRegistrationDetails> criteria, Columns<LicenseRegistrationDetails> columns, ref SortOrder<LicenseRegistrationDetails>? sort,
  24. CancellationToken token, Action<CoreTable?, Exception?> action)
  25. {
  26. }
  27. public override LicenseRegistrationDetails LoadItem(CoreRow row)
  28. {
  29. return new LicenseRegistrationDetails();
  30. }
  31. protected override void DoValidate(LicenseRegistrationDetails[] items, List<string> errors)
  32. {
  33. base.DoValidate(items, errors);
  34. var validates = new Dictionary<String,Func<LicenseRegistrationDetails,String>>()
  35. {
  36. // { nameof(LicenseRegistrationDetails.Company.CompanyName), x=>x.Company.CompanyName },
  37. // { nameof(LicenseRegistrationDetails.Company.ABN), x=>x.Company.ABN },
  38. // { nameof(LicenseRegistrationDetails.Company.Email), x=>x.Company.Email },
  39. // { nameof(LicenseRegistrationDetails.Company.Telephone), x=>x.Company.Telephone },
  40. // { nameof(LicenseRegistrationDetails.Company.PostalAddress.Street), x=>x.Company.PostalAddress.Street },
  41. // { nameof(LicenseRegistrationDetails.Company.PostalAddress.City), x=>x.Company.PostalAddress.City },
  42. // { nameof(LicenseRegistrationDetails.Company.PostalAddress.State), x=>x.Company.PostalAddress.State },
  43. // { nameof(LicenseRegistrationDetails.Company.PostalAddress.PostCode), x=>x.Company.PostalAddress.PostCode },
  44. // { nameof(LicenseRegistrationDetails.Card.CardNumber), x=>x.Card.CardNumber },
  45. // { nameof(LicenseRegistrationDetails.Card.Month), x=>x.Card.Month },
  46. // { nameof(LicenseRegistrationDetails.Card.Year), x=>x.Card.Year },
  47. // { nameof(LicenseRegistrationDetails.Card.Cvv), x=>x.Card.Cvv },
  48. };
  49. foreach (var key in validates.Keys)
  50. {
  51. if (items.Any(x => string.IsNullOrWhiteSpace(validates[key](x))))
  52. errors.Add($"{key.SplitCamelCase()} may not be blank!");
  53. }
  54. }
  55. public override void SaveItem(LicenseRegistrationDetails item)
  56. {
  57. }
  58. public override void DeleteItems(params CoreRow[] rows)
  59. {
  60. }
  61. protected override void Init()
  62. {
  63. }
  64. protected override void DoReconfigure(DynamicGridOptions options)
  65. {
  66. }
  67. public void LoadCompanyInfo(object sender)
  68. {
  69. if (sender is EmbeddedDynamicEditorForm form)
  70. {
  71. var info = new Client<CompanyInformation>().Query().Rows.FirstOrDefault()?.ToObject<CompanyInformation>() ??
  72. new CompanyInformation();
  73. void UpdateEditor(Expression<Func<LicenseRegistrationDetails,String>> property, String value)
  74. {
  75. var editor = form.FindEditor(CoreUtils.GetFullPropertyName(property,"."));
  76. editor.SetValue("Value",value);
  77. }
  78. UpdateEditor(x=>x.Company.CompanyName, info.CompanyName);
  79. UpdateEditor(x=>x.Company.ABN, info.ABN);
  80. UpdateEditor(x=>x.Company.Telephone, info.Telephone);
  81. UpdateEditor(x=>x.Company.Email, info.Email);
  82. UpdateEditor(x=>x.Company.PostalAddress.Street, info.PostalAddress.Street);
  83. UpdateEditor(x=>x.Company.PostalAddress.City, info.PostalAddress.City);
  84. UpdateEditor(x=>x.Company.PostalAddress.State, info.PostalAddress.State);
  85. UpdateEditor(x=>x.Company.PostalAddress.PostCode, info.PostalAddress.PostCode);
  86. UpdateEditor(x=>x.Company.DeliveryAddress.Street, info.DeliveryAddress.Street);
  87. UpdateEditor(x=>x.Company.DeliveryAddress.City, info.DeliveryAddress.City);
  88. UpdateEditor(x=>x.Company.DeliveryAddress.State, info.DeliveryAddress.State);
  89. UpdateEditor(x=>x.Company.DeliveryAddress.PostCode, info.DeliveryAddress.PostCode);
  90. }
  91. }
  92. }