示例#1
0
        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);
        }
示例#2
0
        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);
        }