示例#1
0
        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;
            }
        }
示例#2
0
        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));
        }