Beispiel #1
0
        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);
                }
            }));
        }
Beispiel #2
0
        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);
                }
            }));
        }