Beispiel #1
0
        public async Task <bool> SendEmail(EmailParamVM message)
        {
            _logger.LogInformation("EmailSenderService.SendEmail - Service starts.");

            try {
                ComposeEmail(message);

                await _emailPusher.SendMailAsync(_message);

                _message = new MailMessage();
            } catch (Exception ex) {
                _logger.LogError("EmailSenderService.SendEmail - Error: " + ex);
                return(false);
            }

            return(true);
        }
Beispiel #2
0
        private void ComposeEmail(EmailParamVM message)
        {
            _message.From = new MailAddress(
                string.IsNullOrEmpty(message.SenderAddress) ? HidroConstants.MAIL_SENDER_ADDRESS : message.SenderAddress,
                string.IsNullOrEmpty(message.SenderName) ? HidroConstants.MAIL_SENDER_NAME : message.SenderName
                );

            _message.To.Add(new MailAddress(message.ReceiverAddress, message.ReceiverName));

            _message.Subject = message.Subject;

            _message.IsBodyHtml = true;
            _message.Body       = message.Body;

            if (message.Attachments != null)
            {
                foreach (var attachment in message.Attachments)
                {
                    _message.Attachments.Add(new Attachment(attachment));
                }
            }
        }
        public async Task <JsonResult> UpdateAccountIdentity(AccountIdentityVM identity)
        {
            _logger.LogInformation("AccountController.UpdateAccountIdentity - hidrogenianId=" + identity.Id);

            var validation = await _reCaptchaService.IsHumanRegistration(identity.CaptchaToken);

            if (!validation.Result)
            {
                return(new JsonResult(validation));
            }

            var verification = VerifyIdentityData(identity);

            if (verification.Count != 0)
            {
                var messages = identity.GenerateErrorMessages(verification);
                return(new JsonResult(new { Result = RESULTS.FAILED, Message = messages }));
            }

            var(key, value) = await _accountService.UpdateIdentityForHidrogenian(identity);

            if (!key)
            {
                return(new JsonResult(new { Result = RESULTS.FAILED, Message = "Account not found with the given data. Please try again." }));
            }

            if (value == null)
            {
                return(new JsonResult(new { Result = RESULTS.FAILED, Message = "An error occurred while attempting to update your account. Please try again." }));
            }

            var oldIdentity = value.Value.Key;
            var newIdentity = value.Value.Value;
            var hidrogenian = new HidrogenianVM {
                Id    = newIdentity.Id,
                Token = _authService.GenerateRandomToken()
            };

            if (!newIdentity.EmailConfirmed)
            {
                if (await _userService.SetAccountConfirmationToken(hidrogenian))
                {
                    var profile = await _profileService.GetPublicProfileFor(newIdentity.Id);

                    string emailTemplate;
                    using (var reader = File.OpenText(PROJECT_FOLDER + @"HtmlTemplates/EmailChanged.html")) {
                        emailTemplate = await reader.ReadToEndAsync();
                    };

                    emailTemplate = emailTemplate.Replace("[HidrogenianName]", profile.FullName);
                    emailTemplate = emailTemplate.Replace("[HidrogenianEmail]", newIdentity.Email);
                    emailTemplate = emailTemplate.Replace("[CONFIRM-TOKEN]", hidrogenian.Token);

                    var emailChangedEmail = new EmailParamVM {
                        ReceiverName    = profile.FullName,
                        ReceiverAddress = hidrogenian.Email,
                        Subject         = "Hidrogen - Confirm your email",
                        Body            = emailTemplate
                    };

                    if (await _emailService.SendEmail(emailChangedEmail))
                    {
                        await _accountService.ReverseIdentityChanges(oldIdentity);

                        return(new JsonResult(new { Result = RESULTS.INTERRUPTED, Message = "The confirmation email was failed to send. Your changes was not applied. Please try again." }));
                    }
                }
            }

            if (!string.IsNullOrEmpty(newIdentity.PhoneNumber) && !newIdentity.PhoneConfirmed)
            {
                //Send SMS to confirm phone number
            }

            return(new JsonResult(new { Result = RESULTS.SUCCESS, Message = newIdentity }));
        }