Пример #1
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();
        }