Exemplo n.º 1
0
        public void TestContactCopy()
        {
            var employer = CreateEmployer(0);
            var member   = CreateMember(0);

            _allocationsCommand.CreateAllocation(new Allocation {
                CreditId = _creditsQuery.GetCredit <ContactCredit>().Id, OwnerId = employer.Id
            });

            // Check attachments.

            AssertAttachments(employer);

            // Create messages.

            var templateMessage = new ContactMemberMessage {
                Subject = Subject, Body = Body, SendCopy = true
            };

            _employerMemberContactsCommand.ContactMember(_app, employer, _employerMemberViewsQuery.GetProfessionalView(employer, member), templateMessage);

            // Check.

            var messages = _employerMemberContactsQuery.GetMessages(employer, member.Id);

            Assert.AreEqual(1, messages.Count);
            AssertMessage(templateMessage, messages[0], null, _employerContactsRepository.GetMemberMessageRepresentative(messages[0].Id));
        }
Exemplo n.º 2
0
        public void TestRepresentative()
        {
            var employer = CreateEmployer(0);

            _allocationsCommand.CreateAllocation(new Allocation {
                CreditId = _creditsQuery.GetCredit <ContactCredit>().Id, OwnerId = employer.Id
            });

            var member1 = CreateMember(1);
            var member2 = CreateMember(2);

            _representativesCommand.CreateRepresentative(member1.Id, member2.Id);

            // Create messages.

            var templateMessage = new ContactMemberMessage {
                Subject = Subject, Body = Body
            };

            _employerMemberContactsCommand.ContactMember(_app, employer, _employerMemberViewsQuery.GetProfessionalView(employer, member1), templateMessage);

            // Check.

            var messages = _employerMemberContactsQuery.GetMessages(employer, member1.Id);

            Assert.AreEqual(1, messages.Count);
            AssertMessage(templateMessage, messages[0], member2.Id, _employerContactsRepository.GetMemberMessageRepresentative(messages[0].Id));
        }
Exemplo n.º 3
0
        public void TestMultipleContactsMultipleAttachments()
        {
            var employer = CreateEmployer(0);

            _allocationsCommand.CreateAllocation(new Allocation {
                CreditId = _creditsQuery.GetCredit <ContactCredit>().Id, OwnerId = employer.Id
            });

            const int count   = 3;
            var       members = new Member[count];

            for (var index = 0; index < count; ++index)
            {
                members[index] = CreateMember(index);
            }

            // Save attachments.

            var attachments = new MemberMessageAttachment[count];

            for (var index = 0; index < count; ++index)
            {
                attachments[index] = CreateMessageAttachment(employer, index);
            }

            // Check attachments.

            AssertAttachments(employer, attachments);

            // Create messages.

            var templateMessage = new ContactMemberMessage {
                Subject = Subject, Body = Body, AttachmentIds = (from a in attachments select a.Id).ToList()
            };

            _employerMemberContactsCommand.ContactMembers(_app, employer, _employerMemberViewsQuery.GetProfessionalViews(employer, members), templateMessage);

            // Check.

            for (var index = 0; index < count; ++index)
            {
                var messages = _employerMemberContactsQuery.GetMessages(employer, members[index].Id);
                Assert.AreEqual(1, messages.Count);
                AssertMessage(templateMessage, messages[0], null, _employerContactsRepository.GetMemberMessageRepresentative(messages[0].Id));
            }
        }
Exemplo n.º 4
0
        public ActionResult SendMessages(ContactMemberMessage message, Guid[] candidateIds, Guid[] attachmentIds)
        {
            try
            {
                // Get the employer.

                var employer = CurrentEmployer;

                // Get the members.

                var views = _employerMemberViewsQuery.GetProfessionalViews(employer, candidateIds);

                message.AttachmentIds = attachmentIds;

                _employerMemberContactsCommand.ContactMembers(ActivityContext.Channel.App, employer, views, message);
            }
            catch (UserException ex)
            {
                ModelState.AddModelError(ex, new StandardErrorHandler());
            }

            return(Json(new JsonResponseModel()));
        }
Exemplo n.º 5
0
        private void TestValidation(ContactMemberMessage message, string expectedName, Type expectedErrorType)
        {
            var employer = CreateEmployer(0);
            var member   = CreateMember(0);

            _allocationsCommand.CreateAllocation(new Allocation {
                CreditId = _creditsQuery.GetCredit <ContactCredit>().Id, OwnerId = employer.Id
            });

            // Create messages.

            try
            {
                _employerMemberContactsCommand.ContactMember(_app, employer, _employerMemberViewsQuery.GetProfessionalView(employer, member), message);
                Assert.Fail();
            }
            catch (ValidationErrorsException ex)
            {
                Assert.AreEqual(1, ex.Errors.Count);
                Assert.AreEqual(expectedName, ex.Errors[0].Name);
                Assert.IsInstanceOfType(ex.Errors[0], expectedErrorType);
            }
        }
        void IEmployerMemberContactsCommand.ContactMembers(ChannelApp app, IEmployer employer, ProfessionalViews views, ContactMemberMessage messageTemplate)
        {
            var cleaner        = new MemberMessageCleaner();
            var cleanedBody    = cleaner.CleanBody(messageTemplate.Body);
            var cleanedSubject = cleaner.CleanSubject(messageTemplate.Subject);

            // Try to access all the members.

            var accesses = _employerMemberViewsCommand.AccessMembers(app, employer, views, MemberAccessReason.MessageSent);

            // Get the member and the representative if there is one.

            var representativeIds = _memberContactsQuery.GetRepresentativeContacts(from m in views select m.Id);

            // Iterate through them all exercising credits when needed.

            var handlers = MessageCreated;

            foreach (var view in views)
            {
                var viewId           = view.Id;
                var representativeId = representativeIds[view.Id];
                var access           = (from a in accesses where a.MemberId == viewId select a).SingleOrDefault();
                ContactMember(messageTemplate, employer, view, cleanedSubject, cleanedBody, representativeId, access, handlers);
            }
        }
        void IEmployerMemberContactsCommand.ContactMember(ChannelApp app, IEmployer employer, ProfessionalView view, ContactMemberMessage messageTemplate)
        {
            var cleaner        = new MemberMessageCleaner();
            var cleanedBody    = cleaner.CleanBody(messageTemplate.Body);
            var cleanedSubject = cleaner.CleanSubject(messageTemplate.Subject);

            // Messages are being sent so exercise a credit.

            var access = _employerMemberViewsCommand.AccessMember(app, employer, view, MemberAccessReason.MessageSent);

            // Save the message.

            if (access != null)
            {
                var handlers         = MessageCreated;
                var representativeId = _memberContactsQuery.GetRepresentativeContact(view.Id);
                ContactMember(messageTemplate, employer, view, cleanedSubject, cleanedBody, representativeId, access, handlers);
            }
        }