Promact/slack-erp-custom-integration-mvc

View on GitHub
Slack.Automation/Promact.Core.Repository/EmailServiceTemplateRepository/EmailServiceTemplateRepository.cs

Summary

Maintainability
B
6 hrs
Test Coverage
using Promact.Erp.DomainModel.Models;
using Promact.Erp.Util.Email_Templates;
using Promact.Erp.Util.StringConstants;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace Promact.Core.Repository.EmailServiceTemplateRepository
{
    public class EmailServiceTemplateRepository : IEmailServiceTemplateRepository
    {
        #region Private Variable
        private readonly IStringConstantRepository _stringConstant;
        #endregion

        #region Constructor
        public EmailServiceTemplateRepository(IStringConstantRepository stringConstant)
        {
            _stringConstant = stringConstant;
        }
        #endregion

        #region Public Methods
        /// <summary>
        /// Method to generate template body
        /// </summary>
        /// <param name="leaveRequest">LeaveRequest object</param>
        /// <returns>template emailBody as string</returns>
        public string EmailServiceTemplate(LeaveRequest leaveRequest)
        {

            var dateFormat = Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortDatePattern;
            LeaveApplication leaveTemplate = new LeaveApplication();
            // Assigning Value in template page
            leaveTemplate.Session = new Dictionary<string, object>
            {
                {_stringConstant.FromDate,leaveRequest.FromDate.ToString(dateFormat) },
                {_stringConstant.EndDate,leaveRequest.EndDate.Value.ToString(dateFormat) },
                {_stringConstant.Reason,leaveRequest.Reason },
                {_stringConstant.Type,leaveRequest.Type.ToString() },
                {_stringConstant.Status,leaveRequest.Status.ToString() },
                {_stringConstant.ReJoinDate,leaveRequest.RejoinDate.Value.ToString(dateFormat) },
                {_stringConstant.CreatedOn,leaveRequest.CreatedOn.ToString(dateFormat) },
            };
            leaveTemplate.Initialize();
            var emailBody = leaveTemplate.TransformText();
            return emailBody;
        }

        /// <summary>
        /// Method to generate template body
        /// </summary>
        /// <param name="leaveRequest">LeaveRequest object</param>
        /// <returns>template emailBody as string</returns>
        public string EmailServiceTemplateSickLeave(LeaveRequest leaveRequest)
        {
            var dateFormat = Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortDatePattern;
            SickLeaveApplication leaveTemplate = new SickLeaveApplication();
            // Assigning Value in template page
            leaveTemplate.Session = new Dictionary<string, object>
            {
                {_stringConstant.FromDate,leaveRequest.FromDate.ToString(dateFormat) },
                {_stringConstant.Reason,leaveRequest.Reason },
                {_stringConstant.Type,leaveRequest.Type.ToString() },
                {_stringConstant.Status,leaveRequest.Status.ToString() },
                {_stringConstant.CreatedOn,leaveRequest.CreatedOn.ToString(dateFormat) },
            };
            leaveTemplate.Initialize();
            var emailBody = leaveTemplate.TransformText();
            return emailBody;
        }

        /// <summary>
        /// Method to generate template body
        /// </summary>
        /// <param name="taskMail">List of TaskMail</param>
        /// <returns>template emailBody as string</returns>
        public string EmailServiceTemplateTaskMail(IEnumerable<TaskMailDetails> taskMail)
        {
            Erp.Util.Email_Templates.TaskMail leaveTemplate = new Erp.Util.Email_Templates.TaskMail();
            // Assigning Value in template page
            leaveTemplate.Session = new Dictionary<string, object>
            {
                {_stringConstant.TaskMailDescription, taskMail},
            };
            leaveTemplate.Initialize();
            var emailBody = leaveTemplate.TransformText();
            return emailBody;
        }

        /// <summary>
        /// Method to generate template body 
        /// </summary>
        /// <param name="leave">LeaveRequest object</param>
        /// <returns>template emailBody as string</returns>
        public string EmailServiceTemplateLeaveUpdate(LeaveRequest leave)
        {
            var dateFormat = Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortDatePattern;
            LeaveApproveAndRejected leaveTemplate = new LeaveApproveAndRejected();
            leaveTemplate.Session = new Dictionary<string, object>
            {
                {_stringConstant.FromDate,leave.FromDate.ToString(dateFormat) },
                {_stringConstant.EndDate,leave.EndDate.Value.ToString(dateFormat) },
                {_stringConstant.Reason,leave.Reason },
                {_stringConstant.Type,leave.Type.ToString() },
                {_stringConstant.Status,leave.Status.ToString() },
                {_stringConstant.ReJoinDate,leave.RejoinDate.Value.ToString(dateFormat) },
                {_stringConstant.CreatedOn,leave.CreatedOn.ToString(dateFormat) },
            };
            leaveTemplate.Initialize();
            var emailBody = leaveTemplate.TransformText();
            return emailBody;
        }
        #endregion
    }
}