/// <summary> /// [Hieu.Van] /// Xử lý Gửi yêu cầu phê duyệt /// </summary> /// <param name="LoginID"></param> /// <param name="userApprovedID"></param> /// <param name="recordID"></param> /// <param name="type"></param> /// <returns></returns> public string ProcessSendRequest(string host, Guid LoginID, Guid userApprovedID, Guid recordID, string type) { DataErrorCode status = DataErrorCode.Success; using (var context = new VnrHrmDataContext()) { var unitOfWork = (IUnitOfWork)(new UnitOfWork(context)); var repoFIN_PurchaseRequest = new CustomBaseRepository <FIN_PurchaseRequest>(unitOfWork); var repoSys_UserApprove = new CustomBaseRepository <Sys_UserApprove>(unitOfWork); var record = repoFIN_PurchaseRequest.FindBy(s => s.ID == recordID).FirstOrDefault(); if (record.UserCreateID != LoginID) { return(DataErrorCode.NoPermission.ToString()); } if (record.Status == EnumDropDown.Status.E_REJECTED.ToString()) { return(DataErrorCode.Error_Reject.ToString()); } if (record.Status != null) { return(DataErrorCode.Error_SendRequest.ToString()); } var userApproved = repoSys_UserApprove.FindBy(s => s.ID == userApprovedID).FirstOrDefault(); // Lấy status hiện tại của bản ghi string currentStatus = record.Status; // truyền từ Dropdownlist chọn người duyệt, lấy ra giá trị Status tiếp theo string nextStatus = userApproved.CurrentStatus; record.Status = nextStatus; record.UserApproveID = userApprovedID; repoFIN_PurchaseRequest.Edit(record); status = repoFIN_PurchaseRequest.SaveChanges(); if (status == DataErrorCode.Success) { if (nextStatus != "Approved") { status = SendMail_ToNextApproved(host, recordID, userApprovedID, nextStatus, type); } var repoSys_ConfigProcessApprove = new CustomBaseRepository <Sys_ConfigProcessApprove>(unitOfWork); var configProcess = repoSys_ConfigProcessApprove.FindBy(s => s.IsDelete == null && s.Function == type && s.CurrentStatus == record.Status).FirstOrDefault(); if (configProcess == null) { return(DataErrorCode.Success.ToString()); } else { return(DataErrorCode.Success_Forward.ToString()); } } return(status.ToString()); } }
/// <summary> /// [Hieu.Van] /// Xử lý Từ Chối /// </summary> /// <param name="LoginID"></param> /// <param name="userApprovedID"></param> /// <param name="recordID"></param> /// <param name="type"></param> /// <returns></returns> public string ProcessReject(string host, Guid LoginID, Guid recordID, string type) { DataErrorCode status = DataErrorCode.Success; using (var context = new VnrHrmDataContext()) { var unitOfWork = (IUnitOfWork)(new UnitOfWork(context)); var repoFIN_PurchaseRequest = new CustomBaseRepository <FIN_PurchaseRequest>(unitOfWork); var repoSys_UserApprove = new CustomBaseRepository <Sys_UserApprove>(unitOfWork); var repoSys_UserInfo = new CustomBaseRepository <Sys_UserInfo>(unitOfWork); var record = repoFIN_PurchaseRequest.FindBy(s => s.ID == recordID).FirstOrDefault(); if (record.Status == EnumDropDown.Status.E_REJECTED.ToString()) { return(DataErrorCode.Error_Reject.ToString()); } var userApproved = repoSys_UserApprove.FindBy(s => s.ID == record.UserApproveID).FirstOrDefault(); // Kiểm tra tài khoản login có được phép Duyệt hay ko? if (LoginID == Guid.Empty || userApproved.UserApproveID != LoginID) { // kiểm tra nếu bản ghi có tk duyệt trống (tức bản ghi mới tạo) và tk login = tk tạo thì cho duyệt tiếp tục if (record.UserApproveID == null && record.UserCreateID == LoginID) { } else { return(DataErrorCode.NoPermission.ToString()); } } record.Status = EnumDropDown.Status.E_REJECTED.ToString(); repoFIN_PurchaseRequest.Edit(record); status = repoFIN_PurchaseRequest.SaveChanges(); return(status.ToString()); } }
/// <summary> /// [Hieu.Van] /// Xử lý duyệt động đa cấp /// ProcessApproved (Tài khoản Login - LoginID, Value Dropdownlist - userApprovedID, Id Bản ghi - recordID, Enum màn hình - type) /// </summary> /// <param name="LoginID"></param> /// <param name="userApprovedID"></param> /// <param name="recordID"></param> /// <param name="type"></param> /// <returns></returns> public string ProcessApproved(string host, Guid LoginID, Guid userApprovedID, Guid recordID, string type) { DataErrorCode status = DataErrorCode.Success; string stt = string.Empty; var Services = new BaseService(); using (var context = new VnrHrmDataContext()) { var unitOfWork = (IUnitOfWork)(new UnitOfWork(context)); var repoFIN_PurchaseRequest = new CustomBaseRepository <FIN_PurchaseRequest>(unitOfWork); var repoSys_UserApprove = new CustomBaseRepository <Sys_UserApprove>(unitOfWork); var repoSys_ConfigProcessApprove = new CustomBaseRepository <Sys_ConfigProcessApprove>(unitOfWork); var UserLogin = string.Empty; var record = GetData <FIN_PurchaseRequestEntity>(recordID, ConstantSql.hrm_hr_sp_get_PurchaseRequestById, UserLogin, ref stt).FirstOrDefault(); var configProcess = repoSys_ConfigProcessApprove.FindBy(s => s.IsDelete == null && s.Function == type && s.CurrentStatus == record.Status).FirstOrDefault(); double total = record.Total != null ? record.Total.Value : 0.0; List <ElementFormula> listFomula = new List <ElementFormula>(); ElementFormula FomulaItem = new ElementFormula("Total", total, 0); ElementFormula statusItem = new ElementFormula(configProcess.NextStatusFormular, configProcess.NextStatusFormular, 1); listFomula.Add(FomulaItem); listFomula.Add(statusItem); string nextStatus = Services.GetObjectValue(new List <Cat_ElementEntity>(), listFomula, configProcess.NextStatusFormular).ToString(); if (configProcess != null && userApprovedID == Guid.Empty && nextStatus != "Approved") { return(DataErrorCode.Error_NoUserApproved.ToString()); } if (record.Status == EnumDropDown.Status.E_REJECTED.ToString()) { return(DataErrorCode.Error_Reject.ToString()); } var recordEdit = repoFIN_PurchaseRequest.FindBy(s => s.ID == recordID).FirstOrDefault(); // lấy UserInfoID hiện tại của bản ghi var userApprovedCurrent = repoSys_UserApprove.FindBy(s => s.ID == recordEdit.UserApproveID).FirstOrDefault(); // Kiểm tra tài khoản login có được phép Duyệt hay ko? if (LoginID == Guid.Empty || userApprovedCurrent.UserApproveID != LoginID) { // kiểm tra nếu bản ghi có tk duyệt trống (tức bản ghi mới tạo) và tk login = tk tạo thì cho duyệt tiếp tục if (recordEdit.UserApproveID == null && record.UserCreateID == LoginID) { } else { return(DataErrorCode.NoPermission.ToString()); } } recordEdit.Status = nextStatus; if (userApprovedID == Guid.Empty) { recordEdit.UserApproveID = null; } else { recordEdit.UserApproveID = userApprovedID; } repoFIN_PurchaseRequest.Edit(recordEdit); status = repoFIN_PurchaseRequest.SaveChanges(); if (nextStatus != "Approved") { status = SendMail_ToNextApproved(host, recordID, userApprovedID, nextStatus, type); } if (status == DataErrorCode.Success) { //var configProcess = repoSys_ConfigProcessApprove.FindBy(s => s.IsDelete == null && s.Function == type && s.CurrentStatus == nextStatus).FirstOrDefault(); if (nextStatus == "Approved") { return(DataErrorCode.Success.ToString()); } else { return(DataErrorCode.Success_Forward.ToString()); } } return(status.ToString()); } }