예제 #1
0
        // This can be used in future
        // private MailAddressCollection RemoveDuplicateAddresses(MailAddressCollection mailAddressCollection)
        // {
        //     throw new NotImplementedException();
        // }

        /// <summary>
        /// Method to get mail template based on mail type to be sent.
        /// Also it will fetch ticket details to be send with mail
        /// </summary>
        /// <param name="mail">Mail object- mail type and Ticket details</param>
        /// <param name="subject">get and send back mail subject from template</param>
        /// <returns>MAil body</returns>
        private string GetMailBody(dynamic mail, out string subject)
        {
            try
            {
                // Mail template
                string template = null;

                // Ticket data to be assigned in template
                List <string> data = new List <string>();

                // Type of mail to be sent
                MailMessageType mailType = (MailMessageType)mail.MailType;

                // Take template based on mail type
                switch (mailType)
                {
                // When Changes request is initiated
                case MailMessageType.RequesterRaisedRequest:
                    template = GetDataIntoTemplate(config.RequesterRaisedRequest, mail, ref data);
                    break;

                // When Changes request Failed On TestMachine
                case MailMessageType.RequestFailedOnTestMachine:
                    data.Add("REQUEST VERIFICATION FAILED ON SANDBOX");
                    template = GetDataIntoTemplate(config.RequestFailedOnTestMachine, mail, ref data);
                    break;

                // When Changes request Failed On Production
                case MailMessageType.RequestFailedOnProdMachine:
                    data.Add("REQUEST VERIFICATION FAILED ON PRODUCTION");
                    template = GetDataIntoTemplate(config.RequestFailedOnProdMachine, mail, ref data);
                    break;

                // When Changes request RollBack On TestMachine
                case MailMessageType.RequestRollbackOnSandBox:
                    data.Add("REQUEST ROLLBACK ON SANDBOX");
                    template = GetDataIntoTemplate(config.RequestRollbackOnSandBox, mail, ref data);
                    break;

                // When Changes request Rollback On Production
                case MailMessageType.RequestRollbackOnProduction:
                    data.Add("REQUEST ROLLBACK ON PRODUCTION");
                    template = GetDataIntoTemplate(config.RequestRollbackOnProduction, mail, ref data);
                    break;

                // When Changes request is sent for approval
                case MailMessageType.RequestSentForApproval:
                    data.Add("#FF8C00");
                    data.Add("AWAITING APPROVAL");
                    template = GetDataIntoTemplate(config.RequestSentForApproval, mail, ref data);
                    break;

                // When Changes request is approved by any approver
                case MailMessageType.RequestApproved:
                    data.Add("#107C10");
                    data.Add("REQUEST APPROVED");
                    template = GetDataIntoTemplate(config.RequestApproved, mail, ref data);
                    break;

                // When change request is Rejected
                case MailMessageType.RequestRejected:
                    data.Add("REQUEST REJECTED");
                    template = GetDataIntoTemplate(config.RequestRejected, mail, ref data);
                    break;

                // When change request is Delegated
                case MailMessageType.RequestDelegated:
                    data.Add("REQUEST DELEGATED FOR TICKET");
                    template = GetDataIntoTemplate(config.RequestDelegated, mail, ref data);
                    break;

                // When change request is SignOff
                case MailMessageType.SignOff:
                    data.Add("#004B1C");
                    data.Add("REQUEST SIGNED-OFF");
                    template = GetDataIntoTemplate(config.SignOff, mail, ref data);
                    break;

                // When Changes request is production changes are done through scheduler
                case MailMessageType.ProductionChangesDoneThroughScheduler:
                    data.Add("PRODUCTION CHANGES DONE THROUGH SCHEDULER");
                    template = GetDataIntoTemplate(config.ProductionChangesDoneThroughScheduler, mail, ref data);
                    break;

                // When Changes request is scheduled for production
                case MailMessageType.RequestScheduledForProduction:
                    data.Add("REQUEST SCHEDULED FOR PRODUCTION CHANGES");
                    template = GetDataIntoTemplate(config.RequestScheduledForProduction, mail, ref data);
                    break;

                // When User is Edited
                case MailMessageType.UserEdited:
                    data.Add("USER INFORMATION EDITED SUCCESSFULLY");

                    // User requested for Registration on EMIE SSP
                    template = GetUserDataIntoTemplate(config.UserEdited, mail, ref data);
                    break;

                // When user registration is done
                case MailMessageType.UserRegistered:
                    data.Add("USER REGISTERATION");
                    template = GetUserDataIntoTemplate(config.UserRegistered, mail, ref data);
                    break;

                // When user requested registration
                case MailMessageType.RegistrationRequested:
                    data.Add("USER REGISTRATION");
                    template = GetUserDataIntoTemplate(config.UserRegistrationRequested, mail, ref data);
                    break;

                // When User is Activated
                case MailMessageType.UserActivated:
                    data.Add("USER ACTIVATION");
                    template = GetUserDataIntoTemplate(config.UserActivated, mail, ref data);
                    break;

                // When User is Deleted
                case MailMessageType.UserDeactivated:
                    data.Add("USER DEACTIVATION");
                    template = GetUserDataIntoTemplate(config.UserDeactivated, mail, ref data);
                    break;

                // When New User Added
                case MailMessageType.UserAdded:
                    data.Add("USER ACTIVATION");
                    template = GetUserDataIntoTemplate(config.UserAdded, mail, ref data);
                    break;

                // When Reminder for changes request approval is sent to approvers
                case MailMessageType.SendReminder:
                    data.Add("#FF8C00");
                    data.Add("AWAITING APPROVAL");
                    template = GetDataIntoTemplate(config.SendReminder, mail, ref data);
                    break;

                // When Configuration Settings Edited is done
                case MailMessageType.ConfigurationSettingsEdited:
                    template = GetConfigurationDataIntoTemplate(config.ConfigurationSettingsEdited, mail, ref data);
                    break;

                case MailMessageType.ContactSupportTeam:
                    data.Add("Ticket Information");
                    template = GetDataIntoTemplate(config.ContactSupportTeam, mail, ref data);
                    break;

                // If none of above mail type found
                default:
                    throw new InvalidEnumArgumentException(Constants.MailType);
                }

                // Get mail subject
                subject = mailType.GetDescription();

                // Return mail body
                return(template);
            }
            catch
            {
                throw;
            }
        }