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!")); } }
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!")); } }