public IEnumerable <IMediaDetail> GetAllParentMediaDetails(long languageId) { if (_allParentMediaDetails.ContainsKey(languageId)) { return(_allParentMediaDetails[languageId]); } var item = this; var items = new List <IMediaDetail>(); var absoluteRoot = MediasMapper.GetAbsoluteRoot(); if ((item.Media.ParentMediaID != null) && (item.Media.ParentMediaID != absoluteRoot.ID)) { items.Add(item); } while (true) { if (item == null) { break; } if (item.Media.ParentMediaID == null) { break; } var parentMedia = item.Media.ParentMedia; if (parentMedia == null) { parentMedia = BaseMapper.GetDataModel().AllMedia.FirstOrDefault(i => i.ID == (long)item.Media.ParentMediaID); } if (parentMedia == null) { break; } item = parentMedia.MediaDetails.FirstOrDefault(i => i.LanguageID == languageId && !i.IsHistory); if (item == null) { break; } if (item.Media.ID != absoluteRoot.ID) { items.Add(item); } } items.Reverse(); _allParentMediaDetails[languageId] = items; return(items); }
public Return MoveToIndex(int insertAtIndex) { var returnObj = BaseMapper.GenerateReturn(); if (insertAtIndex < 0) { var ex = new System.Exception("Cant move to index: " + insertAtIndex); returnObj.Error = ErrorHelper.CreateError(ex); return(returnObj); } var siblings = GetSiblings(); var currentIndex = GetIndex(siblings); if (currentIndex >= 0 && currentIndex <= siblings.Count) { siblings.RemoveAt(currentIndex); } if (siblings.Count < insertAtIndex) { var ex = new System.Exception("Cant move to index: " + insertAtIndex); returnObj.Error = ErrorHelper.CreateError(ex); return(returnObj); } siblings.Insert(insertAtIndex, this); var index = 0; foreach (var media in siblings) { if (media.OrderIndex == index) { index++; continue; } var inContext = BaseMapper.GetObjectFromContext(media); media.OrderIndex = index; returnObj = MediasMapper.Update(media); index++; } MediasMapper.ClearCache(); MediaDetailsMapper.ClearCache(); return(returnObj); }
public void ReorderChildren() { var index = 0; var childMedias = ChildMedias.Where(i => i.MediaDetails.Any() && i.MediaDetails.ElementAt(0).MediaType.ShowInSiteTree).OrderBy(i => i.OrderIndex).ToList(); foreach (var mediaItem in childMedias) { var context = BaseMapper.GetObjectFromContext(mediaItem); if (context == null) { continue; } if (context.OrderIndex != index) { context.OrderIndex = index; MediasMapper.Update(context); } index++; } }