コード例 #1
0
        private List <Error> EmpTasksSaveGrid(EmpTaskVM grid1, IEnumerable <KeyValuePair <string, ModelState> > state, EmpChkList checkList)
        {
            List <Error> errors = new List <Error>();
            DataSource <EmpTaskViewModel> Err = new DataSource <EmpTaskViewModel>();

            Err.Total = 0;
            // Exclude delete models from sever side validations
            if (ServerValidationEnabled)
            {
                var modified = Models.Utils.GetModifiedRows(state.Where(a => !a.Key.Contains("deleted")));
                if (modified.Count > 0)
                {
                    errors = _hrUnitOfWork.CompanyRepository.Check(new CheckParm
                    {
                        CompanyId  = CompanyId,
                        ObjectName = "EmplistTasks",
                        Columns    = Models.Utils.GetModifiedRows(state.Where(a => !a.Key.Contains("deleted"))),
                        Culture    = Language
                    });

                    if (errors.Count() > 0)
                    {
                        return(errors);
                    }
                }
            }

            // Deleted
            if (grid1.deleted != null)
            {
                foreach (EmpTaskViewModel model in grid1.deleted)
                {
                    var chlistTask = new EmpTask
                    {
                        Id = model.Id
                    };

                    _hrUnitOfWork.CheckListRepository.Remove(chlistTask);
                }
            }



            // updated records
            if (grid1.updated != null)
            {
                short count = 0;
                foreach (EmpTaskViewModel model in grid1.updated)
                {
                    if (model.AssignedTime != null)
                    {
                        Err = _hrUnitOfWork.CheckListRepository.AddSubperiods(CompanyId, model.AssignedTime, model.Id, count, Language);
                    }

                    if (Err.Errors == null || Err.Errors.Count == 0)
                    {
                        model.SubPeriodId = Err.Total == 0 ? (int?)null : Err.Total;
                        var chlistTask = _hrUnitOfWork.Repository <EmpTask>().Where(a => a.Id == model.Id).FirstOrDefault();

                        AutoMapper(new Models.AutoMapperParm
                        {
                            Destination = chlistTask,
                            Source      = model
                        });

                        chlistTask.ModifiedTime = DateTime.Now;
                        chlistTask.ExpectDur    = model.ExpectDur;
                        chlistTask.ModifiedUser = UserName;
                        _hrUnitOfWork.CheckListRepository.Attach(chlistTask);
                        _hrUnitOfWork.CheckListRepository.Entry(chlistTask).State = EntityState.Modified;
                    }
                    else
                    {
                        errors.Add(Err.Errors.FirstOrDefault());
                    }

                    count++;
                }
            }

            // inserted records
            if (grid1.inserted != null)
            {
                short count = 0;
                foreach (EmpTaskViewModel model in grid1.inserted)
                {
                    if (model.AssignedTime != null)
                    {
                        if (model.AssignedTime != null)
                        {
                            Err = _hrUnitOfWork.CheckListRepository.AddSubperiods(CompanyId, model.AssignedTime, model.Id, count, Language);
                        }
                    }

                    if (Err.Errors == null || Err.Errors.Count == 0)
                    {
                        model.SubPeriodId = Err.Total == 0 ? (int?)null : Err.Total;
                        var chlistTask = new EmpTask();
                        AutoMapper(new Models.AutoMapperParm
                        {
                            Destination = chlistTask,
                            Source      = model,
                            Transtype   = TransType.Insert
                        });
                        if (model.EmpId == 0)
                        {
                            chlistTask.EmpId = null;
                        }

                        if (model.ManagerId == 0)
                        {
                            chlistTask.ManagerId = null;
                        }
                        chlistTask.EmpChklist  = checkList;
                        chlistTask.CreatedTime = DateTime.Now;
                        chlistTask.CreatedUser = UserName;
                        chlistTask.ExpectDur   = model.ExpectDur;
                        _hrUnitOfWork.CheckListRepository.Add(chlistTask);
                    }
                    else
                    {
                        errors.Add(Err.Errors.FirstOrDefault());
                    }

                    count++;
                }
            }
            return(errors);
        }
コード例 #2
0
        public ActionResult EmplistDetails(EmpChkListViewModel model, OptionsViewModel moreInfo, EmpTaskVM grid1)
        {
            List <Error> errors = new List <Error>();

            if (model.ManagerId == model.EmpId)
            {
                ModelState.AddModelError("EmpId", MsgUtils.Instance.Trls("ManagerCan'tbeequalEmp"));
                return(Json(Models.Utils.ParseFormErrors(ModelState)));
            }

            if (ModelState.IsValid)
            {
                if (ServerValidationEnabled)
                {
                    errors = _hrUnitOfWork.SiteRepository.CheckForm(new CheckParm
                    {
                        CompanyId    = CompanyId,
                        ObjectName   = "EmpListForm",
                        TableName    = "EmpChkLists",
                        ParentColumn = "ListId",
                        Columns      = Models.Utils.GetColumnViews(ModelState.Where(a => !a.Key.Contains('.'))),
                        Culture      = Language
                    });

                    if (errors.Count() > 0)
                    {
                        foreach (var e in errors)
                        {
                            foreach (var errorMsg in e.errors)
                            {
                                ModelState.AddModelError(errorMsg.field, errorMsg.message);
                            }
                        }

                        return(Json(Models.Utils.ParseFormErrors(ModelState)));
                    }
                }

                EmpChkList record;
                //insert
                if (model.Id == 0)
                {
                    record = new EmpChkList();
                    AutoMapper(new Models.AutoMapperParm
                    {
                        Destination = record,
                        Source      = model,
                        ObjectName  = "EmpListForm",
                        Options     = moreInfo,
                        Transtype   = TransType.Insert
                    });
                    record.CreatedUser = UserName;
                    record.CreatedTime = DateTime.Now;
                    record.CompanyId   = CompanyId;
                    if (record.ListStartDate > record.ListEndDate)
                    {
                        ModelState.AddModelError("ListStartDate", MsgUtils.Instance.Trls("End must greater than start"));
                        return(Json(Models.Utils.ParseFormErrors(ModelState)));
                    }
                    _hrUnitOfWork.CheckListRepository.Add(record);
                }
                //update
                else
                {
                    record = _hrUnitOfWork.Repository <EmpChkList>().FirstOrDefault(a => a.Id == model.Id);
                    AutoMapper(new Models.AutoMapperParm
                    {
                        Destination = record,
                        Source      = model,
                        ObjectName  = "EmpListForm",
                        Options     = moreInfo,
                        Transtype   = TransType.Update
                    });
                    record.ModifiedTime = DateTime.Now;
                    record.ModifiedUser = UserName;
                    record.CompanyId    = CompanyId;
                    if (record.ListStartDate > record.ListEndDate)
                    {
                        ModelState.AddModelError("ListEndDate", MsgUtils.Instance.Trls("End must greater than start"));
                        return(Json(Models.Utils.ParseFormErrors(ModelState)));
                    }

                    if (model.Status == 2)
                    {
                        var EmpTasks = _hrUnitOfWork.Repository <EmpTask>().Where(a => a.EmpListId == model.Id).ToList();
                        if (EmpTasks.Count > 0)
                        {
                            foreach (var item in EmpTasks)
                            {
                                if (item.Status != 2)
                                {
                                    item.Status = 3;
                                    _hrUnitOfWork.CheckListRepository.Attach(item);
                                    _hrUnitOfWork.CheckListRepository.Entry(item).State = EntityState.Modified;
                                }
                            }
                        }
                    }
                    _hrUnitOfWork.CheckListRepository.Attach(record);
                    _hrUnitOfWork.CheckListRepository.Entry(record).State = EntityState.Modified;
                }

                // Save grid1
                errors = EmpTasksSaveGrid(grid1, ModelState.Where(a => a.Key.Contains("grid")), record);
                if (errors.Count > 0)
                {
                    return(Json(errors.First().errors.First().message));
                }

                errors = SaveChanges(Language);

                var message = "OK";
                if (errors.Count > 0)
                {
                    message = errors.First().errors.First().message;
                }

                return(Json(message));
            }

            return(Json(Models.Utils.ParseFormErrors(ModelState)));
        }