sledgemapper/Sledgemapper/UI/LoginRegisterWindow.Custom.cs
Michele 3e1acd26f2
All checks were successful
continuous-integration/drone/push Build is passing
invite player fixes
2021-09-23 22:15:15 +01:00

211 lines
No EOL
7.1 KiB
C#

using System;
using System.Diagnostics;
using System.Linq;
using Myra.Graphics2D.UI;
using Sledgemapper.Messages;
using Sledgemapper.Shared.Entities;
using TinyMessenger;
namespace Sledgemapper.UI
{
public partial class LoginRegisterWindow
{
private AuthenticateResponse _authResponse;
private readonly CommunicationManager CommunicationManager;
private readonly TinyMessengerHub _messenger;
public LoginRegisterWindow(CommunicationManager communicationManager, TinyMessengerHub messenger)
{
BuildUI();
CommunicationManager = communicationManager;
_messenger = messenger;
#if DEBUG
TxtEmail.Text = "michele.scandura@outlook.com";
TxtPassword.Text = "slePharland!79";
#endif
RdoLogin.IsPressed = true;
RdoLogin.Click += (s, e) =>
{
TxtFirstname.Visible = false;
TxtLastname.Visible = false;
TxtInitials.Visible = false;
LblFirstname.Visible = false;
LblLastname.Visible = false;
LblInitials.Visible = false;
BtnLogin.Visible = true;
BtnRegister.Visible = false;
this.GetContainingWindow().Title = "Login";
};
RdoRegister.Click += (s, e) =>
{
TxtFirstname.Visible = true;
TxtLastname.Visible = true;
TxtInitials.Visible = true;
LblFirstname.Visible = true;
LblLastname.Visible = true;
LblInitials.Visible = true;
BtnLogin.Visible = false;
BtnRegister.Visible = true;
this.GetContainingWindow().Title = "Register";
};
BtnRegister.Click += OnButtonRegisterClick;
BtnLogin.Click += OnButtonLoginClick;
}
private async void OnButtonRegisterClick(object sender, EventArgs e)
{
var button = ((TextButton)sender);
if (!button.Enabled)
{
return;
}
var isValid = true;
isValid &= TxtEmail.ValidateTextbox();
isValid &= TxtPassword.ValidateTextbox();
isValid &= TxtFirstname.ValidateTextbox();
isValid &= TxtLastname.ValidateTextbox();
isValid &= TxtInitials.ValidateTextbox();
if (!isValid)
{
LblLoginError.Text = "Please complete all the fields";
LblLoginError.Visible = true;
return;
}
var successful = false;
try
{
button.Text = "Wait...";
LblLoginError.Text = "";
LblLoginError.Visible = false;
var result = await CommunicationManager.Register(new RegisterModel
{
Username = TxtEmail.Text,
Email = TxtEmail.Text,
Password = TxtPassword.Text,
FirstName = TxtFirstname.Text,
LastName = TxtLastname.Text,
Initials = TxtInitials.Text
});
if (result.Result)
{
_authResponse = await CommunicationManager.Login(new AuthenticateModel
{
Username = TxtEmail.Text,
Email = TxtEmail.Text,
Password = TxtPassword.Text
});
successful = true;
}
else
{
LblLoginError.Text = result.Errors.FirstOrDefault();
LblLoginError.Visible = true;
}
}
catch (Refit.ApiException refitException)
{
//ExceptionlessClient.Default.SubmitException(refitException);
LblLoginError.Text = refitException.Content;
LblLoginError.Visible = true;
}
catch (Exception ex)
{
//ExceptionlessClient.Default.SubmitException(ex);
LblLoginError.Text = "Can't connect to the server";
LblLoginError.Visible = true;
Debug.Write(ex);
}
finally
{
button.Enabled = true;
button.Text = "Register";
}
if (successful)
{
_messenger.Publish(new LoginSuccesfulMessage(this) { UserName = _authResponse.Username, Initials = _authResponse.Initials });
this.GetContainingWindow().Close();
}
}
private async void OnButtonLoginClick(object sender, EventArgs e)
{
var button = ((TextButton)sender);
Container container = button.Parent;
while (!(container is Window))
{
container = container.Parent;
}
var localWindow = (Window)container;
var localContent = localWindow.Content as LoginRegisterWindow;
if (!button.Enabled)
{
return;
}
var isValid = true;
isValid &= localContent.TxtEmail.ValidateTextbox();
isValid &= localContent.TxtPassword.ValidateTextbox();
if (!isValid)
{
localContent.LblLoginError.Text = "Username or password is not valid";
localContent.LblLoginError.Visible = true;
return;
}
var successful = false;
try
{
button.Text = "Wait...";
localContent.LblLoginError.Text = "";
localContent.LblLoginError.Visible = false;
_authResponse = await CommunicationManager.Login(new AuthenticateModel
{
Username = localContent.TxtEmail.Text,
Email = localContent.TxtEmail.Text,
Password = localContent.TxtPassword.Text
});
successful = _authResponse != null;
}
catch (Refit.ApiException refitException)
{
//ExceptionlessClient.Default.SubmitException(refitException);
localContent.LblLoginError.Text = refitException.Content;
localContent.LblLoginError.Visible = true;
}
catch (Exception ex)
{
//ExceptionlessClient.Default.SubmitException(ex);
localContent.LblLoginError.Text = "Can't connect to the server";
localContent.LblLoginError.Visible = true;
Debug.Write(ex);
}
finally
{
button.Enabled = true;
button.Text = "Login";
}
if (successful)
{
_messenger.Publish(new LoginSuccesfulMessage(this) { UserName = _authResponse.Username, Initials = _authResponse.Initials });
localWindow.Close();
}
}
}
}