Exemplo n.º 1
0
        public async Task <CampaignDto> CreateAsync(CreateUpdateCampaignDto input)
        {
            List <Group> groups = new List <Group>();

            //var group = _groupRepository.GetAsync();
            if (input.GroupId.Count > 0)
            {
                foreach (Guid groupDto in input.GroupId)
                {
                    var group = await _groupRepository.GetAsync(groupDto);

                    groups.Add(group);
                }
            }
            var campaign = await _campaignManager.CreateAsync(
                input.Name,
                input.Description,
                input.Schedule,
                input.Title,
                input.Content,
                groups
                );

            await _campaignRepository.InsertAsync(campaign);

            var emails = await _emailRepository.GetListAsync();


            foreach (Group group in campaign.Groups)
            {
                var contacts = await _contactRepository.GetListAsync();

                var listContacts = new List <Contact>();

                /*contacts.ForEach( async (c) =>
                 * {
                 *  await _contactRepository.EnsureCollectionLoadedAsync(c, x => x.ContactGroups);
                 * });*/
                await _groupRepository.EnsureCollectionLoadedAsync(group, x => x.ContactGroups);

                foreach (var cId in group.ContactGroups)
                {
                    listContacts.Add(cId.Contact);
                }
                //contacts = contacts.Where(c => c.Id.Equals(group.ContactGroups.)).ToList();
                foreach (Contact c in listContacts)
                {
                    var email = emails.OrderBy(e => e.Order).FirstOrDefault();
                    //AnotherEmailService service = new AnotherEmailService();
                    //await _emailService.SendEmailAsync(email.EmailString, c.Email, input.Content, input.Title);
                    //await _anotherEmailService.SendEmailAsync(campaign.Name, email.EmailString, c.Email, campaign.Title, campaign.Content, email.EmailString, email.Password);
                    await _backgroundJobManager.EnqueueAsync(
                        new EmailSetting
                    {
                        Host        = "smtp.gmail.com",
                        Port        = 587,
                        Mail        = email.EmailString,
                        Password    = email.Password,
                        To          = c.Email,
                        Subject     = campaign.Title,
                        Body        = campaign.Content,
                        DisplayName = campaign.Name
                    });

                    email.Order++;
                }
            }
            await _emailRepository.UpdateManyAsync(emails);

            return(ObjectMapper.Map <Campaign, CampaignDto>(campaign));
        }
Exemplo n.º 2
0
 Task ICampaignAppService.UpdateAsync(Guid id, CreateUpdateCampaignDto input)
 {
     throw new NotImplementedException();
 }