コード例 #1
0
        public ActionResult <CardDto> CreateCardInDeck(int deckId, CardForCreationDto card,
                                                       [FromHeader(Name = "Accept")] string mediaType)
        {
            if (!MediaTypeHeaderValue.TryParse(mediaType,
                                               out MediaTypeHeaderValue parsedMediaType))
            {
                return(BadRequest());
            }

            var includeLinks = parsedMediaType.SubTypeWithoutSuffix
                               .EndsWith("hateoas", StringComparison.InvariantCultureIgnoreCase);

            if (!_flashCardRepository.DeckExists(deckId))
            {
                return(NotFound());
            }

            var cardEntity = _mapper.Map <Entities.Card>(card);

            _flashCardRepository.AddCard(cardEntity, deckId);
            _flashCardRepository.Save();

            var cardToReturn = _mapper.Map <CardDto>(cardEntity);

            if (!includeLinks)
            {
                return(CreatedAtRoute(nameof(GetCardInDeck),
                                      new { deckId, cardId = cardToReturn.Id },
                                      cardToReturn));
            }

            var links         = CreateLinksForCard(deckId, cardToReturn.Id);
            var cardWithLinks = new CardDtoWithLinks(cardToReturn, links);

            return(CreatedAtRoute(nameof(GetCardInDeck),
                                  new { deckId, cardId = cardToReturn.Id },
                                  cardWithLinks));
        }
コード例 #2
0
        public ActionResult <CardDto> GetCardInDeck(int deckId, int cardId,
                                                    [FromHeader(Name = "Accept")] string mediaType)
        {
            if (!MediaTypeHeaderValue.TryParse(mediaType,
                                               out MediaTypeHeaderValue parsedMediaType))
            {
                return(BadRequest());
            }

            var includeLinks = parsedMediaType.SubTypeWithoutSuffix
                               .EndsWith("hateoas", StringComparison.InvariantCultureIgnoreCase);

            if (!_flashCardRepository.DeckExists(deckId))
            {
                return(NotFound());
            }

            var cardFromRepo = _flashCardRepository.GetCard(cardId);

            if (cardFromRepo == null)
            {
                return(NotFound());
            }

            var cardToReturn = _mapper.Map <CardDto>(cardFromRepo);

            if (!includeLinks)
            {
                return(Ok(cardToReturn));
            }

            var links         = CreateLinksForCard(deckId, cardToReturn.Id);
            var cardWithLinks = new CardDtoWithLinks(cardToReturn, links);

            return(Ok(cardWithLinks));
        }