Esempio n. 1
0
        public async Task <DatasetDto> AddNew(string orgSlug, DatasetNewDto dataset)
        {
            var org = await _utils.GetOrganization(orgSlug);

            if (!await _authManager.IsOwnerOrAdmin(org))
            {
                throw new UnauthorizedException("You are not authorized to add datasets to this organization");
            }

            if (dataset == null)
            {
                throw new BadRequestException("Dataset is null");
            }

            if (dataset.Slug == null)
            {
                throw new BadRequestException("Dataset slug is null");
            }

            if (!dataset.Slug.IsValidSlug())
            {
                throw new BadRequestException("Dataset slug is invalid");
            }

            if (_context.Datasets.Any(item => item.Slug == dataset.Slug && item.Organization.Slug == orgSlug))
            {
                throw new BadRequestException("Dataset with this slug already exists");
            }

            var ds = new Dataset
            {
                Slug         = dataset.Slug,
                Organization = org,
                InternalRef  = Guid.NewGuid(),
                CreationDate = DateTime.Now
            };

            var ddb = _ddbManager.Get(orgSlug, ds.InternalRef);

            ddb.Meta.GetSafe().Name = dataset.Name ?? dataset.Slug;

            var attributes = await ddb.GetAttributesAsync();

            if (dataset.IsPublic.HasValue)
            {
                attributes.IsPublic = dataset.IsPublic.Value;
            }

            org.Datasets.Add(ds);

            await _context.SaveChangesAsync();

            return(ds.ToDto(await ddb.GetInfoAsync()));
        }
Esempio n. 2
0
        public async Task <IActionResult> Post([FromRoute] string orgSlug, [FromForm] DatasetNewDto dataset)
        {
            try
            {
                _logger.LogDebug("Dataset controller Post('{OrgSlug}', '{DatasetSlug}')", orgSlug, dataset?.Slug);

                var newDs = await _datasetsManager.AddNew(orgSlug, dataset);

                return(CreatedAtRoute(
                           nameof(DatasetsController) + "." + nameof(Get),
                           new { orgSlug = orgSlug, dsSlug = newDs.Slug }, newDs));
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "Exception in Dataset controller Post('{OrgSlug}', '{DatasetSlug}')", orgSlug, dataset?.Slug);
                return(ExceptionResult(ex));
            }
        }