Ejemplo n.º 1
0
        public UIElement GetAddView(ICategorySubject subject)
        {
            DishAddViewModel viewModel = new DishAddViewModel(factory, subject);
            DishAddView      view      = new DishAddView(viewModel);

            viewModel.DishAdded += (s, e) => OnAdd(e.Data, viewModel);

            return(view);
        }
Ejemplo n.º 2
0
        public async Task <HttpResponseMessage> AddDish([FromBody] DishAddView model)
        {
            if (model == null)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "No Data"));
            }
            var user = db.Users.SingleOrDefault(u => u.UserName == User.Identity.Name);

            if (user == null)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.MethodNotAllowed, "Unknown User"));
                // throw new HttpResponseException(HttpStatusCode.MethodNotAllowed);
            }
            if (ModelState.IsValid)
            {
                Picture picture = Picture.getPictureFromBase64(model.PictureBase64);
                if (picture == null)
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "No Picture"));
                }
                try
                {
                    foreach (Category category in model.Categories)
                    {
                        db.Categories.Attach(category);
                    }
                    decimal Price = 0.0M;
                    Decimal.TryParse(model.Price.Replace(",", "."), NumberStyles.Currency, CultureInfo.InvariantCulture, out Price);
                    Dish dish = new Dish {
                        Categories      = model.Categories,
                        Name            = model.Name,
                        Route           = IdentityModels.getNameAsRoute(model.Name),
                        Price           = Price,
                        isVeganFriendly = model.isVeganFriendly,
                        Created         = DateTime.Now
                    };
                    dish.Pictures.Add(picture);
                    dish.User = user;
                    db.Dishes.Add(dish);
                    await db.SaveChangesAsync();

                    return(Request.CreateResponse(HttpStatusCode.OK, new DishView {
                        Id = dish.Id,
                        Name = dish.Name,
                        Price = dish.Price,
                        isVeganFriendly = dish.isVeganFriendly,
                        Yes = dish.Yes,
                        No = dish.No,
                        Categories = dish.Categories.Select(c => new CategoryView {
                            Id = c.Id,
                            Name = c.Name,
                        }).ToList(),
                        Pictures = dish.Pictures.Select(c => new PictureView {
                            Id = c.Id,
                            Name = c.Name,
                            Route = c.Route,
                            Created = c.Created,
                        }).ToList(),
                    }));
                } catch (Exception ex)
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex));
                }
            }
            return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState));
        }