/// <summary> /// Základní konstruktor - vytvoří vše potřebné pro vykreslení /// </summary> /// <param name="record"></param> public FinanceGraphicRecord(FinanceRecord record) { Price = new TextBlock { FontSize = 16, FontWeight = FontWeights.Bold, Foreground = Brushes.Black, Text = record.Price.ToString() + "\tKč" }; Date = new TextBlock { FontSize = 15, FontWeight = FontWeights.Bold, Foreground = Brushes.Black, Text = record.Date.ToShortDateString() }; Title = new TextBlock { FontSize = 14, FontWeight = FontWeights.DemiBold, Foreground = Brushes.Black, Text = record.Name }; RectangleTop = new Rectangle { Width = 320, Height = 25, RadiusX = 3, RadiusY = 3, Fill = new SolidColorBrush(Color.FromArgb(255, 62, 188, 250)) }; RectangleDown = new Rectangle { Width = 320, Height = 25, RadiusX = 5, RadiusY = 5, Fill = Brushes.White }; RectangleLeft = new Rectangle { Width = 15, Height = 25, Fill = new SolidColorBrush(Color.FromArgb(200, 69, 253, 0)) }; if (record.TypeRecord == TypeRecord.Costs) { RectangleLeft.Fill = new SolidColorBrush(Color.FromArgb(200, 255, 4, 4)); } FinanceRecord = record; RectangleDown.MouseDown += RectangleDown_MouseDown; }
/// <summary> /// Validace zadaných údajů do formuláře, tak aby bylo možné vytvořit nový záznam v databázi /// </summary> /// <param name="price">Částka</param> /// <param name="name">Název transakce</param> /// <param name="date">Datum transakce</param> /// <param name="description">Popis transakce</param> /// <param name="place">Místo transakce</param> /// <param name="type">Výdaj / příjem</param> /// <param name="category">Kategorie výdajů</param> public void EnterFinanceRecord(string price, string name, string date, string description, string place, TypeRecord type, Category category, FinanceRecord record, TypeBalance balance) { // Pomocné proměnné pro výstup z parsování INT a DATETIME DateTime helpDate = DateTime.Today.Date; int helpPrice = 0; // Ošetření vyjímek, tedy pokud uživatel zadá nesmysl, aby byl upozorněn a program nespadl if (int.TryParse(price, out helpPrice)) { if (helpPrice < 0) { throw new ArgumentException("Zadal jsi částku menší než 0!"); } } else { throw new ArgumentException("Zadal jsi částku ve špatném formátu."); } if (DateTime.TryParse(date, out helpDate)) { if (helpDate > DateTime.Now) { throw new ArgumentException("Zadal jsi datum z budoucnosti"); } } else { throw new ArgumentException("Zadal jsi datum ve špatném formátu. Má vypadat jako 12.10.2020"); } if (name.Count() < 3) { throw new ArgumentException("Zadal jsi název transakce kratší než 3, jsi si jist ?"); } if (record == null) { if (description == "" && place == "") { admin.EnterEditRecord(0, helpPrice, name, helpDate, "", "", type, category, balance, false, null); } else { admin.EnterEditRecord(0, helpPrice, name, helpDate, place, description, type, category, balance, true, null); } } else { admin.EnterEditRecord(1, helpPrice, name, helpDate, place, description, type, category, balance, true, record); } }
/// <summary> /// Metoda pro vymazání záznamu z kolekce /// </summary> /// <param name="record"></param> public void RemoveRecord(FinanceRecord record) { // Jedná se o výdaj - k danému zůstatku se přičte suma transakce, aby bylo odebrání výdaje korektní if (record.TypeRecord == TypeRecord.Costs) { Balance[(int)record.TypeBalance] += record.Price; } else if (record.TypeRecord == TypeRecord.Income) { Balance[(int)record.TypeBalance] -= record.Price; } if (Records.Contains(record)) { Records.Remove(record); } SaveFinance(pathFinance); SaveBalance(pathBalance); SaveFinance(pathFinancePraceD); SaveBalance(pathBalancePraceD); }
/// <summary> /// Metoda pro zadání nového finančního záznamu nebo jeho úpravu, při zadání nového umožňuje zadání všech parametrů nebo pouze povinných /// </summary> /// <param name="operation">0 - Nový záznam, 1 - upravit stávající</param> /// <param name="price">Částka</param> /// <param name="name">Název transakce</param> /// <param name="date">Datum transakce</param> /// <param name="place">Místo uskutečnění transakce</param> /// <param name="description">Popis</param> /// <param name="type">Výdaj / příjem</param> /// <param name="category">Kategorie výdaje</param> /// <param name="full">Zda se zadávají všechny parametry</param> /// <param name="record">Stávající záznam k upravení</param> public void EnterEditRecord(byte operation, int price, string name, DateTime date, string place, string description, TypeRecord type, Category category, TypeBalance balance, bool full, FinanceRecord record) { // Zapsání nové transakce v plné výši, uživatel vyplnil všechna pole if (operation == 0 && full) { Records.Add(new FinanceRecord(price, name, date, place, description, type, category, balance)); } // Zapsání nové transakce v nekompletní podobě, uživatel nezadal všechna pole else if (operation == 0 && !full) { Records.Add(new FinanceRecord(price, name, date, type, category, balance)); } // Úpravy zůstatků podle nově zadané transakce if (operation == 0 && type == TypeRecord.Costs) { if ((Balance[(int)balance] - price) > 0) { Balance[(int)balance] -= price; } } else if (operation == 0 && type == TypeRecord.Income) { if ((Balance[(int)balance] + price) > 0) { Balance[(int)balance] += price; } } // Úprava stávající transakce if (operation == 1) { // Získání hodnoty v ENUM, tedy pozici v daném enumu 0 - bankovní účet / 1 - hotovost int typeBalance_old = (int)record.TypeBalance; int typeBalance_new = (int)balance; // Původní záznam je výdaj if (record.TypeRecord == TypeRecord.Costs) { // Přičte se původní suma ke starému zůstaku Balance[typeBalance_old] += record.Price; // Podle toho zda se změnil i typ (Výdaj , příjem) tak se podle toho přičte / odečte if (type == TypeRecord.Costs) { Balance[typeBalance_new] -= price; } else { Balance[typeBalance_new] += price; } } // Původní záznam je příjem else if (record.TypeRecord == TypeRecord.Income) { // Odečte se od původního zůstatku Balance[typeBalance_old] -= record.Price; if (type == TypeRecord.Costs) { Balance[typeBalance_new] -= price; } else { Balance[typeBalance_new] += price; } } // Změním všechny atribity podle nově zadaných hodnot record.Price = price; record.Name = name; record.Date = date; record.Place = place; record.Description = description; // Změním všechny ENUM členy na nové zadání record.TypeRecord = type; record.Category = category; record.TypeBalance = balance; } SaveFinance(pathFinance); SaveBalance(pathBalance); SaveFinance(pathFinancePraceD); SaveBalance(pathBalancePraceD); }
/// <summary> /// Zavolá metodu ze správce, která odstraní vybraný záznam z databáze /// </summary> /// <param name="record">Záznam, který se má vymazat</param> public void RemoveFinanceRecord(FinanceRecord record) { admin.RemoveRecord(record); }