public Task <HttpResponseMessage> Menu([FromBody] RestaurantMenuApiModel model) { return(Task <HttpResponseMessage> .Factory.StartNew(() => { try { if (ModelState.IsValid == false) { return Request.CreateResponse(HttpStatusCode.BadRequest, MessagesResources.MenuInvalidData); } var restaurant = CurrentAppContext.Restaurants .Include(r => r.Locations.Select(l => l.Menus)) .FirstOrDefault(r => r.Id == CurrentRestaurantId); if (restaurant == null) { return Request.CreateResponse(HttpStatusCode.BadRequest, MessagesResources.CompanyNotExist); } foreach (var location in restaurant.Locations) { location.Menus.ToList().ForEach(m => location.Menus.Remove(m)); } foreach (var menuModel in model.Menus.Where(m => m.IsDayOpen)) { foreach (var dailyMenu in menuModel.Menus.Where(dm => string.IsNullOrEmpty(dm.Name) == false)) { var menu = new Menu { Active = true, Id = Guid.NewGuid(), Name = dailyMenu.Name, Description = dailyMenu.Description, Cost = dailyMenu.Price, MenuDays = new MenuDays { Monday = (menuModel.DayOfWeek == DayOfWeek.Monday), Tuesday = (menuModel.DayOfWeek == DayOfWeek.Tuesday), Wednesday = (menuModel.DayOfWeek == DayOfWeek.Wednesday), Thursday = (menuModel.DayOfWeek == DayOfWeek.Thursday), Friday = (menuModel.DayOfWeek == DayOfWeek.Friday), Saturday = (menuModel.DayOfWeek == DayOfWeek.Saturday), Sunday = (menuModel.DayOfWeek == DayOfWeek.Sunday), }, SpecialDay = new SpecialDay { Date = null, Recurrent = false, }, IncludeBeverage = dailyMenu.IncludeBeverage, IncludeDesert = dailyMenu.IncludeDesert, }; restaurant.Locations.ForEach(l => l.Menus.Add(menu)); } } CurrentAppContext.SaveChanges(); return Request.CreateResponse(HttpStatusCode.OK, MessagesResources.GeneralSaveSucces); } catch (Exception exception) { ErrorLog.GetDefault(HttpContext.Current).Log(new Error(exception)); return Request.CreateResponse(HttpStatusCode.BadRequest); } })); }
public Task <HttpResponseMessage> Menus() { return(Task <HttpResponseMessage> .Factory.StartNew(() => { try { if (CurrentRestaurantId == Guid.Empty) { return Request.CreateResponse(HttpStatusCode.BadRequest, MessagesResources.CompanyNotExist); } var restaurant = CurrentAppContext.Restaurants.FirstOrDefault(r => r.Id == CurrentRestaurantId); if (restaurant == null) { return Request.CreateResponse(HttpStatusCode.BadRequest, MessagesResources.CompanyNotExist); } var locations = CurrentAppContext.Locations .Include(r => r.Menus) .Include(r => r.OpenDays) .Where(l => l.RestaurantId == CurrentRestaurantId) .AsNoTracking() .ToList(); if (locations.Any() == false) { return Request.CreateResponse(HttpStatusCode.OK, new RestaurantMenuApiModel()); } var menus = locations.SelectMany(l => l.Menus).Distinct(new MenuComparer()).ToList(); var daysOfWeek = locations.SelectMany(od => od.OpenDays.Select(o => o.DayOfWeek)).ToList(); var menusApiModel = new List <MenuApiModel>(); if (daysOfWeek.Contains(DayOfWeek.Monday)) { menusApiModel.Add(LoadMenu(menus, DayOfWeek.Monday)); } if (daysOfWeek.Contains(DayOfWeek.Tuesday)) { menusApiModel.Add(LoadMenu(menus, DayOfWeek.Tuesday)); } if (daysOfWeek.Contains(DayOfWeek.Wednesday)) { menusApiModel.Add(LoadMenu(menus, DayOfWeek.Wednesday)); } if (daysOfWeek.Contains(DayOfWeek.Thursday)) { menusApiModel.Add(LoadMenu(menus, DayOfWeek.Thursday)); } if (daysOfWeek.Contains(DayOfWeek.Friday)) { menusApiModel.Add(LoadMenu(menus, DayOfWeek.Friday)); } if (daysOfWeek.Contains(DayOfWeek.Saturday)) { menusApiModel.Add(LoadMenu(menus, DayOfWeek.Saturday)); } if (daysOfWeek.Contains(DayOfWeek.Sunday)) { menusApiModel.Add(LoadMenu(menus, DayOfWeek.Sunday)); } var model = new RestaurantMenuApiModel { RestaurantId = CurrentRestaurantId, Menus = menusApiModel }; return Request.CreateResponse(HttpStatusCode.OK, model); } catch (Exception exception) { ErrorLog.GetDefault(HttpContext.Current).Log(new Error(exception)); return Request.CreateResponse(HttpStatusCode.BadRequest); } })); }