public ActionResult Create(int Id) //Id ==>Sale Order Header Id { PurchaseIndentHeader H = new PurchaseIndentHeaderService(_unitOfWork).Find(Id); PurchaseIndentLineViewModel s = new PurchaseIndentLineViewModel(); s.PurchaseIndentHeaderId = H.PurchaseIndentHeaderId; ViewBag.DocNo = H.DocNo; ViewBag.Status = H.Status; return(View(s)); }
public ActionResult _ForMaterialPlan(int id) { PurchaseIndentLineFilterViewModel vm = new PurchaseIndentLineFilterViewModel(); vm.PurchaseIndentHeaderId = id; PurchaseIndentHeader Header = new PurchaseIndentHeaderService(_unitOfWork).Find(id); vm.DocumentTypeSettings = new DocumentTypeSettingsService(_unitOfWork).GetDocumentTypeSettingsForDocument(Header.DocTypeId); return(PartialView("_Filters", vm)); }
private void NotifyUser(int Id, ActivityTypeContants ActivityType) { PurchaseIndentHeader Header = new PurchaseIndentHeaderService(_unitOfWork).Find(Id); PurchaseIndentSetting PurchaseIndentSettings = new PurchaseIndentSettingService(_unitOfWork).GetPurchaseIndentSettingForDocument(Header.DocTypeId, Header.DivisionId, Header.SiteId); DocEmailContent DocEmailContentSettings = new DocEmailContentService(_unitOfWork).GetDocEmailContentForDocument(Header.DocTypeId, Header.DivisionId, Header.SiteId, ActivityType); DocNotificationContent DocNotificationContentSettings = new DocNotificationContentService(_unitOfWork).GetDocNotificationContentForDocument(Header.DocTypeId, Header.DivisionId, Header.SiteId, ActivityType); DocSmsContent DocSmsContentSettings = new DocSmsContentService(_unitOfWork).GetDocSmsContentForDocument(Header.DocTypeId, Header.DivisionId, Header.SiteId, ActivityType); new NotifyUserController(_unitOfWork).SendEmailMessage(Id, ActivityType, DocEmailContentSettings, PurchaseIndentSettings.SqlProcDocumentPrint); new NotifyUserController(_unitOfWork).SendNotificationMessage(Id, ActivityType, DocNotificationContentSettings, User.Identity.Name); new NotifyUserController(_unitOfWork).SendSmsMessage(Id, ActivityType, DocSmsContentSettings); }
private ActionResult _Modify(int id) { PurchaseIndentLineViewModel temp = _PurchaseIndentLineService.GetPurchaseIndentLine(id); if (temp == null) { return(HttpNotFound()); } #region DocTypeTimeLineValidation try { TimePlanValidation = DocumentValidation.ValidateDocumentLine(new DocumentUniqueId { LockReason = temp.LockReason }, User.Identity.Name, out ExceptionMsg, out Continue); } catch (Exception ex) { string message = _exception.HandleException(ex); TempData["CSEXCL"] += message; TimePlanValidation = false; } if (!TimePlanValidation) { TempData["CSEXCL"] += ExceptionMsg; } #endregion if ((TimePlanValidation || Continue)) { ViewBag.LineMode = "Edit"; } PurchaseIndentHeader H = new PurchaseIndentHeaderService(_unitOfWork).Find(temp.PurchaseIndentHeaderId); //ViewBag.DocNo = H.DocNo; //Getting Settings var settings = new PurchaseIndentSettingService(_unitOfWork).GetPurchaseIndentSettingForDocument(H.DocTypeId, H.DivisionId, H.SiteId); temp.PurchIndentSettings = Mapper.Map <PurchaseIndentSetting, PurchaseIndentSettingsViewModel>(settings); temp.DocumentTypeSettings = new DocumentTypeSettingsService(_unitOfWork).GetDocumentTypeSettingsForDocument(H.DocTypeId); return(PartialView("_Create", temp)); }
public ActionResult _Detail(int id) { PurchaseIndentLineViewModel PurchaseIndentLine = _PurchaseIndentLineService.GetPurchaseIndentLine(id); if (PurchaseIndentLine == null) { return(HttpNotFound()); } PurchaseIndentHeader H = new PurchaseIndentHeaderService(_unitOfWork).Find(PurchaseIndentLine.PurchaseIndentHeaderId); //Getting Settings var settings = new PurchaseIndentSettingService(_unitOfWork).GetPurchaseIndentSettingForDocument(H.DocTypeId, H.DivisionId, H.SiteId); PurchaseIndentLine.PurchIndentSettings = Mapper.Map <PurchaseIndentSetting, PurchaseIndentSettingsViewModel>(settings); return(PartialView("_Create", PurchaseIndentLine)); }
public ActionResult _Create(int Id, DateTime?date) //Id ==>Sale Order Header Id { PurchaseIndentHeader H = new PurchaseIndentHeaderService(_unitOfWork).Find(Id); PurchaseIndentLineViewModel s = new PurchaseIndentLineViewModel(); //Getting Settings var settings = new PurchaseIndentSettingService(_unitOfWork).GetPurchaseIndentSettingForDocument(H.DocTypeId, H.DivisionId, H.SiteId); s.PurchIndentSettings = Mapper.Map <PurchaseIndentSetting, PurchaseIndentSettingsViewModel>(settings); s.DocumentTypeSettings = new DocumentTypeSettingsService(_unitOfWork).GetDocumentTypeSettingsForDocument(H.DocTypeId); s.PurchaseIndentHeaderId = H.PurchaseIndentHeaderId; ViewBag.DocNo = H.DocNo; ViewBag.Status = H.Status; if (date != null) { s.DueDate = date; } ViewBag.LineMode = "Create"; return(PartialView("_Create", s)); }
public ActionResult _ResultsPost(PurchaseIndentMasterDetailModel vm) { int Serial = _PurchaseIndentLineService.GetMaxSr(vm.PurchaseIndentLineViewModel.FirstOrDefault().PurchaseIndentHeaderId); bool BeforeSave = true; try { BeforeSave = PurchaseIndentDocEvents.beforeLineSaveBulkEvent(this, new PurchaseEventArgs(vm.PurchaseIndentLineViewModel.FirstOrDefault().PurchaseIndentHeaderId), ref db); } catch (Exception ex) { string message = _exception.HandleException(ex); TempData["CSEXCL"] += message; EventException = true; } if (!BeforeSave) { ModelState.AddModelError("", "Validation failed before save"); } if (ModelState.IsValid && BeforeSave && !EventException) { PurchaseIndentHeader header = new PurchaseIndentHeaderService(_unitOfWork).Find(vm.PurchaseIndentLineViewModel.FirstOrDefault().PurchaseIndentHeaderId); if (header.Status != (int)StatusConstants.Drafted && header.Status != (int)StatusConstants.Import) { header.Status = (int)StatusConstants.Modified; header.ModifiedBy = User.Identity.Name; header.ModifiedDate = DateTime.Now; header.ObjectState = Model.ObjectState.Modified; db.PurchaseIndentHeader.Add(header); } foreach (var item in vm.PurchaseIndentLineViewModel) { if (item.Qty > 0) { PurchaseIndentLine line = new PurchaseIndentLine(); line.PurchaseIndentHeaderId = item.PurchaseIndentHeaderId; line.MaterialPlanLineId = item.MaterialPlanLineId; line.ProductId = item.ProductId; line.Dimension1Id = item.Dimension1Id; line.Dimension2Id = item.Dimension2Id; line.Specification = item.Specification; line.Remark = item.Remark; line.Qty = item.Qty; line.Sr = Serial++; line.CreatedDate = DateTime.Now; line.ModifiedDate = DateTime.Now; line.CreatedBy = User.Identity.Name; line.ModifiedBy = User.Identity.Name; line.ObjectState = Model.ObjectState.Added; //_PurchaseIndentLineService.Create(line); db.PurchaseIndentLine.Add(line); } } try { PurchaseIndentDocEvents.onLineSaveBulkEvent(this, new PurchaseEventArgs(vm.PurchaseIndentLineViewModel.FirstOrDefault().PurchaseIndentHeaderId), ref db); } catch (Exception ex) { string message = _exception.HandleException(ex); TempData["CSEXCL"] += message; EventException = true; } try { if (EventException) { throw new Exception(); } db.SaveChanges(); //_unitOfWork.Save(); } catch (Exception ex) { string message = _exception.HandleException(ex); TempData["CSEXCL"] += message; return(PartialView("_Results", vm)); } try { PurchaseIndentDocEvents.afterLineSaveBulkEvent(this, new PurchaseEventArgs(vm.PurchaseIndentLineViewModel.FirstOrDefault().PurchaseIndentHeaderId), ref db); } catch (Exception ex) { string message = _exception.HandleException(ex); TempData["CSEXC"] += message; } LogActivity.LogActivityDetail(LogVm.Map(new ActiivtyLogViewModel { DocTypeId = header.DocTypeId, DocId = header.PurchaseIndentHeaderId, ActivityType = (int)ActivityTypeContants.MultipleCreate, DocNo = header.DocNo, DocDate = header.DocDate, DocStatus = header.Status, })); return(Json(new { success = true })); } return(PartialView("_Results", vm)); }
public ActionResult DeletePost(PurchaseIndentLineViewModel vm) { bool BeforeSave = true; try { BeforeSave = PurchaseIndentDocEvents.beforeLineDeleteEvent(this, new PurchaseEventArgs(vm.PurchaseIndentHeaderId, vm.PurchaseIndentLineId), ref db); } catch (Exception ex) { string message = _exception.HandleException(ex); TempData["CSEXC"] += message; EventException = true; } if (!BeforeSave) { TempData["CSEXC"] += "Validation failed before delete."; } if (BeforeSave && !EventException) { List <LogTypeViewModel> LogList = new List <LogTypeViewModel>(); PurchaseIndentLine PurchaseIndentLine = db.PurchaseIndentLine.Find(vm.PurchaseIndentLineId); try { PurchaseIndentDocEvents.onLineDeleteEvent(this, new PurchaseEventArgs(PurchaseIndentLine.PurchaseIndentHeaderId, PurchaseIndentLine.PurchaseIndentLineId), ref db); } catch (Exception ex) { string message = _exception.HandleException(ex); TempData["CSEXCL"] += message; EventException = true; } LogList.Add(new LogTypeViewModel { ExObj = Mapper.Map <PurchaseIndentLine>(PurchaseIndentLine), }); //_PurchaseIndentLineService.Delete(PurchaseIndentLine); PurchaseIndentHeader header = new PurchaseIndentHeaderService(_unitOfWork).Find(PurchaseIndentLine.PurchaseIndentHeaderId); if (header.Status != (int)StatusConstants.Drafted) { header.Status = (int)StatusConstants.Modified; //new PurchaseIndentHeaderService(_unitOfWork).Update(header); header.ModifiedBy = User.Identity.Name; header.ModifiedDate = DateTime.Now; header.ObjectState = Model.ObjectState.Modified; db.PurchaseIndentHeader.Add(header); } PurchaseIndentLine.ObjectState = Model.ObjectState.Deleted; db.PurchaseIndentLine.Remove(PurchaseIndentLine); XElement Modifications = new ModificationsCheckService().CheckChanges(LogList); try { if (EventException) { throw new Exception(); } db.SaveChanges(); //_unitOfWork.Save(); } catch (Exception ex) { string message = _exception.HandleException(ex); TempData["CSEXCL"] += message; return(PartialView("_Create", vm)); } try { PurchaseIndentDocEvents.afterLineDeleteEvent(this, new PurchaseEventArgs(PurchaseIndentLine.PurchaseIndentHeaderId, PurchaseIndentLine.PurchaseIndentLineId), ref db); } catch (Exception ex) { string message = _exception.HandleException(ex); TempData["CSEXC"] += message; } LogActivity.LogActivityDetail(LogVm.Map(new ActiivtyLogViewModel { DocTypeId = header.DocTypeId, DocId = header.PurchaseIndentHeaderId, DocLineId = PurchaseIndentLine.PurchaseIndentLineId, ActivityType = (int)ActivityTypeContants.Deleted, DocNo = header.DocNo, xEModifications = Modifications, DocDate = header.DocDate, DocStatus = header.Status, })); } return(Json(new { success = true })); }
public ActionResult _CreatePost(PurchaseIndentLineViewModel svm) { PurchaseIndentLine s = Mapper.Map <PurchaseIndentLineViewModel, PurchaseIndentLine>(svm); PurchaseIndentHeader temp = new PurchaseIndentHeaderService(_unitOfWork).Find(s.PurchaseIndentHeaderId); ViewBag.Status = temp.Status; if (svm.PurchaseIndentLineId <= 0) { ViewBag.LineMode = "Create"; } else { ViewBag.LineMode = "Edit"; } if (temp.DocDate > s.DueDate && s.DueDate != null) { ModelState.AddModelError("DueDate", "Duedate should be greater than Docdate"); } if (s.Qty <= 0) { ModelState.AddModelError("Qty", "Qty field is required"); } bool BeforeSave = true; try { if (svm.PurchaseIndentLineId <= 0) { BeforeSave = PurchaseIndentDocEvents.beforeLineSaveEvent(this, new PurchaseEventArgs(svm.PurchaseIndentHeaderId, EventModeConstants.Add), ref db); } else { BeforeSave = PurchaseIndentDocEvents.beforeLineSaveEvent(this, new PurchaseEventArgs(svm.PurchaseIndentHeaderId, EventModeConstants.Edit), ref db); } } catch (Exception ex) { string message = _exception.HandleException(ex); TempData["CSEXCL"] += message; EventException = true; } if (!BeforeSave) { ModelState.AddModelError("", "Validation failed before save."); } if (ModelState.IsValid && BeforeSave && !EventException) { if (svm.PurchaseIndentLineId <= 0) { s.Sr = _PurchaseIndentLineService.GetMaxSr(s.PurchaseIndentHeaderId); s.CreatedDate = DateTime.Now; s.ModifiedDate = DateTime.Now; s.CreatedBy = User.Identity.Name; s.ModifiedBy = User.Identity.Name; s.ObjectState = Model.ObjectState.Added; //_PurchaseIndentLineService.Create(s); db.PurchaseIndentLine.Add(s); PurchaseIndentHeader header = new PurchaseIndentHeaderService(_unitOfWork).Find(s.PurchaseIndentHeaderId); if (header.Status != (int)StatusConstants.Drafted) { header.Status = (int)StatusConstants.Modified; //new PurchaseIndentHeaderService(_unitOfWork).Update(header); header.ModifiedBy = User.Identity.Name; header.ModifiedDate = DateTime.Now; header.ObjectState = Model.ObjectState.Modified; db.PurchaseIndentHeader.Add(header); } try { PurchaseIndentDocEvents.onLineSaveEvent(this, new PurchaseEventArgs(s.PurchaseIndentHeaderId, s.PurchaseIndentLineId, EventModeConstants.Add), ref db); } catch (Exception ex) { string message = _exception.HandleException(ex); TempData["CSEXCL"] += message; EventException = true; } try { if (EventException) { throw new Exception(); } db.SaveChanges(); //_unitOfWork.Save(); } catch (Exception ex) { string message = _exception.HandleException(ex); TempData["CSEXCL"] += message; return(PartialView("_Create", svm)); } try { PurchaseIndentDocEvents.afterLineSaveEvent(this, new PurchaseEventArgs(s.PurchaseIndentHeaderId, s.PurchaseIndentLineId, EventModeConstants.Add), ref db); } catch (Exception ex) { string message = _exception.HandleException(ex); TempData["CSEXCL"] += message; } LogActivity.LogActivityDetail(LogVm.Map(new ActiivtyLogViewModel { DocTypeId = temp.DocTypeId, DocId = temp.PurchaseIndentHeaderId, DocLineId = s.PurchaseIndentLineId, ActivityType = (int)ActivityTypeContants.Added, DocNo = temp.DocNo, DocDate = temp.DocDate, DocStatus = temp.Status, })); return(RedirectToAction("_Create", new { id = svm.PurchaseIndentHeaderId, date = ((svm.DueDate == null) ? null : svm.DueDate) })); //return _Create(svm.PurchaseIndentHeaderId, ((svm.DueDate == null) ? null : svm.DueDate)); } else { List <LogTypeViewModel> LogList = new List <LogTypeViewModel>(); PurchaseIndentLine templine = _PurchaseIndentLineService.Find(s.PurchaseIndentLineId); int Status = temp.Status; PurchaseIndentLine ExRec = new PurchaseIndentLine(); ExRec = Mapper.Map <PurchaseIndentLine>(templine); templine.DueDate = s.DueDate; templine.ProductId = s.ProductId; templine.Qty = s.Qty; templine.Remark = s.Remark; templine.Dimension1Id = s.Dimension1Id; templine.Dimension2Id = s.Dimension2Id; templine.Specification = s.Specification; templine.ModifiedDate = DateTime.Now; templine.ModifiedBy = User.Identity.Name; //_PurchaseIndentLineService.Update(templine); templine.ObjectState = Model.ObjectState.Modified; db.PurchaseIndentLine.Add(templine); LogList.Add(new LogTypeViewModel { ExObj = ExRec, Obj = templine, }); if (temp.Status != (int)StatusConstants.Drafted) { temp.Status = (int)StatusConstants.Modified; //new PurchaseIndentHeaderService(_unitOfWork).Update(temp); temp.ModifiedDate = DateTime.Now; temp.ModifiedBy = User.Identity.Name; temp.ObjectState = Model.ObjectState.Modified; db.PurchaseIndentHeader.Add(temp); } XElement Modifications = new ModificationsCheckService().CheckChanges(LogList); try { PurchaseIndentDocEvents.onLineSaveEvent(this, new PurchaseEventArgs(s.PurchaseIndentHeaderId, templine.PurchaseIndentLineId, EventModeConstants.Edit), ref db); } catch (Exception ex) { string message = _exception.HandleException(ex); TempData["CSEXCL"] += message; EventException = true; } try { if (EventException) { throw new Exception(); } db.SaveChanges(); //_unitOfWork.Save(); } catch (Exception ex) { string message = _exception.HandleException(ex); TempData["CSEXCL"] += message; return(PartialView("_Create", svm)); } try { PurchaseIndentDocEvents.afterLineSaveEvent(this, new PurchaseEventArgs(s.PurchaseIndentHeaderId, templine.PurchaseIndentLineId, EventModeConstants.Edit), ref db); } catch (Exception ex) { string message = _exception.HandleException(ex); TempData["CSEXC"] += message; } LogActivity.LogActivityDetail(LogVm.Map(new ActiivtyLogViewModel { DocTypeId = temp.DocTypeId, DocId = templine.PurchaseIndentHeaderId, DocLineId = templine.PurchaseIndentLineId, ActivityType = (int)ActivityTypeContants.Modified, DocNo = temp.DocNo, xEModifications = Modifications, DocDate = temp.DocDate, DocStatus = temp.Status, })); return(Json(new { success = true })); } } return(PartialView("_Create", svm)); }
public ActionResult DeleteConfirmed(ReasonViewModel vm) { if (ModelState.IsValid) { List <LogTypeViewModel> LogList = new List <LogTypeViewModel>(); db.Configuration.AutoDetectChangesEnabled = false; var temp = _MaterialPlanHeaderService.Find(vm.id); int status = temp.Status; LogList.Add(new LogTypeViewModel { ExObj = temp, }); List <ProdOrderLine> ProdOrderLines = new List <ProdOrderLine>(); List <PurchaseIndentLine> PurchaseIndentLines = new List <PurchaseIndentLine>(); var materialplanline = new MaterialPlanLineService(_unitOfWork).GetMaterialPlanForDelete(vm.id).ToList(); foreach (var item in materialplanline) { //Deleting ProdOrderLines & HEaders ProdOrderLines = new ProdOrderLineService(_unitOfWork).GetProdOrderLineForMaterialPlan(item.MaterialPlanLineId).ToList(); int[] LineIds = ProdOrderLines.Select(m => m.ProdOrderLineId).ToArray(); List <ProdOrderLineStatus> LineStatus = (from p in db.ProdOrderLineStatus where LineIds.Contains(p.ProdOrderLineId.Value) select p).ToList(); foreach (var LineStatitem in LineStatus) { LineStatitem.ObjectState = Model.ObjectState.Deleted; db.ProdOrderLineStatus.Attach(LineStatitem); db.ProdOrderLineStatus.Remove(LineStatitem); } foreach (var item2 in ProdOrderLines) { LogList.Add(new LogTypeViewModel { ExObj = item2, }); item2.ObjectState = Model.ObjectState.Deleted; //new ProdOrderLineService(_unitOfWork).Delete(item2.ProdOrderLineId); db.ProdOrderLine.Attach(item2); db.ProdOrderLine.Remove(item2); } //Deleting PurchaseIndentLines & Headers PurchaseIndentLines = new PurchaseIndentLineService(_unitOfWork).GetPurchaseIndentLineForMaterialPlan(item.MaterialPlanLineId).ToList(); foreach (var item2 in PurchaseIndentLines) { LogList.Add(new LogTypeViewModel { ExObj = item2, }); item2.ObjectState = Model.ObjectState.Deleted; //new PurchaseIndentLineService(_unitOfWork).Delete(item2); db.PurchaseIndentLine.Attach(item2); db.PurchaseIndentLine.Remove(item2); } //Deleting MaterialplanforSaleOrder var MAterialPlanForSaleOrder = new MaterialPlanForSaleOrderService(_unitOfWork).GetMaterialPlanForSaleOrderForMaterialPlanline(item.MaterialPlanLineId).ToList(); foreach (var item2 in MAterialPlanForSaleOrder) { LogList.Add(new LogTypeViewModel { ExObj = item2, }); item2.ObjectState = Model.ObjectState.Deleted; //new MaterialPlanForSaleOrderService(_unitOfWork).Delete(item2); db.MaterialPlanForSaleOrder.Attach(item2); db.MaterialPlanForSaleOrder.Remove(item2); } //Deleting MaterialPlanForProdOrderLine var MAterialPlanForProdOrderLine = new MaterialPlanForProdOrderLineService(_unitOfWork).GetMAterialPlanForProdORderForMaterialPlan(item.MaterialPlanLineId).ToList(); foreach (var item2 in MAterialPlanForProdOrderLine) { LogList.Add(new LogTypeViewModel { ExObj = item2, }); item2.ObjectState = Model.ObjectState.Deleted; //new MaterialPlanForProdOrderLineService(_unitOfWork).Delete(item2.MaterialPlanForProdOrderLineId); db.MaterialPlanForProdOrderLine.Attach(item2); db.MaterialPlanForProdOrderLine.Remove(item2); } //new MaterialPlanLineService(_unitOfWork).Delete(item.MaterialPlanLineId); //MaterialPlanLine Si = (MaterialPlanLine) item; MaterialPlanLine MPL = new MaterialPlanLineService(_unitOfWork).Find(item.MaterialPlanLineId); LogList.Add(new LogTypeViewModel { ExObj = MPL, }); MPL.ObjectState = Model.ObjectState.Deleted; db.MaterialPlanLine.Attach(MPL); db.MaterialPlanLine.Remove(MPL); } var ProdORderHeaders = new ProdOrderHeaderService(_unitOfWork).GetProdOrderListForMaterialPlan(vm.id).ToList(); int[] ProdOrderIds = ProdORderHeaders.Select(m => m.ProdOrderHeaderId).ToArray(); List <ProdOrderHeaderStatus> ProdOrderHeaderStatus = (from p in db.ProdOrderHeaderStatus where ProdOrderIds.Contains(p.ProdOrderHeaderId.Value) select p).ToList(); foreach (var StatItem in ProdOrderHeaderStatus) { StatItem.ObjectState = Model.ObjectState.Deleted; db.ProdOrderHeaderStatus.Attach(StatItem); db.ProdOrderHeaderStatus.Remove(StatItem); } foreach (var item2 in ProdORderHeaders) { LogList.Add(new LogTypeViewModel { ExObj = item2, }); item2.ObjectState = Model.ObjectState.Deleted; // new ProdOrderHeaderService(_unitOfWork).Delete(item2.ProdOrderHeaderId); db.ProdOrderHeader.Attach(item2); db.ProdOrderHeader.Remove(item2); } var PurchaseIndentHeaders = new PurchaseIndentHeaderService(_unitOfWork).GetPurchaseIndentListForMAterialPlan(vm.id).ToList(); foreach (var item2 in PurchaseIndentHeaders) { LogList.Add(new LogTypeViewModel { ExObj = item2, }); item2.ObjectState = Model.ObjectState.Deleted; //new PurchaseIndentHeaderService(_unitOfWork).Delete(item2.PurchaseIndentHeaderId); db.PurchaseIndentHeader.Attach(item2); db.PurchaseIndentHeader.Remove(item2); } //Deleting MaterialPlanForProdORder var MaterialPlanForProdOrder = new MaterialPlanForProdOrderService(_unitOfWork).GetMAterialPlanForProdORderForMaterialPlan(vm.id).ToList(); foreach (var item2 in MaterialPlanForProdOrder) { LogList.Add(new LogTypeViewModel { ExObj = item2, }); item2.ObjectState = Model.ObjectState.Deleted; //new MaterialPlanForProdOrderService(_unitOfWork).Delete(item2); db.MaterialPlanForProdOrder.Attach(item2); db.MaterialPlanForProdOrder.Remove(item2); } temp.ObjectState = Model.ObjectState.Deleted; // _MaterialPlanHeaderService.Delete(temp); db.MaterialPlanHeader.Attach(temp); db.MaterialPlanHeader.Remove(temp); XElement Modifications = new ModificationsCheckService().CheckChanges(LogList); try { // _unitOfWork.Save(); db.SaveChanges(); db.Configuration.AutoDetectChangesEnabled = true; } catch (Exception ex) { string message = _exception.HandleException(ex); TempData["CSEXC"] += message; return(PartialView("_Reason", vm)); } LogActivity.LogActivityDetail(LogVm.Map(new ActiivtyLogViewModel { DocTypeId = temp.DocTypeId, DocId = temp.MaterialPlanHeaderId, ActivityType = (int)ActivityTypeContants.Deleted, UserRemark = vm.Reason, DocNo = temp.DocNo, xEModifications = Modifications, DocDate = temp.DocDate, DocStatus = temp.Status, })); return(Json(new { success = true })); } return(PartialView("_Reason", vm)); }
public ActionResult Post(MaterialPlanHeaderViewModel vm) { MaterialPlanHeader pt = AutoMapper.Mapper.Map <MaterialPlanHeaderViewModel, MaterialPlanHeader>(vm); #region DocTypeTimeLineValidation try { if (vm.MaterialPlanHeaderId <= 0) { TimePlanValidation = DocumentValidation.ValidateDocument(Mapper.Map <DocumentUniqueId>(vm), DocumentTimePlanTypeConstants.Create, User.Identity.Name, out ExceptionMsg, out Continue); } else { TimePlanValidation = DocumentValidation.ValidateDocument(Mapper.Map <DocumentUniqueId>(vm), DocumentTimePlanTypeConstants.Modify, User.Identity.Name, out ExceptionMsg, out Continue); } } catch (Exception ex) { string message = _exception.HandleException(ex); TempData["CSEXC"] += message; TimePlanValidation = false; } if (!TimePlanValidation) { TempData["CSEXC"] += ExceptionMsg; } #endregion if (vm.MaterialPlanSettings.isMandatoryMachine == true && vm.MachineId == null) { ModelState.AddModelError("MachineId", "Machine field is required"); } if (ModelState.IsValid && (TimePlanValidation || Continue)) { #region CreateRecord if (vm.MaterialPlanHeaderId <= 0) { pt.CreatedDate = DateTime.Now; pt.ModifiedDate = DateTime.Now; pt.CreatedBy = User.Identity.Name; pt.ModifiedBy = User.Identity.Name; pt.ObjectState = Model.ObjectState.Added; _MaterialPlanHeaderService.Create(pt); try { _unitOfWork.Save(); } catch (Exception ex) { string message = _exception.HandleException(ex); TempData["CSEXC"] += message; ViewBag.Mode = "Add"; ViewBag.Name = new DocumentTypeService(_unitOfWork).Find(vm.DocTypeId).DocumentTypeName; ViewBag.id = vm.DocTypeId; return(View("Create", vm)); } LogActivity.LogActivityDetail(LogVm.Map(new ActiivtyLogViewModel { DocTypeId = pt.DocTypeId, DocId = pt.MaterialPlanHeaderId, ActivityType = (int)ActivityTypeContants.Added, DocNo = pt.DocNo, DocDate = pt.DocDate, DocStatus = pt.Status, })); return(RedirectToAction("Modify", new { id = pt.MaterialPlanHeaderId }).Success("Data saved successfully")); } #endregion #region EditRecord else { List <LogTypeViewModel> LogList = new List <LogTypeViewModel>(); MaterialPlanHeader temp = _MaterialPlanHeaderService.Find(pt.MaterialPlanHeaderId); MaterialPlanHeader ExRec = Mapper.Map <MaterialPlanHeader>(temp); temp.DocNo = pt.DocNo; temp.DocDate = pt.DocDate; temp.DueDate = pt.DueDate; temp.Remark = pt.Remark; temp.BuyerId = pt.BuyerId; temp.MachineId = pt.MachineId; temp.ModifiedDate = DateTime.Now; temp.ModifiedBy = User.Identity.Name; temp.ObjectState = Model.ObjectState.Modified; _MaterialPlanHeaderService.Update(temp); PurchaseIndentHeader ExistingIndent = new PurchaseIndentHeaderService(_unitOfWork).GetPurchaseIndentForMaterialPlan(temp.MaterialPlanHeaderId); ProdOrderHeader ExistingProdOrder = new ProdOrderHeaderService(_unitOfWork).GetProdOrderForMaterialPlan(temp.MaterialPlanHeaderId); if (ExistingIndent != null) { ExistingIndent.ModifiedBy = User.Identity.Name; ExistingIndent.ModifiedDate = DateTime.Now; ExistingIndent.Remark = temp.Remark; ExistingIndent.ObjectState = Model.ObjectState.Added; new PurchaseIndentHeaderService(_unitOfWork).Update(ExistingIndent); } if (ExistingProdOrder != null) { ExistingProdOrder.ModifiedBy = User.Identity.Name; ExistingProdOrder.ModifiedDate = DateTime.Now; ExistingProdOrder.Remark = temp.Remark; ExistingProdOrder.ObjectState = Model.ObjectState.Added; new ProdOrderHeaderService(_unitOfWork).Update(ExistingProdOrder); } LogList.Add(new LogTypeViewModel { ExObj = ExRec, Obj = temp, }); XElement Modifications = new ModificationsCheckService().CheckChanges(LogList); try { _unitOfWork.Save(); } catch (Exception ex) { string message = _exception.HandleException(ex); TempData["CSEXC"] += message; ViewBag.Mode = "Edit"; ViewBag.Name = new DocumentTypeService(_unitOfWork).Find(vm.DocTypeId).DocumentTypeName; ViewBag.id = vm.DocTypeId; return(View("Create", pt)); } LogActivity.LogActivityDetail(LogVm.Map(new ActiivtyLogViewModel { DocTypeId = temp.DocTypeId, DocId = temp.MaterialPlanHeaderId, ActivityType = (int)ActivityTypeContants.Modified, DocNo = temp.DocNo, xEModifications = Modifications, DocDate = temp.DocDate, DocStatus = temp.Status, })); return(RedirectToAction("Index", new { id = vm.DocTypeId }).Success("Data saved successfully")); } #endregion } ViewBag.Name = new DocumentTypeService(_unitOfWork).Find(vm.DocTypeId).DocumentTypeName; ViewBag.id = vm.DocTypeId; ViewBag.Mode = "Add"; return(View("Create", vm)); }
public ActionResult Post(MaterialPlanHeaderViewModel vm) { MaterialPlanHeader pt = AutoMapper.Mapper.Map <MaterialPlanHeaderViewModel, MaterialPlanHeader>(vm); //#region DocTypeTimeLineValidation //try //{ // if (vm.MaterialPlanHeaderId <= 0) // TimePlanValidation = DocumentValidation.ValidateDocument(Mapper.Map<DocumentUniqueId>(vm), DocumentTimePlanTypeConstants.Create, User.Identity.Name, out ExceptionMsg, out Continue); // else // TimePlanValidation = DocumentValidation.ValidateDocument(Mapper.Map<DocumentUniqueId>(vm), DocumentTimePlanTypeConstants.Modify, User.Identity.Name, out ExceptionMsg, out Continue); //} //catch (Exception ex) //{ // string message = _exception.HandleException(ex); // TempData["CSEXC"] += message; // TimePlanValidation = false; //} //if (!TimePlanValidation) // TempData["CSEXC"] += ExceptionMsg; //#endregion if (ModelState.IsValid && (TimePlanValidation || Continue)) { #region CreateRecord if (vm.MaterialPlanHeaderId <= 0) { using (var context = new ApplicationDbContext()) { pt.CreatedDate = DateTime.Now; pt.ModifiedDate = DateTime.Now; pt.CreatedBy = User.Identity.Name; pt.ModifiedBy = User.Identity.Name; pt.ObjectState = Model.ObjectState.Added; context.MaterialPlanHeader.Add(pt); int Serial = 0; MaterialPlanLineListViewModel svm = new MaterialPlanLineListViewModel(); svm.MaterialPlanLineViewModel = (List <MaterialPlanForSaleOrderViewModel>)System.Web.HttpContext.Current.Session["SODyeingPlan"]; var Summary = (IEnumerable <MaterialPlanLineViewModel>)System.Web.HttpContext.Current.Session["SODyeingPlanSummary"]; MaterialPlanSettings Settings = new MaterialPlanSettingsService(_unitOfWork).GetMaterialPlanSettingsForDocument(pt.DocTypeId, pt.DivisionId, pt.SiteId); bool isPr = false; bool isPP = false; int j = 0; foreach (var item in Summary) { { MaterialPlanLine planLine = new MaterialPlanLine(); planLine.RequiredQty = item.RequiredQty; planLine.ExcessStockQty = item.ExcessStockQty; planLine.MaterialPlanHeaderId = item.MaterialPlanHeaderId; planLine.ProductId = item.ProductId; planLine.Dimension1Id = item.Dimension1Id; planLine.Dimension2Id = item.Dimension2Id; planLine.ProdPlanQty = item.ProdPlanQty; planLine.CreatedBy = User.Identity.Name; planLine.CreatedDate = DateTime.Now; planLine.Sr = Serial++; planLine.Specification = item.Specification; planLine.ModifiedBy = User.Identity.Name; planLine.MaterialPlanLineId = j; planLine.ModifiedDate = DateTime.Now; planLine.ProcessId = item.ProcessId; planLine.Remark = item.Remark; planLine.PurchPlanQty = item.PurchPlanQty; planLine.StockPlanQty = item.StockPlanQty; planLine.GeneratedFor = MaterialPlanConstants.SaleOrder; planLine.ObjectState = Model.ObjectState.Added; context.MaterialPlanLine.Add(planLine); if (!isPr) { if (item.ProdPlanQty > 0) { isPr = true; } } if (!isPP) { if (item.PurchPlanQty > 0) { isPP = true; } } } j++; } if (isPr) { ProdOrderHeader ExistingProdOrder = new ProdOrderHeaderService(_unitOfWork).GetProdOrderForMaterialPlan(pt.MaterialPlanHeaderId); int ProdORderSerial = 1; if (ExistingProdOrder == null) { ProdOrderHeader prodOrderHeader = new ProdOrderHeader(); prodOrderHeader.CreatedBy = User.Identity.Name; prodOrderHeader.CreatedDate = DateTime.Now; prodOrderHeader.DivisionId = pt.DivisionId; prodOrderHeader.DocDate = pt.DocDate; prodOrderHeader.DocNo = pt.DocNo; prodOrderHeader.DocTypeId = Settings.DocTypeProductionOrderId.Value; prodOrderHeader.DueDate = pt.DueDate; prodOrderHeader.MaterialPlanHeaderId = pt.MaterialPlanHeaderId; prodOrderHeader.ModifiedBy = User.Identity.Name; prodOrderHeader.ModifiedDate = DateTime.Now; prodOrderHeader.Remark = pt.Remark; prodOrderHeader.BuyerId = pt.BuyerId; prodOrderHeader.SiteId = pt.SiteId; //prodOrderHeader.Status = header.Status; prodOrderHeader.Status = (int)StatusConstants.System; prodOrderHeader.ObjectState = Model.ObjectState.Added; context.ProdOrderHeader.Add(prodOrderHeader); //ForCreating ProdOrderStatus ProdOrderHeaderStatus pts = new ProdOrderHeaderStatus(); pts.ProdOrderHeaderId = prodOrderHeader.ProdOrderHeaderId; pts.ObjectState = Model.ObjectState.Added; context.ProdOrderHeaderStatus.Add(pts); int ProdOrderLineKey = 0; foreach (var item in context.MaterialPlanLine.Local.Where(m => m.ProdPlanQty > 0)) { ProdOrderLine prodOrderLine = new ProdOrderLine(); prodOrderLine.CreatedBy = User.Identity.Name; prodOrderLine.CreatedDate = DateTime.Now; prodOrderLine.MaterialPlanLineId = item.MaterialPlanLineId; prodOrderLine.ModifiedBy = User.Identity.Name; prodOrderLine.ModifiedDate = DateTime.Now; prodOrderLine.ProdOrderHeaderId = prodOrderHeader.ProdOrderHeaderId; prodOrderLine.Specification = item.Specification; prodOrderLine.ProductId = item.ProductId; prodOrderLine.Dimension1Id = item.Dimension1Id; prodOrderLine.Dimension2Id = item.Dimension2Id; prodOrderLine.Sr = ProdORderSerial++; prodOrderLine.Qty = item.ProdPlanQty; prodOrderLine.Remark = item.Remark; prodOrderLine.ProdOrderLineId = ProdOrderLineKey++; prodOrderLine.ObjectState = Model.ObjectState.Added; context.ProdOrderLine.Add(prodOrderLine); //ForAdding ProdrderLinestatus ProdOrderLineStatus ptl = new ProdOrderLineStatus(); ptl.ProdOrderLineId = prodOrderLine.ProdOrderLineId; ptl.ObjectState = Model.ObjectState.Added; context.ProdOrderLineStatus.Add(ptl); } } else { ProdORderSerial = new ProdOrderLineService(_unitOfWork).GetMaxSr(ExistingProdOrder.ProdOrderHeaderId); int ProdOrderLineKey = 0; foreach (var item in context.MaterialPlanLine.Local.Where(m => m.ProdPlanQty > 0)) { ProdOrderLine prodOrderLine = new ProdOrderLine(); prodOrderLine.CreatedBy = User.Identity.Name; prodOrderLine.CreatedDate = DateTime.Now; prodOrderLine.MaterialPlanLineId = item.MaterialPlanLineId; prodOrderLine.ModifiedBy = User.Identity.Name; prodOrderLine.ModifiedDate = DateTime.Now; prodOrderLine.ProdOrderHeaderId = ExistingProdOrder.ProdOrderHeaderId; prodOrderLine.ProductId = item.ProductId; prodOrderLine.Dimension1Id = item.Dimension1Id; prodOrderLine.Dimension2Id = item.Dimension2Id; prodOrderLine.Specification = item.Specification; prodOrderLine.Qty = item.ProdPlanQty; prodOrderLine.Sr = ProdORderSerial++; prodOrderLine.Remark = item.Remark; prodOrderLine.ProdOrderLineId = ProdOrderLineKey++; prodOrderLine.ObjectState = Model.ObjectState.Added; context.ProdOrderLine.Add(prodOrderLine); //ForAdding ProdrderLinestatus ProdOrderLineStatus ptl = new ProdOrderLineStatus(); ptl.ProdOrderLineId = prodOrderLine.ProdOrderLineId; ptl.ObjectState = Model.ObjectState.Added; context.ProdOrderLineStatus.Add(ptl); } } } if (isPP) { PurchaseIndentHeader ExistingIndent = new PurchaseIndentHeaderService(_unitOfWork).GetPurchaseIndentForMaterialPlan(pt.MaterialPlanHeaderId); int PurchaseIndentSr = 1; if (ExistingIndent == null) { PurchaseIndentHeader indentHeader = new PurchaseIndentHeader(); indentHeader.CreatedBy = User.Identity.Name; indentHeader.CreatedDate = DateTime.Now; indentHeader.DivisionId = pt.DivisionId; indentHeader.DocDate = pt.DocDate; indentHeader.DocNo = pt.DocNo; indentHeader.DocTypeId = Settings.DocTypePurchaseIndentId.Value; indentHeader.ModifiedBy = User.Identity.Name; indentHeader.MaterialPlanHeaderId = pt.MaterialPlanHeaderId; indentHeader.ModifiedDate = DateTime.Now; indentHeader.Remark = pt.Remark; indentHeader.SiteId = pt.SiteId; //indentHeader.Status = header.Status; indentHeader.Status = (int)StatusConstants.System; indentHeader.DepartmentId = (int)DepartmentConstants.Production; indentHeader.ObjectState = Model.ObjectState.Added; context.PurchaseIndentHeader.Add(indentHeader); foreach (var item in context.MaterialPlanLine.Local.Where(m => m.PurchPlanQty > 0)) { PurchaseIndentLine indentLine = new PurchaseIndentLine(); indentLine.CreatedBy = User.Identity.Name; indentLine.CreatedDate = DateTime.Now; indentLine.MaterialPlanLineId = item.MaterialPlanLineId; indentLine.ModifiedBy = User.Identity.Name; indentLine.ModifiedDate = DateTime.Now; indentLine.ProductId = item.ProductId; indentLine.Dimension1Id = item.Dimension1Id; indentLine.Dimension2Id = item.Dimension2Id; indentLine.Specification = item.Specification; indentLine.PurchaseIndentHeaderId = indentHeader.PurchaseIndentHeaderId; indentLine.Qty = item.PurchPlanQty; indentLine.Sr = PurchaseIndentSr++; indentLine.Remark = item.Remark; indentLine.ObjectState = Model.ObjectState.Added; context.PurchaseIndentLine.Add(indentLine); } } else { PurchaseIndentSr = new PurchaseIndentLineService(_unitOfWork).GetMaxSr(ExistingIndent.PurchaseIndentHeaderId); foreach (var item in context.MaterialPlanLine.Local.Where(m => m.PurchPlanQty > 0)) { PurchaseIndentLine indentLine = new PurchaseIndentLine(); indentLine.CreatedBy = User.Identity.Name; indentLine.CreatedDate = DateTime.Now; indentLine.MaterialPlanLineId = item.MaterialPlanLineId; indentLine.ModifiedBy = User.Identity.Name; indentLine.Specification = item.Specification; indentLine.ModifiedDate = DateTime.Now; indentLine.ProductId = item.ProductId; indentLine.Dimension1Id = item.Dimension1Id; indentLine.Dimension2Id = item.Dimension2Id; indentLine.Sr = PurchaseIndentSr++; indentLine.PurchaseIndentHeaderId = ExistingIndent.PurchaseIndentHeaderId; indentLine.Qty = item.PurchPlanQty; indentLine.Remark = item.Remark; indentLine.ObjectState = Model.ObjectState.Added; context.PurchaseIndentLine.Add(indentLine); } } } int i = 0; int MaterialPlanForSaleOrderSr = new MaterialPlanForSaleOrderService(_unitOfWork).GetMaxSr(svm.MaterialPlanLineViewModel.FirstOrDefault().MaterialPlanHeaderId); foreach (var item in svm.MaterialPlanLineViewModel) { if (item.Qty > 0) { MaterialPlanForSaleOrder order = new MaterialPlanForSaleOrder(); order.MaterialPlanHeaderId = item.MaterialPlanHeaderId; order.Qty = item.Qty; order.SaleOrderLineId = item.SaleOrderLineId; order.MaterialPlanForSaleOrderId = i; order.Sr = MaterialPlanForSaleOrderSr++; order.CreatedBy = User.Identity.Name; order.CreatedDate = DateTime.Now; order.ModifiedBy = User.Identity.Name; order.ModifiedDate = DateTime.Now; //if (item.Dimension1Id != null) //{ // var MaterialPlan = context.MaterialPlanLine.Local.Where(m => m.ProductId == item.ProductId && m.Dimension1Id == item.Dimension1Id).FirstOrDefault(); // if (order != null) // { // order.MaterialPlanLineId = MaterialPlan.MaterialPlanLineId; // } //} //else //{ // var MaterialPlan = context.MaterialPlanLine.Local.Where(m => m.ProductId == item.ProductId).FirstOrDefault(); // if (order != null) // { // order.MaterialPlanLineId = MaterialPlan.MaterialPlanLineId; // } //} order.ObjectState = Model.ObjectState.Added; context.MaterialPlanForSaleOrder.Add(order); i++; } } try { context.SaveChanges(); } catch (Exception ex) { string message = _exception.HandleException(ex); TempData["CSEXC"] += message; ViewBag.Mode = "Add"; ViewBag.Name = new DocumentTypeService(_unitOfWork).Find(vm.DocTypeId).DocumentTypeName; ViewBag.id = vm.DocTypeId; return(View("Create", vm)); } //LogActivity.LogActivityDetail(LogVm.Map(new ActiivtyLogViewModel //{ // DocTypeId = pt.DocTypeId, // DocId = pt.MaterialPlanHeaderId, // ActivityType = (int)ActivityTypeContants.Added, // DocNo = pt.DocNo, // DocDate = pt.DocDate, // DocStatus = pt.Status, //})); return(RedirectToAction("Index", "MaterialPlanHeader", new { id = pt.DocTypeId })); } } #endregion } ViewBag.Name = new DocumentTypeService(_unitOfWork).Find(vm.DocTypeId).DocumentTypeName; ViewBag.id = vm.DocTypeId; ViewBag.Mode = "Add"; return(View("Create", vm)); }
public ActionResult Reviewed(int Id, string IndexType, string UserRemark, string IsContinue) { bool BeforeSave = true; try { BeforeSave = PurchaseIndentDocEvents.beforeHeaderReviewEvent(this, new PurchaseEventArgs(Id), ref context); } catch (Exception ex) { string message = _exception.HandleException(ex); TempData["CSEXC"] += message; EventException = true; } if (!BeforeSave) { TempData["CSEXC"] += "Falied validation before submit."; } PurchaseIndentHeader pd = new PurchaseIndentHeaderService(_unitOfWork).Find(Id); if (ModelState.IsValid && BeforeSave && !EventException) { pd.ReviewCount = (pd.ReviewCount ?? 0) + 1; pd.ReviewBy += User.Identity.Name + ", "; pd.ObjectState = Model.ObjectState.Modified; context.PurchaseIndentHeader.Add(pd); try { PurchaseIndentDocEvents.onHeaderReviewEvent(this, new PurchaseEventArgs(Id), ref context); } catch (Exception ex) { string message = _exception.HandleException(ex); TempData["CSEXC"] += message; EventException = true; } try { if (EventException) { throw new Exception(); } context.SaveChanges(); //_unitOfWork.Save(); } catch (Exception ex) { string message = _exception.HandleException(ex); TempData["CSEXC"] += message; return(RedirectToAction("Index", new { id = pd.DocTypeId, IndexType = IndexType })); } try { PurchaseIndentDocEvents.afterHeaderReviewEvent(this, new PurchaseEventArgs(Id), ref context); } catch (Exception ex) { string message = _exception.HandleException(ex); TempData["CSEXC"] += message; } LogActivity.LogActivityDetail(LogVm.Map(new ActiivtyLogViewModel { DocTypeId = pd.DocTypeId, DocId = pd.PurchaseIndentHeaderId, ActivityType = (int)ActivityTypeContants.Reviewed, UserRemark = UserRemark, DocNo = pd.DocNo, DocDate = pd.DocDate, DocStatus = pd.Status, })); NotifyUser(Id, ActivityTypeContants.Reviewed); if (!string.IsNullOrEmpty(IsContinue) && IsContinue == "True") { PurchaseIndentHeader HEader = _PurchaseIndentHeaderService.Find(Id); int nextId = new NextPrevIdService(_unitOfWork).GetNextPrevId(Id, HEader.DocTypeId, User.Identity.Name, ForActionConstants.PendingToReview, "Web.PurchaseIndentHeaders", "PurchaseIndentHeaderId", PrevNextConstants.Next); if (nextId == 0) { var PendingtoSubmitCount = _PurchaseIndentHeaderService.GetPurchaseIndentPendingToReview(HEader.DocTypeId, User.Identity.Name).Count(); if (PendingtoSubmitCount > 0) { return(RedirectToAction("Index_PendingToReview", new { id = HEader.DocTypeId, IndexType = IndexType }).Success("Record Reviewed Successfully")); } else { return(RedirectToAction("Index", new { id = HEader.DocTypeId, IndexType = IndexType }).Success("Record Reviewed Successfully")); } } ViewBag.PendingToReview = PendingToReviewCount(Id); return(RedirectToAction("Detail", new { id = nextId, transactionType = "ReviewContinue", IndexType = IndexType })); } else { return(RedirectToAction("Index", new { id = pd.DocTypeId, IndexType = IndexType }).Success("Record Reviewed Successfully")); } } return(RedirectToAction("Index", new { id = pd.DocTypeId, IndexType = IndexType })); }
public ActionResult Submitted(int Id, string IndexType, string UserRemark, string IsContinue) { bool BeforeSave = true; try { BeforeSave = PurchaseIndentDocEvents.beforeHeaderSubmitEvent(this, new PurchaseEventArgs(Id), ref context); } catch (Exception ex) { string message = _exception.HandleException(ex); TempData["CSEXC"] += message; EventException = true; } if (!BeforeSave) { TempData["CSEXC"] += "Falied validation before submit."; } PurchaseIndentHeader pd = new PurchaseIndentHeaderService(_unitOfWork).Find(Id); if (ModelState.IsValid && BeforeSave && !EventException) { int ActivityType; if (User.Identity.Name == pd.ModifiedBy || UserRoles.Contains("Admin")) { pd.ReviewBy = null; pd.Status = (int)StatusConstants.Submitted; ActivityType = (int)ActivityTypeContants.Submitted; //_PurchaseIndentHeaderService.Update(pd); pd.ObjectState = Model.ObjectState.Modified; context.PurchaseIndentHeader.Add(pd); try { PurchaseIndentDocEvents.onHeaderSubmitEvent(this, new PurchaseEventArgs(Id), ref context); } catch (Exception ex) { string message = _exception.HandleException(ex); TempData["CSEXC"] += message; EventException = true; } try { if (EventException) { throw new Exception(); } context.SaveChanges(); //_unitOfWork.Save(); } catch (Exception ex) { string message = _exception.HandleException(ex); TempData["CSEXC"] += message; return(RedirectToAction("Index", new { id = pd.DocTypeId, IndexType = IndexType })); } try { PurchaseIndentDocEvents.afterHeaderSubmitEvent(this, new PurchaseEventArgs(Id), ref context); } catch (Exception ex) { string message = _exception.HandleException(ex); TempData["CSEXC"] += message; } LogActivity.LogActivityDetail(LogVm.Map(new ActiivtyLogViewModel { DocTypeId = pd.DocTypeId, DocId = pd.PurchaseIndentHeaderId, ActivityType = ActivityType, UserRemark = UserRemark, DocNo = pd.DocNo, DocDate = pd.DocDate, DocStatus = pd.Status, })); NotifyUser(Id, ActivityTypeContants.Submitted); if (!string.IsNullOrEmpty(IsContinue) && IsContinue == "True") { int nextId = new NextPrevIdService(_unitOfWork).GetNextPrevId(Id, pd.DocTypeId, User.Identity.Name, ForActionConstants.PendingToSubmit, "Web.PurchaseIndentHeaders", "PurchaseIndentHeaderId", PrevNextConstants.Next); if (nextId == 0) { var PendingtoSubmitCount = _PurchaseIndentHeaderService.GetPurchaseIndentPendingToSubmit(pd.DocTypeId, User.Identity.Name).Count(); if (PendingtoSubmitCount > 0) { return(RedirectToAction("Index_PendingToSubmit", new { id = pd.DocTypeId }).Success("Record Submitted Successfully")); } else { return(RedirectToAction("Index", new { id = pd.DocTypeId }).Success("Record Submitted Successfully")); } } return(RedirectToAction("Detail", new { id = nextId, TransactionType = "submitContinue" }).Success("Purchase Indent " + pd.DocNo + " submitted successfully.")); } else { return(RedirectToAction("Index", new { id = pd.DocTypeId, IndexType = IndexType }).Success("Record Submitted Successfully")); } } else { return(RedirectToAction("Index", new { id = pd.DocTypeId, IndexType = IndexType }).Warning("Record can be submitted by user " + pd.ModifiedBy + " only.")); } } return(RedirectToAction("Index", new { id = pd.DocTypeId, IndexType = IndexType })); }