299 lines
9.0 KiB
C#
299 lines
9.0 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 ChatController.Klassen;
|
|
using Newtonsoft.Json;
|
|
|
|
namespace ChatController.HauptKlassen
|
|
{
|
|
public class Login
|
|
{
|
|
private string _url = "https://bewoplaner.beyondsoft.de/voucher_check.php";
|
|
|
|
private string _serverUrl = "";
|
|
private string _authToken = "";
|
|
|
|
private readonly string _benutzername;
|
|
private readonly string _passwort;
|
|
private readonly string _kundennummer;
|
|
private readonly string _chatCode;
|
|
|
|
private long? _userid;
|
|
|
|
private bool _verbindungsaufbauOK = false;
|
|
private bool _ownchatVerbindungsaufbauOK = false;
|
|
private bool _gruppeholenverbindungsaufbauOK = false;
|
|
|
|
private AuthentifizierungsDaten _serverconect;
|
|
private UserDaten _userconect;
|
|
private ChatGruppenDaten _groupconect;
|
|
|
|
public Login(string kundennummer, string chatCode,string benutzername,string passwort)
|
|
{
|
|
_kundennummer = kundennummer;
|
|
_chatCode = chatCode;
|
|
_benutzername = benutzername;
|
|
_passwort = passwort;
|
|
}
|
|
|
|
public ChatDatenUebergabe AnmeldevorgangDurchFuehren()
|
|
{
|
|
BaueEineVerbindungAuf();
|
|
|
|
if (_verbindungsaufbauOK)
|
|
{
|
|
Dictionary<string, string> dic = new Dictionary<string, string>();
|
|
|
|
dic.Add("username", _benutzername);
|
|
dic.Add("password", _passwort);
|
|
|
|
VerbindeMitChatServer(dic);
|
|
}
|
|
|
|
|
|
// Gruppen abfragen
|
|
if (_ownchatVerbindungsaufbauOK)
|
|
{
|
|
GruppenHolen();
|
|
}
|
|
|
|
|
|
if (_gruppeholenverbindungsaufbauOK)
|
|
{
|
|
|
|
ChatDatenUebergabe ubergabe = new ChatDatenUebergabe(_serverconect, _userconect, _groupconect, _serverUrl, _authToken, _userid, _kundennummer);
|
|
|
|
return ubergabe;
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
//throw fehler anpassungen überall
|
|
private void BaueEineVerbindungAuf()
|
|
{
|
|
try
|
|
{
|
|
string endurl = _url + "?k=" + _kundennummer + "&Voucher=" + _chatCode;
|
|
|
|
|
|
WebRequest request = WebRequest.Create(endurl);
|
|
|
|
request.Credentials = CredentialCache.DefaultCredentials;
|
|
|
|
WebResponse response;
|
|
|
|
try
|
|
{
|
|
response = request.GetResponse();
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
//throw fehler
|
|
// MessageBox.Show("Die Kundennummer oder der Chatcode ist falsch.\nOder Beides!", "Fehler", MessageBoxButton.OK);
|
|
return;
|
|
}
|
|
|
|
// Display the status.
|
|
var statusResponse = ((HttpWebResponse)response).StatusDescription;
|
|
|
|
|
|
|
|
string responseFromServer = ReadStream(response);
|
|
|
|
|
|
if (!responseFromServer.Equals(""))
|
|
{
|
|
//_voucherCheckOk = true;
|
|
//################# Deserialisierung mit Json ###############################
|
|
var jsonDaten = JsonConvert.DeserializeObject<Dictionary<string, AuthentifizierungsDaten>>(responseFromServer);
|
|
|
|
var serv = jsonDaten[_chatCode].ServerName;
|
|
|
|
//#################################################################################
|
|
|
|
_serverUrl = serv;
|
|
|
|
_serverconect = jsonDaten[_chatCode];
|
|
|
|
_verbindungsaufbauOK = true;
|
|
}
|
|
else
|
|
{
|
|
//throw fehler
|
|
//MessageBox.Show("Die Kundennummer oder der Chatcode ist falsch.\nOder Beides!", "Fehler", MessageBoxButton.OK);
|
|
}
|
|
|
|
response.Close();
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
//thorw fehler
|
|
//MessageBox.Show("Es konnte keine Verbindung aufgebaut werden.", "Fehler", MessageBoxButton.OK);
|
|
}
|
|
}
|
|
|
|
private void VerbindeMitChatServer(Dictionary<string, string> postparameter)
|
|
{
|
|
try
|
|
{
|
|
var endurl = _serverUrl + "/api/user/login";
|
|
|
|
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();
|
|
|
|
|
|
//Baue pagekontent in Json um
|
|
|
|
if (!pageContent.Equals(""))
|
|
{
|
|
//_serverCheckOK = true;
|
|
|
|
//string[] array = responseFromServer.Split(':');
|
|
|
|
//Json Verarbeitungsgedöns Dictionary < string, TestKlasse>
|
|
var jsonDaten = JsonConvert.DeserializeObject<UserDaten>(pageContent);
|
|
|
|
//var serv = jsonDaten[_chatcode].ServerName;
|
|
|
|
foreach (var datev in jsonDaten.Response)
|
|
{
|
|
_authToken = datev.Value.Token;
|
|
_userid = datev.Value.Oid;
|
|
}
|
|
|
|
_userconect = jsonDaten;
|
|
|
|
_ownchatVerbindungsaufbauOK = true;
|
|
}
|
|
else
|
|
{
|
|
//throw fehler
|
|
// MessageBox.Show("Keine Daten Vorhanden.");
|
|
}
|
|
|
|
|
|
// MessageBox.Show(pageContent);
|
|
|
|
myStreamReader.Close();
|
|
responseStream.Close();
|
|
|
|
}
|
|
catch (WebException e)
|
|
{
|
|
//throw fehler
|
|
//MessageBox.Show(e.Message, "Fehler", MessageBoxButton.OK);
|
|
}
|
|
}
|
|
|
|
private void GruppenHolen()
|
|
{
|
|
try
|
|
{
|
|
var endurl = _serverUrl + "/api/chat/groups";
|
|
|
|
WebRequest request = WebRequest.Create(endurl);
|
|
|
|
request.Credentials = CredentialCache.DefaultCredentials;
|
|
request.Headers["Token"] = _authToken;
|
|
request.Headers["CustomerID"] = _kundennummer;
|
|
|
|
// Get the response.
|
|
WebResponse response = request.GetResponse();
|
|
|
|
// Display the status.
|
|
var statusResponse = ((HttpWebResponse)response).StatusDescription;
|
|
|
|
|
|
string responseFromServer = ReadStream(response);
|
|
|
|
//verarbeite hier zu json
|
|
if (!responseFromServer.Equals(""))
|
|
{
|
|
//################# Deserialisierung mit Json ###############################
|
|
var jsonDaten = JsonConvert.DeserializeObject<ChatGruppenDaten>(responseFromServer);
|
|
|
|
_groupconect = jsonDaten;
|
|
// var serv = jsonDaten[_chatcode].ServerName;
|
|
|
|
//MessageBox.Show(responseFromServer);
|
|
_gruppeholenverbindungsaufbauOK = true;
|
|
}
|
|
else
|
|
{
|
|
// MessageBox.Show("Keine Daten Vorhanden.");
|
|
}
|
|
|
|
response.Close();
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
// MessageBox.Show(e.Message, "Fehler", MessageBoxButton.OK);
|
|
}
|
|
|
|
}
|
|
|
|
private string ReadStream(WebResponse response)
|
|
{
|
|
try
|
|
{
|
|
Stream dataStream = response.GetResponseStream();
|
|
|
|
StreamReader reader = new StreamReader(dataStream);
|
|
|
|
string responseFromServer = reader.ReadToEnd();
|
|
|
|
|
|
dataStream.Dispose();
|
|
reader.Dispose();
|
|
|
|
dataStream.Close();
|
|
reader.Close();
|
|
|
|
return responseFromServer;
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
// MessageBox.Show(e.Message);
|
|
return null;
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|