예제 #1
0
        public async Task <ApiResult <HateoasResponse <ItemResponse> > > Handle(GetAllItemsHateoasQuery request, CancellationToken cancellationToken)
        {
            IEnumerable <ItemResponse> itemList = await _itemService.GetItemsQuery().ToListAsync();

            List <HateoasResponse <ItemResponse> > hateoasResults = new List <HateoasResponse <ItemResponse> >();

            foreach (ItemResponse itemResponse in itemList)
            {
                HateoasResponse <ItemResponse> hateoasResult = new HateoasResponse <ItemResponse>
                {
                    Data = itemResponse
                };
                await _linksService.AddLinksAsync(hateoasResult);

                hateoasResults.Add(hateoasResult);
            }

            IQueryable <HateoasResponse <ItemResponse> > test = hateoasResults.AsQueryable();

            ApiResult <HateoasResponse <ItemResponse> > pagedItems = await ApiResult <HateoasResponse <ItemResponse> > .CreateAsync(
                test,
                request.Data.PageIndex,
                request.Data.PageSize,
                request.Data.SortColumn,
                request.Data.SortOrder,
                request.Data.FilterColumn,
                request.Data.FilterQuery);


            return(pagedItems);
        }
        public async Task <IActionResult> GetStepById(Guid stepId)
        {
            var step = await Mediator.Send(new GetStepNavigationByIdQuery(stepId));

            var stepWithLinks = new HateoasResponse <StepNavigation>(step, GetLinksForStep(step.Id));

            return(Ok(stepWithLinks));
        }
        public async Task <IActionResult> GetUserById(Guid userId)
        {
            var user = await Mediator.Send(new GetPublicUserByIdQuery(userId));

            var userWithLinks = new HateoasResponse <PublicUser>(user, GetLinksForUser(user.Id));

            return(Ok(userWithLinks));
        }
        public async Task <IActionResult> GetTeamById(Guid teamId)
        {
            var team = await Mediator.Send(new GetTeamNavigationByIdQuery(teamId));

            var teamWithLinks = new HateoasResponse <TeamNavigation>(team, GetLinksForTeam(team.Id));

            return(Ok(teamWithLinks));
        }
예제 #5
0
        public async Task <IActionResult> GetTestById(Guid testId)
        {
            var test = await Mediator.Send(new GetTestNavigationByIdQuery(testId));

            var testWithLinks = new HateoasResponse <TestNavigation>(test, GetLinksForTest(test.StepId, testId));

            return(Ok(testWithLinks));
        }
예제 #6
0
        public async Task <IActionResult> GetParticipationById(Guid participationId)
        {
            var participation = await Mediator.Send(new GetOneParticipationNavigationByIdQuery(participationId));

            var participationWithLinks =
                new HateoasResponse <ParticipationNavigation>(participation, GetLinksForParticipation(participation.Id));

            return(Ok(participationWithLinks));
        }
        public async Task <IActionResult> GetRightById(Guid rightId)
        {
            var right = await Mediator.Send(new GetRightByIdQuery(rightId));

            var rightWithLinks =
                new HateoasResponse <RightNavigation>(right, GetLinksForRight(right.Id));

            return(Ok(rightWithLinks));
        }
예제 #8
0
        public async Task <IActionResult> GetTournamentStepById(Guid tournamentId, Guid stepId)
        {
            var member = await Mediator.Send(new GetTournamentStepByIdQuery(tournamentId, stepId));

            var memberWithLinks =
                new HateoasResponse <TournamentStepNavigation>(member, GetLinksForTournamentStep(tournamentId, stepId));

            return(Ok(memberWithLinks));
        }
예제 #9
0
        public async Task <IActionResult> GetTournamentById(Guid tournamentId)
        {
            var tournament = await Mediator.Send(new GetTournamentNavigationByIdQuery(tournamentId));

            var tournamentWithLinks =
                new HateoasResponse <TournamentNavigation>(tournament, GetLinksForTournament(tournament.Id));

            return(Ok(tournamentWithLinks));
        }
예제 #10
0
        public async Task <IActionResult> GetLanguageById(Guid languageId)
        {
            var language = await Mediator.Send(new GetLanguageNavigationByIdQuery(languageId));

            var languageWithLinks =
                new HateoasResponse <ProgrammingLanguageNavigation>(language, GetLinksForLanguage(language.Id));

            return(Ok(languageWithLinks));
        }
        public async Task <IActionResult> GetTeamMemberById(Guid teamId, Guid memberId)
        {
            var member = await Mediator.Send(new GetMemberNavigationByIdQuery(teamId, memberId));

            var memberWithLinks =
                new HateoasResponse <MemberNavigation>(member, GetLinksForMember(member.UserId, member.TeamId));

            return(Ok(memberWithLinks));
        }
        public async Task <IActionResult> GetOneSuspectFunction(Guid functionId)
        {
            var function = await Mediator.Send(new GetOneSuspectFunctionQuery(functionId));

            var functionWithLinks =
                new HateoasResponse <SuspectFunctionNavigation>(function, GetLinksForFunction(function.Id));

            return(Ok(functionWithLinks));
        }
예제 #13
0
        public async Task <IActionResult> GetSessionUserById(Guid participationId, Guid userId)
        {
            var user =
                await Mediator.Send(new GetOneParticipationSessionUserQuery(participationId, userId));

            var userWithLinks =
                new HateoasResponse <UserSessionNavigation>(user,
                                                            GetLinksForUser(participationId, userId));

            return(Ok(userWithLinks));
        }
예제 #14
0
        public async Task <IActionResult> GetSessionFunctionById(Guid participationId, Guid functionId)
        {
            var function =
                await Mediator.Send(new GetOneParticipationSessionFunctionQuery(participationId, functionId));

            var functionWithLinks =
                new HateoasResponse <FunctionSessionNavigation>(function,
                                                                GetLinksForFunction(participationId, functionId));

            return(Ok(functionWithLinks));
        }
예제 #15
0
        public void HateoasResponse_Links_SetsLinks()
        {
            IEnumerable <HateoasLink> links = new[]
            {
                new HateoasLink(new Uri("https://www.example.com"), "rel1"),
                new HateoasLink(new Uri("https://www.example.com"), "rel2")
            };

            var response = new HateoasResponse(links);

            Assert.Equal(links, response.Links);
        }
예제 #16
0
        public async Task <IActionResult> Put(Guid id, EditItemRequest request)
        {
            request.Id = id;
            ItemResponse result = await _itemService.EditItemAsync(request);

            HateoasResponse <ItemResponse> hateoasResult = new HateoasResponse <ItemResponse> {
                Data = result
            };
            await _linksService.AddLinksAsync(hateoasResult);

            return(Ok(hateoasResult));
        }
예제 #17
0
        public void HateoasResponse_SerializedJson_ContainsNecessaryData(
            string uri, string rel, string contains)
        {
            IEnumerable <HateoasLink> links = new[]
            {
                new HateoasLink(new Uri(uri), rel)
            };
            var response = new HateoasResponse(links);

            var serialized = response.ToJson();

            Assert.Contains(contains, serialized);
        }
예제 #18
0
        public async Task <IActionResult> GetById(Guid id)
        {
            ItemResponse result = await _itemService.GetItemAsync(id);

            HateoasResponse <ItemResponse> hateoasResult = new HateoasResponse <ItemResponse> {
                Data = result
            };
            await _linksService.AddLinksAsync(new HateoasResponse <ItemResponse> {
                Data = result
            });

            return(Ok(hateoasResult));
        }