예제 #1
0
        private void buGet_Click(object sender, EventArgs e)
        {
            // если список пуст - ничего не делай
            if (dataSets.Count == 0)
            {
                return;
            }
            try
            {
                for (int i = dataSets.Count - 1; i >= 0; i--) // Проходимся по списку в обратном порядке, чтобы можно было без проблем удалять строки
                {
                    DataSet ds = dataSets[i];
                    string  filename1, filename2, filename3, filename4, filename5;

                    // Создаем xml
                    filename1 = createXml(ds);
                    // Подписываем
                    filename2 = signXml(filename1);
                    // Шифруем
                    filename3 = encryptXml(filename2);
                    // Отправляем и получаем ответ
                    filename4 = sendXml(filename3);
                    // Расшифровываем ответ
                    filename5 = decryptResponse(filename4);
                    // Получаем объект
                    ResultData rd = getResultDataFromXml(filename5);
                    if (rd.STATUS == "1") // Если объект по датасету получен верно
                    {
                        // Засовываем результат в лист результатов
                        resultDatas.Add(rd);
                    }
                    else // Не удалось получить объект по датасету
                    {
                        // Засовываем датасет в лист ошибочных датасетов для отображения ошибки
                        dataSetsHasErrors.Add(ds);
                    }

                    // удаляем датасет из листа на проверку
                    dataSets.Remove(ds);

                    // удаляем временные файлы, если требуется
                    if (DELETE_BUF_FILES)
                    {
                        if (File.Exists(filename1))
                        {
                            File.Delete(filename1);
                        }
                        if (File.Exists(filename2))
                        {
                            File.Delete(filename2);
                        }
                        if (File.Exists(filename3))
                        {
                            File.Delete(filename3);
                        }
                        if (File.Exists(filename4))
                        {
                            File.Delete(filename4);
                        }
                        if (File.Exists(filename5))
                        {
                            File.Delete(filename5);
                        }
                    }
                }

                // перерисовываем элементы списка
                lb.Items.Clear();
                foreach (DataSet d in dataSets)
                {
                    lb.Items.Add(d);
                }

                // тут можно продолжить работать с resultDatas ==========================================================
                foreach (ResultData rd in resultDatas)
                {
                    // do something
                }

                // вывод ошибочных датасетов
                if (dataSetsHasErrors.Count > 0)
                {
                    string errorMsg = "Возникли ошибки при получении " + dataSetsHasErrors.Count + " датасетов:\r\n";
                    foreach (DataSet ds in dataSetsHasErrors)
                    {
                        errorMsg += ds.ToString() + "\r\n";
                    }
                    MessageBox.Show(errorMsg, "GetElnList", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            catch (IOException ex)
            {
                MessageBox.Show(ex.Message, "GetElnList", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
예제 #2
0
        /// <summary>
        /// Получает заполненный объект из расшифрованного ответа ФСС (просто парсит XML)
        /// </summary>
        /// <param name="filename">Путь к расшифрованному ответу ФСС</param>
        /// <returns>Объект</returns>
        public ResultData getResultDataFromXml(string filename)
        {
            ResultData res = new ResultData();

            if (!File.Exists(filename))
            {
                throw new Exception("Шаг 6. Файл не найден!\r\nПуть:" + filename);
            }

            // Создаем объект XmlDocument.
            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.Load(filename);

            res.STATUS = xmlDoc.DocumentElement.GetElementsByTagName("ns1:STATUS").Item(0).InnerText;
            if (res.STATUS == "1")
            {
                XmlElement row = (XmlElement)xmlDoc.DocumentElement.GetElementsByTagName("ns1:ROW").Item(0);
                res.BIRTHDAY          = row.GetElementsByTagName("ns1:BIRTHDAY").Item(0).InnerText;
                res.BOZ_FLAG          = row.GetElementsByTagName("ns1:BOZ_FLAG").Item(0).InnerText;
                res.DATE1             = row.GetElementsByTagName("ns1:DATE1").Item(0).InnerText;
                res.DATE2             = row.GetElementsByTagName("ns1:DATE2").Item(0).InnerText;
                res.DT1_LN            = row.GetElementsByTagName("ns1:DT1_LN").Item(0).InnerText;
                res.DT2_LN            = row.GetElementsByTagName("ns1:DT2_LN").Item(0).InnerText;
                res.DUPLICATE_FLAG    = row.GetElementsByTagName("ns1:DUPLICATE_FLAG").Item(0).InnerText;
                res.EMPL_FLAG         = row.GetElementsByTagName("ns1:EMPL_FLAG").Item(0).InnerText;
                res.FORM1_DT          = row.GetElementsByTagName("ns1:FORM1_DT").Item(0).InnerText;
                res.GENDER            = row.GetElementsByTagName("ns1:GENDER").Item(0).InnerText;
                res.HOSPITAL_DT1      = row.GetElementsByTagName("ns1:HOSPITAL_DT1").Item(0).InnerText;
                res.HOSPITAL_DT2      = row.GetElementsByTagName("ns1:HOSPITAL_DT2").Item(0).InnerText;
                res.INSUR_MM          = row.GetElementsByTagName("ns1:INSUR_MM").Item(0).InnerText;
                res.INSUR_YY          = row.GetElementsByTagName("ns1:INSUR_YY").Item(0).InnerText;
                res.LN_CODE           = row.GetElementsByTagName("ns1:LN_CODE").Item(0).InnerText;
                res.LN_DATE           = row.GetElementsByTagName("ns1:LN_DATE").Item(0).InnerText;
                res.LN_HASH           = row.GetElementsByTagName("ns1:LN_HASH").Item(0).InnerText;
                res.LN_STATE          = row.GetElementsByTagName("ns1:LN_STATE").Item(0).InnerText;
                res.LPU_ADDRESS       = row.GetElementsByTagName("ns1:LPU_ADDRESS").Item(0).InnerText;
                res.LPU_EMPLOYER      = row.GetElementsByTagName("ns1:LPU_EMPLOYER").Item(0).InnerText;
                res.LPU_EMPL_FLAG     = row.GetElementsByTagName("ns1:LPU_EMPL_FLAG").Item(0).InnerText;
                res.LPU_NAME          = row.GetElementsByTagName("ns1:LPU_NAME").Item(0).InnerText;
                res.LPU_OGRN          = row.GetElementsByTagName("ns1:LPU_OGRN").Item(0).InnerText;
                res.MSE_DT1           = row.GetElementsByTagName("ns1:MSE_DT1").Item(0).InnerText;
                res.MSE_DT2           = row.GetElementsByTagName("ns1:MSE_DT2").Item(0).InnerText;
                res.MSE_DT3           = row.GetElementsByTagName("ns1:MSE_DT3").Item(0).InnerText;
                res.MSE_INVALID_GROUP = row.GetElementsByTagName("ns1:MSE_INVALID_GROUP").Item(0).InnerText;
                res.NAME                = row.GetElementsByTagName("ns1:NAME").Item(0).InnerText;
                res.NOT_INSUR_MM        = row.GetElementsByTagName("ns1:NOT_INSUR_MM").Item(0).InnerText;
                res.NOT_INSUR_YY        = row.GetElementsByTagName("ns1:NOT_INSUR_YY").Item(0).InnerText;
                res.PATRONIMIC          = row.GetElementsByTagName("ns1:PATRONIMIC").Item(0).InnerText;
                res.PREGN12W_FLAG       = row.GetElementsByTagName("ns1:PREGN12W_FLAG").Item(0).InnerText;
                res.PRIMARY_FLAG        = row.GetElementsByTagName("ns1:PRIMARY_FLAG").Item(0).InnerText;
                res.REASON1             = row.GetElementsByTagName("ns1:REASON1").Item(0).InnerText;
                res.RETURN_DATE_EMPL    = row.GetElementsByTagName("ns1:RETURN_DATE_EMPL").Item(0).InnerText;
                res.SERV1_AGE           = row.GetElementsByTagName("ns1:SERV1_AGE").Item(0).InnerText;
                res.SERV1_FIO           = row.GetElementsByTagName("ns1:SERV1_FIO").Item(0).InnerText;
                res.SERV1_MM            = row.GetElementsByTagName("ns1:SERV1_MM").Item(0).InnerText;
                res.SERV1_RELATION_CODE = row.GetElementsByTagName("ns1:SERV1_RELATION_CODE").Item(0).InnerText;
                res.SERV2_AGE           = row.GetElementsByTagName("ns1:SERV2_AGE").Item(0).InnerText;
                res.SERV2_MM            = row.GetElementsByTagName("ns1:SERV2_MM").Item(0).InnerText;
                res.SNILS               = row.GetElementsByTagName("ns1:SNILS").Item(0).InnerText;
                res.SURNAME             = row.GetElementsByTagName("ns1:SURNAME").Item(0).InnerText;

                res.treatPeriods = new List <TreatFullPeriod>();
                XmlNodeList     xnlTreatPeriods = row.GetElementsByTagName("ns1:TREAT_PERIODS");
                TreatFullPeriod treatFullPeriod = null;
                for (int i = 0; i < xnlTreatPeriods.Count; i++)
                {
                    treatFullPeriod = new TreatFullPeriod();
                    treatFullPeriod.treatPeriods = new List <TreatPeriod>();

                    XmlElement  xeTreatFullPeriod   = (XmlElement)xnlTreatPeriods.Item(i);
                    XmlNodeList xnlTreatFullPeriods = xeTreatFullPeriod.GetElementsByTagName("ns1:TREAT_FULL_PERIOD");

                    TreatPeriod treatPeriod = null;
                    for (int j = 0; j < xnlTreatFullPeriods.Count; j++)
                    {
                        treatPeriod = new TreatPeriod();
                        XmlElement xeTreatPeriod = (XmlElement)xnlTreatFullPeriods.Item(i);
                        treatPeriod.TREAT_DOCTOR      = xeTreatFullPeriod.GetElementsByTagName("ns1:TREAT_DOCTOR").Item(0).InnerText;
                        treatPeriod.TREAT_DOCTOR_ROLE = xeTreatFullPeriod.GetElementsByTagName("ns1:TREAT_DOCTOR_ROLE").Item(0).InnerText;
                        treatPeriod.TREAT_DT1         = xeTreatFullPeriod.GetElementsByTagName("ns1:TREAT_DT1").Item(0).InnerText;
                        treatPeriod.TREAT_DT2         = xeTreatFullPeriod.GetElementsByTagName("ns1:TREAT_DT2").Item(0).InnerText;
                    }
                    treatFullPeriod.treatPeriods.Add(treatPeriod);
                }
                res.treatPeriods.Add(treatFullPeriod);


                res.lnResult = new List <LnResult>();
                XmlNodeList xnlLnResult = row.GetElementsByTagName("ns1:LN_RESULT");
                LnResult    lnResult    = null;
                for (int i = 0; i < xnlLnResult.Count; i++)
                {
                    lnResult = new LnResult();
                    XmlElement xeLnResult = (XmlElement)xnlLnResult.Item(i);
                    lnResult.OTHER_STATE_DT  = xeLnResult.GetElementsByTagName("ns1:OTHER_STATE_DT").Item(0).InnerText;
                    lnResult.RETURN_DATE_LPU = xeLnResult.GetElementsByTagName("ns1:RETURN_DATE_LPU").Item(0).InnerText;
                }
                res.lnResult.Add(lnResult);
            }

            return(res);
        }