Пример #1
0
        /// <summary>
        /// Обновляет один картридж.
        /// </summary>
        /// <param name="editedCartridge">Отредактированный картридж</param>
        public void UpdateCartridge(CartridgeDTO editedCartridge)
        {
            // Найти картридж, равный редактированному, в текущем списке всех картриджей.
            CartridgeDTO cartridge = Cartridges.FirstOrDefault(x => x.Id == editedCartridge.Id);
            // Найти баланс картриджа, равный редактированному, в текущем списке баланса ОСП.
            BalanceDTO balance = Balance.FirstOrDefault(x => x.Cartridge.Id == editedCartridge.Id);
            // Найти все списания пользователя ОСП, в которых списан изменяемый картридж.
            IEnumerable <ExpenseDTO> userExpenses = UserExpenses.Where(x => x.Cartridge.Id == editedCartridge.Id);
            // Найти все списания ОСП, в которых списан изменяемый картридж.
            IEnumerable <ExpenseDTO> expenses = Expenses.Where(x => x.Cartridge.Id == editedCartridge.Id);
            // Найти все поступления ОСП, в которых добавлен изменяемый картридж.
            IEnumerable <ReceiptDTO> receipts = Receipts.Where(x => x.Cartridges.Where(c => c.Cartridge.Id == cartridge.Id).Any());

            // Если картридж найден.
            if (cartridge != null)
            {
                // Присвоить значения свойств отредактированного картриджа текущему.
                foreach (var prop in cartridge.GetType().GetProperties())
                {
                    prop.SetValue(cartridge, prop.GetValue(editedCartridge));
                }
                // Обновить картридж в объектах списаний, поступлений и баланса.
                if (balance != null)
                {
                    balance.Cartridge = cartridge;
                }
                if (expenses != null)
                {
                    foreach (var expense in expenses)
                    {
                        expense.Cartridge = cartridge;
                    }
                }
                if (userExpenses != null)
                {
                    foreach (var userExpense in userExpenses)
                    {
                        userExpense.Cartridge = cartridge;
                    }
                }
                if (receipts != null)
                {
                    foreach (var receipt in receipts)
                    {
                        ReceiptCartridgeDTO receiptCartridge = receipt.Cartridges.FirstOrDefault(x => x.Cartridge.Id == cartridge.Id);
                        receiptCartridge.Cartridge = cartridge;
                    }
                }
            }
        }