示例#1
0
        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);
        }
示例#2
0
        /// <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));
        }
示例#3
0
            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));
            }
示例#4
0
        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
        }
示例#5
0
        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);
        }
示例#6
0
        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);
            }
        }
示例#7
0
        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);
        }
示例#8
0
        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();
            }
        }
示例#9
0
        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;
                }
            }
        }
示例#10
0
        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;
        }
示例#11
0
        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);
        }
示例#12
0
        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();
        }
示例#13
0
        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);
        }
示例#14
0
        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);
        }
示例#15
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);
        }
示例#16
0
        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);
        }
示例#17
0
 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;
         }
     }
 }
示例#18
0
        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);
            }
        }
示例#19
0
        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 но я че-то забыл как тут все работает, так что не поставил
                }
            }
        }
示例#20
0
        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;
        }
示例#21
0
 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);
     }
 }
示例#22
0
        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();
            }
        }
示例#23
0
        /// <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);
            }
        }
示例#24
0
        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();
                }
            }
        }
示例#25
0
        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();
        }
示例#26
0
        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);
        }
示例#27
0
 public void SetRabbit(OneRabbit r)
 {
     RabbitGetter.SetRabbit(sql, r);
 }
示例#28
0
 public void ImportAscendant(OneRabbit r)
 {
     Import.AscendantImp(sql, r);
 }
示例#29
0
        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;
                }
            }
        }
示例#30
0
        /// <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);
                }
            }
        }