예제 #1
0
        public CompetitionsSearchResult SearchCompetitions(CompetitionSearchQuery searchQuery)
        {
            var result = new CompetitionsSearchResult();
            var items  = new List <CompetitionHeaderInfo>();

            UseDataContext(
                dataContext =>
            {
                dataContext.ObjectTrackingEnabled = false;
                dataContext.LoadOptions           = GetCompetitionsLoadOptions();

                var competitionQueryResult = dataContext.Competitions;
                var pagedResults           = competitionQueryResult.Skip(searchQuery.StartIndex).Take(searchQuery.PageSize);
                result.TotalCount          = competitionQueryResult.Count();
                foreach (var dataItem in pagedResults)
                {
                    var item = new CompetitionHeaderInfo();
                    MapCompetitionDataToHeader(dataItem, item);
                    items.Add(item);
                }
            });

            result.Items = items.ToArray();

            return(result);
        }
예제 #2
0
 private void MapCompetitionDataToHeader(Competition competition, CompetitionHeaderInfo competitionHeader)
 {
     competitionHeader.Id          = competition.Id;
     competitionHeader.ReferenceId = competition.ReferenceId;
     competitionHeader.Name        = competition.Name;
     competitionHeader.StartTime   = competition.StartDate.ToLocalTime();
     if (competition.EndTime.HasValue)
     {
         competitionHeader.EndTime = competition.EndTime.Value.ToLocalTime();
     }
     competitionHeader.LastModified = competition.Updated.ToLocalTime();
     competitionHeader.Type         = new Contracts.Competitions.CompetitionType()
     {
         Id           = competition.TypeId,
         Name         = competition.CompetitionType.Name,
         PlayersCount = competition.CompetitionType.PlayersCount
     };
     competitionHeader.Status = (CompetitionStatus)competition.Status;
 }
예제 #3
0
        public CompetitionHeaderInfo GetCompetition(int id)
        {
            var result = default(CompetitionHeaderInfo);

            UseDataContext(
                dataContext =>
            {
                dataContext.ObjectTrackingEnabled = false;
                dataContext.LoadOptions           = GetCompetitionsLoadOptions();

                var competitionData = dataContext.Competitions.FirstOrDefault(c => c.Id == id);
                if (competitionData.IsNotNull())
                {
                    result = new CompetitionHeaderInfo();
                    MapCompetitionDataToHeader(competitionData, result);
                }
            });

            return(result);
        }
예제 #4
0
        public CompetitionHeaderInfo[] GetCompetitionsByStatus(CompetitionStatus status)
        {
            var competitions = new List <CompetitionHeaderInfo>();

            UseDataContext(
                dataContext =>
            {
                var competitionsByStatus = dataContext.Competitions.Where(comp => comp.Status == (int)status);

                competitionsByStatus.ForEach(dataCompetition =>
                {
                    var competitionHeader =
                        new CompetitionHeaderInfo();
                    MapCompetitionDataToHeader(dataCompetition, competitionHeader);

                    competitions.Add(competitionHeader);
                });
            });

            return(competitions.ToArray());
        }