Ejemplo n.º 1
0
        public override async Task <int> HandleCommand(AddCommand request, CancellationToken cancellationToken)
        {
            if ((request.Fertilizer?.CategoryId ?? 0) > 0)
            {
                var category = await fertilizerCategoryQueries.GetById(request.Fertilizer.CategoryId ?? 0);

                if (category == null)
                {
                    throw new BusinessException("Category.NotExisted");
                }
            }

            var rs = -1;

            using (var conn = DALHelper.GetConnection())
            {
                conn.Open();
                using (var trans = conn.BeginTransaction())
                {
                    try
                    {
                        fertilizerRepository.JoinTransaction(conn, trans);
                        fertilizerQueries.JoinTransaction(conn, trans);

                        if (request.Fertilizer == null)
                        {
                            throw new BusinessException("AddWrongInformation");
                        }

                        request.Fertilizer.Code = await storageQueries.GenarateCodeAsync(StorageKeys.FertilizerCode);

                        request.Fertilizer = CreateBuild(request.Fertilizer, request.LoginSession);
                        var fertilizerId = await fertilizerRepository.Add(request.Fertilizer);

                        rs = 0;
                    }
                    finally
                    {
                        if (rs == 0)
                        {
                            trans.Commit();
                        }
                        else
                        {
                            try
                            {
                                trans.Rollback();
                            }
                            catch { }
                        }
                    }
                }
            }

            return(rs);
        }
        public async Task <IActionResult> Create(FertilizerViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }
            var fertilizer = new Fertilizer
            {
                Id   = model.Id,
                Name = model.Name,
                N    = model.N,
                P    = model.P,
                K    = model.K,
                Ca   = model.Ca,
                Mg   = model.Mg,
                S    = model.S,
                Na   = model.Na,
            };
            await _fertilizerRepository.Add(fertilizer);

            TempData["message"] = "Dodano nowy nawóz!";
            ModelState.Clear();
            return(View());
        }