LicenseRegistrationGrid.cs 4.5 KB

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