Пример #1
0
        internal static object GetLatenessReport(string resumptionGrace, string startDate, string endDate)
        {
            DataTable result = new DataTable();
            List <AttendanceDetailsObject> res = new List <AttendanceDetailsObject>();

            string query = " SELECT " +
                           " eid_base_data.PROJECTPRIMARYCODE as 'PPCode'," +
                           " eid_base_data.WEBACCESSPIN as 'UserId'," +
                           " eid_base_data.TITLEPREFIX as 'Title'," +
                           " eid_base_data.SURNAME as 'Surname'," +
                           " eid_base_data.FIRSTNAME as 'First_Name'," +
                           " eid_base_data.MIDDLENAME as 'Middle_Name'," +
                           " eid_attendance_log.ClockDate," +
                           " COUNT(eid_attendance_log.ClockTime) as 'Clock_Count'," +
                           " MIN(eid_attendance_log.ClockTime) as 'Clock_In'," +
                           " MAX(eid_attendance_log.ClockTime) as 'Clock_Out'," +
                           " TIMEDIFF(MAX(eid_attendance_log.TransactionDateTime), MIN(eid_attendance_log.TransactionDateTime)) as 'Time_Spent'" +
                           " FROM" +
                           " eid_attendance_log" +
                           " INNER JOIN eid_base_data ON eid_attendance_log.userPrimaryCode = eid_base_data.PROJECTPRIMARYCODE" +
                           string.Format(" WHERE eid_attendance_log.ClockDate>= '{0}' AND eid_attendance_log.ClockDate <= '{1}'", startDate, endDate) +
                           " GROUP BY" +
                           " eid_attendance_log.userPrimaryCode, eid_attendance_log.ClockDate" +
                           string.Format(" HAVING  Clock_In > '{0}' ORDER BY eid_attendance_log.TransactionDateTime", resumptionGrace)
            ;


            MySqlDataAdapter Adapter = new MySqlDataAdapter(query, myConn);

            Adapter.Fill(result);

            foreach (DataRow row in result.Rows)
            {
                double weeklyWorkHours      = Math.Round(TimeSpan.Parse(row["Time_Spent"].ToString()).TotalHours, 0);
                string summarisedWorkHours  = weeklyWorkHours > 40 ? "40 Hours" : weeklyWorkHours.ToString() + " Hours";
                AttendanceDetailsObject obj = new AttendanceDetailsObject(
                    row["UserId"].ToString(),
                    row["Title"].ToString(),
                    row["Surname"].ToString(),
                    row["First_Name"].ToString(),
                    row["Middle_Name"].ToString(),
                    FindUserMinistry(row["PPCode"].ToString(), Settings.Default.CDataField1),
                    ((DateTime)row["ClockDate"]).ToString("yyyy-MMM-dd"),
                    row["Clock_Count"].ToString(),
                    row["Clock_In"].ToString(),
                    row["Clock_Out"].ToString(),
                    Math.Round(TimeSpan.Parse(row["Time_Spent"].ToString()).TotalHours, 0).ToString()
                    );

                res.Add(obj);
            }

            return(res);
        }
Пример #2
0
        internal static List <AttendanceDetailsObject> GeMovementReport(string startDate, string endDate)
        {
            DataTable result = new DataTable();
            List <AttendanceDetailsObject> res = new List <AttendanceDetailsObject>();

            string query = " SELECT " +
                           " eid_base_data.PROJECTPRIMARYCODE as 'PPCode'," +
                           " eid_base_data.WEBACCESSPIN as 'UserId'," +
                           " eid_base_data.TITLEPREFIX as 'Title'," +
                           " eid_base_data.SURNAME as 'Surname'," +
                           " eid_base_data.FIRSTNAME as 'First_Name'," +
                           " eid_base_data.MIDDLENAME as 'Middle_Name'," +
                           " eid_attendance_log.ClockDate as 'Date'," +
                           " eid_attendance_log.ClockTime as 'Clock_Time'" +
                           " FROM" +
                           " eid_attendance_log" +
                           " LEFT JOIN eid_base_data ON eid_attendance_log.userPrimaryCode = eid_base_data.PROJECTPRIMARYCODE" +
                           string.Format(" WHERE eid_attendance_log.ClockDate>= '{0}' AND eid_attendance_log.ClockDate <= '{1}'", startDate, endDate) +
                           " ORDER BY eid_attendance_log.TransactionDateTime";

            MySqlDataAdapter Adapter = new MySqlDataAdapter(query, myConn);

            Adapter.Fill(result);

            foreach (DataRow row in result.Rows)
            {
                AttendanceDetailsObject obj = new AttendanceDetailsObject(
                    row["UserId"].ToString(),
                    row["Title"].ToString(),
                    row["Surname"].ToString(),
                    row["First_Name"].ToString(),
                    row["Middle_Name"].ToString(),
                    FindUserMinistry(row["PPCode"].ToString(), Settings.Default.CDataField1),
                    ((DateTime)row["Date"]).ToString("yyyy-MMM-dd"),
                    null,
                    row["Clock_Time"].ToString(),
                    null,
                    null
                    );

                res.Add(obj);
            }
            return(res);
        }
Пример #3
0
        internal static List <AttendanceDetailsObject> GeAbsenteeReport(string startDate, string endDate)
        {
            DataTable result = new DataTable();
            List <AttendanceDetailsObject> res = new List <AttendanceDetailsObject>();

            string query = " SELECT " +
                           " eid_base_data.PROJECTPRIMARYCODE as 'PPCode'," +
                           " WEBACCESSPIN as 'UserId'," +
                           " TITLEPREFIX as 'Title'," +
                           " SURNAME as 'Surname'," +
                           " FIRSTNAME as 'First_Name'," +
                           " MIDDLENAME as 'Middle_Name'" +
                           " FROM" +
                           " eid_base_data" +
                           " WHERE PROJECTPRIMARYCODE NOT IN" +
                           string.Format(" ( SELECT  userPrimaryCode from eid_attendance_log WHERE ClockDate>= '{0}' AND ClockDate <= '{1}')", startDate, endDate) +
                           " ORDER BY Surname, Firstname, Middlename";

            MySqlDataAdapter Adapter = new MySqlDataAdapter(query, myConn);

            Adapter.Fill(result);

            foreach (DataRow row in result.Rows)
            {
                AttendanceDetailsObject obj = new AttendanceDetailsObject(
                    row["UserId"].ToString(),
                    row["Title"].ToString(),
                    row["Surname"].ToString(),
                    row["First_Name"].ToString(),
                    row["Middle_Name"].ToString(),
                    FindUserMinistry(row["PPCode"].ToString(), Settings.Default.CDataField1),
                    null,
                    null,
                    null,
                    null,
                    null
                    );
                res.Add(obj);
            }
            return(res);
        }
Пример #4
0
        internal static object GetTimeSpentSummary(string startDate, string endDate, out string expextedWorkHours)
        {
            List <AttendanceDetailsObject> res = new List <AttendanceDetailsObject>();
            double summarisedWorkHours         = ((((Convert.ToDateTime(endDate) - Convert.ToDateTime(startDate)).TotalDays) + 1) * 8);

            expextedWorkHours = summarisedWorkHours.ToString();

            var rawResult = GetSummaryReport(startDate, endDate);

            if (rawResult.Count > 0)
            {
                var distinctUser  = rawResult.GroupBy(x => x.ProjectPrimaryCode).Select(y => new { ProjectPrimaryCode = y.Key });
                var distinctDates = rawResult.GroupBy(x => x.Date).Select(y => new { Date = y.Key });

                foreach (var user in distinctUser)
                {
                    string timeSpent = GetTotalTimeSpentbyUser(user.ProjectPrimaryCode, rawResult.ToList(), summarisedWorkHours);
                    var    userRes   = rawResult.FirstOrDefault(x => x.ProjectPrimaryCode == user.ProjectPrimaryCode);
                    AttendanceDetailsObject AttendanceDetailsObject = new AttendanceDetailsObject(
                        userRes.UserId,
                        userRes.Title,
                        userRes.Surname,
                        userRes.FirstName,
                        userRes.MiddleName,
                        userRes.Ministry,
                        userRes.Date,
                        userRes.ClockCount,
                        userRes.ClockIn,
                        userRes.ClockOut,
                        timeSpent
                        );
                    res.Add(AttendanceDetailsObject);
                }
            }

            return(res);
        }