private IPredicate DontCareAboutRolePredicates(MessageFilterDto filter) { var predicates = new List <IPredicate>(); var opt1 = new List <IPredicate>(); if (filter.Sender != Guid.Empty) { opt1.Add(new SimplePredicate(nameof(Message.UserSenderId), ValueComparingOperator.Equal, filter.Sender)); } if (filter.Receiver != Guid.Empty) { opt1.Add(new SimplePredicate(nameof(Message.UserReceiverId), ValueComparingOperator.Equal, filter.Receiver)); } predicates.Add(new CompositePredicate(opt1, LogicalOperator.AND)); var opt2 = new List <IPredicate>(); if (filter.Receiver != Guid.Empty) { opt2.Add(new SimplePredicate(nameof(Message.UserSenderId), ValueComparingOperator.Equal, filter.Receiver)); } if (filter.Sender != Guid.Empty) { opt2.Add(new SimplePredicate(nameof(Message.UserReceiverId), ValueComparingOperator.Equal, filter.Sender)); } predicates.Add(new CompositePredicate(opt2, LogicalOperator.AND)); return(new CompositePredicate(predicates, LogicalOperator.OR)); }
protected override IQuery <Message> ApplyWhereClause(IQuery <Message> query, MessageFilterDto filter) { return(!filter.ChatId.HasValue ? query : query.Where(new SimplePredicate(nameof(Message.ChatId), ValueComparingOperator.Equal, filter.ChatId.Value))); }
protected override IQuery <Message> ApplyWhereClause(IQuery <Message> query, MessageFilterDto filter) { var simplePredicate = new SimplePredicate(nameof(Message.FriendshipId), ValueComparingOperator.Equal, filter.FriendshipId); return(filter.FriendshipId.Equals(null) ? query : query.Where(simplePredicate)); }
private IPredicate CareAboutRolePredicates(MessageFilterDto filter) { var predicates = new List <IPredicate>(); predicates.Add(new SimplePredicate(nameof(Message.UserSenderId), ValueComparingOperator.Equal, filter.Sender)); predicates.Add(new SimplePredicate(nameof(Message.UserReceiverId), ValueComparingOperator.Equal, filter.Receiver)); return(new CompositePredicate(predicates, LogicalOperator.AND)); }
public async Task ApplyWhereClause_EmptyFilter_ReturnsNull() { var mockManager = new QueryMockManager(); var mapperMock = mockManager.ConfigureMapperMock <Message, MessageDto, MessageFilterDto>(); var queryMock = mockManager.ConfigureQueryMock <Message>(); var messageQueryObject = new MessageQueryObject(mapperMock.Object, queryMock.Object); var filter = new MessageFilterDto(); var temp = await messageQueryObject.ExecuteQuery(filter); Assert.AreEqual(null, mockManager.CapturedPredicate); }
protected override IQuery <Message> ApplyWhereClause(IQuery <Message> query, MessageFilterDto filter) { throw new NotImplementedException(); /* * if (string.IsNullOrWhiteSpace(filter.Email)) * { * return query; * } * return query.Where(new SimplePredicate(nameof(AppUser.Email), ValueComparingOperator.Equal, filter.Email)); */ }
private IPredicate CreateCompositePredicateFromFilter(MessageFilterDto filter) { var predicates = new List <IPredicate>(); predicates.Add(filter.CareAboutRole ? CareAboutRolePredicates(filter) : DontCareAboutRolePredicates(filter)); if (filter.UnseenOnly) { predicates.Add(new SimplePredicate(nameof(Message.Seen), ValueComparingOperator.Equal, false)); } return(new CompositePredicate(predicates, LogicalOperator.AND)); }
public async Task ApplyWhereClause_FilterByUserIdAndTypeSender_ReturnsCorrectPredicate() { Guid filteredUserId = Guid.NewGuid(); MessageUserFilterType filterType = MessageUserFilterType.Sender; var mockManager = new QueryMockManager(); var expectedPredicate = new SimplePredicate(nameof(Message.UserSenderId), ValueComparingOperator.Equal, filteredUserId); var mapperMock = mockManager.ConfigureMapperMock <Message, MessageDto, MessageFilterDto>(); var queryMock = mockManager.ConfigureQueryMock <Message>(); var messageQueryObject = new MessageQueryObject(mapperMock.Object, queryMock.Object); var filter = new MessageFilterDto { UserId = filteredUserId, UserFilterType = filterType }; var temp = await messageQueryObject.ExecuteQuery(filter); Assert.AreEqual(expectedPredicate, mockManager.CapturedPredicate); }
public async Task ApplyWhereClause_FilterByUserId_ReturnsCorrectPredicate() { Guid filteredUserId = Guid.NewGuid(); var mockManager = new QueryMockManager(); var expectedPredicate = new CompositePredicate( new List <IPredicate> { new SimplePredicate(nameof(Message.UserReceiverId), ValueComparingOperator.Equal, filteredUserId), new SimplePredicate(nameof(Message.UserSenderId), ValueComparingOperator.Equal, filteredUserId) }, LogicalOperator.OR); var mapperMock = mockManager.ConfigureMapperMock <Message, MessageDto, MessageFilterDto>(); var queryMock = mockManager.ConfigureQueryMock <Message>(); var messageQueryObject = new MessageQueryObject(mapperMock.Object, queryMock.Object); var filter = new MessageFilterDto { UserId = filteredUserId }; var temp = await messageQueryObject.ExecuteQuery(filter); Assert.AreEqual(expectedPredicate, mockManager.CapturedPredicate); }
public async Task <QueryResultDto <MessageDto, MessageFilterDto> > SentMessages(UserDto user, MessageFilterDto filter) { filter.SortCriteria = "Time"; filter.Sender = user.Id; filter.CareAboutRole = true; using (UnitOfWorkProvider.Create()) { return(await messageService.ListMessageAsync(filter)); } }
public async Task <QueryResultDto <MessageDto, MessageFilterDto> > MessagesBetweenUsers(UserDto userA, UserDto userB, MessageFilterDto filter) { filter.SortCriteria = "Time"; filter.SortAscending = false; filter.Sender = userA.Id; filter.Receiver = userB.Id; filter.CareAboutRole = false; using (UnitOfWorkProvider.Create()) { return(await messageService.ListMessageAsync(filter)); ; } }
protected override IQuery <Message> ApplyWhereClause(IQuery <Message> query, MessageFilterDto filter) { return(filter == null ? query : query.Where(CreateCompositePredicateFromFilter(filter))); }