private async Task SyncUserGroups() { var allGroups = await GroupeAPI.GetAllGroups(); if (allGroups == null) { return; } var activeClientGroups = new List <Groupe>(); foreach (var group in allGroups) { var members = await InvitationAPI.GetGroupMembers(group.id_groupe); if (ActiveClient == null || members.Find(client => client.id_client == ActiveClient.id_client) == null && @group.admin != ActiveClient.id_client) { continue; } activeClientGroups.Add(group); } GroupesListView?.Invoke((MethodInvoker) delegate { GroupesListView.Items.Clear(); foreach (var group in activeClientGroups) { string[] rows = { group.id_groupe.ToString(), group.nom }; GroupesListView.Items.Add(new ListViewItem(rows)); } }); }
protected ApplicationPanel(MainForm parent) { _parent = parent; ClientAPI = new ClientAPI(); FichierAPI = new FichierAPI(); GroupeAPI = new GroupeAPI(); InvitationAPI = new InvitationAPI(); }
private async void DeclineButton_ClickAsync(object sender, System.EventArgs e) { if (NotificationsListView.SelectedItems.Count == 1) { int invitationId = Int32.Parse(NotificationsListView.SelectedItems[0].Text); Invitation invite = new Invitation(); invite.id_invitation = invitationId; await InvitationAPI.AnswerInviteAsync(invite, false); } }
private async void InviteButton_Click(object sender, System.EventArgs e) { var allClients = await ClientAPI.GetAllClients(); var groupClients = await InvitationAPI.GetGroupMembers(ActiveGroup.id_groupe); var invitationForm = new InvitationForm(allClients.Where(c => !groupClients.Contains(c)).ToList()); if (invitationForm.ShowDialog() != DialogResult.OK) { return; } foreach (var client in invitationForm.SelectedClients) { await InvitationAPI.InviteMemberToGroupAsync(client.id_client, ActiveGroup.id_groupe); } }
private async Task SyncMembers() { var members = await InvitationAPI.GetGroupMembers(ActiveGroup.id_groupe); if (members == null) { return; } MemberListBox.Invoke((MethodInvoker) delegate { MemberListBox.Items.Clear(); MemberListBox.DisplayMember = nameof(Client.usager); foreach (var member in members) { MemberListBox.Items.Add(member); } }); }
private async void RemoveMember_Click(object sender, System.EventArgs e) { if (ActiveGroup.admin != ActiveClient.id_client) { return; } if (!(MemberListBox.SelectedItem is Client selectedClient)) { return; } if (selectedClient.id_client == ActiveGroup.admin) { return; } await InvitationAPI.RemoveMemberToGroupAsync(selectedClient.id_client, ActiveGroup.id_groupe); Synchronize(); }
public MainForm() { InitializeComponent(); _homePanel = new HomePanel(this); _groupPanel = new GroupPanel(this); _connectionPanel = new ConnectionPanel(this); _notificationsPanel = new NotificationsPanel(this); CurrentPanel = Panel.Connection; UDPClient.Connect("localhost", UDP_PORT); FichierAPI = new FichierAPI(); GroupeAPI = new GroupeAPI(); InvitationAPI = new InvitationAPI(); LAST_TIME_SYNC_FILES = DateTime.Now; LAST_TIME_SYNC_CLIENTS = DateTime.Now; LAST_TIME_SYNC_GROUPS = DateTime.Now; LAST_TIME_SYNC_NOTIFS = DateTime.Now; Task.Run(PeriodicSynchronization); }
private void GetInvitations() { var invites = Task.Run(() => InvitationAPI.GetInvitationsByClient(ActiveClient.id_client)).Result; if (invites == null) { DialogResult res = MessageBox.Show("La recherche des notifications a échoué.", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } else { NotificationsListView.Invoke((MethodInvoker) delegate { NotificationsListView.Items.Clear(); foreach (Invitation invite in invites) { var group = Task.Run(() => GroupeAPI.GetGroupById(invite.id_groupe_fk)).Result; if (group == null) { DialogResult res = MessageBox.Show("La recherche du groupe a échoué.", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } else { NotificationsListView.Invoke((MethodInvoker) delegate { string[] rows = { invite.id_invitation.ToString(), group.nom }; ListViewItem item = new ListViewItem(rows); item.Name = invite.id_invitation.ToString(); if (!NotificationsListView.Items.ContainsKey(invite.id_invitation.ToString())) { NotificationsListView.Items.Add(item); } }); } } }); } }