kindlebox/Kindlebox/ViewRabbit.cs

288 lines
9.9 KiB
C#

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<Kit> kitList = new List<Kit>();
public Guid kitID = Guid.Empty;
List<Litter> litterList = new List<Litter>();
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
}
}
}
}