/// <summary> /// Clona una colección de entradas /// </summary> public EntryModelCollection Clone() { EntryModelCollection entries = new EntryModelCollection(); // Clona la colección foreach (EntryModel entry in this) { entries.Add(entry.Clone()); } // Devuelve la colección clonada return(entries); }
/// <summary> /// Mezcla una colección de entradas /// </summary> public EntryModelCollection Merge(EntryModelCollection entriesNew) { EntryModelCollection entriesMerged = new EntryModelCollection(); // Mezcla las entradas foreach (EntryModel entryNew in entriesNew) { if (Search(entryNew.Id, entryNew.Title) == null) { // Añade la entrada Add(entryNew); // Añade la entrada a la colección de entradas añadidas entriesMerged.Add(entryNew); } } // Devuelve la colección de entradas mezcladas return(entriesMerged); }
/// <summary> /// Mezcla una colección de categorías /// </summary> public CategoryModelCollection Merge(TrackModel track, CategoryModelCollection categoriesNew) { CategoryModelCollection categoriesMerged = new CategoryModelCollection(); // Mezcla las categorías foreach (CategoryModel categoryNew in categoriesNew) { CategoryModel categoryFound = Search(categoryNew.Id, categoryNew.Title); if (categoryFound == null) { // Añade la categoría a la colección (indicando que está cargada) categoryNew.IsLoaded = true; Add(categoryNew.Clone(track)); // Añade la categoría a las categorías mezcladas categoriesMerged.Add(categoryNew.Clone(track)); } else { EntryModelCollection entriesMerged = categoryFound.Entries.Merge(categoryNew.Entries); // Si se han encontrado entradas nuevas, se añade a la lista de categorías mezcladas if (entriesMerged.Count > 0) { CategoryModel categoryMerged = categoryFound.Clone(track); // Limpia las entradas categoryMerged.Entries.Clear(); // Añade sólo las entradas mezcladas categoryMerged.Entries.AddRange(entriesMerged); // y añade la categoría a la lista categoriesMerged.Add(categoryMerged); } } } // Devuelve la categorías en las que ha habido algún cambio return(categoriesMerged); }