/// <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; } } } }