Ejemplo n.º 1
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;
                }
            }
        }