private void cbxWebServiceFunctions_DropDown(object sender, EventArgs e)
        {
            cbxWebServiceFunctions.Items.Clear();
            var client = new DataToBCService.DataToBc();

            client.Url         = tbxWebServiceUrl.Text;
            client.Credentials = new NetworkCredential(tbxWebServiceUser.Text, tbxWebServicePassword.Text);
            string        fucntions = client.GetFunctions();
            List <string> result    = fucntions.Split(',').ToList();

            foreach (string s in result)
            {
                cbxWebServiceFunctions.Items.Add(s);
            }
        }
        private void MappingFrm_Load(object sender, EventArgs e)
        {
            ShowWaitForm();

            dataGridView.Rows.Clear();

            DataGridViewComboBoxColumn cmb = new DataGridViewComboBoxColumn();

            cmb.HeaderText   = "From Field";
            cmb.Name         = "cmb";
            cmb.MinimumWidth = 250;

            if (setup.type == Library.Type.SQL)
            {
                string connetionString = "Data Source=" + setup.server + ";Initial Catalog=" + setup.database + ";Integrated Security=true;";

                using (SqlConnection connection = new SqlConnection(connetionString))
                    using (SqlCommand command = connection.CreateCommand())
                    {
                        command.CommandText = "select c.name from sys.columns c inner join sys.tables t on t.object_id = c.object_id and t.name = '" + setup.sqlTable + "'";
                        connection.Open();
                        using (var reader = command.ExecuteReader())
                        {
                            while (reader.Read())
                            {
                                cmb.Items.Add(reader.GetString(0));
                            }
                        }
                    }
            }

            if (setup.type == Library.Type.CSV)
            {
                csvFieldList = new List <CsvField>();
                csvLines     = new List <CsvLine>();
                int j = 0;
                using (var reader = new StreamReader(setup.csvPath))
                {
                    List <string> csvfields = new List <string>();
                    bool          first     = true;
                    while (!reader.EndOfStream)
                    {
                        CsvLine csvLine = new CsvLine();
                        csvLine.csvFields = new List <CsvField>();
                        var      line   = reader.ReadLine();
                        string[] values = line.Split(';');
                        if (first)
                        {
                            csvfields = line.Split(';').ToList();
                            first     = false;
                        }
                        else
                        {
                            for (int i = 0; i < csvfields.Count; i++)
                            {
                                csvLine.csvFields.Add(new CsvField {
                                    key = csvfields[i], index = i, value = values[i]
                                });
                            }
                            csvLines.Add(csvLine);
                            _waitForm.updateLbl(j++);
                            _waitForm.Refresh();
                        }
                    }

                    foreach (string s in csvfields)
                    {
                        cmb.Items.Add(s);
                    }
                }
            }

            if (setup.type == Library.Type.Excel)
            {
                excelLines = new List <ExcelLine>();
                ExcelLine excelLine = new ExcelLine();

                Microsoft.Office.Interop.Excel.Application xlApp       = new Microsoft.Office.Interop.Excel.Application();
                Microsoft.Office.Interop.Excel.Workbook    xlWorkbook  = xlApp.Workbooks.Open(setup.excelPath);
                Microsoft.Office.Interop.Excel._Worksheet  xlWorksheet = xlWorkbook.Sheets[1];
                Microsoft.Office.Interop.Excel.Range       xlRange     = xlWorksheet.UsedRange;

                int           rowCount = xlRange.Rows.Count;
                int           colCount = xlRange.Columns.Count;
                List <string> headers  = new List <string>();

                for (int i = 1; i <= rowCount; i++)
                {
                    for (int j = 1; j <= colCount; j++)
                    {
                        if (i == 1)
                        {
                            cmb.Items.Add(xlRange.Cells[i, j].Value2.ToString());
                            headers.Add(xlRange.Cells[i, j].Value2.ToString());
                        }
                        else
                        {
                            if (j == 1)
                            {
                                excelLine             = new ExcelLine();
                                excelLine.excelFields = new List <ExcelField>();
                            }

                            if (xlRange.Cells[i, j] != null && xlRange.Cells[i, j].Value2 != null)
                            {
                                excelLine.excelFields.Add(new ExcelField {
                                    key = headers[j - 1], index = i, value = xlRange.Cells[i, j].Value2.ToString()
                                });
                            }
                        }
                    }
                    if (i != 1)
                    {
                        excelLines.Add(excelLine);
                        _waitForm.updateLbl(i);
                        _waitForm.Refresh();
                    }
                }

                GC.Collect();
                GC.WaitForPendingFinalizers();

                Marshal.ReleaseComObject(xlRange);
                Marshal.ReleaseComObject(xlWorksheet);

                xlWorkbook.Close();
                Marshal.ReleaseComObject(xlWorkbook);

                xlApp.Quit();
                Marshal.ReleaseComObject(xlApp);
            }

            dataGridView.Columns.Add(cmb);

            try
            {
                var client = new DataToBCService.DataToBc();
                client.Url         = setup.webServiceUrl;
                client.Credentials = new NetworkCredential(setup.userName, setup.password);
                string        fields = client.GetFields(setup.function, setup.direct);
                List <string> result = fields.Split(',').ToList();
                foreach (string s in result)
                {
                    this.dataGridView.Rows.Add(s);
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Not vaild setup");
                Close();
            }
        }
        private void btnPush_Click(object sender, EventArgs e)
        {
            startDateTime = DateTime.Now;

            if (setup.type == Library.Type.SQL)
            {
                PushSQL();
            }

            if (setup.type == Library.Type.CSV)
            {
                PushCSV();
            }

            if (setup.type == Library.Type.Excel)
            {
                PushExcel();
            }

            int i       = 0;
            int size    = 10;
            int counter = 0;

            Count = varList.Count;

            List <Values> subList = new List <Values>();

            progressBarCustomer.Maximum = varList.Count;
            progressBarCustomer.Value   = 0;
            bool createNew = true;

            foreach (Values values in varList)
            {
                counter++;
                lblProgress.Text = "Processing fields " + counter + " of " + Count + " ";
                lblProgress.Refresh();
                progressBarCustomer.Value += 1;
                progressBarCustomer.Refresh();

                if (createNew)
                {
                    subList = new List <Values>();
                }

                createNew = false;
                subList.Add(values);

                if (values.field == "InsertTrigger")
                {
                    if (i == size | counter == varList.Count)
                    {
                        string json = "";
                        json = JsonConvert.SerializeObject(subList);

                        var client = new DataToBCService.DataToBc();
                        client.Url         = setup.webServiceUrl;
                        client.Credentials = new NetworkCredential(setup.userName, setup.password);
                        try
                        {
                            client.Create(setup.function, json, setup.direct);
                            createNew = true;
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                    }
                    else
                    {
                        i++;
                    }
                }
            }
            endDateTime = DateTime.Now;
            TimeSpan timeSpan = endDateTime - startDateTime;

            MessageBox.Show(lines + " Records Pushed To BC - Duration " + timeSpan.TotalMinutes);
        }