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)); }
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)); }