public IActionResult AddEditProjectPlan(int?id, ProjectPlanViewModel model) { // if (false) // { Boolean flag = false; Boolean flagForEqual = true; string WorkerList = string.Empty; string OstadKarList = string.Empty; string SarparastList = string.Empty; int Identity; string WorkerCodes = string.Empty; string OstadKarCodes = string.Empty; string SarparastCodes = string.Empty; string[] workerlist = new string[0]; string[] ostadkarlist = new string[0]; string[] sarparastlist = new string[0]; // model.GetPersonList = _repository.GetAllPerson().Select(s => new Person { Id = s.Id, FullName = s.FullName }).ToList(); var query = _repository.GetAllTransitInfoWithPerson(); #region CheckForEqual //--------------------------------------- if (model.workerList != null && model.ostadkarList != null) { foreach (string ww in model.workerList) { foreach (string oo in model.ostadkarList) { if (oo == ww) { flagForEqual = false; } } } } //----------------------------------- if (model.workerList != null && model.sarparastList != null) { foreach (string ww in model.workerList) { foreach (string ss in model.sarparastList) { if (ss == ww) { flagForEqual = false; } } } } //-------------------------------------- if (model.ostadkarList != null && model.sarparastList != null) { foreach (string oo in model.ostadkarList) { foreach (string ss in model.sarparastList) { if (oo == ss) { flagForEqual = false; } } } } #endregion if (flagForEqual) { if (model.workerList != null) { foreach (string pp in model.workerList) { WorkerCodes += pp + ","; foreach (var item in query) { if (pp == Convert.ToString(item.Id)) { WorkerList += item.FullName + ","; } } } WorkerCodes = WorkerCodes.Remove(WorkerCodes.Length - 1); WorkerList = WorkerList.Remove(WorkerList.Length - 1); } else { WorkerCodes = null; WorkerList = null; } if (model.ostadkarList != null) { foreach (string pp in model.ostadkarList) { OstadKarCodes += pp + ","; foreach (var item in query) { if (pp == Convert.ToString(item.Id)) { OstadKarList += item.FullName + ","; } } } OstadKarCodes = OstadKarCodes.Remove(OstadKarCodes.Length - 1); OstadKarList = OstadKarList.Remove(OstadKarList.Length - 1); } else { OstadKarCodes = null; OstadKarList = null; } if (model.sarparastList != null) { foreach (string pp in model.sarparastList) { SarparastCodes += pp + ","; foreach (var item in query) { if (pp == Convert.ToString(item.Id)) { SarparastList += item.FullName + ","; } } } SarparastCodes = SarparastCodes.Remove(SarparastCodes.Length - 1); SarparastList = SarparastList.Remove(SarparastList.Length - 1); } else { SarparastCodes = null; SarparastList = null; } bool isNew = !id.HasValue; var newProjectPlan = _mapper.Map <ProjectPlanViewModel, ProjectPlan>(model); if (isNew) { TraceWorker traceworker; ProjectPlan oldProjectPlan = new ProjectPlan(); oldProjectPlan.ProjectId = newProjectPlan.ProjectId; oldProjectPlan.DateReg = newProjectPlan.DateReg; oldProjectPlan.Description = newProjectPlan.Description; oldProjectPlan.PersonId = newProjectPlan.PersonId; oldProjectPlan.Activity = newProjectPlan.Activity; oldProjectPlan.WorkTypeId = newProjectPlan.WorkTypeId; oldProjectPlan.WorkerList = WorkerList; oldProjectPlan.WorkerListCodes = WorkerCodes; oldProjectPlan.OstadKarList = OstadKarList; oldProjectPlan.OstadKarCodes = OstadKarCodes; oldProjectPlan.SarparastList = SarparastList; oldProjectPlan.SarparastCodes = SarparastCodes; Identity = _repository.Add_ProjectPlan_ReturnId(oldProjectPlan); if (model.workerList != null) { foreach (string pp in model.workerList) { //کد 1 در ورودی دوم معنی ورود به پروژه است //کد 1 در ورودی ششم به معنی پست کارگر است _repository.Save_TraceWorker(Identity, 1, "0", "0", Convert.ToInt32(pp), 1); _repository.Update_StatusTransit(Convert.ToInt32(pp), 2); _repository.SaveAll(); } } if (model.ostadkarList != null) { foreach (string pp in model.ostadkarList) { //کد 1 در ورودی دوم معنی ورود به پروژه است //کد 2 در ورودی ششم به معنی پست استاد کار است _repository.Save_TraceWorker(Identity, 1, "0", "0", Convert.ToInt32(pp), 2); _repository.Update_StatusTransit(Convert.ToInt32(pp), 2); _repository.SaveAll(); } } if (model.sarparastList != null) { foreach (string pp in model.sarparastList) { //کد 1 در ورودی دوم معنی ورود به پروژه است //کد 4 در ورودی ششم به معنی پست سرپرست است _repository.Save_TraceWorker(Identity, 1, "0", "0", Convert.ToInt32(pp), 4); _repository.Update_StatusTransit(Convert.ToInt32(pp), 2); _repository.SaveAll(); } } } else { ProjectPlan projectPlan = _repository.GetProjectPlanById(model.Id); TraceWorker traceworker; //-------------------------------------------------------------------- #region TraceForWorker if (projectPlan.WorkerListCodes != null) { workerlist = projectPlan.WorkerListCodes.Split(','); } else { workerlist = null; } traceworker = new TraceWorker(); if (model.workerList != null) { if (workerlist != null) { //-------------------حلقه زیر برای ورود به پروژه است--------------------------- foreach (string pp in model.workerList) { flag = true; for (int i = 0; i < workerlist.Length; i++) { if (workerlist[i] == pp) { flag = false; } } if (flag) { //کد 1 در ورودی دوم معنی ورود به پروژه است //کد 1 در ورودی ششم به معنی پست کارگر است _repository.Save_TraceWorker(newProjectPlan.Id, 1, "0", "0", Convert.ToInt32(pp), 1); _repository.Update_StatusTransit(Convert.ToInt32(pp), 2); _repository.SaveAll(); } } //-------------------حلقه زیر برای خروج از پروژه است--------------------------- for (int i = 0; i < workerlist.Length; i++) { flag = true; foreach (string pp in model.workerList) { if (workerlist[i] == pp) { flag = false; } } if (flag) { //کد 1 در ورودی دوم معنی خروج از پروژه است //کد 1 در ورودی ششم به معنی پست کارگر است _repository.Save_TraceWorker(newProjectPlan.Id, 2, "0", "0", Convert.ToInt32(workerlist[i]), 1); _repository.Update_StatusTransit(Convert.ToInt32(workerlist[i]), 1); _repository.SaveAll(); } } } else { foreach (string pp in model.workerList) { //کد 1 در ورودی دوم معنی ورود به پروژه است //کد 1 در ورودی ششم به معنی پست کارگر است _repository.Save_TraceWorker(newProjectPlan.Id, 1, "0", "0", Convert.ToInt32(pp), 1); _repository.Update_StatusTransit(Convert.ToInt32(pp), 2); _repository.SaveAll(); } } } else { if (workerlist != null) { for (int i = 0; i < workerlist.Length; i++) { //کد 12 در ورودی دوم معنی خروج از پروژه است //کد 1 در ورودی ششم به معنی پست کارگر است _repository.Save_TraceWorker(newProjectPlan.Id, 2, "0", "0", Convert.ToInt32(workerlist[i]), 1); _repository.Update_StatusTransit(Convert.ToInt32(workerlist[i]), 1); _repository.SaveAll(); } } } #endregion #region TraceForOstadKar if (projectPlan.OstadKarCodes != null) { ostadkarlist = projectPlan.OstadKarCodes.Split(','); } else { ostadkarlist = null; } traceworker = new TraceWorker(); if (model.ostadkarList != null) { if (ostadkarlist != null) { //-------------------حلقه زیر برای ورود به پروژه است--------------------------- foreach (string pp in model.ostadkarList) { flag = true; for (int i = 0; i < ostadkarlist.Length; i++) { if (ostadkarlist[i] == pp) { flag = false; } } if (flag) { //کد 1 در ورودی دوم معنی ورود به پروژه است //کد 1 در ورودی ششم به معنی پست استادکار است _repository.Save_TraceWorker(newProjectPlan.Id, 1, "0", "0", Convert.ToInt32(pp), 2); _repository.Update_StatusTransit(Convert.ToInt32(pp), 2); _repository.SaveAll(); } } //-------------------حلقه زیر برای خروج از پروژه است--------------------------- for (int i = 0; i < ostadkarlist.Length; i++) { flag = true; foreach (string pp in model.ostadkarList) { if (ostadkarlist[i] == pp) { flag = false; } } if (flag) { //کد 2 در ورودی دوم معنی خروج از پروژه است //کد 2 در ورودی ششم به معنی پست استادکار است _repository.Save_TraceWorker(newProjectPlan.Id, 2, "0", "0", Convert.ToInt32(ostadkarlist[i]), 2); _repository.Update_StatusTransit(Convert.ToInt32(ostadkarlist[i]), 1); _repository.SaveAll(); } } } else { foreach (string pp in model.ostadkarList) { //کد 1 در ورودی دوم معنی ورود به پروژه است //کد 2 در ورودی ششم به معنی پست استادکار است _repository.Save_TraceWorker(newProjectPlan.Id, 1, "0", "0", Convert.ToInt32(pp), 2); _repository.Update_StatusTransit(Convert.ToInt32(pp), 2); _repository.SaveAll(); } } } else { if (ostadkarlist != null) { for (int i = 0; i < ostadkarlist.Length; i++) { //کد 2 در ورودی دوم معنی خروج از پروژه است //کد 2 در ورودی ششم به معنی پست استادکار است _repository.Save_TraceWorker(newProjectPlan.Id, 2, "0", "0", Convert.ToInt32(ostadkarlist[i]), 2); _repository.Update_StatusTransit(Convert.ToInt32(ostadkarlist[i]), 1); _repository.SaveAll(); } } } #endregion #region TraceForSarparast if (projectPlan.SarparastCodes != null) { sarparastlist = projectPlan.SarparastCodes.Split(','); } else { sarparastlist = null; } traceworker = new TraceWorker(); if (model.sarparastList != null) { if (sarparastlist != null) { //-------------------حلقه زیر برای ورود به پروژه است--------------------------- foreach (string pp in model.sarparastList) { flag = true; for (int i = 0; i < sarparastlist.Length; i++) { if (sarparastlist[i] == pp) { flag = false; } } if (flag) { //کد 1 در ورودی دوم معنی ورود به پروژه است //کد 4 در ورودی ششم به معنی پست سرپرست است _repository.Save_TraceWorker(newProjectPlan.Id, 1, "0", "0", Convert.ToInt32(pp), 4); _repository.Update_StatusTransit(Convert.ToInt32(pp), 2); _repository.SaveAll(); } } //-------------------حلقه زیر برای خروج از پروژه است--------------------------- for (int i = 0; i < sarparastlist.Length; i++) { flag = true; foreach (string pp in model.sarparastList) { if (sarparastlist[i] == pp) { flag = false; } } if (flag) { //کد 2 در ورودی دوم معنی خروج از پروژه است //کد 4 در ورودی ششم به معنی پست سرپرست است _repository.Save_TraceWorker(newProjectPlan.Id, 2, "0", "0", Convert.ToInt32(sarparastlist[i]), 4); _repository.Update_StatusTransit(Convert.ToInt32(sarparastlist[i]), 1); _repository.SaveAll(); } } } else { foreach (string pp in model.sarparastList) { //کد 1 در ورودی دوم معنی ورود به پروژه است //کد 4 در ورودی ششم به معنی پست سرپرست است _repository.Save_TraceWorker(newProjectPlan.Id, 1, "0", "0", Convert.ToInt32(pp), 4); _repository.Update_StatusTransit(Convert.ToInt32(pp), 2); _repository.SaveAll(); } } } else { if (sarparastlist != null) { for (int i = 0; i < sarparastlist.Length; i++) { //کد 2 در ورودی دوم معنی خروج از پروژه است //کد 4 در ورودی ششم به معنی پست سرپرست است _repository.Save_TraceWorker(newProjectPlan.Id, 2, "0", "0", Convert.ToInt32(sarparastlist[i]), 4); _repository.Update_StatusTransit(Convert.ToInt32(sarparastlist[i]), 1); _repository.SaveAll(); } } } #endregion ProjectPlan oldProjectPlan = _repository.GetProjectPlanById(id); oldProjectPlan.ProjectId = newProjectPlan.ProjectId; oldProjectPlan.DateReg = newProjectPlan.DateReg; oldProjectPlan.Description = newProjectPlan.Description; oldProjectPlan.PersonId = newProjectPlan.PersonId; oldProjectPlan.Activity = newProjectPlan.Activity; oldProjectPlan.WorkTypeId = newProjectPlan.WorkTypeId; oldProjectPlan.WorkerList = WorkerList; oldProjectPlan.WorkerListCodes = WorkerCodes; oldProjectPlan.OstadKarList = OstadKarList; oldProjectPlan.OstadKarCodes = OstadKarCodes; oldProjectPlan.OstadKarList = OstadKarList; oldProjectPlan.OstadKarCodes = OstadKarCodes; oldProjectPlan.SarparastList = SarparastList; oldProjectPlan.SarparastCodes = SarparastCodes; _repository.SaveAll(); } // } return(RedirectToAction("AllProjectPlan")); } else { return(Json(new { Result = "اسم ها نباید یکسان باشد" })); } }