コード例 #1
0
        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));
            }
        }
コード例 #2
0
        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));
            }
        }