public static int newRabbit(MySqlConnection sql, OneRabbit r, int mom) { String query = String.Format(@"INSERT INTO rabbits(r_sex, r_parent) VALUES('{0}', {1});", Rabbit.SexToString(r.Sex), DBHelper.Nullable(mom)); MySqlCommand cmd = new MySqlCommand(query, sql); cmd.ExecuteNonQuery(); r.ID = (int)cmd.LastInsertedId; SetRabbit(sql, r); if (mom == 0 && r.NewAddress != "" && r.NewAddress != Rabbit.NULL_ADDRESS) { String[] adr = r.NewAddress.Split('|');///RabNetEngRabbit.ReplaceRabbit placeRabbit(sql, r.ID, int.Parse(adr[0]), int.Parse(adr[1]), int.Parse(adr[2])); } if (r.MotherID != 0 || r.FatherID != 0) { cmd.CommandText = String.Format("UPDATE rabbits SET r_mother = {0}, r_father = {1} WHERE r_id = {2}", DBHelper.Nullable(r.MotherID), DBHelper.Nullable(r.FatherID), r.ID ); cmd.ExecuteNonQuery(); } if (r.BirthPlace != 0) { cmd.CommandText = String.Format("UPDATE rabbits SET r_birthplace = {0:d} WHERE r_id = {1:d}", r.BirthPlace, r.ID); cmd.ExecuteNonQuery(); } return(r.ID); }
/// <summary> /// Если 7 поколений рожденных прошло через программу, то номера генов отметаются. /// </summary> /// <returns>Генезис ID</returns> private static int bornRabbitGenesis(MySqlConnection sql, OneRabbit fml, OneRabbit ml) { int fLevel = 0, mLevel = 0; fml.RabGenoms = RabbitGenGetter.GetRabGenoms(sql, fml.ID); RabbitGen.GetFullGenLevels(fml.RabGenoms, ref fLevel); if (ml != null) { ml.RabGenoms = RabbitGenGetter.GetRabGenoms(sql, ml.ID); RabbitGen.GetFullGenLevels(ml.RabGenoms, ref mLevel); } MySqlCommand cmd = new MySqlCommand("SELECT o_value FROM options WHERE o_name='opt' AND o_subname='rab_gen_depth'", sql); object o = cmd.ExecuteScalar(); if (o != null) { int rab_gen_depth = 0; if (int.TryParse(o.ToString(), out rab_gen_depth)) { if (Math.Min(fLevel, mLevel) >= rab_gen_depth) { return(0); } } } return(RabbitGenGetter.MakeCommonGenesis(sql, fml.Genoms, (ml != null ? ml.Genoms : fml.Genoms), fml.Zone)); }
public int Compare(object x, object y) { OneRabbit r1 = (x as ListViewItem).Tag as OneRabbit; OneRabbit r2 = (y as ListViewItem).Tag as OneRabbit; return(r1.ID.CompareTo(r2.ID)); }
private void lvExportRabbits_SelectedIndexChanged(object sender, EventArgs e) { #if !DEMO if (lvExportRabbits.SelectedItems.Count != 1) { return; } _manual = false; ListViewItem lvi = lvExportRabbits.SelectedItems[0]; OneRabbit r = lvi.Tag as OneRabbit; if (_export) { nudExportCnt.Enabled = r.Group != 1; nudExportCnt.Maximum = r.Group; } else { cbNewName.Enabled = r.Group == 1; updateNewNames(r.Sex); cbNewName.Text = lvi.SubItems[IMP_NEW_NAME].Text; cbFreeBuildings.Text = lvi.SubItems[IMP_ADDRESS].Text; cbNewName.Enabled = cbFreeBuildings.Enabled = !(lvi.ForeColor == IMPORTED_RAB_RAB /*|| lvi.ForeColor == IMPORTED_RAB_ASC*/); } _manual = true; #endif }
public static OneRabbit getLiveDeadRabbit(MySqlConnection sql, int rabbit) { if (rabbit == 0) { return(null); } MySqlCommand cmd = new MySqlCommand(String.Format(@"SELECT isdead({0:d});", rabbit), sql); MySqlDataReader rd = cmd.ExecuteReader(); bool dead = false; if (rd.Read()) { dead = rd.GetBoolean(0); } rd.Close(); cmd.CommandText = String.Format(@"SELECT {0:s} FROM {1:s} WHERE r_id={2:d};", getOneRabbit_FieldsSet(dead ? RabAliveState.DEAD : RabAliveState.ALIVE), (dead ? "dead" : "rabbits"), rabbit); rd = cmd.ExecuteReader(); if (!rd.Read()) { rd.Close(); return(null); } OneRabbit r = fillOneRabbit(rd); //OneRabbit r = new OneRabbit(rabbit, rd.GetString("r_sex"), rd.GetDateTime("r_born"), //TODO ПИЗДЕЦ // rd.IsDBNull(rd.GetOrdinal("weight")) ? 0 : rd.GetInt32("weight"), "00000", 0, 0, 0, rd.GetString("place"), 1, rd.GetInt32("r_okrol"), dead ? 1 : 0, "", "", rd.GetInt32("status"), DateTime.MinValue, "", // rd.IsDBNull(rd.GetOrdinal("weight_date")) ? DateTime.MinValue : rd.GetDateTime("weight_date"), // rd.IsDBNull(rd.GetOrdinal("r_overall_babies")) ? 0 : rd.GetInt32("r_overall_babies"), // rd.IsDBNull(rd.GetOrdinal("r_lost_babies")) ? 0 : rd.GetInt32("r_lost_babies"), rd.GetString("name"), "", rd.GetString("r_bon"), 0, // rd.IsDBNull(rd.GetOrdinal("weight_age")) ? 0 : rd.GetInt32("weight_age")/*,rd.GetDateTime("vac_end")*/); rd.Close(); return(r); }
private void addAscends(OneRabbit r, List <int> noNeedAsc, List <int> breedsIds, List <int> nameIds) { //r.BirthPlace = _clientId; if (!breedsIds.Contains(r.BreedID)) { breedsIds.Add(r.BreedID); } addExpNameId(r, nameIds); if (r.MotherID != 0 && !noNeedAsc.Contains(r.MotherID)) { OneRabbit m = Engine.db().GetRabbit(r.MotherID, RabAliveState.ANY); addExpAscend(m); noNeedAsc.Add(r.MotherID); addAscends(m, noNeedAsc, breedsIds, nameIds); } if (r.FatherID != 0 && !noNeedAsc.Contains(r.FatherID)) { OneRabbit f = Engine.db().GetRabbit(r.FatherID, RabAliveState.ANY); addExpAscend(f); noNeedAsc.Add(r.FatherID); addAscends(f, noNeedAsc, breedsIds, nameIds); } }
public static OneRabbit GetRabbit(MySqlConnection sql, int rid, RabAliveState type) { if (rid == 0) { return(null); } if (type == RabAliveState.ANY) { type = (isDeadRabbit(sql, rid) ? RabAliveState.DEAD : RabAliveState.ALIVE); } MySqlCommand cmd = new MySqlCommand(String.Format(@"SELECT {0:s} FROM {1:s} WHERE r_id={2:d};", getOneRabbit_FieldsSet(type), (type == RabAliveState.ALIVE ? "rabbits" : "dead"), rid), sql); MySqlDataReader rd = cmd.ExecuteReader(); if (!rd.Read()) { rd.Close(); return(null); } OneRabbit r = fillOneRabbit(rd); rd.Close(); //r.youngers = GetYoungers(sql, rid);//todo убрать в RabNetEngRabbit //r.rabVacs = GetRabVacs(sql, rid); //if (r.ParentId == 0) //r.Neighbors = GetNeighbors(sql, rid); return(r); }
public static void MakeFuck(MySqlConnection sql, int femaleId, int maleId, int daysPast, int worker, bool syntetic) { OneRabbit f = RabbitGetter.GetRabbit(sql, femaleId); String type = F**k.GetFuckTypeStr(FuckType.Sluchka); string when = DBHelper.DaysPastSqlDate(daysPast); if (syntetic) { type = F**k.GetFuckTypeStr(FuckType.Syntetic); } else if (f.Status > 0) { type = F**k.GetFuckTypeStr(FuckType.Vyazka); } MySqlCommand cmd = new MySqlCommand(String.Format("UPDATE f***s SET f_last=0 WHERE f_rabid={0:d};", femaleId), sql); cmd.ExecuteNonQuery(); cmd.CommandText = String.Format(@"INSERT INTO f***s(f_rabid,f_date,f_partner,f_state,f_type,f_last,f_notes,f_worker) VALUES({0:d},{1:s},{2:d},'sukrol','{3:s}',1,'',{4:d});", femaleId, when, maleId, type, worker); cmd.ExecuteNonQuery(); // cmd.CommandText = String.Format("SELECT r_status,TODAYS(r_last_fuck_okrol FROM rabbits WHERE r_id="); cmd.CommandText = String.Format("UPDATE rabbits SET r_event_date={0:s}, r_event='{1:s}', r_rate=r_rate+IF(MONTH(r_event_date) BETWEEN 8 AND 12,{3:d},0) WHERE r_id={2:d};", when, type, femaleId, Rate.AUTUMN_FUCK_RATE); cmd.ExecuteNonQuery(); if (!syntetic)///если ИО то не ставим, что самец работал { cmd.CommandText = String.Format("UPDATE rabbits SET r_last_fuck_okrol={0:s}, r_rate=r_rate+1 WHERE r_id={1:d};", when, maleId); cmd.ExecuteNonQuery(); } }
private void adaptRabName(List <KeyValuePair <int, int> > wasBecome, OneRabbit r) { bool nm = false, surn = false, sec = false; foreach (KeyValuePair <int, int> kvp in wasBecome) { if (r.NameID == kvp.Key && !nm) { r.NameID = kvp.Value; nm = true; } if (r.SurnameID == kvp.Key && !surn) { r.SurnameID = kvp.Value; surn = true; } if (r.SecnameID == kvp.Key && !sec) { r.SecnameID = kvp.Value; sec = true; } } }
private void addExpAscend(OneRabbit m) { ListViewItem lviM = lvAscendants.Items.Add(m.NameFull); lviM.SubItems.Add(m.BreedName); lviM.SubItems.Add(m.FSex()); lviM.Tag = m; }
public int NewRabbit(OneRabbit r, int mom) { int rId = RabbitGetter.newRabbit(sql, r, mom); #if !DEMO Import.RabbitImp(sql, rId, r.Group); #endif return(rId); }
public void exportPasport(List <int> rIds) { lFile.Visible = tbFileFrom.Visible = btOpenFile.Visible = false; rIds.Sort(); List <int> noNeedAsc = new List <int>(); List <int> breedsIds = new List <int>(); List <int> nameIds = new List <int>(); foreach (int rid in rIds) { OneRabbit r = Engine.db().GetRabbit(rid); if (r == null) { continue; } if (r.EventDate != DateTime.MinValue) { throw new RabNetException("Нельзя экспортировать сукрольную крольчиху."); } if (r.Sex == Rabbit.SexType.VOID) { throw new RabNetException("Нельзя экспортировать бесполых."); } addExpRabbit(r, breedsIds, nameIds); noNeedAsc.Add(r.ID); addAscends(r, noNeedAsc, breedsIds, nameIds); } nameIds.Sort(); foreach (int nId in nameIds) { RabName n = _names.Search(nId); addExpName(n); } breedsIds.Sort(); foreach (int bId in breedsIds) { foreach (Breed b in _breeds) { if (b.ID == bId) { ListViewItem lvi = lvBreeds.Items.Add(b.Name); lvi.Tag = b; break; } } } lvAscendants.Sort(); lvNames.Sort(); lvBreeds.Sort(); }
private void addExpRabbit(OneRabbit r, List <int> breedsIds, List <int> nameIds) { if (!breedsIds.Contains(r.BreedID)) { breedsIds.Add(r.BreedID); } addExpNameId(r, nameIds); addRabbitToLV(r); }
public static int MakeOkrol(MySqlConnection sql, int rabbit, int daysPast, int children, int dead) { int father = whosChildren(sql, rabbit); string when = DBHelper.DaysPastSqlDate(daysPast); MySqlCommand cmd = new MySqlCommand(String.Format(@"UPDATE f***s SET f_state='okrol', f_end_date={0:s}, f_children={1:d}, f_dead={2:d} WHERE f_rabid={3:d} AND f_state='sukrol';", when, children, dead, rabbit), sql); cmd.ExecuteNonQuery(); OneRabbit fml = GetRabbit(sql, rabbit); OneRabbit ml = GetRabbit(sql, father, RabAliveState.ANY); int rt = Rate.CalcRate(children, dead, false); if (rt != 0 && ml != null) { cmd.CommandText = String.Format(@"UPDATE rabbits SET r_rate=r_rate+{0:d} WHERE r_id={1:d};", rt, ml.ID); cmd.ExecuteNonQuery(); ml.Rate += rt; } // mother status update rt = Rate.CalcRate(children, dead, true); fml.Rate += rt; cmd.CommandText = String.Format(@"UPDATE rabbits SET r_event_date=NULL, r_event='none', r_status=r_status+1, r_last_fuck_okrol={1:s}, r_overall_babies=COALESCE(r_overall_babies+{2:d},1), r_lost_babies=COALESCE(r_lost_babies+{3:d},1), r_rate=r_rate+{4:d} WHERE r_id={0:d};", rabbit, when, children, dead, rt); cmd.ExecuteNonQuery(); if (children > 0) { int brd = 1; if (ml != null && fml.BreedID == ml.BreedID) { brd = fml.BreedID; } int chRate = Rate.CalcChildrenRate(fml.Rate, ml == null ? 0 : ml.Rate); int okrol = fml.Status; cmd.CommandText = String.Format(@"INSERT INTO rabbits(r_parent, r_mother, r_father, r_born, r_sex, r_group, r_bon, r_genesis, r_name, r_surname, r_secname, r_breed, r_okrol, r_rate, r_notes) VALUES({0}, {1}, {2}, {3}, 'void', {4}, '{5}', {6}, NULL, {7}, {8}, {9}, {10}, {11}, '');", rabbit, rabbit, father, when, children, DBHelper.commonBon(fml.Bon.ToString(), (ml != null ? ml.Bon.ToString() : fml.Bon.ToString())), bornRabbitGenesis(sql, fml, ml), DBHelper.Nullable(fml.NameID), (ml != null ? DBHelper.Nullable(ml.NameID) : "NULL"), brd, okrol, chRate); cmd.ExecuteNonQuery(); return((int)cmd.LastInsertedId); } return(0); }
private List <OneRabbit> getRabForExport() { List <OneRabbit> result = new List <OneRabbit>(); foreach (ListViewItem lvi in lvExportRabbits.Items) { OneRabbit r = lvi.Tag as OneRabbit; r.Group = int.Parse(lvi.SubItems[EXP_CNT_INDEX].Text); result.Add(r); } return(result); }
public int NewRabbit(OneRabbit r, int mom, int clientId, string fileGuid) { int oldId = r.ID; int rId = RabbitGetter.newRabbit(sql, r, mom); Import.RabbitImp(sql, rId, r.Group, clientId, oldId, fileGuid); if (Import.AscendantExists(sql, oldId, clientId)) { Import.AdaptExportedAscendant(sql, oldId, clientId, rId, r.Sex); } return(rId); }
private void adaptRabParentTry(OneRabbit parent, int oldPRid, OneRabbit r) { if (r.Age < parent.Age) { if (parent.Sex == Rabbit.SexType.FEMALE && oldPRid == r.MotherID && parent.NameID == r.SurnameID) { r.MotherID = parent.ID; } if (parent.Sex == Rabbit.SexType.MALE && oldPRid == r.FatherID && parent.NameID == r.SecnameID) { r.MotherID = parent.ID; } } }
private void adaptBreed(List <KeyValuePair <int, int> > wasBecome) { foreach (ListViewItem lviAsc in lvAscendants.Items) { OneRabbit r = lviAsc.Tag as OneRabbit; adaptRabBreed(wasBecome, r); } foreach (ListViewItem lviRab in lvExportRabbits.Items) { OneRabbit r = lviRab.Tag as OneRabbit; adaptRabBreed(wasBecome, r); } }
private void adaptRabBreed(List <KeyValuePair <int, int> > wasBecome, OneRabbit r) { bool br = false; foreach (KeyValuePair <int, int> kvp in wasBecome) { if (r.BreedID == kvp.Key && !br) { r.BreedID = kvp.Value; br = true; ///todo по идее тут должен быть break но я че-то забыл как тут все работает, так что не поставил } } }
private void addRabbitToLV(OneRabbit r) { ListViewItem lvi = lvExportRabbits.Items.Add(r.NameFull); lvi.SubItems.Add(r.BreedName); lvi.SubItems.Add(r.Sex == Rabbit.SexType.MALE ? "м" : "ж"); lvi.SubItems.Add(r.Age.ToString()); lvi.SubItems.Add(r.Group.ToString()); lvi.SubItems.Add(_export ? "1" : ""); if (!_export) { lvi.SubItems.Add(""); } lvi.Tag = r; }
private void addExpNameId(OneRabbit r, List <int> nameIds) { if (r.NameID != 0 && !nameIds.Contains(r.NameID)) { nameIds.Add(r.NameID); } if (r.SurnameID != 0 && !nameIds.Contains(r.SurnameID)) { nameIds.Add(r.SurnameID); } if (r.SecnameID != 0 && !nameIds.Contains(r.SecnameID)) { nameIds.Add(r.SecnameID); } }
public static void SetRabbit(MySqlConnection con, OneRabbit r) { int multi = (r.Defect ? 1 : 0); String flags = String.Format("{0:D1}{1:D1}{2:D1}{3:D1}{4:D1}", r.Production ? 1 : 0, r.RealizeReady ? 1 : 0, multi, r.NoKuk ? 1 : 0, r.NoLact ? 1 : 0);//TODO возможен косяк String query = String.Format(@"UPDATE rabbits SET r_name={0:d}, r_surname={1:d}, r_secname={2:d}, r_breed={3:d}, r_zone={4:d}, r_group={5:d}, r_notes=@notes, r_flags='{6:d}', r_rate={7:d}, r_born={8:s} ", DBHelper.Nullable(r.NameID), DBHelper.Nullable(r.SurnameID), DBHelper.Nullable(r.SecnameID), r.BreedID, r.Zone, r.Group, flags, r.Rate, DBHelper.DateToSqlString(r.BirthDay) ); if (r.Sex != Rabbit.SexType.VOID) { query += String.Format(", r_status={0:d}, r_last_fuck_okrol={1:s}", r.Status, DBHelper.DateToSqlString(r.LastFuckOkrol)); } if (r.Sex == Rabbit.SexType.FEMALE) { query += String.Format(", r_event='{0:s}', r_event_date={1:s}, r_overall_babies={2:d}", Rabbit.GetEventName(r.EventType), DBHelper.DateToSqlString(r.EventDate), r.KidsOverAll); } query += String.Format(" WHERE r_id={0:d};", r.ID); MySqlCommand cmd = new MySqlCommand(query, con); cmd.Prepare(); cmd.Parameters.AddWithValue("@notes", r.Notes); cmd.ExecuteNonQuery(); int gen = RabbitGenGetter.MakeGenesis(con, r.Genoms); cmd.CommandText = String.Format("UPDATE rabbits SET r_genesis={0:d} WHERE r_id={1:d};", gen, r.ID); cmd.ExecuteNonQuery(); if (r.WasNameID != r.NameID) { ///todo проверка на используемость cmd.CommandText = String.Format("UPDATE names SET n_use = NULL, n_block_date = NULL WHERE n_id={0:d};", r.WasNameID); cmd.ExecuteNonQuery(); cmd.CommandText = String.Format("UPDATE names SET n_use = {0:d} WHERE n_id = {1:d};", r.ID, DBHelper.Nullable(r.NameID)); cmd.ExecuteNonQuery(); } }
/// <summary> /// После импорта кролика изменяет его ID у потомков (MotherID или FatherID) /// </summary> /// <param name="parent">Кролик,которого только что импортировали</param> /// <param name="oldPRid">ID из экспортируемой базы</param> private void adaptParent(OneRabbit parent, int oldPRid) { ///ищем потомков среди кроликов, которыебудут импортированы foreach (ListViewItem lviRab in lvExportRabbits.Items) { if (lviRab.ForeColor == IMPORTED_RAB_RAB) { continue; } OneRabbit r = lviRab.Tag as OneRabbit; adaptRabParentTry(parent, oldPRid, r); } foreach (ListViewItem lviRab in lvAscendants.Items) { //if (lviRab.ForeColor == IMPORTED_RAB_RAB) continue; OneRabbit r = lviRab.Tag as OneRabbit; adaptRabParentTry(parent, oldPRid, r); } }
public static void combineGroups(MySqlConnection sql, int rabfrom, int rabto) { MySqlCommand cmd = new MySqlCommand("", sql); //(String.Format("SELECT r_mother,r_father,r_okrol from rabbits where r_id={0:d};", rabfrom), sql); MySqlDataReader rd; //= cmd.ExecuteReader(); OneRabbit rabFrom = GetRabbit(sql, rabfrom); OneRabbit rabTo = GetRabbit(sql, rabto); ///если это ранее разбитые кролики на 2 группы if (rabFrom.MotherID == rabTo.MotherID && rabFrom.FatherID == rabTo.FatherID && rabFrom.Okrol == rabTo.Okrol && rabFrom.Sex == rabTo.Sex && rabFrom.BreedID == rabTo.BreedID && rabFrom.MotherID != 0 && rabFrom.FatherID != 0) { cmd.CommandText = String.Format("UPDATE rabbits SET r_group=r_group+{0:d} WHERE r_id={1:d};", rabFrom.Group, rabto); cmd.ExecuteNonQuery(); freeTier(sql, rabfrom); cmd.CommandText = String.Format("CALL killRabbit({0:d}, 2, '{1:d}');", rabfrom, String.Format("Объединен с {0:s} [{1:d}] в {2:s}", rabTo.NameFull, rabTo.ID, rabTo.AddressSmall)); cmd.ExecuteNonQuery(); } else ///если подселение { freeTier(sql, rabfrom); cmd.CommandText = String.Format("SELECT r_farm, r_tier, r_tier_id, r_area FROM rabbits WHERE r_id={0:d};", rabto); rd = cmd.ExecuteReader(); if (rd.Read()) { cmd.CommandText = String.Format("UPDATE rabbits SET r_farm={0}, r_tier={1}, r_tier_id={2}, r_area={3} WHERE r_id={4}", DBHelper.GetNullableInt(rd, "r_farm"), DBHelper.GetNullableInt(rd, "r_tier"), rd.GetInt32("r_tier_id"), rd.GetInt32("r_area"), rabfrom ); rd.Close(); cmd.ExecuteNonQuery(); } else { rd.Close(); } } }
internal static void AscendantImp(MySqlConnection sql, OneRabbit r) { MySqlCommand cmd = new MySqlCommand( String.Format(@"INSERT INTO import_ascendants(r_id, r_mother, r_father, r_sex, r_name, r_surname, r_secname, r_breed, r_born, r_birthplace, r_bon) VALUES({0}, {1}, {2}, '{3}', {4}, {5}, {6}, {7}, '{8}', {9}, {10});", r.ID, DBHelper.Nullable(r.MotherID), DBHelper.Nullable(r.FatherID), Rabbit.SexToString(r.Sex), DBHelper.Nullable(r.NameID), DBHelper.Nullable(r.SurnameID), DBHelper.Nullable(r.SecnameID), r.BreedID, r.BirthDay.ToString("yyyy-MM-dd"), r.BirthPlace, r.Bon ), sql ); cmd.ExecuteNonQuery(); }
private bool importToBaseTest(out string message) { message = ""; bool canContinue = true; ///проверка пород string tmp = ""; foreach (ListViewItem lviBreed in lvBreeds.Items) { if (lviBreed.ForeColor == NOT_EXISTS && lviBreed.SubItems[1].Text == "") { tmp += lviBreed.SubItems[0].Text + ","; } } if (tmp != "") { message += String.Format("Породам [{0:s}] не назначены локальные аналоги. Данные породы будут добавлены в текущую БД.{1:s}{1:s}", tmp.TrimEnd(','), Environment.NewLine); } ///проверка имен на занятость tmp = ""; foreach (ListViewItem lviName in lvNames.Items) { if (lviName.ForeColor == EXISTS_IN_USE || lviName.ForeColor == EXISTS_NOT_ID_MATCH_IN_USE) { tmp += lviName.SubItems[0].Text + ","; } } if (tmp != "") { canContinue = false; message += String.Format("Имена [{0:s}] уже используются. Необходимо назначить другие.{1:s}{1:s}", tmp.TrimEnd(','), Environment.NewLine); } ///проверка на назначения новых имен и адресов tmp = ""; string addr = ""; foreach (ListViewItem lviRab in lvExportRabbits.Items) { if (lviRab.ForeColor == IMPORTED_RAB_RAB /*|| lviRab.ForeColor == IMPORTED_RAB_ASC*/) { continue; } OneRabbit r = lviRab.Tag as OneRabbit; if (r.Group == 1 && r.NameID == 0 && lviRab.SubItems[IMP_NEW_NAME].Text == "") { tmp += r.NameFull + ","; } //if(lviRab.SubItems[IMP_ADDRESS].Text=="") //addr += r.NameFull + ","; } if (tmp != "") { message += String.Format("Кроликам [{0:s}] не были назначены имена.{1:s}{1:s}", tmp.TrimEnd(','), Environment.NewLine); } if (addr != "") { canContinue = false; message += String.Format("Кроликам [{0:s}] не были назначены адреса.", addr.TrimEnd(','), Environment.NewLine); } message = message.TrimEnd(Environment.NewLine.ToCharArray()); return(canContinue); }
public void SetRabbit(OneRabbit r) { RabbitGetter.SetRabbit(sql, r); }
public void ImportAscendant(OneRabbit r) { Import.AscendantImp(sql, r); }
private void checkImportDataAfterLoad() { foreach (ListViewItem lviRab in lvExportRabbits.Items) { OneRabbit r = lviRab.Tag as OneRabbit; if (r.NameID == 0) { continue; ///перебираем всех кроликов с именами } foreach (ListViewItem lviName in lvNames.Items) { RabName rn = lviName.Tag as RabName; if (r.NameID == rn.ID) ///находим имя кролика в списке имен { if (lviName.ForeColor != NOT_EXISTS) ///если имя существует в базе { RabName localAnalog = _names.Search(rn.Name, rn.Sex); if (localAnalog.Use != 0)///если имя в данной базе уже используется { if (lviRab.SubItems[IMP_NEW_NAME].Text == "") { lviName.ForeColor = lviName.ForeColor == EXISTS ? EXISTS_IN_USE : EXISTS_NOT_ID_MATCH_IN_USE; } else { lviName.ForeColor = lviName.ForeColor == EXISTS_IN_USE ? EXISTS : EXISTS_NOT_ID_MATCH; } } } break; } } } ///проверка не были ли предки экспортированы ранее foreach (ListViewItem lviAsc in lvAscendants.Items)///todo протестировать { OneRabbit r = lviAsc.Tag as OneRabbit; List <OneImport> imp = Engine.db().ImportSearch(new Filters(Filters.OLD_RID, r.ID)); if (imp.Count > 0) { lviAsc.ForeColor = IMPORTED_ASC_RAB; } if (Engine.db().ImportAscendantExists(r.ID, r.BirthPlace)) { lviAsc.ForeColor = IMPORTED_ASC_ASC; } } ///проверка не были ли кролики экспортированы ранее foreach (ListViewItem lviRab in lvExportRabbits.Items)///todo протестировать { OneRabbit r = lviRab.Tag as OneRabbit; List <OneImport> imp = Engine.db().ImportSearch(new Filters(Filters.OLD_RID, r.ID)); if (imp.Count > 0) { lviRab.ForeColor = IMPORTED_RAB_RAB; } if (Engine.db().ImportAscendantExists(r.ID, r.BirthPlace)) { lviRab.ForeColor = IMPORTED_RAB_ASC; } } }
/// <summary> /// Добавляет все данные в базу /// </summary> private void importToBase() { ///Добавляем породы в базу и переопределяем ID породы у кроликов, относительно текущей базы List <KeyValuePair <int, int> > wasBecome = new List <KeyValuePair <int, int> >(); foreach (ListViewItem lviBreed in lvBreeds.Items) { if (lviBreed.ForeColor == EXISTS) { continue; } Breed b = lviBreed.Tag as Breed; int bID = 0; if (lviBreed.ForeColor == NOT_EXISTS) { if (lviBreed.SubItems[1].Text == "") { bID = Engine.db().AddBreed(b.Name, b.ShortName, ""); } else { bID = _breeds.Search(lviBreed.SubItems[1].Text).ID; } } else if (lviBreed.ForeColor == EXISTS_NOT_ID_MATCH) { bID = _breeds.Search(lviBreed.SubItems[0].Text).ID; } wasBecome.Add(new KeyValuePair <int, int>(b.ID, bID)); } adaptBreed(wasBecome); ///добавляем имена и переопределяем ID имен и фамилий относительно текущей базы wasBecome = new List <KeyValuePair <int, int> >(); foreach (ListViewItem lviName in lvNames.Items) { if (lviName.ForeColor == EXISTS) { continue; } RabName rn = lviName.Tag as RabName; int nId = 0; if (lviName.ForeColor == EXISTS_NOT_ID_MATCH) { nId = _names.Search(rn.Name, rn.Sex).ID; } else if (lviName.ForeColor == NOT_EXISTS) { nId = Engine.db().AddName(rn.Sex, rn.Name, rn.Surname); } wasBecome.Add(new KeyValuePair <int, int>(rn.ID, nId)); } adaptName(wasBecome); ///импортируем кроликов sortExpRabById(); foreach (ListViewItem lviRab in lvExportRabbits.Items) { if (lviRab.ForeColor == IMPORTED_RAB_RAB /*|| lviRab.ForeColor == IMPORTED_RAB_ASC*/) { continue; } OneRabbit r = lviRab.Tag as OneRabbit; if (lviRab.SubItems[IMP_NEW_NAME].Text != "") { r.NameID = _names.Search(lviRab.SubItems[IMP_NEW_NAME].Text, r.Sex).ID; } int oldRid = r.ID; Engine.db().NewRabbit(r, r.ParentID, r.BirthPlace, _importFileGuid); ///селим по назначенный адрес Address a = _freeBuildings.SearchByMedName(lviRab.SubItems[IMP_ADDRESS].Text); Engine.db().replaceRabbit(r.ID, a.Farm, a.Floor, a.Section); Engine.get().logs().log(LogType.REPLACE, r.ID, 0, lviRab.SubItems[IMP_ADDRESS].Text); lviRab.ForeColor = IMPORTED_RAB_RAB; adaptParent(r, oldRid); } foreach (ListViewItem lviAsc in lvAscendants.Items) { if (/*lviAsc.ForeColor == IMPORTED_ASC_RAB ||*/ lviAsc.ForeColor == IMPORTED_ASC_ASC) { continue; } OneRabbit r = lviAsc.Tag as OneRabbit; if (lviAsc.ForeColor == IMPORTED_ASC_RAB) { } else { Engine.db().ImportAscendant(r); } } }