public async Task <IActionResult> Post([FromBody] HasuraEvent model)
        {
            _logger.LogInformation($"Call Started by {model.Event?.Session?.UserId ?? "not-provided"} having role {model.Event?.Session?.Role ?? "not-provided"}");
            var validation = _validator.Validate(model);

            if (!validation.IsValid)
            {
                _logger.LogWarning("request validation failed!");
                return(BadRequest(validation.Errors.Select(e => e.ErrorMessage)
                                  ));
            }

            try {
                var user    = model.Event.Data.NewValue;
                var message =
                    $"Thank you {user.FirstName} {user.LastName} for completing your registration with Keto App";

                var notification = new Notification {
                    CreatedOn = Instant.FromDateTimeOffset(DateTimeOffset.Now),
                    Message   = message,
                    UserId    = user.Id
                };

                await _repository.Add(notification);

                var result = await _unitOfWork.SaveAsync().ConfigureAwait(false);

                if (result.Succeeded)
                {
                    return(Ok());
                }
                _logger.LogWarning(result.Errors.First().ErrorMessages.First().Value);
                return(Problem(result.Errors.First().ErrorMessages.First().Value));
            }
            catch (Exception e) {
                _logger.LogError(new EventId(1001, "Exception"), e, "Unable to Save Data!");
                return(Problem("Unable to Send Email!, An Exception Occur!"));
            }
        }
Пример #2
0
        public async Task <IActionResult> Post([FromBody] HasuraEvent model)
        {
            _logger.LogInformation($"Call Started by {model.Event?.Session?.UserId ?? "not-provided"} having role {model.Event?.Session?.Role ?? "not-provided"}");
            var validation = _validator.Validate(model);

            if (!validation.IsValid)
            {
                _logger.LogWarning("request validation failed!");
                return(BadRequest(validation.Errors.Select(e => e.ErrorMessage)
                                  ));
            }

            try
            {
                var user = await _manager.FindByNameAsync(model.Event.Data.NewValue.UserName).ConfigureAwait(false);

                var token = await _manager.GenerateEmailConfirmationTokenAsync(user);

                var message =
                    $"Dear {user.FirstName} {user.LastName},<br>to complete registration with Keto App, please use the token below <br> <span><strong>{token}</strong></span><br> Regards,<br>Keto App";

                var msg = MailHelper.CreateSingleEmail(new EmailAddress(_configuration["FROM_EMAIL"], "Keto App"),
                                                       new EmailAddress(user.Email, model.Event.Data.NewValue.Name),
                                                       "Thank you for registering with Keto App", "", message);
                var response = await _sendGridClient.SendEmailAsync(msg).ConfigureAwait(false);

                if (response.StatusCode != HttpStatusCode.Accepted && response.StatusCode != HttpStatusCode.OK)
                {
                    _logger.LogWarning($"Unable to send Email: {response.StatusCode}");
                }

                return(StatusCode((int)response.StatusCode));
            }
            catch (Exception e)
            {
                _logger.LogError(new EventId(1001, "Exception"), e, "Unable to Save Data!");
                return(Problem("Unable to Send Email!, An Exception Occur!"));
            }
        }