Initila commit
This commit is contained in:
234
Data/DataOperations.cs
Normal file
234
Data/DataOperations.cs
Normal file
@@ -0,0 +1,234 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user