/// <summary> /// Заполняет таблицы данными, как они выглядели при Экспорте. /// Красит Породы и Имена в различные цвета в зависимости от условий (есть в базе ID не совпадают, есть в базе ID совпадают, нет в базе) /// </summary> /// <param name="data"></param> private void import(string data) { List <OneRabbit> exportRab; List <OneRabbit> ascendants; BreedsList breeds; RabNamesList names; _importFileGuid = _rabExport.Import(data, out exportRab, out ascendants, out breeds, out names); if (Engine.db().ImportSearch(new Filters(Filters.GUID, _importFileGuid)).Count > 0) { throw new RabNetException("Импорт из данного файла уже был произведен"); } Color cl = EXISTS; foreach (RabName n in names) { cl = EXISTS; RabName localAnalog = _names.Search(n.Name, n.Sex); if (localAnalog == null) { //Engine.db().AddName(n.Sex, n.Name, n.Surname); cl = NOT_EXISTS; } else if (localAnalog.ID != n.ID) { cl = EXISTS_NOT_ID_MATCH; } addExpName(n, cl); } foreach (Breed b in breeds) { cl = EXISTS; Breed localAnalog = _breeds.Search(b.Name); if (localAnalog == null) { //Engine.db().AddName(n.Sex, n.Name, n.Surname); cl = NOT_EXISTS; } else if (localAnalog.ID != b.ID) { cl = EXISTS_NOT_ID_MATCH; } addExpBreed(b, cl); } foreach (OneRabbit r in ascendants) { addExpAscend(r); } foreach (OneRabbit r in exportRab) { addRabbitToLV(r); } checkImportDataAfterLoad(); }
private void addExpName(RabName n, Color cl) { ListViewItem lvi = lvNames.Items.Add(n.Name); lvi.SubItems.Add(n.Surname); lvi.SubItems.Add(Rabbit.SexToRU(n.Sex)); lvi.Tag = n; lvi.ForeColor = cl; }
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(); }
public static RabName GetName(MySqlConnection sql, int id) { MySqlCommand cmd = new MySqlCommand(String.Format("SELECT n_id, n_sex, n_name, n_surname, n_use, n_block_date FROM names WHERE n_id = {0:d};", id), sql); MySqlDataReader rd = cmd.ExecuteReader(); RabName n = null; if (rd.Read()) { n = Names.fillName(rd); } rd.Close(); return(n); }
private void rabStatusBar1_itemGet(IData data) { RabName nm = (data as RabName); ListViewItem li = listView1.Items.Add(nm.Name); li.Tag = nm.ID; li.SubItems.Add(nm.Surname); li.SubItems.Add(Rabbit.SexToRU(nm.Sex)); string state = "занято"; if (nm.Use == 0) { state = "свободно"; if (nm.ReleaseDate != DateTime.MinValue) { state = "освобождается"; } } li.SubItems.Add(state); li.SubItems.Add((nm.Use != 0 || nm.ReleaseDate == DateTime.MinValue) ? "-" : nm.ReleaseDate.ToShortDateString()); }
private void listView1_SelectedIndexChanged(object sender, EventArgs e) { if (listView1.SelectedItems.Count != 1 || listView1.SelectedItems[0] == null) { return; } int id = (int)listView1.SelectedItems[0].Tag; RabName rn = Engine.db().GetName(id); btDelete.Enabled = 0 == rn.Use && rn.ReleaseDate == DateTime.MinValue; btAdd.Enabled = btCancel.Enabled = true; try { this.originName = textBox1.Text = listView1.SelectedItems[0].SubItems[0].Text; this.originSurname = textBox2.Text = listView1.SelectedItems[0].SubItems[1].Text; } catch (ArgumentOutOfRangeException) { return; } btAdd.Text = btext[1]; }
private void btDelete_Click(object sender, EventArgs e) { if (MessageBox.Show("Удалить выбранные имена?", "Удалить имена", MessageBoxButtons.YesNo) != DialogResult.Yes) { return; } bool selectedOne = 1 == listView1.SelectedItems.Count; foreach (ListViewItem item in listView1.SelectedItems) { int id = (int)item.Tag; RabName rn = Engine.db().GetName(id); if (0 != rn.Use || rn.ReleaseDate != DateTime.MinValue) { if (selectedOne) { // если выбрали только одно имя, то выводим сообщение MessageBox.Show("Имя используется", "Имя используется", MessageBoxButtons.OK, MessageBoxIcon.Warning); } continue; } if (false == Engine.db().CanDeleteName(id)) { if (selectedOne) { MessageBox.Show("Имя используется в чьей-то родословной", "Имя используется", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } continue; } Engine.db().deleteName(id); } rabStatusBar1.Run(); }
/// <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); } } }
private void addExpName(RabName n) { addExpName(n, Color.Black); }
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; } } }