Exemple #1
0
        public async Task <ActionResult> UpdateApiFieldsAsync([FromBody] ApiUpdate api)
        {
            var updateApiFields = new UpdateApiFields()
            {
                Name              = api.Name,
                NewBusinessOwner  = api.NewBusinessOwner,
                NewDescription    = api.NewDescription,
                NewName           = api.NewName,
                NewTechnicalOwner = api.NewTechnicalOwner,
                NewTitle          = api.NewTitle,
                NewTags           = api.NewTags
            };

            var response = await _mediator.Send(updateApiFields);

            if (response.Result == UpdateResult.Updated)
            {
                return(Ok());
            }
            else if (response.Result == UpdateResult.NotFound)
            {
                return(NotFound());
            }
            else if (response.Result == UpdateResult.NotUpdated)
            {
                return(StatusCode(500)); // TODO return meaningful result to client
            }
            else
            {
                return(StatusCode(500)); // TODO return meaningful result to client
            }
        }
        public async Task <Response <UpdateResult> > Handle(UpdateApiFields request)
        {
            var dbApi = await _context.Apis.FirstOrDefaultAsync(x => x.Name.Equals(request.Name));

            if (dbApi == null)
            {
                return(new Response <UpdateResult>(UpdateResult.NotFound));
            }
            else
            {
                if (!string.IsNullOrEmpty(request.NewName))
                {
                    dbApi.Name = request.NewName;
                }

                if (!string.IsNullOrEmpty(request.NewTitle))
                {
                    dbApi.Title = request.NewTitle;
                }

                if (!string.IsNullOrEmpty(request.NewDescription))
                {
                    dbApi.Description = request.NewDescription;
                }

                if (!string.IsNullOrEmpty(request.NewBusinessOwner))
                {
                    dbApi.BusinessOwner = request.NewBusinessOwner;
                }

                if (!string.IsNullOrEmpty(request.NewTechnicalOwner))
                {
                    dbApi.TechnicalOwner = request.NewTechnicalOwner;
                }

                if (request.NewTags != null)
                {
                    var tagsResponse = await SetApiTagsAsync(request);

                    if (tagsResponse.Result == UpdateResult.Updated)
                    {
                        await _context.SaveChangesAsync();

                        return(new Response <UpdateResult>(UpdateResult.Updated));
                    }
                    else
                    {
                        return(new Response <UpdateResult>(UpdateResult.NotUpdated,
                                                           $"Update aborted - could not update tags. Message is {tagsResponse.Description}"));
                    }
                }
                else
                {
                    await _context.SaveChangesAsync();

                    return(new Response <UpdateResult>(UpdateResult.Updated));
                }
            }
        }
        private async Task <Response <UpdateResult> > SetApiTagsAsync(UpdateApiFields request)
        {
            var setApiTags = new SetApiTags()
            {
                ApiName  = request.Name,
                Tags     = request.NewTags,
                Commit   = false,
                UseLocal = true
            };

            return(await _mediator.Send(setApiTags));
        }