using Hochbaustatistik.Business;
using Hochbaustatistik.Database;
using OpenQA.Selenium;
using OpenQA.Selenium.Edge;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Security;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;

namespace Hochbaustatistik.Utilities
{
    public static class FileOperations
    {
        public static List<VorgangItnrw> GenerateHochbauVorgangFromCSV(string path)
        {
            List<VorgangItnrw> hochbauListe = new List<VorgangItnrw>();

            using (StreamReader sr = new StreamReader(path, Encoding.GetEncoding("ISO-8859-1")))
            {
                while (!sr.EndOfStream)
                {
                    VorgangItnrw hochbau = new VorgangItnrw();

                    //Splitte Textzeile                    
                    string[] row = sr.ReadLine().Split(";");

                    //Falls header, mache mit nächster Iteration weiter
                    if (row[0] == "AGS")
                        continue;

                    hochbau.AGS = row[0];
                    hochbau.Identifikator = row[1];
                    var tempVal = row[2];

                    //Refactored analog SonarQube
                    var splitted = tempVal.Split(' ').FirstOrDefault();
                    if(splitted == null)
                    {
                        throw new ArgumentException($"Fehler");
                    }

                    hochbau.BauscheinNr = splitted.Trim('_');                                     
                    hochbau.MonatGenehmigung = row[3];
                    hochbau.JahrGenehmigung = row[4];
                    hochbau.NameBauherr = row[5];
                    hochbau.Strasse = row[6];
                    hochbau.PLZ = row[7];
                    hochbau.Gemeinde = row[8];
                    hochbau.Gemeindeteil = row[9];
                    
                    hochbau.Bemerkungen = row[11];
                    hochbauListe.Add(hochbau);
                }
            }
            return hochbauListe;
        }                    
    }
}
