示例#1
0
        /// <summary>
        /// Send email to a target user with the mortgage calculation info.
        /// </summary>
        /// <param name="mortgageEntry"></param>
        /// <param name="email"></param>
        /// <returns></returns>
        public bool SendEmail(MortgageEntryViewModel mortgageEntry, string email)
        {
            var templateUrl     = Path.Combine(HttpContext.Current.Server.MapPath("~/EmailTemplates"), "MortgageCalculationResults.cshtml");
            var templateService = new TemplateService();
            var emailBody       = templateService.Parse(System.IO.File.ReadAllText(templateUrl), mortgageEntry, null, null);

            var message = new MailMessage();

            message.To.Add(new MailAddress(email));
            message.Subject    = "Your Mortgage Calculation results!";
            message.Body       = emailBody;
            message.IsBodyHtml = true;
            try
            {
                using (var smtp = new SmtpClient())
                {
                    smtp.Send(message);
                }
            }
            catch (Exception e)
            {
                return(false);
            }
            return(true);
        }
        public ActionResult SendMail(MortgageEntryViewModel mortgageEntry, string email)
        {
            var success = false;

            if (ModelState.IsValid)
            {
                success = _mortgageService.SendEmail(mortgageEntry, email);
            }
            return(new CustomJson(new CustomJsonModel
            {
                Success = success,
                Message = success ? _emailSent : _errorMessage
            }, JsonRequestBehavior.DenyGet));
        }
 public ActionResult AddCalculationEntry(MortgageEntryViewModel entry)
 {
     if (ModelState.IsValid)
     {
         var success = _mortgageService.SaveCalculationEntry(entry);
         if (success)
         {
             return(new CustomJson(new CustomJsonModel
             {
                 Success = true,
             }, JsonRequestBehavior.DenyGet));
         }
     }
     return(new CustomJson(new CustomJsonModel
     {
         Success = false,
         Message = _errorMessage
     }, JsonRequestBehavior.DenyGet));
 }
示例#4
0
 public void Setup()
 {
     _mortgageEntry = new MortgageEntryViewModel()
     {
         InterestRate     = 9,
         Amortization     = 25,
         Amount           = 250000,
         Created          = DateTime.Now,
         Id               = 1,
         MonthlyPayment   = 2500,
         PaymentFrequency = "Monthly"
     };
     _email    = "*****@*****.**";
     entryList = new List <MortgageEntry>();
     entryList.Add(_mortgageEntry);
     mortageServiceMock = new Mock <IMortgageService>();
     mortageServiceMock.Setup(service => service.SendEmail(_mortgageEntry, _email)).Returns(true);
     mortageServiceMock.Setup(service => service.SaveCalculationEntry(It.IsAny <MortgageEntry>())).Returns(true);
     mortageServiceMock.Setup(service => service.GetHistory()).Returns(entryList);
 }
示例#5
0
        public void It_Should_Get_Not_Successfull_Message_And_Response_When_Sent_Email_After_Bad_ViewModel_Data_Passed()
        {
            //Arrange
            var expectedResult = new CustomJsonModel
            {
                Success = false,
                Message = "There was an error when processing your request. Please try again"
            };
            var antoherMortageEntry = new MortgageEntryViewModel()
            {
                InterestRate = 9,
            };
            MortgageController controller = new MortgageController(mortageServiceMock.Object);

            //Act
            var        controllerResult = controller.SendMail(antoherMortageEntry, _email);
            CustomJson jsonResult       = controllerResult as CustomJson;

            //Assert
            Assert.AreEqual(expectedResult.Message, jsonResult.Data.Message);
        }