public ActionResult Create()
        {
            DesignConsumptionHeaderViewModel p = new DesignConsumptionHeaderViewModel();

            PrepareViewBag();
            return(View("Create", p));
        }
        public ActionResult Edit(int id)
        {
            DesignConsumptionHeaderViewModel bvm = _BomDetailService.GetDesignConsumptionHeaderViewModel(id);

            PrepareViewBag();
            if (bvm == null)
            {
                return(HttpNotFound());
            }
            return(View("Create", bvm));
        }
        public ActionResult Create(DesignConsumptionHeaderViewModel svm)
        {
            if (ModelState.IsValid)
            {
                if (svm.BaseProductId == 0)
                {
                    FinishedProduct product = new FinishedProduct();

                    if (svm.ProductGroupName.Length > 20)
                    {
                        product.ProductCode = svm.ProductGroupName.ToString().Substring(0, 20);
                    }
                    else
                    {
                        product.ProductCode = svm.ProductGroupName.ToString().Substring(0, svm.ProductGroupName.Length);
                    }

                    product.ProductName        = svm.ProductGroupName;
                    product.ProductGroupId     = new ProductGroupService(_unitOfWork).Find(ProductGroupConstants.Bom).ProductGroupId;
                    product.DivisionId         = (int)System.Web.HttpContext.Current.Session["DivisionId"];
                    product.IsActive           = true;
                    product.ReferenceDocTypeId = new DocumentTypeService(_unitOfWork).FindByName(MasterDocTypeConstants.ProductGroup).DocumentTypeId;
                    product.ReferenceDocId     = svm.ProductGroupId;


                    product.IsSample = false;

                    product.CreatedDate  = DateTime.Now;
                    product.ModifiedDate = DateTime.Now;
                    product.CreatedBy    = User.Identity.Name;
                    product.ModifiedBy   = User.Identity.Name;
                    product.ObjectState  = Model.ObjectState.Added;
                    _ProductService.Create(product);


                    ProductGroup ProductGroup = new ProductGroupService(_unitOfWork).Find(svm.ProductGroupName);
                    if (ProductGroup != null)
                    {
                        var ProductList = (from p in db.Product
                                           where p.ProductGroupId == ProductGroup.ProductGroupId
                                           select new
                        {
                            ProductId = p.ProductId
                        }).ToList();

                        foreach (var item in ProductList)
                        {
                            BomDetail bomdetail = new BomDetail();

                            bomdetail.BaseProductId  = item.ProductId;
                            bomdetail.BatchQty       = 1;
                            bomdetail.ConsumptionPer = 100;
                            bomdetail.ProcessId      = new ProcessService(_unitOfWork).Find(ProcessConstants.Weaving).ProcessId;
                            bomdetail.ProductId      = product.ProductId;
                            bomdetail.Qty            = 1;

                            bomdetail.CreatedDate  = DateTime.Now;
                            bomdetail.ModifiedDate = DateTime.Now;
                            bomdetail.CreatedBy    = User.Identity.Name;
                            bomdetail.ModifiedBy   = User.Identity.Name;
                            bomdetail.ObjectState  = Model.ObjectState.Added;
                            _BomDetailService.Create(bomdetail);
                        }
                    }


                    try
                    {
                        _unitOfWork.Save();
                    }

                    catch (Exception ex)
                    {
                        string message = _exception.HandleException(ex);
                        ModelState.AddModelError("", message);
                        return(View(svm));
                    }

                    LogActivity.LogActivityDetail(LogVm.Map(new ActiivtyLogViewModel
                    {
                        DocTypeId    = new DocumentTypeService(_unitOfWork).Find(MasterDocTypeConstants.DesignConsumption).DocumentTypeId,
                        DocId        = product.ProductId,
                        ActivityType = (int)ActivityTypeContants.Added,
                    }));

                    //return RedirectToAction("Create").Success("Data saved successfully");
                    return(RedirectToAction("Edit", new { id = product.ProductId }).Success("Data saved Successfully"));
                }
                else
                {
                    List <LogTypeViewModel> LogList = new List <LogTypeViewModel>();

                    Product product = _ProductService.Find(svm.BaseProductId);

                    Product ExRec = Mapper.Map <Product>(product);

                    if (svm.ProductGroupName.Length > 20)
                    {
                        product.ProductCode = svm.ProductGroupName.ToString().Substring(0, 20);
                    }
                    else
                    {
                        product.ProductCode = svm.ProductGroupName.ToString().Substring(0, svm.ProductGroupName.Length);
                    }


                    product.ProductName        = svm.ProductGroupName;
                    product.ReferenceDocTypeId = new DocumentTypeService(_unitOfWork).FindByName(MasterDocTypeConstants.ProductGroup).DocumentTypeId;
                    product.ReferenceDocId     = svm.ProductGroupId;
                    product.ModifiedBy         = User.Identity.Name;
                    product.ModifiedDate       = DateTime.Now;

                    StringBuilder logstring = new StringBuilder();

                    _ProductService.Update(product);

                    LogList.Add(new LogTypeViewModel
                    {
                        ExObj = ExRec,
                        Obj   = product,
                    });
                    XElement Modifications = new ModificationsCheckService().CheckChanges(LogList);

                    try
                    {
                        _unitOfWork.Save();
                    }

                    catch (Exception ex)
                    {
                        string message = _exception.HandleException(ex);
                        ModelState.AddModelError("", message);
                        return(View("Create", svm));
                    }

                    LogActivity.LogActivityDetail(LogVm.Map(new ActiivtyLogViewModel
                    {
                        DocTypeId       = new DocumentTypeService(_unitOfWork).Find(MasterDocTypeConstants.DesignConsumption).DocumentTypeId,
                        DocId           = product.ProductId,
                        ActivityType    = (int)ActivityTypeContants.Modified,
                        xEModifications = Modifications,
                    }));

                    return(RedirectToAction("Index").Success("Data saved successfully"));
                }
            }
            PrepareViewBag();
            return(View(svm));
        }