예제 #1
0
 public void CampaignExists()
 {
     var context = ServiceProvider.GetService<AllReadyContext>();
     var query = new CampaignDetailQuery { CampaignId = 1 };
     var handler = new CampaignDetailQueryHandler(context);
     var result = handler.Handle(query);
     Assert.NotNull(result);
 }
 public async Task CampaignDoesNotExist()
 {
     var context = ServiceProvider.GetService<AllReadyContext>();
     var query = new CampaignDetailQuery { CampaignId = 0 };
     var handler = new CampaignDetailQueryHandler(context);
     var result = await handler.Handle(query);
     Assert.Null(result);
 }
        public async Task CampaignDoesNotExist()
        {
            var context = ServiceProvider.GetService <AllReadyContext>();
            var query   = new CampaignDetailQuery {
                CampaignId = 0
            };
            var handler = new CampaignDetailQueryHandler(context);
            var result  = await handler.Handle(query);

            Assert.Null(result);
        }
예제 #4
0
        public void CampaignExists()
        {
            var context = ServiceProvider.GetService <AllReadyContext>();
            var query   = new CampaignDetailQuery {
                CampaignId = 1
            };
            var handler = new CampaignDetailQueryHandler(context);
            var result  = handler.Handle(query);

            Assert.NotNull(result);
        }
        public async Task ReturnCampaignManagerInvitesWithStatusPending_WhenNotRejectedAcceptedOrRevoked()
        {
            var context = ServiceProvider.GetService <AllReadyContext>();
            var query   = new CampaignDetailQuery {
                CampaignId = _campaignId
            };
            var handler = new CampaignDetailQueryHandler(context);
            CampaignDetailViewModel result = await handler.Handle(query);

            result.CampaignManagerInvites.Count().ShouldBe(1);
            result.CampaignManagerInvites.Single().Id.ShouldBe(1);
            result.CampaignManagerInvites.Single().InviteeEmail.ShouldBe("*****@*****.**");
            result.CampaignManagerInvites.Single().Status.ShouldBe(CampaignDetailViewModel.CampaignManagerInviteStatus.Pending);
        }
        public async Task ReturnCampaignManagerInvitesWithStatusAccepted_WhenInviteIsAccepted()
        {
            var context = ServiceProvider.GetService <AllReadyContext>();
            var query   = new CampaignDetailQuery {
                CampaignId = _campaignId
            };
            var handler = new CampaignDetailQueryHandler(context);
            CampaignManagerInvite invite = context.CampaignManagerInvites.Where(c => c.CampaignId == _campaignId).Single();

            invite.AcceptedDateTimeUtc = new DateTime(2015, 5, 29);
            context.SaveChanges();

            CampaignDetailViewModel result = await handler.Handle(query);

            result.CampaignManagerInvites.Count().ShouldBe(1);
            result.CampaignManagerInvites.Single().Id.ShouldBe(1);
            result.CampaignManagerInvites.Single().InviteeEmail.ShouldBe("*****@*****.**");
            result.CampaignManagerInvites.Single().Status.ShouldBe(CampaignDetailViewModel.CampaignManagerInviteStatus.Accepted);
        }
예제 #7
0
 public async Task <QueryResult <CampaignDetail> > GetCampaignDetailByCampaignAsync(int campaignId, CampaignDetailQuery campaignDetailQuery)
 {
     return(await unitOfWork.CampaignDetailRepository.GetCampaignDetailAsync(campaignId, campaignDetailQuery));
 }
예제 #8
0
        public static IQueryable <CampaignDetail> ApplyFiltering(this IQueryable <CampaignDetail> query, CampaignDetailQuery queryObj)
        {
            if (queryObj.Customer != null && !string.IsNullOrEmpty(queryObj.Customer.FirstName))
            {
                query = query.Where(c => c.Customer.FirstName.Contains(queryObj.Customer.FirstName.Trim()));
            }

            if (queryObj.Customer != null && !string.IsNullOrEmpty(queryObj.Customer.LastName))
            {
                query = query.Where(c => c.Customer.LastName.Contains(queryObj.Customer.LastName.Trim()));
            }

            if (queryObj.Customer != null && !string.IsNullOrEmpty(queryObj.Customer.CellPhone))
            {
                query = query.Where(c => c.Customer.CellPhone.Contains(queryObj.Customer.CellPhone.Trim()));
            }

            if (queryObj.TotalCallsNumber.HasValue)
            {
                query = query.Where(c => c.TotalCallsNumber == queryObj.TotalCallsNumber);
            }

            if (!string.IsNullOrEmpty(queryObj.LastCallDuration))
            {
                query = query.Where(c => c.LastCallDuration.Contains(queryObj.LastCallDuration.Trim()));
            }

            if (!string.IsNullOrEmpty(queryObj.State))
            {
                query = query.Where(c => c.State.Contains(queryObj.State.Trim()));
            }

            return(query);
        }
예제 #9
0
        public async Task <QueryResult <CampaignDetail> > GetCampaignDetailAsync(int campaignId, CampaignDetailQuery queryObj)
        {
            var result = new QueryResult <CampaignDetail>();

            var query = entities
                        .Include(cd => cd.Customer)
                        .Where(cd => cd.CampaignId == campaignId)
                        .AsQueryable();

            query = query.ApplyFiltering(queryObj);
            var columnsMap = new Dictionary <string, Expression <Func <CampaignDetail, object> > >()
            {
                ["customer.firstName"]    = cd => cd.Customer.FirstName,
                ["customer.lastName"]     = cd => cd.Customer.LastName,
                ["customer.cellPhone"]    = cd => cd.Customer.LastName,
                ["totalCallsNumber"]      = cd => cd.TotalCallsNumber,
                ["lastCallDuration"]      = cd => cd.LastCallDuration,
                ["lastCallDate"]          = cd => cd.LastCallDate,
                ["lastValidCallDuration"] = cd => cd.LastValidCallDuration,
                ["lastValidCallDate"]     = cd => cd.LastValidCallDate,
                ["state"] = cd => cd.State,
            };

            query = query.ApplyOrdering(queryObj, columnsMap);

            result.TotalItems = await query.CountAsync();

            query        = query.ApplyPaging(queryObj);
            result.Items = await query.ToListAsync();

            return(result);
        }