private async Task AddApiAsync(CreateApi request) { var apiId = Guid.NewGuid(); var api = new Api() { Id = apiId, Name = request.Name, Title = request.Title, Description = request.Description, BusinessOwner = request.BusinessOwner, TechnicalOwner = request.TechnicalOwner, BusinessSubDomainId = request.BusinessSubDomainId, Versions = new List <ApiVersion>() { new ApiVersion() { ApiId = apiId, MajorVersion = _configuration.GetValue <int>("InceptionMajorVersion"), MinorVersion = _configuration.GetValue <int>("InceptionMinorVersion"), Status = VersionStatus.Inception } } }; await _context.Apis.AddAsync(api); }
public async Task <ActionResult> CreateApiAsync([FromBody] ApiCreate api) { var getSubDomainRequest = new GetSubDomain() { Name = api.SubDomainName }; var subDomainResonse = await _mediator.Send(getSubDomainRequest); if (subDomainResonse.Result == GetResult.NotFound) { return(BadRequest("No business sub domain was found with the supplied name")); } var createApi = new CreateApi() { BusinessOwner = api.BusinessOwner, BusinessSubDomainId = subDomainResonse.Data.Id, Description = api.Description, Name = api.Name, TechnicalOwner = api.TechnicalOwner, Title = api.Title, Tags = api.Tags }; var response = await _mediator.Send(createApi); if (response.Result == CreateResult.Created) { return(Created($"api/v1/apis/{api.Name}", api)); } else { return(StatusCode(500)); } }
private async Task <Response <UpdateResult> > SetApiTagsAsync(CreateApi request) { var setApiTags = new SetApiTags() { ApiName = request.Name, Tags = request.Tags, Commit = false, UseLocal = true }; return(await _mediator.Send(setApiTags)); }
public async Task <Response <CreateResult> > Handle(CreateApi request) { await AddApiAsync(request); var tagsResponse = await SetApiTagsAsync(request); if (tagsResponse.Result == UpdateResult.Updated) { await _context.SaveChangesAsync(); return(new Response <CreateResult>(CreateResult.Created)); } else { return(new Response <CreateResult>(CreateResult.NotCreated, $"Create aborted - could not add tags. Message is {tagsResponse.Description}")); } }