Exemplo n.º 1
0
        public async Task <IActionResult> Post([FromBody] Model.Models.Contact model)
        {
            _logger.LogInformation("Post: Begin");

            if (!ModelState.IsValid)
            {
                _logger.LogWarning("Post: End (400)");
                return(BadRequest(ModelState));
            }

            var result = await _manager.Create(model);

            switch (result.ResultStatus)
            {
            case Common.Enums.ManagerResponseResult.Success:
                var createdModel = result.Result.First();
                var locationUri  = LocationUriHelper.GetLocationUriForPost(Request, createdModel.Uid);
                _logger.LogInformation("Post: End (201)");
                return(Created(locationUri, createdModel));

            case Common.Enums.ManagerResponseResult.UniqueKeyViolation:
                _logger.LogWarning("Post: End (409 - UniqueKeyViolation)");
                return(StatusCode((int)HttpStatusCode.Conflict, result.ErrorMessage));

            default:
                _logger.LogWarning("Post: End (400 - Error)");
                return(BadRequest(result.ErrorMessage ?? "An error occurred"));
            }
        }
Exemplo n.º 2
0
        public async Task <IActionResult> Put(Guid uid, [FromBody] Model.Models.Contact model)
        {
            _logger.LogInformation("Put: Begin");

            if (uid == Guid.Empty)
            {
                _logger.LogWarning("Put: End (400 - invalid uid)");
                return(BadRequest());
            }

            if (!ModelState.IsValid)
            {
                _logger.LogWarning("Put: End (400)");
                return(BadRequest(ModelState));
            }

            if (uid != model.Uid)
            {
                _logger.LogWarning("Put: End (400 - uid mismatch)");
                return(BadRequest(ModelState));
            }

            var result = await _manager.CreateOrUpdate(model);

            switch (result.ResultStatus)
            {
            case Common.Enums.ManagerResponseResult.Created:
                var uri = LocationUriHelper.GetLocationUriForPut(Request);
                _logger.LogInformation("Put: End (201)");
                return(Created(uri, result.Result.First()));

            case Common.Enums.ManagerResponseResult.Updated:
                _logger.LogInformation("Put: End (200)");
                return(Ok(result.Result.First()));

            case Common.Enums.ManagerResponseResult.UniqueKeyViolation:
                _logger.LogWarning("Put: End (409 - UniqueKeyViolation)");
                return(StatusCode((int)HttpStatusCode.Conflict, result.ErrorMessage));

            default:
                _logger.LogWarning("Put: End (400 - Error)");
                return(BadRequest(result.ErrorMessage ?? "An error occurred"));
            }
        }