コード例 #1
0
        /* Загрузка изменений в БД */
        private void setDataToDB()
        {
            int      productType   = -1;
            int      marketPlaceId = -1;
            string   errors        = "";
            string   errorsToCopy  = "";
            int      categoryId    = -1;
            DateTime dtNow;

            //находим productTypeId по выбранному в cb_ProductType
            productType   = currentProductTypeId;
            marketPlaceId = currentMarketPlaceId;

            for (int i = 0; i < kcList.Count; i++)     //находим keywordCategoryId по выбранному в cb_CategoryId
            {
                if (kcList[i].CategoryName.Equals(cb_KeywordCategory.SelectedItem.ToString()))
                {
                    categoryId = kcList[i].CategoryId;
                }
            }

            if (productType == -1 || categoryId == -1 || marketPlaceId == -1)
            {
                MessageBox.Show("Выберите вид продукта, категорию ключей и маркетплейс.", "Ошибка");
                return;
            }
            int index = -1;

            for (int i = 0; i < dgv_Target.RowCount; i++)
            {
                index = i;
                int val = 0;
                try { val = int.Parse(dgv_Target.Rows[i].Cells[1].Value.ToString()); } catch (Exception exx) { val = 0; }
                dtNow = DateTime.Now;

                //если ключ уже есть в БД, БД выдаст ошибку -2146232060. Сверяем и записываем ключи в массив недобавленных ключей
                if (scController.InsertNewKeyword(productType, categoryId, dgv_Target.Rows[i].Cells[0].Value.ToString(), val, dtNow, marketPlaceId) == -2146232060)
                {
                    errors       += dgv_Target.Rows[index].Cells[0].Value.ToString() + "\n";
                    errorsToCopy += dgv_Target.Rows[index].Cells[0].Value.ToString() + "\t" + val + "\n";
                }
                else
                {
                    //сюда для АРХИВА
                    scaController.InsertNewKeywordToSemCoreArchive(productType, categoryId, dgv_Target.Rows[i].Cells[0].Value.ToString(), val, dtNow, scaController.GetSemCoreIdForKey(dgv_Target.Rows[i].Cells[0].Value.ToString()), marketPlaceId);
                }
            }

            if (!errors.Equals(""))
            {
                MessageBox.Show("Следующие ключи не были добавлены, т.к. они уже есть в БД. Эти ключи были скопированы и сейчас находятся в буфере обмена. Можете вставить их в Excel или любой текстовый редактор. Ниже приведен список этих ключей:\n\n" + errors, "Не всё прошло гладко");
                Clipboard.SetText(errorsToCopy);
            }
            else
            {
                MessageBox.Show("Все ключи были успешно добавлены!", "Успех");
            }
        }
コード例 #2
0
        /* Загрузка изменений в БД */
        private void setDataToDB()
        {
            int    productType     = -1;
            string errors          = "";
            int    categoryId      = -1;
            bool   categoryCreated = true;

            if (rb_NewCategory.Checked)        //сохраняем в новой categoryId
            {
                int result = kcController.SetNewKeywordCategory(tb_AddCategory.Text);
                if (result == 1)
                {
                    kcController.GetKeywordCategoriesAll();
                    Fill_CB_ByKeywordCategories();
                    cb_KeywordCategory.SelectedItem = cb_KeywordCategory.Items[cb_KeywordCategory.Items.Count - 1];
                }
                else if (result == -2146232060)
                {
                    MessageBox.Show("Вы пытаетесь создать категорию ключей, которая уже существует. Пожалуйста, выберите категорию со списка или введите другое название.", "Ошибка");
                    categoryCreated = false;
                }
            }

            if (categoryCreated)                           //проверяем на то, что при создании категории всё было ок и можно продолжать
            {
                for (int i = 0; i < ptList.Count; i++)     //находим productTypeId по выбранному в cb_ProductType
                {
                    if (ptList[i].TypeName.Equals(cb_ProductType.SelectedItem.ToString()))
                    {
                        productType = ptList[i].ProductTypeId;
                    }
                }

                for (int i = 0; i < kcList.Count; i++)     //находим productTypeId по выбранному в cb_ProductType
                {
                    if (kcList[i].CategoryName.Equals(cb_KeywordCategory.SelectedItem.ToString()))
                    {
                        categoryId = kcList[i].CategoryId;
                    }
                }

                int index = -1;

                for (int i = 0; i < dgv_Target.RowCount; i++)
                {
                    index = i;
                    //если ключ уже есть в БД, БД выдаст ошибку -2146232060. Сверяем и записываем ключи в массив недобавленных ключей
                    if (scController.InsertNewKeyword(productType, categoryId, dgv_Target.Rows[i].Cells[0].Value.ToString(), int.Parse(dgv_Target.Rows[i].Cells[1].Value.ToString()), DateTime.Now) == -2146232060)
                    {
                        errors += dgv_Target.Rows[index].Cells[0].Value.ToString() + "\n";
                    }
                }

                if (!errors.Equals(""))
                {
                    MessageBox.Show("Следующие ключи не были добавлены, т.к. они уже есть в БД:\n\n" + errors, "Не всё прошло гладко");
                }
                else
                {
                    MessageBox.Show("Все ключи были успешно добавлены!", "Успех");
                }

                SavedStatus = true;
            }
        }
コード例 #3
0
        //------------------------------------------------------------------------------------------------------------------------------------------

        /* Запуск основной логики */
        private void btn_Begin_Click(object sender, EventArgs e)
        {
            bool isExist = false;           //новый это ключ, или существует в БД, пусть и в другой категории

            scNewList    = new List <SemCoreModel> {
            };
            scUpdateList = new List <SemCoreModel> {
            };
            List <SemCoreModel> scAddedList = new List <SemCoreModel> {
            };
            int newCnt = 0;

            if (MessageBox.Show("Вы уверены, что хотите начать процедуру сверки ключей?", "Начать", MessageBoxButtons.OKCancel) == DialogResult.OK)
            {
                dgv_Target.Rows.Clear();

                this.Enabled = false;

                int val = 0;

                for (int i = 0; i < dgv_Source.RowCount; i++)
                {
                    scNewList.Add(new SemCoreModel());
                    scNewList[scNewList.Count - 1].Keyword = dgv_Source.Rows[i].Cells[0].Value.ToString();
                    try { val = int.Parse(dgv_Source.Rows[i].Cells[1].Value.ToString()); } catch (Exception exx) { val = 0; }           //это если вдруг ячейка с частотой будет пустая
                    scNewList[scNewList.Count - 1].Value = val;

                    if (scController.InsertNewKeyword(GetSelectedProductTypeId(), GetSelectedCategoryId(), scNewList[scNewList.Count - 1].Keyword, scNewList[scNewList.Count - 1].Value, DateTime.Now, 1) != 1)
                    {
                        scUpdateList.Add(new SemCoreModel());
                        scUpdateList[scUpdateList.Count - 1].ProductTypeId = GetSelectedProductTypeId();
                        scUpdateList[scUpdateList.Count - 1].CategoryId    = GetSelectedCategoryId();
                        scUpdateList[scUpdateList.Count - 1].Keyword       = scNewList[scNewList.Count - 1].Keyword;
                        scUpdateList[scUpdateList.Count - 1].Value         = scNewList[scNewList.Count - 1].Value;
                        scUpdateList[scUpdateList.Count - 1].LastUpdated   = DateTime.Now;

                        isExist = true;
                    }
                    else
                    {
                        newCnt++;
                        scAddedList.Add(new SemCoreModel());
                        scAddedList[scAddedList.Count - 1].Keyword = scNewList[scNewList.Count - 1].Keyword;
                        scAddedList[scAddedList.Count - 1].Value   = scNewList[scNewList.Count - 1].Value;

                        //сюда для АРХИВА - новые
                        scaController.InsertNewKeywordToSemCoreArchive(GetSelectedProductTypeId(), GetSelectedCategoryId(), scNewList[scNewList.Count - 1].Keyword, scNewList[scNewList.Count - 1].Value, DateTime.Now, scaController.GetSemCoreIdForKey(scNewList[scNewList.Count - 1].Keyword), 1);
                    }
                }

                //обновляем существующие ключи
                if (isExist)
                {
                    UpdateExistingKeywordsInDB(newCnt, scAddedList);
                }
                else
                {
                    MessageBox.Show("Всего ключей было добавлено: " + newCnt + "\nКоличество обновленных ключей: 0", "Успех");
                    dgv_Source.Rows.Clear();
                    dgv_Target.Rows.Clear();
                    Fill_dgv_Source_ByAddedKeys(scAddedList);
                }

                label1.Visible          = true;
                dgv_Source.Visible      = false;
                dgv_Target.Visible      = false;
                btn_SelectAll.Visible   = false;
                btn_DeselectAll.Visible = false;
                lb_UploadedKeys.Visible = false;
                lb_UpdatedKeys.Visible  = false;
                btn_ClearAll.Visible    = false;

                this.Enabled = true;
            }
        }
コード例 #4
0
        /* Добавляем новые ключи в БД (ключи, которых нет в выбранной категории) */
        private void CreateNewKeywordsInDB()
        {
            bool error = false;         //признак ошибки при записи нового ключа в БД; значит, такой ключ уже есть
            int  j     = 0;

            string[,] _alreadyExistedKeywords = new string[dgv_NewKeys.RowCount, 2];       //ключи, которые уже есть в БД, но в другой категории
            List <int> forDeleting = new List <int> {
            };

            for (int i = 0; i < dgv_NewKeys.RowCount; i++)
            {
                if (scController.InsertNewKeyword(int.Parse(dgv_NewKeys.Rows[i].Cells[0].Value.ToString()), int.Parse(dgv_NewKeys.Rows[i].Cells[1].Value.ToString()), dgv_NewKeys.Rows[i].Cells[2].Value.ToString(), int.Parse(dgv_NewKeys.Rows[i].Cells[3].Value.ToString()), DateTime.Now) == 1)
                {
                    //progressBar1.Value++;
                }
                else
                {
                    _alreadyExistedKeywords[j, 0] = dgv_NewKeys.Rows[i].Cells[2].Value.ToString();
                    _alreadyExistedKeywords[j, 1] = dgv_NewKeys.Rows[i].Cells[3].Value.ToString();
                    j++;
                    error = true;
                    forDeleting.Add(i);
                    //progressBar1.Value++;
                }
            }

            //удаляем ключи из dgv_NewKeys, т.к. они не новые, а просто есть в другой категории
            for (int i = forDeleting.Count - 1; i >= 0; i--)
            {
                dgv_NewKeys.Rows.RemoveAt(forDeleting[i]);
            }

            lb_NewKeys.Text      = str_NewKeys + " (" + dgv_NewKeys.RowCount + ")";
            lb_UpdatedKeys.Text  = str_UpdatedKeys + " (" + dgv_Target.RowCount + ")";
            lb_UploadedKeys.Text = str_UploadedKeys + " (" + dgv_Source.RowCount + ")";

            if (error)
            {
                if (MessageBox.Show("Некоторые ключи не были обновлены, т.к. они принадлежат другой категории. Обновить их всё равно? Если нет, автоматически откроется окно для редактирования всех необновленных ключей.", "Внимание", MessageBoxButtons.OKCancel) == DialogResult.OK)
                {
                    //все равно обновляем эти ключи
                    for (int i = 0; i < _alreadyExistedKeywords.Length / 2; i++)
                    {
                        scController.UpdateExistingKeywordByKeyword(int.Parse(GetSelectedProductTypeId().ToString()), int.Parse(GetSelectedCategoryId().ToString()), _alreadyExistedKeywords[i, 0], int.Parse(_alreadyExistedKeywords[i, 1]), DateTime.Now);
                    }
                }
                else
                {
                    //редактируем эти ключи, а потом передаем обратно сюда
                    KeywordsAreExistedView kae = new KeywordsAreExistedView(_alreadyExistedKeywords, cb_KeywordCategory.SelectedItem.ToString());
                    if (kae.ShowDialog() == DialogResult.OK)
                    {
                        Fill_dgv_Source_ByExistingKeys(_alreadyExistedKeywords);
                    }
                    dgv_NewKeys.ScrollBars = ScrollBars.Both;
                    progressBar1.Visible   = false;
                    progressBar1.Value     = 0;
                }
            }
            else
            {
                MessageBox.Show("Все данные были обновлены успешно.", "Успех");
                dgv_NewKeys.ScrollBars = ScrollBars.Both;
                progressBar1.Visible   = false;
                progressBar1.Value     = 0;
            }
        }