Example #1
0
        public void UpdateDictionaries()
        {
            Dictionary <uint, string> fisDictionaries = FIS_Connector.GetDictionaries(_FIS_Address, _FIS_Login, _FIS_Password);
            Dictionary <uint, string> dbDictionaries  = _DB_Connection.Select(DB_Table.DICTIONARIES).ToDictionary(d1 => (uint)d1[0], d2 => d2[1].ToString());

            string addedReport   = "Добавлены справочники:";
            ushort addedCount    = 0;
            string deletedReport = "";

            foreach (var d in fisDictionaries)
            {
                if (d.Key != 10 && d.Key != 19)
                {
                    var fisDictionaryItems = FIS_Connector.GetDictionaryItems(_FIS_Address, _FIS_Login, _FIS_Password, d.Key);

                    if (dbDictionaries.ContainsKey(d.Key))
                    {
                        if (d.Value == dbDictionaries[d.Key])
                        {
                            UpdateDictionaryItems((FIS_Dictionary)d.Key, d.Value, fisDictionaryItems);
                        }
                        else if (SharedClasses.Utility.ShowChoiceMessageWithConfirmation(
                                     "В ФИС изменилось наименование справочника с кодом " + d.Key +
                                     ":\nC \"" + dbDictionaries[d.Key] + "\"\nна \"" + d.Value +
                                     "\".\n\nОбновить наименование в БД?\nВ случае отказа изменения элементов этого справочника проверятся не будут.", //TODO Нужен мягкий знак "проверятся"?
                                     "Действие"
                                     ))
                        {
                            _DB_Connection.Update(DB_Table.DICTIONARIES,
                                                  new Dictionary <string, object> {
                                { "name", d.Value }
                            },
                                                  new Dictionary <string, object> {
                                { "id", d.Key }
                            }
                                                  );
                            UpdateDictionaryItems((FIS_Dictionary)d.Key, d.Value, fisDictionaryItems);
                        }
                    }
                    else
                    {
                        _DB_Connection.Insert(DB_Table.DICTIONARIES,
                                              new Dictionary <string, object> {
                            { "id", d.Key }, { "name", d.Value }
                        }
                                              );
                        foreach (var item in fisDictionaryItems)
                        {
                            _DB_Connection.Insert(DB_Table.DICTIONARIES_ITEMS,
                                                  new Dictionary <string, object> {
                                { "dictionary_id", d.Key }, { "item_id", item.Key }, { "name", item.Value }
                            }
                                                  );
                        }

                        addedReport += "\n" + d.Key + " \"" + d.Value + "\"";
                        addedCount++;
                    }
                }
            }

            foreach (var d in dbDictionaries)
            {
                if (!fisDictionaries.ContainsKey(d.Key))
                {
                    deletedReport += d.Key + ", ";
                }
            }

            if (addedCount == 0)
            {
                addedReport = "Новых справочников нет.";
            }
            else
            {
                addedReport += "\nВсего: " + addedCount;
            }

            if (deletedReport != "")
            {
                deletedReport = "\n\nВнимание: в ФИС отсутствуют справочники с ID: " + deletedReport.Remove(deletedReport.Length - 2);
            }

            MessageBox.Show(addedReport + deletedReport, "Обновление завершено", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }