using System; using System.Collections.Generic; using System.Configuration; using System.Linq; using System.Net; using System.Net.Http; using System.Web.Http; using DOCGEN; using Model; using Database; using Newtonsoft.Json; using API_NetFramework.Models; using System.Security.Cryptography; using edoka_dms; namespace API_NetFramework.Controllers { public class TestParam { public string param1 { get; set; } public string param2 { get; set; } } public class DocumentController : ApiController { public string tokenfunction = "Dokument"; string connectionstring = ConfigurationManager.ConnectionStrings["EDOKAConnectionstring"].ConnectionString; [HttpGet] [Route("API/GetDocument")] public IHttpActionResult GetDocument(string dokid) { if (SecuringWebApiUsingApiKey.Middleware.ApiKeyMiddleware.Authorized((HttpRequestMessage)Request, tokenfunction) == false) { return Content(HttpStatusCode.Unauthorized, "Invalid Token or API-Key"); } try { APILogging.Log((HttpRequestMessage)Request, "Start GetDocument DokumentID:"+dokid, LogLevelType.Debug); DOCGEN.DocGet gd = new DocGet(connectionstring); clsdok dok = new clsdok("", "", ""); dok = gd.GetDoc(dokid); APILogging.Log((HttpRequestMessage)Request, "Ende GetDocument DokumentID:" + dokid, LogLevelType.Debug); return Ok(dok); } catch (Exception e) { APILogging.Log((HttpRequestMessage)Request, e.Message, LogLevelType.Error); return Content(HttpStatusCode.InternalServerError, e.Message); } } public object pageCollection { get; set; } [HttpPost] [Route("API/GetDocumentJSONBody")] public IHttpActionResult GetDocumentJSONBody([FromBody] TestParam tp) { //JsonSerializerSettings settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All, PreserveReferencesHandling = PreserveReferencesHandling.None }; //var myObject = JsonConvert.DeserializeObject(pageCollection.ToString(), settings); return Ok(tp.param1); //return Ok(tp.param1.ToString()); } [Route("API/GetDocumentPDF")] [HttpGet] public IHttpActionResult GetDocumentPDF(string dokid) { if (SecuringWebApiUsingApiKey.Middleware.ApiKeyMiddleware.Authorized((HttpRequestMessage)Request, tokenfunction) == false) { return Content(HttpStatusCode.Unauthorized, "Invalid Token or API-Key"); } try { APILogging.Log((HttpRequestMessage)Request, "Start GetDocumentPDF DokumentID:" + dokid, LogLevelType.Debug); DOCGEN.DocGet gd = new DocGet(connectionstring); clsdok dok = new clsdok("", "", ""); dok = gd.GetDocAsPDF(dokid); dok.extension = "pdf"; dok.doktype = "P"; APILogging.Log((HttpRequestMessage)Request, "Ende GetDocument DokumentID:" + dokid, LogLevelType.Debug); return Ok(dok); } catch (Exception e) { APILogging.Log((HttpRequestMessage)Request, e.Message, LogLevelType.Error); return Content(HttpStatusCode.InternalServerError, e.Message); } } [HttpGet] [Route("API/SendToOnBase")] public IHttpActionResult SendToOnBase(string dokid) { if (SecuringWebApiUsingApiKey.Middleware.ApiKeyMiddleware.Authorized((HttpRequestMessage)Request, tokenfunction) == false) { return Content(HttpStatusCode.Unauthorized, "Invalid Token or API-Key"); } try { APILogging.Log((HttpRequestMessage)Request, "Start SendToOnBase:" + dokid, LogLevelType.Debug); DB db = new DB(connectionstring); db.Get_Tabledata("Select * from dokument where dokumentid='" + dokid + "'", false, true); if (db.dsdaten.Tables[0].Rows.Count < 1) { db = null; APILogging.Log((HttpRequestMessage)Request, "Ende GetDocument DokumentID:" + dokid, LogLevelType.Debug); return BadRequest("Dokument " + dokid + " not found"); } else { DocGet dg = new DocGet(connectionstring); clsdok dok = new clsdok("", "", ""); dok = dg.GetDocAsPDF(dokid); db.Exec_SQL("Update dokument set loeschgrund='Archiviert' where dokumentid='" + dokid + "'"); db = null; APILogging.Log((HttpRequestMessage)Request, "Ende GetDocument DokumentID:" + dokid, LogLevelType.Debug); return Ok("Archivierung ausgelöst"); } } catch (Exception e) { APILogging.Log((HttpRequestMessage)Request, e.Message, LogLevelType.Error); return Content(HttpStatusCode.InternalServerError, e.Message); } } [HttpPost] [Route("API/GenDoc")] public IHttpActionResult GenDoc(string Partnernr, String Dokumenttypnr, string TGCreator="", string TGResp="", string TGUL="", string TGUR="", string Faksimile="", string FoU="", string PrintLogo="") { if (SecuringWebApiUsingApiKey.Middleware.ApiKeyMiddleware.Authorized((HttpRequestMessage)Request, tokenfunction) == false) { return Content(HttpStatusCode.Unauthorized, "Invalid Token or API-Key"); } try { APILogging.Log((HttpRequestMessage)Request, "Start GenDoc " , LogLevelType.Debug); if (!(ParamCheck("partnernr", Partnernr))) { return BadRequest("Partnernr " + Partnernr + " ist ungültig"); } if (!(ParamCheck("dokumenttyp", Dokumenttypnr))) { return BadRequest("Dokumenttyp " + Dokumenttypnr + " ist ungültig"); } if (!(ParamCheck("tgcreator", TGCreator))) { return BadRequest("TGCreator " + TGCreator + " ist ungültig"); } if (!(ParamCheck("tgresp", TGResp))) { return BadRequest("TGResp " + TGResp + " ist ungültig"); } if (!(ParamCheck("tgul", TGUL))) { return BadRequest("TG Unterschrift links " + TGUL + " ist ungültig"); } if (!(ParamCheck("tgul", TGUR))) { return BadRequest("TG Unterschrift rechts " + TGUR + " ist ungültig"); } if (!(ParamCheck("faksimile", Faksimile))) { return BadRequest("Parameter Faxsimile " + Faksimile + " ist ungültig"); } if (!(ParamCheck("formohneunterschrift", FoU))) { return BadRequest("Parameter Form ohne Unterschrift " + FoU + " ist ungültig"); } if (!(ParamCheck("printlogo", PrintLogo))) { return BadRequest("Parameter PrintLogo " + PrintLogo + " ist ungültig"); } Database.DB db = new DB(connectionstring); Model.clsdocgendata docgendata = new Model.clsdocgendata(); docgendata.partnernr = Partnernr; docgendata.inhaberadresse = ""; docgendata.zustelladresse = ""; docgendata.dokumenttypnr = Dokumenttypnr; docgendata.unterschriftLinks = db.Get_Mitarbeiternr(TGUL).ToString(); docgendata.unterschriftRehts = db.Get_Mitarbeiternr(TGUR).ToString(); docgendata.verantwortlich = db.Get_Mitarbeiternr(TGResp).ToString(); docgendata.ersteller = db.Get_Mitarbeiternr(TGCreator).ToString(); docgendata.team = db.Get_Teamnr(docgendata.ersteller).ToString(); docgendata.digitaleunterschrift = false; docgendata.frormularOhneUnterschrift = false; //docgendata.team = ""; docgendata.zustaendigkube = db.Get_Mitarbeiternr(TGResp).ToString(); docgendata.status = "-1"; docgendata.dokumentdatum = DateTime.Now.ToString("dd.MM.yyyy"); docgendata.bezeichnung = ""; docgendata.erstellungsart = Erstellungsart.DokumentAlsPDF; docgendata.verantwortlich = db.Get_Mitarbeiternr(TGResp).ToString(); if (docgendata.verantwortlich == "0") { docgendata.verantwortlich = docgendata.ersteller; } clsDocData dokdata = new clsDocData(); dokdata.PartnerNr = docgendata.partnernr; dokdata.UseEDOKA_Values = "True"; dokdata.DokumenttypNr = docgendata.dokumenttypnr; dokdata.Unterschrift_Links = docgendata.unterschriftLinks; dokdata.Unterschrift_Rechts = docgendata.unterschriftRehts; 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.Bezeichnung = docgendata.bezeichnung; if (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"; } string dokumentid = ""; dokumentid = db.Create_EDOKA_Doc(dokdata); DOCGEN.Generator.DocGenerator_from_EDOKA Generator = new DOCGEN.Generator.DocGenerator_from_EDOKA(this.connectionstring); clsdok dok = new clsdok("", "", ""); dok = Generator.Generate_Doc_EDOKA(dokumentid, ref dokdata); db.Save_To_DB(dokumentid, "", dok.dokument); APILogging.Log((HttpRequestMessage)Request, "Ende GenDoc DokumentID:"+dokumentid, LogLevelType.Debug); return Ok(dokumentid); } catch (Exception e) { APILogging.Log((HttpRequestMessage)Request, e.Message, LogLevelType.Error); return Content(HttpStatusCode.InternalServerError, e.Message); } } private bool ParamCheck(string ParamType, string ParamValue) { DB db = new DB(connectionstring); 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": 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 "faksimile": if (ParamValue != "Yes" && ParamValue != "No" && ParamValue !="") { return false; }; break; case "formohneunterschrift": if (ParamValue != "Yes" && ParamValue != "No" && ParamValue != "") { return false; }; break; case "printlogo": if (ParamValue != "Yes" && ParamValue != "No" && ParamValue != "") { return false; }; break; default: return false; break; } return true; } } }