/// <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); } }
/// <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; } } }
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)); }