Exemplo n.º 1
0
        /// <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();
        }
Exemplo n.º 2
0
        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;
        }
Exemplo n.º 3
0
        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();
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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());
        }
Exemplo n.º 6
0
        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];
        }
Exemplo n.º 7
0
        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();
        }
Exemplo n.º 8
0
        /// <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);
                }
            }
        }
Exemplo n.º 9
0
 private void addExpName(RabName n)
 {
     addExpName(n, Color.Black);
 }
Exemplo n.º 10
0
        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;
                }
            }
        }