SendEmailActionEditor.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. using InABox.Core;
  2. using InABox.DynamicGrid;
  3. using PRS.Shared.Events;
  4. using PRSStores.Events;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. namespace PRS.Shared.Grids.EventEditor;
  11. public class SendEmailActionEditItem : BaseObject
  12. {
  13. [EditorSequence(1)]
  14. [ExpressionEditor(null)]
  15. public string To { get; set; } = "";
  16. [EditorSequence(2)]
  17. [ExpressionEditor(null)]
  18. public string CC { get; set; } = "";
  19. [EditorSequence(3)]
  20. [ExpressionEditor(null)]
  21. public string BCC { get; set; } = "";
  22. [EditorSequence(4)]
  23. [ExpressionEditor(null)]
  24. public string Subject { get; set; } = "";
  25. [EditorSequence(5)]
  26. [ExpressionEditor(null)]
  27. public string Message { get; set; } = "";
  28. }
  29. public class SendEmailActionEditor<TEvent> : IEventActionEditor<SendEmailEventAction<TEvent>>
  30. where TEvent : IEvent
  31. {
  32. public bool Edit(SendEmailEventAction<TEvent> action, IEventDataModelDefinition dataModelDefinition)
  33. {
  34. var item = new SendEmailActionEditItem
  35. {
  36. To = action.To,
  37. CC = action.CC,
  38. BCC = action.BCC,
  39. Subject = action.Subject,
  40. Message = action.Message,
  41. };
  42. if(DynamicGridUtils.EditObject(item, customiseGrid: grid =>
  43. {
  44. grid.OnCustomiseEditor += (sender, items, column, editor) =>
  45. {
  46. if (editor is ExpressionEditor expressionEditor)
  47. {
  48. expressionEditor.VariableNames = dataModelDefinition.GetVariables().Select(x => x.Name).ToList();
  49. }
  50. };
  51. }))
  52. {
  53. action.To = item.To;
  54. action.CC = item.CC;
  55. action.BCC = item.BCC;
  56. action.Subject = item.Subject;
  57. action.Message = item.Message;
  58. return true;
  59. }
  60. else
  61. {
  62. return false;
  63. }
  64. }
  65. }