Пример #1
0
 /// <summary>
 /// Změna vybrané hodnoty v comboBoxu pro výběr konkrétního zvířete
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void AnimalComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
 {
     if ((log.Pig)animalComboBox.SelectedItem != null)
     {
         selectPig = (log.Pig)animalComboBox.SelectedItem;
         validator.CalculateStatisticData(statisticCanvas, ((ComboBoxItem)yearComboBox.SelectedItem).Content.ToString(), categoryComboBox.SelectedIndex, selectPig);
     }
 }
 /// <summary>
 /// Změna v comboBoxu pro výběr konkrétního zvířete
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void AnimalComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
 {
     // Uživatel vybral nějaké zvíře - uložení tohoto zvířete
     if (animalComboBox.SelectedItem != null)
     {
         relativePig = (log.Pig)animalComboBox.SelectedItem;
     }
 }
Пример #3
0
        /// <summary>
        /// Metoda pro vytvoření View modelu Prase / Prasnice, pro jejich úpravu
        /// </summary>
        /// <returns>View model</returns>
        /// <param name="newPigFlag">Informace o tom, zda se jedná o nové prase nebo se upravuje stávající</param>
        public VM_PigSaw DefineVM_PigSaw(bool newPigFlag)
        {
            // Přidání nového zvířete. Aby se nebindovali data z poslední změny, je nutné zrušit referenci
            if (newPigFlag)
            {
                // Smazání informací o upravovaném praseti, protože uživatel si přeje přidat nové zvíře
                editPig = null;
            }
            // Kolekce obsahující jména všech prasnic v chovu
            List <string> mothersName = new List <string>();

            // Získání jmen všech prasnic v chovu
            foreach (Saw saw in admin.Saws)
            {
                mothersName.Add(saw.Name);
            }

            // Jedná se o úpravu stávajícího záznamu
            if (editPig != null)
            {
                // Pokud se jedná o Prasnici, vytvoří se View model pro ni
                if (editPig is Saw)
                {
                    return(new VM_PigSaw(null, editPig as Saw, mothersName, -1));
                }
                else
                {
                    // Nalezení id matky v kolekci PRasnic
                    int selectMotherId = -1;
                    if (editPig.Mother != null)
                    {
                        selectMotherId = admin.Saws.FindIndex(a => a.Id == editPig.Mother.Id);
                    }

                    return(new VM_PigSaw(editPig, null, mothersName, selectMotherId));
                }
            }
            else
            {
                return(new VM_PigSaw(mothersName));
            }
        }
Пример #4
0
        /// <summary>
        /// Metoda pro přidání nebo úpravu záznamu porodu
        /// </summary>
        /// <param name="operation">0 - nový záznam, 1 - úprava stávajícího</param>
        /// <param name="dateRecessed">Datum zapuštění</param>
        /// <param name="live">Počet živých selat při porodu</param>
        /// <param name="death">Počet mrtvých selat při porodu</param>
        /// <param name="reared">Počet odchovaných selat při odstavu</param>
        /// <param name="dateBirthReal">Skutečné datum porodu</param>
        /// <param name="pregnancyCheck">Kontrola březosti - Ano/Ne</param>
        /// <param name="editRecord">Upravovaný záznam</param>
        public void AddEditBirth(byte operation, DateTime dateRecessed, int live, int death, int reared, DateTime dateBirthReal, bool pregnancyCheck, Birth editRecord
                                 , Pig relationalPig)
        {
            // Přetypování na chovnou prasnici - ostatní nemohou mít seznam porodů
            Saw saw = (Saw)relationalPig;

            // nový záznam
            if (operation == 0)
            {
                saw.BirthRecords.Add(new Birth(dateRecessed, live, death, reared, dateBirthReal, pregnancyCheck));
            }
            // Úprava stávajícího
            else
            {
                editRecord.DateRecessed   = dateRecessed;
                editRecord.Live           = live;
                editRecord.Death          = death;
                editRecord.Reared         = reared;
                editRecord.DateBirth_real = dateBirthReal;
                editRecord.PregnancyCheck = pregnancyCheck;
            }

            SaveAll();
        }
Пример #5
0
 /// <summary>
 /// Odebrání záznamu zvířete
 /// </summary>
 /// <param name="removedPig">Odebíráné zvíře</param>
 public void RemoveSawPig(Pig removedPig)
 {
     if (removedPig != null)
     {
         if (removedPig is Saw)
         {
             Saw removedSaw = (Saw)removedPig;
             // Vyhledání prasnice z kolekce, které odpovídá ID
             var query = (from s in Saws
                          where (s.Id == removedSaw.Id)
                          select s).First();
             // Odebrání prasnice z kolekce
             Saw saw = query;
             if (saw != null)
             {
                 Saws.Remove(saw);
             }
         }
         else
         {
             // Vyhledání prasete z kolekce, které odpovídá ID
             var query = (from p in Pigs
                          where (p.Id == removedPig.Id)
                          select p).First();
             // Odebrání prasete z kolekce
             Pig pig = query;
             if (pig != null)
             {
                 Pigs.Remove(pig);
             }
         }
     }
     // Uložení ID a prasat
     SaveIDs();
     SavePigSaws();
 }
Пример #6
0
        /// <summary>
        /// Změna vybrané hodnoty v comboBoxu pro výběr kategorie
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void CategoryComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            // Uživatel vybral kategorii zvíře, umožní se mu vybrat i konkrétní zvíře, pokud chce
            if (categoryComboBox.SelectedIndex == 3)
            {
                animalComboBox.SelectedIndex = -1;
                animalComboBox.Visibility    = Visibility.Visible;
                animalTitle.Visibility       = Visibility.Visible;
            }
            else
            {
                selectPig = null;
                animalComboBox.Visibility = Visibility.Hidden;
                animalTitle.Visibility    = Visibility.Hidden;
            }

            if (!firstStartFlag)
            {
                if (selectPig == null)
                {
                    validator.CalculateStatisticData(statisticCanvas, ((ComboBoxItem)yearComboBox.SelectedItem).Content.ToString(), categoryComboBox.SelectedIndex, null);
                }
            }
        }
Пример #7
0
        /// <summary>
        /// Metoda pro odebrání veterinárního záznamu
        /// </summary>
        /// <param name="record">Odebíraný veterinární záznam</param>
        public void RemoveVeterinary(Veterinary record, Pig pig)
        {
            pig.VeterinaryRecords.Remove(record);

            SaveAll();
        }
Пример #8
0
        /// <summary>
        /// Metoda pro přidání / úpravu veterinárního záznamu
        /// </summary>
        /// <param name="operation">0 - nový, 1 - úprava</param>
        /// <param name="date">Datum návštěvy veterináře</param>
        /// <param name="price">Částka zaplacená za ošetření</param>
        /// <param name="purpose">Účel návstěvy veterináře</param>
        /// <param name="drugs">Podané léčivo</param>
        /// <param name="tasks">Provedené úkony a další poznámky k záznamu</param>
        /// <param name="editPig">Vztažné prase</param>
        public void AddEditVeterinary(int operation, DateTime date, int price, string purpose, string drugs, string tasks, Pig editPig, Veterinary record)
        {
            // Nový veterinární záznam
            if (operation == 0)
            {
                editPig.VeterinaryRecords.Add(new Veterinary(date, price, purpose, tasks, drugs));
            }
            // Úprava stávajícího veterinárního záznamu
            else if (operation == 1)
            {
                record.Date    = date;
                record.Price   = price;
                record.Purpose = purpose;
                record.Drugs   = drugs;
                record.Tasks   = tasks;
            }

            SaveAll();
        }
Пример #9
0
        /// <summary>
        /// Přidání / úprava prasnice nebo prasete
        /// </summary>
        /// <param name="operation">0 - Nové prase, 1 - úprava stávajcího</param>
        /// <param name="type">Prasnice / ostatní prase</param>
        /// <param name="motherId">Id v ComboBoxu pro výběr matky</param>
        /// <param name="dateBorn">Datum narození prasete</param>
        /// <param name="registerNumber">Registrační číslo prasete</param>
        /// <param name="name">Pojmenování prasete</param>
        /// <param name="description">Podrobný popis prasete</param>
        /// <param name="editPig">Upravované prase</param>
        /// <param name="sex">Pohlaví 0 - Prasnice, 1 - Kanec</param>
        public void AddEditSawPig(byte operation, TypePig type, int motherId, DateTime dateBorn, string registerNumber, string name, string description, Pig editPig, Sex sex)
        {
            // Nové zvíře
            if (operation == 0)
            {
                // Prasnice
                if (type == TypePig.Saw)
                {
                    Saws.Add(new Saw(dateBorn, registerNumber, name, description));
                }
                // Ostatní
                else
                {
                    // Ošetření, pokud by uživatel nevybral matku
                    Saw mother = null;
                    if (motherId != -1)
                    {
                        mother = Saws[motherId];
                    }

                    Pigs.Add(new Pig(dateBorn, registerNumber, sex, mother, name, description));
                }
            }
            // Úprava stávajícího
            else if (operation == 1)
            {
                // Prasnice
                if (editPig is Saw)
                {
                    // Změna parametrů konkrétní PRASNICE
                    Saw editSaw = editPig as Saw;
                    editSaw.Name           = name;
                    editSaw.RegisterNumber = registerNumber;
                    editSaw.Born           = dateBorn;
                    editSaw.Description    = description;
                }
                // Ostatní
                else
                {
                    // Vyhledání konkrétní matky v seznamu PRASNIC
                    Saw mother = null;
                    if (motherId != -1)
                    {
                        mother = Saws[motherId];
                    }
                    // Úprava hodnot zadaného prasate
                    editPig.Name           = name;
                    editPig.RegisterNumber = registerNumber;
                    editPig.Born           = dateBorn;
                    editPig.Description    = description;
                    editPig.Mother         = mother;
                }
            }
            // Uložení identifikátorů tříd a samotných záznamů prasat
            SaveIDs();
            SavePigSaws();
        }
Пример #10
0
        /// <summary>
        /// Metoda pro přidání nebo úpravu transakce
        /// </summary>
        /// <param name="operation">0 - nový záznam * 1 - úprava stávajícího</param>
        /// <param name="date">Datum transakce</param>
        /// <param name="name">Název transakce * MAX 50 znaků</param>
        /// <param name="price">Částka transakce</param>
        /// <param name="description">Popis transakce</param>
        /// <param name="typeFinance">Příjmy / výdaje</param>
        /// <param name="categoryId">Pořadí kategorie transakce</param>
        /// <param name="animal">Zvíře, kterého se transakce týká</param>
        /// <param name="editRecord">Záznam pro úpravu</param>
        public void AddEditFinanceRecord(byte operation, string date, string name, string price, string description, int typeFinance, int categoryId, Pig animal)
        {
            // Ošetření datumu - povinný údaj
            if (!DateTime.TryParse(date, out DateTime date_help) && date != "")
            {
                throw new ArgumentException("Zadal jsi datum ve špatném formátu. Má vypadat jako 12.10.2020");
            }
            else if (date == "")
            {
                throw new ArgumentException("Nezadal jsi žádné datum transakce");
            }
            // Ošetření názvu transakce, maximální délka 38 znaků * jinak problém u výpisu - povinný údaj
            if (name.Count() > 38 && name != "")
            {
                throw new ArgumentException("Zadaný název transakce přesahuje 38 znaků. Prosím zkať jej");
            }
            else if (name == "")
            {
                throw new ArgumentException("Nezadal jsi název transakce");
            }
            // Ošetření částky transakce - povinný údaj
            if (!int.TryParse(price, out int price_help) && price != "")
            {
                throw new ArgumentException("Zadal jsi hodnotu transakce ve špatném formátu. Povoleno je pouze celé číslo");
            }
            else if (price == "")
            {
                throw new ArgumentException("Nezadal jsi žádnou hodnotu transakce");
            }
            // Ošetření typu transakce - povinný údaj
            if (typeFinance == -1)
            {
                throw new ArgumentException("Nevybral jsi typ transakce - příjem nebo výdaj");
            }
            // Ošetření kategorie transakce - povinný údaj
            if (categoryId == -1)
            {
                throw new ArgumentException("Nevybral jsi žádnou kategorii. Naprav to a nějakou si zvol.");
            }

            int animalId = -1;

            // Uživatel si zvolil vztažné zvíře a současně kategorie je 3 - zvíře * pokud není kategorie zvíře, tak se uloží - 1, tedy nevybráno do zvířete
            if (animal != null && categoryId == 3)
            {
                animalId = animal.Id;
            }

            // Ošetření kategorií, pokud by se například přidala kategorie do english a nedala do českého překladu v ADMIN, aby aplikace upozornila
            if (!(categoryId >= 0 && categoryId < Admin.FinanceCategory_Czech.Count() && categoryId < (Enum.GetNames(typeof(FinanceCategory))).Count()))
            {
                throw new ArgumentException("Chyba v kategorii. Kontaktujte programátora.");
            }

            // Nový záznam
            if (operation == 0)
            {
                admin.AddEditFinanceRecord(0, date_help, name, price_help, description, (FinanceTypeRecord)typeFinance, (FinanceCategory)categoryId, animalId, null);
            }
            // Úprava stávajícího záznamu
            else if (operation == 1 && editFinanceRecord != null)
            {
                admin.AddEditFinanceRecord(1, date_help, name, price_help, description, (FinanceTypeRecord)typeFinance, (FinanceCategory)categoryId, animalId, editFinanceRecord);
            }

            ConstructGraphicFinance(true, false, false, true, 0, 0);
        }
Пример #11
0
        /// <summary>
        /// Metoda, která spočítá statistické parametry a vloží je na canvas. Změní obsah vlastnosti TEXT u všech textBlocků
        /// </summary>
        /// <param name="statCanvas">Canvas, který obsahuje šablonu pro vložení spočítaných hodnot</param>
        /// <param name="year">Číslo roku</param>
        /// <param name="categoryId">Pořadí kategorie</param>
        /// <param name="relativeAnimal">Vztažné zvíře, tedy pokud uživatel zadal, že chce spočítat pro konkrétní zvíře</param>
        public void CalculateStatisticData(Canvas statCanvas, string year, int categoryId, Pig relativeAnimal)
        {
            // Názvy textBlocků v okně statistiky, do kterých se budou vpisovat data o finančních přehledech
            string[] statisticTextBlockNames =
            {
                // Příjmy prvních 6 měsíců
                "januaryPlusTextBlock",  "februaryPlusTextBlock",  "marchPlusTextBlock",      "aprilPlusTextBlock",    "mayPlusTextBlock",       "junePlusTextBlock",
                // Příjmy druhých 6 měsíců
                "julyPlusTextBlock",     "augustPlusTextBlock",    "septemberPlusTextBlock",  "octoberPlusTextBlock",  "novemberPlusTextBlock",  "decemberPlusTextBlock",
                // Výdaje prvních 6 měsíců
                "januaryMinusTextBlock", "februaryMinusTextBlock", "marchMinusTextBlock",     "aprilMinusTextBlock",   "mayMinusTextBlock",      "juneMinusTextBlock",
                // Výdaje druhých 6 měsíců
                "julyMinusTextBlock",    "augustMinusTextBlock",   "septemberMinusTextBlock", "octoberMinusTextBlock", "novemberMinusTextBlock", "decemberMinusTextBlock",
                // Celkové příjmy a výdaje
                "sumPlusTextBlock",      "sumMinusTextBlock"
            };
            // Uživatel nemá vybranou kategorii
            if (categoryId == -1)
            {
                throw new ArgumentException("Nevybral jste kategorii, pokud nechcete nějakou konkrétní zvolte VŠECHNY");
            }
            // Ošetření že jde rok převést na číslo
            if (!int.TryParse(year, out int year_help))
            {
                throw new ArgumentException("Nepodařilo se převést vámi zadaný rok! Prosím opakujte výběr");
            }
            // Ošetření kategorií, pokud by se například přidala kategorie do english a nedala do českého překladu v ADMIN, aby aplikace upozornila
            if (!(categoryId >= 0 && categoryId <= Admin.FinanceCategory_Czech.Count() && categoryId <= (Enum.GetNames(typeof(FinanceCategory))).Count()))
            {
                throw new ArgumentException("Chyba v kategorii. Kontaktujte programátora.");
            }

            // Kolekce kam se uloží data pro 12 příjmů, 12 výdajů a suma příjmu a výdajů -- celkem 26 položek
            List <int> result;

            // Uživatel nezměnil comboBox pro kategorii - volba ROK, KATEGORIE (všechny)
            // -------------------------------------------------------------------------
            // Rovná se sumě, protože k této kolekci se přidává ve VIEW ještě volba VŠECHNY vždy na konec této kolekce
            if (categoryId == Admin.FinanceCategory_Czech.Count())
            {
                result = admin.CalculateStatisticData(0, year_help, null, null);
            }
            // Uživatel vybral nějakou kategorii, ale ne zvíře - volba ROK, KATEGORIE
            else if (categoryId != 3)
            {
                result = admin.CalculateStatisticData(1, year_help, (FinanceCategory)categoryId, null);
            }
            // uživatel vybral určité zvíře - volba ROK, KATEGORIE a KONKRÉTNÍ ZVÍŘE
            else if (categoryId == 3 && relativeAnimal != null)
            {
                result = admin.CalculateStatisticData(2, year_help, (FinanceCategory)categoryId, relativeAnimal.Id);
            }
            // uživatel vybral kategorii zvířat, ale NE konkrétní zvíře
            else if (categoryId == 3 && relativeAnimal == null)
            {
                result = admin.CalculateStatisticData(1, year_help, (FinanceCategory)categoryId, null);
            }
            // Něco se pokazilo při výběru
            else
            {
                throw new ArgumentException("Něco se nepodařilo při výpočtu parametrů. Zkus výběr prosím znovu");
            }
            // Vykreslení na CANVAS - pouze se změní hodnoty textBlocků
            for (int i = 0; i < 26; i++)
            {
                TextBlock text = (TextBlock)statCanvas.FindName(statisticTextBlockNames[i]);
                text.Text = result[i].ToString() + "\tKč";
            }
        }