public Task <PagedResult <int> > Handle(ToursByPlayerIdQuery request, CancellationToken cancellationToken)
        {
            var teamPlayerLinksRepo = _uow.GetReadOnlyRepository <TeamPlayerLink>();

            IPaginate <TeamPlayerLink> teamPlayerLinks = teamPlayerLinksRepo
                                                         .GetList(
                tpl => tpl.PlayerId == request.PlayerId,
                size: request.Size,
                index: request.Page);

            if (teamPlayerLinks.Count == 0)
            {
                return(null);
            }

            var teamIds = teamPlayerLinks.Items.Select(x => x.TeamId).ToList();

            var teamRepo = _uow.GetReadOnlyRepository <Team>();

            var result = PagedResult <int> .Create(
                teamRepo.GetList(x => teamIds.Contains(x.Id), size : teamIds.Count).Items.Select(x => x.TourId),
                teamPlayerLinks.Index,
                teamPlayerLinks.Size,
                teamPlayerLinks.Pages,
                teamPlayerLinks.Count);

            return(Task.FromResult(result));
        }
示例#2
0
        private List <UserEntity> ConvertPaginateToList(IPaginate <UserEntity> users)
        {
            int count = users.Count;

            UserEntity[] temp = new UserEntity[count];
            users.Items.CopyTo(temp, 0);
            return(ConvertArrayToList(temp));
        }
示例#3
0
        public async Task <PagedResult <LeagueDto> > Handle(LeaguesQuery request, CancellationToken cancellationToken)
        {
            var leagueRepo = _uow.GetRepositoryAsync <League>();

            Expression <Func <League, bool> > lPredicate = null;

            if (!(request.LeagueId is null) && request.LeagueId.Length != 0)
            {
                lPredicate = league => request.LeagueId.Contains(league.Id);
            }

            IPaginate <League> leagues =
                await leagueRepo.GetListAsync(
                    lPredicate,
                    size : request.Size,
                    index : request.Page,
                    include : q => q.Include(league => league.LeaguePlayerLinks),
                    cancellationToken : cancellationToken);

            List <LeagueDto> resultLeagues = leagues.Items
                                             .Select(x => _mapper.Map <LeagueDto>(x))
                                             .ToList();

            Func <LeaguePlayerLink, bool> lplPredicate;

            if (request.PlayerExternalId is null)
            {
                if (request.Pid is null || request.Pid.Length == 0)
                {
                    return(GetPagedResult(resultLeagues, leagues));
                }
                lplPredicate = l => request.Pid.Contains(l.PlayerId);
            }
            else
            {
                var playerInternalIdDto = await _playersService.GetInternalIdAsync(request.PlayerExternalId);

                if (playerInternalIdDto is null)
                {
                    return(null);
                }
                lplPredicate = l => l.PlayerId == playerInternalIdDto.InternalId;
            }

            foreach (var league in leagues.Items)
            {
                var distinctLinks = league.LeaguePlayerLinks
                                    .Where(lplPredicate)
                                    .OrderBy(p => p.CreationTime)
                                    .GroupBy(p => p.PlayerId)
                                    .Select(g => g.Last())
                                    .ToList();

                resultLeagues.First(x => x.Id == league.Id).PlayersLeagueStatuses = EnrichByPlayerInformation(distinctLinks);
            }

            return(GetPagedResult(resultLeagues, leagues));
        }
示例#4
0
        /// <summary>
        ///  教育组可用对象
        /// </summary>
        /// <param name="shared"></param>
        /// <returns></returns>
        private async Task <IList <TeacherVO> > EnableComunity(IPaginate <CollabratorEntity> shared)
        {
            var rev = await this._uproxy.ComunityMemberByUser(this._user.Session);


            if (rev == null || rev.Count == 0)
            {
                return(null);
            }

            IList <TeacherVO> tv = new List <TeacherVO>();

            foreach (var item in rev)
            {
                //教研组
                var comunity = new TeacherVO
                {
                    Id   = item.Idx,
                    Name = item.Name
                };

                //角色
                foreach (var role in item.ChildList)
                {
                    var roleAry = new TeacherVO
                    {
                        Id   = role.Idx,
                        Name = role.Name
                    };

                    // 教师
                    foreach (var tc in role.ChildList)
                    {
                        if (shared.Count > 0 && shared.Items.Any(t => t.ObjId == tc.Idx))
                        {
                            continue;
                        }
                        if (tc.Idx == this._user.UserId)
                        {
                            continue;
                        }
                        roleAry.Children.Add(new TeacherVO
                        {
                            Id   = tc.Idx,
                            Name = tc.Name
                        });
                    }

                    comunity.Children.Add(roleAry);
                }

                tv.Add(comunity);
            }

            return(tv);
        }
示例#5
0
        public static async Task <string> ResolveResourceId <TResource>(this IPaginate <TResource> repository, ElementReference reference) where TResource : Resource, INamedResource
        {
            var resource = await repository.FindOne(r => string.Equals(Trim(r.Name), Trim(reference.Name), StringComparison.OrdinalIgnoreCase));

            if (resource == null)
            {
                throw new KeyNotFoundException($"{typeof(TResource).Name} with name '{reference.Name}' not found.");
            }
            return(resource.Id);
        }
示例#6
0
 private static PagedResult <LeagueDto> GetPagedResult(
     List <LeagueDto> resultLeagues,
     IPaginate <League> leagues)
 {
     return(PagedResult <LeagueDto> .Create(
                resultLeagues,
                leagues.Index,
                leagues.Size,
                leagues.Pages,
                leagues.Count));
 }
示例#7
0
        public Task <PlayersInfoDto> Handle(PlayersInfoQuery request, CancellationToken cancellationToken)
        {
            var repo = _uow.GetReadOnlyRepository <Player>();

            IPaginate <Player> players = repo.GetList();

            var playersInfoDto = new PlayersInfoDto()
            {
                Count = players.Count
            };

            return(Task.FromResult(playersInfoDto));
        }
        public Task <LeaguesShortInfoDto> Handle(LeaguesShortInfoQuery request, CancellationToken cancellationToken)
        {
            var repo = _uow.GetReadOnlyRepository <League>();

            IPaginate <League> leagues = repo.GetList();

            var leaguesInfoDto = new LeaguesShortInfoDto
            {
                Count = leagues.Count
            };

            return(Task.FromResult(leaguesInfoDto));
        }
        public async Task <IActionResult> Get(string name)
        {
            IPaginate <ProductsView> result = null;

            try
            {
                result = await _unitOfWork.GetRepositoryAsync <ProductsView>().GetListAsync(p => p.Name.ToLowerInvariant().Contains(name.ToLowerInvariant()));
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(Ok(result));
        }
        public async Task <IActionResult> Get()
        {
            IPaginate <ProductsView> result = null;

            try
            {
                result = await _unitOfWork.GetRepositoryAsync <ProductsView>().GetListAsync();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(Ok(result));
        }
        public async Task <IActionResult> Get()
        {
            IPaginate <AppMessageLog> result = null;

            try
            {
                result = await _unitOfWork.GetRepositoryAsync <AppMessageLog>().GetListAsync(orderBy: o => o.OrderByDescending(t => t.Id));
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(Ok(result));
        }
示例#12
0
        public async Task HandleAsync(PlayerRegistered @event, ICorrelationContext context)
        {
            var playersRepo = _uow.GetRepositoryAsync <Player>();

            IPaginate <Player> players = await playersRepo.GetListAsync(p =>
                                                                        p.FirstName == @event.FirstName &&
                                                                        p.LastName == @event.LastName); //todo:: case comparison

            if (players.Count != 0)
            {
                var player        = players.Items[0]; //todo:: handle all players
                var updatedPlayer = Player.GetUpdated(player.Id, player.FirstName, player.LastName, @event.ExternalId);
                playersRepo.UpdateAsync(updatedPlayer);
            }
            else
            {
                await playersRepo.AddAsync(Player.Create(@event.FirstName, @event.LastName, @event.ExternalId));
            }

            _uow.SaveChanges();
        }
示例#13
0
        private async Task <IList <TeacherVO> > SchooleEnabled(IPaginate <CollabratorEntity> shared)
        {
            var school = await this._user.GetSchool();

            var t = await this._uproxy.TeacherGroupClass(this._user.Session, school.Code);  //this._uproxy.TeacherByClass(session); //await this._uproxy.SchoolTeacherByUser(session);


            IList <TeacherVO> ts = new List <TeacherVO>();

            var section = t.First().ChildList;

            //学段

            foreach (var cl in section)
            {
                //年级
                foreach (var grade in cl.ChildList)
                {
                    // 年级节点
                    var tv = new TeacherVO
                    {
                        Id       = grade.Idx,
                        Name     = grade.Name,
                        Children = new List <TeacherVO>()
                    };

                    //年级下的班级
                    foreach (var tc in grade.ChildList)
                    {
                        //班级节点
                        var gradeNode = new TeacherVO
                        {
                            Id   = tc.Idx,
                            Name = tc.Name
                        };

                        if (tc.ChildList == null || tc.ChildList.Count == 0)
                        {
                            continue;
                        }

                        //班级下的教师
                        foreach (var teacherItem in tc.ChildList)
                        {
                            if (shared != null && shared.Items.Count > 0 && shared.Items.Any(s => s.ObjId == teacherItem.Idx))
                            {
                                continue;
                            }
                            if (teacherItem.Idx == this._user.UserId)
                            {
                                continue;
                            }

                            var teacherNode = new TeacherVO
                            {
                                Id   = teacherItem.Idx,
                                Name = teacherItem.Name
                            };
                            gradeNode.Children.Add(teacherNode);
                        }

                        tv.Children.Add(gradeNode);
                    }

                    ts.Add(tv);
                }
            }

            return(ts);
        }
示例#14
0
 public static int Skip(this IPaginate paginate, int defaultPageSize = 100)
 {
     return((paginate.PageNumber.GetValueOrDefault() - 1) * paginate.PageSize ?? defaultPageSize);
 }
示例#15
0
 public static IQueryable <T> GetPaginate <T>(this IQueryable <T> query, IPaginate paginate)
 {
     return(query
            .Skip(paginate.Page * paginate.Size)
            .Take(paginate.Size));
 }
 public void ResetComments()
 {
     this.Comments = null;
 }
示例#17
0
 public TakeSkip(IPaginate paginate)
 {
     Take = paginate.PageSize;
     Skip = (paginate.Page - 1) * paginate.PageSize;
 }
示例#18
0
        public IEnumerable <TViewModel> GetPaginated(IPaginate paginate)
        {
            var result = domainService.GetAll().AsQueryable().GetPaginate(paginate);

            return(iMapper.Map <IEnumerable <TEntity>, IEnumerable <TViewModel> >(result));
        }
示例#19
0
 public static int Take(this IPaginate paginate, int defaultPageSize = 100)
 {
     return(paginate.PageSize ?? defaultPageSize);
 }
示例#20
0
        public async Task <IEnumerable <PlayerWithRate> > Handle(PlayersQuery request, CancellationToken cancellationToken)
        {
            var repo = _uow.GetReadOnlyRepository <Player>();

            Expression <Func <Player, bool> > predicate = null;

            if (request.PlayerId != null &&
                request.PlayerId.Length != 0)
            {
                predicate = player => request.PlayerId.Contains(player.Id);
            }

            IPaginate <Player> players = repo.GetList(
                predicate,
                include: p => p.Include(a => a.Rates),
                index: request.Page,
                size: request.Size);

            if (players.Count == 0)
            {
                return(null);
            }

            var playersWithRates = new List <PlayerWithRate>();

            foreach (var player in players.Items)
            {
                var list = new List <PlayerLeagueRate>();

                var rates = request.QueryType == PlayersQueryType.Actual ?
                            player.Rates
                            .OrderBy(p => p.Date)
                            .GroupBy(p => p.LeagueId)
                            .Select(g => g.Last()) :
                            player.Rates;

                foreach (var rate in rates)
                {
                    if (request.LeagueId != null &&
                        request.LeagueId.Length != 0 &&
                        !request.LeagueId.Contains(rate.LeagueId))
                    {
                        continue;
                    }
                    list.Add(_mapper.Map <PlayerLeagueRate>(rate));
                }

                if (list.Count != 0)
                {
                    playersWithRates.Add(
                        new PlayerWithRate
                    {
                        Id                = player.Id,
                        FirstName         = player.FirstName,
                        LastName          = player.LastName,
                        PlayerLeagueRates = list
                    });
                }
            }

            return(playersWithRates);
        }