Exemple #1
0
        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;
            }
        }
Exemple #2
0
        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;
            }
        }