Esempio n. 1
0
        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));
            }
        }
Esempio n. 2
0
        /// <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);
        }