/// <summary> /// Clona una colección /// </summary> internal CategoryModelCollection Clone(TrackModel target) { CategoryModelCollection categories = new CategoryModelCollection(); // Clona las categorías foreach (CategoryModel category in this) { categories.Add(category.Clone(target)); } // Devuelve la colección clonada return(categories); }
/// <summary> /// Clona los datos /// </summary> public CategoryModel Clone(TrackModel parent) { CategoryModel target = new CategoryModel(parent); // Clona las propiedades target.Id = Id; target.Title = Title; target.IsLoaded = IsLoaded; // Clona las entradas target.Entries.AddRange(Entries.Clone()); // Devuelve el dato clonado return(target); }
/// <summary> /// Clona los datos /// </summary> public TrackModel Clone() { TrackModel target = new TrackModel(); // Clona los datos target.Id = Id; target.Title = Title; target.Description = Description; target.Url = Url; target.Enabled = Enabled; // Clona las categorías target.Categories.AddRange(Categories.Clone(target)); // Devuelve el objeto clonado return(target); }
/// <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); }
public CategoryModel(TrackModel track) { Track = track; }