public ActionResult <DeckDto> GetDeck(int deckId, [FromHeader(Name = "Accept")] string mediaType) { if (!MediaTypeHeaderValue.TryParse(mediaType, out MediaTypeHeaderValue parsedMediaType)) { return(BadRequest()); } var includeLinks = parsedMediaType.SubTypeWithoutSuffix .EndsWith("hateoas", StringComparison.InvariantCultureIgnoreCase); var deckFromRepo = _flashCardRepository.GetDeck(deckId); if (deckFromRepo == null) { return(NotFound()); } var deckToReturn = _mapper.Map <DeckDto>(deckFromRepo); if (!includeLinks) { return(Ok(deckToReturn)); } var links = CreateLinksForDeck(deckId); var deckWithLinks = new DeckDtoWithLinks(deckToReturn, links); return(Ok(deckWithLinks)); }
public ActionResult <DeckDto> CreateDeck(DeckForCreationDto deck, [FromHeader(Name = "Accept")] string mediaType) { if (!MediaTypeHeaderValue.TryParse(mediaType, out MediaTypeHeaderValue parsedMediaType)) { return(BadRequest()); } var includeLinks = parsedMediaType.SubTypeWithoutSuffix .EndsWith("hateoas", StringComparison.InvariantCultureIgnoreCase); var deckEntity = _mapper.Map <Entities.Deck>(deck); _flashCardRepository.AddDeck(deckEntity); _flashCardRepository.Save(); var deckToReturn = _mapper.Map <DeckDto>(deckEntity); if (!includeLinks) { return(CreatedAtRoute(nameof(GetDeck), new { deckId = deckToReturn.Id }, deckToReturn)); } var links = CreateLinksForDeck(deckToReturn.Id); var deckWithLinks = new DeckDtoWithLinks(deckToReturn, links); return(CreatedAtRoute(nameof(GetDeck), new { deckId = deckToReturn.Id }, deckWithLinks)); }