Exemplo n.º 1
0
        public GeneralResponse AddStoreProduct(AddStoreProductRequest request)
        {
            GeneralResponse response = new GeneralResponse();

            try
            {
                StoreProduct storeProduct = new StoreProduct();

                #region If record exists, Edit UnitsInStock
                if (_storeProductRepository.FindBy(request.StoreID, request.ProductID) != null)
                {
                    EditStoreProductRequest editreq = new EditStoreProductRequest()
                    {
                        ModifiedEmployeeID = request.CreateEmployeeID,
                        ProductID          = request.ProductID,
                        StoreID            = request.StoreID,
                        UnitsInStock       = _storeProductRepository.FindBy(request.StoreID, request.ProductID).UnitsInStock + request.UnitsInStock,
                        RowVersion         = _storeProductRepository.FindBy(request.StoreID, request.ProductID).RowVersion
                    };
                    GeneralResponse editRes = new GeneralResponse();
                    editRes = EditStoreProduct(editreq);

                    foreach (string err in editRes.ErrorMessages)
                    {
                        response.ErrorMessages.Add(err);
                    }
                    return(response);
                }
                #endregion

                storeProduct.ID             = Guid.NewGuid();
                storeProduct.CreateDate     = PersianDateTime.Now;
                storeProduct.CreateEmployee = _employeeRepository.FindBy(request.CreateEmployeeID);
                storeProduct.Product        = this._productRepository.FindBy(request.ProductID);
                storeProduct.Store          = this._storeRepository.FindBy(request.StoreID);
                storeProduct.UnitsInStock   = request.UnitsInStock;
                storeProduct.RowVersion     = 1;

                #region Edit UnitsInStock Of Product Entity
                Product product = new Product();
                product = _productRepository.FindBy(request.ProductID);
                product.UnitsInStock -= request.UnitsInStock;
                if (product.UnitsInStock < 0)
                {
                    response.ErrorMessages.Add("تعداد وارد شده از موجودی انبار مرکزی بیشتر است.");

                    return(response);
                }
                else
                {
                    _productRepository.Save(product);
                }

                #endregion

                #region Validation
                if (storeProduct.GetBrokenRules().Count() > 0)
                {
                    foreach (BusinessRule businessRule in storeProduct.GetBrokenRules())
                    {
                        response.ErrorMessages.Add(businessRule.Rule);
                    }

                    return(response);
                }
                #endregion

                _storeProductRepository.Add(storeProduct);
                _uow.Commit();
            }
            catch (Exception ex)
            {
                response.ErrorMessages.Add(ex.Message);
            }

            return(response);
        }
Exemplo n.º 2
0
        public ActionResult Create(string id, StoreProductDetailView storeProductDetailView)
        {
            storeProductDetailView.EmployeeView = GetEmployee();

            #region Access Check
            bool hasPermission = GetEmployee().IsGuaranteed("StoreProduct_Insert");
            if (!hasPermission)
            {
                ModelState.AddModelError("", "AccessDenied");
                return(View(storeProductDetailView));
            }
            #endregion

            GetRequest getStoreRequest = new GetRequest()
            {
                ID = Guid.Parse(id)
            };
            storeProductDetailView.StoreView = this._storeService.GetStore(getStoreRequest).StoreView;

            #region DropDownList For Products
            storeProductDetailView.ProductViews = _productService.GetProducts().ProductViews;
            List <DropDownItem> list = new List <DropDownItem>();

            if (storeProductDetailView.ProductViews != null)
            {
                foreach (ProductView productView in storeProductDetailView.ProductViews)
                {
                    list.Add(new DropDownItem {
                        Value = productView.ID.ToString(), Text = productView.ProductName
                    });
                }
            }
            var selectList = new SelectList(list, "Value", "Text");
            ViewData["Products"] = selectList;
            #endregion

            if (ModelState.IsValid)
            {
                try
                {
                    AddStoreProductRequest request = new AddStoreProductRequest();
                    request.CreateEmployeeID = GetEmployee().ID;
                    request.ProductID        = storeProductDetailView.StoreProductView.ProductID;
                    request.StoreID          = Guid.Parse(id);
                    request.UnitsInStock     = storeProductDetailView.StoreProductView.UnitsInStock;

                    GeneralResponse response = this._storeProductService.AddStoreProduct(request);

                    if (response.success)
                    {
                        return(RedirectToAction("Index/" + request.StoreID));
                    }
                    else
                    {
                        foreach (string error in response.ErrorMessages)
                        {
                            ModelState.AddModelError("", error);
                        }
                        return(View(storeProductDetailView));
                    }
                }
                catch (Exception ex)
                {
                    ModelState.AddModelError("", ex.Message);
                    return(View(storeProductDetailView));
                }
            }

            return(View(storeProductDetailView));
        }