Example #1
0
        /// <summary>
        /// Imports directly into a DbSet. ExistingItem should be overridden if records can
        /// be updated, otherwise records are added.
        /// </summary>
        /// <param name="table"></param>
        public void Import(DbSet <T> table)
        {
            var newRecs    = new List <T>();
            var usedFields = ImportFields.Where(f => f.ImportTarget != null && !f.ImportTarget.IsKeyField && f.ImportTarget.Prop != null).ToList();
            var keyField   = ImportFields.FirstOrDefault(f => f.ImportTarget != null && f.ImportTarget.IsKeyField && f.ImportTarget.Prop != null);
            int rowNbr     = 1;

            foreach (var row in _importFile.GetRecords())
            {
                T rec   = new T();
                T exist = null;
                if (keyField != null)
                {
                    keyField.Import(rec, row, rowNbr);
                    exist = ExistingItem(table, rec);
                    if (exist != null)
                    {
                        rec = exist;
                    }
                }
                foreach (var f in usedFields)
                {
                    f.Import(rec, row, rowNbr);
                }
                if (exist == null && Include(rec))
                {
                    newRecs.Add(rec);
                }
                rowNbr++;
            }
            table.AddRange(newRecs);
        }
Example #2
0
        public static string GetImportField(RestCommand command, int importFieldID)
        {
            ImportField importField = ImportFields.GetImportField(command.LoginUser, importFieldID);

            if (importField.OrganizationID != command.Organization.OrganizationID)
            {
                throw new RestException(HttpStatusCode.Unauthorized);
            }
            return(importField.GetXml("ImportField", true));
        }
Example #3
0
        public static string GetImportFields(RestCommand command)
        {
            ImportFields importFields = new ImportFields(command.LoginUser);

            importFields.LoadByOrganizationID(command.Organization.OrganizationID);

            if (command.Format == RestFormat.XML)
            {
                return(importFields.GetXml("ImportFields", "ImportField", true, command.Filters));
            }
            else
            {
                throw new RestException(HttpStatusCode.BadRequest, "Invalid data format");
            }
        }
    protected void btnZipCode_Click(object sender, EventArgs e)
    {
        string[] stringSeparators = new string[] { "\r\n" };

        //Read highchart city
        string content1 = File.ReadAllText(@"D:\Working\EC\usacity\cityCSV.csv");
        // Parse content
        string[] lines1 = content1.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries);

        ImportFields data;

        List<ImportFields> listData1 = new List<ImportFields>();
        int numRecord1 = lines1.Length;

        for (int i = 1; i < numRecord1; i++)
        {
            string[] values = ImportExportUltility.GetCsvRecord(lines1[i]);
            data = new ImportFields();
            data.State = values[0].Trim();
            data.CityName = values[1].Trim();
            data.CityKey = values[2].Trim();
            listData1.Add(data);
        }

        //Read zicode file
        string content2 = File.ReadAllText(@"D:\Working\EC\usacity\zip_code_database.csv");
        string[] lines2 = content2.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries);

        List<ImportFields> listData2 = new List<ImportFields>();
        int numRecord2 = lines2.Length;

        string sqlLines = "";
        string csvLines = "hc-key,zip,type,primary_city,acceptable_cities,unacceptable_cities,state,county,timezone,area_codes,latitude,longitude,world_region,country,decommissioned,estimated_population,notes";
        for (int i = 1; i < numRecord2; i++)
        {
            string[] values = ImportExportUltility.GetCsvRecord(lines2[i]);
            data = new ImportFields();
            data.ZipCode = values[0].Trim();
            data.Type= values[1].Trim();
            data.PrimatyCity= values[2].Trim();
            data.State = values[5].Trim();
            data.County = values[6].Trim();
            data.TimeZone = values[7].Trim();
            //Tim hc-key
            var hightchartdata = (from pi in listData1
                                  where pi.CityName == data.PrimatyCity
                                  select pi).FirstOrDefault();
            if (hightchartdata != null)
                data.CityKey = hightchartdata.CityKey;
            else
            {
                hightchartdata = (from pi in listData1
                                  where data.County.Contains(pi.CityName)
                                  select pi).FirstOrDefault();
                if (hightchartdata != null)
                    data.CityKey = hightchartdata.CityKey;
                else
                {
                    hightchartdata = (from pi in listData1
                                      where data.TimeZone.Contains(pi.CityName)
                                      select pi).FirstOrDefault();
                    if (hightchartdata != null)
                        data.CityKey = hightchartdata.CityKey;
                }
            }
            if (!String.IsNullOrEmpty(data.CityKey))
            {
                sqlLines += "INSERT INTO `zip_code`  (`zip_code`, `area_id`) " +
                      "SELECT '" + data.ZipCode + "', id FROM area where geo_code='" + data.CityKey + "' ;\r\n";
            }
            csvLines += data.CityKey + "," + values[0] + "," + values[1] + "," + values[2] + "," + values[3] + "," + values[4] + "," + values[5] + "," + values[6] + "," + values[7] + "," + values[8] + "," + values[9] + "," + values[10] + "," + values[11] + "," + values[12] + "," + values[13] + "," + values[14] + "\r\n";

            listData2.Add(data);
        }

        // Write the string to a file.
        System.IO.StreamWriter fileSql = new System.IO.StreamWriter(@"D:\Working\EC\usacity\zipcode.sql");
        fileSql.WriteLine(sqlLines);
        fileSql.Close();
        System.IO.StreamWriter fileCSV = new System.IO.StreamWriter(@"D:\Working\EC\usacity\megerzipcodeCSV.csv");
        fileCSV.WriteLine(csvLines);
        fileCSV.Close();
    }
Example #5
0
        /// <summary>
        /// обновление зависимых контролов
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void controlUpdate_Event(object sender, EventArgs e)
        {
            if (sender == null)
            {
                return;
            }
            //установка изменившегося параметра
            string name = (sender as Control).Name;

            switch (name)
            {
            case "textBoxDelimeter":
                importer.Delimeter = importer.FileFormat == FileFormats.CSV ? textBoxDelimeter.Text : ";";
                break;

            case "numericUpDownStartLine":
                importer.StartLine = (int)numericUpDownStartLine.Value;
                break;

            case "comboBoxEncoding":
                importer.Encoding = Encoding.GetEncoding(comboBoxEncoding.SelectedItem as string);
                break;

            case "textBoxTrimmers":
                importer.Trimmers = textBoxTrimmers.Text.ToCharArray();
                break;

            case "numericUpDownColDate":
            case "numericUpDownColSpeed":
            case "numericUpDownColTemper":
            case "numericUpDownColWet":
            case "numericUpDownColDirect":
            case "numericUpDownColPress":
                var          contr = sender as NumericUpDown;
                ImportFields fld   = (ImportFields)contr.Tag;
                if (contr.Enabled)
                {
                    if (importer.Columns.ContainsKey(fld))
                    {
                        importer.Columns[fld] = (int)contr.Value;
                    }
                    else
                    {
                        importer.Columns.Add(fld, (int)contr.Value);
                    }
                }
                else
                {
                    _ = importer.Columns.Remove(fld);
                }
                break;

            case "comboBoxDirectUnit":
                importer.DirectionUnit = (DirectionUnits)(new EnumTypeConverter <DirectionUnits>().ConvertFrom(comboBoxDirectUnit.SelectedItem));
                break;

            case "comboBoxPressUnit":
                importer.PressureUnit = (PressureUnits)(new EnumTypeConverter <PressureUnits>().ConvertFrom(comboBoxPressUnit.SelectedItem));
                break;

            case "comboBoxWetUnit":
                importer.WetnessUnit = (WetnessUnits)(new EnumTypeConverter <WetnessUnits>().ConvertFrom(comboBoxWetUnit.SelectedItem));
                break;

            case "checkBoxFindNearestMS":
                importer.BindNearestMS = checkBoxFindNearestMS.Checked;
                break;

            default: throw new Exception("Этот контрол не реализован");
            }

            updateUI(); //пересобираем окно
        }
    //2.Convert dữ liệu thật từ hơn 600 bản ghi của hệ thống cũ.
    protected void btnImportOld_Click(object sender, EventArgs e)
    {
        // try
          //  {
            if (!FileUpload1.HasFile || !FileUpload2.HasFile)
            {
                return;
            }

            //Upload file to server
            string uploadFolder = System.Configuration.ConfigurationManager.AppSettings["FolderPath"];
            string sDirPath = Request.PhysicalApplicationPath + uploadFolder;
            string path1 = sDirPath + "\\" + FileUpload1.FileName;
            FileUpload1.SaveAs(path1);

            string path2 = sDirPath + "\\" + FileUpload2.FileName;
            FileUpload2.SaveAs(path2);

            string[] lines1 = File.ReadAllLines(path1);

            // Parse content
            string content2 = File.ReadAllText(path2);
            string[] stringSeparators = new string[] { "\r\n" };
            string[] lines2 = content2.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries);

            // string[] lines2 = File.ReadAllLines(path2);
            File.Delete(path1);
            File.Delete(path2);

            ImportFields data;

            List<ImportFields> listData1 = new List<ImportFields>();
            int numRecord = lines1.Length;
            if (numRecord > 662)
                numRecord = 662;

            for (int i = 1; i < numRecord; i++)
            {
                data = new ImportFields();
                string[] values = ImportExportUltility.GetCsvRecord(lines1[i]);
                if (values.Length > 12)
                {
                    data.FirstName = values[0].Trim();
                    data.PollinatorSize = Int32.Parse(values[2].Trim());
                    data.PollinatorType = Int32.Parse(values[3].Trim());
                    data.LandscapeCity = values[5].Trim();
                    data.LandscapeCountry = values[6].Trim();
                    if (data.LandscapeCountry == "US")
                        data.LandscapeCountry = "USA";
                    else if (data.LandscapeCountry == "BR")
                        data.LandscapeCountry = "BRA";
                    data.PhotoUrl = values[9].Trim();
                    data.Latitude = double.Parse(values[10].Trim());
                    data.Longitude = double.Parse(values[11].Trim());
                    data.Premium = 0;
                    listData1.Add(data);
                }
            }

            var listData1D = listData1.GroupBy(d => new
            {
                d.FirstName,
                d.PollinatorSize,
                d.PollinatorType,
                d.LandscapeCity,
                d.PhotoUrl,
                //  d.Latitude,
                //  d.Longitude,
                d.Premium,
            }).Select(group => group.First()).ToList();

            List<ImportFields> listData2 = new List<ImportFields>();
            numRecord = lines2.Length;
            for (int i = 1; i < numRecord; i++)
            {
                data = new ImportFields();
                string[] values = ImportExportUltility.GetCsvRecord(lines2[i]);
                //{
                // if (values.Length > 8 && !string.IsNullOrEmpty(values[1]))
                data.FirstName = values[0].Trim();
                data.OrganizationName = values[1].Trim();
                data.Email = values[2].Trim();
                data.LandscapeCity = values[3].Trim();
                data.LandscapeState = values[4].Trim();
                data.LandscapeCountry = values[5].Trim();
                if (data.LandscapeCountry == "Brazil")
                    data.LandscapeCountry = "BRA";
                else if (data.LandscapeCountry == "Canada")
                    data.LandscapeCountry = "CA";
                else if (data.LandscapeCountry == "France")
                    data.LandscapeCountry = "FR";

                data.LandscapeZipcode = values[6].Trim();
                data.LandscapeStreet = values[7].Trim();

                if (values[9].Contains("Small planter"))
                    data.PollinatorSize = 1;
                else if (values[9].Contains("Small garden"))
                    data.PollinatorSize = 2;
                else if (values[9].Contains("Large garden"))
                    data.PollinatorSize = 3;
                else if (values[9].Contains("Small Yard"))
                    data.PollinatorSize = 4;
                else if (values[9].Contains("Medium Yard"))
                    data.PollinatorSize = 5;
                else if (values[9].Contains("Large Yard"))
                    data.PollinatorSize = 6;
                else if (values[9].Contains("Large Filed"))
                    data.PollinatorSize = 8;
                else if (values[9].Contains("Filed"))
                    data.PollinatorSize = 7;
                else
                    data.PollinatorSize = 9;
                //  data.PhotoUrl = values[10];
                data.PollinatorType = 0;//temp set  because no data
                listData2.Add(data);
                // }
            }

            var listData2D = listData2.GroupBy(d => new
            {
                d.FirstName,
                d.OrganizationName,
                d.Email,
                d.LandscapeCity,
                d.LandscapeState,
                d.LandscapeZipcode,
                d.LandscapeCountry,
                d.PollinatorSize
            }).Select(group => group.First()).ToList();

            var mergelist = (from pi1 in listData2D
                             join pi2 in listData1D
                                on new { pi1.FirstName, pi1.LandscapeCity, pi1.LandscapeCountry } equals new { pi2.FirstName, pi2.LandscapeCity, pi2.LandscapeCountry }
                                into ords
                             from pi2 in ords.DefaultIfEmpty()
                             // from pi2 in listData2
                             //  where pi1.FirstName == pi2.FirstName
                             select new ImportFields
                             {
                                 FirstName = pi1.FirstName,
                                 Email = pi1.Email,
                                 OrganizationName = pi1.OrganizationName,
                                 PhotoUrl = pi1.PhotoUrl,
                                 LandscapeStreet = pi1.LandscapeStreet,
                                 LandscapeCity = pi1.LandscapeCity,
                                 LandscapeState = pi1.LandscapeState,
                                 LandscapeCountry = pi1.LandscapeCountry,
                                 LandscapeZipcode = pi1.LandscapeZipcode,

                                 PollinatorSize = pi1.PollinatorSize,
                                 PollinatorType = pi2 != null ? pi2.PollinatorType : pi1.PollinatorType,

                                 Premium = pi1.Premium,
                                 Latitude = pi2 != null ? pi2.Latitude : null,
                                 Longitude = pi2 != null ? pi2.Longitude : null,
                             }
                         ).ToList();

            /*   var mergelistD = mergelist.GroupBy(d => new
               {
                   d.FirstName,
                   d.OrganizationName,
                   d.LandscapeCity,
                   d.LandscapeState,
                   d.LandscapeZipcode,
                   d.PollinatorSize,
                   d.PollinatorType,
                  // d.PhotoUrl,
                   d.Premium,
                   d.Latitude,
                   d.Longitude,
               })
               .Select(group => group.First()).ToList();*/

            WriteCsvFile(listData1D, sDirPath, @"\file1.csv");
            WriteCsvFile(listData2D, sDirPath, @"\file2.csv");
            WriteCsvFile(mergelist, sDirPath, @"\mergefile.csv");
            //  WriteCsvFile(mergelistD, sDirPath, @"\mergefileD.csv");
            if (IS_GET_LOCATION)
            {
                mergelist = GetLocationForOldData(mergelist);
                WriteCsvFile(mergelist, sDirPath, @"\mergefile2.csv");
            }

            WriteDB(mergelist, "OldSystem");

            GoToAlertMessage(panelSuccessMessage);

           /* }
        catch (Exception ex)
        {
            Pollinator.Common.Logger.Error("Error occured at " + typeof(Admin_ImportData).Name + ".btnImportOld_Click(). Exception:", ex);
            GoToAlertMessage(panelErrorMessage);
        }*/
    }
    private List<ImportFields> ParseDemoInfo(string filePath, string sDirPath)
    {
        string content = File.ReadAllText(filePath);
        File.Delete(filePath);

        // Parse content
        string[] stringSeparators = new string[] { "\r\n" };
        string[] lines = content.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries);

        int numRecord = lines.Length;
        List<ImportFields> listData = new List<ImportFields>();
        List<ImportFields> notConvertList = new List<ImportFields>();
        ImportFields data;
        IGeoCoder geoCoder = new GoogleGeoCoder();

        string nameList = "Tom, Marry, Adinath, Ajitesh, Akshaj, Akshobhya, Ameyatma, Badri, Badrinath, Bhudhav, Chakradev, Chhatrabhuj, Eashan, Eha, Eka, Ekana, Evyavan, Harinarayan, Hemang, Ijay, Indivar, Ish, Jaipal, Jaithra, Kamalakar, Kamalkant, Kamalnath, Lakshmidhar, Lakshmigopal, Lakshmiraman, Liladhar, Lohitaksh, Lohitaksha, Loknath, Lokranjan, Madhuban, Mahakram, Mahatru, Namish, Narahari, Nityanta, Padmanabha, Padmapati, Padmesh, Parmesh, Phanindranath, Pramodan, Rakshan, Ramakaant, Ramashray, Ranganath, Ratannabha, Ratnabhu, Ratnanidhi, Sadabindu, Sadru, Sahishnu, Samarendra, Samarendu, Samarjit, Samavart, Samendu, Saprathas, Satanand, Satkartar, Satveer,Tommy, Denny, Herry, Nate, Yathavan, David, Aadinath, Aaditeya, Zacharry, Aamod, Zuhayr";
        string[] firstnames = nameList.Split(new char[] { '\n', ',' });

        string orgNameList = "Coca, Pollinator, Friendly Farmers, Microsoft, Hobbyist, Beekeeper, Gardener";
        string[] orgNames = orgNameList.Split(new char[] { '\n', ',' });
        int numFirstName = firstnames.Length;
        string physicalLocation;
        Random random = new Random();
        for (int i = 1; i < numRecord; i++)
        {
            data = new ImportFields();
            string[] values = ImportExportUltility.GetCsvRecord(lines[i]);
            if (values.Length > 2)
            {
                physicalLocation = values[1].Replace("See map: Google Maps ", "");
                string[] sAddress = physicalLocation.Split(new char[] { '\n', ',' }, StringSplitOptions.RemoveEmptyEntries);
                int len = sAddress.Length;
                int startDataIndex = 0;
                while (string.IsNullOrWhiteSpace(sAddress[startDataIndex]) && startDataIndex < len)
                {
                    startDataIndex++;
                }
                if (startDataIndex<len)
                    data.LandscapeStreet = sAddress[startDataIndex].Trim();
                if (startDataIndex+1 < len)
                     data.LandscapeZipcode = sAddress[startDataIndex + 1].Trim();
                if (startDataIndex +2< len)
                     data.LandscapeCity = sAddress[startDataIndex + 2].Trim();
                data.LandscapeState = values[2].Trim();
                data.Premium = 1;
                data.PollinatorSize = random.Next(1, 8);
                data.PollinatorType = random.Next(1, 9);
                data.FirstName = firstnames[random.Next(1, numFirstName - 1)];
                data.OrganizationName = orgNames[random.Next(1, 8)];
                data.PhotoUrl = "";//UploadFiles/458586204/Burts Bees logo.png";

                if (IS_GET_LOCATION)
                {
                    //Get location from address
                    physicalLocation = physicalLocation.Replace("\n", "").Trim();

                    geoCoder = new GoogleGeoCoder();
                    bool getLocation = false;
                    Address[] matchAddress = null;
                    int numTry = 0;
                    while (!getLocation && numTry < 5)
                    {
                        try
                        {
                            matchAddress = geoCoder.GeoCode(physicalLocation).ToArray();
                            getLocation = true;
                            numTry++;
                            break;
                        }
                        catch (Exception ex)
                        {
                            System.Threading.Thread.Sleep(2000);
                            //  Pollinator.Common.Logger.Error("Error occured at " + typeof(Admin_DataMigration).Name + "Get location from address. Exception:", ex);
                        }
                    }

                    if (matchAddress != null && matchAddress.Length > 0)
                    {
                        data.Latitude = matchAddress[0].Coordinates.Latitude;
                        data.Longitude = matchAddress[0].Coordinates.Longitude;
                        listData.Add(data);
                    }
                    else
                    {
                        data.LineNumber = (i + 1).ToString();
                        data.PhysicalLocation = physicalLocation;
                        notConvertList.Add(data);
                    }
                }
                else
                {
                    if (i != 29 && i != 53)
                    {
                        listData.Add(data);
                    }
                }
            }
        }

        WriteCsvFile(listData, sDirPath, @"\output.csv");

        if (IS_GET_LOCATION)
        {
            //write file to check error line (can't get location)
            var csv = new StringBuilder();
            string newLine = "LineNumber,PhysicalLocation,OrganizationName,PollinatorSize,PollinatorType, LandscapeCity,LandscapeState,LandscapeZipcode," + Environment.NewLine;
            csv.Append(newLine);
            for (int i = 0; i < notConvertList.Count; i++)
            {
                ImportFields writedata = notConvertList.ElementAt(i);
                newLine = string.Format("{0}, \"{1}\",\"{2}\",\"{3}\",\"{4}\",\"{5}\",\"{6}\",\"{7}\",{8}",
                                writedata.LineNumber,
                                writedata.PhysicalLocation,
                                writedata.OrganizationName,
                                writedata.PollinatorSize,
                                writedata.PollinatorType,
                                writedata.LandscapeCity,
                                writedata.LandscapeState,
                                writedata.LandscapeZipcode,
                                Environment.NewLine);
                csv.Append(newLine);
            }

            File.WriteAllText(sDirPath + @"\output_error.csv", csv.ToString());
        }

        return listData;
    }
    protected void btnImportDemo_Click(object sender, EventArgs e)
    {
        if (!fileDemo.HasFile)
        {
            return;
        }

         //   try
           // {
            List<ImportFields> listData = new List<ImportFields>();

            //Upload file to server
            string uploadFolder = System.Configuration.ConfigurationManager.AppSettings["FolderPath"];
            string sDirPath = Request.PhysicalApplicationPath + uploadFolder;
            string sfilePath = sDirPath + "\\" + fileDemo.FileName;
            if (!File.Exists(sfilePath))
                fileDemo.SaveAs(sfilePath);

            if (!fileDemo.FileName.Contains("outputfull"))//not parse yet, pasrse data
            {
                listData = ParseDemoInfo(sfilePath, sDirPath);
            }
            else//has parse, just read parsed data
            {
                string[] lines = File.ReadAllLines(sfilePath);
                int numRecord = lines.Length;
                ImportFields data;

                for (int i = 1; i < numRecord; i++)
                {
                    data = new ImportFields();
                    string[] values = ImportExportUltility.GetCsvRecord(lines[i]);
                    if (values.Length > 11)
                    {
                        data.FirstName = values[0].Trim();
                        data.OrganizationName = values[1].Trim();
                        data.PollinatorSize = Int32.Parse(values[3].Trim());
                        data.PollinatorType = Int32.Parse(values[4].Trim());
                        data.LandscapeStreet = values[5].Trim();
                        data.LandscapeCity = values[6].Trim();
                        data.LandscapeState = values[7].Trim();
                        data.LandscapeCountry = values[8].Trim();
                        data.LandscapeZipcode = values[9].Trim();
                        data.PhotoUrl = values[10].Trim();
                        data.Latitude = double.Parse(values[11].Trim());
                        data.Longitude = double.Parse(values[12].Trim());
                        data.FuzyLocation = bool.Parse(values[13].Trim());
                        data.Premium =byte.Parse(values[14].Trim());
                        if (values.Length > 15)
                        {
                            //  data.RowId = int.Parse(values[12]);
                            data.UserId = values[15];
                        }
                        listData.Add(data);
                    }
                }
            }

            WriteDB(listData, "Demo");

            GoToAlertMessage(panelSuccessMessage);
           /* }
        catch (Exception ex)
        {
            Pollinator.Common.Logger.Error("Error occured at " + typeof(Admin_DataMigration).Name + "btnImportDemo_Click(). Exception:", ex);
            GoToAlertMessage(panelErrorMessage);
        }*/
    }
    private List <ImportFields> ParseDemoInfo(string filePath, string sDirPath)
    {
        string content = File.ReadAllText(filePath);

        File.Delete(filePath);

        // Parse content
        string[] stringSeparators = new string[] { "\r\n" };
        string[] lines            = content.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries);

        int numRecord = lines.Length;
        List <ImportFields> listData       = new List <ImportFields>();
        List <ImportFields> notConvertList = new List <ImportFields>();
        ImportFields        data;
        IGeoCoder           geoCoder = new GoogleGeoCoder();

        string nameList = "Tom, Marry, Adinath, Ajitesh, Akshaj, Akshobhya, Ameyatma, Badri, Badrinath, Bhudhav, Chakradev, Chhatrabhuj, Eashan, Eha, Eka, Ekana, Evyavan, Harinarayan, Hemang, Ijay, Indivar, Ish, Jaipal, Jaithra, Kamalakar, Kamalkant, Kamalnath, Lakshmidhar, Lakshmigopal, Lakshmiraman, Liladhar, Lohitaksh, Lohitaksha, Loknath, Lokranjan, Madhuban, Mahakram, Mahatru, Namish, Narahari, Nityanta, Padmanabha, Padmapati, Padmesh, Parmesh, Phanindranath, Pramodan, Rakshan, Ramakaant, Ramashray, Ranganath, Ratannabha, Ratnabhu, Ratnanidhi, Sadabindu, Sadru, Sahishnu, Samarendra, Samarendu, Samarjit, Samavart, Samendu, Saprathas, Satanand, Satkartar, Satveer,Tommy, Denny, Herry, Nate, Yathavan, David, Aadinath, Aaditeya, Zacharry, Aamod, Zuhayr";

        string[] firstnames = nameList.Split(new char[] { '\n', ',' });

        string orgNameList = "Coca, Pollinator, Friendly Farmers, Microsoft, Hobbyist, Beekeeper, Gardener";

        string[] orgNames     = orgNameList.Split(new char[] { '\n', ',' });
        int      numFirstName = firstnames.Length;
        string   physicalLocation;
        Random   random = new Random();

        for (int i = 1; i < numRecord; i++)
        {
            data = new ImportFields();
            string[] values = ImportExportUltility.GetCsvRecord(lines[i]);
            if (values.Length > 2)
            {
                physicalLocation = values[1].Replace("See map: Google Maps ", "");
                string[] sAddress       = physicalLocation.Split(new char[] { '\n', ',' }, StringSplitOptions.RemoveEmptyEntries);
                int      len            = sAddress.Length;
                int      startDataIndex = 0;
                while (string.IsNullOrWhiteSpace(sAddress[startDataIndex]) && startDataIndex < len)
                {
                    startDataIndex++;
                }
                if (startDataIndex < len)
                {
                    data.LandscapeStreet = sAddress[startDataIndex].Trim();
                }
                if (startDataIndex + 1 < len)
                {
                    data.LandscapeZipcode = sAddress[startDataIndex + 1].Trim();
                }
                if (startDataIndex + 2 < len)
                {
                    data.LandscapeCity = sAddress[startDataIndex + 2].Trim();
                }
                data.LandscapeState   = values[2].Trim();
                data.Premium          = 1;
                data.PollinatorSize   = random.Next(1, 8);
                data.PollinatorType   = random.Next(1, 9);
                data.FirstName        = firstnames[random.Next(1, numFirstName - 1)];
                data.OrganizationName = orgNames[random.Next(1, 8)];
                data.PhotoUrl         = "";//UploadFiles/458586204/Burts Bees logo.png";

                if (IS_GET_LOCATION)
                {
                    //Get location from address
                    physicalLocation = physicalLocation.Replace("\n", "").Trim();

                    geoCoder = new GoogleGeoCoder();
                    bool      getLocation  = false;
                    Address[] matchAddress = null;
                    int       numTry       = 0;
                    while (!getLocation && numTry < 5)
                    {
                        try
                        {
                            matchAddress = geoCoder.GeoCode(physicalLocation).ToArray();
                            getLocation  = true;
                            numTry++;
                            break;
                        }
                        catch (Exception ex)
                        {
                            System.Threading.Thread.Sleep(2000);
                            //  Pollinator.Common.Logger.Error("Error occured at " + typeof(Admin_DataMigration).Name + "Get location from address. Exception:", ex);
                        }
                    }

                    if (matchAddress != null && matchAddress.Length > 0)
                    {
                        data.Latitude  = matchAddress[0].Coordinates.Latitude;
                        data.Longitude = matchAddress[0].Coordinates.Longitude;
                        listData.Add(data);
                    }
                    else
                    {
                        data.LineNumber       = (i + 1).ToString();
                        data.PhysicalLocation = physicalLocation;
                        notConvertList.Add(data);
                    }
                }
                else
                {
                    if (i != 29 && i != 53)
                    {
                        listData.Add(data);
                    }
                }
            }
        }

        WriteCsvFile(listData, sDirPath, @"\output.csv");

        if (IS_GET_LOCATION)
        {
            //write file to check error line (can't get location)
            var    csv     = new StringBuilder();
            string newLine = "LineNumber,PhysicalLocation,OrganizationName,PollinatorSize,PollinatorType, LandscapeCity,LandscapeState,LandscapeZipcode," + Environment.NewLine;
            csv.Append(newLine);
            for (int i = 0; i < notConvertList.Count; i++)
            {
                ImportFields writedata = notConvertList.ElementAt(i);
                newLine = string.Format("{0}, \"{1}\",\"{2}\",\"{3}\",\"{4}\",\"{5}\",\"{6}\",\"{7}\",{8}",
                                        writedata.LineNumber,
                                        writedata.PhysicalLocation,
                                        writedata.OrganizationName,
                                        writedata.PollinatorSize,
                                        writedata.PollinatorType,
                                        writedata.LandscapeCity,
                                        writedata.LandscapeState,
                                        writedata.LandscapeZipcode,
                                        Environment.NewLine);
                csv.Append(newLine);
            }

            File.WriteAllText(sDirPath + @"\output_error.csv", csv.ToString());
        }

        return(listData);
    }
    //2.Convert dữ liệu thật từ hơn 600 bản ghi của hệ thống cũ.
    protected void btnImportOld_Click(object sender, EventArgs e)
    {
        // try
        //  {
        if (!FileUpload1.HasFile || !FileUpload2.HasFile)
        {
            return;
        }

        //Upload file to server
        string uploadFolder = System.Configuration.ConfigurationManager.AppSettings["FolderPath"];
        string sDirPath     = Request.PhysicalApplicationPath + uploadFolder;
        string path1        = sDirPath + "\\" + FileUpload1.FileName;

        FileUpload1.SaveAs(path1);

        string path2 = sDirPath + "\\" + FileUpload2.FileName;

        FileUpload2.SaveAs(path2);

        string[] lines1 = File.ReadAllLines(path1);

        // Parse content
        string content2 = File.ReadAllText(path2);

        string[] stringSeparators = new string[] { "\r\n" };
        string[] lines2           = content2.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries);

        // string[] lines2 = File.ReadAllLines(path2);
        File.Delete(path1);
        File.Delete(path2);

        ImportFields data;

        List <ImportFields> listData1 = new List <ImportFields>();
        int numRecord = lines1.Length;

        if (numRecord > 662)
        {
            numRecord = 662;
        }

        for (int i = 1; i < numRecord; i++)
        {
            data = new ImportFields();
            string[] values = ImportExportUltility.GetCsvRecord(lines1[i]);
            if (values.Length > 12)
            {
                data.FirstName        = values[0].Trim();
                data.PollinatorSize   = Int32.Parse(values[2].Trim());
                data.PollinatorType   = Int32.Parse(values[3].Trim());
                data.LandscapeCity    = values[5].Trim();
                data.LandscapeCountry = values[6].Trim();
                if (data.LandscapeCountry == "US")
                {
                    data.LandscapeCountry = "USA";
                }
                else if (data.LandscapeCountry == "BR")
                {
                    data.LandscapeCountry = "BRA";
                }
                data.PhotoUrl  = values[9].Trim();
                data.Latitude  = double.Parse(values[10].Trim());
                data.Longitude = double.Parse(values[11].Trim());
                data.Premium   = 0;
                listData1.Add(data);
            }
        }

        var listData1D = listData1.GroupBy(d => new
        {
            d.FirstName,
            d.PollinatorSize,
            d.PollinatorType,
            d.LandscapeCity,
            d.PhotoUrl,
            //  d.Latitude,
            //  d.Longitude,
            d.Premium,
        }).Select(group => group.First()).ToList();


        List <ImportFields> listData2 = new List <ImportFields>();

        numRecord = lines2.Length;
        for (int i = 1; i < numRecord; i++)
        {
            data = new ImportFields();
            string[] values = ImportExportUltility.GetCsvRecord(lines2[i]);
            //{
            // if (values.Length > 8 && !string.IsNullOrEmpty(values[1]))
            data.FirstName        = values[0].Trim();
            data.OrganizationName = values[1].Trim();
            data.Email            = values[2].Trim();
            data.LandscapeCity    = values[3].Trim();
            data.LandscapeState   = values[4].Trim();
            data.LandscapeCountry = values[5].Trim();
            if (data.LandscapeCountry == "Brazil")
            {
                data.LandscapeCountry = "BRA";
            }
            else if (data.LandscapeCountry == "Canada")
            {
                data.LandscapeCountry = "CA";
            }
            else if (data.LandscapeCountry == "France")
            {
                data.LandscapeCountry = "FR";
            }

            data.LandscapeZipcode = values[6].Trim();
            data.LandscapeStreet  = values[7].Trim();

            if (values[9].Contains("Small planter"))
            {
                data.PollinatorSize = 1;
            }
            else if (values[9].Contains("Small garden"))
            {
                data.PollinatorSize = 2;
            }
            else if (values[9].Contains("Large garden"))
            {
                data.PollinatorSize = 3;
            }
            else if (values[9].Contains("Small Yard"))
            {
                data.PollinatorSize = 4;
            }
            else if (values[9].Contains("Medium Yard"))
            {
                data.PollinatorSize = 5;
            }
            else if (values[9].Contains("Large Yard"))
            {
                data.PollinatorSize = 6;
            }
            else if (values[9].Contains("Large Filed"))
            {
                data.PollinatorSize = 8;
            }
            else if (values[9].Contains("Filed"))
            {
                data.PollinatorSize = 7;
            }
            else
            {
                data.PollinatorSize = 9;
            }
            //  data.PhotoUrl = values[10];
            data.PollinatorType = 0;    //temp set  because no data
            listData2.Add(data);
            // }
        }

        var listData2D = listData2.GroupBy(d => new
        {
            d.FirstName,
            d.OrganizationName,
            d.Email,
            d.LandscapeCity,
            d.LandscapeState,
            d.LandscapeZipcode,
            d.LandscapeCountry,
            d.PollinatorSize
        }).Select(group => group.First()).ToList();

        var mergelist = (from pi1 in listData2D
                         join pi2 in listData1D
                         on new { pi1.FirstName, pi1.LandscapeCity, pi1.LandscapeCountry } equals new { pi2.FirstName, pi2.LandscapeCity, pi2.LandscapeCountry }
                         into ords
                         from pi2 in ords.DefaultIfEmpty()
                         // from pi2 in listData2
                         //  where pi1.FirstName == pi2.FirstName
                         select new ImportFields
        {
            FirstName = pi1.FirstName,
            Email = pi1.Email,
            OrganizationName = pi1.OrganizationName,
            PhotoUrl = pi1.PhotoUrl,
            LandscapeStreet = pi1.LandscapeStreet,
            LandscapeCity = pi1.LandscapeCity,
            LandscapeState = pi1.LandscapeState,
            LandscapeCountry = pi1.LandscapeCountry,
            LandscapeZipcode = pi1.LandscapeZipcode,

            PollinatorSize = pi1.PollinatorSize,
            PollinatorType = pi2 != null ? pi2.PollinatorType : pi1.PollinatorType,

            Premium = pi1.Premium,
            Latitude = pi2 != null ? pi2.Latitude : null,
            Longitude = pi2 != null ? pi2.Longitude : null,
        }
                         ).ToList();

        /*   var mergelistD = mergelist.GroupBy(d => new
         * {
         *     d.FirstName,
         *     d.OrganizationName,
         *     d.LandscapeCity,
         *     d.LandscapeState,
         *     d.LandscapeZipcode,
         *     d.PollinatorSize,
         *     d.PollinatorType,
         *    // d.PhotoUrl,
         *     d.Premium,
         *     d.Latitude,
         *     d.Longitude,
         * })
         * .Select(group => group.First()).ToList();*/

        WriteCsvFile(listData1D, sDirPath, @"\file1.csv");
        WriteCsvFile(listData2D, sDirPath, @"\file2.csv");
        WriteCsvFile(mergelist, sDirPath, @"\mergefile.csv");
        //  WriteCsvFile(mergelistD, sDirPath, @"\mergefileD.csv");
        if (IS_GET_LOCATION)
        {
            mergelist = GetLocationForOldData(mergelist);
            WriteCsvFile(mergelist, sDirPath, @"\mergefile2.csv");
        }

        WriteDB(mergelist, "OldSystem");

        GoToAlertMessage(panelSuccessMessage);

        /* }
         * catch (Exception ex)
         * {
         *   Pollinator.Common.Logger.Error("Error occured at " + typeof(Admin_ImportData).Name + ".btnImportOld_Click(). Exception:", ex);
         *   GoToAlertMessage(panelErrorMessage);
         * }*/
    }
    protected void btnImportDemo_Click(object sender, EventArgs e)
    {
        if (!fileDemo.HasFile)
        {
            return;
        }

        //   try
        // {
        List <ImportFields> listData = new List <ImportFields>();

        //Upload file to server
        string uploadFolder = System.Configuration.ConfigurationManager.AppSettings["FolderPath"];
        string sDirPath     = Request.PhysicalApplicationPath + uploadFolder;
        string sfilePath    = sDirPath + "\\" + fileDemo.FileName;

        if (!File.Exists(sfilePath))
        {
            fileDemo.SaveAs(sfilePath);
        }

        if (!fileDemo.FileName.Contains("outputfull"))    //not parse yet, pasrse data
        {
            listData = ParseDemoInfo(sfilePath, sDirPath);
        }
        else    //has parse, just read parsed data
        {
            string[]     lines     = File.ReadAllLines(sfilePath);
            int          numRecord = lines.Length;
            ImportFields data;

            for (int i = 1; i < numRecord; i++)
            {
                data = new ImportFields();
                string[] values = ImportExportUltility.GetCsvRecord(lines[i]);
                if (values.Length > 11)
                {
                    data.FirstName        = values[0].Trim();
                    data.OrganizationName = values[1].Trim();
                    data.PollinatorSize   = Int32.Parse(values[3].Trim());
                    data.PollinatorType   = Int32.Parse(values[4].Trim());
                    data.LandscapeStreet  = values[5].Trim();
                    data.LandscapeCity    = values[6].Trim();
                    data.LandscapeState   = values[7].Trim();
                    data.LandscapeCountry = values[8].Trim();
                    data.LandscapeZipcode = values[9].Trim();
                    data.PhotoUrl         = values[10].Trim();
                    data.Latitude         = double.Parse(values[11].Trim());
                    data.Longitude        = double.Parse(values[12].Trim());
                    data.FuzyLocation     = bool.Parse(values[13].Trim());
                    data.Premium          = byte.Parse(values[14].Trim());
                    if (values.Length > 15)
                    {
                        //  data.RowId = int.Parse(values[12]);
                        data.UserId = values[15];
                    }
                    listData.Add(data);
                }
            }
        }

        WriteDB(listData, "Demo");

        GoToAlertMessage(panelSuccessMessage);

        /* }
         * catch (Exception ex)
         * {
         *   Pollinator.Common.Logger.Error("Error occured at " + typeof(Admin_DataMigration).Name + "btnImportDemo_Click(). Exception:", ex);
         *   GoToAlertMessage(panelErrorMessage);
         * }*/
    }