235 lines
7.7 KiB
C#
235 lines
7.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Diagnostics;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Net;
|
|
using System.Text;
|
|
using System.Web;
|
|
using System.Threading.Tasks;
|
|
using System.Windows;
|
|
using System.Windows.Forms;
|
|
using System.Windows.Threading;
|
|
using BS.Shared.DataContracts;
|
|
using Newtonsoft.Json;
|
|
using MessageBox = System.Windows.MessageBox;
|
|
|
|
namespace BeWo.ownChat
|
|
{
|
|
public class OwnChatHelper
|
|
{
|
|
public static void OpenOwnChatPdf(string tenant, string apikey, string benutzername, string passwort, string chatcode)
|
|
{
|
|
var r = HoleOwnChatPdf(tenant, apikey, benutzername, passwort, chatcode);
|
|
|
|
|
|
switch (r)
|
|
{
|
|
case 0:
|
|
// wenn hier dann alles ok
|
|
|
|
break;
|
|
case 11:
|
|
MessageBox.Show("Kundennummer unbekannt.", "Fehler", MessageBoxButton.OK, MessageBoxImage.Exclamation);
|
|
break;
|
|
case 12:
|
|
MessageBox.Show("Der API-Key ist falsch -> Auth-Error.", "Fehler", MessageBoxButton.OK, MessageBoxImage.Exclamation);
|
|
break;
|
|
case 13:
|
|
MessageBox.Show("Es existiert kein API-Key für die angegebene Kundennummer.", "Fehler", MessageBoxButton.OK, MessageBoxImage.Exclamation);
|
|
break;
|
|
case 40:
|
|
MessageBox.Show("Vorlage nicht gefunden.", "Fehler", MessageBoxButton.OK, MessageBoxImage.Exclamation);
|
|
break;
|
|
case 41:
|
|
MessageBox.Show("Ungültige Custom-Logo-URL.", "Fehler", MessageBoxButton.OK, MessageBoxImage.Exclamation);
|
|
break;
|
|
case 60:
|
|
MessageBox.Show("Fehler: \n" + "", "Fehler", MessageBoxButton.OK, MessageBoxImage.Exclamation);
|
|
break;
|
|
}
|
|
}
|
|
|
|
private static int HoleOwnChatPdf(string tenant, string apikey, string benutzername, string passwort, string chatcode)
|
|
{
|
|
try
|
|
{
|
|
#region ServerErmittlung und Link ermittlung
|
|
string serverUrl = ErmittleServerURL(tenant);
|
|
|
|
if (serverUrl == null)
|
|
{
|
|
return 11;
|
|
}
|
|
else if (serverUrl.Equals(""))
|
|
{
|
|
return 11;
|
|
}
|
|
|
|
var endurl = serverUrl + "/api/ownchat/createpdfmanual/" + apikey + "/" + tenant;
|
|
#endregion
|
|
|
|
#region Post Parameter Uebergabe
|
|
|
|
Dictionary<string, string> postparameter = new Dictionary<string, string>();
|
|
|
|
if (!String.IsNullOrEmpty(benutzername))
|
|
postparameter.Add("username", benutzername);
|
|
|
|
if (!String.IsNullOrEmpty(passwort))
|
|
postparameter.Add("password", passwort);
|
|
|
|
if (!String.IsNullOrEmpty(chatcode))
|
|
postparameter.Add("chatcode", chatcode);
|
|
|
|
string postdaten = "";
|
|
int i = 0;
|
|
foreach (var key in postparameter.Keys)
|
|
{
|
|
postdaten += HttpUtility.UrlEncode(key) + "=" + HttpUtility.UrlEncode(postparameter[key]) + "&";
|
|
}
|
|
#endregion
|
|
|
|
#region Webrequest Aufbau ink. stream
|
|
WebRequest requesten = WebRequest.Create(endurl);
|
|
|
|
requesten.Method = "POST";
|
|
requesten.ContentType = "application/x-www-form-urlencoded";
|
|
|
|
byte[] daten = Encoding.ASCII.GetBytes(postdaten);
|
|
|
|
requesten.ContentLength = daten.Length;
|
|
|
|
try
|
|
{
|
|
Stream requestStream = requesten.GetRequestStream();
|
|
|
|
requestStream.Write(daten, 0, daten.Length);
|
|
|
|
requestStream.Close();
|
|
|
|
var inte = VerarbeiteErhalteneDaten(requesten, chatcode);
|
|
|
|
return inte;
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
MessageBox.Show("Es konnte keine Verbindung aufgebaut werden.", "Fehler", MessageBoxButton.OK);
|
|
|
|
return 0;
|
|
}
|
|
#endregion
|
|
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
return 60;
|
|
}
|
|
}
|
|
|
|
public static int VerarbeiteErhalteneDaten(WebRequest requesten, string chatcode)
|
|
{
|
|
try
|
|
{
|
|
#region Verarbeitung der Erhaltenen Daten
|
|
|
|
using (HttpWebResponse response = (HttpWebResponse) requesten.GetResponse())
|
|
{
|
|
|
|
string responseFromServer = "";
|
|
|
|
using (Stream reqStr2 = response.GetResponseStream())
|
|
{
|
|
|
|
byte[] barray = null;
|
|
|
|
byte[] Stringmesage = null;
|
|
|
|
using (var memoryStream = new MemoryStream())
|
|
{
|
|
reqStr2.CopyTo(memoryStream);
|
|
barray = memoryStream.ToArray();
|
|
}
|
|
|
|
if (barray != null)
|
|
{
|
|
Stringmesage = barray;
|
|
|
|
responseFromServer = System.Text.Encoding.Default.GetString(Stringmesage);
|
|
}
|
|
|
|
if (responseFromServer.Contains("PDF"))
|
|
{
|
|
|
|
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
|
|
|
|
saveFileDialog1.Title = "Dokument Speichern";
|
|
saveFileDialog1.FileName = Path.GetFileName(String.Format("ownChat-Kurzanleitung_{0}.pdf", chatcode));
|
|
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
|
|
{
|
|
|
|
File.WriteAllBytes(saveFileDialog1.FileName, barray);
|
|
|
|
Process.Start(saveFileDialog1.FileName);
|
|
|
|
reqStr2.Close();
|
|
}
|
|
return 0;
|
|
}
|
|
else
|
|
{
|
|
var jsonDatentyp = JsonConvert.DeserializeObject<PdfChatHandoutDC>(responseFromServer);
|
|
|
|
return jsonDatentyp.Result;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
return 60;
|
|
}
|
|
}
|
|
|
|
private static string ErmittleServerURL(string tenant)
|
|
{
|
|
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
|
|
|
|
string url = "https://dict.ownchat.de/api/server/resolve/1/" + tenant;//customerId; //customerid == kundennummer
|
|
|
|
WebRequest request = WebRequest.Create(url);
|
|
|
|
request.Credentials = CredentialCache.DefaultCredentials;
|
|
|
|
WebResponse response = request.GetResponse();
|
|
|
|
|
|
Stream dataStream = response.GetResponseStream();
|
|
|
|
StreamReader reader = new StreamReader(dataStream);
|
|
|
|
string responseFromServer = reader.ReadToEnd();
|
|
|
|
dataStream.Dispose();
|
|
reader.Dispose();
|
|
|
|
dataStream.Close();
|
|
reader.Close();
|
|
|
|
var definition = new { status = "", URL = "", SYNCTYPE = "" };
|
|
|
|
var jsondaten = JsonConvert.DeserializeAnonymousType(responseFromServer, definition);
|
|
|
|
string serverUrl = jsondaten.URL;
|
|
response.Close();
|
|
|
|
return serverUrl;
|
|
|
|
}
|
|
}
|
|
}
|