private static bool AddClient(out string SeasonID)
        {
            bool Result = false;
            SeasonID = null;

            Request01 RequestContent = new Request01() { RequestType = "Management.AddClient", Parameters = new List<string>() { OverallInformations.ReplyQueueOk.QueueName } };

            string ResponseString;
            if (SendManagementRequest(RequestContent, out ResponseString))
            {
                if (ResponseString == "#")
                {
                    MessageBox.Show("Hiện tại Server không tiếp nhận mọi yêu cầu từ phía Client." + "\n" + "Vui lòng chờ đợi, hoặc xem thông báo của Admin.");
                }
                else if (!String.IsNullOrWhiteSpace(ResponseString))
                {
                    Result = true;
                    SeasonID = ResponseString;
                }
                else
                {
                    MessageBox.Show("Dữ liệu được trả về không đúng như mong đợi. Thử khởi động lại Management Client để khắc phục vấn đề.");
                }
            }

            return Result;
        }
        private void Clear_Button_Click(object sender, RoutedEventArgs e)
        {
            Request01 RequestContent = new Request01() { RequestType = "Management.DeleteAllImages", Parameters = new List<string>() { OverallInformations.SeasonID } };

            string ResponseString;
            if (LauncherManagement.SendManagementRequest(RequestContent, out ResponseString))
            {
                if (ResponseString == "#")
                {
                    MessageBox.Show("Server không trực tuyến.");
                }
                else
                {
                    ResponseStruct ResponseContent = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponseStruct>(ResponseString);
                    if (ResponseContent.Status == ResponseStatusType.Done)
                    {
                        MessageBox.Show(LauncherManagement.MsgString(ResponseContent.Error, ResponseContent.Broadcast));
                    }
                    else if (ResponseContent.Status == ResponseStatusType.Fail)
                    {
                        MessageBox.Show(LauncherManagement.MsgString(ResponseContent.Error, ResponseContent.Broadcast));
                    }
                    else
                    {
                        MessageBox.Show("Không rõ dữ liệu trả về từ Launcher Server.");
                    }
                }
            }
        }
        public static bool SendManagementRequest(Request01 RequestIn, out string ResponseOut)
        {
            bool OrderOk = false;
            ResponseOut = String.Empty;

            string message = Newtonsoft.Json.JsonConvert.SerializeObject(RequestIn);
            byte[] messageBytes = Encoding.UTF8.GetBytes(message);

            string corrID = Guid.NewGuid().ToString();
            IBasicProperties replyProps = OverallInformations.channel.CreateBasicProperties();
            replyProps.CorrelationId = corrID;
            replyProps.ReplyTo = OverallInformations.ReplyQueueOk.QueueName;

            OverallInformations.channel.BasicPublish(exchange: OverallInformations.LauncherServerClientExchange, routingKey: OverallInformations.ManagementLightRouterKey, basicProperties: replyProps, body: messageBytes);

            LauncherReadyEvent.WaitOne();

            if (ea.BasicProperties.CorrelationId == corrID)
            {
                ResponseOut = Encoding.UTF8.GetString(ea.Body);
                OrderOk = true;
            }

            return OrderOk;
        }
        private void LoginButton_Click(object sender, RoutedEventArgs e)
        {
            Request01 RequestContent = new Request01() { RequestType = "Management.Login", Parameters = new List<string>() { OverallInformations.SeasonID, UserNameTextBox.Text, MainPasswordBox.Password } };

            string ResponseString;
            if (LauncherManagement.SendManagementRequest(RequestContent, out ResponseString))
            {
                if (ResponseString == "#")
                {
                    MessageBox.Show("Hiện tại Server không tiếp nhận mọi yêu cầu từ phía Client." + "\n" + "Vui lòng chờ đợi, hoặc xem thông báo của Admin.");
                }
                else
                {
                    ResponseStruct ResponseContent = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponseStruct>(ResponseString);
                    if (ResponseContent.Status == ResponseStatusType.Done)
                    {
                        MainWindow MainWindowInstance = new MainWindow();
                        MessageBox.Show(LauncherManagement.MsgString(null, ResponseContent.Broadcast));
                        MainWindowInstance.Show();
                        IsExit = false;
                        Close();
                    }
                    else if (ResponseContent.Status == ResponseStatusType.Fail)
                    {
                        MessageBox.Show(LauncherManagement.MsgString(ResponseContent.Error, ResponseContent.Broadcast));
                    }
                }
            }
        }
        private void ExitButton_Click(object sender, RoutedEventArgs e)
        {
            Request01 RequestContent = new Request01() { RequestType = "Management.Logout", Parameters = new List<string>() { OverallInformations.SeasonID } };

            string ResponseString;
            LauncherManagement.SendManagementRequest(RequestContent, out ResponseString);

            Close();
        }
        private void DeleteClient_Button_Click(object sender, RoutedEventArgs e)
        {
            if (ListOfClient_ListBox.SelectedItem != null)
            {
                string UserNameOfClient = Convert.ToString(ListOfClient_ListBox.SelectedItem);
                LauncherClientInformations LauncherClientToRemove = null;
                foreach (LauncherClientInformations i in LauncherClients)
                {
                    if (i.UserName == UserNameOfClient)
                    {
                        LauncherClientToRemove = i;
                        break;
                    }
                }

                if (LauncherClientToRemove != null)
                {
                    Request01 RequestContent = new Request01() { RequestType = "Management.DeleteLauncherClient", Parameters = new List<string>() { OverallInformations.SeasonID, LauncherClientToRemove.SeasonID } };

                    string ResponseString;
                    if (LauncherManagement.SendManagementRequest(RequestContent, out ResponseString))
                    {
                        if (ResponseString == "#")
                        {
                            MessageBox.Show("Server không trực tuyến.");
                        }
                        else
                        {
                            ResponseStruct ResponseContent = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponseStruct>(ResponseString);

                            if (ResponseContent.Status == ResponseStatusType.Done)
                            {
                                LauncherClients.Remove(LauncherClientToRemove);
                                ListOfClient_ListBox.Items.Remove(ListOfClient_ListBox.SelectedItem);
                                MessageBox.Show(LauncherManagement.MsgString(null, ResponseContent.Broadcast));
                            }
                            else if (ResponseContent.Status == ResponseStatusType.Fail)
                            {
                                MessageBox.Show(LauncherManagement.MsgString(ResponseContent.Error, ResponseContent.Broadcast));
                            }
                        }
                    }
                }
            }
        }
        private void ImageList_ListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (ImageList_ListView.SelectedItem != null)
            {
                Base64Utils base64Utils = new Base64Utils();
                ImageSavedInformations imageInfo = (ImageSavedInformations)ImageList_ListView.SelectedItem;

                Request01 RequestContent = new Request01() { RequestType = "Management.GetImageByID", Parameters = new List<string>() { OverallInformations.SeasonID, Convert.ToString(imageInfo.ID) } };

                string ResponseString;
                if (LauncherManagement.SendManagementRequest(RequestContent, out ResponseString))
                {
                    if (ResponseString == "#")
                    {
                        MessageBox.Show("Server không trực tuyến.");
                    }
                    else
                    {
                        ResponseStruct ResponseContent = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponseStruct>(ResponseString);

                        if (ResponseContent.Status == ResponseStatusType.Done)
                        {
                            ImageViewerWindow imageviewer = new ImageViewerWindow() { inputImage = base64Utils.Base64ToImage(Convert.ToString(ResponseContent.Content)) };
                            imageviewer.Topmost = true;
                            imageviewer.Show();
                        }
                        else if (ResponseContent.Status == ResponseStatusType.Fail)
                        {
                            MessageBox.Show(LauncherManagement.MsgString(ResponseContent.Error, ResponseContent.Broadcast));
                        }
                        else
                        {
                            MessageBox.Show("Không rõ dữ liệu trả về từ Server.");
                        }
                    }
                }
            }
        }
        private void UpdateUserList()
        {
            Request01 RequestContent = new Request01() { RequestType = "Management.GetListOfUsersHaveImages", Parameters = new List<string>() { OverallInformations.SeasonID } };

            string ResponseString;
            if (LauncherManagement.SendManagementRequest(RequestContent, out ResponseString))
            {
                if (ResponseString == "#")
                {
                    MessageBox.Show("Server không trực tuyến.");
                }
                else
                {
                    ResponseStruct ResponseContent = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponseStruct>(ResponseString);

                    if (ResponseContent.Status == ResponseStatusType.Done)
                    {
                        User_ListBox.Items.Clear();
                        List<string> Content = Newtonsoft.Json.JsonConvert.DeserializeObject<List<string>>(Convert.ToString(ResponseContent.Content));
                        foreach (string i in Content)
                        {
                            User_ListBox.Items.Add(i);
                        }
                    }
                    else if (ResponseContent.Status == ResponseStatusType.Fail)
                    {
                        MessageBox.Show(LauncherManagement.MsgString(ResponseContent.Error, ResponseContent.Broadcast));
                    }
                }
            }
        }
        private void User_ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            ImageList_ListView.Items.Clear();

            if (User_ListBox.SelectedItem !=null)
            {
                Request01 RequestContent = new Request01() { RequestType = "Management.GetListOfImagesOfAnUser", Parameters = new List<string>() { OverallInformations.SeasonID, Convert.ToString(User_ListBox.SelectedItem) } };

                string ResponseString;
                if(LauncherManagement.SendManagementRequest(RequestContent, out ResponseString))
                {
                    if (ResponseString == "#")
                    {
                        MessageBox.Show("Server không trực tuyến.");
                    }
                    else
                    {
                        ResponseStruct ResponseContent = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponseStruct>(ResponseString);

                        if (ResponseContent.Status == ResponseStatusType.Done)
                        {
                            List<ImageSavedInformations> Content = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ImageSavedInformations>>(Convert.ToString(ResponseContent.Content));
                            foreach (ImageSavedInformations i in Content)
                            {
                                ImageList_ListView.Items.Add(new ImageSavedInformations { ID = i.ID, UserName = i.UserName, ShotTime = i.ShotTime });
                            }
                        }
                        else if (ResponseContent.Status == ResponseStatusType.Fail)
                        {
                            MessageBox.Show(LauncherManagement.MsgString(ResponseContent.Error, ResponseContent.Broadcast));
                        }
                        else
                        {
                            MessageBox.Show("Không rõ dữ liệu trả về từ Server.");
                        }
                    }
                }
            }
        }
        private void UpdateClientList_Button_Click(object sender, RoutedEventArgs e)
        {
            Request01 RequestContent = new Request01() { RequestType = "Management.GetListOfLauncherClient", Parameters = new List<string>() { OverallInformations.SeasonID } };

            string ResponseString;
            if (LauncherManagement.SendManagementRequest(RequestContent, out ResponseString))
            {
                if (ResponseString == "#")
                {
                    MessageBox.Show("Server không trực tuyến.");
                }
                else
                {
                    ResponseStruct ResponseContent = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponseStruct>(ResponseString);

                    if (ResponseContent.Status == ResponseStatusType.Done)
                    {
                        ListOfClient_ListBox.Items.Clear();
                        LauncherClients.Clear();
                        LauncherClients = Newtonsoft.Json.JsonConvert.DeserializeObject<List<LauncherClientInformations>>(Convert.ToString(ResponseContent.Content));
                        foreach (LauncherClientInformations i in LauncherClients)
                        {
                            if (!String.IsNullOrWhiteSpace(i.UserName))
                            {
                                ListOfClient_ListBox.Items.Add(i.UserName);
                            }
                        }
                    }
                    else if (ResponseContent.Status == ResponseStatusType.Fail)
                    {
                        MessageBox.Show(LauncherManagement.MsgString(ResponseContent.Error, ResponseContent.Broadcast));
                    }
                }
            }
        }