Пример #1
0
 public void FillRabWeight(Rabbit r, int crab)
 {
     _cmd.CommandText = "ALTER TABLE `weights` DISABLE KEYS;";
     _cmd.ExecuteNonQuery();
     for (int i = 0; i < r.weights.Count; i++)
     {
         ushort   weight = (ushort)(r.weights[i] & 0xFFFF);
         ushort   dt     = (ushort)((r.weights[i] >> 16) & 0xFFFF);
         DateTime sdt    = (new DateTime(1899, 12, 30)).AddDays(dt);
         _cmd.CommandText = String.Format("INSERT INTO weights(w_rabid, w_date, w_weight) VALUES({0:d}, {1:s}, {2:d});", crab, Convdt(sdt), weight);
         _cmd.ExecuteNonQuery();
     }
     _cmd.CommandText = "ALTER TABLE `weights` ENABLE KEYS;";
     _cmd.ExecuteNonQuery();
 }
Пример #2
0
        public void FillRabFuckers(Rabbit r, int crab, bool sukrol)
        {
            _cmd.CommandText = "ALTER TABLE `f***s` DISABLE KEYS;";
            _cmd.ExecuteNonQuery();
            foreach (F****r f in r.female.fuckers)
            {
                if (f.f***s.value() > 0 || f.my_fuck_is_last.value() == 1)
                {
                    int link = 0;
                    int dead = 0;
                    if (f.live.value() == 1)
                    {
                        link = GetNameId((ushort)f.name_key.value(), 1, true);
                        //link = rabbyname(link);
                        dead = 1;
                    }
                    else
                    {
                        link = FindDead(f.name.value(), (int)f.breed.value(), f.genesis);
                    }
                    String state = "okrol";
                    if (f.my_fuck_is_last.value() == 1 && sukrol)
                    {
                        state = "sukrol";
                    }
                    String type = "vyazka";
                    if ((r.female.borns.value() == 0) || (r.female.borns.value() == 1 && state != "sukrol"))
                    {
                        type = "sluchka";
                    }
                    _cmd.CommandText = String.Format(@"INSERT INTO f***s(f_rabid, f_partner, f_times, f_children, f_dead, f_state, f_last, f_type) 
VALUES({0:d}, {1:d}, {2:d}, {3:d}, {4:d}, '{5:s}', {6:d}, '{7:d}');",
                                                     crab, link, (int)f.f***s.value() + (sukrol ? 1 : 0), f.children.value(), dead, state,
                                                     f.my_fuck_is_last.value(), type);
                    _cmd.ExecuteNonQuery();
                }
            }
            _cmd.CommandText = "ALTER TABLE `f***s` ENABLE KEYS;";
            _cmd.ExecuteNonQuery();
        }
Пример #3
0
        /// <summary>
        /// Вносит живого кролика в БД.
        /// </summary>
        /// <param name="r">Кролик-объект</param>
        /// <param name="parent">Родитель, с которым сидит</param>
        /// <param name="dead">Мертвый, да?</param>
        public void FillRabbit(Rabbit r, int parent, bool dead)
        {
            //Application.DoEvents();
            String query = String.Format(@"INSERT INTO {0} (r_sex, r_parent, r_bon, r_name, r_surname, r_secname, r_notes, r_okrol, 
r_farm, r_tier_id, r_tier, r_area, 
r_rate, r_group, r_breed, r_flags, r_zone, 
r_born, r_status, r_last_fuck_okrol, r_genesis", (dead ? "dead" : "rabbits"));
            String sex   = "void";

            if (r.sex.value() == 1)
            {
                sex = "male";
            }
            if (r.sex.value() == 2)
            {
                sex = "female";
            }

            String bon     = String.Format("{0:D1}{1:D1}{2:D1}{3:D1}{4:D1}", r.bon.manual.value(), r.bon.weight.value(), r.bon.body.value(), r.bon.hair.value(), r.bon.color.value());
            String vals    = String.Format("VALUES('{0:s}', {1}, '{2:s}'", sex, this.protectFKForSet(parent), bon);//,{3:d},{4:d}  ,r.number.value(),r.unique.value());
            int    name    = GetNameId((ushort)r.namekey.value(), (ushort)r.sex.value(), true);
            int    surname = GetNameId((ushort)r.surkey.value(), 2, false);
            int    secname = GetNameId((ushort)r.pathkey.value(), 1, false);

            vals += String.Format(", {0}, {1}, {2}, '{3:s}', {4:d}", this.protectFKForSet(name), this.protectFKForSet(surname), this.protectFKForSet(secname), r.notes.value(), r.okrol_num.value());

            String flags = String.Format("{0:D1}{1:D1}{2:D1}", r.butcher.value(), r.risk.value(), r.multi.value());

            if (r.sex.value() == 2)
            {
                flags += String.Format("{0:D1}{1:D1}", r.female.no_kuk.value(), r.female.no_lact.value());
            }
            else
            {
                flags += "00";
            }

            int tier = GetTier((int)r.where.value(), (int)r.tier_id.value());

            if (parent == 0)
            {
                int tier_id = r.tier_id.value() == 1 ? 2 : 1; //здесь перепутаны местами нежели в строениях
                vals += String.Format(", {0:d}, {1:d}, {2}, {3:d}", r.where.value(), tier_id, this.protectFKForSet(tier), r.area.value());
            }
            else
            {
                vals += ", NULL, 0, NULL, 0";
            }
            vals += String.Format(", {0:d}, {1:d}, {2:d}, '{3:s}', {4:d}", 0, r.group.value(), this.FindBreed((int)r.breed.value()), flags, r.zone.value());

            int    status = 0;
            String lfo    = "NULL";

            if (r.sex.value() == 1)
            {
                status = (int)r.status.value();
                lfo    = Convdt(r.lastfuck.value());
            }
            if (r.sex.value() == 2)
            {
                status = (int)r.female.borns.value();
                lfo    = Convdt(r.female.last_okrol.value());
            }

            bool sukrol = false;

            vals += String.Format(", {0:s}, {1:d}, {2:s}, {3:d}", Convdt(r.borndate.value()), status, lfo, MakeGenesis(r.genesis));
            if (r.sex.value() == 2)
            {
                query += ", r_event, r_event_date, r_lost_babies, r_overall_babies";//,r_worker";,r_children
                String ev = "none";
                switch (r.female.ev_type.value())
                {
                case 1: ev = "sluchka"; break;

                case 2: ev = "vyazka"; break;

                case 3: ev = "kuk"; break;
                }
                String edt = Convdt(r.female.ev_date.value());
                sukrol = (edt != "NULL");
                vals  += String.Format(", '{0:s}',{1:s},{2:d},{3:d}", ev, edt, r.female.lost_babies.value(), r.female.overall_babies.value());//,  ,{5:d},{0:d}
                //makeWorker(r.female.worker.value()));  //r.female.child_count.value(),
            }
            _cmd.CommandText = query + ") " + vals + ");";
            _cmd.ExecuteNonQuery();

            int crab = (int)_cmd.LastInsertedId;

            r.notes.tag = crab;
            //_curRabbit = crab + 1;
            if (dead)
            {
                return;
            }

            if (parent == 0)
            {
                SetTierUser(tier, (int)r.area.value(), crab);
            }
            if (name != 0)
            {
                SetNameUser(name, crab);
            }

            this.FillRabWeight(r, crab);
            if (r.sex.value() == 2)
            {
                this.FillRabFuckers(r, crab, sukrol);
                foreach (Rabbit xr in r.female.suckers.rabbits)
                {
                    this.FillRabbit(xr, crab, false);
                }
            }
        }