private void MapLeaveType(LeaveType leaveobject, LeaveTypeFormViewModel model, OptionsViewModel moreInfo) { model.Branches = model.IBranches == null ? null : string.Join(",", model.IBranches.ToArray()); model.Jobs = model.IJobs == null ? null : string.Join(",", model.IJobs.ToArray()); model.Employments = model.IEmployments == null ? null : string.Join(",", model.IEmployments.ToArray()); model.PeopleGroups = model.IPeopleGroups == null ? null : string.Join(",", model.IPeopleGroups.ToArray()); model.Payrolls = model.IPayrolls == null ? null : string.Join(",", model.IPayrolls.ToArray()); model.PayrollGrades = model.IPayrollGrades == null ? null : string.Join(",", model.IPayrollGrades.ToArray()); model.CompanyStuctures = model.ICompanyStuctures == null ? null : string.Join(",", model.ICompanyStuctures.ToArray()); model.Positions = model.IPositions == null ? null : string.Join(",", model.IPositions.ToArray()); moreInfo.VisibleColumns.Add("Branches"); moreInfo.VisibleColumns.Add("Jobs"); moreInfo.VisibleColumns.Add("Employments"); moreInfo.VisibleColumns.Add("PeopleGroups"); moreInfo.VisibleColumns.Add("Payrolls"); moreInfo.VisibleColumns.Add("PayrollGrades"); moreInfo.VisibleColumns.Add("CompanyStuctures"); moreInfo.VisibleColumns.Add("Positions"); _hrUnitOfWork.LeaveRepository.AddLName(Language, leaveobject.Name, model.Name, model.LocalName); AutoMapper(new Models.AutoMapperParm { Destination = leaveobject, Source = model, ObjectName = "LeaveType", Options = moreInfo }); //MonthOrYear: 2-year, AccBalDays: 1-Fixed days leaveobject.MonthOrYear = (byte)(model.AccBalDays == 1 || !model.HasAccrualPlan ? 0 : model.MonthOrYear ?? 2); if (model.ChangAssignStat == false) { leaveobject.AutoChangStat = null; leaveobject.AssignStatus = null; } if (model.AccBalDays != 1) { leaveobject.NofDays = null; } if (model.AllowNegBal == false) { leaveobject.Percentage = null; } if (model.Balanace50 == false) { leaveobject.Age50 = null; leaveobject.NofDays50 = null; } //postOption Sec if (model.PostOpt == 1) { leaveobject.MaxNofDays = null; leaveobject.MaxPercent = null; leaveobject.DiffDaysOpt = null; } else if (model.PostOpt == 2) { leaveobject.MaxPercent = null; } else if (model.PostOpt == 3) { leaveobject.MaxNofDays = null; } else { leaveobject.MaxNofDays = null; leaveobject.MaxPercent = null; leaveobject.DiffDaysOpt = null;// leaveobject.MinLeaveDays = null; leaveobject.IncludContinu = null; } if (model.HasAccrualPlan == false) { leaveobject.AccBalDays = null; leaveobject.NofDays = null; leaveobject.Balanace50 = false; leaveobject.Age50 = null; leaveobject.NofDays50 = null; leaveobject.WorkServMethod = null; leaveobject.PostOpt = null; leaveobject.MaxNofDays = null; leaveobject.MaxPercent = null; } else { leaveobject.MaxDaysInPeriod = null; } leaveobject.Percentage = model.Percentage / 100; leaveobject.MaxPercent = model.MaxPercent / 100; }
public ActionResult Details(LeaveTypeFormViewModel model, OptionsViewModel moreInfo, LeaveRangeVM grid1, bool clear) { List <Error> errors = new List <Error>(); if (ModelState.IsValid) { if (ServerValidationEnabled) { errors = _hrUnitOfWork.SiteRepository.CheckForm(new CheckParm { CompanyId = CompanyId, ObjectName = "LeaveType", TableName = "LeaveTypes", ParentColumn = "CompanyId", 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))); } } PeriodName calendar = new PeriodName { Id = model.CalendarId }; if (model.HasAccrualPlan) { if (model.CalendarId == 0) { string error; calendar = AddPeriodName(model.Name, model.FrequencyId.Value, model.IsLocal, out error); if (!string.IsNullOrEmpty(error)) { ModelState.AddModelError("FrequencyId", error); return(Json(Models.Utils.ParseFormErrors(ModelState))); } } } LeaveType record; //insert if (model.Id == 0) { record = new LeaveType(); MapLeaveType(record, model, moreInfo); record.CreatedUser = UserName; record.CreatedTime = DateTime.Now; record.CompanyId = model.IsLocal ? CompanyId : (int?)null; if (record.StartDate > record.EndDate) { ModelState.AddModelError("EndDate", MsgUtils.Instance.Trls("EndDateGthanStartDate")); return(Json(Models.Utils.ParseFormErrors(ModelState))); } if (record.HasAccrualPlan) { record.CalendarId = calendar.Id; } _hrUnitOfWork.LeaveRepository.Add(record); } //update else { record = _hrUnitOfWork.Repository <LeaveType>().FirstOrDefault(a => a.Id == model.Id); MapLeaveType(record, model, moreInfo); record.ModifiedTime = DateTime.Now; record.ModifiedUser = UserName; record.CompanyId = model.IsLocal ? CompanyId : (int?)null; if (record.StartDate > record.EndDate) { ModelState.AddModelError("EndDate", MsgUtils.Instance.Trls("MustGreaterthanStart")); return(Json(Models.Utils.ParseFormErrors(ModelState))); } if (record.HasAccrualPlan) { record.CalendarId = calendar.Id; } _hrUnitOfWork.LeaveRepository.Attach(record); _hrUnitOfWork.LeaveRepository.Entry(record).State = EntityState.Modified; } // Save grid2 errors = SaveGrid2(grid1, ModelState.Where(a => a.Key.Contains("grid1")), record); if (errors.Count > 0) { return(Json(errors.First().errors.First().message)); } errors = SaveChanges(Language); if (clear) { model = new LeaveTypeFormViewModel(); } else { model.Id = record.Id; } if (errors.Count > 0) { return(Json(errors.First().errors.First().message)); } return(Json("OK," + ((new JavaScriptSerializer()).Serialize(model)))); } return(Json(Models.Utils.ParseFormErrors(ModelState))); }