public async Task <IActionResult> Put([FromBody] ProviderData providerData) { if (providerData is null) { throw new ArgumentNullException(nameof(providerData)); } var validation = new ProviderDataValidator().Validate(providerData); if (!validation.IsValid) { return(ErrorResult .BadRequest(validation) .ActionResult()); } var provider = await providersRepository .GetAsync(ProviderId) .ConfigureAwait(false); if (provider is null) { return(ErrorResult .NotFound($"A Provider with the ID '{ProviderId}' could not be found in this TeamCloud Instance") .ActionResult()); } var oldProviderData = await providerDataRepository .GetAsync(providerData.Id) .ConfigureAwait(false); if (oldProviderData is null) { return(ErrorResult .NotFound($"The Provider Data '{providerData.Id}' could not be found..") .ActionResult()); } var newProviderData = new ProviderDataDocument { ProviderId = provider.Id, Scope = ProviderDataScope.System }; newProviderData.PopulateFromExternalModel(providerData); var updateResult = await orchestrator .UpdateAsync(newProviderData) .ConfigureAwait(false); var returnUpdateResult = updateResult.PopulateExternalModel(); return(DataResult <ProviderData> .Ok(returnUpdateResult) .ActionResult()); }
public async Task <IActionResult> Put( [HttpTrigger(AuthorizationLevel.Function, "put", Route = "data/providerData")] ProviderDataDocument providerData) { if (providerData is null) { throw new ArgumentNullException(nameof(providerData)); } var newProviderData = await providerDataRepository .SetAsync(providerData) .ConfigureAwait(false); return(new OkObjectResult(newProviderData)); }
public async Task <IActionResult> Post([FromBody] ProviderData providerData) { if (providerData is null) { throw new ArgumentNullException(nameof(providerData)); } var validation = new ProviderDataValidator().Validate(providerData); if (!validation.IsValid) { return(ErrorResult .BadRequest(validation) .ActionResult()); } var provider = await providersRepository .GetAsync(ProviderId) .ConfigureAwait(false); if (provider is null) { return(ErrorResult .NotFound($"A Provider with the ID '{ProviderId}' could not be found in this TeamCloud Instance") .ActionResult()); } var newProviderData = new ProviderDataDocument { ProviderId = provider.Id, Scope = ProviderDataScope.System }; newProviderData.PopulateFromExternalModel(providerData); var addResult = await orchestrator .AddAsync(newProviderData) .ConfigureAwait(false); var baseUrl = HttpContext.GetApplicationBaseUrl(); var location = new Uri(baseUrl, $"api/providers/{provider.Id}/data/{addResult.Id}").ToString(); var returnAddResult = addResult.PopulateExternalModel(); return(DataResult <ProviderData> .Created(returnAddResult, location) .ActionResult()); }
public async Task <IActionResult> Put([FromRoute] string providerDataId, [FromBody] ProviderData providerData) { if (providerData is null) { throw new ArgumentNullException(nameof(providerData)); } if (string.IsNullOrWhiteSpace(providerDataId)) { return(ErrorResult .BadRequest($"The identifier '{providerDataId}' provided in the url path is invalid. Must be a valid GUID.", ResultErrorCode.ValidationError) .ToActionResult()); } var validation = new ProviderDataValidator().Validate(providerData); if (!validation.IsValid) { return(ErrorResult .BadRequest(validation) .ToActionResult()); } if (!providerDataId.Equals(providerData.Id, StringComparison.OrdinalIgnoreCase)) { return(ErrorResult .BadRequest(new ValidationError { Field = "id", Message = $"ProviderData's id does match the identifier provided in the path." }) .ToActionResult()); } var provider = await providersRepository .GetAsync(ProviderId) .ConfigureAwait(false); if (provider is null) { return(ErrorResult .NotFound($"A Provider with the ID '{ProviderId}' could not be found in this TeamCloud Instance") .ToActionResult()); } var project = await projectsRepository .GetAsync(ProjectId) .ConfigureAwait(false); if (project is null) { return(ErrorResult .NotFound($"A Project with the identifier '{ProjectId}' could not be found in this TeamCloud Instance") .ToActionResult()); } if (!project.Type.Providers.Any(p => p.Id.Equals(provider.Id, StringComparison.OrdinalIgnoreCase))) { return(ErrorResult .NotFound($"A Provider with the ID '{ProviderId}' could not be found on the Project '{ProjectId}'") .ToActionResult()); } var oldProviderData = await providerDataRepository .GetAsync(providerData.Id) .ConfigureAwait(false); if (oldProviderData is null) { return(ErrorResult .NotFound($"The Provider Data '{providerData.Id}' could not be found..") .ToActionResult()); } var newProviderData = new ProviderDataDocument { ProviderId = provider.Id, Scope = ProviderDataScope.Project, ProjectId = project.Id, }.PopulateFromExternalModel(providerData); var updateResult = await orchestrator .UpdateAsync(newProviderData) .ConfigureAwait(false); var returnUpdateResult = updateResult.PopulateExternalModel(); return(DataResult <ProviderData> .Ok(returnUpdateResult) .ToActionResult()); }