コード例 #1
0
        public void Campaign_ValidateModel()
        {
            var appService = BuildAppService();
            var dto        = new AddCampaignDto()
            {
                Name            = "",
                EmailTemplateId = 1
            };

            List <ValidationResult> result = ModelValidator.Validate <AddCampaignDto>(dto);

            Assert.AreEqual(expected: 3, result.Count);
            Assert.AreEqual(expected: Messages.AddCampaignDtoNameRequired, result.First(v => v.MemberNames.Contains(nameof(AddCampaignDto.Name))).ErrorMessage);
            Assert.AreEqual(expected: Messages.AddCampaignDto_Events_MinimumOneElementRequired, result.First(v => v.MemberNames.Contains(nameof(AddCampaignDto.Events))).ErrorMessage);
            Assert.AreEqual(expected: Messages.AddCampaignDto_ContactLists_MinimumOneElementRequired, result.First(v => v.MemberNames.Contains(nameof(AddCampaignDto.ContactLists))).ErrorMessage);

            dto.Name = string.Join("", Enumerable.Range(0, 200).Select(e => e.ToString()));
            result   = ModelValidator.Validate <AddCampaignDto>(dto);

            Assert.AreEqual(expected: Messages.AddCampaignDtoNameMaxLength, result.First(v => v.MemberNames.Contains(nameof(AddCampaignDto.Name))).ErrorMessage);

            dto.Name = "123";
            result   = ModelValidator.Validate <AddCampaignDto>(dto);
            Assert.AreEqual(expected: Messages.AddCampaignDtoNameMinLength, result.First(v => v.MemberNames.Contains(nameof(AddCampaignDto.Name))).ErrorMessage);
        }
コード例 #2
0
        public async Task Campaign_Create_CreateCampaignAndAddJobIdToEvents()
        {
            var appService     = BuildAppService();
            var newCampaignDto = new AddCampaignDto()
            {
                Name            = "New 123",
                EmailTemplateId = 1,
                Events          = new List <AddEventDto>
                {
                    new AddEventDto
                    {
                        Date = DateTime.Now.AddDays(5)
                    },
                    new AddEventDto
                    {
                        Date = DateTime.Now.AddDays(8)
                    }
                },
                ContactLists = new List <int>
                {
                    1
                }
            };

            EntityResponse <CampaignDto> result = await appService.CreateCampaignAsync(newCampaignDto);

            Assert.AreEqual(expected: true, result.Ok);
            foreach (var item in result.Data.Events)
            {
                Assert.AreEqual(expected: false, string.IsNullOrWhiteSpace(item.ScheduleJobId));
            }
        }
コード例 #3
0
        public async Task Campaign_Create_CreateCampaignAndAddContactList()
        {
            var appService     = BuildAppService();
            var newCampaignDto = new AddCampaignDto()
            {
                Name            = "New 123",
                EmailTemplateId = 1,
                Events          = new List <AddEventDto>
                {
                    new AddEventDto
                    {
                        Date = DateTime.Now.AddDays(5)
                    }
                },
                ContactLists = new List <int>
                {
                    1
                }
            };

            EntityResponse <CampaignDto> result = await appService.CreateCampaignAsync(newCampaignDto);

            Assert.AreEqual(expected: true, result.Ok);
            Assert.AreEqual(expected: 1, result.Data.ContactLists.Count);
            Assert.AreEqual(expected: newCampaignDto.Name, result.Data.Name);
            Assert.AreEqual(expected: 1, result.Data.Events.Count);
            Assert.AreEqual(expected: newCampaignDto.Events.First().Date.Date, result.Data.Events.First().Date);
            Assert.AreEqual(expected: newCampaignDto.Events.First().Date, result.Data.Events.First().Hour);
        }
コード例 #4
0
        public void Campaign_Create_ValidateEntity()
        {
            var newCampaignDto = new AddCampaignDto()
            {
                Name            = "New 123",
                EmailTemplateId = 1,
                Events          = new List <AddEventDto>
                {
                    new AddEventDto
                    {
                        Date = DateTime.Now.AddDays(5)
                    }
                },
                ContactLists = new List <int>
                {
                    1
                }
            };

            var result = newCampaignDto.CreateEntity();

            Assert.AreEqual(expected: newCampaignDto.Events.Count, result.Events.Count);
            Assert.AreEqual(expected: newCampaignDto.Name, result.Name);
            Assert.AreEqual(expected: newCampaignDto.EmailTemplateId, result.EmailTemplateId);
        }
コード例 #5
0
        public async Task <ActionResult <CampaignDto> > CreateAsync([FromBody] AddCampaignDto newCampaign)
        {
            var result = await _campaignAppService.CreateCampaignAsync(newCampaign);

            if (!result.Ok)
            {
                return(BadRequest(result));
            }
            return(result.Data);
        }
コード例 #6
0
        public async Task <EntityResponse <CampaignDto> > CreateCampaignAsync(AddCampaignDto newCampaignDto)
        {
            var modelValidationResult = ModelValidator.ValidateAsEntityValidation(newCampaignDto, "ECACC-01");

            if (!modelValidationResult.Ok)
            {
                return(modelValidationResult.As <CampaignDto>());
            }

            Campaign           campaign = newCampaignDto.CreateEntity();
            List <ContactList> lists    = _unitOfWork.GetRepository <ContactList>().AsQueryable().Where(c => newCampaignDto.ContactLists.Contains(c.Id)).ToList();

            campaign.AddList(lists);

            await _unitOfWork.BeginTransactionAsync();

            await _unitOfWork.GetRepository <Campaign>().AddAsync(campaign);

            await _unitOfWork.SaveChangesAsync();

            campaign.Events.ForEach(e =>
            {
                e.ScheduleJobId = _backgroundJobManager.Schedule <EmailCampaignSender>(s => s.SendCampaign(campaign.Id), e.Hour);
            });

            await _unitOfWork.SaveChangesAsync();

            _unitOfWork.Commit();

            var dto = (from c in _unitOfWork.GetRepository <Campaign>().AsQueryable()
                       where c.Id == campaign.Id
                       select new CampaignDto
            {
                Id = c.Id,
                Name = c.Name,
                Events = (from e in c.Events
                          select new EventDto
                {
                    ScheduleJobId = e.ScheduleJobId,
                    Date = e.Date,
                    Hour = e.Hour
                }).ToList(),
                ContactLists = (from l in c.ContactLists
                                select new ContactListDto
                {
                    Id = l.Id,
                    Name = l.Name,
                }).ToList()
            }).First();

            return(EntityResponse.CreateOk().As(dto));
        }
コード例 #7
0
        public async Task Campaign_Create_ValidateModel()
        {
            var appService     = BuildAppService();
            var newCampaignDto = new AddCampaignDto()
            {
                Name            = "",
                EmailTemplateId = 1
            };

            EntityResponse response = await appService.CreateCampaignAsync(newCampaignDto);

            Assert.AreEqual(expected: false, response.Ok);
            Assert.IsInstanceOfType(response.ErrorData, typeof(List <ValidationResult>));
            Assert.AreEqual(expected: 3, (response.ErrorData as List <ValidationResult>).Count);
        }