/// <summary>
        /// Creator: Lane Sandburg
        /// Created: 04/09/2020
        /// Approver: Jordan Lindo
        ///
        /// populates list and datagrid with created availabilities.
        /// </summary>
        /// <remarks>
        /// Updater:
        /// Updated:
        /// Update:
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnAddToDataGrid_Click(object sender, RoutedEventArgs e)
        {
            EmployeeAvailability availability = new EmployeeAvailability();

            try
            {
                if (cboDayOfWeek.SelectedItem == null)
                {
                    WPFErrorHandler.ErrorMessage("Day cannot be blank", "Validation");
                    cboDayOfWeek.Focus();
                    return;
                }
                else
                {
                    availability.DayOfWeek = cboDayOfWeek.SelectedItem.ToString();
                }
            }
            catch (Exception ex)
            {
                WPFErrorHandler.ErrorMessage(ex.Message, "Validation");
            }

            try
            {
                if (TPStartTime.Value == null || TPStartTime.Value.ToString().Equals(""))
                {
                    WPFErrorHandler.ErrorMessage("StartTime cannot be blank", "Validation");
                    TPStartTime.Focus();
                    return;
                }
                else
                {
                    DateTime time = (DateTime)TPStartTime.Value;
                    availability.StartTime = time.ToString("HH:mm:ss");;
                }
            }
            catch (Exception ex)
            {
                WPFErrorHandler.ErrorMessage(ex.Message, "Validation");
            }

            try
            {
                if (TPEndTime.Value == null || TPEndTime.Value.ToString().Equals(""))
                {
                    WPFErrorHandler.ErrorMessage("EndTime cannot be blank", "Validation");
                    TPEndTime.Focus();
                    return;
                }
                else
                {
                    DateTime time = (DateTime)TPEndTime.Value;
                    availability.EndTime = time.ToString("HH:mm:ss");
                }
            }
            catch (Exception ex)
            {
                WPFErrorHandler.ErrorMessage(ex.Message, "Validation");
            }
            try
            {
                DateTime startTime = (DateTime)TPStartTime.Value;
                DateTime endTime   = (DateTime)TPEndTime.Value;
                if (endTime <= startTime.AddMinutes(59))
                {
                    MessageBox.Show("Shifts must be at least 1Hour.");
                    TPStartTime.Focus();
                    return;
                }
            }
            catch (Exception ex)
            {
                WPFErrorHandler.ErrorMessage(ex.Message, "Validation");
            }

            try
            {
                availability.EmployeeID = _employeeAvailabilityManager.RetrieveLastEmployeeID();
            }
            catch (Exception ex)
            {
                WPFErrorHandler.ErrorMessage(ex.Message, "Validation");
            }

            try
            {
                List <EmployeeAvailability> newAvailabilities = new List <EmployeeAvailability>();
                bool failed = false;
                if (availabilities.Count != 0)
                {
                    foreach (EmployeeAvailability addedAvailability in availabilities)
                    {
                        if (availability.DayOfWeek == addedAvailability.DayOfWeek &&
                            availability.StartTime == addedAvailability.StartTime &&
                            availability.EndTime == addedAvailability.EndTime)
                        {
                            WPFErrorHandler.ErrorMessage("availability " + availability.DayOfWeek.ToString() + " " + availability.StartTime.ToString() + " " + availability.EndTime.ToString() + "  was a duplicate entry", "Validation");
                            failed = true;
                        }
                        else if (availability.DayOfWeek == addedAvailability.DayOfWeek)
                        {
                            DateTime newStartTime   = DateTime.Parse(availability.StartTime);
                            DateTime newEndTime     = DateTime.Parse(availability.EndTime);
                            DateTime addedEndTime   = DateTime.Parse(addedAvailability.EndTime);
                            DateTime addedStartTime = DateTime.Parse(addedAvailability.StartTime);

                            if (newStartTime < addedEndTime)
                            {
                                if (newEndTime < addedStartTime != true)
                                {
                                    WPFErrorHandler.ErrorMessage("current availability " + availability.DayOfWeek.ToString() + " " + availability.StartTime.ToString() + " " + availability.EndTime.ToString() + " overlaps with "
                                                                 + addedAvailability.DayOfWeek.ToString() + " " + addedAvailability.StartTime.ToString() + " " + addedAvailability.EndTime.ToString(), "Validation");
                                    failed = true;
                                }
                                else
                                {
                                    newAvailabilities.Add(availability);
                                }
                            }
                            else
                            {
                                newAvailabilities.Add(availability);
                            }
                        }
                        else
                        {
                            newAvailabilities.Add(availability);
                        }
                    }
                }
                else
                {
                    newAvailabilities.Add(availability);
                }
                if (failed == false)
                {
                    availabilities.Add(newAvailabilities[0]);
                }
            }
            catch (Exception ex)
            {
                WPFErrorHandler.ErrorMessage(ex.Message, "Validation");
            }

            dgAvailability.Items.Refresh();

            if (btnSaveAvail.IsEnabled != true)
            {
                btnSaveAvail.IsEnabled = true;
            }
        }