|
@@ -5,6 +5,7 @@ using ProRestaurant.DBContexts;
|
5
|
5
|
using ProRestaurant.Models.Restaurants;
|
6
|
6
|
using System;
|
7
|
7
|
using System.Collections.Generic;
|
|
8
|
+using System.IO;
|
8
|
9
|
using System.Linq;
|
9
|
10
|
|
10
|
11
|
namespace ProRestaurant.Repository.Restaurants
|
|
@@ -18,9 +19,64 @@ namespace ProRestaurant.Repository.Restaurants
|
18
|
19
|
dBContext = db;
|
19
|
20
|
}
|
20
|
21
|
|
21
|
|
- public Restaurant GetRestaurant(Func<Restaurant, bool> where)
|
|
22
|
+ public RestaurantDetails GetRestaurant(Func<Restaurant, bool> where)
|
22
|
23
|
{
|
23
|
|
- return dBContext.Restaurants.Where(where).FirstOrDefault();
|
|
24
|
+ var restaurantDetails = new RestaurantDetails();
|
|
25
|
+ var restaurant = dBContext.Restaurants.Where(where).FirstOrDefault();
|
|
26
|
+
|
|
27
|
+ if (restaurant != null && !string.IsNullOrEmpty(restaurant.Logo))
|
|
28
|
+ {
|
|
29
|
+ if (!restaurant.Logo.Contains("data:image"))
|
|
30
|
+ restaurant.Logo = ImageFormatter.ImageToBase64(restaurant.Logo);
|
|
31
|
+ else
|
|
32
|
+ restaurant.Logo = restaurant.Logo;
|
|
33
|
+ }
|
|
34
|
+
|
|
35
|
+ foreach (var prop in restaurant.GetAllProperties())
|
|
36
|
+ {
|
|
37
|
+ if (prop != "Item")
|
|
38
|
+ restaurantDetails[prop] = restaurant[prop];
|
|
39
|
+ }
|
|
40
|
+
|
|
41
|
+ if (!string.IsNullOrEmpty(restaurant.MethodsOfPayment) && restaurant.MethodsOfPayment.Contains("|"))
|
|
42
|
+ {
|
|
43
|
+ restaurantDetails.SelectedMethodsOfPayments = restaurant.MethodsOfPayment.Split("|").ToList();
|
|
44
|
+ }
|
|
45
|
+
|
|
46
|
+ if (!string.IsNullOrEmpty(restaurant.Categories))
|
|
47
|
+ {
|
|
48
|
+ var cats = restaurant.Categories.Replace(" ", "").Split("-").ToList();
|
|
49
|
+ restaurantDetails.SavedCategories = new List<Category>();
|
|
50
|
+ foreach(var cat in cats)
|
|
51
|
+ {
|
|
52
|
+ restaurantDetails.SavedCategories.Add(new Category() { Description = cat });
|
|
53
|
+ }
|
|
54
|
+ }
|
|
55
|
+
|
|
56
|
+ if (!string.IsNullOrEmpty(restaurant.DeliveryTime))
|
|
57
|
+ {
|
|
58
|
+ var time = restaurant.DeliveryTime.Replace("Min", "").Replace(" ", "").Split("-");
|
|
59
|
+ restaurantDetails.DeliveryFrom = int.Parse(time[0]);
|
|
60
|
+ restaurantDetails.DeliveryTo = int.Parse(time[1]);
|
|
61
|
+ }
|
|
62
|
+
|
|
63
|
+ var trading = dBContext.TradingHours.Where(th => th.RestaurantId == restaurant.Id).ToList();
|
|
64
|
+ restaurantDetails.SavedTradingHours = new List<TradingHoursContainer>();
|
|
65
|
+ foreach(var trade in trading)
|
|
66
|
+ {
|
|
67
|
+ var item = new TradingHoursContainer
|
|
68
|
+ {
|
|
69
|
+ Id = trade.Id,
|
|
70
|
+ Description = trade.Description,
|
|
71
|
+ From = string.Format("{0:hh:mm}", trade.OpeningTime),
|
|
72
|
+ To = string.Format("{0:hh:mm}", trade.ClosingTime),
|
|
73
|
+ Closed = trade.Closed,
|
|
74
|
+ Open24 = trade.Opened24H
|
|
75
|
+ };
|
|
76
|
+ restaurantDetails.SavedTradingHours.Add(item);
|
|
77
|
+ }
|
|
78
|
+
|
|
79
|
+ return restaurantDetails;
|
24
|
80
|
}
|
25
|
81
|
|
26
|
82
|
public List<RestaurantCard> GetSearch()
|
|
@@ -51,6 +107,12 @@ namespace ProRestaurant.Repository.Restaurants
|
51
|
107
|
return cards;
|
52
|
108
|
}
|
53
|
109
|
|
|
110
|
+ public List<TradingHours> GetTradingHours(int restaurantId)
|
|
111
|
+ {
|
|
112
|
+ var hours = dBContext.TradingHours.Where(t => t.RestaurantId == restaurantId).ToList();
|
|
113
|
+ return hours;
|
|
114
|
+ }
|
|
115
|
+
|
54
|
116
|
public void Insert(Restaurant restaurant)
|
55
|
117
|
{
|
56
|
118
|
dBContext.Add(restaurant);
|
|
@@ -63,14 +125,97 @@ namespace ProRestaurant.Repository.Restaurants
|
63
|
125
|
Save();
|
64
|
126
|
}
|
65
|
127
|
|
|
128
|
+ public void RemoveTradeHours(int id)
|
|
129
|
+ {
|
|
130
|
+ var tHours = dBContext.TradingHours.Where(t => t.Id == id).FirstOrDefault();
|
|
131
|
+ dBContext.TradingHours.Remove(tHours);
|
|
132
|
+ Save();
|
|
133
|
+ }
|
|
134
|
+
|
66
|
135
|
public void Save()
|
67
|
136
|
{
|
68
|
137
|
dBContext.SaveChanges();
|
69
|
138
|
}
|
70
|
139
|
|
71
|
|
- public void Update(Restaurant restaurant)
|
|
140
|
+ public void Update(RestaurantDetails restaurant)
|
72
|
141
|
{
|
73
|
|
- dBContext.Entry(restaurant).State = EntityState.Modified;
|
|
142
|
+ var resturantObj = dBContext.Restaurants.Where(r => r.Id == restaurant.Id).FirstOrDefault();
|
|
143
|
+
|
|
144
|
+ foreach (var prop in resturantObj.GetAllProperties())
|
|
145
|
+ {
|
|
146
|
+ if (prop != "Item")
|
|
147
|
+ resturantObj[prop] = restaurant[prop];
|
|
148
|
+ }
|
|
149
|
+
|
|
150
|
+ resturantObj.DeliveryTime = string.Format("{0} - {1} Min", restaurant.DeliveryFrom, restaurant.DeliveryTo);
|
|
151
|
+
|
|
152
|
+ if (!string.IsNullOrEmpty(restaurant.Logo))
|
|
153
|
+ {
|
|
154
|
+ bool saveFile = false;
|
|
155
|
+ var loc = dBContext.Locations.FirstOrDefault()?.ImageStore;
|
|
156
|
+ if (!string.IsNullOrEmpty(loc))
|
|
157
|
+ {
|
|
158
|
+ var folderName = restaurant.Name + "-" + restaurant.Suburb;
|
|
159
|
+ saveFile = true;
|
|
160
|
+ loc += string.Format("{0}", folderName);
|
|
161
|
+ if (!Directory.Exists(loc))
|
|
162
|
+ {
|
|
163
|
+ Directory.CreateDirectory(loc);
|
|
164
|
+ }
|
|
165
|
+
|
|
166
|
+ if (saveFile)
|
|
167
|
+ {
|
|
168
|
+ string path = ImageFormatter.Base64ToImage(restaurant.Logo, loc, restaurant.Name.Trim());
|
|
169
|
+ resturantObj.Logo = path;
|
|
170
|
+ }
|
|
171
|
+ }
|
|
172
|
+
|
|
173
|
+ if (!saveFile)
|
|
174
|
+ resturantObj.Logo = restaurant.Logo;
|
|
175
|
+ }
|
|
176
|
+
|
|
177
|
+ if (!string.IsNullOrEmpty(restaurant.MethodsOfPayment))
|
|
178
|
+ {
|
|
179
|
+ resturantObj.MethodsOfPayment = restaurant.MethodsOfPayment.Substring(0, restaurant.MethodsOfPayment.Length - 1);
|
|
180
|
+ }
|
|
181
|
+
|
|
182
|
+ if (!string.IsNullOrEmpty(restaurant.Categories))
|
|
183
|
+ {
|
|
184
|
+ resturantObj.Categories = resturantObj.Categories.Substring(0, restaurant.Categories.Length - 1).Trim();
|
|
185
|
+ resturantObj.Categories = resturantObj.Categories.Replace("|", " - ");
|
|
186
|
+ }
|
|
187
|
+
|
|
188
|
+ foreach (var trade in restaurant.SavedTradingHours)
|
|
189
|
+ {
|
|
190
|
+ if (trade.Id == 0)
|
|
191
|
+ {
|
|
192
|
+ TradingHours tHours = new TradingHours()
|
|
193
|
+ {
|
|
194
|
+ Description = trade.Description,
|
|
195
|
+ OpeningTime = DateTime.Parse(string.Format("{0} {1}", string.Format("{0:yyyy/MM/dd}", DateTime.Now), trade.From)),
|
|
196
|
+ ClosingTime = DateTime.Parse(string.Format("{0} {1}", string.Format("{0:yyyy/MM/dd}", DateTime.Now), trade.To)),
|
|
197
|
+ Closed = trade.Closed,
|
|
198
|
+ Opened24H = trade.Open24,
|
|
199
|
+ RestaurantId = restaurant.Id
|
|
200
|
+ };
|
|
201
|
+ dBContext.Add(tHours);
|
|
202
|
+ }
|
|
203
|
+ else
|
|
204
|
+ {
|
|
205
|
+ var tHours = dBContext.TradingHours.Where(t => t.Id == trade.Id).FirstOrDefault();
|
|
206
|
+ if (tHours != null)
|
|
207
|
+ {
|
|
208
|
+ tHours.Description = trade.Description;
|
|
209
|
+ tHours.OpeningTime = DateTime.Parse(string.Format("{0} {1}", string.Format("{0:yyyy/MM/dd}", DateTime.Now), trade.From));
|
|
210
|
+ tHours.ClosingTime = DateTime.Parse(string.Format("{0} {1}", string.Format("{0:yyyy/MM/dd}", DateTime.Now), trade.To));
|
|
211
|
+ tHours.Closed = trade.Closed;
|
|
212
|
+ tHours.Opened24H = trade.Open24;
|
|
213
|
+ }
|
|
214
|
+ dBContext.Entry(tHours).State = EntityState.Modified;
|
|
215
|
+ }
|
|
216
|
+ }
|
|
217
|
+
|
|
218
|
+ dBContext.Entry(resturantObj).State = EntityState.Modified;
|
74
|
219
|
Save();
|
75
|
220
|
}
|
76
|
221
|
|