Files
Chat/ChatController/HauptKlassen/Login.cs
2017-09-12 14:32:34 +02:00

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;
}
}
}
}