public void GenerateCSVContact(ContactSingleton newContact)
        {
            // Method for creating the Data.csv file if it does not exist already and adding any new contact data to the file.
            string prefix = "Contact:";

            if (!File.Exists(path))
            {
                using (StreamWriter writer = File.CreateText(path))
                {
                    var newLine = string.Format("{0},{1},{2},{3},{4},{5}", prefix, newContact.Individual1, newContact.Individual2, newContact.PhoneNumber, newContact.Date, newContact.Time);
                    writer.Write(newLine);
                    writer.Write(Environment.NewLine);
                }
            }
            else
            {
                using (StreamWriter writer = File.AppendText(path))
                {
                    var newLine = string.Format("{0},{1},{2},{3},{4},{5}", prefix, newContact.Individual1, newContact.Individual2, newContact.PhoneNumber, newContact.Date, newContact.Time);
                    writer.Write(newLine);
                    writer.Write(Environment.NewLine);
                }
            }
            writer.Close();
        }
        private void generateListBtn_Click(object sender, RoutedEventArgs e)
        {
            string                date    = chooseDateList.Text;
            string                time    = chooseTimeList.Text;
            ContactSingleton      contact = ContactSingleton.Instance;
            DataHandlingSingleton export  = DataHandlingSingleton.Instance;
            List <String>         numbers = contact.GetPhoneNumbers(date, time);

            for (int i = 0; i < numbers.Count; i++)
            {
                contactList.Items.Add(numbers[i]);
            }
            // Output to CSV
            export.GenerateCSVContactList(numbers);
        }
 public void ImportData()
 {
     // Method for Importing all the data from the Data.csv file if it exists.
     if (File.Exists(path))
     {
         string            currentLine = "";
         UserSingleton     user        = UserSingleton.Instance;
         LocationSingleton location    = LocationSingleton.Instance;
         VisitSingleton    visit       = VisitSingleton.Instance;
         ContactSingleton  contact     = ContactSingleton.Instance;
         using (StreamReader reader = new StreamReader(path))
         {
             while ((currentLine = reader.ReadLine()) != null)
             {
                 var values = currentLine.Split(',');
                 if (values[0] == "User:"******"Location:")
                 {
                     string locationNameTemp = values[1];
                     location.NewLocation(locationNameTemp);
                 }
                 else if (values[0] == "Visit:")
                 {
                     string userIdTemp   = values[1];
                     string dateTemp     = values[2];
                     string timeTemp     = values[3];
                     string locationTemp = values[4];
                     visit.RecordVisit(userIdTemp, dateTemp, timeTemp, locationTemp);
                 }
                 else if (values[0] == "Contact:")
                 {
                     string individual1Temp   = values[1];
                     string individual2Temp   = values[2];
                     string individual2Number = values[3];
                     string dateTemp          = values[4];
                     string timeTemp          = values[5];
                     contact.RecordContact(individual1Temp, individual2Temp, individual2Number, dateTemp, timeTemp);
                 }
             }
         }
     }
 }
        private void recordContactBtn_Click(object sender, RoutedEventArgs e)
        {
            ContactSingleton      newContact = ContactSingleton.Instance;
            UserSingleton         user       = UserSingleton.Instance;
            DataHandlingSingleton export     = DataHandlingSingleton.Instance;
            string individual1UserId         = "";
            string individual2UserId         = "";
            string individual2PhoneNumber    = "";

            chooseIndividualList.Items.Add(individualList1.Text);
            // Separate date and time used for generating file
            string date = Convert.ToString(System.DateTime.Now.ToString("dd/MM/yyyy"));

            // Adding date of contact to date combo box, unless the date already exists to avoid duplicates
            if (!chooseDateList.Items.Contains(date))
            {
                chooseDateList.Items.Add(date);
            }
            string time = System.DateTime.Now.ToShortTimeString();

            // Adding time of contact to time combo box, unless the time already exists to avoid duplicates
            if (!chooseDateList.Items.Contains(time))
            {
                chooseTimeList.Items.Add(time);
            }
            foreach (UserSingleton aUser in user.Users)
            {
                if (aUser.UserId.Equals(individualList1.Text))
                {
                    individual1UserId = aUser.UserId;
                }
                else if (aUser.UserId.Equals(individualList2.Text))
                {
                    individual2UserId      = aUser.UserId;
                    individual2PhoneNumber = aUser.PhoneNumber;
                }
            }
            newContact.RecordContact(individual1UserId, individual2UserId, individual2PhoneNumber, date, time);
            // Reset displayed text
            individualList1.Text = "";
            individualList2.Text = "";
            // Output data to CSV
            export.GenerateCSVContact(newContact.CurrentContact);
        }
        public MainWindow()
        {
            InitializeComponent();
            // Importing all data contained within Data.csv file
            UserSingleton         user     = UserSingleton.Instance;
            LocationSingleton     location = LocationSingleton.Instance;
            VisitSingleton        visit    = VisitSingleton.Instance;
            ContactSingleton      contact  = ContactSingleton.Instance;
            DataHandlingSingleton data     = DataHandlingSingleton.Instance;

            // Invoke method to import all data from file
            data.ImportData();
            foreach (UserSingleton aUser in user.Users)
            {
                // Iterate through all user objects and populate user lists
                // Input validation to prevent duplicates
                if (!userList.Items.Contains(aUser.UserId))
                {
                    userList.Items.Add(aUser.UserId);
                }
                if (!individualList1.Items.Contains(aUser.UserId))
                {
                    individualList1.Items.Add(aUser.UserId);
                }
                if (!individualList2.Items.Contains(aUser.UserId))
                {
                    individualList2.Items.Add(aUser.UserId);
                }
                if (!chooseIndividualList.Items.Contains(aUser.UserId))
                {
                    chooseIndividualList.Items.Add(aUser.UserId);
                }
            }
            foreach (LocationSingleton aLocation in location.Locations)
            {
                // Iterate through all location objects and populate location lists
                // Input validation to prevent duplicates
                if (!locationList.Items.Contains(aLocation.LocationName))
                {
                    locationList.Items.Add(aLocation.LocationName);
                }
                if (!chooseVisitLocationList.Items.Contains(aLocation.LocationName))
                {
                    chooseVisitLocationList.Items.Add(aLocation.LocationName);
                }
            }
            foreach (VisitSingleton aVisit in visit.Visits)
            {
                // Iterate through all visit objects and populate visit lists
                // Input validation to prevent duplicates
                if (!chooseVisitDateList.Items.Contains(aVisit.Date))
                {
                    chooseVisitDateList.Items.Add(aVisit.Date);
                }
                if (!chooseVisitDate2List.Items.Contains(aVisit.Date))
                {
                    chooseVisitDate2List.Items.Add(aVisit.Date);
                }
                if (!chooseVisitTimeList.Items.Contains(aVisit.Time))
                {
                    chooseVisitTimeList.Items.Add(aVisit.Time);
                }
                if (!chooseVisitTime2List.Items.Contains(aVisit.Time))
                {
                    chooseVisitTime2List.Items.Add(aVisit.Time);
                }
            }
            foreach (ContactSingleton aContact in contact.Contacts)
            {
                // Iterate through all contact objects and populate contact lists
                // Input validation to prevent duplicates
                if (!chooseIndividualList.Items.Contains(aContact.Individual1))
                {
                    chooseIndividualList.Items.Add(aContact.Individual1);
                }
                if (!chooseDateList.Items.Contains(aContact.Date))
                {
                    chooseDateList.Items.Add(aContact.Date);
                }
                if (!chooseTimeList.Items.Contains(aContact.Time))
                {
                    chooseTimeList.Items.Add(aContact.Time);
                }
            }
        }