private MailMessage GetMailMessage(SurveyCompletion surveyCompletion, string attachmentFileName)
        {
            var mailMessage = new MailMessage();

            mailMessage.To.Add(new MailAddress(surveyCompletion.Company.ComercialContact.Email));
            mailMessage.From    = new MailAddress(ConfigurationManager.AppSettings["SMTPUsername"]);
            mailMessage.Subject = "Evaluando Software - Proceso Incompleto";

            var continuelink = string.Format("{0}/Product/Evaluation/RegisterContinue?surveyCompletionId={1}&partialSaveKey={2}",
                                             ConfigurationManager.AppSettings["URL"],
                                             surveyCompletion.Id,
                                             surveyCompletion.PartialSaveKey);

            var unsuscribeLink = string.Format("{0}/JobUnsuscribe/RegisterContinueReminder?surveyCompletionId={1}&partialSaveKey={2}",
                                               ConfigurationManager.AppSettings["URL"],
                                               surveyCompletion.Id,
                                               surveyCompletion.PartialSaveKey);

            mailMessage.Body  = "<div>";
            mailMessage.Body += string.Format("<p>Le recordamos que el proceso de registro de su producto/servicio no ha sido finalizado. Para poder continuar con el proceso debe acceder al siguiente link: {0}</p>", continuelink);
            mailMessage.Body += "<p>Adjunto encontrar&aacute; un PDF con informaci&oacute;n registrada hasta el momento.</p>";
            mailMessage.Body += string.Format("<p style='font-size: 10px; color:gray'>Si no desea recibir mas este recordatorio, por favor ingrese al siguiente link {0}. Recuerde que solo a travez del link enviado en este correo podr&aacute; continuar con la carga de su producto/servicio sin perder los datos ya cargados.</p>", unsuscribeLink);
            mailMessage.Body += "</div>";

            mailMessage.IsBodyHtml = true;

            var attachment = new Attachment(attachmentFileName, MediaTypeNames.Application.Pdf);

            mailMessage.Attachments.Add(attachment);

            return(mailMessage);
        }
        private SurveyCompletion RegisterViewModelCompanyMap(App.Models.Oferta.RegisterViewModel model)
        {
            var surveyCompletion = new SurveyCompletion
            {
                Company =
                {
                    CompanyName            = model.CompanyName,
                    CompanyDescription     = model.CompanyDescription,
                    CompanyWebSite         = model.CompanyWebSite,
                    CompanyCountry         = model.CompanyCountry,
                    CompanyCity            = model.CompanyCity,
                    CompanyAddress         = model.CompanyAddress,
                    CompanyPostalCode      = model.CompanyPostalCode,
                    CompanyBranchOfficesIn = model.CompanyBranchOfficesIn,
                    CompanyFiscalStartDate = model.CompanyFiscalStartDate,
                    CompanyFiscalEndDate   = model.CompanyFiscalEndDate,
                    CompanyPeopleInCompany = model.CompanyPeopleInCompany,
                    ComercialContact       =
                    {
                        FullName = model.ComercialContactFullName,
                        Position = model.ComercialContactPosition,
                        Phone    = model.ComercialContactPhone,
                        Email    = model.ComercialContactEmail
                    },
                }//,

                //Product =
                //{
                //    Name = model.ProductName,
                //    Version = model.ProductVersion,
                //    Description = model.ProductDescription,
                //    WebSite = model.ProductWebSite,
                //    ProductContact =
                //    {
                //        FullName = model.ProductContactFullName,
                //        Position = model.ProductContactPosition,
                //        Phone = model.ProductContactPhone,
                //        Email = model.ProductContactEmail
                //    }
                //}
            };

            return(surveyCompletion);
        }
        public void Send(string attachmentFileName, SurveyCompletion surveyCompletion)
        {
            var companyMailMessage = this.GetMailMessage(surveyCompletion, attachmentFileName);

            this.emailSender.Send(companyMailMessage);
        }
Beispiel #4
0
        private SurveyCompletionParent InsertSurveyCompletion(SurveyViewModel model, bool partial)
        {
            var category = this.modelContext
                           .Categories
                           .Where(x => x.Id == model.CategoryId)
                           .FirstOrDefault();

            var role = this.roleManager.FindByName("DEMANDA");

            var surveyCompletionParent = new SurveyCompletionParent
            {
                Product        = null,
                Role           = role,
                Status         = "Aprobado",
                PartialSave    = partial,
                Category       = category,
                Email          = model.Email,
                PartialSaveKey = Guid.NewGuid().ToString()
            };

            foreach (var survey in model.SurveyDTOs)
            {
                var surveyCompletion = new SurveyCompletion
                {
                    SurveyId    = survey.SurveyId,
                    CategoryId  = survey.CategoryId,
                    Category    = survey.CategoryName,
                    Email       = model.Email,
                    Role        = role,
                    Parent      = surveyCompletionParent,
                    PartialSave = partial
                };

                var surveyQuestions = this.modelContext
                                      .Questions
                                      .Include("Answers")
                                      .Where(x => x.Survey.Id == survey.SurveyId)
                                      .ToList();

                foreach (var question in model.surveyCompletionDTOs)
                {
                    var answers = new List <SurveyCompletionAnswer>();
                    if (question.SurveyId == survey.SurveyId)
                    {
                        if (question.Answers != null)
                        {
                            answers = surveyQuestions
                                      .Where(x => x.Id == question.QuestionId)
                                      .FirstOrDefault()
                                      .Answers
                                      .Where(x => question.Answers.Contains(x.Id))
                                      .Select(x => new SurveyCompletionAnswer
                            {
                                Answer      = x.DemandAnswer,
                                AnswerValue = x.Value
                            })
                                      .ToList();
                        }

                        string          currentUserId = User.Identity.GetUserId();
                        ApplicationUser currentUser   = this.modelContext.Users.FirstOrDefault(x => x.Id == currentUserId);

                        var surveyCompletionQuestion = new SurveyCompletionQuestion
                        {
                            Question   = question.Question,
                            QuestionId = question.QuestionId,
                            Answers    = answers
                        };

                        surveyCompletion.Questions.Add(surveyCompletionQuestion);
                    }
                }

                this.modelContext.SurveysCompletion.Add(surveyCompletion);
            }

            this.modelContext.SurveyCompletionParent.Add(surveyCompletionParent);
            this.modelContext.SaveChanges();

            return(surveyCompletionParent);
        }
        private SurveyCompletionParent InsertSurveyCompletion(SurveyViewModel model, bool partial = false)
        {
            this.RemovePartialSurveyCompletion(model);

            var category = this.modelContext
                           .Categories
                           .Where(x => x.Id == model.CategoryId)
                           .FirstOrDefault();

            var userId = User.Identity.GetUserId();
            var role   = this.roleManager.FindByName("OFERTA");

            var user = this.modelContext
                       .Users
                       .FirstOrDefault(x => x.Id == userId);

            var company = this.modelContext
                          .Companies
                          .Include("ComercialContact")
                          .FirstOrDefault(x => x.Id == model.CompanyId);
            //aca  crear el pridcuto con el contactro del producto
            var producto = new Product
            {
                Name           = model.ProductName,
                Description    = model.ProductDescription,
                WebSite        = model.ProductWebSite,
                Version        = model.ProductVersion,
                User           = user,
                ProductContact = new Contact
                {
                    FullName = model.ProductContactFullName,
                    Position = model.ProductContactPosition,
                    Phone    = model.ProductContactPhone,
                    Email    = model.ProductContactEmail
                }
            };

            producto.Company = company;
            modelContext.Products.Add(producto);
            modelContext.SaveChanges();

            var surveyCompletionParent = new SurveyCompletionParent(company)
            {
                Product     = producto,
                Role        = role,
                Status      = "Pendiente",
                PartialSave = partial,
                Category    = category
            };

            foreach (var surveyDTO in model.SurveyDTOs)
            {
                var categoryObj = this.modelContext
                                  .Categories
                                  .Where(x => x.Id == surveyDTO.CategoryId)
                                  .FirstOrDefault();

                var surveyCompletion = new SurveyCompletion(company)
                {
                    SurveyId    = surveyDTO.SurveyId,
                    CategoryId  = surveyDTO.CategoryId,
                    Product     = producto,
                    Category    = surveyDTO.CategoryName,
                    CategoryObj = categoryObj,
                    Role        = role,
                    PartialSave = partial,
                    Parent      = surveyCompletionParent
                };

                var surveyQuestions = this.modelContext
                                      .Questions
                                      .Include("Answers")
                                      .Where(x => x.Survey.Id == surveyDTO.SurveyId)
                                      .ToList();

                foreach (var question in model.surveyCompletionDTOs)
                {
                    var answers = new List <SurveyCompletionAnswer>();

                    if (question.SurveyId == surveyDTO.SurveyId)
                    {
                        if (question.Answers != null)
                        {
                            answers = surveyQuestions
                                      .Where(x => x.Id == question.QuestionId)
                                      .FirstOrDefault()
                                      .Answers
                                      .Where(x => question.Answers.Contains(x.Id))
                                      .Select(x => new SurveyCompletionAnswer
                            {
                                Answer      = x.SupplyAnswer,
                                AnswerValue = x.Value
                            })
                                      .ToList();
                        }

                        string          currentUserId = User.Identity.GetUserId();
                        ApplicationUser currentUser   = this.modelContext.Users.FirstOrDefault(x => x.Id == currentUserId);

                        var surveyCompletionQuestion = new SurveyCompletionQuestion
                        {
                            Question   = question.Question,
                            QuestionId = question.QuestionId,
                            Answers    = answers
                        };

                        surveyCompletion.Questions.Add(surveyCompletionQuestion);
                    }
                }

                this.modelContext.SurveysCompletion.Add(surveyCompletion);
            }
            this.modelContext.SurveyCompletionParent.Add(surveyCompletionParent);
            this.modelContext.SaveChanges();

            return(surveyCompletionParent);
        }