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); }
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)); }