public async Task <List <string> > ImportIntezmenyekFromExcel(Stream fileStream) { List <string> log = new List <string>(); using (TextFieldParser csvParser = new TextFieldParser("F:\\Downloads\\Mintaadatbázis50rekordos.csv", Encoding.UTF8)) { csvParser.SetDelimiters(new string[] { "," }); //tényleges adatig üres olvasás var firstfield = csvParser.ReadFields().First(); int i = 1; while (firstfield != "Intézmény") { i++; firstfield = csvParser.ReadFields().First(); if (i >= 30) { throw new ArgumentException("A fájl nem megfelelően lett tagolva (fejléc hiányzik)"); } } string[] fields; string Intezmenynev; int Alapitas; int Megszunes = 0; string Helyszin; int Nyitas; int Koltozes = 0; string Gps; string Tipus; string IntezmenyVezetok; string Leiras; string Kepek; string Video; string Hivatkozasok; string Social; while (!csvParser.EndOfData) { i++; Intezmenynev = ""; Alapitas = 0; Megszunes = 0; Helyszin = ""; Nyitas = 0; Koltozes = 0; Gps = ""; Tipus = ""; IntezmenyVezetok = ""; Leiras = ""; Kepek = ""; Video = ""; Hivatkozasok = ""; Social = ""; fields = csvParser.ReadFields(); Intezmenynev = fields[0]; if (String.IsNullOrEmpty(Intezmenynev)) { log.Add($"Intézménynév nem lehet üres. {i}. sor"); continue; } if (!int.TryParse(fields[1], out Alapitas)) { log.Add($"Alapitás nem szám( {fields[1]} ). {i}. sor"); continue; } if (!String.IsNullOrEmpty(fields[2]) && !int.TryParse(fields[2], out Megszunes)) { log.Add($"Megszunes nem szám( {fields[2]} ). {i}. sor"); continue; } Helyszin = fields[3]; if (String.IsNullOrEmpty(Helyszin)) { log.Add($"Helyszín nem lehet üres. {i}. sor"); continue; } if (!int.TryParse(fields[4], out Nyitas)) { log.Add($"Nyitas nem szám( {fields[4]} ). {i}. sor"); continue; } if (!String.IsNullOrEmpty(fields[5]) && !int.TryParse(fields[5], out Koltozes)) { log.Add($"Költözés nem szám( {fields[5]} ). {i}. sor"); continue; } Gps = fields[6]; if (String.IsNullOrEmpty(Gps)) { log.Add($"Gps nem lehet üres. {i}. sor"); continue; } string[] gpsSplit = Gps.Split(","); if (gpsSplit.Length != 2) { log.Add($"Rossz Gps formátum. {i}. sor"); continue; } double latitude; double longitude; try { double.TryParse(gpsSplit[0], out latitude); } catch { log.Add($"Latitude nem szám {gpsSplit[0]}. {i}. sor"); continue; } try { double.TryParse(gpsSplit[1], out longitude); } catch { log.Add($"Latitude nem szám {gpsSplit[1]}. {i}. sor"); continue; } Tipus = fields[7]; if (String.IsNullOrEmpty(Tipus)) { log.Add($"Tipus nem lehet üres. {i}. sor"); continue; } if (GetIntezmenyTipusFromString(Tipus) == null) { log.Add($"Tipust nem sikerult beolvasni( {Tipus} ). {i}. sor"); continue; } IntezmenyVezetok = fields[8]; Leiras = fields[9]; Kepek = fields[10]; Video = fields[11]; Hivatkozasok = fields[12]; Social = fields[13]; var intezmeny = await context.Intezmenyek .Include(intezmeny => intezmeny.IntezmenyVezetok) .Where(intezmeny => intezmeny.Nev.Equals(Intezmenynev)) .FirstOrDefaultAsync(); var intezmenyVezetok = new List <IntezmenyVezeto>(); if (!String.IsNullOrEmpty(IntezmenyVezetok)) { foreach (var intezmenyvezSor in IntezmenyVezetok.Split('\n')) { var intezmenyvezSplit = intezmenyvezSor.Split(";"); string[] intezmenyvezTolIg; try { intezmenyvezTolIg = intezmenyvezSplit[1].Split("-"); } catch { log.Add($"{intezmenyvezSor} Intézmény vezető formátum hiba. {i}. sor"); continue; } int tol = 0; try { tol = int.Parse(intezmenyvezTolIg[0]); } catch { log.Add($"{intezmenyvezSplit[1]} Intézmény vezető év dátum formátum hiba. {intezmenyvezSplit[0]} kihagyva. {i}. sor"); continue; } int ig = 0; if (intezmenyvezTolIg.Length != 2) { log.Add($"{intezmenyvezSplit[1]} Intézmény vezető év dátum formátum hiba. {intezmenyvezSplit[0]} kihagyva. {i}. sor"); continue; } if (!String.IsNullOrEmpty(intezmenyvezTolIg[1])) { try { ig = int.Parse(intezmenyvezTolIg[1]); } catch { log.Add($"{intezmenyvezTolIg[1]} Intézmény vezető év dátum formátum hiba. {intezmenyvezSplit[0]} kihagyva. {i}. sor"); continue; } } intezmenyVezetok.Add(new IntezmenyVezeto { Nev = intezmenyvezSplit[0], Tol = tol, Ig = ig == 0 ? null : (int?)ig, }); } } if (intezmeny == null) { intezmeny = new Intezmeny { Nev = Intezmenynev, Alapitas = Alapitas, Megszunes = Megszunes == 0 ? null : (int?)Megszunes, Leiras = Leiras, Social = Social, Tipus = (IntezmenyTipus)GetIntezmenyTipusFromString(Tipus), Videok = Video, Link = Hivatkozasok, IntezmenyHelyszinek = new List <IntezmenyHelyszin>(), IntezmenyVezetok = new List <IntezmenyVezeto>(), }; context.Intezmenyek.Add(intezmeny); } foreach (var intezmenyvezeto in intezmenyVezetok) { if (intezmeny.IntezmenyVezetok.Where(iv => iv.Nev.Equals(intezmenyvezeto.Nev) && iv.Tol == intezmenyvezeto.Tol).FirstOrDefault() == null) { intezmenyvezeto.Intezmeny = intezmeny; context.IntezmenyVezetok.Add(intezmenyvezeto); } } var intezemenyHelyszin = context.IntezmenyHelyszinek.Where(ih => ih.Helyszin.Equals(Helyszin) && ih.Nyitas == Nyitas).FirstOrDefault(); if (intezemenyHelyszin == null) { intezemenyHelyszin = new IntezmenyHelyszin { Helyszin = Helyszin, Intezmeny = intezmeny, Nyitas = Nyitas, Koltozes = Koltozes == 0 ? null : (int?)Koltozes, Latitude = latitude, Longitude = longitude, }; context.IntezmenyHelyszinek.Add(intezemenyHelyszin); } await context.SaveChangesAsync(); } } return(log); }