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)); }
Task ICampaignAppService.UpdateAsync(Guid id, CreateUpdateCampaignDto input) { throw new NotImplementedException(); }