Пример #1
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();
            }
        }
Пример #2
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);
        }
Пример #3
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);
        }
Пример #4
0
        /// <summary>
        /// Получает список забитых кроликов
        /// </summary>
        /// <param name="dt">Дата забоя</param>
        public static DeadRabbit[] getVictims(MySqlConnection sql, DateTime dt)
        {
            List <DeadRabbit> result = new List <DeadRabbit>();
            MySqlCommand      cmd    = new MySqlCommand("", sql);

            cmd.CommandText = String.Format(@"SELECT {1:s}, d_date
FROM dead WHERE d_reason=3 AND DATE(d_date)='{0:yyyy-MM-dd}';", dt, RabbitGetter.getAdultRabbit_FieldsSet(RabAliveState.DEAD));
            MySqlDataReader rd = cmd.ExecuteReader();

            while (rd.Read())
            {
                result.Add(RabbitGetter.fillDeadRabbit(rd));
            }
            rd.Close();
            return(result.ToArray());
        }
Пример #5
0
        /// <summary>
        /// Списывает кролика.
        /// Если кролик подсосный, то обнуляет поле с Кормилицей.
        /// Если кролик кормилица, то обнуляет детям поле с кормилицей
        /// </summary>
        /// <param name="sql">sql-подключение</param>
        /// <param name="rid">ID кролика</param>
        /// <param name="when">Дата списания</param>
        /// <param name="reason">Причина списания</param>
        /// <param name="notes">Заметки</param>
        public static void killRabbit(MySqlConnection sql, int rid, int daysPast, int reason, string notes)
        {
            if (rid == 0)
            {
                return;
            }

            string   when = DBHelper.DaysPastSqlDate(daysPast);
            AddressR a    = freeTier(sql, rid);

            freeName(sql, rid);
            MySqlCommand cmd = new MySqlCommand(String.Format("SELECT COALESCE(r_parent, 0) AS r_parent FROM rabbits WHERE r_id={0:d};", rid), sql);

            if (cmd.ExecuteScalar().ToString() != "0")  //если подсосный
            {
                cmd.CommandText = String.Format("UPDATE rabbits SET r_parent = NULL WHERE r_id={0:d};", rid);
                cmd.ExecuteNonQuery();
            }
            else
            {
                // если не подсосный, то ищем подсосных
                cmd = new MySqlCommand(String.Format("SELECT r_id FROM rabbits WHERE r_parent = {0:d};", rid), sql);
                MySqlDataReader rd = cmd.ExecuteReader();
                if (rd.Read())
                {
                    int c1 = rd.GetInt32("r_id");
                    rd.Close();
                    if (c1 != 0)
                    {
                        RabbitGetter.placeRabbit(sql, c1, a.Farm, a.Floor, a.Section);
                        cmd.CommandText = String.Format("UPDATE rabbits SET r_parent = NULL WHERE r_id={0:d};", c1);
                        cmd.ExecuteNonQuery();
                    }
                }
                else
                {
                    rd.Close();
                }
            }
            cmd.CommandText = String.Format("UPDATE rabbits SET r_parent = NULL, r_farm={1}, r_tier={2}, r_area={3}, r_tier_id={4} WHERE r_parent={0};",
                                            rid, DBHelper.Nullable(a.Farm), DBHelper.Nullable(a.TierId), a.Section, a.Floor
                                            );
            cmd.ExecuteNonQuery();

            cmd.CommandText = String.Format(@"COMMIT; CALL killRabbitDate({0:d}, {1:d}, '{2:s}', {3:s});", rid, reason, notes, when);
            cmd.ExecuteNonQuery();
        }
Пример #6
0
 public void SetRabbitVaccine(int rid, int vid, DateTime date)
 {
     RabbitGetter.SetRabbitVaccine(sql, rid, vid, date);
 }
Пример #7
0
 public void SetRabbitVaccine(int rid, int vid)
 {
     RabbitGetter.SetRabbitVaccine(sql, rid, vid);
 }
Пример #8
0
 public int makeOkrol(int female, int daysPast, int children, int dead)
 {
     return(RabbitGetter.MakeOkrol(sql, female, daysPast, children, dead));
 }
Пример #9
0
 public RabVac[] GetRabVac(int rabId)
 {
     return(RabbitGetter.GetRabVacs(sql, rabId));
 }
Пример #10
0
 public int GetAliveChildrenCount(int rid, Rabbit.SexType parentSex)
 {
     return(RabbitGetter.GetAliveChildrenCount(sql, rid, parentSex));
 }
Пример #11
0
 public OneRabbit GetRabbit(int rid, RabAliveState state)
 {
     return(RabbitGetter.GetRabbit(sql, rid, state));
 }
Пример #12
0
 public void setRabbitSex(int rid, Rabbit.SexType sex)
 {
     RabbitGetter.setRabbitSex(sql, rid, sex);
 }
Пример #13
0
 public OneRabbit getLiveDeadRabbit(int rabbit)
 {
     return(RabbitGetter.getLiveDeadRabbit(sql, rabbit));
 }
Пример #14
0
 public void KillRabbit(int id, int daysPast, int reason, string notes)
 {
     RabbitGetter.killRabbit(sql, id, daysPast, reason, notes);
 }
Пример #15
0
 public void CountKids(int rid, int dead, int killed, int added, int yid)
 {
     RabbitGetter.countKids(sql, rid, dead, killed, added, yid);
 }
Пример #16
0
 public void setBon(int rabbit, string bon)
 {
     RabbitGetter.setBon(sql, rabbit, bon);
 }
Пример #17
0
 public void replaceRabbit(int rid, int farm, int tierFloor, int sec)
 {
     RabbitGetter.replaceRabbit(sql, rid, farm, tierFloor, sec);
 }
Пример #18
0
        //public ICatalog getVaccines()
        //{
        //    return new Vaccines(sql);
        //}

        public string makeName(int nm, int sur, int sec, int grp, Rabbit.SexType sex)
        {
            return(RabbitGetter.makeName(sql, nm, sur, sec, grp, sex));
        }
Пример #19
0
 public void RabVacUnable(int rid, int vid, bool unable)
 {
     RabbitGetter.RabVacUnable(sql, rid, vid, unable);
 }
Пример #20
0
 public int CloneRabbit(int rid, int count, Rabbit.SexType sex, int mom)
 {
     return(RabbitGetter.cloneRabbit(sql, rid, count, sex, mom));
 }
Пример #21
0
 public OneRabbit[] getParents(int rabbit, int age)
 {
     return(RabbitGetter.getParents(sql, rabbit, age));
 }
Пример #22
0
 public void SetRabbit(OneRabbit r)
 {
     RabbitGetter.SetRabbit(sql, r);
 }
Пример #23
0
 public Rabbit[] GetDescendants(int ascendantId)
 {
     return(RabbitGetter.GetDescendants(sql, ascendantId));
 }
Пример #24
0
 public OneRabbit GetRabbit(int rid)
 {
     return(RabbitGetter.GetRabbit(sql, rid));
 }
Пример #25
0
 public Dictionary <string, int> GetDeadChildrenCount(int rid, Rabbit.SexType parentSex)
 {
     return(RabbitGetter.GetDeadChildrenCount(sql, rid, parentSex));
 }
Пример #26
0
 public AdultRabbit[] getMothers(int age, int agediff)
 {
     return(RabbitGetter.getMothers(sql, age, agediff));
 }
Пример #27
0
 public void placeSucker(int sucker, int mother)
 {
     RabbitGetter.placeSucker(sql, sucker, mother);
 }
Пример #28
0
 public void makeProholost(int female, int daysPast)
 {
     RabbitGetter.MakeProholost(sql, female, daysPast);
 }
Пример #29
0
        /// <summary>
        /// Получает родословную кролика с заданным rabId
        /// </summary>
        /// <param name="rabId">ID кролика</param>
        /// <param name="con"></param>
        /// <param name="lineage">Стэк родословной для предотвращения рекурсии</param>
        /// <returns></returns>
        private static RabTreeData getRabbitGenTree(MySqlConnection con, int rabId, int birthplace, int nameId, Stack <int> lineage)//, int level)
        {
            if (rabId == 0)
            {
                return(null);
            }
            //проверка на рекурсию, которая могла возникнуть после конвертации из старой mia-файла
            if (lineage.Count > 700)
            {
                //_logger.Warn("cnt:" + lineage.Count.ToString() + " we have suspect infinity inheritance loop: " + String.Join(",", Array.ConvertAll<int, string>(lineage.ToArray(), new Converter<int, string>(convIntToString))));
                return(null);
            }
            lineage.Push(rabId);
            MySqlCommand    cmd    = new MySqlCommand("", con);
            MySqlDataReader rd     = null;
            RabAliveState   state  = RabAliveState.ALIVE;
            bool            inFarm = true;
            string          query  = @"SELECT
        r_id,
        {0:s} name,
        Coalesce(r_name,0) AS r_name,
        Coalesce(r_surname,0) AS r_surname,
        Coalesce(r_secname,0) AS r_secname,      
        Coalesce(r_mother, 0) AS r_mother,
        Coalesce(r_father, 0) AS r_father,
        r_bon,
        r_born,
        r_breed,
        b_short_name,
        TO_DAYS(NOW())-TO_DAYS(r_born) age,
        Coalesce(r_birthplace,0) birthplace
    FROM {1:s} 
        INNER JOIN breeds ON b_id = r_breed
    WHERE r_id={2:d} LIMIT 1;";

#if !DEMO
            if (birthplace != 0)  //если ищем импортированного кролика
            {
                List <OneImport> lst = Import.Search(con, new Filters(Filters.RAB_ID, rabId.ToString()));
                inFarm = lst.Count > 0;                                       ///если кролик не был импортирован в поголовье
                ///может возникнуть ситуация, что импортированный кролик имеет id родителя, который содержится и в import_ascendants и в imports
                if (inFarm && Import.AscendantExists(con, rabId, birthplace)) ///устранение неоднозначности
                {
                    inFarm = RabbitGetter.GetRabbit(con, rabId).NameID == nameId;
                }
            }
#endif

            if (inFarm)
            {
                cmd.CommandText = String.Format(query, "rabname(r_id,1)", "rabbits", rabId);
                rd = cmd.ExecuteReader();

                if (!rd.HasRows)
                {
                    rd.Close();
                    cmd.CommandText = String.Format(query, "deadname(r_id,1)", "dead", rabId);
                    rd    = cmd.ExecuteReader();
                    state = RabAliveState.DEAD;
                }
            }

            if (!inFarm)
            {
                cmd.CommandText = String.Format(query, String.Format("ascname(r_id,{0:d},1)", birthplace), "import_ascendants", rabId);
                rd    = cmd.ExecuteReader();
                state = RabAliveState.IMPORTED_ASCENDANT;
            }

            RabTreeData res = null;
            if (rd != null && rd.Read())
            {
                res = new RabTreeData(
                    rd.GetInt32("r_id"),
                    rd.GetString("name"),
                    rd.GetInt32("r_name"),
                    rd.GetDateTime("r_born"),
                    rd.GetInt32("r_breed")
                    );
                res.Bon            = Rabbit.GetFBon(rd.GetString("r_bon"), true);
                res.BreedShortName = rd.GetString("b_short_name");
                res.BirthPlace     = rd.GetInt32("birthplace");
                int mom     = rd.GetInt32("r_mother");
                int dad     = rd.GetInt32("r_father");
                int surname = rd.GetInt32("r_surname");
                int secname = rd.GetInt32("r_secname");
                rd.Close();

                res.State = state;
                RabTreeData m = getRabbitGenTree(con, mom, birthplace, surname, lineage);
                RabTreeData d = getRabbitGenTree(con, dad, birthplace, secname, lineage);
                if (m != null)
                {
                    res.Mother = m;
                }
                if (d != null)
                {
                    res.Father = d;
                }
            }
            rd.Close();
            return(res);
        }
Пример #30
0
 public void combineGroups(int rabfrom, int rabto)
 {
     RabbitGetter.combineGroups(sql, rabfrom, rabto);
 }