//Processes SMSs
        private void ProcessSMS()
        {
            //Processes Textspeak abbreviations and saves to ProcessedMessages.json
            var MessageHeaderText = MessageHeaderTextBox.ToString();
            var MessageBodyText   = MessageBodyTextBox.ToString();

            MessageBodyText = GetAbbreviations(MessageBodyText);

            MessagesProcessor msgProcessor = new MessagesProcessor()
            {
                msgType = MessageHeaderText,
                msgBody = MessageBodyText
            };

            File.AppendAllText("C:/VS Database/ProcessedMessages.json", JsonConvert.SerializeObject(msgProcessor));
            MessageBox.Show("Message Processed Successfully:" + Environment.NewLine + "Message Type - " + MessageHeaderText + Environment.NewLine + "Message Body - " + MessageBodyText);
        }
        //Processes Emails
        private void ProcessStandardEmail()
        {
            //Validates URL's and replaces them with <URL Quarantined> and saves to Quarantine.csv
            var MessageHeaderText = MessageHeaderTextBox.ToString();
            var MessageBodyText   = MessageBodyTextBox.ToString();

            string[] splitMessageBodyText = MessageBodyTextBox.ToString().Split(' ');

            for (int i = 4; i < splitMessageBodyText.Length; i++)
            {
                Uri result;

                bool isUri = Uri.TryCreate(splitMessageBodyText[i], UriKind.Absolute, out result) &&
                             (result.Scheme == Uri.UriSchemeHttp || result.Scheme == Uri.UriSchemeHttps);

                if (isUri == true)
                {
                    Quarantine quarantine = new Quarantine()
                    {
                        link = splitMessageBodyText[i]
                    };

                    Database.Quarantine_Database.SaveToQuarantine save1 = new Database.Quarantine_Database.SaveToQuarantine();

                    if (!save1.ToCsv(quarantine))
                    {
                        MessageBox.Show("Error while saving\n" + save1.ErrorCode);
                    }
                    else
                    {
                        save1 = null;
                    }

                    MessageBodyText = MessageBodyText.Replace(splitMessageBodyText[i], "<URL Quarantined>");
                }
            }
            MessagesProcessor msgProcessor = new MessagesProcessor()
            {
                msgType = MessageHeaderText,
                msgBody = MessageBodyText
            };

            File.AppendAllText("C:/VS Database/ProcessedMessages.json", JsonConvert.SerializeObject(msgProcessor));
            MessageBox.Show("Message Processed Successfully:" + Environment.NewLine + "Message Type - " + MessageHeaderText + Environment.NewLine + "Message Body - " + MessageBodyText);
        }
        //On button click it makes sure that all values are processed and then sent to a JSON file
        public void ProcessButtonClick()
        {
            if (string.IsNullOrWhiteSpace(MessageHeaderTextBox) || string.IsNullOrWhiteSpace(MessageBodyTextBox))
            {
                MessageBox.Show("Please enter all the values");
                return;
            }

            switch (CheckMessageType(MessageHeaderTextBox.ToString()))
            {
            case "E":
            case "e":
                var result0 = ValidateEmail(MessageBodyTextBox.ToString());

                if (result0 == "processstandard")
                {
                    ProcessStandardEmail();
                }
                else if (result0 == "processsir")
                {
                    ProcessSIREmail();
                }
                else
                {
                    MessageBox.Show(result0);
                }
                break;

            case "T":
            case "t":
                var result1 = ValidateTweet(MessageBodyTextBox.ToString());

                if (result1 == "processtweet")
                {
                    ProcessTweet();
                }
                else
                {
                    MessageBox.Show(result1);
                }
                break;

            case "S":
            case "s":
                var result2 = ValidateSMS(MessageBodyTextBox.ToString());

                if (result2 == "processsms")
                {
                    ProcessSMS();
                }
                else
                {
                    MessageBox.Show(result2);
                }
                break;

            case "ERROR1":
                MessageBox.Show("Message Header must include 9 numbers");
                break;

            case "ERROR2":
                MessageBox.Show("Message type must start with either 'S', 'E' or 'T'.");
                break;

            default:
                MessageBox.Show("Couldn't process header");
                break;
            }
        }
        //Processes Tweets
        private void ProcessTweet()
        {
            //Processes textspeak abbreviations and saves to ProcessedMessages.json
            Database.Textspeak_Abbreviations_Database.LoadTextspeakAbbreviations load = new Database.Textspeak_Abbreviations_Database.LoadTextspeakAbbreviations();

            var MessageHeaderText = MessageHeaderTextBox.ToString();
            var MessageBodyText   = MessageBodyTextBox.ToString();

            string[] splitMessageBodyText = MessageBodyTextBox.ToString().Split(' ');

            MessageBodyText = GetAbbreviations(MessageBodyText);

            MessagesProcessor msgProcessor = new MessagesProcessor()
            {
                msgType = MessageHeaderText,
                msgBody = MessageBodyText
            };

            File.AppendAllText("C:/VS Database/ProcessedMessages.json", JsonConvert.SerializeObject(msgProcessor));
            MessageBox.Show("Message Processed Successfully:" + Environment.NewLine + "Message Type - " + MessageHeaderText + Environment.NewLine + "Message Body - " + MessageBodyText);

            //Processes Mentions and saves to Mentions.csv
            Database.Mentions_Database.LoadMentionsFromFile load2 = new Database.Mentions_Database.LoadMentionsFromFile();
            Database.Mentions_Database.SaveMentionsToFile   save2 = new Database.Mentions_Database.SaveMentionsToFile();

            if (!load2.FromCSV())
            {
                MentionsList = new ObservableCollection <Mentions>();
            }
            else
            {
                MentionsList = new ObservableCollection <Mentions>(load2.MentionsList);

                var NofMentions = 0;
                for (int i = 2; i < splitMessageBodyText.Length; i++)
                {
                    var @char = splitMessageBodyText[i];
                    if (@char[0] == '@')
                    {
                        foreach (var Mentions in MentionsList)
                        {
                            if (Mentions.Users == splitMessageBodyText[i])
                            {
                                NofMentions = Mentions.NofUsers + 1;
                            }
                            else
                            {
                                NofMentions = 1;
                            }
                        }

                        Mentions mentions = new Mentions()
                        {
                            Users    = splitMessageBodyText[i],
                            NofUsers = NofMentions
                        };

                        if (!save2.ToCsv(mentions))
                        {
                            MessageBox.Show("Error while saving to mentions\n" + save2.ErrorCode);
                        }
                        else
                        {
                            save2 = null;
                        }
                    }
                }
            }

            //Processes Trending hashtags and adds it to Trending.csv
            Database.Trending_Database.LoadTrendingFromFile load3 = new Database.Trending_Database.LoadTrendingFromFile();
            Database.Trending_Database.SaveTrendingToFile   save3 = new Database.Trending_Database.SaveTrendingToFile();

            if (!load3.FromCSV())
            {
                TrendingList = new ObservableCollection <Trending>();
            }
            else
            {
                TrendingList = new ObservableCollection <Trending>(load3.TrendingList);

                var NofTrending = 0;
                for (int i = 2; i < splitMessageBodyText.Length; i++)
                {
                    var @char = splitMessageBodyText[i];
                    if (@char[0] == '#')
                    {
                        foreach (var Trending in TrendingList)
                        {
                            if (Trending.Hashtags == splitMessageBodyText[i])
                            {
                                NofTrending = Trending.NofHashtags + 1;
                            }
                            else
                            {
                                NofTrending = 1;
                            }
                        }

                        Trending trending = new Trending()
                        {
                            Hashtags    = splitMessageBodyText[i],
                            NofHashtags = NofTrending
                        };

                        if (!save3.ToCsv(trending))
                        {
                            MessageBox.Show("Error while saving to Trending\n" + save3.ErrorCode);
                        }
                        else
                        {
                            save2 = null;
                        }
                    }
                }
            }
        }
        private void ProcessSIREmail()
        {
            //Validates URL's and replaces them with <URL Quarantined> and saves to Quarantine.csv
            var MessageHeaderText = MessageHeaderTextBox.ToString();
            var MessageBodyText   = MessageBodyTextBox.ToString();

            string[] splitMessageBodyText = MessageBodyTextBox.ToString().Split(' ');

            for (int i = 4; i < splitMessageBodyText.Length; i++)
            {
                Uri result;

                bool isUri = Uri.TryCreate(splitMessageBodyText[i], UriKind.Absolute, out result) &&
                             (result.Scheme == Uri.UriSchemeHttp || result.Scheme == Uri.UriSchemeHttps);

                if (isUri == true)
                {
                    Quarantine quarantine = new Quarantine()
                    {
                        link = splitMessageBodyText[i]
                    };

                    Database.Quarantine_Database.SaveToQuarantine save1 = new Database.Quarantine_Database.SaveToQuarantine();

                    if (!save1.ToCsv(quarantine))
                    {
                        MessageBox.Show("Error while saving\n" + save1.ErrorCode);
                    }
                    else
                    {
                        save1 = null;
                    }

                    MessageBodyText = MessageBodyText.Replace(splitMessageBodyText[i], "<URL Quarantined>");
                }
            }
            MessagesProcessor msgProcessor = new MessagesProcessor()
            {
                msgType = MessageHeaderText,
                msgBody = MessageBodyText
            };

            File.AppendAllText("C:/VS Database/ProcessedMessages.json", JsonConvert.SerializeObject(msgProcessor));
            MessageBox.Show("Message Processed Successfully:" + Environment.NewLine + "Message Type - " + MessageHeaderText + Environment.NewLine + "Message Body - " + MessageBodyText);

            //Saves SI to SIReportsDB.csv
            Database.SIReports_Database.SaveSIReportsToFile save4 = new Database.SIReports_Database.SaveSIReportsToFile();

            string[] NOIArray1w =
            { "Raid",
              "Terrorism" };

            var noi1w      = splitMessageBodyText[12];
            var noifound1w = Array.Exists(NOIArray1w, s => s.Equals(noi1w));

            string[] NOIArray2w =
            { "Staff Attack",
              "Device Damage",
              "Customer Attack",
              "Staff Abuse",
              "Bomb Threat",
              "Suspicious Incident",
              "Sport Injury" };

            var noi2w      = splitMessageBodyText[12] + " " + splitMessageBodyText[13];
            var noifound2w = Array.Exists(NOIArray2w, s => s.Equals(noi2w));

            string[] NOIArray3w =
            { "Theft of Properties",
              "Personal Info Leak" };

            var noi3w      = splitMessageBodyText[12] + " " + splitMessageBodyText[13] + " " + splitMessageBodyText[14];
            var noifound3w = Array.Exists(NOIArray3w, s => s.Equals(noi3w));

            if (noifound1w == true)
            {
                SIReports siReports = new SIReports()
                {
                    SportCentreCode  = splitMessageBodyText[8],
                    NatureOfIncident = splitMessageBodyText[12]
                };

                if (!save4.ToCsv(siReports))
                {
                    MessageBox.Show("Error while saving\n" + save4.ErrorCode);
                }
                else
                {
                    save4 = null;
                }
            }

            if (noifound2w == true)
            {
                SIReports siReports = new SIReports()
                {
                    SportCentreCode  = splitMessageBodyText[8],
                    NatureOfIncident = splitMessageBodyText[12] + " " + splitMessageBodyText[13]
                };

                if (!save4.ToCsv(siReports))
                {
                    MessageBox.Show("Error while saving\n" + save4.ErrorCode);
                }
                else
                {
                    save4 = null;
                }
            }

            if (noifound3w == true)
            {
                SIReports siReports = new SIReports()
                {
                    SportCentreCode  = splitMessageBodyText[8],
                    NatureOfIncident = splitMessageBodyText[12] + " " + splitMessageBodyText[13] + " " + splitMessageBodyText[14]
                };

                if (!save4.ToCsv(siReports))
                {
                    MessageBox.Show("Error while saving\n" + save4.ErrorCode);
                }
                else
                {
                    save4 = null;
                }
            }
        }