Exemplo n.º 1
0
        public async Task <JsonResult> AddReleases([FromBody] AddReleasesDTO addReleaseDtos)
        {
            try
            {
                var results = new List <Result>();
                // we do not use the automatic integration of fluentValidation into ASP.NET Core (validating objects that are passed in to controller actions), as we want to add ALL valid releases and not stop and throw if one is invalid)
                var releaseValidator = new ReleaseValidator(_trackedMediaSettings);
                foreach (var addReleaseDto in addReleaseDtos.Releases)
                {
                    var validationResult = await releaseValidator.ValidateAsync(addReleaseDto);

                    if (validationResult.IsValid)
                    {
                        results.Add(await _releaseService.AddRelease(new Release(addReleaseDto)));
                    }
                    else
                    {
                        results.Add(Result.Failure(validationResult.GetMessage()));
                    }
                }
                return(new JsonResult(results.Select(r => r.AsSerializableResult())));
            }
            catch (Exception e)
            {
                _logger.LogError("Something went wrong. {exceptionMessage}", e.Message);
                return(new JsonResult(Result.Failure("Adding the release failed.").AsSerializableResult()));
            }
        }