void ChangeItemStatus(MovieItemData item, MovieItemStatus oldStatus, MovieItemStatus newStatus) { ItemsWithStatus[statusesIndexes[oldStatus]].Remove(item); ItemsWithStatusAndFormat[statusesIndexes[oldStatus], formatsIndexes[item.Format]].Remove(item); ItemsWithStatus[statusesIndexes[newStatus]].AddLast(item); ItemsWithStatusAndFormat[statusesIndexes[newStatus], formatsIndexes[item.Format]].AddLast(item); }
public MovieItemData DamageItem() { MovieItemFormat format = formats[random.Next(formats.Length)]; MovieItemData item = GetActiveItem(format); ChangeItemStatus(item, MovieItemStatus.Active, MovieItemStatus.Damaged); return(item); }
public MovieItemData RentItem(MovieItemFormat format, bool isSell) { MovieItemStatus status = isSell ? MovieItemStatus.Sold : MovieItemStatus.Rented; MovieItemData item = GetActiveItem(format); ChangeItemStatus(item, MovieItemStatus.Active, status); return(item); }
MovieItemData GetActiveItem(MovieItemFormat format) { LinkedList <MovieItemData> activeItemsWithFormat = ItemsWithStatusAndFormat[statusesIndexes[MovieItemStatus.Active], formatsIndexes[format]]; MovieItemData item; if (activeItemsWithFormat.Count != 0) { return(activeItemsWithFormat.First.Value); } item = new MovieItemData(this, format); Items.AddLast(item); ItemsWithFormat[formatsIndexes[format]].AddLast(item); ItemsWithStatus[statusesIndexes[MovieItemStatus.Active]].AddLast(item); activeItemsWithFormat.AddLast(item); return(item); }
public void ReturnItem(MovieItemData item) { ChangeItemStatus(item, MovieItemStatus.Rented, MovieItemStatus.Active); }