using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Drawing2D; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Kindlebox { public partial class ViewRabbit : Form { List kitList = new List(); public Guid kitID = Guid.Empty; List litterList = new List(); public Guid litterID = Guid.Empty; public Guid rabbitID; public ViewRabbit() { InitializeComponent(); } private void ViewRabbit_Load(object sender, EventArgs e) { RefreshRabbitInfo(); } private void ViewRabbit_Leave(object sender, EventArgs e) { } private void ViewRabbit_FormClosing(object sender, FormClosingEventArgs e) { //rabbitID = Guid.Empty; } private void btnEdit_Click(object sender, EventArgs e) { EditRabbitForm editRabbitForm = new EditRabbitForm(rabbitID); editRabbitForm.ShowDialog(); } public void RefreshRabbitInfo() { if (rabbitID != Guid.Empty) { foreach (Rabbit r in RabbitList.rabbits) { if (r.RabbitID == rabbitID) { this.Text = r.FarmName + "'s " + r.RabbitName; // get rabbit info lblFarmName.Text = r.FarmName + "'s"; lblRabbitName.Text = r.RabbitName; pbRabbitImage.Image = (Image)Properties.Resources.ResourceManager.GetObject(r.ImagePath); lblBirthdayText.Text = r.Birthday.ToShortDateString(); lblColorText.Text = r.Color; lblEarNumText.Text = r.EarNumber; lblGCNumText.Text = r.GCNumber; lblRegNumText.Text = r.RegNumber; lblSexText.Text = r.Sex; lblWeightText.Text = r.Weight + " lbs."; lblAGene.Text = r.AGene; lblBGene.Text = r.BGene; lblCGene.Text = r.CGene; lblDGene.Text = r.DGene; lblEGene.Text = r.EGene; lblEnGene.Text = r.EnGene; lblVGene.Text = r.VGene; // fill in mini pedigree Rabbit sire = r.getSire(r.SireID); smallPedigreeUC1.SireFarmText = EscapeFarmName(sire.FarmName); smallPedigreeUC1.SireRabbitText = sire.RabbitName; Rabbit dam = r.getDam(r.DamID); smallPedigreeUC1.DamFarmText = EscapeFarmName(dam.FarmName); smallPedigreeUC1.DamRabbitText = dam.RabbitName; Rabbit ssire = sire.getSire(sire.SireID); smallPedigreeUC1.SSireFarmText = EscapeFarmName(ssire.FarmName); smallPedigreeUC1.SSireRabbitText = ssire.RabbitName; Rabbit sdam = sire.getDam(sire.DamID); smallPedigreeUC1.SDamFarmText = EscapeFarmName(sdam.FarmName); smallPedigreeUC1.SDamRabbitText = sdam.RabbitName; Rabbit dsire = dam.getSire(dam.SireID); smallPedigreeUC1.DSireFarmText = EscapeFarmName(dsire.FarmName); smallPedigreeUC1.DSireRabbitText = dsire.RabbitName; Rabbit ddam = dam.getDam(dam.DamID); smallPedigreeUC1.DDamFarmText = EscapeFarmName(ddam.FarmName); smallPedigreeUC1.DDamRabbitText = ddam.RabbitName; if (r.Sex == "Doe") { if (r.PregnantStatus == true) { btnAddLitter.Visible = true; bRemoveBreeding.Visible = true; btnBreeding.Visible = false; } else { btnBreeding.Visible = true; btnAddLitter.Visible = false; bRemoveBreeding.Visible = false; } } // fill in the kits foreach (Rabbit k in RabbitList.rabbits) { if (!listbKits.Items.Contains(k.RabbitName + " - " + k.Color)){ if (k.DamID == rabbitID || k.SireID == rabbitID) { // Add kit to listbox Kit kit = new Kit(k.RabbitID, k.RabbitName, k.Color); listbKits.Items.Add(k.RabbitName + " - " + k.Color); // Add kit to kitList kitList.Add(kit); } } } // fill in the litters foreach (Litter l in LitterList.litters) { if (l.DamID == rabbitID || l.SireID == rabbitID) { if (!listbLitters.Items.Contains(l.LitterDate.ToShortDateString() + " - " + l.LitterSize)) { //Add Litter to listbox Litter litter = new Litter(l.LitterID, l.SireID, l.DamID, l.LitterSize, l.LitterDate); listbLitters.Items.Add(l.LitterDate.ToShortDateString() + " - " + l.LitterSize); //Add Litter to litterList litterList.Add(litter); } } } } } } } private string EscapeFarmName(string farmName) { if (farmName.Contains("&")) { farmName = farmName.Replace("&", "&&"); } return farmName; } private void ViewRabbit_Activated(object sender, EventArgs e) { RefreshRabbitInfo(); } private void btnPedigree_Click(object sender, EventArgs e) { ViewPedigree viewPedigree = new ViewPedigree(rabbitID); viewPedigree.Show(); } private void btnBreeding_Click(object sender, EventArgs e) { AddABreeding addABreeding = new AddABreeding(rabbitID); addABreeding.Show(); } private void listbKits_MouseDoubleClick(object sender, MouseEventArgs e) { if (listbKits.SelectedItem != null) { var index = listbKits.SelectedIndex; var kitID = kitList[index].RabbitID; ViewRabbit viewRabbit = new ViewRabbit(); viewRabbit.rabbitID = kitID; viewRabbit.Show(); } } internal class Kit { public Guid RabbitID { get; set; } public string RabbitName { get; set; } public string Color { get; set; } public Kit(Guid rabbitID, string rabbitName, string color) { RabbitID = rabbitID; RabbitName = rabbitName; Color = color; } } private void smallPedigreeUC1_DoubleClick(object sender, EventArgs e) { ViewPedigree viewPedigree = new ViewPedigree(rabbitID); viewPedigree.Show(); } private void label1_Click(object sender, EventArgs e) { } private void btnAddLitter_Click(object sender, EventArgs e) { AddALitter addALitter = new AddALitter(rabbitID); addALitter.Show(); } private void bRemoveBreeding_Click(object sender, EventArgs e) { DialogResult dialogResult = MessageBox.Show("Removing this breeding will mark it as unsuccessful. Are you sure you want to continue?", "Remove Breeding?", MessageBoxButtons.YesNo); if (dialogResult == DialogResult.Yes) { Guid breedingID = Guid.Empty; foreach (Breeding b in BreedingList.breedings) { if (b.DamID == rabbitID) { //breedingID = b.BreedingID; break; b.isSuccessful = false; b.isActive = false; } } //if (breedingID != Guid.Empty) //{ // BreedingList.breedings.RemoveAll(r => r.BreedingID == breedingID); //} foreach (Rabbit r in RabbitList.rabbits) { if (r.RabbitID == rabbitID) { r.PregnantStatus = false; } } UpdateJson.UpdateRabbits(); UpdateJson.UpdateBreedings(); //string fileName = Properties.Settings.Default.RabbitFile; //var json = JsonConvert.SerializeObject(RabbitList.rabbits); //System.IO.File.WriteAllText(fileName, json); } else if (dialogResult == DialogResult.No) { // do nothing } } } }