public ResultViewModel FnUpdateCurrentAssignedTo(ApprovalSpotterDetails model, string UserName) { string userMail = ""; glog.Debug("FnUpdateCurrentAssignedTo: Entry"); var result = new ResultViewModel(); using (var db = new MainDbContext()) { using (var transaction = db.Database.BeginTransaction()) { try { if (FnGetApprovingOfficerAvailbility(model.AssignedTo)) { userMail = db.Sys_Users.FirstOrDefault(x => x.Name == UserName).Email; var approvalProcessDtl = db.Approval_ProcessDetail.Where(w => w.ApprovalProcessID == model.ApprovalProcessDetailID).FirstOrDefault(); approvalProcessDtl.AssignedTo = model.AssignedTo; approvalProcessDtl.ReassignDate = DateTime.Now; approvalProcessDtl.ReassignBy = userMail; approvalProcessDtl.ReassignReason = model.ReassignReason; db.Approval_ProcessDetail.Add(approvalProcessDtl); db.Entry(approvalProcessDtl).State = System.Data.Entity.EntityState.Modified; var Id = db.SaveChanges(); if (Id > 0) { transaction.Commit(); string EmpEmailId = GetEmailByEmpCode(model.AssignedTo); var isEmailSend = SendReassignEmailNotificationAPI(model, EmpEmailId, UserName, userMail, model.AssignedTo); result.Status = 1; result.Message = String.Format("Approval reassign to {0}", GetApprovingOfficerNameByCode(model.AssignedTo)); } else { transaction.Rollback(); result.Status = 0; result.Message = "An error occurred while reassign task!"; } } else { result.Status = 2; result.Message = "Selected approving officer is currently unavailable. Please select another approving officer.Thanks"; } } catch (Exception ex) { glog.Error("FnUpdateCurrentAssignedTo Exception: " + ex.Message + ex.InnerException); result.Status = 0; result.Message = "Please contact MIS, error: " + ex.Message; transaction.Rollback(); } finally { transaction.Dispose(); } glog.Debug("FnUpdateCurrentAssignedTo: Exit"); return(result); } } }
public bool SendEmailNotificationAPI(ApprovalSpotterDetails model, string empEmailId, string UserName, string UserId, int currentTier, int maxTier, string employeeCode) { using (var client = new HttpClient()) { client.BaseAddress = new Uri(ConfigurationManager.AppSettings["SitePathAPI"]); var emailModel = new EmailViewModel(); if (!String.IsNullOrEmpty(model.RejectReason)) { string html = GenerateHtmlForEmailApprovedReject(model, clsVariables.Reject, UserName, employeeCode); emailModel = new EmailViewModel() { MailType = clsVariables.ApprovalMailType, EmailTo = empEmailId, EmailFrom = UserId, CcEmail = "", Subject = clsVariables.SpotterMailSubject, body = html, UserId = UserId, }; } else { if (currentTier == maxTier) { string html = GenerateHtmlForEmailApprovedReject(model, clsVariables.Approved, UserName, employeeCode); emailModel = new EmailViewModel() { MailType = clsVariables.ApprovalMailType, EmailTo = empEmailId, EmailFrom = UserId, CcEmail = "", Subject = String.Format("Spotter Fee Approved {0}", model.SpotterSummary.SpotterRefNumber), body = html, UserId = UserId, }; } else { string html = GenerateHtmlForEmailSpotterApproval(model, "", UserName, employeeCode); emailModel = new EmailViewModel() { MailType = clsVariables.ApprovalMailType, EmailTo = empEmailId, EmailFrom = UserId, CcEmail = "", Subject = clsVariables.SpotterMailSubject, body = html, UserId = UserId, }; } } var responseTask = client.PostAsJsonAsync <EmailViewModel>("Email", emailModel); responseTask.Wait(); var result = responseTask.Result; if (result.IsSuccessStatusCode) { return(true); } else { return(false); } } }
public ResultViewModel FnApproveRejectEvent(ApprovalSpotterDetails model, string UserName) { string userMail = ""; int maxTier = 0, currentTier = 0; glog.Debug("InsertSpotterData: Entry"); var result = new ResultViewModel(); using (var db = new MainDbContext()) { using (var transaction = db.Database.BeginTransaction()) { try { userMail = db.Sys_Users.FirstOrDefault(x => x.Name == UserName).Email; bool IsSave = false; if (!string.IsNullOrEmpty(model.RejectReason)) { var RejectedAmount = model.OutstandingFee.Select(s => s.SpotterAmt).Sum(); var ApprovedAmount = model.SpotterSummary.Amount - RejectedAmount; if (FnUpdateCurrentApproval(db, model.IsAllCheck, model.ApprovalProcessID, model.RejectReason, userMail)) { if (FnUpdateSpotterMaster(db, model.IsAllCheck, model.SpotterSummary.SpotterRefNumber, ApprovedAmount, model.RejectReason, userMail)) { if (FnUpdateSpotterDetail(db, model.OutstandingFee, model.ApprovalProcessDetailID, model.RejectReason, userMail)) { if (FnUpdateContractSpotter(db, model.OutstandingFee, model.ApprovalProcessDetailID, model.RejectReason, userMail)) { IsSave = true; } else { IsSave = false; } } else { IsSave = false; } } else { IsSave = false; } } else { IsSave = false; } } else { maxTier = db.Sys_Approval.Where(w => w.ApprovalHeaderID == model.ApprovalHeaderID).Select(s => s.Tier).FirstOrDefault(); currentTier = db.Approval_ProcessDetail.Where(w => w.ApprovalProcessID == model.ApprovalProcessID).Select(s => s.Tier).Max(); var ApprovedAmount = model.OutstandingFee.Select(s => s.SpotterAmt).Sum(); if (currentTier == maxTier) { if (FnUpdateCurrentApproval(db, model.IsAllCheck, model.ApprovalProcessID, model.RejectReason, userMail)) { if (FnUpdateSpotterMaster(db, model.IsAllCheck, model.SpotterSummary.SpotterRefNumber, ApprovedAmount, model.RejectReason, userMail)) { if (FnUpdateSpotterDetail(db, model.OutstandingFee, model.ApprovalProcessDetailID, model.RejectReason, userMail)) { if (FnUpdateContractSpotter(db, model.OutstandingFee, model.ApprovalProcessDetailID, model.RejectReason, userMail)) { IsSave = true; } else { IsSave = false; } } else { IsSave = false; } } else { IsSave = false; } } else { IsSave = false; } } else { var sysApproval = db.Sys_Approval.Where(w => w.ApprovalHeaderID == model.ApprovalHeaderID).FirstOrDefault(); ApprovalProcess approvalProcessModel = new ApprovalProcess() { ApprovalDetailID = model.ApprovalProcessID, CurrentTier = currentTier, ApprovalHeaderID = model.ApprovalHeaderID, ModuleID = sysApproval.ModuleID, ApprovalName = sysApproval.ApprovalName, RefNo = model.SpotterSummary.SpotterRefNumber, UserName = userMail }; result = FnStartNewProcessTier(approvalProcessModel); if (result.Status == 1) { IsSave = true; } else { IsSave = false; } } } if (IsSave) { transaction.Commit(); string EmpEmailId = string.Empty; var employeeCode = ""; if (currentTier == maxTier) { employeeCode = db.Sys_Users.FirstOrDefault(x => x.Name == UserName).EmployeeCode; EmpEmailId = GetEmailByEmpCode(employeeCode); } else { employeeCode = db.Approval_ProcessDetail.FirstOrDefault(x => x.ApprovalProcessID == model.ApprovalProcessID).AssignedTo; EmpEmailId = GetEmailByEmpCode(employeeCode); } var isEmailSend = SendEmailNotificationAPI(model, EmpEmailId, UserName, userMail, currentTier, maxTier, employeeCode); result.Status = 1; if (string.IsNullOrEmpty(model.RejectReason)) { result.Message = "Data has been approved!"; } else { result.Message = "Data has been rejected!"; } } else { transaction.Rollback(); result.Status = 0; result.Message = "An error occurred when updating approval process"; } } catch (Exception ex) { glog.Error("FnApproveRejectEvent Exception: " + ex.Message + ex.InnerException); result.Status = 0; result.Message = "Please contact MIS, error: " + ex.Message; transaction.Rollback(); } finally { transaction.Dispose(); } glog.Debug("FnApproveRejectEvent: Exit"); return(result); } } }