You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

427 lines
25 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Net.Mail;
using System.Text;
using System.Threading.Tasks;
using Database;
using Model;
using Newtonsoft.Json;
using static System.Net.WebRequestMethods;
namespace zz_api_doccreate_demo
{
internal class Program
{
static string connectionstring = @"data source=shu01\shu00;initial catalog=edoka_dms;packet size=4096;user id=sa;password=*shu29";
static string unterschriftenpath = @"E:\Software-Projekte\OnDoc\Unterschriften\";
static void Main(string[] args)
{
bool hasattachment = false;
string result = System.IO.File.ReadAllText(@"E:\Software-Projekte\OnDoc\APIJson\PAKET.json");
DokumentCreate paket = new DokumentCreate();
paket = JsonConvert.DeserializeObject<DokumentCreate>(result);
string CheckResult = "";
CheckResult = CreatePaket_Verify(ref paket);
if (CheckResult != "")
{
Console.WriteLine(CheckResult);
}
foreach (APIDokument dokument in paket.Dokumente)
{
if (dokument.PDFDoc != "" && dokument.PDFDoc != null)
{
string gid = "ATT" + RandomString(19);
dokument.DokumentID = gid;
hasattachment = true;
}
else
{
dokument.DokumentID = create_paketdoc(dokument, paket, "");
}
}
}
static string CreatePaket_Verify(ref DokumentCreate paket)
{
try
{
int i = 0;
foreach (APIDokument dokument in paket.Dokumente)
{
i = i + 1;
if (dokument.PDFDoc != null && dokument.PDFDoc.Length > 0)
{
if (i == 1) { return "Ein Anhang (PDF-Dokument) kann nicht als erstes Dokument bereit gestellt werden."; }
if (!(ParamCheck("partnernr", dokument.Partnernr.ToString()))) { return "Partnernr " + dokument.Partnernr + " ist ungültig"; }
if (dokument.VorlagenTypID != "0") { return "Vorlagentyp muss bei PDF-Dokumenten '0' sein"; }
break;
}
if (!(ParamCheck("partnernr", dokument.Partnernr.ToString()))) { return "Partnernr " + dokument.Partnernr + " ist ungültig"; }
if (dokument.VorlagenTypID == "" && dokument.PDFDoc == "") { return "Vorlagentyp emptry und PDFDoc empty"; }
if (!(ParamCheck("dokumenttyp", dokument.VorlagenTypID))) { return "Vorlagentyp " + dokument.VorlagenTypID + " ist ungültig"; }
if (!(ParamCheck("tgnr", dokument.TGNrErsteller))) { return "TGNr-Ersteller " + dokument.TGNrErsteller + " ist ungültig"; }
if (!(ParamCheck("tgnr", dokument.TGNrVerantwortlich))) { return "TGNr-Verantwortlich " + dokument.TGNrVerantwortlich + " ist ungültig"; }
if (!(ParamCheck("tgnr", dokument.TGNrUnterschriftLinks))) { return "TGNr-Unterschriftlinks " + dokument.TGNrUnterschriftLinks + " ist ungültig"; }
if (!(ParamCheck("tgnr", dokument.TGNrUnterschriftRechts))) { return "TGNr-Unterschriftrechts " + dokument.TGNrUnterschriftRechts + " ist ungültig"; }
if (!(ParamCheck("yesno", dokument.FaksimileUnterschrift))) { return "Parameter Faxsimile " + dokument.FaksimileUnterschrift + " ist ungültig"; }
if (!(ParamCheck("yesno", dokument.OhneUnterschrift))) { return "Parameter Form ohne Unterschrift " + dokument.OhneUnterschrift + " ist ungültig"; }
if (!(ParamCheck("yesno", dokument.PrintLogo))) { return "Parameter PrintLogo " + dokument.PrintLogo + " ist ungültig"; }
if (!(ParamCheck("yesno", dokument.UnterschriftLinksGeprueft))) { return "Parameter UnterschriftLinksGeprueft" + dokument.UnterschriftLinksGeprueft + " ist ungültig"; }
if (!(ParamCheck("yesno", dokument.UnterschriftRechtsGeprueft))) { return "Parameter UnterschriftRechtsGeprueft" + dokument.UnterschriftRechtsGeprueft + " ist ungültig"; }
if (dokument.TGNrUnterschriftLinks.ToString() == "") { dokument.TGNrUnterschriftLinks = "-1"; }
if (dokument.TGNrUnterschriftRechts.ToString() == "") { dokument.TGNrUnterschriftRechts = "-1"; }
if (dokument.FaksimileUnterschrift.ToUpper() == "YES")
{
if (dokument.TGNrUnterschriftLinks.ToString() == "-1") { return "Faksimile Unterschrift benötigt mit den Parameter TGUnterschriftLinks"; }
if (dokument.TGNrUnterschriftLinks.ToString() != "")
{
//string path = System.Configuration.ConfigurationManager.AppSettings["UnterschriftPath"].ToString() + dokument.TGNrUnterschriftLinks.ToString() + ".jpg";
string path = unterschriftenpath + dokument.TGNrUnterschriftLinks.ToString() + ".jpg";
if (!System.IO.File.Exists(path)) { return "Image Unterschrift links " + dokument.TGNrUnterschriftLinks + " ist nicht vorhanden"; }
}
if (dokument.TGNrUnterschriftRechts.ToString() != "-1")
{
//string path = System.Configuration.ConfigurationManager.AppSettings["UnterschriftPath"].ToString() + dokument.TGNrUnterschriftLinks.ToString() + ".jpg";
string path = unterschriftenpath + dokument.TGNrUnterschriftLinks.ToString() + ".jpg";
if (!System.IO.File.Exists(path)) { return "Image Unterschrift rechts " + dokument.TGNrUnterschriftRechts + " ist nicht vorhanden"; }
}
}
if (paket.Versandstrasse == "Yes")
{
if (dokument.TGNrUnterschriftLinks != "" && dokument.UnterschriftLinksGeprueft != "Yes")
{
return "Versandstrasse mit ungeprüfter, linker Unterschrift ist nicht möglich";
}
if (dokument.TGNrUnterschriftRechts != "" && dokument.UnterschriftRechtsGeprueft != "Yes")
{
return "Versandstrasse mit ungeprüfter, rechter Unterschrift ist nicht möglich";
}
if (ParamCheck("doktypversandstrasse", dokument.VorlagenTypID) == false) { return "Vorlagentyp " + dokument.VorlagenTypID + " ist nicht für die Versandstrasse konfiguriert"; }
if (i == 1)
{
if (ParamCheck("firstdoc", dokument.VorlagenTypID) == false) { return "Vorlagentyp " + dokument.VorlagenTypID + " kann nicht als erstes Dokument im Paket sein"; }
}
//if (dokument.TGNrUnterschriftLinks.ToLower() != "-1" && dokument.TGNrUnterschriftRechts.ToString() != "-1") { return "Versandstrasse mit zwei Unterschriften kann nicht automatisch angesteuert werden"; }
}
}
if (!(ParamCheck("yesno", paket.Versandstrasse))) { return "Parameter Versandstrasse " + paket.Versandstrasse + " ist ungültig"; }
if (!(ParamCheck("yesno", paket.Versand_Direkt))) { return "Parameter Versand Direkt " + paket.Versand_Direkt + " ist ungültig"; }
if (!(ParamCheck("yesno", paket.Result_OnDoc))) { return "Parameter Result_OnDoc " + paket.Result_OnDoc + " ist ungültig"; }
if (!(ParamCheck("yesno", paket.Result_Sender))) { return "Parameter Result_Sender " + paket.Result_Sender + " ist ungültig"; }
if (!(ParamCheck("filetype", paket.Result_FileType))) { return "Parameter Result_Filetype " + paket.Result_FileType + " ist ungültig"; }
if (!(ParamCheck("yesno", paket.ConfirmationMail))) { return "Parameter ConfirmationMail " + paket.ConfirmationMail + " ist ungültig"; }
if (!(ParamCheck("yesno", paket.ConfirmationMail))) { return "Parameter ConfirmationMail " + paket.ConfirmationMail + " ist ungültig"; }
if (!(ParamCheck("versandoption", paket.Versand_Option))) { return "Versandoption " + paket.Versand_Option + " ist ungültig"; }
if (paket.ConfirmationMail.ToUpper() == "YES" && paket.ConfirmationMailAddress.ToString() != "") { return "E-Mailadresse für Confirmation fehlt"; }
if (paket.Versandstrasse == "Yes")
{
if (paket.Versand_Option == "") { return "Versandoption fehlt (A_Post, B1_Post, B2_Post"; }
}
return "";
}
catch (Exception ex) { return ex.Message; }
}
static bool ParamCheck(string ParamType, string ParamValue)
{
DB db = new DB(connectionstring);
try
{
switch (ParamType)
{
case "partnernr":
db.Get_Tabledata("Select count(*) from partner where nrpar00=" + ParamValue, false, true);
if (db.dsdaten.Tables[0].Rows[0][0].ToString() == "0") { return false; }
break;
case "dokumenttyp":
db.Get_Tabledata("Select count(*) from dokumenttyp where dokumenttypnr=" + ParamValue, false, true);
if (db.dsdaten.Tables[0].Rows[0][0].ToString() == "0") { return false; }
break;
case "partnerdokumenttyp":
//Prüfung Person/Doktyp BP/Doktyp
break;
case "tgcreator":
case "tgresp":
case "tgul":
case "tgur":
case "tgnr":
if (ParamType == "tgcreator" && ParamValue == "") { return false; } else { if (ParamValue == "") { return true; } };
db.Get_Tabledata("Select count(*) from mitarbeiter where tgnummer='" + ParamValue + "'", false, true);
if (db.dsdaten.Tables[0].Rows[0][0].ToString() == "0") { return false; }
break;
case "yesno":
if (ParamValue != "Yes" && ParamValue != "No" && ParamValue != "") { return false; };
break;
case "filetype":
if (ParamValue != "WORD" && ParamValue != "PDF") { return false; }
break;
case "versandoption":
if (ParamValue != "A_POST" && ParamValue != "B1_POST" && ParamValue != "B2_POST" && ParamValue != "") { return false; }
break;
case "doktypversandstrasse":
db.Get_Tabledata("Select versandstrasse_moeglich, versandstrasse_firstdoc from dokumenttyp where dokumenttypnr=" + ParamValue, false, true);
if (Convert.ToInt32(db.dsdaten.Tables[0].Rows[0][0]) == 0) { return false; }
break;
case "firstdoc":
db.Get_Tabledata("Select versandstrasse_moeglich, versandstrasse_firstdoc from dokumenttyp where dokumenttypnr=" + ParamValue, false, true);
if (Convert.ToInt32(db.dsdaten.Tables[0].Rows[0][1]) == 0) { return false; }
break;
default:
return false;
break;
}
return true;
}
catch
{
return false;
}
finally
{
db = null;
}
}
static string create_paketdoc(APIDokument dokument, DokumentCreate paket, string key)
{
//string OwnHost = System.Configuration.ConfigurationManager.AppSettings["OwnHost"].ToString();
string dokumentid = "";
clsDocData dokdata = new clsDocData();
Database.DB db = new DB(connectionstring);
db.Get_Tabledata("Select * from dokumenttyp where dokumenttypnr=" + dokument.VorlagenTypID, false, true);
System.Data.DataRow dr = db.dsdaten.Tables[0].Rows[0];
dokdata.Barcode = Convert.ToBoolean(dr["Vertrag"]) == true;
db.Get_Tabledata("Select beschreibung from physischesarchiv where physischesarchivnr = " + dr["physisches_archiv"].ToString(), false, true);
dokdata.barcode_zusatz = db.dsdaten.Tables[0].Rows[0][0].ToString();
if (dokdata.barcode_zusatz != "") { dokdata.barcode_zusatz = " " + dokdata.barcode_zusatz; }
db.Get_Tabledata("Select office_vorlagenr,kopfzeile_generieren, bcpt,bcpl, bcw, bch, bchorizontal, barcodetype, datamatrixcontent from office_vorlage where office_vorlagenr=" + dr["office_vorlagenr"].ToString(), false, true);
dokdata.VorlageNr = Convert.ToInt32(dr["office_vorlagenr"]).ToString(); ;
try
{
dokdata.Kopfzeile_generieren = false;
if (Convert.ToBoolean(db.dsdaten.Tables[0].Rows[0][1]) == true) { dokdata.Kopfzeile_generieren = true; }
}
catch { }
if (dokdata.Barcode)
{
dokdata.barcode_left = Convert.ToInt32(db.dsdaten.Tables[0].Rows[0]["bcpl"]);
dokdata.barcode_top = Convert.ToInt32(db.dsdaten.Tables[0].Rows[0]["bcpt"]);
dokdata.barcode_width = Convert.ToInt32(db.dsdaten.Tables[0].Rows[0]["bcw"]);
dokdata.barcode_height = Convert.ToInt32(db.dsdaten.Tables[0].Rows[0]["bch"]);
dokdata.barcode_horizontal = Convert.ToInt32(db.dsdaten.Tables[0].Rows[0]["bchorizontal"]);
dokdata.barcode_type = db.dsdaten.Tables[0].Rows[0]["BarcodeType"].ToString();
dokdata.barcode_content = db.dsdaten.Tables[0].Rows[0]["DatamatrixContent"].ToString();
string sql = "";
sql = "select bcpt, bcpl, bcw, bch, bchorizontal from OnDocBarcodeMpping ";
sql = sql + "where orig_bcpt = " + dokdata.barcode_top.ToString() + " and orig_bcpl=" + dokdata.barcode_left.ToString() + " ";
sql = sql + "and orig_bcw=" + dokdata.barcode_width.ToString() + " and orig_bch=" + dokdata.barcode_height.ToString();
db.Get_Tabledata(sql, false, true);
if (db.dsdaten.Tables[0].Rows.Count > 0)
{
dokdata.barcode_left = Convert.ToInt32(db.dsdaten.Tables[0].Rows[0]["bcpl"]);
dokdata.barcode_top = Convert.ToInt32(db.dsdaten.Tables[0].Rows[0]["bcpt"]);
dokdata.barcode_width = Convert.ToInt32(db.dsdaten.Tables[0].Rows[0]["bcw"]);
dokdata.barcode_height = Convert.ToInt32(db.dsdaten.Tables[0].Rows[0]["bch"]);
}
if (dokdata.barcode_type == "1")
{
DB dB = new DB(connectionstring);
dB.clear_parameter();
dB.add_parameter("@dokumentid", dokumentid);
dB.add_parameter("@DokumentidBR", "");
dB.add_parameter("@BARCODEFONTNAME", "");
dB.add_parameter("@BARCODEFONTSIZE", "");
dB.add_parameter("@BarcodeKantenlaenge", "");
dB.Get_Tabledata("sp_get_OnDoc_barcodetype_and_value", true, false);
dokdata.barcode_content = dB.dsdaten.Tables[0].Rows[0][1].ToString();
dokdata.barcode_formatn = dB.dsdaten.Tables[0].Rows[0][3].ToString();
dokdata.barcode_text = dB.dsdaten.Tables[0].Rows[0][4].ToString();
dokdata.barcode_kantenlaenge = dB.dsdaten.Tables[0].Rows[0][5].ToString();
dokdata.Zusatz_Font = dB.dsdaten.Tables[0].Rows[0][6].ToString();
dokdata.Zusatz_FontSize = Convert.ToInt32(dB.dsdaten.Tables[0].Rows[0][7]);
dokdata.barcode_width = Convert.ToInt32(dB.dsdaten.Tables[0].Rows[0][8]);
dokdata.barcode_height = Convert.ToInt32(dB.dsdaten.Tables[0].Rows[0][9]);
//dokdata.barcode_type= dB.dsdaten.Tables[0].Rows[0][3].ToString();
sql = "select bcpt, bcpl, bcw, bch, bchorizontal from OnDocBarcodeMpping ";
sql = sql + "where orig_bcpt = " + dokdata.barcode_top.ToString() + " and orig_bcpl=" + dokdata.barcode_left.ToString() + " ";
sql = sql + "and orig_bcw=" + dokdata.barcode_width.ToString() + " and orig_bch=" + dokdata.barcode_height.ToString();
dB.Get_Tabledata(sql, false, true);
if (dB.dsdaten.Tables[0].Rows.Count > 0)
{
//Logging.Logging.Debug("Barcode-Übersteuerung" + dokdata.DokumenttypNr.ToString(), "Dokumenterstellung", "");
dokdata.barcode_left = Convert.ToInt32(dB.dsdaten.Tables[0].Rows[0]["bcpl"]);
dokdata.barcode_top = Convert.ToInt32(dB.dsdaten.Tables[0].Rows[0]["bcpt"]);
dokdata.barcode_width = Convert.ToInt32(dB.dsdaten.Tables[0].Rows[0]["bcw"]);
dokdata.barcode_height = Convert.ToInt32(dB.dsdaten.Tables[0].Rows[0]["bch"]);
}
}
db.Get_Tabledata("Select * from ondoc_appparams", false, true);
dokdata.barcode_font = db.dsdaten.Tables[0].Rows[0]["barcodefont"].ToString();
dokdata.barcode_fontsize = Convert.ToInt32(db.dsdaten.Tables[0].Rows[0]["barcodefontsize"].ToString());
dokdata.Zusatz_Font = db.dsdaten.Tables[0].Rows[0]["Zusatzfont"].ToString();
dokdata.Zusatz_FontSize = Convert.ToInt32(db.dsdaten.Tables[0].Rows[0]["ZusatzfontSize"].ToString());
dokdata.barcode_textposition = db.dsdaten.Tables[0].Rows[0]["barcodetextposition"].ToString(); ;
}
Model.clsdocgendata docgendata = new Model.clsdocgendata();
DataTable dokwertlist = new DataTable();
dokwertlist = db.Get_DokumentWertList("", Convert.ToInt32(dokument.VorlagenTypID), 1);
docgendata.dokumentwerte = dokwertlist;
docgendata.partnernr = dokument.Partnernr;
docgendata.inhaberadresse = "";
docgendata.zustelladresse = "";
docgendata.dokumenttypnr = dokument.VorlagenTypID;
docgendata.unterschriftLinks = db.Get_Mitarbeiternr(dokument.TGNrUnterschriftLinks).ToString();
docgendata.unterschriftRehts = db.Get_Mitarbeiternr(dokument.TGNrUnterschriftRechts).ToString();
docgendata.verantwortlich = db.Get_Mitarbeiternr(dokument.TGNrVerantwortlich).ToString();
docgendata.ersteller = db.Get_Mitarbeiternr(dokument.TGNrErsteller).ToString();
docgendata.team = db.Get_Teamnr(docgendata.ersteller).ToString();
docgendata.digitaleunterschrift = false;
docgendata.frormularOhneUnterschrift = dokument.OhneUnterschrift == "Yes";
docgendata.zustaendigkube = db.Get_Mitarbeiternr(dokument.TGNrVerantwortlich).ToString();
docgendata.status = "-1";
docgendata.dokumentdatum = DateTime.Now.ToString("dd.MM.yyyy");
docgendata.dokumentdatum = dokument.Dokumentdatum;
docgendata.frormularOhneUnterschrift = dokument.OhneUnterschrift == "Yes";
docgendata.bezeichnung = dokument.Bezeichnung;
if (paket.Result_FileType == "WORD") { docgendata.erstellungsart = Erstellungsart.DokumentBearbeiten; } else { docgendata.erstellungsart = Erstellungsart.DokumentAlsPDF; }
if (docgendata.verantwortlich == "0") { docgendata.verantwortlich = docgendata.ersteller; }
dokdata.PartnerNr = docgendata.partnernr;
dokdata.UseEDOKA_Values = "True";
dokdata.DokumenttypNr = docgendata.dokumenttypnr;
dokdata.Unterschrift_Links = docgendata.unterschriftLinks;
if (dokdata.Unterschrift_Links == "0") { dokdata.Unterschrift_Links = "-1"; }
dokdata.Unterschrift_Rechts = docgendata.unterschriftRehts;
if (dokdata.Unterschrift_Rechts == "0") { dokdata.Unterschrift_Rechts = "-1"; }
dokdata.Verantwortlich = docgendata.verantwortlich;
dokdata.Team = docgendata.team;
dokdata.Zustaendig = docgendata.zustaendigkube;
dokdata.Zustaendig = docgendata.zustaendigkube;
dokdata.Status = docgendata.status;
dokdata.Ersteller = docgendata.ersteller;
dokdata.DokumentDatum = docgendata.dokumentdatum;
dokdata.Termin = "01.01.1900";
dokdata.Bezeichnung = docgendata.bezeichnung;
dokdata.dokumentwerte = docgendata.dokumentwerte;
//Unterschriftenprüfung
dokdata.Form_ohne_Unterschrift = docgendata.frormularOhneUnterschrift.ToString();
dokdata.approval1 = 0;
dokdata.approval2 = 0;
dokdata.approved = 0;
if (dokdata.Form_ohne_Unterschrift == "True")
{
dokdata.Unterschrift_Links = "-1";
dokdata.Unterschrift_Rechts = "-1";
}
if (dokument.FaksimileUnterschrift == "Yes")
{
dokdata.As_Faksimile = "True"; dokdata.sign = true; docgendata.digitaleunterschrift = true;
if (dokdata.Unterschrift_Links != "-1") { dokdata.approval1 = 1; }
if (dokdata.Unterschrift_Rechts != "-1") { dokdata.approval2 = 1; }
dokdata.approved = 1;
docgendata.erstellungsart = Erstellungsart.DokumentBearbeiten;
//if (dokdata.Unterschrift_Links != "-1" && dokdata.Unterschrift_Rechts != "-1")
//{
// if (dokdata.Ersteller == dokdata.Unterschrift_Links)
// {
// dokdata.approved = 1;
// }
// else
// {
// dokdata.sign = false;
// dokdata.toapprove = 0;
// dokdata.approved = 1;
// dokdata.approval1 = 1;
// dokdata.approval2 = 1;
// docgendata.erstellungsart = Erstellungsart.DokumentBearbeiten;
// }
//}
//else
//{
// docgendata.erstellungsart = Erstellungsart.DokumentBearbeiten;
// dokdata.toapprove = 1;
// dokdata.sign = true;
//}
}
dokdata.APIValues = dokument.APIValues;
dokdata.TextToReplace = dokument.TextToReplace;
if (dokument.PrintLogo == "Yes") { dokdata.PrintLogo = true; } else { dokdata.PrintLogo = false; }
if (docgendata.erstellungsart == Erstellungsart.DokumentAlsPDF) { dokdata.Result_as_PDF = "True"; } else { dokdata.Result_as_PDF = "False"; }
if (docgendata.digitaleunterschrift == true) { dokdata.As_Faksimile = "True"; } else { dokdata.As_Faksimile = "False"; }
dokumentid = db.Create_EDOKA_Doc(dokdata, false, "");
dokdata.Dokumentid = dokumentid;
//DOCGEN.Generator.DocGenerator_from_EDOKA Generator = new DOCGEN.Generator.DocGenerator_from_EDOKA(this.connectionstring, OwnHost, key.ToString());
DOCGEN.Generator.DocGenerator_from_EDOKA Generator = new DOCGEN.Generator.DocGenerator_from_EDOKA(connectionstring, "", key.ToString());
clsdok dok = new clsdok("", "", "", "");
dok = Generator.Generate_Doc_EDOKA(dokumentid, ref dokdata, false, 0, false, false);
db.Save_To_DB(dokumentid, "", dok.dokument);
dokdata = null;
docgendata = null;
db = null;
Generator = null;
dok = null;
return dokumentid;
}
static readonly Random _random = new Random();
static string RandomString(int size, bool lowerCase = false)
{
var builder = new StringBuilder(size);
// Unicode/ASCII Letters are divided into two blocks
// (Letters 6590 / 97122):
// The first group containing the uppercase letters and
// the second group containing the lowercase.
// char is a single Unicode character
char offset = lowerCase ? 'a' : 'A';
const int lettersOffset = 26; // A...Z or a..z: length=26
for (var i = 0; i < size; i++)
{
var @char = (char)_random.Next(offset, offset + lettersOffset);
builder.Append(@char);
}
return lowerCase ? builder.ToString().ToLower() : builder.ToString();
}
}
}