CEL_Payroll/Payroll.Service/HREmployee/DA/EmpLifeCycleDA.cs
2024-09-17 14:30:13 +06:00

399 lines
24 KiB
C#

using System;
using Payroll.BO;
using System.Data;
using System.Linq;
using Ease.CoreV35.Model;
using System.Data.SqlClient;
using Ease.CoreV35.DataAccess;
using System.Collections.Generic;
using Ease.CoreV35.DataAccess.SQL;
namespace Payroll.Service
{
#region EmpLifeCycleDA
internal class EmpLifeCycleDA
{
#region Constructor
private EmpLifeCycleDA() { }
#endregion
#region Insert function
internal static void Insert(TransactionContext tc, EmpLifeCycle item)
{
tc.ExecuteNonQuery("INSERT INTO EmpLifeCycle(EmpLifeCycleID,EffectDate,NodeID,GrossSalary,BasicSalary,GradeID,CategoryID,CompanyID,FunctionID,DesignationID,LocationID,DepartmentID,IsConfirm,pFMemberType,IsDiscontinue,IsContinue,EmployeeID,StatusDetailID,Remarks,Description,Status,CreatedBy, CreationDate, SequenceNo,SalaryMonth,IsCurrentMonthIncluded,CostCenterID,GradeSalaryAssesmentID,EmployeeCCID,Role,DesignationText)" +
" VALUES( %n , %D , %n , %n , %n , %n , %n , %n , %n , %n , %n , %n , %b , %n , %b , %b , %n , %n , %s , %s , %n , %n , %D , %n , %D , %b , %n , %n , %n ,%n , %s)",
item.ID.Integer, item.EffectDate, DataReader.GetNullValue(item.NodeID, IDType.Integer), item.GrossSalary, item.BasicSalary, DataReader.GetNullValue(item.GradeID, IDType.Integer), DataReader.GetNullValue(item.CategoryID, IDType.Integer), DataReader.GetNullValue(item.CompanyID, IDType.Integer), DataReader.GetNullValue(item.FunctionID, IDType.Integer), DataReader.GetNullValue(item.DesignationID, IDType.Integer), DataReader.GetNullValue(item.LocationID, IDType.Integer), DataReader.GetNullValue(item.DepartmentID, IDType.Integer), item.IsConfirm, item.PFMemberType, item.IsDiscontinue, item.IsContinue, item.EmployeeID.Integer, DataReader.GetNullValue(item.StatusDetailID,IDType.Integer), item.Remarks, item.Description, item.Status, DataReader.GetNullValue(item.CreatedBy,IDType.Integer) ,DataReader.GetNullValue(item.CreatedDate) , item.Sequence, item.SalaryMonth, item.IsCurrentMonthIncluded, DataReader.GetNullValue(item.CostCenterID, IDType.Integer), DataReader.GetNullValue(item.GradeSalaryAssesmentID, IDType.Integer), DataReader.GetNullValue(item.EmployeeCCID, IDType.Integer),(int)item.Role,item.DesignationText);
//1 //2 //3 //4 //5 //6 //7 //8 //9 //10 //11 //12 //13 //14 //15 //16 //17 //18 //19 //20 //21 //21 //22 //23 //24 //25
}
#endregion
#region Update function
internal static void Update(TransactionContext tc, EmpLifeCycle item)
{
//tc.ExecuteNonQuery("UPDATE EmpLifeCycle SET Code=%s, Name=%s, ACCOUNTNOFORMAT=%s, ModifiedBy=%n, ModifiedDate=%d, SequenceNo=%n, Status=%n" +
//"WHERE EmpLifeCycleID=%n", item.Code, item.Name, item.Accountingformat, item.ModifiedBy.Integer, item.ModifiedDate, item.Sequence, item.Status,item.ID.Integer);
}
#endregion
#region Get Function
internal static IDataReader Get(TransactionContext tc, ID lifecycleID)
{
return tc.ExecuteReader("SELECT * FROM EmpLifeCycle where EmpLifeCycleID=%n order by SequenceNo", lifecycleID.Integer);
}
internal static IDataReader GetEmpID(TransactionContext tc, ID nEmpID, DateTime effectDate)
{
return tc.ExecuteReader("SELECT * FROM EmpLifeCycle where employeeid=%n AND EffectDate=%d order by SequenceNo", nEmpID.Integer, effectDate);
}
internal static IDataReader GetLastPosition(TransactionContext tc, int nEmpID)
{
return tc.ExecuteReader("select * from EmpLifeCycle where employeeid=%n and sequenceno=(select max(sequenceno) from EmpLifeCycle where employeeid=%n AND EffectDate<=%d)", nEmpID,nEmpID, DateTime.Today);
}
internal static IDataReader Get(TransactionContext tc, EnumStatus status, ID PayrolltypeID)
{
if(EnumStatus.Active==status)
{
return tc.ExecuteReader("SELECT * FROM EmpLifeCycle where Status=%n order by CreationDate", status);
}
else
{
return tc.ExecuteReader("SELECT * FROM EmpLifeCycle where EmployeeID in(select EmployeeID from EMPLOYEE where PAYROLLTYPEID=%n) order by CreationDate", PayrolltypeID.Integer);
}
}
internal static IDataReader GetEmpID(TransactionContext tc, ID employeeID)
{
return tc.ExecuteReader("SELECT * FROM EmpLifeCycle Where EmployeeID=%n order by CreationDate DESC", employeeID.Integer);
}
//internal static IDataReader Get(TransactionContext tc, DateTime fromEffectDate, DateTime toEffectDate, int eventID)
//{
// string sql = string.Empty;
// sql = SQLParser.MakeSQL("Select * from EmpLifeCycle Where EffectDate between %d and %d AND StatusDetailID =%n order by EffectDate",fromEffectDate,toEffectDate, eventID);
// return tc.ExecuteReader(sql);
//}
internal static IDataReader GetNotYetProcessUptoToday(TransactionContext tc)
{
string sql = SQLParser.MakeSQL("Select * from EmpLifeCycle where IsProcessed =%b and EffectDate <=%d", false, DateTime.Today);
return tc.ExecuteReader(sql);
}
#endregion
#region Delete function
internal static void Delete(TransactionContext tc, EmpLifeCycle oEmpLifeCycle)
{
tc.ExecuteNonQuery("DELETE FROM EmpLifeCycle Where EmpLifeCycleID=%n", oEmpLifeCycle.ID.Integer);
}
internal static void DeleteByGradeSalaryAssesmentID(TransactionContext tc, EmpLifeCycle oEmpLifeCycle)
{
tc.ExecuteNonQuery("DELETE FROM EmpLifeCycle Where EmployeeID=%n AND GradeSalaryAssesmentID=%n", oEmpLifeCycle.EmployeeID.Integer,oEmpLifeCycle.GradeSalaryAssesmentID.Integer);
}
internal static object GetNodeId(TransactionContext tc, ID EmployeeId)
{
object ovalue = tc.ExecuteScalar("select NodeID from EmpLifeCycle where EmpLifeCycleID=( "
+ " select Max(EmpLifeCycleId) from EmpLifeCycle where employeeid=%n and NodeID is Not Null)", EmployeeId.Integer);
if (ovalue != DBNull.Value && ovalue!=null)
return Convert.ToInt32(ovalue);
else return null;
}
public static void UpdateEmployee(TransactionContext tc, EmpLifeCycle oItem)
{
// Gross Salary
object ovalue;
if (oItem.GrossSalary != null)
{
ovalue = tc.ExecuteScalar("select GrossSalary from EmpLifeCycle where EmpLifeCycleID=( "
+ " select Max(EmpLifeCycleId) from EmpLifeCycle where employeeid=%n and GrossSalary is Not Null)", oItem.EmployeeID.Integer);
if (ovalue != DBNull.Value)
{
if (ovalue != null && ovalue != null)
tc.ExecuteNonQuery("UPDATE Employee SET GrossSalary= %n WHERE EMPLOYEEID=%n",
Convert.ToDouble(ovalue), oItem.EmployeeID.Integer);
}
}
if (oItem.BasicSalary != null)
{
//Basic Salary
ovalue = tc.ExecuteScalar("select BasicSalary from EmpLifeCycle where EmpLifeCycleID=( "
+ " select Max(EmpLifeCycleId) from EmpLifeCycle where employeeid=%n and BasicSalary is Not Null)", oItem.EmployeeID.Integer);
if (ovalue != DBNull.Value)
{
if (ovalue != null && ovalue != null)
tc.ExecuteNonQuery("UPDATE Employee SET BasicSalary= %n WHERE EMPLOYEEID=%n",
Convert.ToDouble(ovalue), oItem.EmployeeID.Integer);
}
}
////Category
//tc.ExecuteNonQuery("Update Employee Set Employee.BasicSalary =(select BasicSalary from EmpLifeCycle where EmpLifeCycleID=( "
// + " select Max(BasicSalary) from EmpLifeCycle where employeeid=%n and BasicSalary is Not Null))", oItem.EmployeeID.Integer);
//GradeID
if (oItem.GradeID != null && oItem.GradeID.IsUnassigned ==false)
tc.ExecuteNonQuery("Update Employee Set Employee.GradeID =(select GradeID from EmpLifeCycle where EmpLifeCycleID=( "
+ " select Max(EmpLifeCycleId) from EmpLifeCycle where employeeid=%n and GradeID is Not Null)) WHERE Employee.EmployeeID=%n", oItem.EmployeeID.Integer, oItem.EmployeeID.Integer);
//Company
if (oItem.CompanyID != null && oItem.CompanyID.IsUnassigned == false)
tc.ExecuteNonQuery("Update Employee Set Employee.Companyid =(select Companyid from EmpLifeCycle where EmpLifeCycleID=( "
+ " select Max(EmpLifeCycleId) from EmpLifeCycle where employeeid=%n and Companyid is Not Null)) WHERE Employee.EmployeeID=%n", oItem.EmployeeID.Integer, oItem.EmployeeID.Integer);
//Functionid
if (oItem.FunctionID != null && oItem.FunctionID.IsUnassigned == false)
tc.ExecuteNonQuery("Update Employee Set Employee.Functionid =(select Functionid from EmpLifeCycle where EmpLifeCycleID=( "
+ " select Max(EmpLifeCycleId) from EmpLifeCycle where employeeid=%n and Functionid is Not Null)) WHERE Employee.EmployeeID=%n", oItem.EmployeeID.Integer, oItem.EmployeeID.Integer);
//Designationid
if (oItem.DesignationID != null && oItem.DesignationID.IsUnassigned == false)
tc.ExecuteNonQuery("Update Employee Set Employee.DesignationId =(select DesignationId from EmpLifeCycle where EmpLifeCycleID=( "
+ " select Max(EmpLifeCycleId) from EmpLifeCycle where employeeid=%n and DesignationId is Not Null)) WHERE Employee.EmployeeID=%n", oItem.EmployeeID.Integer, oItem.EmployeeID.Integer);
//LocationID
if (oItem.LocationID != null && oItem.LocationID.IsUnassigned == false)
tc.ExecuteNonQuery("Update Employee Set Employee.LocationID =(select LocationID from EmpLifeCycle where EmpLifeCycleID=( "
+ " select Max(EmpLifeCycleId) from EmpLifeCycle where employeeid=%n and LocationID is Not Null)) WHERE Employee.EmployeeID=%n", oItem.EmployeeID.Integer, oItem.EmployeeID.Integer);
//Departmentid
if (oItem.DepartmentID != null && oItem.DepartmentID.IsUnassigned == false)
tc.ExecuteNonQuery("Update Employee Set Employee.Departmentid =(select Departmentid from EmpLifeCycle where EmpLifeCycleID=( "
+ " select Max(EmpLifeCycleId) from EmpLifeCycle where employeeid=%n and Departmentid is Not Null)) WHERE Employee.EmployeeID=%n", oItem.EmployeeID.Integer, oItem.EmployeeID.Integer);
//IsConfirmed
if (oItem.IsConfirm != null)
{
ovalue = tc.ExecuteScalar("select IsConfirm from EmpLifeCycle where EmpLifeCycleID=( "
+ " select Max(EmpLifeCycleId) from EmpLifeCycle where employeeid=%n and IsConfirm is Not Null)", oItem.EmployeeID.Integer);
if (ovalue != DBNull.Value && ovalue != null)
{
bool isconfirm = Convert.ToBoolean(ovalue);
tc.ExecuteNonQuery("UPDATE Employee SET ISCONFIRMED= %b WHERE EMPLOYEEID=%n",
isconfirm, oItem.EmployeeID.Integer);
}
else
tc.ExecuteNonQuery("UPDATE Employee SET ISCONFIRMED= %b, dateOfConfirmation=null WHERE EMPLOYEEID=%n",
false , oItem.EmployeeID.Integer);
}
if (oItem.PFMemberType != null)
{
ovalue = tc.ExecuteScalar("select pFMemberType from EmpLifeCycle where EmpLifeCycleID=( "
+ " select Max(EmpLifeCycleId) from EmpLifeCycle where employeeid=%n and PFMemberType is Not Null)", oItem.EmployeeID.Integer);
if (ovalue != DBNull.Value && ovalue != null)
tc.ExecuteNonQuery("UPDATE Employee SET PFMemberType=1 WHERE EMPLOYEEID=%n", oItem.EmployeeID.Integer);
}
if (oItem.IsContinue != null || oItem.IsDiscontinue != null)
{
int nContinue = 0;
int nDiscontinue = 0;
ovalue = tc.ExecuteScalar(" select Max(EmpLifeCycleId) from EmpLifeCycle where employeeid=%n and IsContinue is Not Null", oItem.EmployeeID.Integer);
if (ovalue != DBNull.Value && ovalue != null)
nContinue = Convert.ToInt32(ovalue);
ovalue = tc.ExecuteScalar(" select Max(EmpLifeCycleId) from EmpLifeCycle where employeeid=%n and IsDiscontinue is Not Null", oItem.EmployeeID.Integer);
if (ovalue != DBNull.Value && ovalue != null)
nDiscontinue = Convert.ToInt32(ovalue);
if (nContinue > 0 || nDiscontinue > 0)
{
if (nContinue > nDiscontinue)
{
EmployeeDA.DoContinue(tc, oItem.EmployeeID);
}
else
{
ovalue = tc.ExecuteScalar(" select effectDate from EmpLifeCycle where EmpLifeCycleId=%n ", nDiscontinue);
DateTime effectDate = Convert.ToDateTime(ovalue);
HREmployeeDA.UpdateEndofContact(tc, oItem.EmployeeID, effectDate);
ovalue = tc.ExecuteScalar(" select IsCurrentMonthIncluded from EmpLifeCycle where EmpLifeCycleId=%n ", nDiscontinue);
bool iscurrMonth = false;
if (ovalue != DBNull.Value) iscurrMonth = Convert.ToBoolean(ovalue);
ovalue = tc.ExecuteScalar(" select Status from EmpLifeCycle where EmpLifeCycleId=%n ", nDiscontinue);
int nStatus = Convert.ToInt32(ovalue);
if (iscurrMonth == true)
HREmployeeDA.UpdatemiddleOfMonthDiscontinue(tc,
oItem.EmployeeID, (EnumEmployeeStatus)nStatus, effectDate);
}
}
else
{
tc.ExecuteNonQuery("UPDATE Employee SET Status=%n, ENDOFCONTRACTDATE=null WHERE EMPLOYEEID=%n", EnumEmployeeStatus.Waitingforjoin, oItem.EmployeeID.Integer);
}
}
}
internal static object GetNodeAssignDate(TransactionContext tc, ID EmployeeId)
{
object ovalue = tc.ExecuteScalar("select EffectDate from EmpLifeCycle where EmpLifeCycleID=( "
+ " select Max(EmpLifeCycleId) from EmpLifeCycle where employeeid=%n and NodeID is Not Null)", EmployeeId.Integer);
if (ovalue != DBNull.Value)
return Convert.ToDateTime(ovalue);
else return null;
}
internal static object GetCrgId(TransactionContext tc, ID EmployeeId)
{
object ovalue = tc.ExecuteScalar("select CostCenterID from EmpLifeCycle where EmpLifeCycleID=( "
+ " select Max(EmpLifeCycleId) from EmpLifeCycle where employeeid=%n and CostCenterID is Not Null)", EmployeeId.Integer);
if (ovalue != DBNull.Value)
if(ovalue==null)return null;
else return Convert.ToInt32(ovalue);
else return null;
}
internal static int GetPrvRCId(TransactionContext tc, ID EmployeeId)
{
//object ovalue = tc.ExecuteScalar("select CostCenterID from EmpLifeCycle where EmpLifeCycleID=( "
// + " select Max(EmpLifeCycleId) from EmpLifeCycle where employeeid=%n and CostCenterID is Not Null)", EmployeeId.Integer);
//if (ovalue != DBNull.Value)
// if (ovalue == null) return 0;
// else return Convert.ToInt32(ovalue);
//else return 0;
string sql = SQLParser.MakeSQL(@"select CostCenterID from EmpLifeCycle where
sequenceno =(select Max(sequenceno) from EmpLifeCycle where employeeid = %n ) - 1
AND employeeid = %n", EmployeeId.Integer, EmployeeId.Integer);
object ovalue = tc.ExecuteScalar(sql);
if (ovalue != DBNull.Value)
{
if (ovalue == null) return 0;
else return Convert.ToInt32(ovalue);
}
else return 0;
}
internal static int GetPrvGradeId(TransactionContext tc, ID EmployeeId,ID gradeID)
{
//object ovalue = tc.ExecuteScalar("select GradeID from EmpLifeCycle where EmpLifeCycleID=( "
// + " select Max(EmpLifeCycleId) from EmpLifeCycle where employeeid=%n and GradeID=%n)", EmployeeId.Integer,gradeID.Integer);
//if (ovalue != DBNull.Value)
// if (ovalue == null) return 0;
// else return Convert.ToInt32(ovalue);
//else return 0;
string sql = SQLParser.MakeSQL(@"select GradeID from EmpLifeCycle where
sequenceno =(select Max(sequenceno) from EmpLifeCycle where employeeid = %n ) - 1
AND employeeid = %n", EmployeeId.Integer, EmployeeId.Integer);
object ovalue = tc.ExecuteScalar(sql);
if (ovalue != DBNull.Value)
{
if (ovalue == null) return 0;
else return Convert.ToInt32(ovalue);
}
else return 0;
}
internal static int GetPrvLocationId(TransactionContext tc, ID EmployeeId, ID locationID)
{
//object ovalue = tc.ExecuteScalar("select LocationID from EmpLifeCycle where EmpLifeCycleID=( "
// + " select Max(EmpLifeCycleId) from EmpLifeCycle where employeeid=%n and LocationID=%n)", EmployeeId.Integer, locationID.Integer);
//if (ovalue != DBNull.Value)
// if (ovalue == null) return 0;
// else return Convert.ToInt32(ovalue);
//else return 0;
string sql = SQLParser.MakeSQL(@"select LocationID from EmpLifeCycle where
sequenceno =(select Max(sequenceno) from EmpLifeCycle where employeeid = %n ) - 1
AND employeeid = %n", EmployeeId.Integer, EmployeeId.Integer);
object ovalue = tc.ExecuteScalar(sql);
if (ovalue != DBNull.Value)
{
if (ovalue == null) return 0;
else return Convert.ToInt32(ovalue);
}
else return 0;
}
internal static int GetPrvDesigId(TransactionContext tc, ID EmployeeId, ID designationID)
{
object ovalue = tc.ExecuteScalar("select LocationID from EmpLifeCycle where EmpLifeCycleID=( "
+ " select Max(EmpLifeCycleId) from EmpLifeCycle where employeeid=%n and LocationID=%n)", EmployeeId.Integer, designationID.Integer);
if (ovalue != DBNull.Value)
if (ovalue == null) return 0;
else return Convert.ToInt32(ovalue);
else return 0;
}
#endregion
internal static IDataReader Get(TransactionContext tc, int p, DateTime startDate, DateTime endDate)
{
string sql = SQLParser.MakeSQL("Select * from EmpLifeCycle where StatusDetailID =%n and EffectDate between %d and %d ", p,startDate,endDate);
return tc.ExecuteReader(sql);
}
internal static IDataReader GetByDate(TransactionContext tc, DateTime startDate, DateTime endDate, ID PayrolltypeID)
{
string sql = SQLParser.MakeSQL("Select * from EmpLifeCycle where salarymonth between %d and %d AND EmployeeID in(select EmployeeID from EMPLOYEE where PAYROLLTYPEID=%n) order by CreationDate DESC", startDate, endDate, PayrolltypeID.Integer);
return tc.ExecuteReader(sql);
}
internal static IDataReader GetByCreateDate(TransactionContext tc, DateTime startDate, DateTime endDate, int payrollTypeID)
{
string sql = SQLParser.MakeSQL("Select * from EmpLifeCycle where CREATIONDATE between %d and %d AND EmployeeID in(select EmployeeID from EMPLOYEE where PAYROLLTYPEID=%n) order by EffectDate ", startDate, endDate, payrollTypeID);
return tc.ExecuteReader(sql);
}
internal static IDataReader GetByDate(TransactionContext tc, DateTime startDate, DateTime endDate, ID PayrolltypeID,bool approveID)
{
string sql = "";
if(approveID)
sql = SQLParser.MakeSQL(@"Select * from EmpLifeCycle el where salarymonth between %d and %d AND
EmployeeID in(select EmployeeID from EMPLOYEE where PAYROLLTYPEID=%n)
AND EmplifecycleID IN(SELECT afd.ObjectID FROM ApproveFinantialData afd WHERE afd.EmployeeID=el.employeeid
AND afd.FinanatialDataType=3
AND afd.SalaryMonth between %d and %d )", startDate, endDate, PayrolltypeID.Integer, startDate, endDate);
else
sql = SQLParser.MakeSQL(@"Select * from EmpLifeCycle el where salarymonth between %d and %d AND
EmployeeID in(select EmployeeID from EMPLOYEE where PAYROLLTYPEID=%n)
AND EmplifecycleID not IN(SELECT afd.ObjectID FROM ApproveFinantialData afd WHERE afd.EmployeeID=el.employeeid
AND afd.FinanatialDataType=3
AND afd.SalaryMonth between %d and %d )", startDate, endDate, PayrolltypeID.Integer, startDate, endDate);
return tc.ExecuteReader(sql);
}
internal static int? EmpPrevDesg(TransactionContext tc, ID employeeID)
{
string sql = SQLParser.MakeSQL(@"select DesignationID from EmpLifeCycle where
sequenceno =(select Max(sequenceno) from EmpLifeCycle where employeeid = %n ) - 1
AND employeeid = %n",employeeID.Integer,employeeID.Integer);
object ovalue = tc.ExecuteScalar(sql);
if (ovalue != DBNull.Value)
{
if (ovalue == null) return null;
else return Convert.ToInt32(ovalue);
}
else return null;
}
}
#endregion
}