Ejemplo n.º 1
0
        public virtual ActionResult TestEmail()
        {
            LogI("TestEmail");
            var company      = AccessManager.Company;
            var smtpSettings = CompanyHelper.GetSmtpSettings(company);
            var byName       = AccessManager.UserName;

            var result = ComposeEmailViewModel.FromTemplate(Db,
                                                            EmailService,
                                                            String.Empty,
                                                            company,
                                                            byName,
                                                            EmailTypes.System,
                                                            smtpSettings);

            var model = new ComposeEmailViewModel();

            if (result.Status == CallStatus.Success)
            {
                model = result.Data;
            }


            model.Subject = "Check email from web page";
            model.ToEmail = "*****@*****.**";
            model.ToName  = "Support";


            return(View("ComposeEmail", model));
        }
Ejemplo n.º 2
0
        public void WhenRequestedForVetoOnNavigationAfterSubmitting_ThenDoesNotRaiseInteractionRequest()
        {
            var emailServiceMock = new Mock <IEmailService>();

            var viewModel = new ComposeEmailViewModel(emailServiceMock.Object);

            var navService = new Mock <IRegionNavigationService>();
            var region     = new Mock <IRegion>();

            region.SetupGet(x => x.Context).Returns(null);
            navService.SetupGet(x => x.Region).Returns(region.Object);

            ((INavigationAware)viewModel).OnNavigatedTo(new NavigationContext(navService.Object, new Uri("[email protected]", UriKind.Relative)));

            InteractionRequestedEventArgs args = null;

            viewModel.ConfirmExitInteractionRequest.Raised += (s, e) => args = e;

            viewModel.SendEmailCommand.Execute(null);

            bool?callbackResult = null;

            ((IConfirmNavigationRequest)viewModel).ConfirmNavigationRequest(
                new NavigationContext(new Mock <IRegionNavigationService>().Object, new Uri("some uri", UriKind.Relative)),
                b => callbackResult = b);

            Assert.IsNull(args);
            Assert.IsTrue(callbackResult.Value);
        }
Ejemplo n.º 3
0
        public virtual ActionResult Validate(ComposeEmailViewModel model)
        {
            LogI("Validate, model=" + model);
            var messages = model.Validate(Db, LogService, Time.GetAppNowTime());

            return(JsonGet(new ValueResult <IList <MessageString> >(true, "", messages)));
        }
Ejemplo n.º 4
0
        public void WhenRequestedForVetoOnNavigationAfterSubmitting_ThenDoesNotRaiseInteractionRequest()
        {
            var emailServiceMock = new Mock <IEmailService>();

            var viewModel = new ComposeEmailViewModel(emailServiceMock.Object);
            var uriQuery  = new UriQuery();

            uriQuery.Add("To", "*****@*****.**");
            ((INavigationAware)viewModel).OnNavigatedTo(new NavigationContext(new Mock <IRegionNavigationService>().Object, new Uri("" + uriQuery.ToString(), UriKind.Relative)));

            InteractionRequestedEventArgs args = null;

            viewModel.ConfirmExitInteractionRequest.Raised += (s, e) => args = e;

            viewModel.SendEmailCommand.Execute(null);

            bool?callbackResult = null;

            ((IConfirmNavigationRequest)viewModel).ConfirmNavigationRequest(
                new NavigationContext(new Mock <IRegionNavigationService>().Object, new Uri("some uri", UriKind.Relative)),
                b => callbackResult = b);

            Assert.IsNull(args);
            Assert.IsTrue(callbackResult.Value);
        }
Ejemplo n.º 5
0
        public void WhenAcceptingConfirmationToNavigateAway_ThenInvokesRequestCallbackWithTrue()
        {
            var emailServiceMock = new Mock <IEmailService>();

            var viewModel = new ComposeEmailViewModel(emailServiceMock.Object);
            var uriQuery  = new UriQuery();

            uriQuery.Add("To", "*****@*****.**");
            ((INavigationAware)viewModel).OnNavigatedTo(new NavigationContext(new Mock <IRegionNavigationService>().Object, new Uri("" + uriQuery.ToString(), UriKind.Relative)));

            InteractionRequestedEventArgs args = null;

            viewModel.ConfirmExitInteractionRequest.Raised += (s, e) => args = e;

            bool?callbackResult = null;

            ((IConfirmNavigationRequest)viewModel).ConfirmNavigationRequest(
                new NavigationContext(new Mock <IRegionNavigationService>().Object, new Uri("some uri", UriKind.Relative)),
                b => callbackResult = b);

            var confirmation = args.Context as Confirmation;

            confirmation.Confirmed = true;

            args.Callback();

            Assert.IsTrue(callbackResult.Value);
        }
Ejemplo n.º 6
0
        public void WhenAcceptingConfirmationToNavigateAway_ThenInvokesRequestCallbackWithTrue()
        {
            var emailServiceMock = new Mock <IEmailService>();

            var viewModel = new ComposeEmailViewModel(emailServiceMock.Object);

            var navService = new Mock <IRegionNavigationService>();
            var region     = new Mock <IRegion>();

            region.SetupGet(x => x.Context).Returns(null);
            navService.SetupGet(x => x.Region).Returns(region.Object);

            ((INavigationAware)viewModel).OnNavigatedTo(new NavigationContext(navService.Object, new Uri("[email protected]", UriKind.Relative)));

            InteractionRequestedEventArgs args = null;

            viewModel.ConfirmExitInteractionRequest.Raised += (s, e) => args = e;

            bool?callbackResult = null;

            ((IConfirmNavigationRequest)viewModel).ConfirmNavigationRequest(
                new NavigationContext(new Mock <IRegionNavigationService>().Object, new Uri("some uri", UriKind.Relative)),
                b => callbackResult = b);

            var confirmation = args.Context as Confirmation;

            confirmation.Confirmed = true;

            args.Callback();

            Assert.IsTrue(callbackResult.Value);
        }
        public void WhenFinishedSendingMessage_ThenNavigatesBack()
        {
            var sendEmailResultMock = new Mock <IAsyncResult>();

            var emailServiceMock = new Mock <IEmailService>();

            emailServiceMock
            .Setup(svc => svc.SendEmailDocumentAsync(It.IsAny <EmailDocument>()))
            .Returns(Task.FromResult <object>(null));

            var journalMock = new Mock <IRegionNavigationJournal>();

            journalMock.Setup(j => j.GoBack()).Verifiable();

            var navigationServiceMock = new Mock <IRegionNavigationService>();

            navigationServiceMock.SetupGet(svc => svc.Journal).Returns(journalMock.Object);

            var viewModel = new ComposeEmailViewModel(emailServiceMock.Object);

            ((INavigationAware)viewModel).OnNavigatedTo(new NavigationContext(navigationServiceMock.Object, new Uri("", UriKind.Relative)));

            viewModel.SendEmailCommand.Execute(null);

            // The action is performed asynchronously in the view model, so we need to wait until it's completed.
            Thread.Sleep(500);

            Assert.AreEqual("Sent", viewModel.SendState);
            journalMock.VerifyAll();
        }
Ejemplo n.º 8
0
        public void WhenNavigatedToWithAToQueryParameter_ThenInitializesToField()
        {
            var emailServiceMock = new Mock <IEmailService>();

            var viewModel = new ComposeEmailViewModel(emailServiceMock.Object);
            var uriQuery  = new UriQuery();

            uriQuery.Add("To", "*****@*****.**");
            ((INavigationAware)viewModel).OnNavigatedTo(new NavigationContext(new Mock <IRegionNavigationService>().Object, new Uri("" + uriQuery.ToString(), UriKind.Relative)));

            Assert.AreEqual("*****@*****.**", viewModel.EmailDocument.To);
        }
Ejemplo n.º 9
0
        public void WhenSendMessageCommandIsExecuted_ThenSendsMessageThroughService()
        {
            var emailServiceMock = new Mock <IEmailService>();

            var viewModel = new ComposeEmailViewModel(emailServiceMock.Object);

            ((INavigationAware)viewModel).OnNavigatedTo(new NavigationContext(new Mock <IRegionNavigationService>().Object, new Uri("", UriKind.Relative)));

            viewModel.SendEmailCommand.Execute(null);

            Assert.AreEqual("Sending", viewModel.SendState);

            emailServiceMock.Verify(svc => svc.BeginSendEmailDocument(viewModel.EmailDocument, It.IsAny <AsyncCallback>(), null));
        }
Ejemplo n.º 10
0
        public void WhenNavigatedToWithAToQueryParameter_ThenInitializesToField()
        {
            var emailServiceMock = new Mock <IEmailService>();

            var viewModel = new ComposeEmailViewModel(emailServiceMock.Object);

            var navService = new Mock <IRegionNavigationService>();
            var region     = new Mock <IRegion>();

            region.SetupGet(x => x.Context).Returns(null);
            navService.SetupGet(x => x.Region).Returns(region.Object);

            ((INavigationAware)viewModel).OnNavigatedTo(new NavigationContext(navService.Object, new Uri("[email protected]", UriKind.Relative)));

            Assert.AreEqual("*****@*****.**", viewModel.EmailDocument.To);
        }
Ejemplo n.º 11
0
        public void WhenFinishedSendingMessage_ThenNavigatesBack()
        {
            var sendEmailResultMock = new Mock <IAsyncResult>();

            var           emailServiceMock = new Mock <IEmailService>();
            AsyncCallback callback         = null;

            emailServiceMock
            .Setup(svc => svc.BeginSendEmailDocument(It.IsAny <EmailDocument>(), It.IsAny <AsyncCallback>(), null))
            .Callback <EmailDocument, AsyncCallback, object>((e, c, o) => { callback = c; })
            .Returns(sendEmailResultMock.Object);
            emailServiceMock
            .Setup(svc => svc.EndSendEmailDocument(sendEmailResultMock.Object))
            .Verifiable();

            var journalMock = new Mock <IRegionNavigationJournal>();

            journalMock.Setup(j => j.GoBack()).Verifiable();

            var navigationServiceMock = new Mock <IRegionNavigationService>();

            navigationServiceMock.SetupGet(svc => svc.Journal).Returns(journalMock.Object);

            var viewModel = new ComposeEmailViewModel(emailServiceMock.Object);

            ((INavigationAware)viewModel).OnNavigatedTo(new NavigationContext(navigationServiceMock.Object, new Uri("", UriKind.Relative)));

            viewModel.SendEmailCommand.Execute(null);

            this.EnqueueConditional(() => callback != null);

            this.EnqueueCallback(
                () =>
            {
                callback(sendEmailResultMock.Object);
            });

            this.EnqueueCallback(
                () =>
            {
                Assert.AreEqual("Sent", viewModel.SendState);
                journalMock.VerifyAll();
            });

            this.EnqueueTestComplete();
        }
Ejemplo n.º 12
0
        public virtual ActionResult ComposeEmail(string orderNumber)
        {
            LogI("ComposeEmail, orderNumber=" + orderNumber);

            var company      = AccessManager.Company;
            var smtpSettings = CompanyHelper.GetSmtpSettings(company);
            var byName       = AccessManager.UserName;

            var result = ComposeEmailViewModel.GetTemplateInfo(Db,
                                                               EmailService,
                                                               company,
                                                               byName,
                                                               EmailTypes.CustomEmail,
                                                               smtpSettings,
                                                               orderNumber,
                                                               null);

            return(View("ComposeEmail", result.Data));
        }
Ejemplo n.º 13
0
        public void WhenNavigatedToWithAReplyToQueryParameter_ThenRepliesToTheAppropriateMessage()
        {
            var replyToEmail = new EmailDocument {
                From = "*****@*****.**", To = "", Subject = "", Text = ""
            };

            var emailServiceMock = new Mock <IEmailService>();

            emailServiceMock
            .Setup(svc => svc.GetEmailDocument(replyToEmail.Id))
            .Returns(replyToEmail);

            var viewModel = new ComposeEmailViewModel(emailServiceMock.Object);
            var uriQuery  = new UriQuery();

            uriQuery.Add("ReplyTo", replyToEmail.Id.ToString("N"));
            ((INavigationAware)viewModel).OnNavigatedTo(new NavigationContext(new Mock <IRegionNavigationService>().Object, new Uri("" + uriQuery.ToString(), UriKind.Relative)));

            Assert.AreEqual("*****@*****.**", viewModel.EmailDocument.To);
        }
Ejemplo n.º 14
0
        public void WhenCancelling_ThenNavigatesBack()
        {
            var emailServiceMock = new Mock <IEmailService>();

            var viewModel = new ComposeEmailViewModel(emailServiceMock.Object);

            var journalMock = new Mock <IRegionNavigationJournal>();

            var navigationServiceMock = new Mock <IRegionNavigationService>();

            navigationServiceMock.SetupGet(svc => svc.Journal).Returns(journalMock.Object);

            ((INavigationAware)viewModel).OnNavigatedTo(
                new NavigationContext(
                    navigationServiceMock.Object,
                    new Uri("location", UriKind.Relative)));

            viewModel.CancelEmailCommand.Execute(null);

            journalMock.Verify(j => j.GoBack());
        }
Ejemplo n.º 15
0
        public virtual ActionResult ReplyTo(long replyToId,
                                            string orderNumber,
                                            EmailTypes?type)
        {
            LogI("ReplyTo, orderNumber=" + orderNumber + ", type=" + type + ", replyToId=" + replyToId);

            var company      = AccessManager.Company;
            var smtpSettings = CompanyHelper.GetSmtpSettings(company);
            var byName       = AccessManager.UserName;

            var result = ComposeEmailViewModel.GetTemplateInfo(Db,
                                                               EmailService,
                                                               company,
                                                               byName,
                                                               type ?? EmailTypes.CustomEmail,
                                                               smtpSettings,
                                                               orderNumber,
                                                               replyToId);

            return(View("ComposeEmail", result.Data));
        }
Ejemplo n.º 16
0
        public virtual ActionResult ComposeEmailFromTemplate(string orderNumber,
                                                             EmailTypes type,
                                                             long?replyToId)
        {
            LogI("ComposeEmailFromTemplate, orderNumber=" + orderNumber + ", type=" + type.ToString() + ", replyToEmailId=" + replyToId);

            var company      = AccessManager.Company;
            var smtpSettings = CompanyHelper.GetSmtpSettings(company);
            var byName       = AccessManager.UserName;

            var result = ComposeEmailViewModel.GetTemplateInfo(Db,
                                                               EmailService,
                                                               company,
                                                               byName,
                                                               type,
                                                               smtpSettings,
                                                               orderNumber,
                                                               replyToId);

            return(View("ComposeEmail", result.Data));
        }
Ejemplo n.º 17
0
        public virtual ActionResult SendEmail(ComposeEmailViewModel model)
        {
            try
            {
                var by           = AccessManager.UserId;
                var company      = AccessManager.Company;
                var emailService = new EmailService(LogService, SettingsBuilder.GetSmtpSettingsFromCompany(company), AddressService);

                model.SendEmail(Db,
                                LogService,
                                emailService,
                                QuantityManager,
                                Time.GetAppNowTime(),
                                by);

                return(Json(new MessagesResult(true).Success("Message has been successfully sent")));
            }
            catch (Exception ex)
            {
                LogE("Reply All", ex);
                return(Json(new MessagesResult(false).Error("Can't send email. Details: " + ex.Message)));
            }
        }
Ejemplo n.º 18
0
        public virtual ActionResult GetTemplateInfo(string orderNumber,
                                                    EmailTypes type,
                                                    long?replyToId)
        {
            LogI("GetTemplateInfo, orderNumber=" + orderNumber + ", type=" + type + ", replyToId=" + replyToId);

            var company      = AccessManager.Company;
            var smtpSettings = CompanyHelper.GetSmtpSettings(company);
            var byName       = AccessManager.UserName;

            var result = ComposeEmailViewModel.GetTemplateInfo(Db,
                                                               EmailService,
                                                               company,
                                                               byName,
                                                               (EmailTypes)type,
                                                               smtpSettings,
                                                               orderNumber,
                                                               replyToId);

            return(Json(new ValueResult <ComposeEmailViewModel>(result.Status == CallStatus.Success,
                                                                result.Message,
                                                                result.Data),
                        JsonRequestBehavior.AllowGet));
        }
Ejemplo n.º 19
0
        public ComposeEmailView(ComposeEmailViewModel viewModel)
        {
            InitializeComponent();

            this.ViewModel = viewModel;
        }