Ejemplo n.º 1
0
        public void SetReturnedReturnables(IEnumerable <KeyValuePair <Returnable, int> > returnables)
        {
            if (returnables == null || !returnables.Any())
            {
                ReturnedReturnables = new List <DeliveryReturnable>();
                return;
            }

            if (ReturnedReturnables == null)
            {
                ReturnedReturnables = new List <DeliveryReturnable>();
            }

            var newReturnableIds      = returnables.Select(r => r.Key.Id);
            var existingReturnableIds = ReturnedReturnables.Select(r => r.ReturnableId);

            var returnablesToRemove = newReturnableIds.Except(existingReturnableIds);

            foreach (var returnableToRemove in returnablesToRemove)
            {
                var returnable = ReturnedReturnables.SingleOrDefault(r => r.ReturnableId == returnableToRemove);
                ReturnedReturnables.Remove(returnable);
            }

            foreach (var returnable in returnables)
            {
                var existingReturnable = ReturnedReturnables.SingleOrDefault(r => r.ReturnableId == returnable.Key.Id);
                if (existingReturnable != null)
                {
                    existingReturnable.SetQuantity(returnable.Value);
                }
                else
                {
                    ReturnedReturnables.Add(new DeliveryReturnable(returnable.Key, returnable.Value));
                }
            }

            Refresh();
        }