public async Task <ActionResult <MealInstanceModel> > AddMeal([FromBody] AddMealRequest request) { if (!ModelState.IsValid) { return(BadRequest(ModelState.GetErrorMessages())); } try { var result = await _repository.AddMeal( User.Claims.GetUserId(), new MealInstanceEntity { Goal = new GoalEntity { GoalId = request.GoalId }, Product = new ProductEntityRef { ProductId = request.ProductId }, MealType = new MealTypeEntity { MealTypeId = request.MealTypeId }, Date = request.Date, Amount = request.Amount }); var response = new MealInstanceModel { MealInstanceId = result.MealInstanceId, GoalId = result.Goal.GoalId, Amount = result.Amount, Date = result.Date, Product = new MealProductModel { ProductId = result.Product.ProductId, Name = result.Product.Name }, MealType = new MealTypeModel { Id = result.MealType.MealTypeId, Name = result.MealType.Name } }; return(response); } catch (DbException ex) { if (ex.Code == 50100) { return(Forbid()); } return(BadRequest(ex.Message)); } catch (Exception) { return(StatusCode(500)); } }
public AddMealViewModel( IWeightAppClient client, MealInstanceModel model, IEnumerable <ProductModel> products, IEnumerable <MealTypeModel> mealTypes) { _client = client; _model = model; Products = new ObservableCollection <ProductModel>(products); MealTypes = new ObservableCollection <MealTypeModel>(mealTypes); AddMeal = new RelayCommand( AddMealExecute, p => _selectedProduct != null && _selectedMealType != null ); Cancel = new RelayCommand(CancelExecute); }
private void AddNewMealExecute(object obj) { var addNewMealModel = new MealInstanceModel { Date = DateTime.Now, GoalId = _selectedGoal.GoalId }; var addNewMealViewModel = new AddMealViewModel( _client, addNewMealModel, Products, _mealTypes ); var dialog = new AddNewMeal(); dialog.DataContext = addNewMealViewModel; var result = dialog.ShowDialog(); if (result.GetValueOrDefault()) { UpdateMeals(); } }
public MealViewModel(MealInstanceModel model, ProductModel products) { _model = model; _products = products; }