public async Task <ActionResult <User> > Register([FromBody] User user) { try { if (user == null) { return(BadRequest("user object is null".ToBadRequest())); } _log.Information("User trying to sign up, Body: {@body} on {date}", user.ToMessage(), DateTime.Now); if (!ModelState.IsValid) { return(BadRequest(ModelState.ToBadRequest(400))); } var userWithSameEMail = await _context.Users.FirstOrDefaultAsync(u => u.Email == user.Email); if (userWithSameEMail != null) { return(BadRequest("Email already taken".ToBadRequest())); } user.SetPasswordhHash(); _context.Add(user); await _context.SaveChangesAsync(); _log.Information("User created : {@User} on {date} ", user.ToMessage(), DateTime.Now); // Envoi d'un mail bool isEmailSend = await MailerSendGrid.Send(user.Email); if (isEmailSend) { _log.Information("Email was sent for {User} on {date} ", user.Id, DateTime.Now); } else { _log.Information("Email was not sent for {User} on {date} ", user.Id, DateTime.Now); } return(Created("register", Format.ToMessage(user.ToMessage(), 201))); } catch (Exception e) { _log.Fatal(e.Message + "on Register User on {Date}", DateTime.Now); return(StatusCode(500)); } }
/// <summary> /// Envia un correo electronico al cliente y admins con detalles de la reservacion en PDF /// </summary> /// <param name="Request">Request instance from controller</param> /// <param name="controllerContext">Controller context</param> /// <returns></returns> public async Task <string> send_eventReport(HttpRequestBase Request, ControllerContext controllerContext) { string errorMessage = string.Empty; string strDate = this.fechaEventoInicial.ToString("dd 'de' MMMM 'del' yyyy"); //Subject string subject = $"Detalles de evento del {strDate} del cliente {this.cliente.nombreCompleto}"; //URL To see Details string detailsURL = Request.Url.Scheme + System.Uri.SchemeDelimiter + Request.Url.Host + (Request.Url.IsDefaultPort ? "" : ":" + Request.Url.Port); detailsURL += $"/Evento/Details/{this.eventoID}"; //Email Body string businessEmail = ConfigurationManager.AppSettings["BussinessName"]; string emailMessage = $"<h2>{ businessEmail }</h2>"; emailMessage += $"<h3>Detalles e historial de pagos.</h3>"; emailMessage += $"<span>En este correo se encuentran adjuntos los detalles asociados a su evento del dia { strDate }"; emailMessage += $" a nombre de {this.cliente.nombreCompleto }"; //Generate attachments for email List <Attachment> attachments = null; //Add link to see report if its a visit that cause Impact of Rent /*emailMessage += $" <span>See attached PDF or click this link to go to your Impact of Rent status report for year {year}:</span>"; * emailMessage += " <a href='" + detailsURL + "'>Download Impact of Rent Report Year .</a>";*/ //Is mailer enabled bool emailEnabled = true; Boolean.TryParse(ConfigurationManager.AppSettings["enableEmail"], out emailEnabled); //Just send Impact of Rent report for paid visits marked as that. if (controllerContext != null && emailEnabled) { //Generate the report to be send //var fileView = this.generateRotativaPDF_RentsByYearReport(year, Request); var fileView = new Rotativa.ViewAsPdf("ReporteDeEvento", "BlankLayout", this) { FileName = "Estado de Cuenta " + this + " - " + DateTime.Today.ToString("dd-MMMM-yy") + ".pdf" }; //Converts report to PDF file var fileBytes = fileView.BuildPdf(controllerContext); //Add PDF file to attachments Attachment attach = new Attachment() { Filename = fileView.FileName, Content = Convert.ToBase64String(fileBytes), Type = "application/pdf" }; attachments = new List <Attachment>() { attach }; } //Async sending of email //Compose destination var ownerAdress = new List <SendGrid.Helpers.Mail.EmailAddress> { new SendGrid.Helpers.Mail.EmailAddress(this.cliente.email, this.cliente.nombreCompleto) }; /*var contacts = owner.condosInfoContact; * foreach (var con in contacts) //For each related contact, an email is added to receipts * { * if (MailerSendGrid.IsValid(con.email)) * ownerAdress.Add(new SendGrid.Helpers.Mail.EmailAddress(con.email, con.ownerName)); * }*/ //Email is sent just to the admin errorMessage = await MailerSendGrid.sendEmailToMultipleRecipients(subject, emailMessage, ownerAdress, attachments); return(errorMessage); }