212 lines
8.5 KiB
C#
212 lines
8.5 KiB
C#
using QtCNETAPI.Dtos.User;
|
|
using QtCNETAPI.Services.ApiService;
|
|
using QtCNETAPI.Models;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
using QtCNETAPI.Services.GatewayService;
|
|
using qtc_net_client_2.ClientModel;
|
|
using qtc_net_client_2.Properties;
|
|
|
|
namespace qtc_net_client_2.Forms
|
|
{
|
|
public partial class Profile : Form
|
|
{
|
|
UserInformationDto _userInformationDto;
|
|
IApiService _apiService;
|
|
IGatewayService _gatewayService;
|
|
public Profile(UserInformationDto userInfo, IApiService apiService, IGatewayService gatewayService)
|
|
{
|
|
_userInformationDto = userInfo;
|
|
_apiService = apiService;
|
|
_gatewayService = gatewayService;
|
|
InitializeComponent();
|
|
}
|
|
|
|
private async void frmProfile_Load(object sender, EventArgs e)
|
|
{
|
|
lblUsername.Text = _userInformationDto.Username;
|
|
lblCurrencyAmount.Text = _userInformationDto.CurrencyAmount.ToString();
|
|
rtxtBio.Text = _userInformationDto.Bio;
|
|
|
|
var pfpRes = await _apiService.GetUserProfilePic(_userInformationDto.Id);
|
|
if (pfpRes.Success && pfpRes.Data != null)
|
|
{
|
|
using (var ms = new MemoryStream(pfpRes.Data))
|
|
{
|
|
pbUserPfp.Image = Image.FromStream(ms);
|
|
ms.Dispose();
|
|
}
|
|
}
|
|
|
|
var userStatus = (UserStatus)_userInformationDto.Status;
|
|
switch(userStatus)
|
|
{
|
|
case UserStatus.Online:
|
|
pbUserStatus.Image = Resources.OnlineIcon;
|
|
break;
|
|
case UserStatus.Away:
|
|
pbUserStatus.Image = Resources.AwayIcon;
|
|
break;
|
|
case UserStatus.DoNotDisturb:
|
|
pbUserStatus.Image = Resources.DNDIcon;
|
|
break;
|
|
case UserStatus.Offline:
|
|
pbUserStatus.Image = Resources.OfflineIcon;
|
|
break;
|
|
}
|
|
|
|
if (_userInformationDto.Id == _apiService.CurrentUser!.Id)
|
|
{
|
|
btnAddContact.Visible = false;
|
|
btnMessage.Visible = false;
|
|
return; // do not run contact getting code
|
|
}
|
|
|
|
var contactsResult = await _apiService.GetCurrentUserContacts();
|
|
if (contactsResult.Success && contactsResult.Data != null)
|
|
{
|
|
var contact = contactsResult.Data.FirstOrDefault(e => e.UserId == _userInformationDto.Id || e.OwnerId == _userInformationDto.Id);
|
|
if (contact != null)
|
|
{
|
|
if (contact.OwnerId == _apiService.CurrentUser.Id)
|
|
{
|
|
// the user requesting this profile initiated a contact relationship with this user
|
|
switch (contact.OwnerStatus)
|
|
{
|
|
case Contact.ContactStatus.AwaitingApprovalFromOther:
|
|
btnAddContact.Enabled = false;
|
|
|
|
using (var ms = new MemoryStream(Resources.RequestSentIcon)) { btnAddContact.Image = Image.FromStream(ms); ms.Dispose(); }
|
|
btnCancelRequest.Visible = true;
|
|
break;
|
|
case Contact.ContactStatus.Accepted:
|
|
btnAddContact.Enabled = true;
|
|
btnAddContact.Image = Resources.RemoveContactIcon;
|
|
btnAddContact.Click += btnAddContact_Click_Remove;
|
|
if (_userInformationDto.Status >= 1) btnMessage.Visible = true;
|
|
break;
|
|
}
|
|
}
|
|
else if (contact.UserId == _apiService.CurrentUser.Id)
|
|
{
|
|
// the user requesting this profile did not initiate a contact relationship with the user
|
|
switch (contact.UserStatus)
|
|
{
|
|
case Contact.ContactStatus.AwaitingApprovalFromSelf:
|
|
btnAddContact.Visible = false;
|
|
|
|
btnAccept.Visible = true;
|
|
btnDecline.Visible = true;
|
|
btnCancelRequest.Visible = false;
|
|
break;
|
|
case Contact.ContactStatus.Accepted:
|
|
btnAccept.Visible = false;
|
|
btnDecline.Visible = false;
|
|
btnCancelRequest.Visible = false;
|
|
|
|
btnAddContact.Visible = true;
|
|
btnAddContact.Image = Resources.RemoveContactIcon;
|
|
btnAddContact.Click += btnAddContact_Click_Remove;
|
|
if (_userInformationDto.Status >= 1) btnMessage.Visible = true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
btnAddContact.Visible = true;
|
|
btnAddContact.Click += btnAddContact_Click_Add;
|
|
}
|
|
}
|
|
|
|
private async void btnAddContact_Click_Add(object sender, EventArgs e)
|
|
{
|
|
var result = await _apiService.AddContactToCurrentUser(_userInformationDto.Id);
|
|
if (result.Success)
|
|
{
|
|
btnAddContact.Enabled = false;
|
|
using (var ms = new MemoryStream(Resources.RequestSentIcon)) { btnAddContact.Image = Image.FromStream(ms); ms.Dispose(); }
|
|
btnCancelRequest.Visible = true;
|
|
|
|
await _gatewayService.RefreshContactsForUser(_userInformationDto);
|
|
}
|
|
}
|
|
|
|
private async void btnAddContact_Click_Remove(object sender, EventArgs e)
|
|
{
|
|
var result = await _apiService.RemoveContactFromCurrentUser(_userInformationDto.Id);
|
|
if (result.Success)
|
|
{
|
|
btnAddContact.Image = Resources.AddContactIcon;
|
|
btnAddContact.Click += btnAddContact_Click_Add;
|
|
btnMessage.Visible = false;
|
|
|
|
await _gatewayService.RefreshContactsForUser(_userInformationDto);
|
|
}
|
|
}
|
|
|
|
private async void btnAccept_Click(object sender, EventArgs e)
|
|
{
|
|
var result = await _apiService.AcceptContactRequest(_userInformationDto.Id);
|
|
if (result.Success)
|
|
{
|
|
btnAccept.Visible = false;
|
|
btnDecline.Visible = false;
|
|
|
|
btnAddContact.Visible = true;
|
|
btnAddContact.Image = Resources.RemoveContactIcon;
|
|
btnAddContact.Click += btnAddContact_Click_Remove;
|
|
if (_userInformationDto.Status >= 1) btnMessage.Visible = true;
|
|
|
|
await _gatewayService.RefreshContactsForUser(_userInformationDto);
|
|
}
|
|
}
|
|
|
|
private async void btnDecline_Click(object sender, EventArgs e)
|
|
{
|
|
var result = await _apiService.RemoveContactFromCurrentUser(_userInformationDto.Id);
|
|
if (result.Success)
|
|
{
|
|
btnAccept.Visible = false;
|
|
btnDecline.Visible = false;
|
|
|
|
btnAddContact.Visible = true;
|
|
btnAddContact.Image = Resources.AddContactIcon;
|
|
btnAddContact.Click += btnAddContact_Click_Add;
|
|
|
|
await _gatewayService.RefreshContactsForUser(_userInformationDto);
|
|
}
|
|
}
|
|
|
|
private async void btnCancelRequest_Click(object sender, EventArgs e)
|
|
{
|
|
var result = await _apiService.RemoveContactFromCurrentUser(_userInformationDto.Id);
|
|
if (result.Success)
|
|
{
|
|
btnAddContact.Enabled = true;
|
|
btnAddContact.Image = Resources.AddContactIcon;
|
|
btnAddContact.Click += btnAddContact_Click_Add;
|
|
|
|
btnCancelRequest.Visible = false;
|
|
|
|
await _gatewayService.RefreshContactsForUser(_userInformationDto);
|
|
}
|
|
}
|
|
|
|
private void btnMessage_Click(object sender, EventArgs e)
|
|
{
|
|
DirectMessage frmDirectMessage = new DirectMessage(_gatewayService, _apiService, _userInformationDto);
|
|
Close();
|
|
frmDirectMessage.Show();
|
|
}
|
|
}
|
|
}
|