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)); }
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)); }
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)); } }
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())); }
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); } }