Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

MenuOptionRepository.cs 4.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. using Microsoft.EntityFrameworkCore;
  2. using ProRestaurant.Classes;
  3. using ProRestaurant.Containers;
  4. using ProRestaurant.DBContexts;
  5. using ProRestaurant.Models.Restaurants;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Linq;
  9. namespace ProRestaurant.Repository.Restaurants
  10. {
  11. public class MenuOptionRepository : IMenuOptionRepository
  12. {
  13. private readonly DBContext dBContext;
  14. public MenuOptionRepository(DBContext _dBContext)
  15. {
  16. dBContext = _dBContext;
  17. }
  18. public void Delete(MenuOption Option)
  19. {
  20. if (Option.Options != null)
  21. {
  22. foreach (var item in Option.Options)
  23. {
  24. DeleteItem(item);
  25. }
  26. }
  27. dBContext.MenuOptions.Remove(Option);
  28. Save();
  29. }
  30. public void DeleteItem(int id)
  31. {
  32. var item = dBContext.MenuOptionItems.Where(i => i.Id == id).FirstOrDefault();
  33. dBContext.MenuOptionItems.Remove(item);
  34. Save();
  35. }
  36. public void DeleteItem(MenuOptionItem item)
  37. {
  38. dBContext.MenuOptionItems.Remove(item);
  39. Save();
  40. }
  41. public MenuOption GetMenuOption(int id)
  42. {
  43. var option = dBContext.MenuOptions.Where(m => m.Id == id).FirstOrDefault();
  44. if (option == null)
  45. {
  46. option = new MenuOption()
  47. {
  48. OptionType = OptionType.Single,
  49. IsBasePrice = false,
  50. Options = new List<MenuOptionItem>(),
  51. CategoryDescription = "All"
  52. };
  53. }
  54. else
  55. {
  56. option.Options = dBContext.MenuOptionItems.Where(m => m.MenuOption == option).ToList();
  57. if (option.CategoryId > 0)
  58. option.CategoryDescription = dBContext.MenuCategories.Where(m => m.Id == option.CategoryId).FirstOrDefault().Description;
  59. else
  60. option.CategoryDescription = "All";
  61. }
  62. return option;
  63. }
  64. public List<OptionTypeContainer> GetOptionTypes()
  65. {
  66. //TODO: hard coded for now, will need to find solution.
  67. var options = new List<OptionTypeContainer>
  68. {
  69. new OptionTypeContainer() { Id = 0, Description = "Single" },
  70. new OptionTypeContainer() { Id = 1, Description = "Single Required" },
  71. new OptionTypeContainer() { Id = 2, Description = "Multiple" },
  72. new OptionTypeContainer() { Id = 3, Description = "Multiple Limit" }
  73. };
  74. return options;
  75. }
  76. public List<MenuOption> GetRestaurantMenuOptions(int restaurantId)
  77. {
  78. var options = (from o in dBContext.MenuOptions
  79. join c in dBContext.MenuCategories on o.CategoryId equals c.Id
  80. where c.RestaurantId == restaurantId
  81. orderby o.Rank
  82. select o).ToList();
  83. foreach (var option in options)
  84. {
  85. switch (option.OptionType)
  86. {
  87. case OptionType.MultipleLimit:
  88. option.OptionTypeDescription = "Multiple Limit";
  89. break;
  90. case OptionType.SingleRequired:
  91. option.OptionTypeDescription = "Single Required";
  92. break;
  93. default:
  94. option.OptionTypeDescription = option.OptionType.ToString();
  95. break;
  96. }
  97. if (option.CategoryId > 0)
  98. option.CategoryDescription = dBContext.MenuCategories.Where(m => m.Id == option.CategoryId).FirstOrDefault().Description;
  99. else
  100. option.CategoryDescription = "All";
  101. }
  102. return options;
  103. }
  104. public void Insert(MenuOption Option)
  105. {
  106. dBContext.Add(Option);
  107. Save();
  108. }
  109. public void Save()
  110. {
  111. dBContext.SaveChanges();
  112. }
  113. public void Update(MenuOption Option)
  114. {
  115. dBContext.Entry(Option).State = EntityState.Modified;
  116. foreach (var opt in Option.Options)
  117. {
  118. if (opt.Id > 0)
  119. {
  120. dBContext.Entry(opt).State = EntityState.Modified;
  121. }
  122. else
  123. {
  124. dBContext.Add(opt);
  125. }
  126. }
  127. Save();
  128. }
  129. }
  130. }