public async Task <IActionResult> UpdateBatchTargetAsync(int id, [FromBody] TargetUpdateViewModel target) { try { if (target == null) { return(NoContent()); } var qry = _queryFactory.CreateBatchesQuery(); var dto = await qry.ExecuteAsync(id).ConfigureAwait(false); if (dto == null) { return(NotFound()); } if (dto.Target == null) { // create new target and link to this batch var newCmd = _commandsFactory.CreateTargetsCommand(); dto.Target = await newCmd.AddAsync(new TargetDto()).ConfigureAwait(false); var batchCmd = _commandsFactory.CreateBatchesCommand(); dto = await batchCmd.UpdateAsync(dto).ConfigureAwait(false); } dto.Target.EndSugar = target.EndingSugar; dto.Target.pH = target.pH; dto.Target.StartSugar = target.StartingSugar; dto.Target.TA = target.TA; dto.Target.Temp = target.FermentationTemp; if (target.EndSugarUOM.HasValue) { dto.Target.EndSugarUom = new UnitOfMeasure { Id = target.EndSugarUOM.Value } } ; if (target.StartSugarUOM.HasValue) { dto.Target.StartSugarUom = new UnitOfMeasure { Id = target.StartSugarUOM.Value } } ; if (target.TempUOM.HasValue) { dto.Target.TempUom = new UnitOfMeasure { Id = target.TempUOM.Value } } ; var cmd = _commandsFactory.CreateTargetsCommand(); var targetDto = await cmd.UpdateAsync(dto.Target).ConfigureAwait(false); var model = _modelFactory.CreateTargetViewModel(targetDto); return(Ok(model)); } catch (Exception) { return(StatusCode(500)); throw; } }
public async Task <IActionResult> UpdateRecipe(RecipeViewModel model) { if (model == null) { throw new ArgumentNullException(nameof(model)); } var qry = _recipeQueryFactory.CreateRecipesQuery(); var dto = await qry.ExecuteAsync(model.Id).ConfigureAwait(false); dto.Title = model.Title; dto.Variety.Id = model.Variety.Id; dto.Yeast.Id = model.Yeast.Id ?? 0; dto.Description = model.Description; dto.Enabled = model.Enabled; dto.Hits = model.Hits; dto.Ingredients = model.Ingredients; dto.Instructions = model.Instructions; dto.NeedsApproved = model.NeedsApproved; if (model.Target.HasTargetData()) { var tCmd = _journalCommandFactory.CreateTargetsCommand(); if (dto.Target?.Id.HasValue == true) { // update target var tQry = _journalQueryFactory.CreateTargetsQuery(); var t = await tQry.ExecuteAsync(dto.Target.Id.Value).ConfigureAwait(false); t.EndSugar = model.Target.EndingSugar; t.pH = model.Target.pH; t.StartSugar = model.Target.StartingSugar; t.TA = model.Target.TA; t.Temp = model.Target.FermentationTemp; if (model.Target.StartSugarUOM != null) { t.StartSugarUom = new UnitOfMeasure() { Id = model.Target.StartSugarUOM.Value } } ; if (model.Target.TempUOM != null) { t.TempUom = new UnitOfMeasure() { Id = model.Target.TempUOM.Value } } ; if (model.Target.EndSugarUOM != null) { t.EndSugarUom = new UnitOfMeasure() { Id = model.Target.EndSugarUOM.Value } } ; var result = await tCmd.UpdateAsync(t).ConfigureAwait(false); dto.Target = result; } else { // add target var t = new TargetDto { EndSugar = model.Target.EndingSugar, pH = model.Target.pH, StartSugar = model.Target.StartingSugar, TA = model.Target.TA, Temp = model.Target.FermentationTemp, StartSugarUom = new UnitOfMeasure(), TempUom = new UnitOfMeasure(), EndSugarUom = new UnitOfMeasure() }; if (model.Target.StartSugarUOM != null) { t.StartSugarUom.Id = model.Target.StartSugarUOM.Value; } if (model.Target.TempUOM != null) { t.TempUom.Id = model.Target.TempUOM.Value; } if (model.Target.EndSugarUOM != null) { t.EndSugarUom.Id = model.Target.EndSugarUOM.Value; } var result = await tCmd.AddAsync(t).ConfigureAwait(false); dto.Target = result; } } var cmd = _recipeCommandFactory.CreateRecipesCommand(); await cmd.UpdateAsync(dto).ConfigureAwait(false); return(RedirectToAction("Index", "Admin", new { id = "recipes" })); }
public async Task <IActionResult> Add(BatchViewModel model) { if (model == null) { throw new ArgumentNullException(nameof(model)); } ViewData["Title"] = _localizer["PageTitle"]; ViewData["PageDesc"] = _localizer["PageDesc"]; var batchTempQuery = _journalQueryFactory.CreateBatchTempUOMQuery(); var uomTempList = await batchTempQuery.ExecuteAsync().ConfigureAwait(false); var batchSugarQuery = _journalQueryFactory.CreateBatchSugarUOMQuery(); var uomSugarList = await batchSugarQuery.ExecuteAsync().ConfigureAwait(false); var batchVolumeQuery = _journalQueryFactory.CreateBatchVolumeUOMQuery(); var uomVolumeList = await batchVolumeQuery.ExecuteAsync().ConfigureAwait(false); var getCategoriesQuery = _recipeQueryFactory.CreateCategoriesQuery(); var cList = await getCategoriesQuery.ExecuteAsync().ConfigureAwait(false); var varietiesQuery = _recipeQueryFactory.CreateVarietiesQuery(); var vList = await varietiesQuery.ExecuteAsync().ConfigureAwait(false); var getYeastQuery = _yeastQueryFactory.CreateYeastsQuery(); var yList = await getYeastQuery.ExecuteAsync().ConfigureAwait(false); // must be logged in to continue var submittedBy = await UserManagerAgent.GetUserAsync(User).ConfigureAwait(false); if (submittedBy == null) { var addModel = _modelFactory.CreateBatchViewModel(null, null, vList, cList, yList, null, uomVolumeList, uomSugarList, uomTempList); Warning(_localizer["AddGeneralError"], false); return(View(addModel)); } // using model validation attributes, if model state says errors do nothing if (!ModelState.IsValid) { var addModel = _modelFactory.CreateBatchViewModel(null, null, vList, cList, yList, null, uomVolumeList, uomSugarList, uomTempList); Warning(_localizer["AddGeneralError"], true); return(View(addModel)); } TargetDto targetDto; if (model.Target.Id.HasValue) { var targetQuery = _journalQueryFactory.CreateTargetsQuery(); targetDto = targetQuery.Execute(model.Target.Id.Value); } else { targetDto = new TargetDto(); } if (model.Target.HasTargetData()) { // convert add model to batch and target dto targetDto.Temp = model.Target.FermentationTemp; targetDto.pH = model.Target.pH; targetDto.TA = model.Target.TA; targetDto.StartSugar = model.Target.StartingSugar; targetDto.EndSugar = model.Target.EndingSugar; if (model.Target.TempUOM.HasValue) { targetDto.TempUom = new UnitOfMeasure { Id = model.Target.TempUOM.Value } } ; if (model.Target.StartSugarUOM.HasValue) { targetDto.StartSugarUom = new UnitOfMeasure { Id = model.Target.StartSugarUOM.Value } } ; if (model.Target.EndSugarUOM.HasValue) { targetDto.EndSugarUom = new UnitOfMeasure { Id = model.Target.EndSugarUOM.Value } } ; var updateTargetCommand = _journalCommandFactory.CreateTargetsCommand(); if (targetDto.Id.HasValue) { targetDto = await updateTargetCommand.UpdateAsync(targetDto).ConfigureAwait(false); } else { targetDto = await updateTargetCommand.AddAsync(targetDto).ConfigureAwait(false); } } var batchDto = new BatchDto { Description = model.Description, Vintage = model.Vintage, Volume = model.Volume, Complete = false, SubmittedBy = submittedBy?.Id, Title = model.Title, Yeast = yList.FirstOrDefault(y => y.Id == model.YeastId.Value), RecipeId = model.RecipeId, Target = targetDto, VolumeUom = new UnitOfMeasure { Id = model.VolumeUOM.Value }, Variety = new Code { Id = model.VarietyId.Value } }; var updateBatchCommand = _journalCommandFactory.CreateBatchesCommand(); await updateBatchCommand.AddAsync(batchDto).ConfigureAwait(false); // tell user good job and clear or go to thank you page ModelState.Clear(); var addBatchModel = _modelFactory.CreateBatchViewModel(null, null, vList, cList, yList, null, uomVolumeList, uomSugarList, uomTempList); Success(_localizer["AddSuccess"], true); // validate with User (ApplicationUser) var appUser = await UserManagerAgent.GetUserAsync(User).ConfigureAwait(false); addBatchModel.BatchJwt = await CreateJwtTokenAsync(appUser, 15).ConfigureAwait(false); return(View(addBatchModel)); }