using MainShell.Models.Wafer; using System.Collections.Generic; using System.Linq; namespace MainShell.Process { public class DieTransferRow { public DieTransferRow() { Dies = new List(); Direction = DieTransferRowDirection.Positive; } public int RowIndex { get; set; } public DieTransferRowDirection Direction { get; set; } public bool SkipNgDie { get; set; } public List Dies { get; set; } public int AvailableCount { get { return GetAvailableDies().Count; } } public IReadOnlyList GetOrderedDies() { if (Dies == null) { return new List(); } IEnumerable orderedDies = Direction == DieTransferRowDirection.Positive ? Dies.OrderBy(die => die.Column) : Dies.OrderByDescending(die => die.Column); return orderedDies.ToList(); } public IReadOnlyList GetAvailableDies() { IEnumerable availableDies = GetOrderedDies().Where(die => die != null); if (SkipNgDie) { availableDies = availableDies.Where(die => die.Status != DieStatus.Ng); } return availableDies.ToList(); } } }