Пример #1
0
        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);
     }
 }
Пример #4
0
        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);
            }
        }
Пример #5
0
        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);
                }
            });
        }
Пример #6
0
        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();
        }
Пример #7
0
        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);
                                }
                            });
                        }
                    }
                });
            }
        }