예제 #1
0
        public void SendContactMessageTest_WithUserName()
        {
            //Arrange
            const string username = "******";
            var          contactMessageViewModel = new ContactMessageViewModel
            {
                Details = "Can you please guide me to the right job?",
                Email   = "*****@*****.**",
                Enquiry = "How to apply for a apprenticeship",
                Name    = "Jane Doe"
            };

            //Act
            _contactMessageServerViewModelValidator.Setup(validator => validator.Validate(It.IsAny <ContactMessageViewModel>()))
            .Returns(new ValidationResult());

            _providerUserMediator.Setup(mediator => mediator.SendContactMessage(contactMessageViewModel)).Returns(true);

            MediatorResponse <ContactMessageViewModel> response = _homeMediator.SendContactMessage(username,
                                                                                                   contactMessageViewModel);

            //Assert
            response.Code.Should().NotBeNullOrWhiteSpace();
            response.Message.Should().NotBeNull();
            response.Message.Level.ShouldBeEquivalentTo(UserMessageLevel.Success);
            response.Message.Text.Should().Be("Your question has been successfully sent. Thank you.");
        }
        public async Task <ActionResult> Helpdesk(ContactMessageViewModel model)
        {
            return(await Task.Run <ActionResult>(() =>
            {
                var candidateId = GetCandidateId();
                var response = _homeMediator.SendContactMessage(candidateId, model);

                switch (response.Code)
                {
                case HomeMediatorCodes.SendContactMessage.ValidationError:
                    ModelState.Clear();
                    response.ValidationResult.AddToModelState(ModelState, string.Empty);
                    return View(model);

                case HomeMediatorCodes.SendContactMessage.SuccessfullySent:
                    ModelState.Clear();
                    SetUserMessage(response.Message.Text, response.Message.Level);
                    return View(response.ViewModel);

                case HomeMediatorCodes.SendContactMessage.Error:
                    SetUserMessage(response.Message.Text, response.Message.Level);
                    return View(response.ViewModel);
                }

                throw new InvalidMediatorCodeException(response.Code);
            }));
        }
예제 #3
0
        public void SaveContactMessageShouldSaveContactMsgCorrect()
        {
            var options = new DbContextOptionsBuilder <WAGDbContext>()
                          .UseInMemoryDatabase(databaseName: "Save_ContactMessage_Db")
                          .Options;

            var dbContext = new WAGDbContext(options);

            var service = new HomeService(dbContext, null);

            var contactMessageViewModel = new ContactMessageViewModel()
            {
                Title    = "Test title",
                TextBody = "Test textBody",
            };

            string userId = Guid.NewGuid().ToString();

            service.SaveContactMessage(contactMessageViewModel, userId);

            var savedMessage = dbContext.ContactMessages.LastOrDefault();

            Assert.NotNull(savedMessage);
            Assert.Equal(userId, savedMessage.WAGUserId);
            Assert.Equal(contactMessageViewModel.Title, savedMessage.Title);
            Assert.Equal(contactMessageViewModel.TextBody, savedMessage.TextBody);
        }
예제 #4
0
        public async Task <ActionResult> SendMessage(ContactMessageViewModel model)
        {
            _logger.Log(LogLevel.Info, "User posted contact form: " + model.ToJson());

            if (!ModelState.IsValid)
            {
                _logger.Log(LogLevel.Error, "User contact form is Invalid! Errors: " + ModelState.ToJson());

                return(Json(ModelState.ToDictionary()));
            }

            try
            {
                await contactMessagesManager.AddContactMessage(model);

                _logger.Log(LogLevel.Info, "Contact form saved succesfully !");

                return(Json("STATUS_OK"));
            }
            catch (Exception ex)
            {
                _logger.Error(ex, "Problem submitting contact form!");
                throw;
            }
        }
예제 #5
0
 public async Task <ActionResult> Send(ContactMessageViewModel model)
 {
     if (ModelState.IsValid)
     {
         await _dbContext.SendMessageAsync(model);
     }
     return(RedirectToAction("Index", "Contact"));
 }
예제 #6
0
        public IActionResult Index()
        {
            ViewData["Title"] = "Message";

            var model = new ContactMessageViewModel();

            return View(model);
        }
예제 #7
0
        public async Task <IActionResult> Contact(ContactMessageViewModel contactMessage)
        {
            TempData["Success"] = "  Наш служител ще се свърже с Вас.";

            //await _emailSender.SendEmailAsync(contactMessage.Email, "Ново съобщение", $"Можете да промените паролата си на следния линк: <a href='{callbackUrl}'>Нова Парола</a>");
            await _emailSender.SendEmailAsync("*****@*****.**", "Съобщение от сайта",
                                              $"<b>{contactMessage.Name}</b></br>{contactMessage.Email}</br>{contactMessage.Phone}</br></br>{contactMessage.Note}");

            return(RedirectToAction("Contact"));
        }
예제 #8
0
        public void ShouldHaveErrorsOnSendWhenBlank()
        {
            var viewModel          = new ContactMessageViewModel();
            var viewModelValidator = new ContactMessageClientViewModelValidator();

            viewModelValidator.ShouldNotHaveValidationErrorFor(x => x.Details, viewModel);
            viewModelValidator.ShouldHaveValidationErrorFor(x => x.Name, viewModel);
            viewModelValidator.ShouldHaveValidationErrorFor(x => x.Enquiry, viewModel);
            viewModelValidator.ShouldHaveValidationErrorFor(x => x.Email, viewModel);
        }
예제 #9
0
 public ICContactMessage ToContactMessage(ContactMessageViewModel message)
 {
     return(new ICContactMessage()
     {
         ICContactMessageSubject = message.ICContactMessageSubject,
         ICContactMessageContactName = message.ICContactMessageContactName,
         ICContactMessageContactEmail = message.ICContactMessageContactEmail,
         ICContactMessageContactPhone = message.ICContactMessageContactPhone,
         ICContactMessageContent = message.ICContactMessageContent
     });
 }
예제 #10
0
        public ActionResult Contact(ContactMessageViewModel model)
        {
            if (ModelState.IsValid)
            {
                messageService.SendMessage(model.GetMessage());

                return(RedirectToAction("SuccessfullySent"));
            }

            return(View(model));
        }
예제 #11
0
        public void SaveContactMessage(ContactMessageViewModel contactMessageViewModel, string userId)
        {
            var contactMessage = new ContactMessage()
            {
                Title     = contactMessageViewModel.Title,
                TextBody  = contactMessageViewModel.TextBody,
                WAGUserId = userId,
                Date      = DateTime.UtcNow,
            };

            this.DbContext.ContactMessages.Add(contactMessage);
            this.DbContext.SaveChanges();
        }
예제 #12
0
 public bool SendContactMessage(Guid?candidateId, ContactMessageViewModel viewModel)
 {
     try
     {
         var candidate = _mapper.Map <ContactMessageViewModel, ContactMessage>(viewModel);
         candidate.UserId = candidateId;
         _candidateService.SubmitContactMessage(candidate);
         return(true);
     }
     catch
     {
         return(false);
     }
 }
예제 #13
0
        public bool SendContactMessage(ContactMessageViewModel contactMessageViewModel)
        {
            try
            {
                var contactMessage = _mapper.Map <ContactMessageViewModel, ProviderContactMessage>(contactMessageViewModel);
                _providerService.SubmitContactMessage(contactMessage);

                return(true);
            }
            catch (Exception exception)
            {
                _logService.Error($"Exception occured while sending contact us email:{exception.Message}", exception);
                return(false);
            }
        }
예제 #14
0
        public async Task AddContactMessage(ContactMessageViewModel messageTo)
        {
            ContactMessages message = new ContactMessages
            {
                Name        = messageTo.Name,
                Email       = messageTo.Email,
                Title       = messageTo.Subject,
                PhoneNumber = messageTo.PhoneNumber,
                Message     = messageTo.Message
            };

            RealEstateDbContext.ContactMessages.Add(message);
            await RealEstateDbContext.SaveChangesAsync();

            await EmailsManager.SendHtmlEmailAsync(message.Email, "Съобщение изпратено до sProperties", "Благодаря за обратната връзка, която ни пратихте. Оценяваме времето, което отделихте. Поздрави, sProperties.");
        }
예제 #15
0
        public IActionResult Contact(ContactMessageViewModel contactMessageViewModel)
        {
            if (!ModelState.IsValid)
            {
                return(this.View(contactMessageViewModel));
            }
            string userId = null;

            if (User.Identity.IsAuthenticated)
            {
                userId = this.UserAccountService.GetCurrentUser(HttpContext).Id;
            }

            this.HomeService.SaveContactMessage(contactMessageViewModel, userId);

            return(RedirectToAction("Success", "Home"));
        }
        public IActionResult SendMessage([Bind("Email", "Name", "PhoneNumber", "Message")] ContactMessageViewModel model)
        {
            if (ModelState.IsValid)
            {
                MailMessage message = new MailMessage("*****@*****.**", "*****@*****.**");
                message.Subject = string.Format("Message From {0}", model.Name);
                message.Body    = string.Format("Email: {0}\n", model.Email);
                message.Body   += string.Format("Phone: {0}\n\n", model.PhoneNumber);
                message.Body   += string.Format("Message: {0}\n", model.Message);
                EmailController.SendEmail(message);

                TempData["SuccessMessage"] = "We have received your message!";
                return(RedirectToAction("Index", "Home"));
            }

            return(View("Index", model));
        }
예제 #17
0
        public IActionResult Send(ContactMessageViewModel contactMessage)
        {
            SmtpClient client = new SmtpClient("poczta.o2.pl", 587);

            client.UseDefaultCredentials = false;
            client.Credentials           = new NetworkCredential("*****@*****.**", "Pa$$w0rd2");
            client.EnableSsl             = true;

            MailMessage mailMessage = new MailMessage();

            mailMessage.From = new MailAddress("*****@*****.**");
            mailMessage.To.Add("*****@*****.**");
            mailMessage.Body    = contactMessage.Content + Environment.NewLine + Environment.NewLine + contactMessage.SenderEmail;
            mailMessage.Subject = contactMessage.Title;
            client.Send(mailMessage);

            return(RedirectToAction(nameof(Show), contactMessage));
        }
예제 #18
0
        public void ShouldNotHaveErrorsOnSendWhenFilled()
        {
            const string aString = "SomeString";
            const string anEmail = "*****@*****.**";

            var viewModel = new ContactMessageViewModel
            {
                Name    = aString,
                Email   = anEmail,
                Enquiry = aString
            };

            var viewModelValidator = new ContactMessageClientViewModelValidator();

            viewModelValidator.ShouldNotHaveValidationErrorFor(x => x.Details, viewModel);
            viewModelValidator.ShouldNotHaveValidationErrorFor(x => x.Name, viewModel);
            viewModelValidator.ShouldNotHaveValidationErrorFor(x => x.Enquiry, viewModel);
            viewModelValidator.ShouldNotHaveValidationErrorFor(x => x.Email, viewModel);
        }
예제 #19
0
        private ContactMessageViewModel InternalGetContactMessageViewModel(string username)
        {
            var viewModel = new ContactMessageViewModel();

            if (!string.IsNullOrWhiteSpace(username))
            {
                try
                {
                    var provider = _providerUserProvider.GetProviderUser(username);
                    viewModel.Name  = provider.Fullname;
                    viewModel.Email = provider.Email;
                }
                catch (Exception ex)
                {
                    _logService.Error("Failed to created view model (ignoring)", ex);
                }
            }
            return(viewModel);
        }
        public void SendContactMessageWithValidationErrors()
        {
            var viewModel = new ContactMessageViewModel
            {
                Details         = AString,
                Email           = AnEmail,
                Enquiry         = AString,
                Name            = AString,
                SelectedEnquiry = AString
            };

            _contactMessageServerViewModelValidatorMock.Setup(v => v.Validate(It.IsAny <ContactMessageViewModel>()))
            .Returns(new ValidationResult(new [] { new ValidationFailure("Name", "Error") }));

            _candidateServiceProviderMock.Setup(hp => hp.SendContactMessage(null, viewModel)).Returns(false);
            var response = _homeMediator.SendContactMessage(null, viewModel);

            response.AssertValidationResult(HomeMediatorCodes.SendContactMessage.ValidationError, true);
        }
        public void SendContactMessageFail()
        {
            var viewModel = new ContactMessageViewModel
            {
                Details         = AString,
                Email           = AnEmail,
                Enquiry         = AString,
                Name            = AString,
                SelectedEnquiry = AString
            };

            _contactMessageServerViewModelValidatorMock.Setup(v => v.Validate(It.IsAny <ContactMessageViewModel>()))
            .Returns(new ValidationResult());

            _candidateServiceProviderMock.Setup(hp => hp.SendContactMessage(null, viewModel)).Returns(false);

            var response = _homeMediator.SendContactMessage(null, viewModel);

            response.AssertMessage(HomeMediatorCodes.SendContactMessage.Error,
                                   ApplicationPageMessages.SendContactMessageFailed, UserMessageLevel.Warning, true);
        }
예제 #22
0
        public IActionResult Contact(ContactMessageViewModel model)
        {
            if (ModelState.IsValid)
            {
                var newContactMessage = new ContactMessage
                {
                    Nickname    = model.Nickname,
                    Email       = model.Email,
                    Description = model.Description
                };


                newContactMessage = _contactMessageData.AddContactMessage(newContactMessage);

                return(RedirectToAction(nameof(Index)));
            }
            else
            {
                return(View());
            }
        }
예제 #23
0
        public void SendContactMessage()
        {
            var homeMediator = new HomeMediator(_candidateServiceProviderMock.Object, _homeProviderMock.Object, _contactMessageServerViewModelValidatorMock.Object);
            var viewModel    = new ContactMessageViewModel
            {
                Details         = AString,
                Email           = AnEmail,
                Enquiry         = AString,
                Name            = AString,
                SelectedEnquiry = AString
            };

            _contactMessageServerViewModelValidatorMock.Setup(v => v.Validate(It.IsAny <ContactMessageViewModel>()))
            .Returns(new ValidationResult());

            _homeProviderMock.Setup(hp => hp.SendContactMessage(null, viewModel)).Returns(true);
            var response = homeMediator.SendContactMessage(null, viewModel);

            response.AssertMessage(HomeMediatorCodes.SendContactMessage.SuccessfullySent,
                                   ApplicationPageMessages.SendContactMessageSucceeded, UserMessageLevel.Success, true);
        }
예제 #24
0
        private ContactMessageViewModel GetViewModel(Guid?candidateId)
        {
            var viewModel = new ContactMessageViewModel();

            PopulateEnquiries(viewModel);

            if (candidateId.HasValue)
            {
                try
                {
                    var candidate = _candidateServiceProvider.GetCandidate(candidateId.Value);
                    viewModel.Email = candidate.RegistrationDetails.EmailAddress;
                    viewModel.Name  = string.Format("{0} {1}", candidate.RegistrationDetails.FirstName,
                                                    candidate.RegistrationDetails.LastName);
                }
                catch
                {
                }
            }

            return(viewModel);
        }
예제 #25
0
        public MediatorResponse <ContactMessageViewModel> SendContactMessage(Guid?candidateId,
                                                                             ContactMessageViewModel contactMessageViewModel)
        {
            var validationResult = _contactMessageServerViewModelValidator.Validate(contactMessageViewModel);

            if (!validationResult.IsValid)
            {
                PopulateEnquiries(contactMessageViewModel);
                return(GetMediatorResponse(HomeMediatorCodes.SendContactMessage.ValidationError, contactMessageViewModel, validationResult));
            }

            if (_homeProvider.SendContactMessage(candidateId, contactMessageViewModel))
            {
                var viewModel = GetViewModel(candidateId);
                PopulateEnquiries(viewModel);
                return(GetMediatorResponse(HomeMediatorCodes.SendContactMessage.SuccessfullySent,
                                           viewModel, ApplicationPageMessages.SendContactMessageSucceeded, UserMessageLevel.Success));
            }

            PopulateEnquiries(contactMessageViewModel);
            return(GetMediatorResponse(HomeMediatorCodes.SendContactMessage.Error, contactMessageViewModel,
                                       ApplicationPageMessages.SendContactMessageFailed, UserMessageLevel.Warning));
        }
예제 #26
0
        private ContactMessageViewModel InternalGetContactMessageViewModel(Guid?candidateId)
        {
            var viewModel = new ContactMessageViewModel();

            PopulateContactMessageViewModelEnquiries(viewModel);

            if (candidateId.HasValue)
            {
                try
                {
                    var candidate = _candidateServiceProvider.GetCandidate(candidateId.Value);

                    viewModel.Email = candidate.RegistrationDetails.EmailAddress;
                    viewModel.Name  = string.Format("{0} {1}",
                                                    candidate.RegistrationDetails.FirstName, candidate.RegistrationDetails.LastName);
                }
                catch (Exception ex)
                {
                    _logService.Error("Failed to created view model (ignoring)", ex);
                }
            }

            return(viewModel);
        }
        public ActionResult ContactUs(ContactMessageViewModel viewModel)
        {
            var userName = GetProviderUserName();
            var response = _homeMediator.SendContactMessage(userName, viewModel);

            switch (response.Code)
            {
            case HomeMediatorCodes.SendContactMessage.ValidationError:
                ModelState.Clear();
                response.ValidationResult.AddToModelState(ModelState, string.Empty);
                return(View(viewModel));

            case HomeMediatorCodes.SendContactMessage.SuccessfullySent:
                ModelState.Clear();
                SetUserMessage(response.Message.Text, response.Message.Level);
                return(View(response.ViewModel));

            case HomeMediatorCodes.SendContactMessage.Error:
                SetUserMessage(response.Message.Text, response.Message.Level);
                return(View(response.ViewModel));
            }

            throw new InvalidMediatorCodeException(response.Code);
        }
예제 #28
0
        public IActionResult ContactUs(ContactMessageViewModel viewModel)
        {
            MailMessage mail = new MailMessage("*****@*****.**", "*****@*****.**");

            mail.Subject = viewModel.Subject;
            mail.Body    = $"The user {viewModel.Email} had the following question: \n" +
                           $"{viewModel.Description}";

            SmtpClient smtpClient = new SmtpClient("smtp.gmail.com", 25);/* smtp.gmail.com ports: 25, 465, 587 */

            smtpClient.Credentials = new System.Net.NetworkCredential()
            {
                UserName = "******",
                Password = "******"
            };

            TempData["Message"] = "Request Sent Successfully";

            smtpClient.EnableSsl = true;

            smtpClient.Send(mail);

            return(RedirectToAction("Index", "Home"));
        }
예제 #29
0
        public MediatorResponse <ContactMessageViewModel> SendContactMessage(string username, ContactMessageViewModel contactMessageViewModel)
        {
            ValidationResult validationResult = _contactMessageServerViewModelValidator.Validate(contactMessageViewModel);

            if (!validationResult.IsValid)
            {
                return(GetMediatorResponse(HomeMediatorCodes.SendContactMessage.ValidationError, contactMessageViewModel, validationResult));
            }

            if (_providerUserMediator.SendContactMessage(contactMessageViewModel))
            {
                var viewModel = InternalGetContactMessageViewModel(username);
                return(GetMediatorResponse(HomeMediatorCodes.SendContactMessage.SuccessfullySent,
                                           viewModel, ApplicationPageMessages.SendContactMessageSucceeded, UserMessageLevel.Success));
            }

            return(GetMediatorResponse(HomeMediatorCodes.SendContactMessage.Error, contactMessageViewModel,
                                       ApplicationPageMessages.SendContactMessageFailed, UserMessageLevel.Warning));
        }
예제 #30
0
 private static void PopulateEnquiries(ContactMessageViewModel contactMessageViewModel)
 {
     contactMessageViewModel.Enquiries       = GetEnquiries();
     contactMessageViewModel.SelectedEnquiry = "noSelect";
 }