Пример #1
0
        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());
        }
Пример #2
0
        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());
        }
Пример #3
0
        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());
        }
Пример #4
0
 public void Setup()
 {
     _providerDataValidator = new ProviderDataValidator();
 }