Example #1
0
        private void btnUsl_Click(object sender, EventArgs e)
        {
            Cursor.Current = Cursors.WaitCursor;
            try
            {
                //сначала проверить устав

                string[] cliparr = ActiveAudit.GetClipBoard("my.dom.gosuslugi.ru/organization-cabinet/#!/charter/view/houses/");
                if (cliparr == null)
                {
                    return;
                }

                Dictionary <string, List <string> > GRItems = new Dictionary <string, List <string> >();

                string[] data = cliparr.Where(s => !s.Contains("Наименование"))
                                .Where(s => !(s == " "))
                                .Where(s => !s.Contains("Вид коммунальных услуг"))
                                .Where(s => !s.Contains("Дополнительные услуги"))
                                .Where(s => !s.Contains("Услуги отсутствуют"))
                                .ToArray();

                //Группируем по адресу (адрес->услуги[])  ^\d{6}\s|^\s{1,3}\d{6}\s
                Regex rgx = new Regex(@"^\d{6},\s|^\s{1,3}\d{6},\s");

                foreach (string s in data)
                {
                    if (!rgx.IsMatch(s))
                    {
                        GRItems.Last().Value.Add(s);
                    }
                    else
                    {
                        GRItems.Add(s, new List <string>());
                    }
                }

                var res = data.GroupBy(x => rgx.IsMatch(x)).Select(grp => new { z = grp.Key, a = grp });

                foreach (string k in GRItems.Keys)
                {
                    string[] usldata = GRItems[k].ToArray();
                    string   period  = usldata.First <string>(); //период дожен  находиться в 1-й позиции массива услуг

                    int    lastSpace = k.LastIndexOf(" ");
                    string addr      = k.Substring(0, lastSpace);
                    string status    = k.Substring(lastSpace);

                    ustavHouseAdapter.Insert(this.currUstavId, ActiveAudit.ID, ActiveAudit.ID_Company, addr, status, period.Split(':')[1]);

                    //получить id дома и вставить услуги
                    ustavHouseAdapter.FillByCurrentUstav(ds.UstavHouse, this.currUstavId);
                    DataSet1.UstavHouseRow[] houseArr = ds.UstavHouse.ToArray();
                    int id_house = houseArr.Last <DataSet1.UstavHouseRow>().ID_UstavHouse;
                    Console.WriteLine(id_house);

                    string[] uslugi = GRItems[k].Skip(1).ToArray(); //пропускаем период дома

                    if (uslugi.Count() % 3 != 0)
                    {
                        MessageBox.Show("Пересень услуг сформирован некорректно");
                        return;
                    }

                    string[] z;
                    int      skip = 0;
                    while ((z = uslugi.Skip(skip).Take(3).ToArray()).Count() != 0)
                    {
                        ustavUslugiAdapter.Insert(id_house,
                                                  z[0],                //Наименование услуги
                                                  z[1].Split('\t')[0], //дата начала
                                                  z[1].Split('\t')[1], //дата окончания
                                                  z[2]);               //устав

                        skip += 3;
                    }
                }

                grdHouse.DataSource = ustavHouseAdapter.GetDataByCurrentUstav(this.currUstavId);

                grdHouse.Rows[0].Selected = true;
                grdUslugi.DataSource      = ustavUslugiAdapter.GetDataByCurrentHouse((int)grdHouse.Rows[0].Cells[0].Value);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                Clipboard.Clear();
                Cursor.Current = Cursors.Default;
                ActiveAudit.CheckGrid(grdUstav);
                ActiveAudit.CheckGrid(grdHouse);
                ActiveAudit.CheckGrid(grdUslugi);
            }
        }