コード例 #1
0
        public async Task <ActionResult> UpdateAsync(int id, [FromBody] BeerRequest updateBeerRequest)
        {
            if (!ModelState.IsValid)
            {
                _logger.Warning("Request to update beer has been denied. Beer model is invalid");
                return(BadRequest(ModelState));
            }

            try
            {
                _logger.Information($"Updating beer with id: {id}.");
                await _beerService.UpdateAsync(id, updateBeerRequest);

                _logger.Information($"Successfully updated beer with id: {id}.");
                return(NoContent());
            }
            catch (KeyNotFoundException ex)
            {
                _logger.Warning(ex, $"Beer with id: {id} could not be updated, as it was not found.");
                return(NotFound());
            }
            catch (Exception ex)
            {
                _logger.Error(ex, $"Request to update beer with id: {id} failed.");
                return(StatusCode(500));
            }
        }
コード例 #2
0
        public async Task <ActionResult <Beer> > CreateAsync([FromBody] BeerRequest createBeerRequest)
        {
            if (!ModelState.IsValid)
            {
                _logger.Warning("Request to create beer has been denied. Beer model is invalid");
                return(BadRequest(ModelState));
            }

            try
            {
                _logger.Information($"Creating beer with name: {createBeerRequest.Name}.");
                var beer = new Beer
                {
                    Name    = createBeerRequest.Name,
                    Style   = createBeerRequest.Style,
                    Brewery = createBeerRequest.Brewery,
                    Abv     = createBeerRequest.Abv
                };
                var createdBeer = await _beerService.CreateAsync(beer);

                _logger.Information($"Successfully created beer with name: {createdBeer.Name}.");
                // uses return from db to send in the response; refers to named endpoint
                return(CreatedAtRoute("GetBeer", new { id = createdBeer.BeerId }, createdBeer));
            }
            catch (Exception ex)
            {
                _logger.Error(ex, $"Request to create beer with name: {createBeerRequest.Name} failed.");
                return(StatusCode(500));
            }
        }
コード例 #3
0
ファイル: BeerService.cs プロジェクト: nthugon/HopHubApi
        public async Task UpdateAsync(int id, BeerRequest beerUpdate)
        {
            var beer = await _beerRepository.GetByIdAsync(id);

            if (beer == null)
            {
                throw new KeyNotFoundException();
            }

            beer.Name    = string.IsNullOrEmpty(beerUpdate.Name) ? beer.Name : beerUpdate.Name;
            beer.Style   = string.IsNullOrEmpty(beerUpdate.Style) ? beer.Style : beerUpdate.Style;
            beer.Brewery = string.IsNullOrEmpty(beerUpdate.Brewery) ? beer.Brewery : beerUpdate.Brewery;
            beer.Abv     = (beerUpdate.Abv > 0) ? beerUpdate.Abv : beer.Abv;

            await _beerRepository.UpdateAsync(beer);
        }
コード例 #4
0
        public async Task <BeersResponse> GetBeersAsync(BeerRequest request)
        {
            var uri = RouteBuilder("beers", request);
            HttpResponseMessage response = await _client.GetAsync(uri);

            if (response.IsSuccessStatusCode)
            {
                var jsonResult = await response.Content.ReadAsStringAsync();

                var results = JsonConvert.DeserializeObject <BeersResponse>(jsonResult);

                return(results);
            }
            return(new BeersResponse()
            {
                Status = response.StatusCode.ToString()
            });
        }
コード例 #5
0
 public void Setup()
 {
     _beerService = Substitute.For <IBeerService>();
     _logger      = Substitute.For <ILogger>();
     _controller  = new BeersController(_beerService, _logger);
     _beerRequest = new BeerRequest
     {
         Name    = "Beer Name",
         Brewery = "Test Brewery",
         Style   = "Test Beer",
         Abv     = 4.5m
     };
     _beer = new Beer
     {
         BeerId  = 1,
         Name    = _beerRequest.Name,
         Brewery = _beerRequest.Brewery,
         Style   = _beerRequest.Style,
         Abv     = _beerRequest.Abv
     };
 }
コード例 #6
0
        public IActionResult Edit(BeerRequest request)
        {
            Response <object> response = new Response <object>();

            try
            {
                using (BlazorCrudContext db = new BlazorCrudContext())
                {
                    Beer beer = db.Beers.Find(request.id);
                    beer.Name            = request.name;
                    beer.Maker           = request.maker;
                    db.Entry(beer).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
                    db.SaveChanges();
                    response.success = 1;
                }
            }
            catch (Exception ex)
            {
                response.message = ex.Message;
            }

            return(Ok(response));
        }
コード例 #7
0
        public IActionResult Add(BeerRequest request)
        {
            Response <object> response = new Response <object>();

            try
            {
                using (BlazorCrudContext db = new BlazorCrudContext())
                {
                    Beer beer = new Beer();
                    beer.Name  = request.name;
                    beer.Maker = request.maker;
                    db.Beers.Add(beer);
                    db.SaveChanges();
                    response.success = 1;
                }
            }
            catch (Exception ex)
            {
                response.message = ex.Message;
            }

            return(Ok(response));
        }
コード例 #8
0
 private string RouteBuilder(string path, BeerRequest request = null, BeerRequestAdditionalData additionalData = null)
 {
     return($"{_baseAddress}{path}?key={_key}{request?.ToString()}{additionalData?.ToString()}");
 }
コード例 #9
0
 public async Task <BeersResponse> GetAsync(BeerRequest request)
 {
     return(await _breweryDb.Beer.GetBeersAsync(request));
 }
コード例 #10
0
 public async Task <BeersResponse> GetAsync(BeerRequest request)
 {
     return(await _beerRepository.GetAsync(request));
 }
コード例 #11
0
 public async Task <BeersResponse> Get([FromUri] BeerRequest request)
 {
     return(await _beerOrchestrator.GetAsync(request));
 }