public JsonResult RunProcess(WfViewModel wfvm) { Guard.Against.Null(wfvm, nameof(WfViewModel)); var formData = _dbContext.Get(wfvm.BillTable, wfvm.BillUid, true); WfAppRunner runner = new WfAppRunner(); runner.BillTableName = wfvm.BillTable; runner.ProcessUid = wfvm.ProcessUid; runner.BillData = formData; runner.BillUid = wfvm.BillUid; runner.UserId = _applicationContext.EmpUid; runner.UserName = _applicationContext.EmpName; runner.AppName = wfvm.AppName; runner.BusinessUid = wfvm.BusinessUid; runner.CurrActivityInsUid = wfvm.CurrentActivityInsUid; runner.CurrProcessInsUid = wfvm.CurrentProcessInsUid; runner.CurrWfTaskUid = wfvm.CurrentWfTaskUid; runner.CurrNodeId = wfvm.CurrentNodeId; runner.ApproveState = wfvm.ApproveState;// WfApproveState.Agree runner.Comment = wfvm.ApproveComment; if (wfvm.AvtivityId.IsPresent()) { ActivityEntity ae = new ActivityEntity(); ae.ActivityID = wfvm.AvtivityId; ae.Performers = wfvm.NextPerformers; runner.NextActivity = ae; } WfExecutedResult result = _workflowService.RunProcess(runner); return(Json(result)); }
public JsonResult PostSendBackBill(WfViewModel wfvm) { string sql = "select * from WfProcessInstance where Fid=@ProcessInsUid"; var wpins = _dbContext.QueryFirstOrDefault <WfProcessInstance>(sql, new DynamicParameters(new { ProcessInsUid = wfvm.CurrentProcessInsUid })); WfExecutedResult result = null; if (wpins == null) { result = new WfExecutedResult() { Status = WfExecutedStatus.Exception, Message = "不存在流程实例,不需要驳回" }; } else { WfAppRunner runner = new WfAppRunner(); runner.BillTableName = wfvm.BillTable; runner.ProcessUid = wfvm.ProcessUid; runner.BillUid = wfvm.BillUid; runner.UserId = _applicationContext.EmpUid; runner.UserName = _applicationContext.EmpName; runner.AppName = wfvm.AppName; runner.BusinessUid = wfvm.BusinessUid; runner.CurrActivityInsUid = wfvm.CurrentActivityInsUid; runner.CurrProcessInsUid = wfvm.CurrentProcessInsUid; runner.CurrWfTaskUid = wfvm.CurrentWfTaskUid; runner.CurrNodeId = wfvm.CurrentNodeId; runner.ApproveState = wfvm.ApproveState;// WfApproveState.Agree runner.Comment = wfvm.ApproveComment; result = _workflowService.SendBackProcess(runner); } return(Json(result)); }
public JsonResult SubmitProcess(WfViewModel wfvm) { Guard.Against.Null(wfvm, nameof(WfViewModel)); var formData = _dbContext.Get(wfvm.BillTable, wfvm.BillUid, true); //改变单据状态 string updateSql = $"update {wfvm.BillTable} set SubmitTime='{DateTimeUtils.CurrentDateTimeStr}', BillStatus='{BillStatus.PROCESSING}' where id={formData.Id}"; _dbContext.Execute(updateSql); string appEmpUid = formData.AppEmpUid; string appEmpName = formData.AppEmpUidMC; WfAppRunner runner = new WfAppRunner(); runner.BillTableName = wfvm.BillTable; runner.ProcessUid = wfvm.ProcessUid; runner.BillData = formData; runner.BillUid = wfvm.BillUid; runner.UserId = appEmpUid; runner.UserName = appEmpName; runner.AppName = wfvm.AppName; runner.BusinessUid = wfvm.BusinessUid; ActivityEntity ae = new ActivityEntity(); ae.ActivityID = wfvm.AvtivityId; ae.Performers = wfvm.NextPerformers; runner.NextActivity = ae; WfExecutedResult result = _workflowService.StartProcess(runner); return(Json(result)); }
public JsonResult SubmitProcess(WfViewModel wfvm) { Guard.Against.Null(wfvm, nameof(WfViewModel)); var formData = _dbContext.Get(wfvm.BillTable, wfvm.BillUid, true); string appEmpUid = formData.AppEmpUid; string appEmpName = formData.AppEmpUidMC; WfAppRunner runner = new WfAppRunner(); runner.BillTableName = wfvm.BillTable; runner.ProcessUid = wfvm.ProcessUid; runner.BillData = formData; runner.BillUid = wfvm.BillUid; runner.UserId = appEmpUid; runner.UserName = appEmpName; runner.AppName = wfvm.AppName; runner.BusinessUid = wfvm.BusinessUid; ActivityEntity ae = new ActivityEntity(); ae.ActivityID = wfvm.AvtivityId; ae.Performers = wfvm.NextPerformers; runner.NextActivity = ae; WfExecutedResult result = _workflowService.StartProcess(runner); return(Json(result)); }
private string AddWFTrans(ComplainRequest request, int?ManagerId, bool?backToEmp) { WfViewModel wf = new WfViewModel() { Source = "Complaint" + request.Against, SourceId = CompanyId, DocumentId = request.Id, RequesterEmpId = request.EmpId, ApprovalStatus = request.ApprovalStatus, CreatedUser = UserName, }; if (ManagerId != null) { wf.ManagerId = ManagerId; } else if (backToEmp != null) { wf.BackToEmployee = backToEmp.Value; } var wfTrans = _hrUnitOfWork.LeaveRepository.AddWorkFlow(wf, Language); request.WFlowId = wf.WFlowId; if (wfTrans == null && wf.WorkFlowStatus != "Success") { return(wf.WorkFlowStatus); } else if (wfTrans != null) { _hrUnitOfWork.LeaveRepository.Add(wfTrans); } return(""); }
private string AddWFTrans(Termination request, int?ManagerId, bool?backToEmp, TerminationFormVM model) { var UserName = HttpContext.Current.User.Identity.Name; WfViewModel wf = new WfViewModel() { Source = "Termination", SourceId = model.CompanyId, DocumentId = request.Id, RequesterEmpId = request.EmpId, ApprovalStatus = request.ApprovalStatus, CreatedUser = UserName }; if (ManagerId != null) { wf.ManagerId = ManagerId; } else if (backToEmp != null) { wf.BackToEmployee = backToEmp.Value; } var wfTrans = hrUnitOfWork.LeaveRepository.AddWorkFlow(wf, model.Culture); request.WFlowId = wf.WFlowId; if (wfTrans == null && wf.WorkFlowStatus != "Success") { return(wf.WorkFlowStatus); } else if (wfTrans == null && wf.WorkFlowStatus == "Success") { request.ApprovalStatus = 6; } else if (wfTrans != null) { hrUnitOfWork.LeaveRepository.Add(wfTrans); } return(""); }
private string AddWFTrans(Termination request, int?ManagerId, bool?backToEmp) { WfViewModel wf = new WfViewModel() { Source = "Termination", SourceId = User.Identity.GetDefaultCompany(), DocumentId = request.Id, RequesterEmpId = request.EmpId, ApprovalStatus = request.ApprovalStatus, CreatedUser = User.Identity.Name }; if (ManagerId != null) { wf.ManagerId = ManagerId; } else if (backToEmp != null) { wf.BackToEmployee = backToEmp.Value; } var wfTrans = _hrUnitOfWork.LeaveRepository.AddWorkFlow(wf, User.Identity.GetLanguage()); request.WFlowId = wf.WFlowId; if (wfTrans == null && wf.WorkFlowStatus != "Success") { return(wf.WorkFlowStatus); } else if (wfTrans == null && wf.WorkFlowStatus == "Success") { request.ApprovalStatus = 6; } else if (wfTrans != null) { _hrUnitOfWork.LeaveRepository.Add(wfTrans); } return(""); }
public IHttpActionResult SaveLeave(LeaveReqViewModel model) { List <Model.ViewModel.Error> errors = new List <Model.ViewModel.Error>(); if (!ModelState.IsValid) { return(Json(Utils.ParseFormError(ModelState))); } model.EmpId = User.Identity.GetEmpId(); LeaveRequest request = _hrUnitOfWork.LeaveRepository.Get(model.Id); var type = _hrUnitOfWork.LeaveRepository.GetLeaveType(model.TypeId); if (model.ReqReason == null && type.MustAddCause == true) { ModelState.AddModelError("ReqReason", MsgUtils.Instance.Trls("Required")); return(Ok(ModelState)); } string message = "Ok"; ///Save if (model.Id == 0) { /// New request = new LeaveRequest(); AutoMapperParm parms = new AutoMapperParm() { Source = model, Destination = request }; AutoMapper(parms); request.PeriodId = _hrUnitOfWork.LeaveRepository.GetLeaveRequestPeriod(type.CalendarId, request.StartDate, User.Identity.GetLanguage(), out message); request.ApprovalStatus = (byte)(model.submit == true ? 2 : 1); //1- New, 2- Submit request.CreatedUser = User.Identity.Name; request.CreatedTime = DateTime.Now; _hrUnitOfWork.LeaveRepository.Add(request); } else { /// Edit AutoMapperParm parms = new AutoMapperParm() { Source = model, Destination = request }; //, ObjectName = "LeaveRequest" AutoMapper(parms); if (model.submit) { _hrUnitOfWork.TrainingRepository.AddTrail(new AddTrailViewModel() { ColumnName = "ApprovalStatus", CompanyId = User.Identity.GetDefaultCompany(), ObjectName = "LeaveRequest", SourceId = request.Id.ToString(), UserName = User.Identity.Name, ValueAfter = MsgUtils.Instance.Trls("Submit"), ValueBefore = MsgUtils.Instance.Trls("Darft") }); } request.ApprovalStatus = (byte)(model.submit == true ? 2 : model.ApprovalStatus); //1- New, 2- Submit request.ModifiedUser = User.Identity.Name; request.ModifiedTime = DateTime.Now; _hrUnitOfWork.LeaveRepository.Attach(request); _hrUnitOfWork.LeaveRepository.Entry(request).State = EntityState.Modified; } var Errors = SaveChanges(User.Identity.GetLanguage()); if (Errors.Count > 0) { message = Errors.First().errors.First().message; return(Ok(message)); } if (model.submit) { WfViewModel wf = new WfViewModel() { Source = "Leave", SourceId = request.TypeId, DocumentId = request.Id, RequesterEmpId = request.EmpId, ApprovalStatus = 2, CreatedUser = User.Identity.Name, }; var wfTrans = _hrUnitOfWork.LeaveRepository.AddWorkFlow(wf, User.Identity.GetLanguage()); if (wfTrans == null && wf.WorkFlowStatus != "Success") { request.ApprovalStatus = 1; message += "," + (new JavaScriptSerializer()).Serialize(new { model = request, error = wf.WorkFlowStatus }); _hrUnitOfWork.LeaveRepository.Attach(request); _hrUnitOfWork.LeaveRepository.Entry(request).State = EntityState.Modified; } else if (wfTrans != null) { _hrUnitOfWork.LeaveRepository.Add(wfTrans); } } Errors = SaveChanges(User.Identity.GetLanguage()); if (Errors.Count > 0) { message = Errors.First().errors.First().message; } return(Ok(message)); }
public IHttpActionResult SaveComplaint(ComplaintRequestViewModel model) { List <Model.ViewModel.Error> errors = new List <Model.ViewModel.Error>(); if (!ModelState.IsValid) { return(Json(Utils.ParseFormError(ModelState))); } // return Ok(ModelState); model.EmpId = User.Identity.GetEmpId(); model.EmpId = 1027; ComplainRequest request = _hrUnitOfWork.ComplaintRepository.Get(model.Id); string message = "Ok"; ///Save if (model.Id == 0) { /// New request = new ComplainRequest(); AutoMapperParm parms = new AutoMapperParm() { Source = model, Destination = request }; AutoMapper(parms); request.ApprovalStatus = (byte)(model.submit == true ? 2 : 1); //1- New, 2- Submit request.CreatedUser = User.Identity.Name; request.CreatedTime = DateTime.Now; request.RequestDate = DateTime.Now; request.CompanyId = User.Identity.GetDefaultCompany(); _hrUnitOfWork.ComplaintRepository.Add(request); } else if (model.ApprovalStatus == 3 || model.ApprovalStatus == 1) { /// Edit AutoMapperParm parms = new AutoMapperParm() { Source = model, Destination = request }; AutoMapper(parms); if (model.submit) { _hrUnitOfWork.TrainingRepository.AddTrail(new AddTrailViewModel() { ColumnName = "ApprovalStatus", CompanyId = User.Identity.GetDefaultCompany(), ObjectName = "ComplainRequests", SourceId = request.Id.ToString(), UserName = User.Identity.Name, Version = 0, ValueAfter = MsgUtils.Instance.Trls("Submit"), ValueBefore = MsgUtils.Instance.Trls("Darft") }); } request.ApprovalStatus = (byte)(model.submit == true ? 2 : model.ApprovalStatus); //1- New, 2- Submit request.ModifiedUser = User.Identity.Name; request.ModifiedTime = DateTime.Now; request.RequestDate = DateTime.Now; _hrUnitOfWork.ComplaintRepository.Attach(request); _hrUnitOfWork.ComplaintRepository.Entry(request).State = EntityState.Modified; } var Errors = SaveChanges(User.Identity.GetLanguage()); if (Errors.Count > 0) { message = Errors.First().errors.First().message; return(Ok(message)); } if (model.submit) { WfViewModel wf = new WfViewModel() { Source = "Complaint" + model.Against, SourceId = User.Identity.GetDefaultCompany(), DocumentId = request.Id, RequesterEmpId = request.EmpId, ApprovalStatus = 2, CreatedUser = User.Identity.Name, }; var wfTrans = _hrUnitOfWork.ComplaintRepository.AddWorkFlow(wf, User.Identity.GetLanguage()); if (wfTrans == null && wf.WorkFlowStatus != "Success") { request.ApprovalStatus = 1; message = wf.WorkFlowStatus; } else if (wfTrans != null) { _hrUnitOfWork.LeaveRepository.Add(wfTrans); } } Errors = SaveChanges(User.Identity.GetLanguage()); if (Errors.Count > 0) { message = Errors.First().errors.First().message; } return(Ok(message)); }
public ActionResult Details(LeaveReqViewModel model, OptionsViewModel moreInfo, bool clear) { List <Error> errors = new List <Error>(); if (ModelState.IsValid) { if (ServerValidationEnabled) { errors = _hrUnitOfWork.CompanyRepository.CheckForm(new CheckParm { CompanyId = CompanyId, ObjectName = "LeaveRequest", TableName = "LeaveRequests", Columns = Models.Utils.GetColumnViews(ModelState.Where(a => !a.Key.Contains('.'))), ParentColumn = "CompanyId", 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))); } } } else { return(Json(Models.Utils.ParseFormErrors(ModelState))); } LeaveRequest request = _hrUnitOfWork.LeaveRepository.Get(model.Id); var type = _hrUnitOfWork.LeaveRepository.GetLeaveType(model.TypeId); byte version; byte.TryParse(Request.Form["version"], out version); string message = "OK"; if (type.AllowFraction && model.DayFraction != 0) { switch (model.DayFraction) { case 1: case 3: model.NofDays = 0.25f; break; case 2: case 4: model.NofDays = 0.5f; break; } } ///Save if (model.Id == 0) { /// New request = new LeaveRequest(); model.BalanceBefore = model.BalBefore; AutoMapperParm parms = new AutoMapperParm() { Source = model, Destination = request, Version = version, ObjectName = "LeaveRequest", Options = moreInfo, Transtype = TransType.Insert }; AutoMapper(parms); request.CompanyId = CompanyId; request.PeriodId = _hrUnitOfWork.LeaveRepository.GetLeaveRequestPeriod(type.CalendarId, request.StartDate, Language, out message); request.ApprovalStatus = (byte)(model.submit ? (type.ExWorkflow ? 6 : 2) : 1); //ApprovalStatus 1- New, 2- Submit 6- Approved //AbsenceType 8- Casual model.CompanyId = request.CompanyId; model.PeriodId = request.PeriodId; model.ApprovalStatus = request.ApprovalStatus; if (type.ExWorkflow && model.submit) { request.ActualStartDate = request.StartDate; request.ActualEndDate = request.EndDate; request.ActualNofDays = request.NofDays; model.ActualStartDate = request.StartDate; model.ActualEndDate = request.EndDate; model.ActualNofDays = request.NofDays; } request.CreatedUser = UserName; request.CreatedTime = DateTime.Now; _hrUnitOfWork.LeaveRepository.Add(request); if (!type.ExWorkflow && !clear && request.ApprovalStatus == 1) { model.ForceUpload = _hrUnitOfWork.Repository <RequestWf>().Where(a => a.Source == "Leave" && a.SourceId == type.Id).Select(a => a.ForceUpload).FirstOrDefault() ? 1 : 0; } } else { /// Edit AutoMapperParm parms = new AutoMapperParm() { Source = model, Destination = request, Version = version, ObjectName = "LeaveRequest", Options = moreInfo, Transtype = TransType.Update }; AutoMapper(parms); if (model.submit) { _hrUnitOfWork.TrainingRepository.AddTrail(new AddTrailViewModel() { ColumnName = "ApprovalStatus", CompanyId = CompanyId, ObjectName = "LeaveRequest", SourceId = request.Id.ToString(), UserName = UserName, Version = Convert.ToByte(Request.Form["Version"]), ValueAfter = MsgUtils.Instance.Trls("Submit"), ValueBefore = MsgUtils.Instance.Trls("Darft"), Transtype = (byte)TransType.Update }); } request.ApprovalStatus = (byte)(model.submit ? (type.ExWorkflow ? 6 : 2) : model.ApprovalStatus); //1- New, 2- Submit 6- Approved //AbsenceType 8- Casual model.ApprovalStatus = request.ApprovalStatus; request.ModifiedUser = UserName; request.ModifiedTime = DateTime.Now; if (type.ExWorkflow && model.submit) { request.ActualStartDate = request.StartDate; request.ActualEndDate = request.EndDate; request.ActualNofDays = request.NofDays; model.ActualStartDate = request.StartDate; model.ActualEndDate = request.EndDate; model.ActualNofDays = request.NofDays; } _hrUnitOfWork.LeaveRepository.Attach(request); _hrUnitOfWork.LeaveRepository.Entry(request).State = EntityState.Modified; } if (model.submit && type.ExWorkflow && request.ApprovalStatus == 1) { _hrUnitOfWork.LeaveRepository.AddAcceptLeaveTrans(request, UserName); } // update using transactions var trans = _hrUnitOfWork.BeginTransaction(); // #First save changes var Errors = SaveChanges(Language); if (Errors.Count > 0) { message = Errors.First().errors.First().message; trans.Rollback(); trans.Dispose(); // return string error message return(Json(message)); } model.Id = request.Id; if (model.submit) //Casual && type.AbsenceType != 8 { WfViewModel wf = new WfViewModel() { Source = "Leave", SourceId = request.TypeId, DocumentId = request.Id, RequesterEmpId = request.EmpId, ApprovalStatus = 2, CreatedUser = UserName, }; var wfTrans = _hrUnitOfWork.LeaveRepository.AddWorkFlow(wf, Language); if (wfTrans == null && wf.WorkFlowStatus != "Success") { request.ApprovalStatus = 1; message += "," + (new JavaScriptSerializer()).Serialize(new { model = request, error = wf.WorkFlowStatus }); _hrUnitOfWork.LeaveRepository.Attach(request); _hrUnitOfWork.LeaveRepository.Entry(request).State = EntityState.Modified; } else if (wfTrans != null) { _hrUnitOfWork.LeaveRepository.Add(wfTrans); } // #Second Save changes Errors = Save(Language); if (Errors.Count > 0) { message = Errors.First().errors.First().message; trans.Rollback(); trans.Dispose(); // return string error message return(Json(message)); } } if (clear) { model = new LeaveReqViewModel(); } if (message == "OK") { // send OK,model message += "," + ((new JavaScriptSerializer()).Serialize(new { model = model })); trans.Commit(); } return(Json(message)); }
public IHttpActionResult PutLeave(LeaveReqVM model) { if (!ModelState.IsValid) { return(BadRequest()); } if (model == null) { return(NotFound()); } var UserName = HttpContext.Current.User.Identity.Name; var type = hrUnitOfWork.LeaveRepository.GetLeaveType(model.TypeId); LeaveRequest request = hrUnitOfWork.LeaveRepository.Get(model.Id); //if (type.AllowFraction && (model.FractionDays != 0 && model.FractionDays != null)) //{ // model.NofDays = Math.Abs(model.FractionDays.GetValueOrDefault()); //} if (type.AllowFraction && (model.DayFraction != 0)) { switch (model.DayFraction) { case 1: case 3: model.NofDays = 0.25f; break; case 2: case 4: model.NofDays = 0.5f; break; } } AutoMapperParm parms = new AutoMapperParm() { Source = model, Destination = request, Version = 0, ObjectName = "LeaveRequest", Options = null, Transtype = TransType.Update }; AutoMapper(parms); if (model.submit) { hrUnitOfWork.TrainingRepository.AddTrail(new AddTrailViewModel() { ColumnName = "ApprovalStatus", CompanyId = model.CompanyId, ObjectName = "LeaveRequest", SourceId = request.Id.ToString(), UserName = UserName, Version = 0, ValueAfter = MsgUtils.Instance.Trls("Submit"), ValueBefore = MsgUtils.Instance.Trls("Darft") }); } request.ApprovalStatus = (byte)(model.submit ? (type.ExWorkflow ? 6 : 2) : model.ApprovalStatus); //1- New, 2- Submit 6- Approved //AbsenceType 8- Casual model.ApprovalStatus = request.ApprovalStatus; request.ModifiedUser = UserName; request.ModifiedTime = DateTime.Now; request.ReasonDesc = model.ReasonDesc; request.NofDays = (float)model.NofDays; request.DayFraction = (byte)model.DayFraction; if (type.ExWorkflow && model.submit) { request.ActualStartDate = request.StartDate; request.ActualEndDate = request.EndDate; request.ActualNofDays = request.NofDays; } hrUnitOfWork.LeaveRepository.Attach(request); hrUnitOfWork.LeaveRepository.Entry(request).State = EntityState.Modified; if (model.submit && type.AbsenceType == 8) { hrUnitOfWork.LeaveRepository.AddAcceptLeaveTrans(request, UserName); } var trans = hrUnitOfWork.BeginTransaction(); var Errors = SaveChanges(model.Culture); if (Errors.Count > 0) { trans.Rollback(); trans.Dispose(); return(StatusCode(HttpStatusCode.Forbidden)); } if (model.submit && !type.ExWorkflow) //Casual { WfViewModel wf = new WfViewModel() { Source = "Leave", SourceId = request.TypeId, DocumentId = request.Id, RequesterEmpId = request.EmpId, ApprovalStatus = 2, CreatedUser = UserName, }; var wfTrans = hrUnitOfWork.LeaveRepository.AddWorkFlow(wf, model.Culture); if (wfTrans == null && wf.WorkFlowStatus != "Success") { request.ApprovalStatus = 1; hrUnitOfWork.LeaveRepository.Attach(request); hrUnitOfWork.LeaveRepository.Entry(request).State = EntityState.Modified; } else if (wfTrans != null) { hrUnitOfWork.LeaveRepository.Add(wfTrans); } Errors = Save(model.Culture); if (Errors.Count > 0) { trans.Rollback(); trans.Dispose(); return(StatusCode(HttpStatusCode.NotModified)); } } trans.Commit(); trans.Dispose(); return(Ok(model)); }
public ActionResult Details(AssignOrderViewModel model, OptionsViewModel moreInfo) { List <Error> errors = new List <Error>(); if (ModelState.IsValid) { if (ServerValidationEnabled) { errors = _hrUnitOfWork.CompanyRepository.CheckForm(new CheckParm { CompanyId = CompanyId, ObjectName = "AssignOrders", TableName = "AssignOrders", Columns = Models.Utils.GetColumnViews(ModelState.Where(a => !a.Key.Contains('.'))), ParentColumn = "CompanyId", 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))); } } } else { return(Json(Models.Utils.ParseFormErrors(ModelState))); } AssignOrder request = _hrUnitOfWork.LeaveRepository.GetAssignOrderByiD(model.Id); byte version; byte.TryParse(Request.Form["version"], out version); var isRequired = _hrUnitOfWork.Repository <Workflow>().Where(w => w.Source == "AssignOrder" + model.CalcMethod && w.CompanyId == CompanyId).Select(a => a.IsRequired).FirstOrDefault(); if (model.Id == 0) { //new request = new AssignOrder(); AutoMapperParm parms = new AutoMapperParm() { Source = model, Destination = request, Version = version, ObjectName = "AssignOrders", Options = moreInfo, Transtype = TransType.Insert }; AutoMapper(parms); request.CompanyId = CompanyId; request.CreatedUser = UserName; request.CreatedTime = DateTime.Now; request.ApprovalStatus = (byte)(isRequired ? 1 : 6); _hrUnitOfWork.LeaveRepository.AddAssignOrder(request); } else { //Edit AutoMapperParm parms = new AutoMapperParm() { Source = model, Destination = request, Version = version, ObjectName = "AssignOrders", Options = moreInfo, Transtype = TransType.Update }; AutoMapper(parms); // _hrUnitOfWork.TrainingRepository.AddTrail(new AddTrailViewModel() { ColumnName = "ApprovalStatus", CompanyId = CompanyId, ObjectName = "AssignOrders", SourceId = request.Id.ToString(), UserName = UserName, ValueAfter = MsgUtils.Instance.Trls("Submit"), ValueBefore = MsgUtils.Instance.Trls("Darft"), Transtype = (byte)TransType.Update }); request.CompanyId = CompanyId; request.CreatedUser = UserName; request.CreatedTime = DateTime.Now; request.ApprovalStatus = (byte)(isRequired ? 1 : 6); _hrUnitOfWork.LeaveRepository.AttachAssignOrder(request); _hrUnitOfWork.LeaveRepository.EntryAssignOrder(request).State = EntityState.Modified; } if (!isRequired && model.CalcMethod == 2 && model.Id == 0) { var error = _hrUnitOfWork.LeaveRepository.AddAssignOrdersLeaveTrans(request, UserName, Language); if (error.Length > 0) { return(Json(error)); } } errors = SaveChanges(Language); string message = "OK," + ((new JavaScriptSerializer()).Serialize(model)); if (errors.Count > 0) { message = errors.First().errors.First().message; return(Json(message)); } //workflow if (isRequired) { if (request.CalcMethod == 1) //monetary { WfViewModel wf = new WfViewModel() { Source = "AssignOrder1", SourceId = request.CompanyId, DocumentId = request.Id, RequesterEmpId = request.EmpId, ApprovalStatus = 6, CreatedUser = UserName, }; var wfTrans = _hrUnitOfWork.LeaveRepository.AddWorkFlow(wf, Language); if (wfTrans == null && wf.WorkFlowStatus != "Success") { request.ApprovalStatus = 1; message += "," + (new JavaScriptSerializer()).Serialize(new { model = request, error = wf.WorkFlowStatus }); _hrUnitOfWork.LeaveRepository.AttachAssignOrder(request); _hrUnitOfWork.LeaveRepository.EntryAssignOrder(request).State = EntityState.Modified; } else if (wfTrans != null) { _hrUnitOfWork.LeaveRepository.Add(wfTrans); } } else if (request.CalcMethod == 2) //time compensation { WfViewModel wf = new WfViewModel() { Source = "AssignOrder2", SourceId = request.CompanyId, DocumentId = request.Id, RequesterEmpId = request.EmpId, ApprovalStatus = 6, CreatedUser = UserName, }; var wfTrans = _hrUnitOfWork.LeaveRepository.AddWorkFlow(wf, Language); if (wfTrans == null && wf.WorkFlowStatus != "Success") { request.ApprovalStatus = 1; message += "," + (new JavaScriptSerializer()).Serialize(new { model = request, error = wf.WorkFlowStatus }); _hrUnitOfWork.LeaveRepository.AttachAssignOrder(request); _hrUnitOfWork.LeaveRepository.EntryAssignOrder(request).State = EntityState.Modified; } else if (wfTrans != null) { _hrUnitOfWork.LeaveRepository.Add(wfTrans); } } errors = Save(Language); if (errors.Count > 0) { message = errors.First().errors.First().message; } } //end workflow if (message == "OK") { message += "," + ((new JavaScriptSerializer()).Serialize(request)); } return(Json(message)); }
public ActionResult SaveMedical(MedicalRequestViewModel model, OptionsViewModel moreInfo) { List <Error> errors = new List <Error>(); if (ModelState.IsValid) { if (ServerValidationEnabled) { errors = _hrUnitOfWork.CompanyRepository.CheckForm(new CheckParm { CompanyId = CompanyId, ObjectName = "MedicalRequestsForm", TableName = "MedicalRequests", Columns = Models.Utils.GetColumnViews(ModelState.Where(a => !a.Key.Contains('.'))), ParentColumn = "CompanyId", 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))); } } } else { return(Json(Models.Utils.ParseFormErrors(ModelState))); } BenefitRequest request = _hrUnitOfWork.MedicalRepository.Get(model.Id); byte version; byte.TryParse(Request.Form["version"], out version); string message = "OK"; var benefitplanId = _hrUnitOfWork.MedicalRepository.GetBenefitPlanId(model.ParentId, model.EmpId, model.BeneficiaryId); ///Save if (model.Id == 0) { /// New request = new BenefitRequest(); AutoMapperParm parms = new AutoMapperParm() { Source = model, Destination = request, Version = version, ObjectName = "MedicalRequestsForm", Options = moreInfo, Transtype = TransType.Insert }; AutoMapper(parms); request.BenefitPlanId = benefitplanId; request.ApprovalStatus = (byte)(model.submit == true ? 2 : 1); //1- New, 2- Submit request.CreatedUser = UserName; request.CreatedTime = DateTime.Now; request.RequestDate = DateTime.Now; request.CompanyId = CompanyId; _hrUnitOfWork.MedicalRepository.Add(request); } else if (model.ApprovalStatus == 3 || model.ApprovalStatus == 1) { /// Edit AutoMapperParm parms = new AutoMapperParm() { Source = model, Destination = request, Version = version, ObjectName = "MedicalRequestsForm", Options = moreInfo, Transtype = TransType.Update }; AutoMapper(parms); if (model.submit) { _hrUnitOfWork.TrainingRepository.AddTrail(new AddTrailViewModel() { ColumnName = "ApprovalStatus", CompanyId = CompanyId, ObjectName = "ComplainRequests", SourceId = request.Id.ToString(), UserName = UserName, Version = 0, ValueAfter = MsgUtils.Instance.Trls("Submit"), ValueBefore = MsgUtils.Instance.Trls("Darft") }); } request.BenefitPlanId = benefitplanId == 0 ? model.BenefitPlanId : benefitplanId; request.ApprovalStatus = (byte)(model.submit == true ? 2 : model.ApprovalStatus); //1- New, 2- Submit request.ModifiedUser = UserName; request.ModifiedTime = DateTime.Now; request.RequestDate = DateTime.Now; _hrUnitOfWork.MedicalRepository.Attach(request); _hrUnitOfWork.MedicalRepository.Entry(request).State = System.Data.Entity.EntityState.Modified; } var Errors = SaveChanges(Language); if (Errors.Count > 0) { message = Errors.First().errors.First().message; return(Json(message)); } if (model.submit) { var chkWorkFlow = _hrUnitOfWork.Repository <Workflow>().Where(w => w.Source == "Medical").Select(a => a.IsRequired).FirstOrDefault(); if (chkWorkFlow == true) { WfViewModel wf = new WfViewModel() { Source = "Medical", SourceId = CompanyId, DocumentId = request.Id, RequesterEmpId = request.EmpId, ApprovalStatus = 2, CreatedUser = UserName, }; var wfTrans = _hrUnitOfWork.ComplaintRepository.AddWorkFlow(wf, Language); if (wfTrans == null && wf.WorkFlowStatus != "Success") { request.ApprovalStatus = 1; _hrUnitOfWork.MedicalRepository.Attach(request); _hrUnitOfWork.MedicalRepository.Entry(request).State = System.Data.Entity.EntityState.Modified; message = wf.WorkFlowStatus; } else if (wfTrans != null) { _hrUnitOfWork.LeaveRepository.Add(wfTrans); } } } else { request.ApprovalStatus = 1; _hrUnitOfWork.MedicalRepository.Attach(request); _hrUnitOfWork.MedicalRepository.Entry(request).State = System.Data.Entity.EntityState.Modified; } Errors = SaveChanges(Language); if (Errors.Count > 0) { message = Errors.First().errors.First().message; } return(Json(message)); }
public ActionResult Details(TrainEventFormViewModel model, OptionsViewModel moreInfo) { List <Error> errors = new List <Error>(); if (ModelState.IsValid) { if (ServerValidationEnabled) { errors = _hrUnitOfWork.SiteRepository.CheckForm(new CheckParm { CompanyId = CompanyId, ObjectName = "TrainEvents", TableName = "TrainEvents", ParentColumn = "CourseId", 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))); } } TrainEvent record; PeopleTraining PeopleTrainObj = new PeopleTraining(); var message = "OK"; //insert if (model.Id == 0) { record = new TrainEvent(); AutoMapper(new Models.AutoMapperParm { Destination = record, Source = model, ObjectName = "TrainEvents", Options = moreInfo, Transtype = TransType.Insert }); record.CreatedUser = UserName; record.CreatedTime = DateTime.Now; _hrUnitOfWork.TrainingRepository.Add(record); } //booking else if (model.book) { record = _hrUnitOfWork.Repository <TrainEvent>().FirstOrDefault(a => a.Id == model.Id); PeopleTrainObj.CreatedUser = UserName; PeopleTrainObj.CreatedTime = DateTime.Now; PeopleTrainObj.CompanyId = CompanyId; PeopleTrainObj.ApprovalStatus = 2; PeopleTrainObj.RequestDate = DateTime.Now; PeopleTrainObj.EmpId = (model.PersonId != null ? model.PersonId.Value: User.Identity.GetEmpId()); PeopleTrainObj.CourseEDate = model.TrainEndDate; PeopleTrainObj.CourseSDate = model.TrainStartDate; PeopleTrainObj.EventId = record.Id; PeopleTrainObj.CompanyId = CompanyId; PeopleTrainObj.Cost = record.Cost; PeopleTrainObj.Curr = record.Curr; PeopleTrainObj.CurrRate = record.CurrRate; PeopleTrainObj.Notes = record.Notes; PeopleTrainObj.CourseId = record.CourseId; PeopleTrainObj.Adwarding = record.Adwarding; _hrUnitOfWork.TrainingRepository.Add(PeopleTrainObj); } //update else { record = _hrUnitOfWork.Repository <TrainEvent>().FirstOrDefault(a => a.Id == model.Id); AutoMapper(new Models.AutoMapperParm { Destination = record, Source = model, ObjectName = "TrainEvents", Options = moreInfo, Transtype = TransType.Update }); record.ModifiedTime = DateTime.Now; record.ModifiedUser = UserName; _hrUnitOfWork.TrainingRepository.Attach(record); _hrUnitOfWork.TrainingRepository.Entry(record).State = EntityState.Modified; } errors = SaveChanges(Language); if (errors.Count > 0) { message = errors.First().errors.First().message; } if (model.book) { WfViewModel wf = new WfViewModel() { Source = "Training", SourceId = CompanyId, DocumentId = PeopleTrainObj.Id, RequesterEmpId = PeopleTrainObj.EmpId, ApprovalStatus = 2, CreatedUser = UserName, }; var wfTrans = _hrUnitOfWork.ComplaintRepository.AddWorkFlow(wf, Language); if (wfTrans == null && wf.WorkFlowStatus != "Success") { PeopleTrainObj.ApprovalStatus = 2; message = wf.WorkFlowStatus; } else if (wfTrans != null) { _hrUnitOfWork.LeaveRepository.Add(wfTrans); } errors = SaveChanges(Language); } return(Json(message)); } return(Json(Models.Utils.ParseFormErrors(ModelState))); }
public IHttpActionResult SaveTrainEvent(TrainEventFormViewModel model) { List <Model.ViewModel.Error> errors = new List <Model.ViewModel.Error>(); if (!ModelState.IsValid) { return(Json(Utils.ParseFormError(ModelState))); } string message = "Ok"; PeopleTraining PeopleTrainObj = new PeopleTraining(); TrainEvent record = _hrUnitOfWork.Repository <TrainEvent>().FirstOrDefault(a => a.Id == model.Id); if (model.PersonId != null) { PeopleTrainObj.EmpId = model.PersonId.GetValueOrDefault(); } else { PeopleTrainObj.EmpId = 1042; } PeopleTrainObj.EmpId = User.Identity.GetEmpId(); PeopleTrainObj.CreatedUser = User.Identity.Name; PeopleTrainObj.CreatedTime = DateTime.Now; PeopleTrainObj.CompanyId = User.Identity.GetDefaultCompany(); PeopleTrainObj.ApprovalStatus = 2; PeopleTrainObj.RequestDate = DateTime.Now; PeopleTrainObj.CourseEDate = model.TrainEndDate; PeopleTrainObj.CourseSDate = model.TrainStartDate; PeopleTrainObj.EventId = record.Id; PeopleTrainObj.CompanyId = User.Identity.GetDefaultCompany(); PeopleTrainObj.Cost = record.Cost; PeopleTrainObj.Curr = record.Curr; PeopleTrainObj.CurrRate = record.CurrRate; PeopleTrainObj.Notes = record.Notes; PeopleTrainObj.CourseId = record.CourseId; PeopleTrainObj.Adwarding = record.Adwarding; _hrUnitOfWork.TrainingRepository.Add(PeopleTrainObj); errors = SaveChanges(User.Identity.GetLanguage()); if (errors.Count > 0) { message = errors.First().errors.First().message; } if (model.book) { WfViewModel wf = new WfViewModel() { Source = "Training", SourceId = User.Identity.GetDefaultCompany(), DocumentId = PeopleTrainObj.Id, RequesterEmpId = PeopleTrainObj.EmpId, ApprovalStatus = 2, CreatedUser = User.Identity.Name, }; var wfTrans = _hrUnitOfWork.ComplaintRepository.AddWorkFlow(wf, User.Identity.GetLanguage()); if (wfTrans == null && wf.WorkFlowStatus != "Success") { PeopleTrainObj.ApprovalStatus = 2; message = wf.WorkFlowStatus; } else if (wfTrans != null) { _hrUnitOfWork.LeaveRepository.Add(wfTrans); } errors = SaveChanges(User.Identity.GetLanguage()); } return(Ok(message)); }
public IHttpActionResult PostAssignOrder(AssignOrderVM model) { if (!ModelState.IsValid) { return(BadRequest()); } if (model == null) { return(NotFound()); } var UserName = HttpContext.Current.User.Identity.Name; AssignOrder request; //= hrUnitOfWork.LeaveRepository.GetAssignOrderByiD(model.Id); var isRequired = hrUnitOfWork.Repository <Workflow>().Where(w => w.Source == "AssignOrder" + model.CalcMethod && w.CompanyId == model.CompanyId).Select(a => a.IsRequired).FirstOrDefault(); request = new AssignOrder(); AutoMapperParm parms = new Models.AutoMapperParm() { Source = model, Destination = request, Version = 0, ObjectName = "AssignOrders", Options = null, Transtype = TransType.Insert }; AutoMapper(parms); request.CompanyId = model.CompanyId; request.CreatedUser = UserName; request.CreatedTime = DateTime.Now; request.ApprovalStatus = (byte)(isRequired ? 1 : 6); request.EmpId = model.EmpId; request.Duration = model.Duration; request.AssignDate = model.AssignDate; request.CalcMethod = model.CalcMethod; request.LeaveTypeId = model.LeaveTypeId; request.ExpiryDate = model.ExpiryDate; request.TaskDesc = model.TaskDesc; request.ManagerId = model.ManagerId; hrUnitOfWork.LeaveRepository.AddAssignOrder(request); var Errors = SaveChanges(model.language); if (Errors.Count > 0) { return(StatusCode(HttpStatusCode.Forbidden)); } if (!isRequired && model.CalcMethod == 2 && model.Id == 0) { var error = hrUnitOfWork.LeaveRepository.AddAssignOrdersLeaveTrans(request, UserName, model.language); } if (isRequired) { if (request.CalcMethod == 1) //monetary { WfViewModel wf = new WfViewModel() { Source = "AssignOrder1", SourceId = request.CompanyId, DocumentId = request.Id, RequesterEmpId = request.EmpId, ApprovalStatus = 6, CreatedUser = UserName, }; var wfTrans = hrUnitOfWork.LeaveRepository.AddWorkFlow(wf, model.language); if (wfTrans == null && wf.WorkFlowStatus != "Success") { request.ApprovalStatus = 1; hrUnitOfWork.LeaveRepository.AttachAssignOrder(request); hrUnitOfWork.LeaveRepository.EntryAssignOrder(request).State = EntityState.Modified; } else if (wfTrans != null) { hrUnitOfWork.LeaveRepository.Add(wfTrans); } } else if (request.CalcMethod == 2) //time compensation { WfViewModel wf = new WfViewModel() { Source = "AssignOrder2", SourceId = request.CompanyId, DocumentId = request.Id, RequesterEmpId = request.EmpId, ApprovalStatus = 6, CreatedUser = UserName, }; var wfTrans = hrUnitOfWork.LeaveRepository.AddWorkFlow(wf, model.language); if (wfTrans == null && wf.WorkFlowStatus != "Success") { request.ApprovalStatus = 1; hrUnitOfWork.LeaveRepository.AttachAssignOrder(request); hrUnitOfWork.LeaveRepository.EntryAssignOrder(request).State = EntityState.Modified; } else if (wfTrans != null) { hrUnitOfWork.LeaveRepository.Add(wfTrans); } } } Errors = SaveChanges(model.language); if (Errors.Count > 0) { return(StatusCode(HttpStatusCode.NotModified)); } model.Id = request.Id; return(Created(new Uri(Request.RequestUri + "/" + model.Id), model)); }
public IHttpActionResult EditAssignOrder(AssignOrderVM model) { if (!ModelState.IsValid) { return(BadRequest()); } if (model == null) { return(NotFound()); } var UserName = HttpContext.Current.User.Identity.Name; AssignOrder request = hrUnitOfWork.LeaveRepository.GetAssignOrderByiD(model.Id); AutoMapperParm parms = new Models.AutoMapperParm() { Source = model, Destination = request, Version = 0, ObjectName = "AssignOrders", Options = null, Transtype = TransType.Update }; AutoMapper(parms); if (model.Id != 0) { hrUnitOfWork.TrainingRepository.AddTrail(new AddTrailViewModel() { ColumnName = "ApprovalStatus", CompanyId = model.CompanyId, ObjectName = "AssignOrders", SourceId = request.Id.ToString(), UserName = UserName, Version = 0, ValueAfter = MsgUtils.Instance.Trls("Submit"), ValueBefore = MsgUtils.Instance.Trls("Darft") }); request.CompanyId = model.CompanyId; request.ModifiedUser = UserName; request.ModifiedTime = DateTime.Now; request.ApprovalStatus = 6; request.EmpId = model.EmpId; request.Duration = model.Duration; request.AssignDate = model.AssignDate; request.CalcMethod = model.CalcMethod; request.LeaveTypeId = model.LeaveTypeId; request.ExpiryDate = model.ExpiryDate; request.TaskDesc = model.TaskDesc; request.ManagerId = model.ManagerId; hrUnitOfWork.LeaveRepository.AttachAssignOrder(request); hrUnitOfWork.LeaveRepository.EntryAssignOrder(request).State = EntityState.Modified; var Errors = SaveChanges(model.language); if (Errors.Count > 0) { return(StatusCode(HttpStatusCode.Forbidden)); } if (request.CalcMethod == 1) //monetary { WfViewModel wf = new WfViewModel() { Source = "AssignOrder1", SourceId = request.CompanyId, DocumentId = request.Id, RequesterEmpId = request.EmpId, ApprovalStatus = 6, CreatedUser = UserName, }; var wfTrans = hrUnitOfWork.LeaveRepository.AddWorkFlow(wf, model.language); if (wfTrans == null && wf.WorkFlowStatus != "Success") { request.ApprovalStatus = 1; hrUnitOfWork.LeaveRepository.AttachAssignOrder(request); hrUnitOfWork.LeaveRepository.EntryAssignOrder(request).State = EntityState.Modified; } else if (wfTrans != null) { hrUnitOfWork.LeaveRepository.Add(wfTrans); } } else if (request.CalcMethod == 2) //time compensation { WfViewModel wf = new WfViewModel() { Source = "AssignOrder2", SourceId = request.CompanyId, DocumentId = request.Id, RequesterEmpId = request.EmpId, ApprovalStatus = 6, CreatedUser = UserName, }; var wfTrans = hrUnitOfWork.LeaveRepository.AddWorkFlow(wf, model.language); if (wfTrans == null && wf.WorkFlowStatus != "Success") { request.ApprovalStatus = 1; hrUnitOfWork.LeaveRepository.AttachAssignOrder(request); hrUnitOfWork.LeaveRepository.EntryAssignOrder(request).State = EntityState.Modified; } else if (wfTrans != null) { hrUnitOfWork.LeaveRepository.Add(wfTrans); } } Errors = SaveChanges(model.language); if (Errors.Count > 0) { return(StatusCode(HttpStatusCode.NotModified)); } } return(Ok(model)); }
public ActionResult SaveMissionRequest(ErrandFormRequestViewModel model, OptionsViewModel moreInfo, bool clear = false) { List <Error> errors = new List <Error>(); if (ModelState.IsValid) { if (ServerValidationEnabled) { errors = _hrUnitOfWork.CompanyRepository.CheckForm(new CheckParm { CompanyId = CompanyId, ObjectName = "ErrandRequest", TableName = "ErrandRequests", Columns = Models.Utils.GetColumnViews(ModelState).Where(s => s.Name != "MultiDays").ToList(), ParentColumn = "CompanyId", 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))); } } bool IsValid = true; string conflictMessage = string.Empty; string message = "OK"; if (model.MultiDays) { // check Server date with Start date if (model.StartDate.Date < DateTime.Today.Date) { ModelState.AddModelError("StartDate", MsgUtils.Instance.Trls("Errand DateLess than Now")); return(Json(Models.Utils.ParseFormErrors(ModelState))); } IsValid = Constants.CheckDateRangAndTasksConflict.IsValid(_hrUnitOfWork, model.EmpId.ToString(), Constants.Sources.Errand, model.Id, model.StartDate.Date, model.EndDate.Date, DateTime.Today, Language, out conflictMessage); } else { var currentime = DateTime.Now.GetUniversalDatetime(User.Identity.GetTimeZone()); //TimeZoneInfo.ConvertTime(DateTime.Now, TimeZoneInfo.FindSystemTimeZoneById(User.Identity.GetTimeZone())); if (Convert.ToDateTime(model.StartTime) < currentime) { ModelState.AddModelError("StartTime", MsgUtils.Instance.Trls("Start Less than Now")); return(Json(Models.Utils.ParseFormErrors(ModelState))); } IsValid = Constants.CheckDateRangAndTasksConflict.IsValid(_hrUnitOfWork, model.EmpId.ToString(), Constants.Sources.Errand, model.Id, Convert.ToDateTime(model.StartTime), Convert.ToDateTime(model.EndTime), DateTime.Today, Language, out conflictMessage); } if (!IsValid) { ModelState.AddModelError("", conflictMessage); return(Json(Models.Utils.ParseFormErrors(ModelState))); } var record = _hrUnitOfWork.Repository <ErrandRequest>().FirstOrDefault(j => j.Id == model.Id); var isRequired = _hrUnitOfWork.Repository <Workflow>().Where(w => w.Source == "ErrandRequest" && w.CompanyId == CompanyId).Select(a => a.IsRequired).FirstOrDefault(); if (record == null) { record = new ErrandRequest(); AutoMapper(new Models.AutoMapperParm { Destination = record, Source = model, ObjectName = "ErrandRequest", Options = moreInfo, Transtype = TransType.Insert }); record.CreatedTime = DateTime.Now; record.CreatedUser = UserName; record.CompanyId = CompanyId; record.ApprovalStatus = (byte)(model.submit ? (isRequired ? 2 : 6) : 1); if (model.MultiDays) { record.StartDate = model.StartDate; record.EndDate = model.EndDate; } else { record.StartDate = Convert.ToDateTime(model.StartTime); record.EndDate = Convert.ToDateTime(model.EndTime); } _hrUnitOfWork.MissionRepository.Add(record); } else { AutoMapper(new Models.AutoMapperParm { Destination = record, Source = model, ObjectName = "ErrandRequest", Options = moreInfo, Transtype = TransType.Update }); record.ModifiedTime = DateTime.Now; record.ModifiedUser = UserName; record.CompanyId = CompanyId; record.ApprovalStatus = (byte)(model.submit ? (isRequired ? 2 : 6) : 1); if (model.MultiDays) { record.StartDate = model.StartDate; record.EndDate = model.EndDate; } else { record.StartDate = Convert.ToDateTime(model.StartTime); record.EndDate = Convert.ToDateTime(model.EndTime); } _hrUnitOfWork.MissionRepository.Attach(record); _hrUnitOfWork.MissionRepository.Entry(record).State = EntityState.Modified; } if (errors.Count > 0) { return(Json(errors.First().errors.First().message)); } var trans = _hrUnitOfWork.BeginTransaction(); var Errors = SaveChanges(Language); if (Errors.Count > 0) { message = Errors.First().errors.First().message; trans.Rollback(); trans.Dispose(); return(Json(message)); } #region workflow if (isRequired && model.submit) { WfViewModel wf = new WfViewModel() { Source = "ErrandRequest", SourceId = record.CompanyId, DocumentId = record.Id, RequesterEmpId = record.EmpId, ApprovalStatus = 2, CreatedUser = UserName, }; var wfTrans = _hrUnitOfWork.LeaveRepository.AddWorkFlow(wf, Language); if (wfTrans == null && wf.WorkFlowStatus != "Success") { record.ApprovalStatus = 1; message += "," + (new JavaScriptSerializer()).Serialize(new { model = record, error = wf.WorkFlowStatus }); _hrUnitOfWork.MissionRepository.Attach(record); _hrUnitOfWork.MissionRepository.Entry(record).State = EntityState.Modified; } else if (wfTrans != null) { _hrUnitOfWork.LeaveRepository.Add(wfTrans); } errors = Save(Language); if (Errors.Count > 0) { message = Errors.First().errors.First().message; trans.Rollback(); trans.Dispose(); return(Json(message)); } } #endregion if (message == "OK") { if (clear) { model = new ErrandFormRequestViewModel(); message += "," + (new JavaScriptSerializer()).Serialize(model); } else { message += "," + (new JavaScriptSerializer()).Serialize(record); } trans.Commit(); } return(Json(message)); } else { return(Json(Models.Utils.ParseFormErrors(ModelState))); } }