/// <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;
        }
Exemple #2
0
        /// <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);
            }
        }
Exemple #3
0
        /// <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);
        }
Exemple #4
0
        /// <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);
        }
Exemple #5
0
 /// <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);
 }