Ejemplo n.º 1
0
        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 = "اسم ها نباید یکسان باشد" }));
            }
        }