404 lines
14 KiB
C#
404 lines
14 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Net;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Web;
|
|
using System.Windows;
|
|
using ChatController.Klassen;
|
|
using Newtonsoft.Json;
|
|
|
|
namespace ChatController.HauptKlassen
|
|
{
|
|
public class Login
|
|
{
|
|
private string _url = ""; //"https://bewoplaner.beyondsoft.de/voucher_check.php"; // alt
|
|
|
|
private string _newUrl = "https://dict.ownchat.de/api/server/resolve/1/"; //https://dict.ownchat.de/api/server/resolve/{type}/{customerid} //type = Diensttyp(1,2,oder 3), customerid = Kudennummer des Kunden
|
|
|
|
public string _serverUrl = "";
|
|
private string _authToken = "";
|
|
|
|
private readonly string _benutzername;
|
|
private readonly string _passwort;
|
|
private readonly string _kundennummer;
|
|
private readonly string _chatCode;
|
|
private readonly string _apikey;
|
|
|
|
private long? _userid;
|
|
|
|
private bool _verbindungsaufbauOK = false;
|
|
private bool _ownchatVerbindungsaufbauOK = false;
|
|
private bool _gruppeholenverbindungsaufbauOK = false;
|
|
|
|
private AuthentifizierungsDaten _serverconect;
|
|
private UserDaten _angemeldeterUser;
|
|
private ChatGruppenDaten _alleGruppen;
|
|
|
|
private bool showMessageBox = true;
|
|
|
|
public Login(string kundennummer, string chatCode,string benutzername,string passwort)
|
|
{
|
|
_kundennummer = kundennummer;
|
|
_chatCode = chatCode;
|
|
_benutzername = benutzername;
|
|
_passwort = passwort;
|
|
_apikey = "0000";//default damit nichts kaput geht
|
|
}
|
|
public Login(string kundennummer, string chatCode, string benutzername, string passwort,string apikey)
|
|
{
|
|
_kundennummer = kundennummer;
|
|
_chatCode = chatCode;
|
|
_benutzername = benutzername;
|
|
_passwort = passwort;
|
|
_apikey = apikey;
|
|
}
|
|
|
|
//
|
|
public Login(string kundennummer)
|
|
{
|
|
_kundennummer = kundennummer;
|
|
showMessageBox = false;
|
|
ServerErmittlung();
|
|
}
|
|
|
|
public ChatDatenUebergabe AnmeldevorgangDurchFuehren()
|
|
{
|
|
if(ServerErmittlung()){
|
|
Dictionary<string, string> dic = new Dictionary<string, string>();
|
|
|
|
dic.Add("username", _benutzername);
|
|
dic.Add("password", _passwort);
|
|
dic.Add("chatcode",_chatCode);
|
|
|
|
VerbindeMitChatServer(dic);
|
|
|
|
if (_ownchatVerbindungsaufbauOK)
|
|
{
|
|
GruppenHolen();
|
|
}
|
|
|
|
|
|
if (_gruppeholenverbindungsaufbauOK)
|
|
{
|
|
|
|
long maxUploadSize = GetMaiximumAllowedFileUploadSize(_authToken,_kundennummer);
|
|
|
|
ChatDatenUebergabe ubergabe = new ChatDatenUebergabe(_serverconect, _angemeldeterUser, _alleGruppen, _serverUrl, _authToken, _userid, _kundennummer,_apikey, maxUploadSize);
|
|
|
|
return ubergabe;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public bool ServerErmittlung()
|
|
{
|
|
if (_serverUrl.Equals(""))
|
|
{
|
|
try
|
|
{
|
|
|
|
string serverURl = _newUrl + _kundennummer;
|
|
|
|
WebRequest request = WebRequest.Create(serverURl);
|
|
|
|
request.Credentials = CredentialCache.DefaultCredentials;
|
|
|
|
WebResponse response;
|
|
|
|
try
|
|
{
|
|
response = request.GetResponse();
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
if (showMessageBox)
|
|
{
|
|
MessageBox.Show("Fehler: Es konnte keine Verbindung aufgebaut werden.", "ownChat Fehler",
|
|
MessageBoxButton.OK, MessageBoxImage.Error);
|
|
}
|
|
return false;
|
|
}
|
|
|
|
// Display the status.
|
|
var statusResponse = ((HttpWebResponse) response).StatusDescription;
|
|
|
|
string responseFromServer = Utilities.Utils.ReadStream(response);
|
|
|
|
try
|
|
{
|
|
var jsonDatentyp =
|
|
JsonConvert.DeserializeObject<NewAuthentifizierungsDatenTyp1>(responseFromServer);
|
|
|
|
if (jsonDatentyp.Status == 1)
|
|
{
|
|
if (showMessageBox)
|
|
{
|
|
MessageBox.Show(
|
|
"Fehler: Kundennummer unbekannt.\nBitte überprüfen Sie die Anmeldeinformationen.",
|
|
"ownChat Info", MessageBoxButton.OK, MessageBoxImage.Asterisk);
|
|
}
|
|
return false;
|
|
}
|
|
else if (jsonDatentyp.Status == 2)
|
|
{
|
|
if (showMessageBox)
|
|
{
|
|
MessageBox.Show("Der Diensttyp ist für die angegebene Kundennummer nicht definiert.",
|
|
"ownChat Info",
|
|
MessageBoxButton.OK, MessageBoxImage.Asterisk);
|
|
}
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
_url = jsonDatentyp.URL;
|
|
}
|
|
}
|
|
catch (Exception eds)
|
|
{
|
|
try
|
|
{
|
|
var jsonDatentyp =
|
|
JsonConvert.DeserializeObject<NewAuthentifizierungsDatenTyp2>(responseFromServer);
|
|
|
|
if (jsonDatentyp.Status == 1)
|
|
{
|
|
if (showMessageBox)
|
|
{
|
|
MessageBox.Show(
|
|
"Fehler: Kundennummer unbekannt.\nBitte überprüfen Sie die Anmeldeinformationen.",
|
|
"ownChat Info", MessageBoxButton.OK, MessageBoxImage.Asterisk);
|
|
}
|
|
return false;
|
|
}
|
|
else if (jsonDatentyp.Status == 2)
|
|
{
|
|
if (showMessageBox)
|
|
{
|
|
MessageBox.Show(
|
|
"Der Diensttyp ist für die angegebene Kundennummer nicht definiert.",
|
|
"ownChat Info", MessageBoxButton.OK, MessageBoxImage.Asterisk);
|
|
}
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
_url = jsonDatentyp.URL;
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
if (showMessageBox)
|
|
{
|
|
MessageBox.Show("Fehler: " + e.Message, "ownChat Fehler", MessageBoxButton.OK,
|
|
MessageBoxImage.Error);
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
response.Close();
|
|
|
|
_serverUrl = _url;
|
|
return true;
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
if (showMessageBox)
|
|
{
|
|
MessageBox.Show("Fehler: " + e.Message, "ownChat Fehler", MessageBoxButton.OK,
|
|
MessageBoxImage.Error);
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
|
|
private void VerbindeMitChatServer(Dictionary<string, string> postparameter)
|
|
{
|
|
string fehlermeldung = "";
|
|
try
|
|
{
|
|
var endurl = _url + "/api/user/loginwithchatcode";
|
|
|
|
string postdaten = "";
|
|
|
|
int i = 0;
|
|
foreach (var key in postparameter.Keys)
|
|
{
|
|
postdaten += HttpUtility.UrlEncode(key) + "=" + HttpUtility.UrlEncode(postparameter[key]) + "&";
|
|
}
|
|
|
|
WebRequest requesten = WebRequest.Create(endurl);
|
|
|
|
requesten.Method = "POST";
|
|
requesten.ContentType = "application/x-www-form-urlencoded";
|
|
requesten.Headers["CustomerID"] = _kundennummer;
|
|
|
|
byte[] daten = Encoding.ASCII.GetBytes(postdaten);
|
|
|
|
requesten.ContentLength = daten.Length;
|
|
|
|
Stream requestStream = requesten.GetRequestStream();
|
|
|
|
requestStream.Write(daten, 0, daten.Length);
|
|
|
|
requestStream.Close();
|
|
|
|
HttpWebResponse myHttpWebResponse = (HttpWebResponse)requesten.GetResponse();
|
|
|
|
Stream responseStream = myHttpWebResponse.GetResponseStream();
|
|
|
|
StreamReader myStreamReader = new StreamReader(responseStream, Encoding.Default);
|
|
|
|
string pageContent = myStreamReader.ReadToEnd();
|
|
|
|
if (!pageContent.Equals(""))
|
|
{
|
|
var jsonDaten = JsonConvert.DeserializeObject<UserDaten>(pageContent);
|
|
|
|
if (jsonDaten.Success == true)
|
|
{
|
|
foreach (var datev in jsonDaten.Response)
|
|
{
|
|
_authToken = datev.Value.Token;
|
|
_userid = datev.Value.Oid;
|
|
}
|
|
|
|
_angemeldeterUser = jsonDaten;
|
|
|
|
_ownchatVerbindungsaufbauOK = true;
|
|
}
|
|
else
|
|
{
|
|
if (jsonDaten.Errors.chatcode_failed != null)
|
|
{
|
|
if (showMessageBox)
|
|
{
|
|
MessageBox.Show(
|
|
"Fehler: " + jsonDaten.Errors.chatcode_failed[0] +
|
|
"\nBitte überprüfen Sie die Anmeldeinformationen.", "Info", MessageBoxButton.OK,
|
|
MessageBoxImage.Asterisk);
|
|
}
|
|
}else if (jsonDaten.Errors.login_failed != null)
|
|
{
|
|
if (showMessageBox)
|
|
{
|
|
MessageBox.Show(
|
|
"Fehler: " + jsonDaten.Errors.login_failed[0] +
|
|
"\nBitte überprüfen Sie die Anmeldeinformationen.", "Info", MessageBoxButton.OK,
|
|
MessageBoxImage.Asterisk);
|
|
}
|
|
}
|
|
|
|
_ownchatVerbindungsaufbauOK = false;
|
|
}
|
|
}
|
|
|
|
myStreamReader.Close();
|
|
responseStream.Close();
|
|
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
if (showMessageBox)
|
|
{
|
|
MessageBox.Show("Fehler:" + e.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void GruppenHolen()
|
|
{
|
|
try
|
|
{
|
|
var endurl = _url + "/api/chat/groups";
|
|
|
|
WebRequest request = WebRequest.Create(endurl);
|
|
|
|
request.Credentials = CredentialCache.DefaultCredentials;
|
|
request.Headers["Token"] = _authToken;
|
|
request.Headers["CustomerID"] = _kundennummer;
|
|
|
|
using (WebResponse response = request.GetResponse())
|
|
{
|
|
|
|
// Display the status.
|
|
var statusResponse = ((HttpWebResponse) response).StatusDescription;
|
|
|
|
string responseFromServer = Utilities.Utils.ReadStream(response);
|
|
|
|
if (!responseFromServer.Equals(""))
|
|
{
|
|
var jsonDaten = JsonConvert.DeserializeObject<ChatGruppenDaten>(responseFromServer);
|
|
|
|
_alleGruppen = jsonDaten;
|
|
|
|
_gruppeholenverbindungsaufbauOK = true;
|
|
}
|
|
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
if (showMessageBox)
|
|
{
|
|
MessageBox.Show("Fehler: " + e.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#region Maximal erlaubte File Größe
|
|
|
|
public long GetMaiximumAllowedFileUploadSize(string token, string customerid)
|
|
{
|
|
long maxsize = 0;
|
|
try
|
|
{
|
|
var endurl = _serverUrl + "/api/ownchat/uploadmaxsize";// + apikey + "/" + customerid;
|
|
|
|
WebRequest request = WebRequest.Create(endurl);
|
|
request.Headers["Token"] = token;
|
|
request.Headers["CustomerID"] = customerid;
|
|
|
|
request.Credentials = CredentialCache.DefaultCredentials;
|
|
request.Proxy = null;
|
|
|
|
using (WebResponse response = request.GetResponse())
|
|
{
|
|
|
|
// Display the status.
|
|
var statusResponse = ((HttpWebResponse) response).StatusDescription;
|
|
|
|
string responseFromServer = Utilities.Utils.ReadStream(response);
|
|
|
|
var definiti = new {file_upload_max_size = ""};
|
|
|
|
var jsonDatentyp = JsonConvert.DeserializeAnonymousType(responseFromServer, definiti);
|
|
maxsize = Convert.ToInt64(jsonDatentyp.file_upload_max_size);
|
|
|
|
}
|
|
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
return maxsize;
|
|
}
|
|
|
|
#endregion
|
|
|
|
}
|
|
}
|