public async Task <ActionResult <Core2User> > Post(JObject body) { Core2User item = null; try { item = BuildUser(body); } catch (ArgumentException) { ErrorResponse invalidJSON = new ErrorResponse(ErrorDetail.Unparsable, ErrorDetail.Status400); return(this.BadRequest(invalidJSON)); } if (String.IsNullOrWhiteSpace(item.UserName)) { ErrorResponse badRequestError = new ErrorResponse(ErrorDetail.NoUsername, ErrorDetail.Status400); return(this.BadRequest(badRequestError)); } Resource user = await this._provider.GetByName(item.UserName).ConfigureAwait(false); if (user != null) { ErrorResponse conflictError = new ErrorResponse(ErrorDetail.UsernameConflict, ErrorDetail.Status409); return(this.Conflict(conflictError)); } try { await this._provider.Add(item).ConfigureAwait(false); this.Response.ContentType = ControllerConstants.DefaultContentType; return(this.CreatedAtAction(nameof(Get), new { id = item.Identifier }, item)); } catch (Exception e) { this._logger.LogError(e.ToString()); ErrorResponse databaseException = new ErrorResponse(ErrorDetail.DatabaseError, ErrorDetail.Status500); return(this.StatusCode(500, databaseException)); throw; } }
public async Task <ActionResult <Core2User> > Put(string id, Core2User item) { if (id != item.Identifier) { ErrorResponse badRequestError = new ErrorResponse(ErrorDetail.Mutability, ErrorDetail.Status400); return(this.BadRequest(badRequestError)); } if (item.UserName == null) { ErrorResponse badRequestError = new ErrorResponse(ErrorDetail.NoUsername, ErrorDetail.Status400); return(this.BadRequest(badRequestError)); } Core2User user = (Core2User)await this._provider.GetById(id).ConfigureAwait(false); if (user == null) { ErrorResponse notFoundError = new ErrorResponse(string.Format(CultureInfo.InvariantCulture, ErrorDetail.NotFound, id), ErrorDetail.Status404); return(this.NotFound(notFoundError)); } try { await this._provider.Replace(item, user).ConfigureAwait(false); this.Response.ContentType = ControllerConstants.DefaultContentType; return(this.Ok(user)); } catch (Exception e) { this._logger.LogError(e.ToString()); ErrorResponse databaseException = new ErrorResponse(ErrorDetail.DatabaseError, ErrorDetail.Status500); return(this.StatusCode(500, databaseException)); throw; } }