/// <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; } }
/// <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)); } }
/// <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(); }
/// <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(); }
/// <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); } } }
/// <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(); }
/// <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(); }
/// <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(); }
/// <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); }
/// <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č"; } }