private ApiResult InformRequestorOfCrOutCome(string changeRequestId) { ApiResult apiResult = new ApiResult(); try { ChangeRequest cr = ChangeRequest.QueryWithStoredProc("GetChangeRequestById", changeRequestId)[0]; ApproverForChangeRequest[] pending = ApproverForChangeRequest.QueryWithStoredProc("CheckForCRRejection", changeRequestId); //Someone has rejected the Change Rejected if (pending.Length != 0) { cr.ApprovalStatus = pending[0].Decision; cr.ApprovalReason = $"CR NOT APPROVED BY APPROVER {pending[0].ApproverId}. Reason: {pending[0].Reason}"; cr.Save(); apiResult = NotificationsHandler.SendCrRejectedEmail(cr, cr.ApprovalReason); return(apiResult); } cr.ApprovalStatus = "APPROVED"; cr.ApprovalReason = "APPROVED BY EVERY APPROVER"; cr.Save(); apiResult = NotificationsHandler.SendCrApprovedEmail(cr); return(apiResult); } catch (Exception ex) { apiResult.StatusCode = Globals.FAILURE_STATUS_CODE; apiResult.StatusDesc = "EXCEPTION: " + ex.Message; } return(apiResult); }
public static ApiResult SendApproveCrEmail(ApproverForChangeRequest link) { ApiResult result = new ApiResult(); try { SystemUser approver = SystemUser.QueryWithStoredProc("GetSystemUserById", link.ApproverId).FirstOrDefault(); if (approver == null) { result.StatusCode = Globals.FAILURE_STATUS_CODE; result.StatusDesc = $"USER WITH THE APPROVER ID {link.ApproverId} WAS NOT FOUND"; return(result); } ChangeRequest changeRequest = ChangeRequest.QueryWithStoredProc("GetChangeRequestById", link.ChangeRequestId).FirstOrDefault(); if (changeRequest == null) { result.StatusCode = Globals.FAILURE_STATUS_CODE; result.StatusDesc = $"CHANGE REQUEST WITH THE ID {link.ChangeRequestId} WAS NOT FOUND"; return(result); } string filePath = SystemSetting.QueryWithStoredProc("GetSystemSettingById", Globals.FILE_PATH_TO_APPROVE_CR_EMAIL_TEMPLATE).FirstOrDefault()?.SettingValue; if (filePath == null) { result.StatusCode = Globals.FAILURE_STATUS_CODE; result.StatusDesc = $"{nameof(Globals.FILE_PATH_TO_APPROVE_CR_EMAIL_TEMPLATE)} NOT FOUND"; return(result); } string ApproveURL = SystemSetting.QueryWithStoredProc("GetSystemSettingById", Globals.APPROVE_CR_URL).FirstOrDefault()?.SettingValue; if (ApproveURL == null) { result.StatusCode = Globals.FAILURE_STATUS_CODE; result.StatusDesc = $"{nameof(Globals.APPROVE_CR_URL)} NOT FOUND"; return(result); } string msg = File.ReadAllText(filePath); string dateFormat = "yyyy-MM-dd HH:mm"; msg = msg.Replace("[APPROVER_NAME]", approver.Username); msg = msg.Replace("[TITLE]", changeRequest.Title); msg = msg.Replace("[CURRENT_PROBLEM]", changeRequest.Problem); msg = msg.Replace("[PROPOSED_SOLUTION]", changeRequest.Solution); msg = msg.Replace("[CHANGE_CATEGORY]", changeRequest.ChangeCategoryId); msg = msg.Replace("[JUSTIFICATION]", changeRequest.Justification); msg = msg.Replace("[IMPACT]", changeRequest.ImpactOfNotImplementing); msg = msg.Replace("[REQUESTOR_NAME]", changeRequest.RequesterName); msg = msg.Replace("[REQUESTOR_EMAIL]", changeRequest.RequesterEmail); msg = msg.Replace("[REQUESTOR_PHONE]", changeRequest.RequesterPhone); msg = msg.Replace("[REQUESTOR_COMPANY]", changeRequest.RequesterCompany); msg = msg.Replace("[IMPLEMENTER_NAME]", changeRequest.ImplementerName); msg = msg.Replace("[IMPLEMENTER_EMAIL]", changeRequest.ImplementerEmail); msg = msg.Replace("[IMPLEMENTER_PHONE]", changeRequest.ImplementerPhone); msg = msg.Replace("[START_DATE]", changeRequest.ChangeStartDateTime.ToString(dateFormat)); msg = msg.Replace("[END_DATE]", changeRequest.ChangeEndDateTime.ToString(dateFormat)); msg = msg.Replace("[APPROVE_URL]", ApproveURL); msg = msg.Replace("[USER_ID]", link.ApproverId); msg = msg.Replace("[CR_ID]", changeRequest.ChangeRequestId); MailMessage mail = new MailMessage(Globals.FROM_EMAIL, approver.Email); SmtpClient client = new SmtpClient(); client.Port = 587; client.Host = Globals.SMPTP_SERVER; client.EnableSsl = true; client.Timeout = 10000; client.DeliveryMethod = SmtpDeliveryMethod.Network; client.UseDefaultCredentials = false; client.Credentials = new System.Net.NetworkCredential(Globals.SMTP_USERNAME, Globals.SMTP_PASSWORD); mail.Subject = Globals.MAIL_SUBJECT_APPROVE_CR_EMAIL; mail.Body = msg; mail.IsBodyHtml = true; client.Send(mail); result.StatusCode = Globals.SUCCESS_STATUS_CODE; result.StatusDesc = Globals.SUCCESS_STATUS_TEXT; } catch (Exception ex) { result.StatusCode = Globals.FAILURE_STATUS_CODE; result.StatusDesc = "EXCEPTION: " + ex.Message; return(result); } return(result); }