private void getAttendanceRecords()
        {
            List <TherapistAttendance> lstTherapistAttendance = new List <TherapistAttendance>();
            TherapistAttendance        attendance             = new TherapistAttendance();

            try
            {
                queryString = "SELECT dbspa.tblattendance.ID, dbspa.tbltherapist.description AS 'THERAPIST', dbspa.tblattendance.attendanceDate AS 'DATE', " +
                              "dbspa.tblattendance.timeIn AS 'TIME IN', dbspa.tbltherapist.ID AS 'THERAPIST ID', dbspa.tblattendance.timeOut AS 'TIME OUT' FROM (dbspa.tblattendance INNER JOIN dbspa.tbltherapist ON " +
                              "dbspa.tblattendance.therapistID = dbspa.tbltherapist.ID) WHERE (dbspa.tblattendance.isDeleted = 0) AND (dbspa.tbltherapist.isDeleted = 0) " +
                              "AND (dbspa.tblattendance.attendanceDate = ?)";
                parameters = new List <string>();
                DateTime date = new DateTime();
                if (!string.IsNullOrEmpty(dateFrom.Text))
                {
                    date = DateTime.Parse(dateFrom.Text);
                }
                else
                {
                    date = DateTime.Parse(DateTime.Now.ToShortDateString());
                }

                parameters.Add(date.Year + "/" + date.Month + "/" + date.Day);


                MySqlDataReader reader = conDB.getSelectConnection(queryString, parameters);

                while (reader.Read())
                {
                    attendance.ID        = reader["ID"].ToString();
                    attendance.Therapist = reader["THERAPIST"].ToString();
                    DateTime dte = DateTime.Parse(reader["DATE"].ToString());
                    attendance.AttendanceDate = dte.ToShortDateString();
                    attendance.TimeIn         = reader["TIME IN"].ToString();
                    attendance.TimeOut        = reader["TIME OUT"].ToString();
                    attendance.TherapistID    = reader["THERAPIST ID"].ToString();
                    lstTherapistAttendance.Add(attendance);
                    attendance = new TherapistAttendance();
                }


                dgvAttendance.ItemsSource = lstTherapistAttendance;
                //dgvAttendance.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom("#b7b739"));
                conDB.closeConnection();
            }
            catch (Exception ex)
            {
                System.Windows.MessageBox.Show(ex.Message);
            }
        }
        private void btnDelete_Click(object sender, RoutedEventArgs e)
        {
            DialogResult dialogResult = System.Windows.Forms.MessageBox.Show("Are you sure you want to Delete record?", "Delete Record", MessageBoxButtons.YesNo);

            if (dialogResult == System.Windows.Forms.DialogResult.Yes)
            {
                TherapistAttendance t = dgvAttendance.SelectedItem as TherapistAttendance;

                if (t != null)
                {
                    deleteAttendanceRecord(t.ID);
                    getAttendanceRecords();
                    System.Windows.MessageBox.Show("RECORD DELETED SUCCESSFULLY!");
                    conDB.writeLogFile("DELETED ATTENDANCE RECORD: ID: " + t.ID);
                }
            }
        }
        private bool checkTherapistIfTheSame()
        {
            bool ifthesame = false;

            TherapistModel therapist = cmbTherapist.SelectedItem as TherapistModel;

            TherapistAttendance attM = dgvAttendance.SelectedItem as TherapistAttendance;

            if (therapist != null && attM != null)
            {
                if (therapist.ID1.Equals(attM.TherapistID))
                {
                    ifthesame = true;
                }
            }


            return(ifthesame);
        }
        private void searchAttendanceRecord()
        {
            List <TherapistAttendance> lstTherapistAttendance = new List <TherapistAttendance>();
            TherapistAttendance        attendance             = new TherapistAttendance();

            try
            {
                queryString = "SELECT dbspa.tblattendance.ID, dbspa.tbltherapist.description AS 'THERAPIST', dbspa.tblattendance.attendanceDate AS 'DATE', " +
                              "dbspa.tblattendance.timeIn AS 'TIME IN', dbspa.tbltherapist.ID AS 'THERAPIST ID', dbspa.tblattendance.timeOut AS 'TIME OUT' FROM " +
                              "(dbspa.tblattendance INNER JOIN dbspa.tbltherapist ON dbspa.tblattendance.therapistID = dbspa.tbltherapist.ID) " +
                              "WHERE (dbspa.tblattendance.isDeleted = 0) AND (dbspa.tbltherapist.isDeleted = 0) AND (dbspa.tblattendance.attendanceDate = ?)";

                parameters = new List <string>();
                DateTime date = DateTime.Parse(dateFrom.Text);
                parameters.Add(date.Year + "/" + date.Month + "/" + date.Day);

                MySqlDataReader reader = conDB.getSelectConnection(queryString, parameters);

                while (reader.Read())
                {
                    attendance.ID        = reader["ID"].ToString();
                    attendance.Therapist = reader["THERAPIST"].ToString();
                    DateTime dte = DateTime.Parse(reader["DATE"].ToString());
                    attendance.AttendanceDate = dte.ToShortDateString();
                    attendance.TimeIn         = reader["TIME IN"].ToString();
                    attendance.TimeOut        = reader["TIME OUT"].ToString();
                    attendance.TherapistID    = reader["THERAPIST ID"].ToString();
                    lstTherapistAttendance.Add(attendance);
                    attendance = new TherapistAttendance();
                }

                dgvAttendance.ItemsSource = lstTherapistAttendance;

                conDB.closeConnection();
            }
            catch (Exception ex)
            {
                System.Windows.MessageBox.Show(ex.Message);
            }
        }
        private void updateLogInViaManual()
        {
            if (cmbTherapist.SelectedItem != null)
            {
                TherapistModel therapist = cmbTherapist.SelectedItem as TherapistModel;
                string         recordID  = "";

                try
                {
                    string   strLogInTime = Properties.Settings.Default.LogInTime;
                    string   strHalfday   = Properties.Settings.Default.haldayTime;
                    DateTime loggedTime;
                    DateTime dateNow = DateTime.Parse(dteAttendance.Text);
                    if (chkManualIn.IsChecked == true)
                    {
                        loggedTime = DateTime.Parse(dateNow.ToShortDateString() + " " + dateTimeIn.Text);
                    }
                    else
                    {
                        loggedTime = DateTime.Parse(dateNow.ToShortDateString() + " " + time.Content);
                    }

                    DateTime logInTime = DateTime.Parse(dateNow.ToShortDateString() + " " + strLogInTime);

                    DateTime halfDay = DateTime.Parse(dateNow.ToShortDateString() + " " + strHalfday);

                    int x = loggedTime.CompareTo(logInTime);
                    int y = loggedTime.CompareTo(halfDay);

                    int deductions    = 0;
                    int lateDeduction = 0;
                    int numIfLate     = 0;
                    int numIfHalfDay  = 0;
                    int minutes       = 0;

                    //CHECK IF LOG IN TIME IS HALFDAY
                    if (y >= 0)
                    {
                        //ifHalfDay = true;
                        numIfHalfDay = 1;
                        if ((DateTime.Now.DayOfWeek == DayOfWeek.Saturday) ||
                            (DateTime.Now.DayOfWeek == DayOfWeek.Sunday))
                        {
                            //GET HALDAY DEDUCTION
                            deductions = Properties.Settings.Default.halfdayDeduction;
                        }
                        else
                        {
                            deductions = Properties.Settings.Default.halfdayDeduction;
                        }
                    }
                    else
                    {
                        //CHECK IF LOG IN TIME IS ON OR BEFORE OR AFTER SET LOG IN TIME
                        //-1 BEFORE 1PM
                        //0 - 1PM
                        //1 - after 1PM
                        if (x > 0)
                        {
                            TimeSpan span = loggedTime.Subtract(logInTime);

                            minutes = span.Minutes;

                            if (minutes < 0)
                            {
                                minutes = 0;
                            }
                            else
                            {
                                //ifLate = true;
                                numIfLate = 1;
                            }

                            lateDeduction = checkMinutesToDeduct(minutes);
                        }
                    }

                    parameters = new List <string>();
                    if (checkIfAlreadyLoggedIn())
                    {
                        System.Windows.Forms.DialogResult dialogResult = System.Windows.Forms.MessageBox.Show("THERAPIST: " + therapist.Description + " already has a Time In! " +
                                                                                                              "Update existing Time In record?", "Attendace", System.Windows.Forms.MessageBoxButtons.YesNo);

                        if (dialogResult == System.Windows.Forms.DialogResult.Yes)
                        {
                            TherapistAttendance attM = dgvAttendance.SelectedItem as TherapistAttendance;
                            if (attM != null)
                            {
                                recordID = attM.ID;
                            }

                            queryString = "UPDATE dbspa.tblattendance SET attendanceDate = ?, timeIn = ?, minutesLate = ?, isLate =?, " +
                                          " deduction = ?, ifhalfday = ?, lateDeduction = ? WHERE therapistID = ? AND dbspa.tblattendance.attendanceDate = ?";

                            DateTime date = DateTime.Parse(dteAttendance.Text);
                            parameters.Add(date.Year + "/" + date.Month + "/" + date.Day);
                            parameters.Add(dateTimeIn.Text);
                            parameters.Add(minutes.ToString());
                            parameters.Add(numIfLate.ToString());
                            parameters.Add(deductions.ToString());
                            parameters.Add(numIfHalfDay.ToString());
                            parameters.Add(lateDeduction.ToString());
                            parameters.Add(therapist.ID1);
                            parameters.Add(date.Year + "/" + date.Month + "/" + date.Day);

                            conDB.AddRecordToDatabase(queryString, parameters);
                            System.Windows.MessageBox.Show("Time in for " + therapist.Description + " recorded successfully!");
                            conDB.writeLogFile("TIME IN:(MANUAL) UPDATE EXISTING RECORD FOR: " + therapist.Deduction);
                        }
                        else
                        {
                        }
                    }
                    else
                    {
                        queryString = "INSERT INTO dbspa.tblattendance (attendanceDate, timeIn, therapistID, isDeleted, minutesLate, isLate, deduction, " +
                                      "ifhalfday, lateDeduction, undertimeDeduction, ifUndertime) VALUES(?,?,?,?,?,?,?,?,?,?,?)";
                        parameters = new List <string>();
                        DateTime date = DateTime.Parse(dteAttendance.Text);
                        parameters.Add(date.Year + "/" + date.Month + "/" + date.Day);

                        parameters.Add(dateTimeIn.Text);

                        parameters.Add(therapist.ID1);
                        parameters.Add(0.ToString());
                        parameters.Add(minutes.ToString());
                        parameters.Add(numIfLate.ToString());
                        parameters.Add(deductions.ToString());
                        parameters.Add(numIfHalfDay.ToString());
                        parameters.Add(lateDeduction.ToString());
                        parameters.Add(0.ToString());
                        parameters.Add(0.ToString());

                        conDB.AddRecordToDatabase(queryString, parameters);
                        System.Windows.MessageBox.Show("Time in for " + therapist.Description + " recorded successfully!");
                        conDB.writeLogFile("TIME IN:(MANUAL) SAVE NEW RECORD FOR " + therapist.Deduction);
                    }



                    conDB.closeConnection();
                }
                catch (Exception ex)
                {
                    System.Windows.MessageBox.Show(ex.Message);
                }
                finally
                {
                    getAttendanceRecords();
                }
            }
            else
            {
                System.Windows.MessageBox.Show("Please select Therapist!");
            }
        }
        private void btnTimeOut_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (!string.IsNullOrEmpty(dteAttendance.Text))
                {
                    if (checkTherapistIfTheSame())
                    {
                        if (cmbTherapist.SelectedItem != null)
                        {
                            TherapistModel therapist = cmbTherapist.SelectedItem as TherapistModel;

                            string recordID = "";

                            TherapistAttendance attM = dgvAttendance.SelectedItem as TherapistAttendance;

                            if (attM != null)
                            {
                                recordID = attM.ID;
                            }


                            if (checkTimeIn(Convert.ToInt32(therapist.ID1), attM.ID))
                            {
                                DateTime loggedOutTime;
                                string   strLogOut = Properties.Settings.Default.logOutTime;
                                if (chkManualOut.IsChecked == true)
                                {
                                    loggedOutTime = DateTime.Parse(dteAttendance.Text + " " + dateTimeOut.Text);
                                }
                                else
                                {
                                    loggedOutTime = DateTime.Parse(dteAttendance.Text + " " + time.Content);
                                }

                                DateTime LogOut = DateTime.Parse(dteAttendance.Text + " " + strLogOut);
                                if (loggedOutTime.Date.Equals(LogOut.Date))
                                {
                                    loggedOutTime = loggedOutTime.AddDays(-1);
                                }
                                int x          = loggedOutTime.CompareTo(LogOut);
                                int deductions = 0;
                                //bool ifUndertime = false;
                                int numIfUndertime = 0;
                                if (x < 0)
                                {
                                    deductions = Properties.Settings.Default.undertime;
                                    //ifUndertime = true;
                                    numIfUndertime = 1;
                                }

                                queryString = "UPDATE dbspa.tblattendance SET timeOut = ?, ifUndertime = ? , undertimeDeduction = ? WHERE therapistID = ? AND ID = ?";
                                parameters  = new List <string>();
                                if (chkManualOut.IsChecked == true)
                                {
                                    parameters.Add(dateTimeOut.Text);
                                }
                                else
                                {
                                    parameters.Add(time.Content.ToString());
                                }

                                parameters.Add(numIfUndertime.ToString());
                                parameters.Add(deductions.ToString());
                                parameters.Add(therapist.ID1);
                                parameters.Add(recordID);

                                conDB.AddRecordToDatabase(queryString, parameters);
                                conDB.closeConnection();
                                //getAttendanceRecords();
                                System.Windows.MessageBox.Show("Time out for " + therapist.Description + " recorded successfully!");
                                conDB.writeLogFile("TIME OUT: " + therapist.Deduction);
                            }
                            else
                            {
                                System.Windows.MessageBox.Show("No Time In record found!");
                            }
                        }
                        else
                        {
                            System.Windows.MessageBox.Show("Please select Therapist!");
                        }
                    }
                    else
                    {
                        System.Windows.MessageBox.Show("Selected therapist not equal to selected record!");
                    }
                }
                else
                {
                    System.Windows.MessageBox.Show("Please provide date for attendance!");
                }
            }


            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                getAttendanceRecords();
            }
        }