protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { List <ProcessCategoryHelper> tobeEditedPC = new List <ProcessCategoryHelper>(); if (Page.RouteData.Values["Id"].ToSafeInt() != 0) { drpCat.Enabled = false; var repo = new ProcessCategoryRepository(); tobeEditedPC = repo.GetByCatIdWithDetails(Page.RouteData.Values["Id"].ToSafeInt()); var details = new List <ProcessCategoryHelper>(); foreach (ProcessCategoryHelper pc in tobeEditedPC) { if (pc.ProcessId != 999 && pc.ProcessId != 1000 && pc.ProcessId != 1001 && pc.ProcessId != 1002) { details.Add(new ProcessCategoryHelper() { Id = pc.Id, CategoryId = pc.CategoryId, CategoryName = pc.CategoryName, ProcessId = pc.ProcessId, ProcessName = pc.ProcessName, Order = pc.Order, ProcessTime = pc.ProcessTime }); } } Session["GridSource"] = details; } else { Session["GridSource"] = new List <ProcessCategoryHelper>(); } BindDrpCat(); if (Page.RouteData.Values["Id"].ToSafeInt() != 0) { drpCat.SelectedValue = tobeEditedPC.FirstOrDefault().CategoryId.ToString(); } BindDrpProcess(); } if (Session["GridSource"] == null) { Session["GridSource"] = new List <ProcessCategoryHelper>(); } gridInput.DataSource = Session["GridSource"]; gridInput.DataBind(); }
protected void btnSave_Click(object sender, EventArgs e) { try { var catId = drpCat.SelectedValue.ToSafeInt(); var existingCatPr = new ProcessCategoryRepository().Get(a => a.CategoryId == catId).FirstOrDefault(); if (Page.RouteData.Values["Id"].ToSafeInt() == 0 && existingCatPr != null) { throw new LocalException("duplicate cat", " فرآیندهای این گروه محصول قبلا ثبت شده اند"); } var gridSource = (List <ProcessCategoryHelper>)Session["GridSource"]; var dupOrder = gridSource.GroupBy(a => a.Order).Where(a => a.Count() > 1).Count(); if (dupOrder > 0) { throw new LocalException("duplicate order", "ترتیب تکراری در سطرهای ثبت شده"); } //foreach(var item in gridSource) //{ //} UnitOfWork uow = new UnitOfWork(); if (Page.RouteData.Values["Id"].ToSafeInt() == 0) { foreach (var item in ((List <ProcessCategoryHelper>)Session["GridSource"])) { var newPC = new Repository.Entity.Domain.ProcessCategory() { CategoryId = item.CategoryId, ProcessId = item.ProcessId, Order = item.Order, ProcessTime = item.ProcessTime }; uow.ProcessCategories.Create(newPC); } if (!((List <ProcessCategoryHelper>)Session["GridSource"]).Any(a => a.ProcessId == 999)) //اتمام موقت { var newPC = new Repository.Entity.Domain.ProcessCategory() { CategoryId = drpCat.SelectedValue.ToSafeInt(), ProcessId = 999, Order = 999, ProcessTime = 0 }; uow.ProcessCategories.Create(newPC); } if (!((List <ProcessCategoryHelper>)Session["GridSource"]).Any(a => a.ProcessId == 1000)) //rework { var newPC = new Repository.Entity.Domain.ProcessCategory() { CategoryId = drpCat.SelectedValue.ToSafeInt(), ProcessId = 1000, Order = 1000, ProcessTime = 0 }; uow.ProcessCategories.Create(newPC); } if (!((List <ProcessCategoryHelper>)Session["GridSource"]).Any(a => a.ProcessId == 1001)) //esghat { var newPC = new Repository.Entity.Domain.ProcessCategory() { CategoryId = drpCat.SelectedValue.ToSafeInt(), ProcessId = 1001, Order = 1001, ProcessTime = 0 }; uow.ProcessCategories.Create(newPC); } if (!((List <ProcessCategoryHelper>)Session["GridSource"]).Any(a => a.ProcessId == 1002)) //nahar { var newPC = new Repository.Entity.Domain.ProcessCategory() { CategoryId = drpCat.SelectedValue.ToSafeInt(), ProcessId = 1002, Order = 1002, ProcessTime = 60 }; uow.ProcessCategories.Create(newPC); } } else { var repo = uow.ProcessCategories; var exsitedPCs = repo.Get(a => a.CategoryId == catId && a.ProcessId != 999 && a.ProcessId != 1000 && a.ProcessId != 1001 && a.ProcessId != 1002).ToList(); foreach (Repository.Entity.Domain.ProcessCategory item in exsitedPCs) { repo.Delete(item.Id); } var res = uow.SaveChanges(); if (!res.IsSuccess) { ((Main)Page.Master).SetGeneralMessage(res.ResultMessage, MessageType.Error); return; } foreach (var item in ((List <ProcessCategoryHelper>)Session["GridSource"])) { var newPC = new Repository.Entity.Domain.ProcessCategory() { CategoryId = item.CategoryId, ProcessId = item.ProcessId, Order = item.Order, ProcessTime = item.ProcessTime }; uow.ProcessCategories.Create(newPC); } } var result = uow.SaveChanges(); if (result.IsSuccess) { ((Main)Page.Master).SetGeneralMessage("اطلاعات با موفقیت ذخیره شد", MessageType.Success); } else { ((Main)Page.Master).SetGeneralMessage(result.ResultMessage, MessageType.Error); } ClearControls(); } catch (LocalException ex) { ((Main)Page.Master).SetGeneralMessage("خطا در دخیره سازی -" + ex.ResultMessage, MessageType.Error); } }