public ActionResult CopyFromExisting(CopyFromExistingProductConsumptionViewModel vm)
        {
            if (ModelState.IsValid)
            {
                Session["ProductConsumptionFromPId"] = vm.FromProductId;
                Product NewProduct = new Product();
                Product prod       = new ProductService(_unitOfWork).Find(vm.ToProductId);

                if (prod.ProductName.Length > 16)
                {
                    NewProduct.ProductCode = prod.ProductName.ToString().Substring(0, 16) + "-Bom";
                }
                else
                {
                    NewProduct.ProductCode = prod.ProductName.ToString().Substring(0, prod.ProductName.Length) + "-Bom";
                }

                NewProduct.ProductName        = prod.ProductName + "-Bom";
                NewProduct.ProductGroupId     = new ProductGroupService(_unitOfWork).Find(ProductGroupConstants.Bom).ProductGroupId;
                NewProduct.DivisionId         = (int)System.Web.HttpContext.Current.Session["DivisionId"];
                NewProduct.IsActive           = true;
                NewProduct.CreatedDate        = DateTime.Now;
                NewProduct.ModifiedDate       = DateTime.Now;
                NewProduct.CreatedBy          = User.Identity.Name;
                NewProduct.ModifiedBy         = User.Identity.Name;
                NewProduct.ReferenceDocTypeId = new DocumentTypeService(_unitOfWork).FindByName(MasterDocTypeConstants.Product).DocumentTypeId;
                NewProduct.ReferenceDocId     = prod.ProductId;
                NewProduct.ObjectState        = Model.ObjectState.Added;
                _ProductService.Create(NewProduct);


                var ExistingRec = _BomDetailService.GetExistingBaseProduct(prod.ProductId);
                if (ExistingRec != null)
                {
                    ExistingRec.ProductId   = NewProduct.ProductId;
                    ExistingRec.CreatedDate = DateTime.Now;
                    ExistingRec.ModifiedBy  = User.Identity.Name;
                    _BomDetailService.Update(ExistingRec);
                }
                else
                {
                    BomDetail bomdetail = new BomDetail();

                    bomdetail.BaseProductId  = prod.ProductId;
                    bomdetail.BatchQty       = 1;
                    bomdetail.ConsumptionPer = 100;
                    bomdetail.ProcessId      = new ProcessService(_unitOfWork).Find(ProcessConstants.Weaving).ProcessId;
                    bomdetail.ProductId      = NewProduct.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);
                }

                IEnumerable <BomDetail> bomdetList = new BomDetailService(_unitOfWork).GetBomDetailList(vm.FromProductId);

                foreach (BomDetail item in bomdetList)
                {
                    BomDetail bomdet = new BomDetail();
                    bomdet.BaseProductId  = NewProduct.ProductId;
                    bomdet.BatchQty       = item.BatchQty;
                    bomdet.ConsumptionPer = item.ConsumptionPer;
                    bomdet.Dimension1Id   = item.Dimension1Id;
                    bomdet.ProcessId      = item.ProcessId;
                    bomdet.ProductId      = item.ProductId;
                    bomdet.Qty            = item.Qty;
                    bomdet.CreatedDate    = DateTime.Now;
                    bomdet.ModifiedDate   = DateTime.Now;
                    bomdet.CreatedBy      = User.Identity.Name;
                    bomdet.ModifiedBy     = User.Identity.Name;
                    bomdet.ObjectState    = Model.ObjectState.Added;
                    _BomDetailService.Create(bomdet);
                }


                try
                {
                    _unitOfWork.Save();
                }

                catch (Exception ex)
                {
                    string message = _exception.HandleException(ex);
                    ModelState.AddModelError("", message);
                    return(PartialView("CopyFromExisting", vm));
                }

                return(Json(new { success = true, Url = "/ProductConsumptionHeader/Edit/" + NewProduct.ProductId }));
            }

            return(PartialView("CopyFromExisting", vm));
        }
        public ActionResult CopyFromExisting(CopyFromExistingDesignConsumptionViewModel vm)
        {
            if (ModelState.IsValid)
            {
                Product OldProduct = _ProductService.Find(vm.ProductId);

                FinishedProduct NewProduct   = new FinishedProduct();
                ProductGroup    productgroup = new ProductGroupService(_unitOfWork).Find(vm.ProductGroupId);

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

                NewProduct.ProductName        = productgroup.ProductGroupName;
                NewProduct.ProductGroupId     = new ProductGroupService(_unitOfWork).Find(ProductGroupConstants.Bom).ProductGroupId;
                NewProduct.DivisionId         = (int)System.Web.HttpContext.Current.Session["DivisionId"];
                NewProduct.IsActive           = true;
                NewProduct.CreatedDate        = DateTime.Now;
                NewProduct.ModifiedDate       = DateTime.Now;
                NewProduct.CreatedBy          = User.Identity.Name;
                NewProduct.ModifiedBy         = User.Identity.Name;
                NewProduct.ReferenceDocTypeId = new DocumentTypeService(_unitOfWork).FindByName(MasterDocTypeConstants.ProductGroup).DocumentTypeId;
                NewProduct.ReferenceDocId     = productgroup.ProductGroupId;
                NewProduct.IsSample           = false;
                NewProduct.ObjectState        = Model.ObjectState.Added;
                _ProductService.Create(NewProduct);



                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      = NewProduct.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);
                }


                IEnumerable <BomDetail> BomDetailList = new BomDetailService(_unitOfWork).GetBomDetailList(OldProduct.ProductId);

                foreach (BomDetail item in BomDetailList)
                {
                    BomDetail bomdetail = new BomDetail();
                    bomdetail.BaseProductId  = NewProduct.ProductId;
                    bomdetail.BatchQty       = item.BatchQty;
                    bomdetail.ConsumptionPer = item.ConsumptionPer;
                    bomdetail.Dimension1Id   = item.Dimension1Id;
                    bomdetail.ProcessId      = item.ProcessId;
                    bomdetail.ProductId      = item.ProductId;
                    bomdetail.Qty            = item.Qty;
                    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(PartialView("CopyFromExisting", vm));
                }

                return(Json(new { success = true, Url = "/DesignConsumptionHeader/Edit/" + NewProduct.ProductId }));
            }

            return(PartialView("CopyFromExisting", vm));
        }
        public ActionResult DeleteConfirmed(ReasonViewModel vm)
        {
            if (ModelState.IsValid)
            {
                var temp = _FinishedProductService.Find(vm.id);

                List <ProductSizeViewModel> sizelist    = new ProductSizeService(_unitOfWork).GetProductSizeForProduct(vm.id).ToList();
                List <ProductProcess>       ProcessList = new ProductProcessService(_unitOfWork).GetProductProcessIdListByProductId(vm.id).ToList();
                List <FinishedProductConsumptionLineViewModel> BOMDetailList = new  BomDetailService(_unitOfWork).GetFinishedProductConsumptionForIndex(vm.id).ToList();
                List <ProductSiteDetail> SiteDetail = new ProductSiteDetailService(_unitOfWork).GetSiteDetailForProduct(vm.id).ToList();


                foreach (var item in sizelist)
                {
                    new ProductSizeService(_unitOfWork).Delete(item.ProductSizeId);
                }

                foreach (var item in ProcessList)
                {
                    new ProductProcessService(_unitOfWork).Delete(item.ProductProcessId);
                }
                foreach (var item in BOMDetailList)
                {
                    new BomDetailService(_unitOfWork).Delete(item.BomDetailId);
                }
                foreach (var item in SiteDetail)
                {
                    new ProductSiteDetailService(_unitOfWork).Delete(item.ProductSiteDetailId);
                }

                ActivityLog al = new ActivityLog()
                {
                    ActivityType = (int)ActivityTypeContants.Deleted,
                    CreatedBy    = User.Identity.Name,
                    CreatedDate  = DateTime.Now,
                    DocId        = vm.id,
                    UserRemark   = vm.Reason,
                    Narration    = "Product is deleted with Name:" + temp.ProductName,
                    DocTypeId    = new DocumentTypeService(_unitOfWork).FindByName(TransactionDocCategoryConstants.SaleOrder).DocumentTypeId,
                    UploadDate   = DateTime.Now,
                };
                new ActivityLogService(_unitOfWork).Create(al);


                _FinishedProductService.Delete(vm.id);

                try
                {
                    _unitOfWork.Save();
                }

                catch (Exception ex)
                {
                    string message = _exception.HandleException(ex);
                    ModelState.AddModelError("", message);
                    return(PartialView("_Reason", vm));
                }


                return(Json(new { success = true }));
            }
            return(PartialView("_Reason", vm));
        }