VmSearch.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. namespace VberAdmin.Web.Models.Search;
  2. public class VmSearch
  3. {
  4. public VmSearch()
  5. {
  6. Id = "vber_search";
  7. Field = "";
  8. FieldType = FType.S;
  9. ExpType = EType.Contains;
  10. Items = new List<VmSearchItem>();
  11. }
  12. public VmSearch(List<VmSearchItem> items, string id = "vber_search") : this()
  13. {
  14. Items = items ?? new List<VmSearchItem>();
  15. Id = id;
  16. }
  17. public VmSearch(string id) : this(new List<VmSearchItem>(), id)
  18. {
  19. }
  20. public string Id { get; set; }
  21. public string Field { get; set; }
  22. public FType FieldType { get; set; }
  23. public EType ExpType { get; set; }
  24. private List<VmSearchItem> _items;
  25. public List<VmSearchItem> Items
  26. {
  27. get => _items.Select(SetDefault).ToList();
  28. set => _items = value;
  29. }
  30. public VmSearch WithItems(List<VmSearchItem> searchItems)
  31. {
  32. Items = searchItems;
  33. return this;
  34. }
  35. public VmSearch AddItems(List<VmSearchItem> searchItems)
  36. {
  37. Items ??= new List<VmSearchItem>();
  38. Items.AddRange(searchItems);
  39. return this;
  40. }
  41. public VmSearch AddItem(VmSearchItem searchItem)
  42. {
  43. Items ??= new List<VmSearchItem>();
  44. Items.Add(searchItem);
  45. return this;
  46. }
  47. public VmSearch WithSearchOption(string field, FType fieldType, EType expType)
  48. {
  49. Field = field;
  50. FieldType = fieldType;
  51. ExpType = expType;
  52. return this;
  53. }
  54. private VmSearchItem SetDefault(VmSearchItem item)
  55. {
  56. item.Search = this;
  57. if (item.SelectItem != null)
  58. {
  59. item.SelectItem.ModalId = Id;
  60. }
  61. return item;
  62. }
  63. }