/// <inheritdoc/> public override Video Clone(int server, bool isSpecial = false) { bool cloneMovie = false; bool hasSpecials = false; // check if Movie is on requested Server foreach (int serverList in this.Server) { if (serverList.Equals(server)) { cloneMovie = true; } } // check if Movie contains Specials, if isSpecial is requested if (isSpecial) { foreach (VideoFile videoFile in this.MediaFiles) { if (videoFile.Server.Equals(server) && videoFile.IsSpecial == isSpecial) { hasSpecials = true; } } } Movie movieClone = null; if (cloneMovie && hasSpecials == isSpecial) { movieClone = new Movie(this.Configuration); movieClone.Title = this.Title; movieClone.TitleSort = this.TitleSort; movieClone.TitleOriginal = this.TitleOriginal; movieClone.MediaGroup = this.MediaGroup; movieClone.Rating = this.Rating; movieClone.PublishingYear = this.PublishingYear; movieClone.PublishingDate = this.PublishingDate; movieClone.Content = this.Content; movieClone.RunTime = this.RunTime; movieClone.Images = this.Images; // if required, still to be cloned movieClone.MPAA = this.MPAA; movieClone.PlayCount = this.PlayCount; movieClone.PlayDate = this.PlayDate; movieClone.IMDbId = this.IMDbId; movieClone.Country = this.Country; movieClone.Genres = this.Genres; movieClone.Studios = this.Studios; movieClone.Directors = this.Directors; movieClone.Writers = this.Writers; movieClone.Actors = this.Actors; foreach (VideoFile videoFile in this.MediaFiles) { if (videoFile.Server.Equals(server) && videoFile.IsSpecial == isSpecial) { movieClone.MediaFiles.Add((VideoFile)videoFile.Clone()); } } movieClone.Filename = this.Filename; movieClone.AddServer(server); movieClone.VideoCodec = this.VideoCodec; movieClone.VideoDefinition = this.VideoDefinition; movieClone.VideoAspectRatio = this.VideoAspectRatio; movieClone.AudioStreams = this.AudioStreams; movieClone.SubTitles = this.SubTitles; movieClone.MediaLanguages = this.MediaLanguages; } return movieClone; }