/// <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(); }