예제 #1
0
        private async Task SendInProcessApprovalMail(string email, string username, string comment)
        {
            var name = email.Split('@')[0];
            var sm   = new SendEmailCommand();

            sm.Subject = $"{comment} awaiting approval";

            sm.Content = $"Hello {name} <br/>" +
                         $"You have a pending task on {comment} to be approved";

            sm.ToAddresses.Add(new EmailAddressCommand {
                Address = email, Name = name
            });
            sm.SaveIt = true;
            var mailSent = await _email.BuildAndSaveEmail(sm);

            EmailMessage em = new EmailMessage
            {
                Subject       = sm.Subject,
                Content       = sm.Content,
                FromAddresses = mailSent.FromAddresses,
                ToAddresses   = _mapper.Map <List <EmailAddress> >(sm.ToAddresses),
            };

            em.SendIt = true;
            em.Module = (int)Modules.CENTRAL;
            await _email.Send(em);
        }
        private async Task SendStaffAccountDetailMail(string email, string username, string name, string action)
        {
            var sm = new SendEmailCommand();

            sm.Subject = $"Account details {action}";
            sm.Content = $"Dear { name } <br/>" +
                         $"Below is your account login details <br/> " +
                         $"<b>Username : {username} <br/>" +
                         $"<b>Password : Password@1 <br/>" +
                         $"Please be sure to change your password on first login";
            sm.ToAddresses.Add(new EmailAddressCommand {
                Address = email, Name = name
            });
            var mailSent = await _email.BuildAndSaveEmail(sm);


            EmailMessage em = new EmailMessage {
                Subject       = sm.Subject,
                Content       = sm.Content,
                FromAddresses = mailSent.FromAddresses,
                ToAddresses   = _mapper.Map <List <EmailAddress> >(sm.ToAddresses),
            };

            sm.SendIt = true;
            em.Module = (int)Modules.CENTRAL;
            await _email.Send(em);
        }
        public async Task <SendEmailRespObj> Handle(SendEmailToSpicificOfficersCommand request, CancellationToken cancellationToken)
        {
            var response = new SendEmailRespObj {
                ResponseStatus = (int)EmailStatus.Failed, Status = new APIResponseStatus {
                    IsSuccessful = true, Message = new APIResponseMessage()
                }
            };

            try
            {
                var userId = _accessor.HttpContext.User?.FindFirst(f => f.Type == "userId")?.Value;
                var user   = await _userManager.FindByIdAsync(userId);

                if (string.IsNullOrEmpty(request.Content))
                {
                    response.Status.Message.FriendlyMessage = "No Message Specified";
                    return(response);
                }
                _logger.Information(request.ActivitIds.ToString());

                var activities = _dataContext.cor_userroleactivity.Where(q => request.ActivitIds.Contains(q.ActivityId)).ToList();
                var userRoles  = _roleManager.Roles.Where(w => activities.Select(q => q.RoleId).Contains(w.Id)).ToList();

                //var identityRoles = (from a in _dataContext.UserRoles
                //		   join b in userRoles on a.RoleId equals b.Id
                //		   ).ToList();

                var identityRoles = _dataContext.UserRoles.Where(q => userRoles.Select(w => w.Id).Contains(q.RoleId)).ToList();

                var usersBasedOnIdentityRoles = _userManager.Users.Where(q => identityRoles.Select(e => e.UserId).Contains(q.Id)).ToList();
                SendEmailCommand req          = _mapper.Map <SendEmailCommand>(request);

                if (usersBasedOnIdentityRoles.Count() == 0)
                {
                    response.Status.Message.FriendlyMessage = "No Receiver Found";
                    return(response);
                }
                req.ToAddresses = new List <EmailAddressCommand>();

                foreach (var staff in usersBasedOnIdentityRoles)
                {
                    var to = new EmailAddressCommand
                    {
                        Address = staff.Email,
                        Name    = staff.UserName,
                    };
                    req.ToAddresses.Add(to);
                }

                var em = await _email.BuildAndSaveEmail(req);

                em.SendIt = request.SendIt;


                if (request.Template == (int)EmailTemplate.Default)
                {
                    var pathToFile = _env.WebRootPath + Path.DirectorySeparatorChar.ToString()
                                     + "Templates" + Path.DirectorySeparatorChar.ToString() + "EmailTemplate"
                                     + Path.DirectorySeparatorChar.ToString() + "default.html";

                    var builder = new BodyBuilder();
                    using (StreamReader SourceReader = File.OpenText(pathToFile))
                    {
                        builder.HtmlBody = SourceReader.ReadToEnd();
                    }
                    em.Content = string.Format(builder.HtmlBody, request.Content.Replace("{", "").Replace("}", ""), "flave");
                }

                if (request.Template == (int)EmailTemplate.LoginDetails)
                {
                    var pathToFile = _env.WebRootPath + Path.DirectorySeparatorChar.ToString()
                                     + "Templates" + Path.DirectorySeparatorChar.ToString() + "EmailTemplate"
                                     + Path.DirectorySeparatorChar.ToString() + "loginDetails.html";

                    var builder = new BodyBuilder();
                    using (StreamReader SourceReader = File.OpenText(pathToFile))
                    {
                        builder.HtmlBody = SourceReader.ReadToEnd();
                    }
                    em.Content = string.Format(builder.HtmlBody, request.Content.Replace("{", "").Replace("}", ""), "flave");
                }
                em.Module = (int)Modules.CENTRAL;
                if (request.SendIt)
                {
                    await _email.Send(em);
                }

                response.ResponseStatus = (int)EmailStatus.Sent;
                response.Status.Message.FriendlyMessage = "Email sent";
                return(response);
            }
            catch (Exception ex)
            {
                var errorCode = ErrorID.Generate(4);
                _logger.Error($"ErrorID : {errorCode} Ex : {ex?.Message ?? ex?.InnerException?.Message} ErrorStack : {ex?.StackTrace}");
                response.Status.IsSuccessful             = false;
                response.Status.Message.FriendlyMessage  = "Error occured!! Unable to process request";
                response.Status.Message.MessageId        = errorCode;
                response.Status.Message.TechnicalMessage = $"ErrorID : {errorCode} Ex : {ex?.Message ?? ex?.InnerException?.Message} ErrorStack : {ex?.StackTrace}";
                return(response);
            }
        }
        public async Task <SendEmailRespObj> Handle(SendEmailCommand request, CancellationToken cancellationToken)
        {
            var response = new SendEmailRespObj {
                ResponseStatus = (int)EmailStatus.Failed, Status = new APIResponseStatus {
                    IsSuccessful = true, Message = new APIResponseMessage()
                }
            };

            try
            {
                if (string.IsNullOrEmpty(request.Content))
                {
                    response.Status.Message.FriendlyMessage = "No Message Specified";
                    return(response);
                }
                if (!request.ToAddresses.Any())
                {
                    response.Status.Message.FriendlyMessage = "No Receiver Specified";
                    return(response);
                }
                foreach (var recr in request.ToAddresses)
                {
                    var useraccount = await _userManager.FindByEmailAsync(recr.Address);

                    if (useraccount != null)
                    {
                        request.UserIds = useraccount.Id;
                    }
                }

                var em = await _email.BuildAndSaveEmail(request);

                em.SendIt = request.SendIt;

                if (request.Template == (int)EmailTemplate.Default)
                {
                    var pathToFile = _env.WebRootPath + Path.DirectorySeparatorChar.ToString()
                                     + "Templates" + Path.DirectorySeparatorChar.ToString() + "EmailTemplate"
                                     + Path.DirectorySeparatorChar.ToString() + "default.html";

                    var builder = new BodyBuilder();
                    using (StreamReader SourceReader = File.OpenText(pathToFile))
                    {
                        builder.HtmlBody = SourceReader.ReadToEnd();
                    }
                    em.Content = string.Format(builder.HtmlBody, request.Content.Replace("{", "").Replace("}", ""), "PPPPPP");
                }

                if (request.Template == (int)EmailTemplate.LoginDetails)
                {
                    var pathToFile = _env.WebRootPath + Path.DirectorySeparatorChar.ToString()
                                     + "Templates" + Path.DirectorySeparatorChar.ToString() + "EmailTemplate"
                                     + Path.DirectorySeparatorChar.ToString() + "loginDetails.html";

                    var builder = new BodyBuilder();
                    using (StreamReader SourceReader = File.OpenText(pathToFile))
                    {
                        builder.HtmlBody = SourceReader.ReadToEnd();
                    }
                    em.Content = string.Format(builder.HtmlBody, request.Content.Replace("{", "").Replace("}", ""), "PPPPPP");
                }

                if (request.Template == (int)EmailTemplate.OTP)
                {
                    var pathToFile = _env.WebRootPath + Path.DirectorySeparatorChar.ToString()
                                     + "Templates" + Path.DirectorySeparatorChar.ToString() + "EmailTemplate"
                                     + Path.DirectorySeparatorChar.ToString() + "otp.html";

                    var builder = new BodyBuilder();
                    using (StreamReader SourceReader = File.OpenText(pathToFile))
                    {
                        builder.HtmlBody = SourceReader.ReadToEnd();
                    }
                    em.Content = string.Format(builder.HtmlBody, request.Content.Replace("{", "").Replace("}", ""), "PPPPPP");
                }

                if (request.Template == (int)EmailTemplate.Login)
                {
                    var pathToFile = _env.WebRootPath + Path.DirectorySeparatorChar.ToString()
                                     + "Templates" + Path.DirectorySeparatorChar.ToString() + "EmailTemplate"
                                     + Path.DirectorySeparatorChar.ToString() + "login.html";

                    var builder = new BodyBuilder();
                    using (StreamReader SourceReader = File.OpenText(pathToFile))
                    {
                        builder.HtmlBody = SourceReader.ReadToEnd();
                    }
                    em.Content = string.Format(builder.HtmlBody, request.Content.Replace("{", "").Replace("}", ""), "PPPPPP");
                }

                if (request.Template == (int)EmailTemplate.Advert)
                {
                    var pathToFile = _env.WebRootPath + Path.DirectorySeparatorChar.ToString()
                                     + "Templates" + Path.DirectorySeparatorChar.ToString() + "EmailTemplate"
                                     + Path.DirectorySeparatorChar.ToString() + "advert.html";

                    var builder = new BodyBuilder();
                    using (StreamReader SourceReader = File.OpenText(pathToFile))
                    {
                        builder.HtmlBody = SourceReader.ReadToEnd();
                    }
                    em.Content = string.Format(builder.HtmlBody, request.Content.Replace("{", "").Replace("}", ""), "PPPPPP");
                }

                if (request.SendIt)
                {
                    await _email.Send(em);
                }

                response.ResponseStatus = (int)EmailStatus.Sent;
                response.Status.Message.FriendlyMessage = "Email sent";
                return(response);
            }
            catch (Exception ex)
            {
                var errorCode = ErrorID.Generate(4);
                _logger.Error($"ErrorID : {errorCode} Ex : {ex?.Message ?? ex?.InnerException?.Message} ErrorStack : {ex?.StackTrace}");
                response.Status.IsSuccessful             = false;
                response.Status.Message.FriendlyMessage  = "Error occured!! Unable to process request";
                response.Status.Message.MessageId        = errorCode;
                response.Status.Message.TechnicalMessage = $"ErrorID : {errorCode} Ex : {ex?.Message ?? ex?.InnerException?.Message} ErrorStack : {ex?.StackTrace}";
                return(response);
            }
        }