160 lines
5.7 KiB
C#
160 lines
5.7 KiB
C#
using DevExpress.Pdf;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Text.RegularExpressions;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace BeWo.Service.Import.AvisImport
|
|
{
|
|
public class LvrAvisKlientGesamt
|
|
{
|
|
public String GesamtText { get; set; }
|
|
public String Klient { get; set; }
|
|
public String Aktenzeichen { get; set; }
|
|
public String Sachbearbeiter { get; set; }
|
|
|
|
public LvrAvisKlientGesamt(String aktenzeichen)
|
|
{
|
|
this.Aktenzeichen = aktenzeichen;
|
|
}
|
|
|
|
public List<LvrAvisMonatGesamt> CreateMonatsBereiche()
|
|
{
|
|
CorrectText();
|
|
|
|
var bereiche = new List<LvrAvisMonatGesamt>();
|
|
|
|
var lines = GesamtText.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
|
|
|
|
if (Aktenzeichen.Contains("2100235109"))
|
|
{
|
|
int test = 0;
|
|
}
|
|
|
|
int index = LeseKlientAktenzeichenUndSachbearbeiter(lines);
|
|
|
|
|
|
while (index < lines.Length)
|
|
{
|
|
var datumTa = LvrAvisTextAbschnitt.LeseBisDatum(lines, index, false);
|
|
if (datumTa.Success)
|
|
{
|
|
index = datumTa.ZeilenIndex;
|
|
var line = lines[index];
|
|
|
|
StringBuilder textBereich = new StringBuilder();
|
|
|
|
var monatTa = LvrAvisTextAbschnitt.LeseBisText(lines, index, "Monat:");
|
|
if (monatTa.Success)
|
|
{
|
|
textBereich.Append(monatTa.Text);
|
|
var bereich = new LvrAvisMonatGesamt(this);
|
|
|
|
bereich.GesamtText = textBereich.ToString();
|
|
bereiche.Add(bereich);
|
|
|
|
index = monatTa.ZeilenIndex;
|
|
}
|
|
}
|
|
index++;
|
|
}
|
|
|
|
return bereiche;
|
|
}
|
|
|
|
private void CorrectText()
|
|
{
|
|
//Bei der OCR Texterkennung wird das € Zeichen manchmal als © erkannt. Hier wird das korrigiert
|
|
if (!String.IsNullOrEmpty(GesamtText))
|
|
{
|
|
GesamtText = GesamtText.Replace("©", "€");
|
|
}
|
|
}
|
|
|
|
private int LeseKlientAktenzeichenUndSachbearbeiter(string[] lines)
|
|
{
|
|
int index = 0;
|
|
|
|
|
|
var ta = LvrAvisTextAbschnitt.LeseBisText(lines, index, Aktenzeichen);
|
|
index = ta.ZeilenIndex;
|
|
//Prüfe ob zuerst der Sachbearbeiter oder der Klientenname im Text steht. Der Sachbearbeiter beginnt mit dem Text "Sachbearbeiter:", der Klient endet mit dem Text "Aktenzeichen"
|
|
var sbTest = LvrAvisTextAbschnitt.LeseBisText(lines, index, "Sachbearbeiter");
|
|
var azTest = LvrAvisTextAbschnitt.LeseBisText(lines, index, "Aktenzeichen");
|
|
|
|
if (sbTest.Success && azTest.Success)
|
|
{
|
|
String klientenZeile = "";
|
|
String sbZeile = "";
|
|
|
|
if (sbTest.ZeilenIndex > azTest.ZeilenIndex) // Sachbearbeiter hinter Aktenzeichen bzw. Klientenname
|
|
{
|
|
index = azTest.ZeilenIndex + 1;
|
|
klientenZeile = azTest.Text;
|
|
|
|
//Sachbearbeiter steht hinter Klient
|
|
ta = LvrAvisTextAbschnitt.LeseBisDatum(lines, index, false);
|
|
sbZeile = ta.Text;
|
|
}
|
|
else
|
|
{
|
|
index = sbTest.ZeilenIndex + 1;
|
|
sbZeile = sbTest.Text;
|
|
//Suche Klient hinter Sachbearbeiter
|
|
ta = LvrAvisTextAbschnitt.LeseBisDatum(lines, index, false);
|
|
klientenZeile = ta.Text;
|
|
}
|
|
|
|
|
|
|
|
this.Klient = klientenZeile.Replace("GP:", "").Replace(Aktenzeichen, "").Replace("Ihr Aktenzeichen", "").Replace("Sachbearbeiter", "").Replace(":", "").Trim();
|
|
this.Sachbearbeiter = sbZeile.Replace("GP:", "").Replace(Aktenzeichen, "").Replace("Ihr Aktenzeichen", "").Replace("Sachbearbeiter", "").Replace(":", "").Trim();
|
|
|
|
if (ta.Success)
|
|
{
|
|
index = ta.ZeilenIndex;
|
|
}
|
|
if (Klient.Contains("Aktenzeichen"))
|
|
{
|
|
//Klient darf nicht den String Aktenzeichen enthalten, das ist der Fall, wenn der Text nicht das richtige Format hat
|
|
return lines.Length;
|
|
}
|
|
}
|
|
|
|
//Lese Klient. Der Klientenname steht zwischen dem Aktenzeichen und dem nächsten Text "Ihr Aktenzeichen"
|
|
|
|
|
|
// String sbZeile = "";
|
|
//if (az.Contains("Aktenzeichen"))
|
|
//{
|
|
// klientenZeile = az;
|
|
// var match = Regex.Match(az, "[0-9]+"); //Lese alle zusammenhängenden Ziffern, Leerzeichen, Sonderzeichen etc. werden nicht berücksichtigt.
|
|
// az = match.Value;
|
|
// klientenZeile = klientenZeile.Replace(az, "").Trim();
|
|
// sbZeile = lines[1];
|
|
// index = 2;
|
|
//}
|
|
//else if (lines.Length > 2)
|
|
//{
|
|
// sbZeile = lines[1];
|
|
// klientenZeile = lines[2];
|
|
// index = 3;
|
|
//}
|
|
//this.Sachbearbeiter = sbZeile.Replace("Sachbearbeiter", "").Replace(":", "").Trim();
|
|
//this.Klient = klientenZeile.Replace("Ihr Aktenzeichen", "").Replace(":", "").Trim();
|
|
|
|
|
|
|
|
return index;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
}
|