public override async Task AddOrUpdateInclusive(MovieLibrary library)
        {
            IList <ItemLibrary> existingItemLibraries = MediaCloudContext.ItemLibraries.ToList();
            IList <ItemGenre>   existingItemGenres    = MediaCloudContext.ItemGenres.ToList();

            //Don't re-add existing items
            foreach (ItemLibrary itemLibrary in library.ItemLibraries)
            {
                ItemLibrary existingItemLibrary = existingItemLibraries.FirstOrDefault(x => x.ItemId == itemLibrary.Item.Id);

                if (existingItemLibrary != null)
                {
                    MediaCloudContext.Entry(itemLibrary.Item).State = EntityState.Unchanged;
                    itemLibrary.ItemId = existingItemLibrary.ItemId;
                }
                else
                {
                    existingItemLibraries.Add(itemLibrary);
                }

                //Don't re-add existing genres
                foreach (ItemGenre itemGenre in itemLibrary.Item.ItemGenres)
                {
                    ItemGenre existingItemGenre =
                        existingItemGenres.FirstOrDefault(x => x.GenreId == itemGenre.Genre.Id);

                    if (existingItemGenre != null)
                    {
                        Entities.Genre localEntry = MediaCloudContext.Set <Entities.Genre>().Local.FirstOrDefault(entry => entry.Id == itemGenre.Genre.Id);

                        //Make sure an already attached genre isn't attached again
                        if (localEntry != null)
                        {
                            MediaCloudContext.Entry(localEntry).State = EntityState.Detached;
                        }

                        MediaCloudContext.Entry(itemGenre.Genre).State = EntityState.Unchanged;
                        itemGenre.GenreId = existingItemGenre.GenreId;
                    }
                    else
                    {
                        existingItemGenres.Add(itemGenre);
                    }
                }
            }

            await MediaCloudContext.MovieLibraries.AddAsync(library);

            await MediaCloudContext.SaveChangesAsync();
        }
Exemplo n.º 2
0
    ///<summary>
    /// Returns a random item by genre tag from all items list
    ///</summary>
    private ShopItem GetRandomItemByGenre(ItemGenre genre)
    {
        List <ShopItem> shopItemsGenre = new List <ShopItem>();

        foreach (ShopItem item in GetAllItems())
        {
            if (item.Genre.Equals(genre))
            {
                shopItemsGenre.Add(item);
            }
        }
        int index = Random.Range(0, shopItemsGenre.Count);

        return(shopItemsGenre[index]);
    }
Exemplo n.º 3
0
 public HLibGenre(ItemGenre genre, string genreName)
 {
     _genre     = genre;
     _genreName = genreName;
 }