Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

RegistrationRepository.cs 8.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. using ProRestaurant.Classes;
  2. using ProRestaurant.Containers;
  3. using ProRestaurant.DBContexts;
  4. using ProRestaurant.Models.Accounts;
  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.Accounts
  11. {
  12. public class RegistrationRepository : IRegistrationRepository
  13. {
  14. private readonly DBContext dBContext;
  15. public RegistrationRepository(DBContext _DB)
  16. {
  17. dBContext = _DB;
  18. }
  19. public RestaurantContainer GetRestaurantContainer()
  20. {
  21. var restaurantContainer = new RestaurantContainer
  22. {
  23. Name = "",
  24. Logo = "",
  25. MethodsOfPayment = "",
  26. ShopNumber = "",
  27. ShoppingCentre = "",
  28. GoogleMapUrl = "",
  29. StreetNumber = "",
  30. StreetName = "",
  31. Suburb = "",
  32. City = "",
  33. Provice = "",
  34. Country = "",
  35. };
  36. return restaurantContainer;
  37. }
  38. public UserContainer GetUserContainer()
  39. {
  40. var userContainer = new UserContainer()
  41. {
  42. FirstName = "",
  43. Surname = "",
  44. Cellphone = "",
  45. EmailAddress = "",
  46. Password = ""
  47. };
  48. return userContainer;
  49. }
  50. //public UserContainer Login(string UserName, string Password)
  51. //{
  52. // UserContainer returnObject = new UserContainer();
  53. // User user = dBContext.Users.Where(u => u.EmailAddress == UserName).FirstOrDefault();
  54. // if (user != null)
  55. // {
  56. // if (user.Password == Password)
  57. // {
  58. // returnObject.User = user;
  59. // returnObject.ResultString = "Access Granted";
  60. // }
  61. // else
  62. // returnObject.ResultString = "Password incorrect";
  63. // }
  64. // else
  65. // {
  66. // returnObject.ResultString = "User not found";
  67. // }
  68. // return returnObject;
  69. //}
  70. public RestaurantContainer RegisterRestaurant(RestaurantContainer RestaurantContainer)
  71. {
  72. var restaurantCheck = dBContext.Restaurants.Where(r => r.Name == RestaurantContainer.Name && r.Suburb == RestaurantContainer.Suburb && r.City == RestaurantContainer.City && r.Provice == RestaurantContainer.Provice && r.Country == RestaurantContainer.Country).FirstOrDefault();
  73. if (restaurantCheck != null)
  74. {
  75. RestaurantContainer.Result = "A Restaurant with the same name has already been registered in this location. ";
  76. return RestaurantContainer;
  77. }
  78. var checkUser = dBContext.Users.Where(u => u.EmailAddress == RestaurantContainer.UserEmailAddress).FirstOrDefault();
  79. if (checkUser != null)
  80. {
  81. RestaurantContainer.Result = "A User with this email address already exists. Please use an different Email Address if this Email Address was used for an individule user.";
  82. return RestaurantContainer;
  83. }
  84. var user = new User
  85. {
  86. FirstName = RestaurantContainer.UserFirstName,
  87. Surname = RestaurantContainer.UserSurname,
  88. EmailAddress = RestaurantContainer.UserEmailAddress,
  89. Password = RestaurantContainer.UserPassword,
  90. SystemRole = Classes.SystemRole.RestaurantAdmin
  91. };
  92. var restaurant = new Restaurant
  93. {
  94. Name = RestaurantContainer.Name,
  95. DeliveryTime = RestaurantContainer.DeliveryTime,
  96. DeliveryFee = RestaurantContainer.DeliveryFee,
  97. DeliveryRadius = RestaurantContainer.DeliveryRadius,
  98. MethodsOfPayment = RestaurantContainer.MethodsOfPayment,
  99. ShoppingCentre = RestaurantContainer.ShoppingCentre,
  100. ShopNumber = RestaurantContainer.ShopNumber,
  101. GoogleMapUrl = RestaurantContainer.GoogleMapUrl,
  102. Latitude = RestaurantContainer.Latitude,
  103. Longitude = RestaurantContainer.Longitude,
  104. StreetNumber = RestaurantContainer.StreetNumber,
  105. StreetName = RestaurantContainer.StreetName,
  106. Suburb = RestaurantContainer.Suburb,
  107. City = RestaurantContainer.City,
  108. Provice = RestaurantContainer.Provice,
  109. Country = RestaurantContainer.Country,
  110. PostalCode = RestaurantContainer.PostalCode,
  111. Categories = RestaurantContainer.Categories
  112. };
  113. if (!string.IsNullOrEmpty(restaurant.MethodsOfPayment))
  114. {
  115. restaurant.MethodsOfPayment = restaurant.MethodsOfPayment.Substring(0, restaurant.MethodsOfPayment.Length - 1);
  116. }
  117. if (!string.IsNullOrEmpty(restaurant.Categories))
  118. {
  119. restaurant.Categories = restaurant.Categories.Substring(0, restaurant.Categories.Length - 1);
  120. restaurant.Categories = restaurant.Categories.Replace("|", " - ");
  121. }
  122. if (!string.IsNullOrEmpty(RestaurantContainer.Logo))
  123. {
  124. bool saveFile = false;
  125. var loc = dBContext.Locations.FirstOrDefault()?.ImageStore;
  126. if (!string.IsNullOrEmpty(loc))
  127. {
  128. var folderName = restaurant.Name + string.Format("{0:yyyy_MM_dd_hh_mm_ss}", DateTime.Now);
  129. saveFile = true;
  130. loc += string.Format("{0}", folderName);
  131. if (!Directory.Exists(loc))
  132. {
  133. Directory.CreateDirectory(loc);
  134. }
  135. if (saveFile)
  136. {
  137. string path = ImageFormatter.Base64ToImage(RestaurantContainer.Logo, loc, restaurant.Name.Trim());
  138. restaurant.Logo = path;
  139. }
  140. }
  141. if (!saveFile)
  142. restaurant.Logo = RestaurantContainer.Logo;
  143. }
  144. var rUser = new RestaurantUser
  145. {
  146. Restaurant = restaurant,
  147. User = user
  148. };
  149. restaurant.Users = new List<RestaurantUser>() { rUser };
  150. if (RestaurantContainer.THours != null && RestaurantContainer.THours.Count > 0)
  151. {
  152. restaurant.TradingHours = new List<TradingHours>();
  153. foreach (var t in RestaurantContainer.THours)
  154. {
  155. restaurant.TradingHours.Add(new TradingHours()
  156. {
  157. Description = t.Description,
  158. OpeningTime = DateTime.Parse(string.Format("{0} {1}", string.Format("{0:yyyy/MM/dd}", DateTime.Now), t.From)),
  159. ClosingTime = DateTime.Parse(string.Format("{0} {1}", string.Format("{0:yyyy/MM/dd}", DateTime.Now), t.To)),
  160. Closed = t.Closed,
  161. Opened24H = t.Open24
  162. });
  163. }
  164. }
  165. dBContext.Add(restaurant);
  166. Save();
  167. return RestaurantContainer;
  168. }
  169. public UserContainer RegisterUser(UserContainer UserContainer)
  170. {
  171. var checkUser = dBContext.Users.Where(u => u.EmailAddress == UserContainer.EmailAddress).FirstOrDefault();
  172. if (checkUser != null)
  173. {
  174. UserContainer.ResultString = "A User with this email address already exists.";
  175. UserContainer.Password = "";
  176. return UserContainer;
  177. }
  178. var user = new User
  179. {
  180. FirstName = UserContainer.FirstName,
  181. Surname = UserContainer.Surname,
  182. Cellphone = UserContainer.Cellphone,
  183. EmailAddress = UserContainer.EmailAddress,
  184. Password = UserContainer.Password,
  185. SystemRole = Classes.SystemRole.Customer
  186. };
  187. dBContext.Add(user);
  188. Save();
  189. UserContainer.Id = user.Id;
  190. UserContainer.ResultString = "User Created";
  191. return UserContainer;
  192. }
  193. public void Save()
  194. {
  195. dBContext.SaveChanges();
  196. }
  197. }
  198. }