Beispiel #1
0
        public async Task <IActionResult> AddContactToCampaign(Guid campaignid, Guid contactid)
        {
            try
            {
                if (_automailerContext.Campaigns.FirstOrDefault(x => x.CampaignId == campaignid) == null)
                {
                    return(NotFound(campaignid));
                }

                if (_automailerContext.Contacts.FirstOrDefault(x => x.ContactId == contactid) == null)
                {
                    return(NotFound(contactid));
                }

                CampaignContact campaignContact = CampaignContact.Create(campaignid, contactid);
                _automailerContext.CampaignContacts.Add(campaignContact);
                await _automailerContext.SaveChangesAsync();

                return(Ok(campaignContact));
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.Message);
                return(Problem(ex.Message));
            }
        }
Beispiel #2
0
        public async Task <IActionResult> Create([Bind("Name,EmailId,EmailName,EmailContent,EmailObject,EmailExpeditor,ContactsEmailAdress")] CampaignDto campaignDto)
        {
            if (ModelState.IsValid)
            {
                int emailId = 0;
                if (!string.IsNullOrEmpty(campaignDto.EmailName))
                {
                    Email email = new Email()
                    {
                        Name      = campaignDto.EmailName,
                        Content   = campaignDto.EmailContent,
                        Object    = campaignDto.EmailObject,
                        Expeditor = campaignDto.EmailExpeditor
                    };
                    _context.Email.Add(email);
                    await _context.SaveChangesAsync();

                    var emailSaved = _context.Email.FirstOrDefault(e => e.Name.Equals(email.Name));
                    emailId = emailSaved.Id;
                }
                else
                {
                    emailId = (int)campaignDto.EmailId;
                }

                Campaign campaign = new Campaign()
                {
                    Name    = campaignDto.Name,
                    EmailId = emailId,
                };

                var createdStatus = _context.CampaignStatus.FirstOrDefault(s => s.Name.Equals("Created"));
                campaign.CampaingStatusId = createdStatus.Id;

                _context.Campaign.Add(campaign);

                await _context.SaveChangesAsync();

                foreach (var item in campaignDto.ContactsEmailAdress)
                {
                    var contact         = _context.Contact.FirstOrDefault(s => s.EmailAdress.Equals(item));
                    var campaignSaved   = _context.Campaign.FirstOrDefault(c => c.Name.Equals(campaign.Name));
                    var campaignContact = new CampaignContact()
                    {
                        ContactId  = contact.Id,
                        CampaignId = campaignSaved.Id
                    };
                    _context.CampaignContact.Add(campaignContact);
                }
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["EmailId"] = new SelectList(_context.Email, "Id", "Id", campaignDto.EmailId);
            return(View(campaignDto));
        }
        private static List <CampaignContact> CreateCampaignContacts(Campaign campaign, List <Contact> contacts)
        {
            List <CampaignContact> campaignContacts = new List <CampaignContact>();

            foreach (Contact contact in contacts)
            {
                campaignContacts.Add(CampaignContact.Create(campaign.CampaignId, contact.ContactId));
            }
            return(campaignContacts);
        }
        public static Campaign UpdateCampaignContact(this Campaign campaign, IPrimaryContactModel contactModel, AllReadyContext _context)
        {
            if (campaign.CampaignContacts == null)
            {
                campaign.CampaignContacts = new List <CampaignContact>();
            }

            var     primaryCampaignContact = campaign.CampaignContacts.SingleOrDefault(tc => tc.ContactType == (int)ContactTypes.Primary);
            var     contactId = primaryCampaignContact?.ContactId;
            Contact primaryContact;

            var contactInfo = string.Concat(contactModel.PrimaryContactEmail?.Trim() + contactModel.PrimaryContactFirstName?.Trim(), contactModel.PrimaryContactLastName?.Trim(), contactModel.PrimaryContactPhoneNumber?.Trim());

            if (contactId == null)
            {
                primaryContact = new Contact();
            }
            else
            {
                primaryContact = _context.Contacts.Single(c => c.Id == contactId);
            }

            if (string.IsNullOrWhiteSpace(contactInfo) && primaryCampaignContact != null)
            {
                //Delete
                _context.CampaignContacts.Remove(primaryCampaignContact);
                _context.Remove(primaryCampaignContact);//Not Needed?
                _context.Remove(primaryCampaignContact.Contact);
            }
            else
            {
                primaryContact.Email       = contactModel.PrimaryContactEmail;
                primaryContact.FirstName   = contactModel.PrimaryContactFirstName;
                primaryContact.LastName    = contactModel.PrimaryContactLastName;
                primaryContact.PhoneNumber = contactModel.PrimaryContactPhoneNumber;
                _context.Update(primaryContact);

                if (primaryCampaignContact == null)
                {
                    primaryCampaignContact = new CampaignContact
                    {
                        Contact     = primaryContact,
                        Campaign    = campaign,
                        ContactType = (int)ContactTypes.Primary
                    };
                    campaign.CampaignContacts.Add(primaryCampaignContact);
                    _context.Update(primaryCampaignContact);
                }
            }
            return(campaign);
        }
Beispiel #5
0
        void CreateUpdateOrDeleteCampaignPrimaryContact(Campaign campaign, IPrimaryContactModel contactModel)
        {
            var hasPrimaryContact = campaign.CampaignContacts != null &&
                                    campaign.CampaignContacts.Any(campaignContact => campaignContact.ContactType == (int)ContactTypes.Primary);

            var addOrUpdatePrimaryContact = !string.IsNullOrWhiteSpace(string.Concat(contactModel.PrimaryContactEmail?.Trim() + contactModel.PrimaryContactFirstName?.Trim(), contactModel.PrimaryContactLastName?.Trim(), contactModel.PrimaryContactPhoneNumber?.Trim()));

            // Update existing Primary Campaign Contact
            if (hasPrimaryContact && addOrUpdatePrimaryContact)
            {
                var contactId = campaign.CampaignContacts.Single(campaignContact => campaignContact.ContactType == (int)ContactTypes.Primary).ContactId;
                var contact   = _context.Contacts.Single(c => c.Id == contactId);

                contact.Email       = contactModel.PrimaryContactEmail;
                contact.FirstName   = contactModel.PrimaryContactFirstName;
                contact.LastName    = contactModel.PrimaryContactLastName;
                contact.PhoneNumber = contactModel.PrimaryContactPhoneNumber;
            }
            // Delete existing Primary Campaign Contact
            else if (hasPrimaryContact && !addOrUpdatePrimaryContact)
            {
                var campaignContact = campaign.CampaignContacts.Single(cc => cc.ContactType == (int)ContactTypes.Primary);
                var contact         = _context.Contacts.Single(c => c.Id == campaignContact.ContactId);
                _context.Remove(contact);
                _context.Remove(campaignContact);
            }
            // Add a Primary Campaign Contact
            else if (!hasPrimaryContact && addOrUpdatePrimaryContact)
            {
                var campaignContact = new CampaignContact()
                {
                    ContactType = (int)ContactTypes.Primary,
                    Contact     = new Contact()
                    {
                        Email       = contactModel.PrimaryContactEmail,
                        FirstName   = contactModel.PrimaryContactFirstName,
                        LastName    = contactModel.PrimaryContactLastName,
                        PhoneNumber = contactModel.PrimaryContactPhoneNumber
                    },
                };

                if (campaign.CampaignContacts == null)
                {
                    campaign.CampaignContacts = new List <CampaignContact>();
                }
                campaign.CampaignContacts.Add(campaignContact);
                _context.Add(campaignContact);
            }
        }
        public async Task SetPrimaryContactInCampaignSummaryViewModel()
        {
            var campaignContact = new CampaignContact
            {
                ContactType = (int)ContactTypes.Primary,
                Contact     = new Contact {
                    FirstName = "FirstName", LastName = "LastName", Email = "Email", PhoneNumber = "111-1111-1111"
                }
            };

            Context.Campaigns.First().CampaignContacts = new List <CampaignContact> {
                campaignContact
            };
            Context.SaveChanges();

            var handler = new CampaignSummaryQueryHandler(Context);

            var result = await handler.Handle(new CampaignSummaryQuery { CampaignId = 111 });

            result.PrimaryContactFirstName.ShouldBe(campaignContact.Contact.FirstName);
            result.PrimaryContactLastName.ShouldBe(campaignContact.Contact.LastName);
            result.PrimaryContactEmail.ShouldBe(campaignContact.Contact.Email);
            result.PrimaryContactPhoneNumber.ShouldBe(campaignContact.Contact.PhoneNumber);
        }
        protected override void LoadTestData()
        {
            var testOrg = new Organization
            {
                Name      = "My Test Campaign",
                LogoUrl   = "http://www.htbox.org/testCampaign",
                WebUrl    = "http://www.htbox.org",
                Campaigns = new List <Campaign>()
            };

            var testCampaign1 = new Campaign
            {
                Name = "Test Campaign 1",
                ManagingOrganization = testOrg,
                CampaignContacts     = new List <CampaignContact>()
            };

            var testCampaign2 = new Campaign
            {
                Name = "Test Campaign 2",
                ManagingOrganization = testOrg,
                CampaignContacts     = new List <CampaignContact>()
            };

            var primaryCampaignContact1 = new CampaignContact
            {
                ContactType = (int)ContactTypes.Primary,
                Contact     = new Contact
                {
                    Email = "*****@*****.**"
                }
            };

            var primaryCampaignContact2 = new CampaignContact
            {
                ContactType = (int)ContactTypes.Primary,
                Contact     = new Contact()
            };

            var testEvent1 = new Event
            {
                Id            = 5,
                Name          = "Test Event Name",
                Campaign      = testCampaign1,
                CampaignId    = testCampaign1.Id,
                StartDateTime = DateTime.UtcNow.AddDays(10),
                EndDateTime   = DateTime.UtcNow.AddDays(10).AddHours(8),
                Location      = new Location {
                    Id = 2
                },
                RequiredSkills = new List <EventSkill>()
            };

            var testEvent2 = new Event
            {
                Id            = 7,
                Name          = "Test Event 2",
                Campaign      = testCampaign2,
                CampaignId    = testCampaign2.Id,
                StartDateTime = DateTime.UtcNow.AddDays(3),
                EndDateTime   = DateTime.UtcNow.AddDays(3).AddHours(4),
                Location      = new Location {
                    Id = 5
                },
                RequiredSkills = new List <EventSkill>()
            };

            var username1 = $"*****@*****.**";
            var user1     = new ApplicationUser {
                UserName = username1, Email = username1, EmailConfirmed = true
            };

            Context.Users.Add(user1);

            var username2 = $"*****@*****.**";
            var user2     = new ApplicationUser {
                UserName = username2, Email = username2, EmailConfirmed = true
            };

            Context.Users.Add(user2);

            testCampaign1.CampaignContacts.Add(primaryCampaignContact1);
            testCampaign2.CampaignContacts.Add(primaryCampaignContact2);

            testOrg.Campaigns.Add(testCampaign1);
            testOrg.Campaigns.Add(testCampaign2);

            Context.Organizations.Add(testOrg);
            Context.Events.Add(testEvent1);
            Context.Events.Add(testEvent2);

            var testTask1 = new AllReadyTask
            {
                Id      = 7,
                Event   = testEvent1,
                EventId = testEvent1.Id
                          // Required Skills?
            };

            var testTask2 = new AllReadyTask
            {
                Id      = 9,
                Event   = testEvent2,
                EventId = testEvent2.Id
                          // Required Skills?
            };

            Context.Tasks.Add(testTask1);
            Context.Tasks.Add(testTask2);

            Context.SaveChanges();
        }