コード例 #1
0
        public async Task <PagedDto <ContactDetailsDto> > GetContacts(GetPagedItemsDto dto)
        {
            var query  = new GetContactsQuery(dto);
            var result = await _mediator.Send(query);

            return(result);
        }
コード例 #2
0
 public async Task <IEnumerable <ContactDto> > Handle(GetContactsQuery request, CancellationToken cancellationToken)
 {
     return(await _context.Contacts
            .Where(x => x.Id > 0)
            .OrderBy(x => x.Name)
            //.ProjectTo<ContactDto>(_mapper.ConfigurationProvider)
            .ProjectToListAsync <ContactDto>(_mapper.ConfigurationProvider));
 }
コード例 #3
0
        public async Task <PagedDto <ContactDetailsDto> > Handle(GetContactsQuery request, CancellationToken cancellationToken)
        {
            var result = await Context.Contacts
                         .Include(c => c.ContactNumbers)
                         .GetPagedResultOf <Contact, ContactDetailsDto>(request.Dto, Mapper, cancellationToken);

            return(result);
        }
コード例 #4
0
            public async Task <List <ContactVm> > Handle(GetContactsQuery request, CancellationToken cancellationToken)
            {
                var response = await _contactService.GetContactsAsync();

                var viewModel = _mapper.Map <List <ContactVm> >(response);

                return(await Task.FromResult(viewModel));
            }
コード例 #5
0
        public async Task <Result <List <ContactDto> > > Handle(GetContactsQuery request, CancellationToken cancellationToken)
        {
            var contacts = (await _contactRepository.GetAll()).Select(x => new ContactDto(x.Id, x.Name)).ToList();

            if (contacts.Count == 0)
            {
                return(Result.NoContent(contacts));
            }
            return(Result.Ok(contacts));
        }
コード例 #6
0
            public async Task <IEnumerable <ContactDto> > Handle(GetContactsQuery request, CancellationToken cancellationToken)
            {
                cancellationToken.ThrowIfCancellationRequested();

                var persons = applicationDataContext.Contacts
                              .Include(c => c.Source)
                              .AsQueryable();

                return(mapper.ProjectTo <ContactDto>(persons));
            }
コード例 #7
0
        public IEnumerable <Contact> Get()
        {
            QueriesOrCommands.Add(nameof(GetContactsQuery));

            var query  = new GetContactsQuery();
            var result = GetContacts(query);

            GetContactsQueryCount++;

            return(result);
        }
コード例 #8
0
        public async Task <IEnumerable <Domain.Entities.Contact> > Handle(GetContactsQuery request, CancellationToken cancellationToken)
        {
            var excludeUsername = _currentUserService.UserId;
            var result          = await _userService.GetContacts(excludeUsername);

            // TODO: what should we do with the result
            if (!result.Result.Succeeded)
            {
            }

            return(result.Contacts);
        }
コード例 #9
0
        public async Task ContactHandler_Get_GetAllAsync()
        {
            //Arrange
            var dateTimeNow           = DateTime.Now;
            var command               = new GetContactsQuery();
            var mockContactRepository = new Mock <ContactRepository>(null);

            //Act
            mockContactRepository.Setup(x => x.GetAsync(It.IsAny <CancellationToken>())).ReturnsAsync(It.IsAny <List <Contact> >);
            var sut    = new GetContactsQueryHandler(mockContactRepository.Object);
            var result = await sut.Handle(command, CancellationToken.None);

            //Act
            mockContactRepository.Verify(x => x.GetAsync(It.IsAny <CancellationToken>()), Times.Once);
            mockContactRepository.VerifyNoOtherCalls();
        }
コード例 #10
0
        public async Task Sorted_Results()
        {
            using var factory = new AppDbContextFactory();
            using var context = factory.CreateContext(true);

            // Arrange
            var sut     = new GetContactsHandler(_logger, context);
            var contact = context.Contacts.First();
            var cmd     = new GetContactsQuery {
                SortBy = nameof(contact.Name), Ascending = false
            };

            // Act
            var results = await sut.Handle(cmd);

            // Assert
            Assert.True(results.Last().Name == contact.Name);
            Assert.True(results.Count() == 2);
        }
コード例 #11
0
        public async Task Paged_Results()
        {
            using var factory = new AppDbContextFactory();
            using var context = factory.CreateContext(true);

            // Arrange
            var sut     = new GetContactsHandler(_logger, context);
            var contact = context.Contacts.First();
            var cmd     = new GetContactsQuery {
                Skip = 1, Take = 1
            };

            // Act
            var results = await sut.Handle(cmd);

            // Assert
            Assert.DoesNotContain(results, r => r.Name == contact.Name);
            Assert.True(results.Count() == 1);
        }
コード例 #12
0
        public async Task <IListViewModel <ContactViewModel> > Handle(GetContactsQuery request, CancellationToken cancellationToken)
        {
            var data = await context.Contacts
                       .Include(y => y.User)
                       .OrderBy(x => request.OrderBy)
                       .Where(x => x.UserId == request.UserId)
                       .ToPagedListAsync(request.Page, request.PageSize);

            if (data.Count == 0)
            {
                throw new NotFoundException("Dados não econtrados.");
            }

            return(new ListViewModel <ContactViewModel>
            {
                Data = mapper.Map <IEnumerable <ContactViewModel> >(data),
                HasNext = data.HasNextPage,
                TotalItemCount = data.TotalItemCount
            });
        }
コード例 #13
0
        public void SearchCallsCollaborators()
        {
            var rnd      = new Random();
            var page     = rnd.Next(1, 100);
            var size     = rnd.Next(1, 100);
            var text     = Faker.Lorem.GetFirstWord();
            var contact  = ContactEntityObjectMother.Random();
            var toReturn = new SearchResults <ContactDto>(
                rnd.Next(1, 100),
                new List <ContactDto>()
            {
                new ContactDto()
                {
                    FirstName   = contact.Name.FirstName,
                    LastName    = contact.Name.LastName,
                    ContactId   = contact.Id.Value,
                    EmailsCount = contact.EmailAddresses.Count,
                    PhonesCount = contact.PhoneNumbers.Count
                }
            }
                );

            repo.Setup(
                x => x.SearchByCriteria(It.Is <ContactSearchCriteria>(p => p.PageNumber == page && p.PageSize == size && p.Text == text)))
            .Returns(toReturn);

            var cmd     = new GetContactsQuery(page, size, text);
            var handler = new GetContactsQueryHandler(uow.Object, eventBus.Object, repo.Object);

            var result = handler.Handle(cmd, new System.Threading.CancellationToken()).Result;

            Assert.IsNotNull(result);
            Assert.AreEqual(toReturn.Total, result.Total);
            Assert.AreEqual(1, result.Results.Count());
            Assert.AreEqual(contact.Id.Value, result.Results.First().ContactId);
            Assert.AreEqual(contact.Name.FirstName, result.Results.First().FirstName);
            Assert.AreEqual(contact.Name.LastName, result.Results.First().LastName);
            Assert.AreEqual(contact.EmailAddresses.Count, result.Results.First().EmailsCount);
            Assert.AreEqual(contact.PhoneNumbers.Count, result.Results.First().PhonesCount);
        }
        protected override async Task Handle(ConfirmInfectionCommand request, CancellationToken cancellationToken)
        {
            var profile = await repository.GetProfileAsync(request.ProfileId, request.DeviceId, cancellationToken);

            if (profile == null)
            {
                throw new DomainException("Profile not found.");
            }
            if (profile.AuthToken != request.MfaToken)
            {
                throw new DomainException("Wrong maf token.");
            }
            if (profile.AuthToken == request.MfaToken)
            {
                if (profile.ConfirmedInfection == false)
                {
                    profile.ConfirmInfection();
                    await repository.UnitOfWork.SaveChangesAsync(cancellationToken);

                    if (request.SendingNotificationsEnabled)
                    {
                        var query  = new GetContactsQuery(profile.DeviceId, profile.Id);
                        var result = await mediator.Send(query, cancellationToken);

                        var groupedContacts = result.Contacts.GroupBy(x => x.ProfileId);
                        foreach (var contact in groupedContacts)
                        {
                            var firstContactFromGroup = contact.First();
                            var data    = new { messageType = "CORONA_INFECTION_CONFIRMED" };
                            var command = new SendPushNotificationCommand(firstContactFromGroup.ProfileId, data);
                            await mediator.Send(command, cancellationToken);
                        }
                    }
                }
            }
        }
コード例 #15
0
        async Task <IEnumerable <ContactView> > IQueryHandler <GetContactsQuery, IEnumerable <ContactView> > .Handle(GetContactsQuery query,
                                                                                                                     CancellationToken cancellationToken)
        {
            var result = await _db.QueryAsync <Entity.ContactView>(
                new CommandDefinition(
                    commandText : Entity.ContactView.Sql,
                    parameters : new
            {
                OrganisationId = query.OrganisationId,
            },
                    commandType : CommandType.Text,
                    cancellationToken : cancellationToken
                    ));

            return(result.Select(_ => new ContactView(
                                     imgLink: _.ImgLink,
                                     mdBody: _.MdBody,
                                     contactType: _.Type
                                     )));
        }
コード例 #16
0
 public async Task <IEnumerable <ContactViewModel> > Get([FromQuery] GetContactsQuery query) => await _mediator.Send(query);
コード例 #17
0
        public async Task <List <GetContactsQueryDto> > Handle(GetContactsQuery request, CancellationToken cancellationToken)
        {
            var contacts = await contactRepository.GetAsync(cancellationToken);

            return(contacts.Select(GetContactsQueryDto.MapToDto).ToList());
        }
コード例 #18
0
 public async Task <ActionResult <List <ContactDto> > > Get([FromQuery] GetContactsQuery query)
 {
     return(await Sender.Send(query));
 }
コード例 #19
0
        public async Task <ActionResult <IListViewModel <ContactViewModel> > > GetAll([FromQuery] GetContactsQuery query)
        {
            if (query is null)
            {
                BadRequest();
            }

            query.UserId = UserId;

            return(Ok(await Mediator.Send(query)));
        }