Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

RestaurantRepository.cs 8.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  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.IO;
  9. using System.Linq;
  10. namespace ProRestaurant.Repository.Restaurants
  11. {
  12. public class RestaurantRepository : IRestaurantRepository
  13. {
  14. private readonly DBContext dBContext;
  15. public RestaurantRepository(DBContext db)
  16. {
  17. dBContext = db;
  18. }
  19. public RestaurantDetails GetRestaurant(Func<Restaurant, bool> where)
  20. {
  21. var restaurantDetails = new RestaurantDetails();
  22. var restaurant = dBContext.Restaurants.Where(where).FirstOrDefault();
  23. if (restaurant != null && !string.IsNullOrEmpty(restaurant.Logo))
  24. {
  25. if (!restaurant.Logo.Contains("data:image"))
  26. restaurant.Logo = ImageFormatter.ImageToBase64(restaurant.Logo);
  27. else
  28. restaurant.Logo = restaurant.Logo;
  29. }
  30. foreach (var prop in restaurant.GetAllProperties())
  31. {
  32. if (prop != "Item")
  33. restaurantDetails[prop] = restaurant[prop];
  34. }
  35. if (!string.IsNullOrEmpty(restaurant.MethodsOfPayment) && restaurant.MethodsOfPayment.Contains("|"))
  36. {
  37. restaurantDetails.SelectedMethodsOfPayments = restaurant.MethodsOfPayment.Split("|").ToList();
  38. }
  39. if (!string.IsNullOrEmpty(restaurant.Categories))
  40. {
  41. var cats = restaurant.Categories.Replace(" ", "").Split("-").ToList();
  42. restaurantDetails.SavedCategories = new List<Category>();
  43. foreach(var cat in cats)
  44. {
  45. restaurantDetails.SavedCategories.Add(new Category() { Description = cat });
  46. }
  47. }
  48. if (!string.IsNullOrEmpty(restaurant.DeliveryTime))
  49. {
  50. var time = restaurant.DeliveryTime.Replace("Min", "").Replace(" ", "").Split("-");
  51. restaurantDetails.DeliveryFrom = int.Parse(time[0]);
  52. restaurantDetails.DeliveryTo = int.Parse(time[1]);
  53. }
  54. var trading = dBContext.TradingHours.Where(th => th.RestaurantId == restaurant.Id).ToList();
  55. restaurantDetails.SavedTradingHours = new List<TradingHoursContainer>();
  56. foreach(var trade in trading)
  57. {
  58. var item = new TradingHoursContainer
  59. {
  60. Id = trade.Id,
  61. Description = trade.Description,
  62. From = string.Format("{0:hh:mm}", trade.OpeningTime),
  63. To = string.Format("{0:hh:mm}", trade.ClosingTime),
  64. Closed = trade.Closed,
  65. Open24 = trade.Opened24H
  66. };
  67. restaurantDetails.SavedTradingHours.Add(item);
  68. }
  69. return restaurantDetails;
  70. }
  71. public List<RestaurantCard> GetSearch()
  72. {
  73. var restaurants = dBContext.Restaurants.ToList();
  74. List<RestaurantCard> cards = new List<RestaurantCard>();
  75. foreach (var rest in restaurants)
  76. {
  77. var card = new RestaurantCard
  78. {
  79. Id = rest.Id,
  80. Name = rest.Name,
  81. Suburb = rest.Suburb,
  82. SubText = rest.Categories,
  83. DeliveryFee = string.Format("{0:C}", rest.DeliveryFee),
  84. DeliveryTime = rest.DeliveryTime
  85. };
  86. if (!rest.Logo.Contains("data:image"))
  87. card.Logo = ImageFormatter.ImageToBase64(rest.Logo);
  88. else
  89. card.Logo = rest.Logo;
  90. cards.Add(card);
  91. }
  92. return cards;
  93. }
  94. public List<TradingHours> GetTradingHours(int restaurantId)
  95. {
  96. var hours = dBContext.TradingHours.Where(t => t.RestaurantId == restaurantId).ToList();
  97. return hours;
  98. }
  99. public void Insert(Restaurant restaurant)
  100. {
  101. dBContext.Add(restaurant);
  102. Save();
  103. }
  104. public void Remove(Restaurant restaurant)
  105. {
  106. dBContext.Restaurants.Remove(restaurant);
  107. Save();
  108. }
  109. public void RemoveTradeHours(int id)
  110. {
  111. var tHours = dBContext.TradingHours.Where(t => t.Id == id).FirstOrDefault();
  112. dBContext.TradingHours.Remove(tHours);
  113. Save();
  114. }
  115. public void Save()
  116. {
  117. dBContext.SaveChanges();
  118. }
  119. public void Update(RestaurantDetails restaurant)
  120. {
  121. var resturantObj = dBContext.Restaurants.Where(r => r.Id == restaurant.Id).FirstOrDefault();
  122. foreach (var prop in resturantObj.GetAllProperties())
  123. {
  124. if (prop != "Item")
  125. resturantObj[prop] = restaurant[prop];
  126. }
  127. resturantObj.DeliveryTime = string.Format("{0} - {1} Min", restaurant.DeliveryFrom, restaurant.DeliveryTo);
  128. if (!string.IsNullOrEmpty(restaurant.Logo))
  129. {
  130. bool saveFile = false;
  131. var loc = dBContext.Locations.FirstOrDefault()?.ImageStore;
  132. if (!string.IsNullOrEmpty(loc))
  133. {
  134. var folderName = restaurant.Name + "-" + restaurant.Suburb;
  135. saveFile = true;
  136. loc += string.Format("{0}", folderName);
  137. if (!Directory.Exists(loc))
  138. {
  139. Directory.CreateDirectory(loc);
  140. }
  141. if (saveFile)
  142. {
  143. string path = ImageFormatter.Base64ToImage(restaurant.Logo, loc, restaurant.Name.Trim());
  144. resturantObj.Logo = path;
  145. }
  146. }
  147. if (!saveFile)
  148. resturantObj.Logo = restaurant.Logo;
  149. }
  150. if (!string.IsNullOrEmpty(restaurant.MethodsOfPayment))
  151. {
  152. resturantObj.MethodsOfPayment = restaurant.MethodsOfPayment.Substring(0, restaurant.MethodsOfPayment.Length - 1);
  153. }
  154. if (!string.IsNullOrEmpty(restaurant.Categories))
  155. {
  156. resturantObj.Categories = resturantObj.Categories.Substring(0, restaurant.Categories.Length - 1).Trim();
  157. resturantObj.Categories = resturantObj.Categories.Replace("|", " - ");
  158. }
  159. foreach (var trade in restaurant.SavedTradingHours)
  160. {
  161. if (trade.Id == 0)
  162. {
  163. TradingHours tHours = new TradingHours()
  164. {
  165. Description = trade.Description,
  166. OpeningTime = DateTime.Parse(string.Format("{0} {1}", string.Format("{0:yyyy/MM/dd}", DateTime.Now), trade.From)),
  167. ClosingTime = DateTime.Parse(string.Format("{0} {1}", string.Format("{0:yyyy/MM/dd}", DateTime.Now), trade.To)),
  168. Closed = trade.Closed,
  169. Opened24H = trade.Open24,
  170. RestaurantId = restaurant.Id
  171. };
  172. dBContext.Add(tHours);
  173. }
  174. else
  175. {
  176. var tHours = dBContext.TradingHours.Where(t => t.Id == trade.Id).FirstOrDefault();
  177. if (tHours != null)
  178. {
  179. tHours.Description = trade.Description;
  180. tHours.OpeningTime = DateTime.Parse(string.Format("{0} {1}", string.Format("{0:yyyy/MM/dd}", DateTime.Now), trade.From));
  181. tHours.ClosingTime = DateTime.Parse(string.Format("{0} {1}", string.Format("{0:yyyy/MM/dd}", DateTime.Now), trade.To));
  182. tHours.Closed = trade.Closed;
  183. tHours.Opened24H = trade.Open24;
  184. }
  185. dBContext.Entry(tHours).State = EntityState.Modified;
  186. }
  187. }
  188. dBContext.Entry(resturantObj).State = EntityState.Modified;
  189. Save();
  190. }
  191. List<Restaurant> IRestaurantRepository.GetRestaurants()
  192. {
  193. return dBContext.Restaurants.ToList();
  194. }
  195. }
  196. }