public async Task <IActionResult> CreateCoin([FromBody] CoinCreationDto coin, [FromHeader(Name = "Accept")] string mediaType) { if (coin == null) { return(BadRequest()); } if ((coin.Note == coin.Subject) && (coin.Note != null || coin.Subject != null)) { ModelState.AddModelError(nameof(CoinCreationDto), "The provided note should be different from the coin's subject"); } if (!ModelState.IsValid) { return(new UnprocessableEntityObjectResult(ModelState)); } if (!await _countryService.CountryExists(coin.CountryId)) { return(BadRequest()); } var newCoin = _mapper.Map <Coin>(coin); var existingCollectorValue = await _collectorValueService.FindCollectorValueByValues(newCoin.CollectorValue); newCoin.CollectorValueId = existingCollectorValue == null?Guid.NewGuid() : existingCollectorValue.Id; await _coinService.CreateCoin(newCoin); if (!await _coinService.Save()) { throw new Exception("Creating a coin failed on save."); } var returnedCoin = _mapper.Map <CoinDto>(newCoin); if (mediaType == "application/json+hateoas") { var links = CreateCoinLinks(returnedCoin.Id, null); var linkedResource = returnedCoin.ShapeData(null) as IDictionary <string, object>; linkedResource.Add("links", links); return(CreatedAtRoute("GetCoin", new { id = returnedCoin.Id }, linkedResource)); } else { return(CreatedAtRoute("GetCoin", new { id = returnedCoin.Id }, returnedCoin)); } }
public async Task <IActionResult> CreateBanknote([FromBody] BanknoteCreationDto banknote, [FromHeader(Name = "Accept")] string mediaType) { if (banknote == null) { return(BadRequest()); } if (!ModelState.IsValid) { return(new UnprocessableEntityObjectResult(ModelState)); } if (!await _countryService.CountryExists(banknote.CountryId)) { return(BadRequest()); } var newBanknote = _mapper.Map <Banknote>(banknote); var existingCollectorValue = await _collectorValueService.FindCollectorValueByValues(newBanknote.CollectorValue); newBanknote.CollectorValueId = existingCollectorValue == null?Guid.NewGuid() : existingCollectorValue.Id; await _banknoteService.CreateBanknote(newBanknote); if (!await _banknoteService.Save()) { throw new Exception("Creating a banknote failed on save."); } var returnedBanknote = _mapper.Map <BanknoteDto>(newBanknote); if (mediaType == "application/json+hateoas") { var links = CreateBanknoteLinks(returnedBanknote.Id, null); var linkedResource = returnedBanknote.ShapeData(null) as IDictionary <string, object>; linkedResource.Add("links", links); return(CreatedAtRoute("GetBanknote", new { id = returnedBanknote.Id }, linkedResource)); } else { return(CreatedAtRoute("GetBanknote", new { id = returnedBanknote.Id }, returnedBanknote)); } }