EchoTex_Payroll/HRM.DA/DA/Leave/LeaveProcessDA.cs
2024-10-14 10:01:49 +06:00

388 lines
16 KiB
C#

using HRM.BO;
using Ease.Core.DataAccess;
using System;
using System.Data;
namespace HRM.DA
{
#region LeaveProcess Data Access
public class LeaveProcessDA
{
#region Constructor
public LeaveProcessDA()
{
}
#endregion
#region Leave Process
#region Insert function
public static void Insert(TransactionContext tc, LeaveProcess oItem)
{
//oItem.ProcessYear = LeaveEntry.getJulyJuneLeaveYear(oItem.ProcessYear);
tc.ExecuteNonQuery(
"INSERT INTO LeaveProcess(ProcessId, LEAVEYEARID, ProcessDate, IsYearEnd, ProcessYearDesc, PayrollTypeID,createdBy, CreatedDate)" +
" VALUES(%n, %n, %d,%b, %s, %n,%n,%D)", oItem.ID, oItem.LeaveYearID,
oItem.ProcessDate, oItem.IsYearEnd, oItem.ProcessYearDescription, oItem.PayrollTypeID, oItem.CreatedBy, oItem.CreatedDate);
}
#endregion
#region Update function
public static void Update(TransactionContext tc, LeaveProcess oItem)
{
tc.ExecuteNonQuery(
"UPDATE LeaveProcess SET LEAVEYEARID=%n, ProcessDate=%d, IsYearEnd=%b, ProcessYearDesc=%s " +
" WHERE ProcessId=%n", oItem.LeaveYearID, oItem.ProcessDate, oItem.IsYearEnd,
oItem.ProcessYearDescription, oItem.ID);
}
public static void DoYearEnd(TransactionContext tc, LeaveProcess oProcess)
{
tc.ExecuteNonQuery("UPDATE LeaveProcess SET IsYearEnd=%b WHERE ProcessId=%n", oProcess.IsYearEnd,
oProcess.ID);
}
#endregion
#region ID Generation function
public static int GetNewID(TransactionContext tc)
{
return tc.GenerateID("LeaveProcess", "ProcessId");
}
#endregion
#region Get Function
//public static IDataReader Get(TransactionContext tc)
//{
// return tc.ExecuteReader("SELECT * FROM LeaveProcess Where PayrollTypeID=%n", User.CurrentUser.LogInPayrollTypeID);
//}
public static IDataReader Get(TransactionContext tc, int nProcessId)
{
return tc.ExecuteReader("SELECT * FROM LeaveProcess WHERE ProcessId=%n", nProcessId);
}
public static IDataReader GetByYearID(TransactionContext tc, int nProcessYear, int payrollTypeID)
{
//nProcessYear = 2010;// LeaveEntry.getJulyJuneLeaveYear(nProcessYear);
return tc.ExecuteReader("SELECT * FROM LeaveProcess WHERE LEAVEYEARID=%n and PayrollTypeID=%n",
nProcessYear, payrollTypeID);
}
public static IDataReader GetByYearANDPayrollID(TransactionContext tc, int nProcessYear, int nPayrollTypeID)
{
//nProcessYear = 2010;// LeaveEntry.getJulyJuneLeaveYear(nProcessYear);
return tc.ExecuteReader("SELECT * FROM LeaveProcess WHERE LEAVEYEARID=%n and PayrollTypeID=%n",
nProcessYear, nPayrollTypeID);
}
public static IDataReader GetLastProcess(TransactionContext tc, int payrollTypeID)
{
bool status = true;
int nProcessYear = 2010; //LeaveEntry.getJulyJuneLeaveYear(nProcessYear);
return tc.ExecuteReader(@"SELECT * FROM LeaveProcess WHERE LEAVEYEARID=(SELECT max(ProcessYear)
FROM LeaveProcess WHERE IsYearEnd=%b and PayrollTypeID=%n)", status, payrollTypeID);
}
public static IDataReader GetYearEndValue(TransactionContext tc)
{
bool status = true;
return tc.ExecuteReader("SELECT * FROM LeaveYear WHERE ISCURRENT=%b ", status);
}
#endregion
#region Delete function
public static void Delete(TransactionContext tc, int nProcessId)
{
tc.ExecuteNonQuery("DELETE FROM EmpLeaveStatus where ProcessId =%n", nProcessId);
tc.ExecuteNonQuery("DELETE FROM LeaveProcess WHERE ProcessId=%n", nProcessId);
}
public static void DeleteByLeaveYear(TransactionContext tc, int leaveyearid, int payrolltypeid)
{
tc.ExecuteNonQuery("DELETE FROM EmpLeaveStatus where PROCESSID IN (select ProcessID FROM LeaveProcess WHERE LeaveYearID=%n and payrolltypeid=%n)", leaveyearid, payrolltypeid);
tc.ExecuteNonQuery("DELETE FROM LeaveProcess WHERE LeaveYearID=%n and payrolltypeid=%n", leaveyearid, payrolltypeid);
}
public static void DeleteByProcessYear(TransactionContext tc, int nProcessYear)
{
tc.ExecuteNonQuery(
"DELETE FROM EmpLeaveStatus where ProcessId in(SELECT ProcessId from LeaveProcess where LeaveYearID=%n)",
nProcessYear);
tc.ExecuteNonQuery("DELETE FROM LeaveProcess WHERE LeaveYearID=%n", nProcessYear);
}
public static void DeleteByProcessYearANDPayrollType(TransactionContext tc, int nProcessYear,
int nPayrollTypeID)
{
tc.ExecuteNonQuery(
"DELETE FROM EmpLeaveStatus where ProcessId in(SELECT ProcessId from LeaveProcess where LeaveYearID=%n AND PayrollTypeID=%n)",
nProcessYear, nPayrollTypeID);
tc.ExecuteNonQuery("DELETE FROM LeaveProcess WHERE LeaveYearID=%n AND PayrollTypeID=%n", nProcessYear,
nPayrollTypeID);
}
#endregion
#region Other supporting Functions
public static bool IsProcessed(TransactionContext tc, int nProcessYear, int payrollTypeID)
{
object obj = new object();
obj = tc.ExecuteScalar("SELECT count(*) FROM LEAVEYEAR WHERE ISENDED=1 AND LEAVEYEARID=%n and PayrollTypeid=%n ",
nProcessYear, payrollTypeID);
if (obj == DBNull.Value) return false;
return (Convert.ToInt32(obj) != 0);
}
#endregion
#endregion
#region Leave Process Detail
#region Insert function
public static void Insert(TransactionContext tc, EmpLeaveStatus oItem)
{
//oItem.ForBenifitedYear= LeaveEntry.getJulyJuneLeaveYear(oItem.ForBenifitedYear);
tc.ExecuteNonQuery(
"INSERT INTO EmpLeaveStatus(TranId, ProcessId, EmpId, LEAVEYEARID, LeaveId, FORBENIFITEDYEAR, CFDays, EncashDays, EncashAmount, NormalLeaveDays, YearEndBalance, LEAVEAVAILED,OPENINGBALANCE,FORFITEDDAYS)" +
" VALUES(%n, %n, %n, %n, %n,%n, %n, %n, %n, %n, %n,%n,%n,%n)", oItem.ID, oItem.ProcessId, oItem.EmpId,
oItem.LeaveYearID, oItem.LeaveId, oItem.CarryFromPrvYear, oItem.CFDays, oItem.EncashDays,
oItem.EncashAmount,
oItem.NormalLeaveDays, oItem.YearEndBalance, oItem.LeaveAvailed, oItem.OpeningBalance,
oItem.ForfitedDays);
}
#endregion
#region Update function
public static void Update(TransactionContext tc, EmpLeaveStatus oItem)
{
//oItem.ForBenifitedYear = LeaveEntry.getJulyJuneLeaveYear(oItem.ForBenifitedYear);
tc.ExecuteNonQuery(
"UPDATE EmpLeaveStatus SET ProcessId=%n, EmpId=%n, LEAVEYEARID=%n, LeaveId=%n, CFDays=%n, EncashDays=%n, EncashAmount=%n, NormalLeaveDays=%n, YearEndBalance=%n,LEAVEAVAILED=%n,OPENINGBALANCE=%n,FORFITEDDAYS=%n" +
" WHERE TranId=%n", oItem.ProcessId, oItem.EmpId, oItem.LeaveYearID, oItem.LeaveId, oItem.CFDays, oItem.EncashDays, oItem.EncashAmount, oItem.NormalLeaveDays,
oItem.YearEndBalance, oItem.LeaveAvailed, oItem.OpeningBalance, oItem.ForfitedDays, oItem.ID);
}
#endregion
#region ID Generation function
public static int GetNewDetailID(TransactionContext tc)
{
return tc.GenerateID("EmpLeaveStatus", "TranId");
}
#endregion
#region Get Function
//public static IDataReader Get(TransactionContext tc)
//{
// return tc.ExecuteReader("SELECT * FROM EmpLeaveStatus");
//}
public static IDataReader GetStatus(TransactionContext tc, int empid, int leaveID, int leaveYearID)
{
//if(leaveID==0)
// return tc.ExecuteReader("SELECT * FROM EmpLeaveStatus where EMPID=%n AND LEAVEYEARID=%n",empid,leaveYearID);
return tc.ExecuteReader("SELECT * FROM EmpLeaveStatus where EMPID=%n AND LEAVEID=%n AND LEAVEYEARID=%n",
empid, leaveID, leaveYearID);
}
public static IDataReader GetStatus(TransactionContext tc, int empid, int leaveYearID)
{
return tc.ExecuteReader("SELECT * FROM EmpLeaveStatus where EMPID=%n AND LEAVEYEARID=%n",
empid, leaveYearID);
}
public static IDataReader GetProcessDetail(TransactionContext tc, int nTranId)
{
return tc.ExecuteReader("SELECT * FROM EmpLeaveStatus WHERE TranId=%n", nTranId);
}
public static IDataReader GetAllStatus(TransactionContext tc, int empId)
{
return tc.ExecuteReader("SELECT * FROM EmpLeaveStatus WHERE EMPID=%n", empId);
}
public static IDataReader GetByYear(TransactionContext tc, int ProcessYear, int LeaveId, int EmpId)
{
//ProcessYear = LeaveEntry.getJulyJuneLeaveYear(ProcessYear);
return tc.ExecuteReader(
"SELECT * FROM EmpLeaveStatus WHERE ProcessId in(select ProcessId from LeaveProcess where LEAVEYEARID=%n) and LeaveId=%n and EmpId=%n",
ProcessYear, LeaveId, EmpId);
}
public static IDataReader GetByYear(TransactionContext tc, int LeaveYearID)
{
return tc.ExecuteReader("SELECT * FROM EmpLeaveStatus WHERE LEAVEYEARID=%n", LeaveYearID);
}
public static IDataReader GetByEmpIDs(TransactionContext tc, string empIDs, int LeaveYearID)
{
string sql = SQLParser.MakeSQL(
"SELECT el.*, leave.Description FROM EmpLeaveStatus el Inner Join Employee e on e.employeeID=el.EmpID " +
" inner join leave on el.leaveid = leave.leaveid " +
"WHERE el.LEAVEYEARID=%n AND el.EMPID in (%q) Order by e.EmployeeNo asc ",
LeaveYearID, empIDs);
return tc.ExecuteReader(sql);
}
public static IDataReader GetByProcessId(TransactionContext tc, int nProcessId)
{
return tc.ExecuteReader("SELECT * FROM EmpLeaveStatus WHERE ProcessId=%n", nProcessId);
}
#endregion
#region Delete function
public static void DeleteProcessDetail(TransactionContext tc, int nTranId)
{
tc.ExecuteNonQuery("DELETE FROM EmpLeaveStatus WHERE TranId=%n", nTranId);
}
public static void Delete(TransactionContext tc, EmpLeaveStatus oItem)
{
tc.ExecuteNonQuery("DELETE FROM EmpLeaveStatus WHERE TranId=%n", oItem.ID);
}
public static void DeleteByProcessId(TransactionContext tc, int nProcessId)
{
tc.ExecuteNonQuery("DELETE FROM EmpLeaveStatus WHERE ProcessId=%n", nProcessId);
}
internal static IDataReader GetByYearType(TransactionContext tc, int leaveYearID, int leaveId)
{
string Ssql = SQLParser.MakeSQL("SELECT * FROM EmpLeaveStatus WHERE LEAVEYEARID=%n And LEAVEID=%n",
leaveYearID, leaveId);
return tc.ExecuteReader(Ssql);
}
internal static void UpdateEncashAmount(TransactionContext tc, EmpLeaveStatus oStatus)
{
string sSQL = SQLParser.MakeSQL("UPDATE EmpLeaveStatus SET EncashAmount=%n WHERE TranId=%n",
oStatus.EncashAmount, oStatus.ID);
tc.ExecuteNonQuery(sSQL);
}
public static void DeleteByPayrollType(TransactionContext tc, int nProcessYear, int nPayrollTypeID,
int nLeaveID)
{
tc.ExecuteNonQuery(
"DELETE FROM EmpLeaveStatus where ProcessId in(SELECT ProcessId from LeaveProcess where LeaveYearID=%n AND PayrollTypeID=%n) AND LeaveID=%n",
nProcessYear, nPayrollTypeID, nLeaveID);
}
internal static DataSet GetEmpAllLeaveRelatedInfo(TransactionContext tc, int empID)
{
DataSet rootDataset = new DataSet();
DataSet tempdataset = new DataSet();
try
{
string query1 = SQLParser.MakeSQL(@"SELECT GETUTCDATE() sysdate ");
tempdataset = tc.ExecuteDataSet(query1);
tempdataset.Tables[0].TableName = "OperationDate";
rootDataset.Tables.Add(tempdataset.Tables[0].Copy());
string query2 = SQLParser.MakeSQL(@"SELECT * FROM LeaveYear WHERE ISCURRENT=%b", true);
tempdataset = tc.ExecuteDataSet(query2);
tempdataset.Tables[0].TableName = "CurrentLeaveYear";
rootDataset.Tables.Add(tempdataset.Tables[0].Copy());
string query8 =
SQLParser.MakeSQL(@"SELECT top 1 * FROM LEAVEYear WHERE ISCURRENT=%b ORDER BY EndDate DESC", false);
tempdataset = tc.ExecuteDataSet(query8);
tempdataset.Tables[0].TableName = "PreviousLeaveYear";
rootDataset.Tables.Add(tempdataset.Tables[0].Copy());
string query3 = SQLParser.MakeSQL(@"SELECT DISTINCT TranType FROM LeaveSetupDetail");
tempdataset = tc.ExecuteDataSet(query3);
tempdataset.Tables[0].TableName = "LeaveSetupTypes";
rootDataset.Tables.Add(tempdataset.Tables[0].Copy());
string query4 = SQLParser.MakeSQL(@"SELECT * FROM LeaveSetupDetail");
tempdataset = tc.ExecuteDataSet(query4);
tempdataset.Tables[0].TableName = "LeaveSetupDetails";
rootDataset.Tables.Add(tempdataset.Tables[0].Copy());
string query5 = SQLParser.MakeSQL(@"SELECT * FROM LeaveParameter");
tempdataset = tc.ExecuteDataSet(query5);
tempdataset.Tables[0].TableName = "LeaveParameter";
rootDataset.Tables.Add(tempdataset.Tables[0].Copy());
string query6 = SQLParser.MakeSQL(@"SELECT * FROM LeaveParamDetail");
tempdataset = tc.ExecuteDataSet(query6);
tempdataset.Tables[0].TableName = "LeaveParamDetail";
rootDataset.Tables.Add(tempdataset.Tables[0].Copy());
string query7 = SQLParser.MakeSQL(
@"select LeaveYear, LeaveID,EmpId, Sum(APPTOTALDAYS) APRTOTALDAYS, LEAVESTATUS from LeaveEntry
where LeaveYear in (SELECT LeaveYearID FROM LeaveYear WHERE ISCURRENT=%b) and EmpId=%n AND LeaveStatus=%n group by LeaveYear, EmpId, LeaveID, LEAVESTATUS",
true, empID, (int)EnumLeaveStatus.Approved);
tempdataset = tc.ExecuteDataSet(query7);
tempdataset.Tables[0].TableName = "AllAvailedLeave";
rootDataset.Tables.Add(tempdataset.Tables[0].Copy());
int previousLeaveYearID = 0;
Object obj =
tc.ExecuteScalar("SELECT top 1 LEAVEYEARID FROM LEAVEYear WHERE ISCURRENT=%b ORDER BY EndDate DESC",
false);
previousLeaveYearID = Convert.ToInt32(obj);
string query9 =
SQLParser.MakeSQL(@"SELECT * FROM EmpLeaveStatus WHERE EmpId=%n and LEAVEYEARID IN (%n)", empID,
previousLeaveYearID);
tempdataset = tc.ExecuteDataSet(query9);
tempdataset.Tables[0].TableName = "PreviousYearStatus";
rootDataset.Tables.Add(tempdataset.Tables[0].Copy());
string query10 = SQLParser.MakeSQL(@"SELECT * FROM Leave");
tempdataset = tc.ExecuteDataSet(query10);
tempdataset.Tables[0].TableName = "Leave";
rootDataset.Tables.Add(tempdataset.Tables[0].Copy());
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
return rootDataset;
}
#endregion
#endregion
}
#endregion
}