235 lines
10 KiB
C#
235 lines
10 KiB
C#
using MergeCMInpro.Business;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using NLog;
|
|
using System.Linq;
|
|
using System.IO;
|
|
|
|
namespace MergeCMInpro.Data
|
|
{
|
|
public static class DataOperations
|
|
{
|
|
private static readonly Logger _logger = NLog.LogManager.GetCurrentClassLogger();
|
|
|
|
public static string conString = string.Empty;
|
|
public static string kanalAktePath = string.Empty;
|
|
public static string csvPath = string.Empty;
|
|
|
|
public static List<string> vorgängeInpro = new List<string>();
|
|
public static List<string> vorgängeCM = new List<string>();
|
|
|
|
public static List<string> vorgängeStandort = new List<string>();
|
|
|
|
public static string GenerateQuery(string az)
|
|
{
|
|
string sqlQuery = "SELECT "
|
|
+ "INPROP.PMGTVVORGANG.VORGANGID, "
|
|
+ "INPROP.PMGTVVORGANG.VORGANGDEFID, "
|
|
+ "INPROP.PMVBCHECKLIST.CHECKLISTID, "
|
|
+ "INPROP.PMVBCHECKLIST.DESCRIPTION, "
|
|
+ "INPROP.PMGTVVORGANG.STRASSE1ID, "
|
|
+ "INPROP.PMGTVVORGANG.STRASSE1, "
|
|
+ "INPROP.PMGTVVORGANG.HAUSNUMMER1, "
|
|
+ "INPROP.PMGTVVORGANG.HSNRVON, "
|
|
+ "INPROP.PMGTVVORGANG.HSNRVONZUSATZ, "
|
|
+ "INPROP.PMGTVVORGANG.HSNRBIS, "
|
|
+ "INPROP.PMGTVVORGANG.HSNRBISZUSATZ, "
|
|
+ "INPROP.PMGTVVORGANG.STRASSE2, "
|
|
+ "INPROP.PMGTVVORGANG.HAUSNUMMER2, "
|
|
+ "INPROP.PMGTVVORGANG.DATUMEINGANG, "
|
|
+ "INPROP.PMGTVVORGANG.DATUMABSCHLUSS "
|
|
+ "FROM INPROP.PMGTVVORGANG "
|
|
+ "INNER JOIN INPROP.PMVBCHECKLIST ON INPROP.PMGTVVORGANG.CHECKID = INPROP.PMVBCHECKLIST.CHECKLISTID "
|
|
+ "WHERE INPROP.PMGTVVORGANG.VORGANGID='" + az + "'";
|
|
return sqlQuery;
|
|
}
|
|
|
|
private static string KanalakteQueryForStrasseID(string strasse)
|
|
{
|
|
string sqlQuery = "SELECT "
|
|
+ "INPROP.PMGTVSTRASSE.BEZEICHNUNG, "
|
|
+ "INPROP.PMGTVSTRASSE.STRASSENNR "
|
|
+ "FROM INPROP.PMGTVSTRASSE "
|
|
+ "WHERE INPROP.PMGTVSTRASSE.BEZEICHNUNG='" + strasse.TrimEnd() + "'";
|
|
return sqlQuery;
|
|
}
|
|
|
|
|
|
static Tuple<VorgangCM, VorgangInpro> FillVorgangObjects(Oracle.ManagedDataAccess.Client.OracleConnection con, Oracle.ManagedDataAccess.Client.OracleCommand cmd, Vorgang v)
|
|
{
|
|
con.Open();
|
|
using (Oracle.ManagedDataAccess.Client.OracleDataReader reader = cmd.ExecuteReader())
|
|
{
|
|
VorgangInpro vorgangInpro = new VorgangInpro();
|
|
VorgangCM vorgangCM = new VorgangCM();
|
|
|
|
while (reader.Read())
|
|
{
|
|
vorgangInpro.Checkliste = reader.GetString(2);
|
|
v.VorgangsDefinition = reader.GetString(1);
|
|
vorgangCM.BeschreibungVorgang = reader.GetString(3);
|
|
var tempDate = reader.GetValue(13).ToString();
|
|
if (tempDate == "null" || tempDate.Equals(string.Empty))
|
|
{
|
|
vorgangInpro.Eingangsdatum = new DateTime(1900, 1, 1);
|
|
_logger.Error("Wrong date " + v.Aktenzeichen);
|
|
}
|
|
else
|
|
{
|
|
vorgangInpro.Eingangsdatum = Convert.ToDateTime(tempDate);
|
|
}
|
|
tempDate = reader.GetValue(14).ToString();
|
|
if (tempDate == "null" || tempDate.Equals(string.Empty))
|
|
{
|
|
vorgangInpro.Enddatum = new DateTime(1900, 1, 1);
|
|
vorgangCM.Enddatum = vorgangInpro.Enddatum;
|
|
_logger.Error("Wrong date " + v.Aktenzeichen);
|
|
}
|
|
else
|
|
{
|
|
vorgangInpro.Enddatum = Convert.ToDateTime(tempDate);
|
|
vorgangCM.Enddatum = vorgangInpro.Enddatum;
|
|
}
|
|
var strasseId = reader.GetValue(4);
|
|
if (strasseId.ToString() == "")
|
|
{
|
|
vorgangInpro.IdStrasse = "null";
|
|
_logger.Error("No ID for Street: " + v.Strasse1);
|
|
}
|
|
else
|
|
{
|
|
vorgangInpro.IdStrasse = strasseId.ToString();
|
|
}
|
|
v.Strasse1 = reader.GetValue(5).ToString();
|
|
v.Hausnummer1 = reader.GetValue(6).ToString();
|
|
|
|
vorgangInpro.Hausnummer1Von = reader.GetValue(7).ToString();
|
|
vorgangInpro.HsNrVonZusatz = reader.GetValue(8).ToString();
|
|
vorgangInpro.Hausnummer1Bis = reader.GetValue(9).ToString();
|
|
vorgangInpro.HsNrBisZusatz = reader.GetValue(10).ToString();
|
|
v.Strasse2 = reader.GetValue(11).ToString();
|
|
v.Hausnummer2 = reader.GetValue(12).ToString();
|
|
}
|
|
return new Tuple<VorgangCM, VorgangInpro>(vorgangCM, vorgangInpro);
|
|
}
|
|
}
|
|
|
|
internal static Tuple<VorgangCM, VorgangInpro> FillVorgangObjectsKanalakte(Vorgang v)
|
|
{
|
|
VorgangInpro vorgangInpro = new VorgangInpro();
|
|
VorgangCM vorgangCM = new VorgangCM();
|
|
|
|
vorgangInpro.Checkliste = "0000000198";
|
|
v.VorgangsDefinition = "AA";
|
|
vorgangCM.BeschreibungVorgang = "Kanalakte";
|
|
|
|
vorgangInpro.Eingangsdatum = DateTime.Parse(ExcelReader.ReadExcel(kanalAktePath, v.Aktenzeichen));
|
|
vorgangInpro.Enddatum = DateTime.Parse(ExcelReader.ReadExcel(kanalAktePath, v.Aktenzeichen));
|
|
|
|
vorgangCM.Enddatum = vorgangInpro.Enddatum;
|
|
//_logger.Error("Wrong date " + v.Aktenzeichen);
|
|
|
|
#region Strasse
|
|
using (Oracle.ManagedDataAccess.Client.OracleConnection oracle = new Oracle.ManagedDataAccess.Client.OracleConnection())
|
|
{
|
|
oracle.ConnectionString = conString;
|
|
|
|
string queryStrasse = KanalakteQueryForStrasseID(v.Strasse1);
|
|
oracle.Open();
|
|
|
|
using (Oracle.ManagedDataAccess.Client.OracleCommand com = new Oracle.ManagedDataAccess.Client.OracleCommand(queryStrasse, oracle))
|
|
{
|
|
using (Oracle.ManagedDataAccess.Client.OracleDataReader reader = com.ExecuteReader())
|
|
{
|
|
while (reader.Read())
|
|
{
|
|
var strasseId = reader.GetValue(1).ToString();
|
|
if (strasseId.ToString() == "")
|
|
{
|
|
vorgangInpro.IdStrasse = "null";
|
|
_logger.Error("No ID for Street: " + v.Strasse1);
|
|
}
|
|
else
|
|
{
|
|
vorgangInpro.Strasse1 = reader.GetValue(0).ToString();
|
|
vorgangInpro.IdStrasse = strasseId.ToString();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
//TODO: Hausnummer muss gesplittet werden
|
|
vorgangInpro.SplittedHausnummerZusatz(v);
|
|
return new Tuple<VorgangCM, VorgangInpro>(vorgangCM, vorgangInpro);
|
|
}
|
|
|
|
#region Extract Strassen
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
public static void ConnectAndExecute(Vorgang v, string archivNetPath)
|
|
{
|
|
Tuple<VorgangCM, VorgangInpro> tuple;
|
|
try
|
|
{
|
|
#region Kanalakten
|
|
if (v.Aktenzeichen.StartsWith("70/"))
|
|
{
|
|
tuple = FillVorgangObjectsKanalakte(v);
|
|
|
|
//CM
|
|
vorgängeCM.Add(tuple.Item1.GenerateVorgang(v));
|
|
|
|
//Inpro
|
|
vorgängeInpro.Add(tuple.Item2.GenerateVorgang(v));
|
|
|
|
//Copy PDF to Destination on NetShare
|
|
var tmp = FileOperations.ExtractFilePath(v.AbsoluteFilePath);
|
|
var destFolder = string.Concat("pdf", tmp.ElementAt(5), " ", tmp.ElementAt(0), " bis ", tmp.ElementAt(2));
|
|
FileOperations.CopySourcePdfFileToDestination(v.AbsoluteFilePath, destFolder, string.Concat(v.FameId, ".pdf"), archivNetPath);
|
|
return;
|
|
}
|
|
#endregion
|
|
|
|
using (Oracle.ManagedDataAccess.Client.OracleConnection oracle = new Oracle.ManagedDataAccess.Client.OracleConnection())
|
|
{
|
|
oracle.ConnectionString = conString;
|
|
|
|
string sqlQuery = GenerateQuery(v.Aktenzeichen);
|
|
|
|
using (Oracle.ManagedDataAccess.Client.OracleCommand com = new Oracle.ManagedDataAccess.Client.OracleCommand(sqlQuery, oracle))
|
|
{
|
|
//Erstelle Inpro und CM-Objekt
|
|
tuple = FillVorgangObjects(oracle, com, v);
|
|
|
|
//Füge CM-Objekt Liste hinzu
|
|
vorgängeCM.Add(tuple.Item1.GenerateVorgang(v));
|
|
|
|
//Für Inpro-Objekt Liste hinzu
|
|
vorgängeInpro.Add(tuple.Item2.GenerateVorgang(v));
|
|
|
|
//Standort
|
|
var vStandort = new VorgangStandort(csvPath);
|
|
vorgängeStandort.Add(vStandort.GenerateVorgang(v));
|
|
|
|
//Copy PDF to Destination on NetShare
|
|
var tmp = FileOperations.ExtractFilePath(v.AbsoluteFilePath);
|
|
var destFolder = string.Concat("pdf", tmp.ElementAt(5), " ", tmp.ElementAt(0), " bis ", tmp.ElementAt(2));
|
|
FileOperations.CopySourcePdfFileToDestination(v.AbsoluteFilePath, destFolder, string.Concat(v.FameId, ".pdf"), archivNetPath);
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Console.WriteLine("Error {0}:{1}", v.Aktenzeichen, ex.Message);
|
|
_logger.Error(ex.Message + " " + v.Aktenzeichen);
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|