public async Task <IActionResult> SetBatchEntryCompleteAsync(int id, [FromBody] bool complete) { try { var entriesQuery = _queryFactory.CreateBatchesQuery(); var entryDto = await entriesQuery.ExecuteAsync(id).ConfigureAwait(false); if (entryDto != null) { entryDto.Complete = complete; var cmd = _commandsFactory.CreateBatchesCommand(); await cmd.UpdateAsync(entryDto).ConfigureAwait(false); } return(Ok()); } catch (Exception) { return(StatusCode(500)); throw; } }
public async Task <IActionResult> UpdateJournal(JournalViewModel model) { if (model == null) { throw new ArgumentNullException(nameof(model)); } var qry = _journalQueryFactory.CreateBatchesQuery(); var dto = await qry.ExecuteAsync(model.Id.Value).ConfigureAwait(false); dto.Title = model.Title; // dto.Variety.Id = model.Variety.Id; dto.Description = model.Description; dto.RecipeId = model.RecipeId; dto.Volume = model.Volume; dto.Vintage = model.Vintage; dto.MaloCultureId = model.MaloCultureId; dto.Complete = model.Complete; if (model.VolumeUOM.HasValue) { if (dto.VolumeUom != null) { dto.VolumeUom.Id = model.VolumeUOM.Value; } else { dto.VolumeUom = new UnitOfMeasure { Id = model.VolumeUOM.Value } }; } if (model.Yeast?.Id != null) { if (dto.Yeast != null) { dto.Yeast.Id = model.Yeast.Id.Value; } else { dto.Yeast = new YeastDto { Id = model.Yeast.Id.Value } }; } if (model.Variety?.Id != null) { if (dto.Variety != null) { dto.Variety.Id = model.Variety.Id; } else { dto.Variety = new Code { Id = model.Variety.Id } }; } 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 = _journalCommandFactory.CreateBatchesCommand(); await cmd.UpdateAsync(dto).ConfigureAwait(false); return(RedirectToAction("Index", "Admin", new { id = "journals" })); }
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)); }