160 lines
6.1 KiB
C#
160 lines
6.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using Ease.CoreV35.DataAccess;
|
|
using Payroll.BO;
|
|
using System.Data;
|
|
using Ease.CoreV35.Model;
|
|
|
|
namespace Payroll.Service.Attendence.DA
|
|
{
|
|
#region AttnRawDataDA
|
|
|
|
internal class AttnRawDataDA
|
|
{
|
|
#region Constructor
|
|
|
|
private AttnRawDataDA() { }
|
|
|
|
#endregion
|
|
|
|
#region Insert function
|
|
|
|
internal static void Insert(TransactionContext tc, AttnRawData item)
|
|
{
|
|
tc.ExecuteNonQuery("INSERT INTO AttnRawData(CardID, EmployeeID, CardNo, PunchTime,EntryMode,DeviceIPAddress,DeviceNo)" +
|
|
" VALUES(%n, %n, %s, %D, %n,%s,%s)", DataReader.GetNullValue(item.CardID,IDType.Integer), item.EmployeeID.Integer, item.CardNo, item.PunchTime, (int)item.EntryMode,item.DeviceIPAddress,item.DeviceNo);
|
|
}
|
|
|
|
#endregion
|
|
|
|
//#region Update function
|
|
|
|
//internal static void Update(TransactionContext tc, AttnRawData item)
|
|
//{
|
|
// tc.ExecuteNonQuery("UPDATE AttnRawData SET CardID=%n, EmployeeID=%n, CardNo=%s,PunchTime=%D,EntryMode=%n,DeviceIPAddress=%s,DeviceNo=%s" +
|
|
// " WHERE AttnRawDataID=%n", DataReader.GetNullValue(item.CardID, IDType.Integer), item.EmployeeID.Integer, item.CardNo, item.PunchTime, (int)item.EntryMode, item.DeviceIPAddress, item.DeviceNo, item.ID.Integer);
|
|
//}
|
|
|
|
//#endregion
|
|
|
|
#region Get Function
|
|
|
|
internal static IDataReader Get(TransactionContext tc)
|
|
{
|
|
return tc.ExecuteReader("SELECT * FROM AttnRawData");
|
|
|
|
}
|
|
|
|
internal static IDataReader Get(TransactionContext tc, ID nID)
|
|
{
|
|
return tc.ExecuteReader("SELECT * FROM AttnRawData WHERE AttnRawDataID=%n", nID);
|
|
}
|
|
|
|
internal static IDataReader Get(TransactionContext tc, DateTime fromDate, DateTime toDate)
|
|
{
|
|
string sql = SQLParser.MakeSQL("SELECT * FROM AttnRawData WHERE PunchTime between %D AND %D ORDER BY EmployeeID,PunchTime", fromDate, toDate);
|
|
return tc.ExecuteReader(sql);
|
|
}
|
|
|
|
internal static bool IsDataExist(TransactionContext tc, DateTime fromDate, DateTime toDate)
|
|
{
|
|
string sql = SQLParser.MakeSQL("SELECT Count(*) FROM AttnRawData WHERE PunchTime between %D AND %D ", fromDate, toDate);
|
|
object odata = tc.ExecuteScalar(sql);
|
|
if (odata == DBNull.Value) return false;
|
|
else
|
|
{
|
|
if (Convert.ToInt32(odata) > 0) return true;
|
|
else return false;
|
|
}
|
|
}
|
|
|
|
internal static DateTime GetRawDataMaxDateTime(TransactionContext tc)
|
|
{
|
|
string sql = SQLParser.MakeSQL("SELECT Max(PunchTime) FROM AttnRawData ");
|
|
object odata = tc.ExecuteScalar(sql);
|
|
|
|
if (odata == DBNull.Value)
|
|
return new DateTime(1901,1,1);
|
|
|
|
return Convert.ToDateTime(Convert.ToString(odata));
|
|
|
|
}
|
|
|
|
internal static DataSet GetEmployeeNo(TransactionContext tc, DateTime workdate)
|
|
{
|
|
DataSet employeeNo = new DataSet();
|
|
try
|
|
{
|
|
string sql = SQLParser.MakeSQL("select distinct e.EMPLOYEENO from ATTNRAWDATA a "
|
|
+ "inner join Employee e on e.EMPLOYEEID = a.EMPLOYEEID "
|
|
+ "where a.EMPLOYEEID not in (select EMPLOYEEID from MONTHLYWORKPLAN "
|
|
+ "where workdate=%d)"
|
|
+ "AND PunchTime =%d", workdate, workdate);
|
|
|
|
employeeNo = tc.ExecuteDataSet(sql);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new Exception(ex.Message);
|
|
}
|
|
return employeeNo;
|
|
}
|
|
|
|
internal static DataSet GetCoatsRawData(TransactionContext tc, DateTime minDate)
|
|
{
|
|
DataSet rawData = new DataSet();
|
|
try
|
|
{
|
|
string sql = SQLParser.MakeSQL(@"SELECT * FROM RawCoats where PunchTime>=%d", minDate);
|
|
|
|
rawData = tc.ExecuteDataSet(sql);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new Exception(ex.Message);
|
|
}
|
|
return rawData;
|
|
}
|
|
|
|
internal static DataSet GetInOutData(TransactionContext tc,DateTime startDate, DateTime endDate, int employeeID)
|
|
{
|
|
DataSet rawData = new DataSet();
|
|
try
|
|
{
|
|
string sql = SQLParser.MakeSQL(@"SELECT COALESCE(InTable.EmployeeID,OutTable.EmployeeID) EmployeeID,COALESCE(InTable.WorkingDate,OutTable.WorkingDate) AttnDate,InTime,OutTime from
|
|
(SELECT ard.EmployeeID,Max(CAST(ard.PunchTime AS DATE)) WorkingDate, MIN(ard.PunchTime) InTime
|
|
FROM AttnRawData ard WHERE ard.EmployeeID=%n AND entryMode=1 AND CAST(ard.PunchTime AS DATE) BETWEEN %d AND %d GROUP BY CAST(ard.PunchTime AS DATE),EmployeeID) as InTable
|
|
Full OUTER JOIN
|
|
( SELECT ard.EmployeeID,Max(CAST(ard.PunchTime AS DATE)) WorkingDate, MAX(ard.PunchTime) OutTime
|
|
FROM AttnRawData ard WHERE ard.EmployeeID=%n AND entryMode=2 AND CAST(ard.PunchTime AS DATE) BETWEEN %d AND %d GROUP BY CAST(ard.PunchTime AS DATE),EmployeeID) as OutTable
|
|
ON
|
|
InTable.WorkingDate=OutTable.WorkingDate", employeeID,startDate,endDate, employeeID,startDate,endDate);
|
|
rawData = tc.ExecuteDataSet(sql);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new Exception(ex.Message);
|
|
}
|
|
return rawData;
|
|
}
|
|
#endregion
|
|
|
|
#region Delete function
|
|
|
|
//internal static void Delete(TransactionContext tc, ID nID)
|
|
//{
|
|
// tc.ExecuteNonQuery("DELETE FROM [AttnRawData] WHERE AttnRawDataID=%n", nID);
|
|
//}
|
|
internal static void Delete(TransactionContext tc, DateTime fromTime)
|
|
{
|
|
tc.ExecuteNonQuery("DELETE FROM AttnRawData WHERE PunchTime>=%D", fromTime);
|
|
}
|
|
#endregion
|
|
|
|
}
|
|
|
|
#endregion
|
|
}
|