Ejemplo n.º 1
0
        /// <inheritdoc />
        protected override async Task Validate(Library resource)
        {
            await base.Validate(resource);

            if (string.IsNullOrEmpty(resource.Slug))
            {
                throw new ArgumentException("The library's slug must be set and not empty");
            }
            if (string.IsNullOrEmpty(resource.Name))
            {
                throw new ArgumentException("The library's name must be set and not empty");
            }
            if (resource.Paths == null || !resource.Paths.Any())
            {
                throw new ArgumentException("The library should have a least one path.");
            }

            if (resource.Providers != null)
            {
                resource.Providers = await resource.Providers
                                     .SelectAsync(x => _providers.CreateIfNotExists(x))
                                     .ToListAsync();

                _database.AttachRange(resource.Providers);
            }
        }
Ejemplo n.º 2
0
        /// <inheritdoc />
        protected override async Task Validate(Show resource)
        {
            await base.Validate(resource);

            if (resource.Studio != null)
            {
                resource.Studio = await _studios.CreateIfNotExists(resource.Studio);

                resource.StudioID = resource.Studio.ID;
            }

            if (resource.Genres != null)
            {
                resource.Genres = await resource.Genres
                                  .SelectAsync(x => _genres.CreateIfNotExists(x))
                                  .ToListAsync();

                _database.AttachRange(resource.Genres);
            }

            if (resource.ExternalIDs != null)
            {
                foreach (MetadataID id in resource.ExternalIDs)
                {
                    id.Provider = _database.LocalEntity <Provider>(id.Provider.Slug)
                                  ?? await _providers.CreateIfNotExists(id.Provider);

                    id.ProviderID = id.Provider.ID;
                }
                _database.MetadataIds <Show>().AttachRange(resource.ExternalIDs);
            }

            if (resource.People != null)
            {
                foreach (PeopleRole role in resource.People)
                {
                    role.People = _database.LocalEntity <People>(role.People.Slug)
                                  ?? await _people.CreateIfNotExists(role.People);

                    role.PeopleID = role.People.ID;
                    _database.Entry(role).State = EntityState.Added;
                }
            }
        }
Ejemplo n.º 3
0
        public async Task <ActionResult <Group> > CreateGroup(IEnumerable <GroupCreateDto> groups)
        {
            var newGroups = groups.Select(g =>
            {
                var user = g.UsersIdInGroup.Select(id => new User {
                    Id = id
                }).ToList();
                _context.AttachRange(user);
                return(new Group
                {
                    Id = g.Id,
                    UsersInGroup = user,
                });
            });

            _context.AddRange(newGroups);

            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetGroup", newGroups));
        }