Exemplo n.º 1
0
        public void SendMessageFromDonor(int pledgeId, int donationId, string message)
        {
            var toDonor      = _pledgeService.GetDonorForPledge(pledgeId);
            var donorContact = _donorService.GetEmailViaDonorId(toDonor);
            var template     = _communicationService.GetTemplate(_tripDonationMessageTemplateId);

            var toContacts = new List <MpContact> {
                new MpContact {
                    ContactId = donorContact.ContactId, EmailAddress = donorContact.Email
                }
            };

            var from = new MpContact()
            {
                ContactId    = 5,
                EmailAddress = "*****@*****.**"
            };

            var comm = new MpCommunication
            {
                AuthorUserId   = 5,
                DomainId       = 1,
                EmailBody      = message,
                EmailSubject   = template.Subject,
                FromContact    = from,
                ReplyToContact = from,
                ToContacts     = toContacts,
                MergeData      = new Dictionary <string, object>()
            };
            var communicationId = _communicationService.SendMessage(comm, true);

            AddDonationCommunication(donationId, communicationId);
        }
Exemplo n.º 2
0
        private static MinistryPlatform.Translation.Models.MpCommunication FormatCommunication(int authorUserId,
                                                                                               int domainId,
                                                                                               MpMessageTemplate template,
                                                                                               MpMyContact fromContact,
                                                                                               MpMyContact replyToContact,
                                                                                               int participantContactId,
                                                                                               string participantEmail,
                                                                                               Dictionary <string, object> mergeData)
        {
            var communication = new MinistryPlatform.Translation.Models.MpCommunication
            {
                AuthorUserId = authorUserId,
                DomainId     = domainId,
                EmailBody    = template.Body,
                EmailSubject = template.Subject,
                FromContact  = new MpContact {
                    ContactId = fromContact.Contact_ID, EmailAddress = fromContact.Email_Address
                },
                ReplyToContact = new MpContact {
                    ContactId = replyToContact.Contact_ID, EmailAddress = replyToContact.Email_Address
                },
                ToContacts = new List <MpContact> {
                    new MpContact {
                        ContactId = participantContactId, EmailAddress = participantEmail
                    }
                },
                MergeData = mergeData
            };

            return(communication);
        }
Exemplo n.º 3
0
        public void SendParticipantsEmail(string token, List <GroupParticipantDTO> participants, string subject, string body)
        {
            var senderRecord = _participantService.GetParticipantRecord(token);

            var fromContact = new MpContact
            {
                ContactId    = 1519180,
                EmailAddress = "*****@*****.**"
            };

            var replyToContact = new MpContact
            {
                ContactId    = senderRecord.ContactId,
                EmailAddress = senderRecord.EmailAddress
            };

            var toContacts = participants.Select(p => new MpContact
            {
                ContactId    = p.ContactId,
                EmailAddress = p.Email
            }).ToList();

            var email = new MinistryPlatform.Translation.Models.MpCommunication
            {
                EmailBody      = body,
                EmailSubject   = subject,
                AuthorUserId   = 5,
                DomainId       = _domainId,
                FromContact    = fromContact,
                ReplyToContact = replyToContact,
                ToContacts     = toContacts
            };

            _communicationService.SendMessage(email);
        }
Exemplo n.º 4
0
        public void ShouldSendTripEmail()
        {
            const int formResponseId   = 12345;
            const int contactId        = 1234;
            const int pledgeCampaignId = 9876;

            var mycontact = new MpMyContact
            {
                Contact_ID    = 7,
                Email_Address = "*****@*****.**"
            };


            var to = new MpContact
            {
                ContactId    = 8,
                EmailAddress = "*****@*****.**"
            };

            var tolist = new List <MpContact> {
                to
            };

            var mpc = new MpCommunication
            {
                AuthorUserId   = 1,
                DomainId       = 1,
                EmailBody      = "body",
                EmailSubject   = "subject",
                FromContact    = to,
                MergeData      = new Dictionary <string, object>(),
                ReplyToContact = to,
                StartDate      = new DateTime(2011, 10, 11),
                TemplateId     = 444,
                ToContacts     = tolist
            };

            _campaignService.Setup(m => m.GetPledgeCampaign(pledgeCampaignId)).Returns(mockPledgeCampaign());
            _donationService.Setup(m => m.GetMyTripDistributions(contactId)).Returns(MockTripScholarshipDonationsResponse());
            _formSubmissionService.Setup(f => f.SubmitFormResponse(It.IsAny <MpFormResponse>())).Returns(formResponseId);
            _communicationService.Setup(
                s =>
                s.GetTemplateAsCommunication(It.IsAny <int>(),
                                             It.IsAny <int>(),
                                             It.IsAny <string>(),
                                             It.IsAny <int>(),
                                             It.IsAny <string>(),
                                             It.IsAny <int>(),
                                             It.IsAny <string>(),
                                             It.IsAny <Dictionary <string, object> >())).Returns(mpc);

            _communicationService.Setup(s => s.SendMessage(mpc, false)).Returns(9999);
            _contactService.Setup(s => s.GetContactById(It.IsAny <int>())).Returns(mycontact);

            var result = _fixture.SaveApplication(mockTripApplication(contactId, pledgeCampaignId));

            Assert.IsTrue(result == formResponseId);

            _configurationWrapper.Verify(v => v.GetConfigIntValue("TripApplicantSuccessTemplate"), Times.Exactly(1));
        }
Exemplo n.º 5
0
        private void SendChildcareRequestDecisionNotification(int requestId, List <MpChildcareRequestDate> childcareRequestDates, ChildcareRequestDto childcareRequest, int templateId, String token)
        {
            var childcareRequestEmail = _childcareRequestService.GetChildcareRequest(requestId, token);;
            var template = _communicationService.GetTemplate(templateId);

            var decisionNotes = childcareRequest.DecisionNotes ?? "N/A";


            var authorUserId = _configurationWrapper.GetConfigIntValue("DefaultUserAuthorId");
            var datesList    = childcareRequestDates.Select(dateRec => dateRec.RequestDate).Select(requestDate => BuildParagraph("", requestDate.ToShortDateString())).ToList();
            var styles       = Styles();
            var htmlCell     = new HtmlElement("td", styles).Append(datesList);
            var htmlRow      = new HtmlElement("tr", styles).Append(htmlCell);
            var htmlTBody    = new HtmlElement("tbody", styles).Append(htmlRow);
            var htmlTable    = new HtmlElement("table", styles).Append(htmlTBody);

            var mergeData = new Dictionary <string, object>
            {
                { "Group", childcareRequestEmail.GroupName },
                { "ChildcareSession", childcareRequestEmail.ChildcareSession },
                { "DecisionNotes", decisionNotes },
                { "Frequency", childcareRequest.Frequency },
                { "Dates", htmlTable.Build() },
                { "RequestId", childcareRequestEmail.RequestId },
                { "Base_Url", _configurationWrapper.GetConfigValue("BaseMPUrl") },
                { "Congregation", childcareRequestEmail.CongregationName }
            };
            var toContactsList = new List <MpContact> {
                new MpContact {
                    ContactId = childcareRequestEmail.RequesterId, EmailAddress = childcareRequestEmail.RequesterEmail
                }
            };


            var communication = new MinistryPlatform.Translation.Models.MpCommunication
            {
                AuthorUserId = authorUserId,
                EmailBody    = template.Body,
                EmailSubject = template.Subject,
                FromContact  = new MpContact {
                    ContactId = childcareRequestEmail.ChildcareContactId, EmailAddress = childcareRequestEmail.ChildcareContactEmail
                },
                ReplyToContact = new MpContact {
                    ContactId = childcareRequestEmail.ChildcareContactId, EmailAddress = childcareRequestEmail.ChildcareContactEmail
                },
                ToContacts = toContactsList,
                MergeData  = mergeData
            };

            try
            {
                _communicationService.SendMessage(communication);
            }
            catch (Exception ex)
            {
                _logger.Error(string.Format("Send Childcare request approval notification email failed"), ex);
            }
        }
Exemplo n.º 6
0
        public void SendMessageToDonor(int donorId, int donationDistributionId, int fromContactId, string body, string tripName)
        {
            var template            = _communicationService.GetTemplate(_donorMessageTemplateId);
            var defaultContactId    = AppSetting("DefaultGivingContactEmailId");
            var defaultContactEmail = _communicationService.GetEmailFromContactId(defaultContactId);

            var messageData = new Dictionary <string, object>
            {
                { "TripName", tripName },
                { "DonorMessage", body }
            };
            var toEmail = _donorService.GetEmailViaDonorId(donorId);

            var to = new List <MpContact>()
            {
                new MpContact()
                {
                    ContactId    = toEmail.ContactId,
                    EmailAddress = toEmail.Email
                }
            };

            var authorId  = _communicationService.GetUserIdFromContactId(fromContactId);
            var fromEmail = _communicationService.GetEmailFromContactId(fromContactId);

            var comm = new MpCommunication
            {
                AuthorUserId = authorId,
                DomainId     = 1,
                ToContacts   = to,
                FromContact  = new MpContact()
                {
                    ContactId = defaultContactId, EmailAddress = defaultContactEmail
                },
                ReplyToContact = new MpContact()
                {
                    ContactId = fromContactId, EmailAddress = fromEmail
                },
                EmailSubject = _communicationService.ParseTemplateBody(template.Subject, messageData),
                EmailBody    = _communicationService.ParseTemplateBody(template.Body, messageData),
                MergeData    = messageData
            };

            _communicationService.SendMessage(comm);

            //mark donation distribution with message sent

            var distributionData = new Dictionary <string, object>
            {
                { "Donation_Distribution_ID", donationDistributionId },
                { "Message_Sent", true }
            };

            _ministryPlatformService.UpdateRecord(_donationDistributionPageId, distributionData, ApiLogin());
        }
Exemplo n.º 7
0
        public void SendChildcareCancellationNotification()
        {
            var templateId   = _configurationWrapper.GetConfigIntValue("ChildcareCancelledTemplate");
            var template     = _communicationService.GetTemplate(templateId);
            var authorUserId = _configurationWrapper.GetConfigIntValue("DefaultUserAuthorId");

            var notificationData = _childcareRepository.GetChildcareCancellations();

            foreach (var participant in notificationData.DistinctBy(p => p.EnrollerContactId))
            {
                var kiddos    = notificationData.Where(k => k.EnrollerContactId == participant.EnrollerContactId).Aggregate("", (current, kid) => current + (kid.ChildNickname + " " + kid.ChildLastname + "<br>"));
                var mergeData = new Dictionary <string, object>
                {
                    { "Group_Name", participant.EnrollerGroupName },
                    { "Childcare_Date", participant.ChildcareEventDate.ToString("MM/dd/yyyy") },
                    { "Group_Member_Nickname", participant.EnrollerNickname },
                    { "Childcare_Day", participant.ChildcareEventDate.ToString("dddd, MMMM dd") },
                    { "Child_List", kiddos }
                };
                var comm = new MinistryPlatform.Translation.Models.MpCommunication
                {
                    AuthorUserId = authorUserId,
                    DomainId     = 1,
                    EmailBody    = template.Body,
                    EmailSubject = template.Subject,
                    FromContact  = new MpContact {
                        ContactId = participant.ChildcareContactId, EmailAddress = participant.ChildcareContactEmail
                    },
                    ReplyToContact = new MpContact {
                        ContactId = participant.ChildcareContactId, EmailAddress = participant.ChildcareContactEmail
                    },
                    ToContacts = new List <MpContact> {
                        new MpContact {
                            ContactId = participant.EnrollerContactId, EmailAddress = participant.EnrollerEmail
                        }
                    },
                    MergeData = mergeData
                };
                _communicationService.SendMessage(comm);
            }

            foreach (var participant in notificationData)
            {
                _groupService.endDateGroupParticipant(participant.ChildGroupId, participant.ChildGroupParticipantId);
            }

            foreach (var group in notificationData.DistinctBy(g => g.ChildGroupId))
            {
                _groupService.EndDateGroup(group.ChildGroupId);
            }
        }
Exemplo n.º 8
0
        public void SendAllGroupLeadersMemberRemovedEmail(string token, int groupId)
        {
            var requestorParticipant = _participantService.GetParticipantRecord(token);
            var group = this.GetGroupDetails(groupId);

            var leaders = @group.Participants.
                          Where(groupParticipant => groupParticipant.GroupRoleId == _groupRoleLeader).
                          Select(groupParticipant => new MpContact
            {
                ContactId    = groupParticipant.ContactId,
                EmailAddress = groupParticipant.Email,
                LastName     = groupParticipant.LastName,
                Nickname     = groupParticipant.NickName
            }).ToList();

            var mergeData = new Dictionary <string, object>
            {
                { "Group_Participant_Name", requestorParticipant.DisplayName },
                { "Group_Name", group.GroupName },
            };

            int emailTemplateId = _removeSelfFromGroupTemplateId;
            var emailTemplate   = _communicationService.GetTemplate(emailTemplateId);

            var fromContact = new MpContact
            {
                ContactId    = emailTemplate.FromContactId,
                EmailAddress = emailTemplate.FromEmailAddress
            };
            var replyTo = new MpContact
            {
                ContactId    = emailTemplate.ReplyToContactId,
                EmailAddress = emailTemplate.ReplyToEmailAddress
            };

            var message = new MinistryPlatform.Translation.Models.MpCommunication
            {
                EmailBody      = emailTemplate.Body,
                EmailSubject   = emailTemplate.Subject,
                AuthorUserId   = _defaultAuthorUserId,
                DomainId       = _domainId,
                FromContact    = fromContact,
                ReplyToContact = replyTo,
                TemplateId     = emailTemplateId,
                ToContacts     = leaders,
                MergeData      = mergeData
            };

            _communicationService.SendMessage(message);
        }
Exemplo n.º 9
0
        public void ShouldGetReminderCommunication()
        {
            const int childcareTemplateId = 56345;
            var       threeDaysOut        = DateTime.Now.AddDays(3);
            var       email1 = new MpContact()
            {
                EmailAddress = "*****@*****.**", ContactId = 2186211
            };
            var mergeData = new Dictionary <string, object>()
            {
                { "Nickname", "Matt" },
                { "Childcare_Date", threeDaysOut.ToString("d") },
                { "Childcare_Day", threeDaysOut.ToString("dddd M") }
            };

            _configurationWrapper.Setup(m => m.GetConfigIntValue("DefaultContactEmailId")).Returns(12);
            _configurationWrapper.Setup(m => m.GetConfigIntValue("ChildcareReminderTemplateId")).Returns(childcareTemplateId);

            var expectedCommunication = new MpCommunication()
            {
                AuthorUserId = 5,
                DomainId     = 1,
                EmailBody    = "<html> whatever </html>",
                EmailSubject = "subject",
                FromContact  = new MpContact()
                {
                    ContactId = 12, EmailAddress = "*****@*****.**"
                },
                ReplyToContact = new MpContact()
                {
                    ContactId = 12, EmailAddress = "*****@*****.**"
                },
                TemplateId = childcareTemplateId,
                ToContacts = new List <MpContact> {
                    email1
                },
                MergeData = mergeData
            };

            _communicationService.Setup(
                m => m.GetTemplateAsCommunication(childcareTemplateId, 12, "*****@*****.**", 12, "*****@*****.**", email1.ContactId, email1.EmailAddress, mergeData)
                ).Returns(expectedCommunication);

            _fixture.SetupChilcareReminderCommunication(email1, mergeData);

            _communicationService.Verify();
            _configurationWrapper.VerifyAll();
        }
Exemplo n.º 10
0
        public void SendChildcareRequestNotification(MpChildcareRequestEmail request)
        {
            var templateId   = _configurationWrapper.GetConfigIntValue("ChildcareRequestNotificationTemplate");
            var authorUserId = _configurationWrapper.GetConfigIntValue("DefaultUserAuthorId");
            var template     = _communicationService.GetTemplate(templateId);

            var mergeData = new Dictionary <string, object>
            {
                { "Requester", request.Requester },
                { "Nickname", request.RequesterNickname },
                { "LastName", request.RequesterLastName },
                { "Group", request.GroupName },
                { "Site", request.CongregationName },
                { "StartDate", (request.StartDate).ToShortDateString() },
                { "EndDate", (request.EndDate).ToShortDateString() },
                { "ChildcareSession", request.ChildcareSession },
                { "RequestId", request.RequestId },
                { "Base_Url", _configurationWrapper.GetConfigValue("BaseMPUrl") }
            };

            var communication = new MinistryPlatform.Translation.Models.MpCommunication
            {
                AuthorUserId = authorUserId,
                EmailBody    = template.Body,
                EmailSubject = template.Subject,
                FromContact  = new MpContact {
                    ContactId = request.RequesterId, EmailAddress = request.RequesterEmail
                },
                ReplyToContact = new MpContact {
                    ContactId = request.RequesterId, EmailAddress = request.RequesterEmail
                },
                ToContacts = new List <MpContact> {
                    new MpContact {
                        ContactId = request.ChildcareContactId, EmailAddress = request.ChildcareContactEmail
                    }
                },
                MergeData = mergeData
            };

            try
            {
                _communicationService.SendMessage(communication);
            }
            catch (Exception ex)
            {
                _logger.Error(string.Format("Send Childcare request notification email failed"), ex);
            }
        }
Exemplo n.º 11
0
        // TODO Made this virtual so could mock in a unit test.  Probably ought to refactor to a separate class - shouldn't have to mock the class we're testing...
        public virtual void SendEmail(int communicationTemplateId, int donorId, decimal donationAmount, string paymentType, DateTime setupDate, DateTime startDate, string program, string emailReason, string frequency = null, string pledgeName = null)
        {
            var       template            = _communicationService.GetTemplate(communicationTemplateId);
            var       defaultContactId    = AppSetting("DefaultGivingContactEmailId");
            var       defaultContactEmail = _contactService.GetContactEmail(defaultContactId);
            MpContact contact             = _contactService.GetEmailFromDonorId(donorId);
            var       comm = new MpCommunication
            {
                AuthorUserId = 5,
                DomainId     = 1,
                EmailBody    = template.Body,
                EmailSubject = template.Subject,
                FromContact  = new MpContact {
                    ContactId = defaultContactId, EmailAddress = defaultContactEmail
                },
                ReplyToContact = new MpContact {
                    ContactId = defaultContactId, EmailAddress = defaultContactEmail
                },
                ToContacts = new List <MpContact> {
                    new MpContact {
                        ContactId = contact.ContactId, EmailAddress = contact.EmailAddress
                    }
                },
                MergeData = new Dictionary <string, object>
                {
                    { "Program_Name", program },
                    { "Donation_Amount", donationAmount.ToString("N2") },
                    { "Donation_Date", setupDate.ToString("MM/dd/yyyy h:mmtt", _dateTimeFormat) },
                    { "Payment_Method", paymentType },
                    { "Decline_Reason", emailReason },
                    { "Start_Date", startDate.ToString("MM/dd/yyyy", _dateTimeFormat) }
                }
            };

            if (!string.IsNullOrWhiteSpace(frequency))
            {
                comm.MergeData["Frequency"] = frequency;
            }

            if (!string.IsNullOrWhiteSpace(pledgeName))
            {
                comm.MergeData["Pledge_Donor"] = pledgeName;
            }

            _communicationService.SendMessage(comm);
        }
Exemplo n.º 12
0
        public void ShouldSendChildcareRequestNotification()
        {
            var startDate = new DateTime(2016, 5, 26);
            var endDate   = new DateTime(2016, 7, 2);

            var notificationTemplateId = 0985627;
            var defaultAuthorId        = 9087345;

            var template = new MpMessageTemplate()
            {
                Body    = "Ok long string of text",
                Subject = "A subject"
            };

            var request = new MpChildcareRequestEmail()
            {
                RequestId             = 1,
                RequesterEmail        = "*****@*****.**",
                ChildcareContactEmail = "*****@*****.**",
                ChildcareContactId    = 12,
                ChildcareSession      = "Monday, 9am - 12pm",
                CongregationName      = "Florence",
                EndDate           = endDate,
                StartDate         = startDate,
                EstimatedChildren = 2,
                Frequency         = "once",
                RequesterLastName = "Nair",
                RequesterNickname = "Lak",
                Requester         = "Nair, Lak",
                RequesterId       = 432,
                GroupName         = "FI 101"
            };

            var mergeData = new Dictionary <string, object>
            {
                { "Requester", request.Requester },
                { "Nickname", request.RequesterNickname },
                { "LastName", request.RequesterLastName },
                { "Group", request.GroupName },
                { "Site", request.CongregationName },
                { "StartDate", (request.StartDate).ToShortDateString() },
                { "EndDate", (request.EndDate).ToShortDateString() },
                { "ChildcareSession", request.ChildcareSession },
                { "RequestId", request.RequestId },
                { "Base_Url", "https://localhost:3000" }
            };

            var communication = new MpCommunication
            {
                TemplateId   = 0,
                DomainId     = 0,
                AuthorUserId = defaultAuthorId,
                EmailBody    = template.Body,
                EmailSubject = template.Subject,
                FromContact  = new MpContact {
                    ContactId = request.RequesterId, EmailAddress = request.RequesterEmail
                },
                ReplyToContact = new MpContact {
                    ContactId = request.RequesterId, EmailAddress = request.RequesterEmail
                },
                ToContacts = new List <MpContact> {
                    new MpContact {
                        ContactId = request.ChildcareContactId, EmailAddress = request.ChildcareContactEmail
                    }
                },
                MergeData = mergeData
            };

            _configurationWrapper.Setup(m => m.GetConfigIntValue("ChildcareRequestNotificationTemplate")).Returns(notificationTemplateId);
            _configurationWrapper.Setup(m => m.GetConfigIntValue("DefaultUserAuthorId")).Returns(defaultAuthorId);
            _communicationService.Setup(m => m.GetTemplate(notificationTemplateId)).Returns(template);
            _configurationWrapper.Setup(m => m.GetConfigValue("BaseMPUrl")).Returns("https://localhost:3000");
            _communicationService.Setup(m => m.SendMessage(It.IsAny <MinistryPlatform.Translation.Models.MpCommunication>(), false)).Verifiable();

            _fixture.SendChildcareRequestNotification(request);


            _communicationService.VerifyAll();
        }
Exemplo n.º 13
0
        public void ShouldSendTripFullConfirmation()
        {
            const int    pledgeCampaignId = 09786834;
            const string token            = "asdfasdf";
            const int    templateId       = 7878;

            var campaign = mockPledgeCampaign(pledgeCampaignId);

            var pledges = mockPledges(campaign);

            pledges.Add(
                new MpPledge()
            {
                CampaignName      = campaign.Name,
                CampaignStartDate = campaign.StartDate,
                CampaignEndDate   = campaign.EndDate,
                CampaignTypeId    = 1,
                CampaignTypeName  = campaign.Type,
                DonorId           = 3,
                PledgeCampaignId  = campaign.Id,
                PledgeDonations   = 1,
                PledgeId          = 4,
                PledgeStatus      = "active",
                PledgeStatusId    = 1,
                PledgeTotal       = 100
            }
                );

            var mergeData = new Dictionary <string, object>
            {
                { "Pledge_Campaign", campaign.Name }
            };

            var communication = new MpCommunication()
            {
                TemplateId   = templateId,
                AuthorUserId = 1,
                DomainId     = 1,
                EmailBody    = "<p> Ok random body of text </p>",
                EmailSubject = "more randomness",
                FromContact  = new MpContact()
                {
                    ContactId = 5, EmailAddress = "*****@*****.**"
                },
                MergeData      = mergeData,
                ReplyToContact = new MpContact {
                    ContactId = 5, EmailAddress = "*****@*****.**"
                },
                StartDate  = DateTime.Now,
                ToContacts = new List <MpContact> {
                    new MpContact {
                        ContactId = 45, EmailAddress = "*****@*****.**"
                    }
                }
            };

            var eventDetails = EventDetails(campaign.EventId);

            _apiUserReposity.Setup(m => m.GetToken()).Returns(token);
            _campaignService.Setup(m => m.GetPledgeCampaign(pledgeCampaignId, token)).Returns(campaign);
            _pledgeService.Setup(m => m.GetPledgesByCampaign(pledgeCampaignId, token)).Returns(pledges);

            _configurationWrapper.Setup(m => m.GetConfigIntValue("TripIsFullTemplateId")).Returns(templateId);
            _configurationWrapper.Setup(m => m.GetConfigIntValue("TripIsFullFromContactId")).Returns(5);
            _configurationWrapper.Setup(m => m.GetConfigValue("TripIsFullFromEmailAddress")).Returns("*****@*****.**");

            _eventService.Setup(m => m.GetEvent(campaign.EventId)).Returns(eventDetails);

            _communicationService.Setup(
                m => m.GetTemplateAsCommunication(templateId,
                                                  communication.FromContact.ContactId,
                                                  communication.FromContact.EmailAddress,
                                                  communication.FromContact.ContactId,
                                                  communication.FromContact.EmailAddress,
                                                  eventDetails.PrimaryContact.ContactId,
                                                  eventDetails.PrimaryContact.EmailAddress,
                                                  mergeData)).Returns(communication);


            _communicationService.Setup(m => m.SendMessage(communication, false)).Returns(1);

            _fixture.SendTripIsFullMessage(pledgeCampaignId);

            _apiUserReposity.VerifyAll();
            _tripRepository.VerifyAll();
            _configurationWrapper.VerifyAll();
            _communicationService.VerifyAll();
            _eventService.VerifyAll();
        }
Exemplo n.º 14
0
        public void ShouldSendPrimaryContactReminderEmails()
        {
            const string search         = "";
            const string apiToken       = "qwerty1234";
            var          defaultContact = new MpMyContact()
            {
                Contact_ID    = 321,
                Email_Address = "*****@*****.**"
            };

            var testEvent = new MpEvent()
            {
                EventId        = 32,
                EventStartDate = new DateTime(),
                EventEndDate   = new DateTime().AddHours(2),
                PrimaryContact = new MpContact()
                {
                    EmailAddress = "*****@*****.**",
                    ContactId    = 4321
                }
            };

            var testEventList = new List <MpEvent>()
            {
                testEvent
            };

            _apiUserService.Setup(m => m.GetToken()).Returns(apiToken);
            _eventService.Setup(m => m.EventsByPageViewId(apiToken, 2205, search)).Returns(testEventList);
            var eventList = testEventList.Select(evt => new crds_angular.Models.Crossroads.Events.Event()
            {
                name      = evt.EventTitle,
                EventId   = evt.EventId,
                EndDate   = evt.EventEndDate,
                StartDate = evt.EventStartDate,
                EventType = evt.EventType,
                location  = evt.Congregation,
                PrimaryContactEmailAddress = evt.PrimaryContact.EmailAddress,
                PrimaryContactId           = evt.PrimaryContact.ContactId
            });

            eventList.ForEach(evt =>
            {
                var mergeData = new Dictionary <string, object>
                {
                    { "Event_ID", evt.EventId },
                    { "Event_Title", evt.name },
                    { "Event_Start_Date", evt.StartDate.ToShortDateString() },
                    { "Event_Start_Time", evt.StartDate.ToShortTimeString() }
                };

                var contact = new MpContact()
                {
                    ContactId = defaultContact.Contact_ID, EmailAddress = defaultContact.Email_Address
                };
                var fakeCommunication = new MinistryPlatform.Translation.Models.MpCommunication()
                {
                    AuthorUserId   = defaultContact.Contact_ID,
                    DomainId       = 1,
                    EmailBody      = "Test event email stuff",
                    EmailSubject   = "Test Event Reminder",
                    FromContact    = contact,
                    MergeData      = mergeData,
                    ReplyToContact = contact,
                    TemplateId     = 14909,
                    ToContacts     = new List <MpContact>()
                    {
                        contact
                    }
                };

                var testContact = new MpMyContact()
                {
                    Contact_ID    = 9876,
                    Email_Address = "*****@*****.**"
                };

                _contactService.Setup(m => m.GetContactById(9876)).Returns(testContact);
                _communicationService.Setup(m => m.GetTemplateAsCommunication(14909,
                                                                              testContact.Contact_ID,
                                                                              testContact.Email_Address,
                                                                              evt.PrimaryContactId,
                                                                              evt.PrimaryContactEmailAddress,
                                                                              evt.PrimaryContactId,
                                                                              evt.PrimaryContactEmailAddress,
                                                                              mergeData)).Returns(fakeCommunication);
                _communicationService.Setup(m => m.SendMessage(fakeCommunication, false));
                _communicationService.Verify();
            });
            _fixture.EventsReadyForPrimaryContactReminder(apiToken);
            _eventService.Verify();
        }