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

1260 lines
68 KiB
C#

using HRM.BO;
using Ease.Core.DataAccess;
using System;
using System.Data;
using Microsoft.Data.SqlClient;
namespace HRM.DA
{
class LeaveEntryDA
{
#region Constructor
public LeaveEntryDA()
{
}
#endregion
#region Insert function
public static void Insert(TransactionContext tc, LeaveEntry oItem)
{
oItem.ApprovedLeaveDate = oItem.AppliedLeaveDate;
oItem.ApprovedFromDate = oItem.AppliedFromDate;
oItem.ApprovedToDate = oItem.AppliedToDate;
string sSQL = SQLParser.MakeSQL(@"INSERT INTO LEAVEENTRY
(
LEAVEID, ENTRYDATE, ISDRAFTED, ISAVAILED,
LEAVESTATUS, DAYPERIOD, TRANID, EMPID,
EMPGRADEID, LEAVEYEAR, APPPARAMID, APPLEAVEDATE,
APPFROMDATE, APPTODATE, APPTOTALDAYS, APRPARAMID,
APRLEAVEDATE, APRFROMDATE, APRTODATE, APRTOTALDAYS,
APPROVEDBY, REMARKS, USERID, WORKINGDATE,
ERNLEAVEREMARKS, SBUID, DEPARTMENTID, FUNCTIONID,
LOCATIONID, DESIGNATIONID, AVAILFROMDATE, AVAILTODATE,
AVAILREMARKS, AVAILEDBY, AVAILTOTALDAYS, LFAAMOUNT,
APPLIEDLEAVEID, LFASMOKINGAMOUNT, SALARYMONTH, LEAVEAGAINSTDATE,
COMPENSATORYLEAVEFOR, ITEMID, OTVALUE, LEAVEDAYPERIOD,
ResponsiblePersonID, IsHalfday, FromHalf, ToHalf,
ContactNumber, AddressDuringLeave, IsLFA, SelectedHalf, CompensatoryDate
)
VALUES
(
%n, %d, %b, %b,
%n, %n, %n, %n,
%n, %n, %n, %d,
%d, %d, %n, %n,
%d, %d, %d, %n,
%n, %s, %n, %d,
%s, %n, %n, %n,
%n, %n, %d, %d,
%s, %n, %n, %n,
%n, %n, %d, %d,
%n, %n, %n, %s,
%n, %b, %b, %b,
%s, %s, %b, %n, %d
)",
DataReader.GetNullValue(oItem.LeaveID), DataReader.GetNullValue(oItem.EntryDate),
oItem.IsDrafted, oItem.IsAvailed,
oItem.LeaveStatus, DataReader.GetNullValue(oItem.DayPeriod), oItem.ID, oItem.EmpID,
oItem.EmpGradeId, DataReader.GetNullValue(oItem.LeaveYearId),
DataReader.GetNullValue(oItem.AppliedParamId), DataReader.GetNullValue(oItem.AppliedLeaveDate),
DataReader.GetNullValue(oItem.AppliedFromDate), DataReader.GetNullValue(oItem.AppliedToDate),
DataReader.GetNullValue(oItem.AppliedTotalDays), DataReader.GetNullValue(oItem.ApprovedParamId),
DataReader.GetNullValue(oItem.ApprovedLeaveDate), DataReader.GetNullValue(oItem.ApprovedFromDate),
DataReader.GetNullValue(oItem.ApprovedToDate), DataReader.GetNullValue(oItem.ApprovedTotalDays),
DataReader.GetNullValue(oItem.ApprovedBy), DataReader.GetNullValue(oItem.Remarks),
DataReader.GetNullValue(oItem.CreatedBy), DataReader.GetNullValue(oItem.WorkingDate),
DataReader.GetNullValue(oItem.ErnLeaveRemarks), DataReader.GetNullValue(oItem.SbuID),
DataReader.GetNullValue(oItem.DepartmentID), DataReader.GetNullValue(oItem.FunctionID),
DataReader.GetNullValue(oItem.LocationID), DataReader.GetNullValue(oItem.DesignationID),
DataReader.GetNullValue(oItem.AvailFromDate), DataReader.GetNullValue(oItem.AvailToDate),
DataReader.GetNullValue(oItem.AvailRemarks), DataReader.GetNullValue(oItem.AvailedBy),
DataReader.GetNullValue(oItem.AvailTotalDays), DataReader.GetNullValue(oItem.LFAAmount),
DataReader.GetNullValue(oItem.AppliedLeaveID), DataReader.GetNullValue(oItem.LFASmokingAmount),
DataReader.GetNullValue(oItem.SalaryMonth), DataReader.GetNullValue(oItem.LeaveAgainstDate),
oItem.CompensatoryLeaveFor, DataReader.GetNullValue(oItem.ItemId),
DataReader.GetNullValue(oItem.OtValue), DataReader.GetNullValue(oItem.LeaveDayPeriod),
DataReader.GetNullValue(oItem.ResponsiblePersonID), oItem.IsHalfday, DataReader.GetNullValue(oItem.FromHalf),
DataReader.GetNullValue(oItem.ToHalf),
DataReader.GetNullValue(oItem.ContactNumber), DataReader.GetNullValue(oItem.AddressDuringLeave), oItem.isLFA, (int)oItem.SelectedHalf, oItem.CompensatoryDate);
tc.ExecuteNonQuery(sSQL);
}
public static void Insert(LeaveAttachment item, string connectionString)
{
// string ConnString = ConfigurationSettings.AppSettings["default"];
// var ConnString = System.Configuration.ConfigurationManager.GetSection("dbSettings");
// string ConnString=ConfigurationManager.ConnectionStrings[connectionString].ConnectionString;
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = connection;
string commandText = @"INSERT INTO LEAVEATTACHMENT(LEAVEENTRYID, ATTACHMENTPATH, FILEDATA,ORIGINALFILENAME,FILETYPE) Values (@LEAVEENTRYID,@ATTACHMENTPATH,@FILEDATA,@ORIGINALFILENAME,@FILETYPE)";
cmd.CommandText = commandText;
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add("@LEAVEENTRYID", SqlDbType.Int);
cmd.Parameters["@LEAVEENTRYID"].Value = item.LeaveEntryID;
cmd.Parameters.Add("@ORIGINALFILENAME", SqlDbType.VarChar);
cmd.Parameters["@ORIGINALFILENAME"].Value = item.OriginalFileName;
cmd.Parameters.Add("@FILEDATA", SqlDbType.VarBinary);
cmd.Parameters["@FILEDATA"].Value = item.FileAsByteArray;
cmd.Parameters.Add("@FILETYPE", SqlDbType.Int);
cmd.Parameters["@FILETYPE"].Value = (int)item.FileType;
cmd.Parameters.Add("@ATTACHMENTPATH", SqlDbType.VarChar);
cmd.Parameters["@ATTACHMENTPATH"].Value = item.AttachmentPath == null ? string.Empty : item.AttachmentPath;
cmd.ExecuteNonQuery();
cmd.Dispose();
connection.Close();
}
}
public static DataSet GetPendingJobDetail(TransactionContext tc, int id)
{
DataSet dataSet = null;
string sql = SQLParser.MakeSQL(@"select ISNULL(e.Name, '') Applier, ISNULL(lv.Description, '') Leave,
FORMAT(APPFromDate,'dd MMM yyyy') FromDate,
FORMAT(APPToDate,'dd MMM yyyy') ToDate,
APPTotalDays TotalDays, Remarks
from Leaveentry le
Left Join Employee e
on e.EmployeeID = le.EmpID
Left Join Leave lv
on lv.LeaveID = le.LeaveID
Where TranID = %n ", id);
dataSet = tc.ExecuteDataSet(sql);
return dataSet;
}
internal static void Insert(TransactionContext tc, LeaveAttachment item)
{
string sql = SQLParser.MakeSQL(
@"Insert into LeaveAttachment (LeaveAttachmentID, LeaveEntryID, AttachmentPath)
Values(%n, %n, %s)", item.ID, item.LeaveEntryID, item.AttachmentPath);
tc.ExecuteNonQuery(sql);
}
public static void UpdateLeaveStatusLiFung(TransactionContext tc, LeaveEntry oItem)
{
tc.ExecuteNonQuery(@"
UPDATE LEAVEENTRY SET LEAVESTATUS = 11
WHERE EMPID = %n AND APRFROMDATE = %d AND APRTODATE = %d and leaveid =%n
", oItem.EmpID, DataReader.GetNullValue(oItem.ApprovedFromDate),
DataReader.GetNullValue(oItem.ApprovedToDate), oItem.LeaveID);
}
#endregion
#region Update function
public static void Update(TransactionContext tc, LeaveEntry oItem)
{
string sql = SQLParser.MakeSQL("UPDATE LeaveEntry SET EmpId=%n, EmpGradeId=%n, LeaveYear=%n, AppParamId=%n, AppLeaveDate=%d, AppFromDate=%d, AppToDate=%d, AppTotalDays=%n, AprParamId=%n, AprLeaveDate=%d, AprFromDate=%d, AprToDate=%d, APrTOTALDAYS=%n, ApprovedBy=%n, Remarks=%s, EntryDate=%d, IsDrafted=%n, IsAvailed=%n,LeaveStatus=%n, " +
"ErnLeaveRemarks=%s,LeaveID=%n,DepartmentID=%n,LocationID=%n,DesignationID=%n,AvailFromDate=%d,AvailToDate=%d,AvailTotalDays=%n,AvailRemarks=%s,AvailedBy=%n,LFAAmount=%n,LFASmokingAmount=%n,SalaryMonth=%d,AppliedLeaveID=%n, leaveAgainstDate =%d, compensatoryLeaveFor =%n, ItemId =%n, otValue =%n, DAYPERIOD =%n, LeaveDayPeriod =%s, ResponsiblePersonID=%n, isLFA=%n, selectedHalf = %n, IsHalfday = %n, CompensatoryDate=%d" +
" WHERE TranId=%n", oItem.EmpID, oItem.EmpGradeId, oItem.LeaveYearId, oItem.AppliedParamId,
oItem.AppliedLeaveDate, oItem.AppliedFromDate, oItem.AppliedToDate, oItem.AppliedTotalDays,
oItem.ApprovedParamId, oItem.ApprovedLeaveDate, oItem.ApprovedFromDate, oItem.ApprovedToDate,
oItem.ApprovedTotalDays, DataReader.GetNullValue(oItem.ApprovedBy), oItem.Remarks, oItem.EntryDate,
oItem.IsDrafted, oItem.IsAvailed, (int)oItem.LeaveStatus,
oItem.ErnLeaveRemarks, DataReader.GetNullValue(oItem.LeaveID),
DataReader.GetNullValue(oItem.DepartmentID), DataReader.GetNullValue(oItem.LocationID),
DataReader.GetNullValue(oItem.DesignationID), DataReader.GetNullValue(oItem.AvailFromDate),
DataReader.GetNullValue(oItem.AvailToDate), oItem.AvailTotalDays, oItem.AvailRemarks.Trim(),
DataReader.GetNullValue(oItem.AvailedBy), oItem.LFAAmount, oItem.LFASmokingAmount,
DataReader.GetNullValue(oItem.SalaryMonth),
DataReader.GetNullValue(oItem.AppliedLeaveID), DataReader.GetNullValue(oItem.LeaveAgainstDate),
oItem.CompensatoryLeaveFor,
oItem.ItemId, oItem.OtValue, oItem.DayPeriod, oItem.LeaveDayPeriod,
DataReader.GetNullValue(oItem.ResponsiblePersonID), oItem.isLFA, (int)oItem.SelectedHalf, oItem.IsHalfday, oItem.CompensatoryDate, oItem.ID);
tc.ExecuteNonQuery(sql);
}
public static void UpdateLeaveStatus(TransactionContext tc, int tranid, EnumLeaveStatus status)
{
tc.ExecuteNonQuery("UPDATE LeaveEntry SET LEAVESTATUS=%n WHERE TranId=%n", status, tranid);
}
#endregion
#region ID Generation function
public static int GetNewID(TransactionContext tc)
{
return tc.GenerateID("LeaveEntry", "TranId");
}
#endregion
#region Get Function
public static IDataReader GetByLeaveID(TransactionContext tc, int nLeaveID, int nEmpID, DateTime fromDate,
DateTime toDate)
{
return tc.ExecuteReader(
"SELECT LeaveEntry.* FROM LeaveEntry where LEAVEID=%n AND EmpId=%n AND AprFromDate between %d and %d AND APPTOTALDAYS<>0 And LEAVESTATUS = %n order by AppFromDate DESC",
nLeaveID, nEmpID, fromDate, toDate, (int)EnumLeaveStatus.OnApproval);
}
public static IDataReader GetLeaveEntries(TransactionContext tc, int empId, int leaveYearID)
{
//return tc.ExecuteReader("SELECT * from LeaveEntry where EMPID=%n AND LEAVEYEAR=%n", empId, leaveYearID);
return tc.ExecuteReader("SELECT l.Code description, le.* FROM Leaveentry le Inner Join LEAVE l On le.LEAVEID=l.LEAVEID where EMPID=%n AND LEAVEYEAR=%n", empId, leaveYearID);
}
public static IDataReader Get(TransactionContext tc, int empId, int leaveYear, int LeaveStatus)
{
if (LeaveStatus == 0)
return tc.ExecuteReader(
"SELECT LeaveEntry.*, Leave.Description FROM LeaveEntry, Leave, LeaveParameter where LeaveEntry.AprParamID=LeaveParameter.LeaveParamId AND LeaveParameter.LeaveID= Leave.LeaveID AND EmpId=%n and LeaveYear=%n AND APPTOTALDAYS<>0 order by AppFromDate DESC",
empId, leaveYear);
else
return tc.ExecuteReader(
"SELECT LeaveEntry.*, Leave.Description FROM LeaveEntry, Leave, LeaveParameter where LeaveEntry.AprParamID=LeaveParameter.LeaveParamId AND LeaveParameter.LeaveID= Leave.LeaveID AND EmpId=%n and LeaveYear=%n and LeaveStatus=%n AND APPTOTALDAYS<>0 order by AppFromDate DESC",
empId, leaveYear, LeaveStatus);
}
public static IDataReader Get(TransactionContext tc, int empId, DateTime fromDate, DateTime toDate, int LeaveStatus)
{
string sql = string.Empty;
sql = SQLParser.MakeSQL(@"SELECT * FROM LEAVEENTRY WHERE LEAVEID = 5 AND EMPID = %n
AND APRFROMDATE BETWEEN %d AND %d
AND APRTODATE BETWEEN %d AND %d AND LEAVESTATUS = 6", empId, fromDate, toDate, fromDate, toDate);
return tc.ExecuteReader(sql);
}
public static IDataReader Get(TransactionContext tc, int? employeeid, string EmpIds, int? leaveYearid,
int? leaveid,
DateTime? fromDate, DateTime? toDate, EnumLeaveStatus? leaveStatus, bool? isLfa)
{
string sqlClause = string.Empty;
if (employeeid == null && EmpIds == string.Empty)
{
throw new Exception("both EmployeeID and EmpIds are empty, please provide one of them");
}
sqlClause = " where le.LeaveID=l.LeaveID ";
if (fromDate != DateTime.MinValue && fromDate != null && toDate != null)
{
sqlClause = SQLParser.TagSQL(sqlClause) + SQLParser.MakeSQL("le.AprFromDate between %d and %d", fromDate, toDate);
}
if (leaveid != null)
{
sqlClause = SQLParser.TagSQL(sqlClause) + SQLParser.MakeSQL("le.leaveid = %n", leaveid);
}
if (leaveYearid != null)
{
sqlClause = SQLParser.TagSQL(sqlClause) + SQLParser.MakeSQL("le.LEAVEYEAR = %n", leaveYearid);
}
if (employeeid != null)
{
sqlClause = SQLParser.TagSQL(sqlClause) + SQLParser.MakeSQL("le.EmpID = %n", employeeid);
}
if (EmpIds != string.Empty)
{
sqlClause = SQLParser.TagSQL(sqlClause) + SQLParser.MakeSQL("le.EmpID in(%s)", EmpIds);
}
if (leaveStatus == EnumLeaveStatus.Regardless)
{
sqlClause = SQLParser.TagSQL(sqlClause) + SQLParser.MakeSQL("le.status = %n", leaveStatus);
}
string sql = SQLParser.MakeSQL(@"SELECT le.*, l.description FROM LeaveEntry le, leave l %q order by AprFromDate desc, --leavestatus desc
CASE
WHEN leavestatus = 1 THEN 1 --OnApproval
WHEN leavestatus = 3 THEN 2 --Reverted
WHEN leavestatus = 4 THEN 3 --Declined
WHEN leavestatus = 9 THEN 4 --Cancel_Request
WHEN leavestatus = 10 THEN 5 --Cancel
WHEN leavestatus = 11 THEN 6 --Cancelled_by_user
WHEN leavestatus = 5 THEN 7 --Availed
WHEN leavestatus = 6 THEN 8 --Approved
ELSE 0
END DESC;", sqlClause);
return tc.ExecuteReader(sql);
}
public static IDataReader Get(TransactionContext tc, string empIds, int leaveYear, int LeaveStatus)
{
string inSQL = "where " +
" LeaveEntry.leaveid= Leave.leaveid";
if (empIds != string.Empty)
{
inSQL = SQLParser.TagSQL(inSQL) + SQLParser.MakeSQL(" EmpId IN ( %q )", empIds);
}
if (LeaveStatus == 0)
return tc.ExecuteReader(
"SELECT LeaveEntry.*, Leave.Description FROM LeaveEntry, Leave where LeaveParameter.LeaveID= Leave.LeaveID AND EmpId %q and LeaveYear=%n AND APPTOTALDAYS<>0 order by AppFromDate DESC",
inSQL, leaveYear);
else
return tc.ExecuteReader(
"SELECT LeaveEntry.*, Leave.Description FROM LeaveEntry, Leave %q and leaveyear=%n" +
" and LeaveStatus=%n AND APPTOTALDAYS<>0 order by AppFromDate DESC",
inSQL, leaveYear, LeaveStatus);
}
public static IDataReader Get(TransactionContext tc, string empIds, int leaveYear, int leaveId, int LeaveStatus, DateTime leaveFromMonth, DateTime leaveToMonth)
{
string inSQL = "";
inSQL = "in (" + empIds + ")";
string sqlClause = " ";
sqlClause = SQLParser.MakeSQL(" LeaveYear=%n", leaveYear);
if(empIds !=string.Empty)
{
sqlClause = SQLParser.TagSQL(sqlClause) + SQLParser.MakeSQL(" EmpId %q", inSQL);
}
if (leaveId != 0)
{
sqlClause = SQLParser.TagSQL(sqlClause) + SQLParser.MakeSQL(" LEAVEID=%n", leaveId);
}
string sql = SQLParser.MakeSQL(@"SELECT * FROM LeaveEntry
where %q
and LeaveStatus=%n AND APPTOTALDAYS<>0
AND (APPFROMDATE BETWEEN %d AND %d OR APPTODATE BETWEEN %d AND %d) order by AppFromDate DESC",
sqlClause, LeaveStatus,
leaveFromMonth.FirstDateOfMonth(), leaveToMonth.LastDateOfMonth(),
leaveFromMonth.FirstDateOfMonth(), leaveToMonth.LastDateOfMonth());
return tc.ExecuteReader(sql);
}
public static double GetLeaveExceptionAmtByType(TransactionContext tc, int empId, int leaveId, LeaveException oLeaveEx, int leaveStatus)
{
object ob = DBNull.Value;
if ((EnumLeaveStatus)leaveStatus == EnumLeaveStatus.Approved)
{
ob = tc.ExecuteScalar("SELECT sum(APPTOTALDAYS) FROM LeaveEntry where EmpId=%n and LeaveID=%n and LeaveStatus =%n AND APRFROMDATE BETWEEN %d AND %d AND APPTOTALDAYS<>0", empId, leaveId, leaveStatus, oLeaveEx.StartDate, oLeaveEx.EndDate);
return ob == DBNull.Value ? 0 : Convert.ToDouble(ob);
}
if (leaveStatus == 0)
{
ob = tc.ExecuteScalar("SELECT sum(APPTOTALDAYS) FROM LeaveEntry where EmpId=%n and LeaveID=%n AND APRFROMDATE BETWEEN %d AND %d AND APPTOTALDAYS<>0", empId, leaveId, oLeaveEx.StartDate, oLeaveEx.EndDate);
}
else
{
ob = tc.ExecuteScalar("SELECT sum(APPTOTALDAYS) FROM LeaveEntry where EmpId=%n and LeaveID=%n and LeaveStatus =%n AND APRFROMDATE BETWEEN %d AND %d AND APPTOTALDAYS<>0", empId, leaveId, (int)EnumLeaveStatus.Approved, oLeaveEx.StartDate, oLeaveEx.EndDate);
}
return ob == DBNull.Value ? 0 : Convert.ToDouble(ob);
}
public static IDataReader Get(TransactionContext tc, DateTime fromDate, DateTime toDate, int LeaveStatus)
{
if (LeaveStatus == 0)
return tc.ExecuteReader(
@"SELECT LeaveEntry.*, Leave.Description FROM LeaveEntry, Leave where LeaveEntry.LeaveID= Leave.LeaveID
AND AprFromDate between %d and %d AND APPTOTALDAYS<>0 order by AppFromDate DESC",
fromDate, toDate);
else
return tc.ExecuteReader(
@"SELECT LeaveEntry.*, Leave.Description FROM LeaveEntry, Leave where LeaveEntry.LeaveID= Leave.LeaveID " +
"AND AprFromDate between %d and %d and LeaveStatus =%n AND APPTOTALDAYS<>0 order by AppFromDate DESC",
fromDate, toDate, LeaveStatus);
}
public static DataTable GetSumOfBalance(TransactionContext tc, DateTime fromDate, DateTime toDate, int LeaveStatus)
{
if (LeaveStatus == 0)
return tc.ExecuteDataTable(
@"SELECT LeaveEntry.EMPID, LeaveEntry.LEAVEID, sum(APPTOTALDAYS) totalDays FROM LeaveEntry where
AprFromDate between %d and %d AND APPTOTALDAYS <> 0
group by LeaveEntry.EMPID, LeaveEntry.LEAVEID order by LeaveEntry.EMPID, LeaveEntry.LEAVEID",
fromDate, toDate);
else
return tc.ExecuteDataTable(
@"SELECT LeaveEntry.EMPID, LeaveEntry.LEAVEID, sum(APPTOTALDAYS) totalDays FROM LeaveEntry where
AprFromDate between %d and %d AND APPTOTALDAYS <> 0
group by LeaveEntry.EMPID, LeaveEntry.LEAVEID order by LeaveEntry.EMPID, LeaveEntry.LEAVEID",
fromDate, toDate, LeaveStatus);
}
public static IDataReader Get(TransactionContext tc, DateTime attnDate)
{
tc.CommandTimeOut =6000;
return tc.ExecuteReader("SELECT * FROM LeaveEntry where %d Between APRFROMDATE AND APRTODATE ", attnDate);
}
public static IDataReader GetAll(TransactionContext tc)
{
return tc.ExecuteReader("SELECT * FROM LeaveEntry ");
}
public static IDataReader Get(TransactionContext tc, string empIds, DateTime fromDate, DateTime toDate,
int LeaveStatus)
{
string inSQL = string.Empty;
string sql = string.Empty;
inSQL = "in (" + empIds + ")";
//if (LeaveStatus == 0)
// sql = SQLParser.MakeSQL("SELECT LeaveEntry.*, Leave.Description FROM LeaveEntry, Leave, LeaveParameter "
// + " where LeaveEntry.AprParamID=LeaveParameter.LeaveParamId AND LeaveParameter.LeaveID= Leave.LeaveID AND AprFromDate between %d and %d and EmpId %q AND APPTOTALDAYS<>0 order by EmpId ASC", fromDate, toDate, inSQL);
//else
// sql = SQLParser.MakeSQL("SELECT LeaveEntry.*, Leave.Description FROM LeaveEntry, Leave, LeaveParameter "
// + " where LeaveEntry.AprParamID=LeaveParameter.LeaveParamId AND LeaveParameter.LeaveID= Leave.LeaveID AND AprFromDate between %d AND %d and LeaveStatus =%n and EmpId %q AND APPTOTALDAYS<>0 order by EmpId ASC", fromDate, toDate, LeaveStatus, inSQL);
if (LeaveStatus == 0)
sql = SQLParser.MakeSQL("SELECT LeaveEntry.*, Leave.Description FROM LeaveEntry, Leave, LeaveParameter "
+ " where LeaveEntry.AprParamID=LeaveParameter.LeaveParamId AND LeaveParameter.LeaveID= Leave.LeaveID AND (AprFromDate between %d and %d OR AprToDate between %d and %d OR %d BETWEEN AprFromDate AND AprToDate) and EmpId %q AND APPTOTALDAYS<>0 order by EmpId ASC",
fromDate, toDate, fromDate, toDate, fromDate, inSQL);
else
sql = SQLParser.MakeSQL("SELECT LeaveEntry.*, Leave.Description FROM LeaveEntry, Leave, LeaveParameter "
+ " where LeaveEntry.AprParamID=LeaveParameter.LeaveParamId AND LeaveParameter.LeaveID= Leave.LeaveID AND AprFromDate between %d AND %d and LeaveStatus =%n and EmpId %q AND APPTOTALDAYS<>0 order by EmpId ASC",
fromDate, toDate, LeaveStatus, inSQL);
return tc.ExecuteReader(sql);
}
public static IDataReader GetPending(TransactionContext tc, int empId, int leaveID, int LeaveStatus)
{
string sql = string.Empty;
sql = SQLParser.MakeSQL(
"SELECT LeaveEntry.* FROM LeaveEntry Where EmpId=%n AND LeaveID=%n AND LeaveStatus=%n ", empId, leaveID,
LeaveStatus);
return tc.ExecuteReader(sql);
}
public static IDataReader GetRecord(TransactionContext tc, string empIds, DateTime fromDate, DateTime toDate,
int LeaveStatus)
{
string inSQL = string.Empty;
string sql = string.Empty;
inSQL = "in (" + empIds + ")";
if (LeaveStatus == 0)
{
string str = SQLParser.MakeSQL(
"SELECT LeaveEntry.*, Leave.Description FROM LeaveEntry, Leave, LeaveParameter "
+ " where LeaveEntry.AprParamID=LeaveParameter.LeaveParamId AND LeaveEntry.LeaveID= Leave.LeaveID AND AprFromDate between %d and %d and EmpId %q AND APPTOTALDAYS<>0 order by AprFromDate DESC",
fromDate, toDate, inSQL);
return tc.ExecuteReader(str);
}
else
{
return tc.ExecuteReader(
"SELECT LeaveEntry.TranID,LeaveEntry.Remarks,LeaveEntry.AprFromDate,LeaveEntry.AprToDate,LeaveEntry.AprTotalDays,LeaveEntry.LeaveStatus,Leave.Description,LeaveEntry.AppLeaveDate FROM LeaveEntry, Leave, LeaveParameter "
+ " where LeaveEntry.AprParamID=LeaveParameter.LeaveParamId AND LeaveEntry.LeaveID= Leave.LeaveID AND AprFromDate between %d and %d and EmpId %q AND APPTOTALDAYS<>0 order by AprFromDate DESC",
fromDate, toDate, inSQL);
}
}
public static IDataReader Get(TransactionContext tc, int empId, int leaveYearID)
{
return tc.ExecuteReader("SELECT * from LeaveEntry where EMPID=%n AND LEAVEYEAR=%n", empId, leaveYearID);
}
public static IDataReader GetByLeaveYear(TransactionContext tc, int nLeaveYear)
{
return tc.ExecuteReader("SELECT * from LeaveEntry where LeaveYear=%n", nLeaveYear);
}
public static IDataReader Get(TransactionContext tc, string empIds, DateTime fromDate, DateTime toDate,
string LeaveStatus)
{
string inSQL = "";
inSQL = "in (" + empIds + ")";
if (!(LeaveStatus.Trim().Length > 0))
return tc.ExecuteReader("SELECT LeaveEntry.*, Leave.Description FROM LeaveEntry, Leave, LeaveParameter "
+ " where LeaveEntry.AprParamID=LeaveParameter.LeaveParamId AND LeaveParameter.LeaveID= Leave.LeaveID AND AprFromDate between %d and %d and EmpId %q AND APPTOTALDAYS<>0 Order by EmpId ASC",
fromDate, toDate, inSQL);
else
{
string str = SQLParser.MakeSQL(
"SELECT LeaveEntry.*, Leave.Description FROM LeaveEntry, Leave, LeaveParameter "
+ " where LeaveEntry.AprParamID=LeaveParameter.LeaveParamId AND LeaveParameter.LeaveID= Leave.LeaveID AND AprFromDate between %d and %d and LeaveStatus in (%q) and EmpId %q AND APPTOTALDAYS<>0 Order by EmpId ASC",
fromDate, toDate, LeaveStatus, inSQL);
return tc.ExecuteReader(str);
}
}
public static IDataReader Get(TransactionContext tc, int tranId)
{
string sSQL = SQLParser.MakeSQL(
"SELECT ln.*, Leave.Description FROM LeaveEntry ln, Leave WHERE ln.LeaveID= Leave.LeaveID AND ln.TranId=%n ",
tranId);
return tc.ExecuteReader(sSQL);
}
public static IDataReader GetForAdminPanel(TransactionContext tc, int employeeID)
{
string str = SQLParser.MakeSQL(
"Select LeaveEntry.*, Leave.Description FROM LeaveEntry, Leave, LeaveParameter where LeaveEntry.AprParamID=LeaveParameter.LeaveParamId AND LeaveParameter.LeaveID= Leave.LeaveID and empID=%n and LeaveStatus in( %n, %n, %n, %n) AND APPTOTALDAYS<>0",
employeeID, (int)EnumLeaveStatus.Drafted, (int)EnumLeaveStatus.OnApproval,
(int)EnumLeaveStatus.OnApproval, (int)EnumLeaveStatus.Approved);
return tc.ExecuteReader(str);
}
public static IDataReader GetYearEndData(TransactionContext tc, int leaveYear)
{
string sSql = "";
sSql = "Select A.LeaveId,B.EmpId,sum(B.TotalDays)as TotalDays from " +
"LeaveParameter A inner join " +
"(SELECT AppParamId,EmpId,sum(AppTotalDays)as TotalDays FROM " +
"LeaveEntry where LeaveYear= " + leaveYear +
" and LeaveStatus =5 AND APPTOTALDAYS<>0 group by AppParamId,EmpId " +
")B " +
"on A.LeaveParamId=B.AppParamId " +
" group by LeaveId,EmpId " +
" order by LeaveId,EmpId";
return tc.ExecuteReader(sSql);
}
public static IDataReader GetAvailedLeave(TransactionContext tc, DateTime stDate, DateTime endDate,
string empIds)
{
string sSql = "";
sSql =
"select OrganizationHierarchy.OrganizationId OrgId,OrganizationHierarchy.Description Organization,X.* from Employee,OrganizationHierarchy,(" +
"Select A.LeaveId,B.EmpId,sum(B.TotalDays)as TotalDays from " +
"LeaveParameter A inner join " +
"(SELECT AppParamId,EmpId,sum(AppTotalDays)as TotalDays FROM " +
"LeaveEntry where LeaveStatus =5 and EmpId in (" + empIds + ") and AprLeaveDate between '" +
stDate.Date + "' and '" + endDate.Date + "' AND APPTOTALDAYS<>0 group by AppParamId,EmpId " +
")B " +
"on A.LeaveParamId=B.AppParamId " +
" group by LeaveId,EmpId)X where Employee.EmployeeId=X.EmpId " +
" and Employee.OrganizationId=OrganizationHierarchy.OrganizationId " +
" order by OrganizationHierarchy.OrganizationId ASC";
return tc.ExecuteReader(sSql);
}
internal static IDataReader GetSumOfAvailedLeave(TransactionContext tc, int LeavYearID)
{
string str = SQLParser.MakeSQL(
@"select LeaveYear, LeaveID,EmpId, Sum(APPTOTALDAYS) AprTotalDays, LEAVESTATUS from LeaveEntry
where LeaveYear=%n AND LeaveStatus=%n group by LeaveYear, LeaveID, EmpId, LEAVESTATUS", LeavYearID, (int)EnumLeaveStatus.Approved);
// sSql = @"select LeaveYear, LeaveID,EmpId, Sum(APPTOTALDAYS) AprTotalDays, LEAVESTATUS from LeaveEntry
// where LeaveYear=%n group by LeaveYear, LeaveID, EmpId, LEAVESTATUS";
return tc.ExecuteReader(str);
}
public static IDataReader GetSumOfAvailedLeave(TransactionContext tc, int LeavYearID, int employeeid)
{
string sSql = SQLParser.MakeSQL(
@"select LeaveYear, LeaveID,EmpId, Sum(APPTOTALDAYS) APRTOTALDAYS, LEAVESTATUS from LeaveEntry
where LeaveYear=%n and EmpId=%n AND LeaveStatus=%n group by LeaveYear, EmpId, LeaveID, LEAVESTATUS",
LeavYearID, employeeid, (int)EnumLeaveStatus.Approved);
// sSql = @"select LeaveYear, LeaveID,EmpId, Sum(APPTOTALDAYS) APRTOTALDAYS, LEAVESTATUS from LeaveEntry
// where LeaveYear=%n and EmpId=%n group by LeaveYear, EmpId, LeaveID, LEAVESTATUS";
// sSql = @"select * from LeaveEntry
// where LeaveYear=%n and EmpId=%n group by LeaveYear, EmpId, LeaveID, LEAVESTATUS";
return tc.ExecuteReader(sSql);
//return tc.ExecuteReader(sSql,LeavYearID, employeeid);
}
public static IDataReader GetEmployeeWiseLeaveDetailReport(TransactionContext tc, int empId, DateTime fromDate,
DateTime toDate, int leaveType)
{
string query = string.Empty;
LeaveYearService lys = new LeaveYearService();
// LeaveYear ly = lys.GetCurrentYear();
if (leaveType == 0)
{
query = "SELECT * " +
" FROM LeaveEntry" +
" WHERE EmpId = %n AND LeaveEntry.AprFromDate >= %d AND LeaveEntry.AprToDate <= %d " +
" AND LEAVESTATUS=%n AND LeaveEntry.APPTOTALDAYS<>0 order by LEAVEID";
return tc.ExecuteReader(query, empId, fromDate, toDate, EnumLeaveStatus.Approved);
}
else
{
query = "SELECT * " +
" FROM LeaveEntry" +
" WHERE EmpId = %n AND LEAVEID=%n AND LeaveEntry.AprFromDate >= %d AND LeaveEntry.AprToDate <= %d " +
" AND LEAVESTATUS=%n AND LeaveEntry.APPTOTALDAYS<>0";
return tc.ExecuteReader(query, empId, leaveType, fromDate, toDate, EnumLeaveStatus.Approved);
}
}
public static IDataReader GetEmployeeWiseLeaveDetailReport(TransactionContext tc, string empIds, DateTime fromDate, DateTime toDate, int leaveType)
{
string query = string.Empty;
/*LeaveYearService leaveYearService = new LeaveYearService();
LeaveYear ly = leaveYearService.GetCurrentYear();*/
if (leaveType == 0)
{
query = SQLParser.MakeSQL(@"
SELECT *
FROM LeaveEntry
WHERE EmpId in (%q) AND LeaveEntry.AprFromDate >= %d AND LeaveEntry.AprToDate <= %d
AND LEAVESTATUS=%n AND LeaveEntry.APPTOTALDAYS<>0 order by LEAVEID", empIds, fromDate, toDate, EnumLeaveStatus.Approved);
return tc.ExecuteReader(query);
}
else
{
query = "SELECT * " +
" FROM LeaveEntry" +
" WHERE EmpId in (%q) AND LEAVEID=%n AND LeaveEntry.AprFromDate >= %d AND LeaveEntry.AprToDate <= %d " +
" AND LEAVESTATUS=%n AND LeaveEntry.APPTOTALDAYS<>0";
return tc.ExecuteReader(query, empIds, leaveType, fromDate, toDate, EnumLeaveStatus.Approved);
}
}
public static IDataReader GetEmployeeWiseLeaveDetailReport(TransactionContext tc, string empIds, int leaveYear, int leaveType)
{
string query = string.Empty;
/*LeaveYearService leaveYearService = new LeaveYearService();
LeaveYear ly = leaveYearService.GetCurrentYear();*/
if (leaveType == 0)
{
query = SQLParser.MakeSQL(@"
SELECT *
FROM LeaveEntry
WHERE EmpId in (%q) AND LeaveEntry.LEAVEYEAR = %n
AND LEAVESTATUS=%n AND LeaveEntry.APPTOTALDAYS<>0 order by LEAVEID", empIds, leaveYear, EnumLeaveStatus.Approved);
return tc.ExecuteReader(query);
}
else
{
query = "SELECT * " +
" FROM LeaveEntry" +
" WHERE EmpId in (%q) AND LEAVEID=%n AND LeaveEntry.LEAVEYEAR = %n " +
" AND LEAVESTATUS=%n AND LeaveEntry.APPTOTALDAYS<>0";
return tc.ExecuteReader(query, empIds, leaveType, leaveYear, EnumLeaveStatus.Approved);
}
}
public static int GetEmployeeLeaveBalance(TransactionContext tc, int empId, int leaveYear, int leaveType)
{
string query = string.Empty;
object ob;
if (leaveType == 0)
{
ob = tc.ExecuteScalar("SELECT sum(APPTOTALDAYS) TOTAL " +
" FROM LeaveEntry" +
" WHERE EmpId = %n AND LEAVEYEAR=%n AND LEAVESTATUS=%n", empId, leaveYear,
EnumLeaveStatus.Approved);
return ob == DBNull.Value ? 0 : Convert.ToInt32(ob);
}
else
{
ob = tc.ExecuteScalar("SELECT sum(APPTOTALDAYS) TOTAL " +
" FROM LeaveEntry" +
" WHERE EmpId = %n AND LEAVEYEAR=%n AND LEAVEID=%n AND LEAVESTATUS=%n", empId,
leaveYear, leaveType, EnumLeaveStatus.Approved);
return ob == DBNull.Value ? 0 : Convert.ToInt32(ob);
}
}
public static DataSet GetLeaveReport(TransactionContext tc, int empId, DateTime fromDate, DateTime toDate)
{
string query = string.Empty;
DataSet dataSet = null;
query = "Select Leave.description LeaveType,C.EmpId,C.TotalDays from Leave inner join"
+ " (Select A.LeaveId, B.EmpId, sum(B.TotalDays)as TotalDays from LeaveParameter A inner join"
+ " (SELECT AppParamId,EmpId,sum(AppTotalDays)as TotalDays FROM LeaveEntry where ( AprFromDate >= %d AND AprToDate <= %d)and LeaveStatus =5 AND EmpID = %n group by AppParamId,EmpId )B "
+ " on A.LeaveParamId=B.AppParamId group by A.LeaveId, EmpId)C on Leave.LeaveId=C.LeaveId order by C.LeaveId, C.EmpId";
dataSet = tc.ExecuteDataSet(query, fromDate, toDate, empId);
return dataSet;
}
public static DataSet GetAvailedLeave(TransactionContext tc, int empId, DateTime fromDate, DateTime toDate)
{
string query = string.Empty;
DataSet dataSet = null;
query = "Select Leave.LeaveID ,C.EmpId,C.TotalDays from Leave inner join"
+ " (Select A.LeaveId, B.EmpId, sum(B.TotalDays)as TotalDays from LeaveParameter A inner join"
+ " (SELECT AppParamId,EmpId,sum(AppTotalDays)as TotalDays FROM LeaveEntry where ( AprFromDate >= %d AND AprToDate <= %d)and LeaveStatus =%n AND EmpID = %n group by AppParamId,EmpId )B "
+ " on A.LeaveParamId=B.AppParamId group by A.LeaveId, EmpId)C on Leave.LeaveId=C.LeaveId order by C.LeaveId, C.EmpId";
dataSet = tc.ExecuteDataSet(query, fromDate, toDate, EnumLeaveStatus.Approved, empId);
return dataSet;
}
public static DataSet SBUWiseLeaveReport(TransactionContext tc, string SBUIDs, string LeaveIDs,
DateTime fromDate, DateTime toDate)
{
string query = string.Empty;
DataSet dataSet = null;
return dataSet;
}
public static double GetLeaveAmtByType(TransactionContext tc, int empId, int leaveParamId, int leaveYear,
int leaveStatus)
{
object ob;
if ((EnumLeaveStatus)leaveStatus == EnumLeaveStatus.Approved)
{
string sSQL = SQLParser.MakeSQL(
@"SELECT sum(APPTOTALDAYS) FROM LeaveEntry where EmpId=%n and LeaveYear=%n
and AprParamId=%n and LeaveStatus =%n AND APPTOTALDAYS<>0",
empId, leaveYear, leaveParamId, leaveStatus);
ob = tc.ExecuteScalar(
"SELECT sum(APPTOTALDAYS) FROM LeaveEntry where EmpId=%n and LeaveYear=%n and AprParamId=%n and LeaveStatus =%n AND APPTOTALDAYS<>0",
empId, leaveYear, leaveParamId, leaveStatus);
return ob == DBNull.Value ? 0 : Convert.ToDouble(ob);
}
if (leaveStatus == 0)
ob = tc.ExecuteScalar(
"SELECT sum(APPTOTALDAYS) FROM LeaveEntry where EmpId=%n and LeaveYear=%n and AprParamId=%n AND APPTOTALDAYS<>0",
empId, leaveYear, leaveParamId);
else
ob = tc.ExecuteScalar(
"SELECT sum(APPTOTALDAYS) FROM LeaveEntry where EmpId=%n and LeaveYear=%n and AprParamId=%n and LeaveStatus =%n AND APPTOTALDAYS<>0",
empId, leaveYear, leaveParamId, (int)EnumLeaveStatus.Approved);
return ob == DBNull.Value ? 0 : Convert.ToDouble(ob);
}
public static double GetAvailedLeave(TransactionContext tc, int empId, int leaveId, int leaveYear,
int leaveStatus)
{
object ob;
//if ((EnumLeaveStatus)leaveStatus == EnumLeaveStatus.Availed)
//{
// ob = tc.ExecuteScalar("SELECT sum(APPTOTALDAYS) FROM LeaveEntry where EmpId=%n and LeaveYear=%n and LeaveID=%n and LeaveStatus =%n AND APPTOTALDAYS<>0", empId, leaveYear, leaveId, leaveStatus);
// return ob == DBNull.Value ? 0 : Convert.ToDouble(ob);
//}
if (leaveStatus == 0)
ob = tc.ExecuteScalar(
"SELECT sum(APPTOTALDAYS) FROM LeaveEntry where EmpId=%n and LeaveYear=%n and LeaveID=%n AND APPTOTALDAYS<>0",
empId, leaveYear, leaveId);
else
ob = tc.ExecuteScalar(
"SELECT sum(APPTOTALDAYS) FROM LeaveEntry where EmpId=%n and LeaveYear=%n and LeaveID=%n and LeaveStatus =%n AND APPTOTALDAYS<>0",
empId, leaveYear, leaveId, leaveStatus);
return ob == DBNull.Value ? 0 : Convert.ToDouble(ob);
}
public static double GetAmountOnFromDate(TransactionContext tc, int empId, int leaveYear,
int leaveID, EnumLeaveStatus leaveStatus, DateTime dStartDate, DateTime dTodate)
{
object ob;
ob = tc.ExecuteScalar("SELECT sum(APPTOTALDAYS) FROM LeaveEntry where EmpId=%n "
+ " and LeaveYear=%n and AprParamId=%n and LeaveStatus =%n AND "
+ " APPTOTALDAYS <> 0 AND AprFromDate BETWEEN %d AND %d", empId,
leaveYear, leaveID, leaveStatus, dStartDate, dTodate);
return ob == DBNull.Value ? 0 : Convert.ToDouble(ob);
}
public static double GetAmountOnFromDate(TransactionContext tc, int empId,
int leaveID, EnumLeaveStatus leaveStatus, DateTime dStartDate, DateTime dTodate)
{
object ob;
ob = tc.ExecuteScalar("SELECT sum(APPTOTALDAYS) FROM LeaveEntry where EmpId=%n "
+ " and AprParamId=%n and LeaveStatus =%n AND "
+ " APPTOTALDAYS <> 0 AND AprFromDate BETWEEN %d AND %d", empId,
leaveID, leaveStatus, dStartDate, dTodate);
return ob == DBNull.Value ? 0 : Convert.ToDouble(ob);
}
public static double GetTotalLeaveAmountInYear(TransactionContext tc, int empId, int leaveYear,
int leaveID, EnumLeaveStatus leaveStatus)
{
object ob;
ob = tc.ExecuteScalar("SELECT SUM(APPTOTALDAYS) FROM LeaveEntry where EmpId=%n "
+ " and LeaveYear=%n and AprParamId=%n and LeaveStatus =%n AND "
+ " APPTOTALDAYS <> 0 ", empId,
leaveYear, leaveID, leaveStatus);
return ob == DBNull.Value ? 0 : Convert.ToDouble(ob);
}
public static IDataReader GetTotalLeaveAmountInYear(TransactionContext tc, int leaveYear,
EnumLeaveStatus leaveStatus)
{
return tc.ExecuteReader("SELECT Empid,LeaveID,SUM(APPTOTALDAYS) Days FROM LeaveEntry where "
+ " LeaveYear=%n and LeaveStatus =%n AND "
+ " APPTOTALDAYS <> 0 group by empid,LeaveID order by empid,LeaveID", leaveYear,
leaveStatus);
}
public static IDataReader GetLFAOnMonth(TransactionContext tc, DateTime onMonth, int payrolltypeid)
{
return tc.ExecuteReader(@"SELECT * FROM LeaveEntry l Inner join Employee e on e.employeeID=l.empID
where l.SalaryMonth= %d and e.payrollTypeID=%n", onMonth, payrolltypeid);
}
//public static DataSet GetEmployeeWiseLeaveReport(TransactionContext tc, Ease.Core.Framework.ID empId, DateTime fromDate, DateTime toDate)
//{
// string query = string.Empty;
// DataSet dataSet = null;
// query = " SELECT Leave.LeaveID, Leave.Description LeaveType, LeaveEntry.APPTOTALDAYS Days " +
// " FROM LeaveEntry, Leave, LeaveParameter " +
// " WHERE LeaveEntry.AprParamID=LeaveParameter.LeaveParamId " +
// " AND LeaveParameter.LeaveID = Leave.LeaveID " +
// " AND EmpId = %n AND LeaveEntry.AprFromDate >= %d AND LeaveEntry.AprToDate <= %d " +
// " AND LeaveEntry.APPTOTALDAYS<>0 ORDER BY Leave.LeaveID ASC";
// dataSet = tc.ExecuteDataSet(query, empId, fromDate, toDate);
// return dataSet;
//}
public static DataSet GetReport(TransactionContext tc, string query)
{
DataSet dataSet = null;
dataSet = tc.ExecuteDataSet(query);
return dataSet;
}
public static IDataReader Get(TransactionContext tc, string empIds, DateTime fromDate, DateTime toDate,
int LeaveStatus, string sortExpresion)
{
string inSQL = "";
inSQL = "in (" + empIds + ")";
if (LeaveStatus == 0)
{
string str = SQLParser.MakeSQL(
"SELECT LeaveEntry.*, Leave.Description FROM LeaveEntry, Leave, LeaveParameter "
+ " where LeaveEntry.AprParamID=LeaveParameter.LeaveParamId AND LeaveParameter.LeaveID= Leave.LeaveID AND AprFromDate between %d and %d AND APPTOTALDAYS<>0 and EmpId %q order by " +
sortExpresion, fromDate, toDate, inSQL);
return tc.ExecuteReader(str);
}
else
return tc.ExecuteReader("SELECT LeaveEntry.*, Leave.Description FROM LeaveEntry, Leave, LeaveParameter "
+ " where LeaveEntry.AprParamID=LeaveParameter.LeaveParamId AND LeaveParameter.LeaveID= Leave.LeaveID AND AprFromDate between %d and %d and LeaveStatus =%n AND APPTOTALDAYS<>0 and EmpId %q order by %s",
fromDate, toDate, LeaveStatus, inSQL, sortExpresion);
}
internal static IDataReader GetAttachments(TransactionContext tc, int leaveEntryID)
{
string sql = SQLParser.MakeSQL("Select * from LeaveAttachment Where LeaveEntryID = %n", leaveEntryID);
return tc.ExecuteReader(sql);
}
public static bool IsEntered(TransactionContext tc, DateTime year)
{
// nProcessYear = LeaveEntry.getJulyJuneLeaveYear(nProcessYear);
object obj = new object();
obj = tc.ExecuteScalar("SELECT * FROM LeaveEntry WHERE AprFromDate=%d", year);
return (Convert.ToInt32(obj) != 0);
}
//public static double GetSubmittedAmt(TransactionContext tc, int empId, int leaveParamId, int leaveYear)
//{
// object ob;
// ob = tc.ExecuteScalar("SELECT sum(APPTOTALDAYS) FROM LeaveEntry where EmpId=%n and LeaveYear=%n and AprParamId=%n and LeaveStatus =5", empId, leaveYear, leaveParamId);
// return ob==DBNull.Value?0:Convert.ToDouble(ob);
//}
//public static double GetApprovedAmt(TransactionContext tc, int empId, int leaveParamId, int leaveYear)
//{
// object ob;
// ob = tc.ExecuteScalar("SELECT sum(APPTOTALDAYS) FROM LeaveEntry where EmpId=%n and LeaveYear=%n and AprParamId=%n and IsDrafted=0 and ApprovedBy is not null", empId, leaveYear, leaveParamId);
// return ob == DBNull.Value ? 0 : Convert.ToDouble(ob);
//}
//public static double GetAvailedAmt(TransactionContext tc, int empId, int leaveParamId, int leaveYear)
//{
// object ob;
// ob = tc.ExecuteScalar("SELECT sum(APPTOTALDAYS) FROM LeaveEntry where EmpId=%n and LeaveYear=%n and AprParamId=%n and IsAvailed=1", empId, leaveYear, leaveParamId);
// return ob == DBNull.Value ? 0 : Convert.ToDouble(ob);
//}
#endregion
internal static IDataReader GetMaternityLeave(TransactionContext tc, int empID, string code)
{
string sql = SQLParser.MakeSQL(@"SELECT TOP 1 le.* FROM LEAVEENTRY le
LEFT JOIN LEAVE lv ON le.LEAVEID = lv.LEAVEID
WHERE le.EMPID = %n AND lv.CODE = %s
ORDER BY le.TRANID DESC", empID, code);
return tc.ExecuteReader(sql);
}
public static bool IsExist(TransactionContext tc, Employee oEmployee, DateTime fromDate, DateTime toDate)
{
object obj = new object();
obj = tc.ExecuteScalar("SELECT * FROM LeaveEntry WHERE EMPID=%n AND APPFROMDATE = %d AND APPTODATE = %d",
oEmployee.ID, fromDate, toDate);
return Convert.ToInt32(obj) != 0 ? true : false;
}
#region Delete function
public static void Delete(TransactionContext tc, int tranId)
{
//IDataReader rdr=tc.ExecuteReader("SELECT * FROM LeaveEntry WHERE TranID=%n",tranId);
//NullHandler oreader = new NullHandler(rdr);
//if(rdr.Read())
//{
// if (oreader.GetInt32("LeaveStatus") == (int)EnumLeaveStatus.Drafted)
// {
// tc.ExecuteNonQuery("DELETE FROM LeavePlanerEntry WHERE TranId=%n", tranId);
// }
//}
//tc.ExecuteNonQuery("DELETE FROM LeaveEntry WHERE TranId=%n", tranId);
tc.ExecuteNonQuery("DELETE FROM LEAVEATTACHMENT WHERE LEAVEENTRYID=%n", tranId);
tc.ExecuteNonQuery("DELETE FROM LeaveEntry WHERE TranId=%n", tranId);
}
private static void DeleteDummyEntry(TransactionContext tc, LeaveEntry oItem)
{
try
{
tc.ExecuteNonQuery("DELETE FROM LeaveEntry WHERE EmpID=%n and LeaveID=%n AND APPTOTALDAYS=0",
oItem.EmpID, oItem.LeaveID);
}
catch (Exception ex)
{
}
}
public static void DeleteByLeaveYear(TransactionContext tc, int nYear, int nLeaveid)
{
tc.ExecuteNonQuery("DELETE FROM LeaveEntry WHERE LeaveYear=%n AND LeaveID=%n", nYear, nLeaveid);
}
internal static void DeleteAttachments(TransactionContext tc, int Id)
{
tc.ExecuteNonQuery("DELETE FROM LeaveAttachment WHERE LeaveEntryID = %n", Id);
}
public static void UploadFile(TransactionContext tc, LeaveAttachment item)
{
tc.ExecuteNonQuery("DELETE FROM LeaveAttachment WHERE LeaveEntryID = %n", item.LeaveEntryID);
string strQuery = @"INSERT INTO LEAVEATTACHMENT(LEAVEENTRYID, ATTACHMENTPATH, FILEDATA,ORIGINALFILENAME,FILETYPE) Values (@LEAVEENTRYID,@ATTACHMENTPATH,@FILEDATA,@ORIGINALFILENAME,@FILETYPE)";
SqlCommand cmd = new SqlCommand(strQuery, (SqlConnection)tc.Connection);
cmd.Parameters.Add("@LEAVEENTRYID", SqlDbType.Int);
cmd.Parameters["@LEAVEENTRYID"].Value = item.LeaveEntryID;
cmd.Parameters.Add("@ORIGINALFILENAME", SqlDbType.VarChar);
cmd.Parameters["@ORIGINALFILENAME"].Value = item.OriginalFileName;
cmd.Parameters.Add("@FILEDATA", SqlDbType.VarBinary);
cmd.Parameters["@FILEDATA"].Value = item.FileAsByteArray;
cmd.Parameters.Add("@FILETYPE", SqlDbType.Int);
cmd.Parameters["@FILETYPE"].Value = (int)item.FileType;
cmd.Parameters.Add("@ATTACHMENTPATH", SqlDbType.VarChar);
cmd.Parameters["@ATTACHMENTPATH"].Value = item.AttachmentPath == null ? string.Empty : item.AttachmentPath;
cmd.ExecuteNonQuery();
}
internal static DataTable GetMyTeamLeave(TransactionContext tc, int linemanagerid, DateTime fromdate, DateTime todate)
{
DataTable presentDays = new DataTable();
try
{
string sql = SQLParser.MakeSQL("SELECT e.EMPLOYEEID, le.LEAVEID, e.NAME, le.APPFROMDATE, le.APPTODATE FROM LEAVEENTRY le " +
"LEFT JOIN EMPLOYEE e ON e.EMPLOYEEID = le.EMPID " +
"WHERE (le.APPFROMDATE between %d and %d OR le.APPTODATE between %d and %d) " +
"AND e.linemanagerid =%n and e.status =1 " +
"AND le.LEAVESTATUS not in (%n,%n,%n)", fromdate, todate, fromdate, todate, linemanagerid, (int)EnumLeaveStatus.Declined, (int)EnumLeaveStatus.Cancel, (int)EnumLeaveStatus.Cancelled_by_user);
presentDays = tc.ExecuteDataTable(sql);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
return presentDays;
}
public static IDataReader GetEmployeeWiseLeaveDetailReport(TransactionContext tc, string empIds, DateTime fromDate, DateTime toDate)
{
string query = string.Empty;
// LeaveYear ly = LeaveYear.GetCurrentYear();
// {
// query = SQLParser.MakeSQL(@"SELECT *
// FROM LeaveEntry
// WHERE EmpId in (%q) AND LeaveEntry.AprFromDate >= %d AND LeaveEntry.AprToDate <= %d
// AND LeaveYear=%n AND LeaveEntry.APPTOTALDAYS<>0 order by AprFromDate DESC");
// return tc.ExecuteReader(query, empIds, fromDate, toDate, ly.ID.Integer);
// }
// LeaveYear ly = LeaveYear.GetCurrentYear();
{
query = SQLParser.MakeSQL(@"SELECT *
FROM LeaveEntry
WHERE EmpId in (%q) AND LeaveEntry.AprFromDate >= %d AND LeaveEntry.AprToDate <= %d
AND LeaveEntry.APPTOTALDAYS<>0 order by AprFromDate DESC");
return tc.ExecuteReader(query, empIds, fromDate, toDate);
}
}
internal static IDataReader GetPreviousDateApprovedLeaveEntry(TransactionContext tc, DateTime leaveApprovedDate, string salesHeadEmailAddress, EnumLeaveStatus leaveStatus)
{
string sql = SQLParser.MakeSQL(@"
WITH cte AS (
SELECT EMPLOYEEID, EMPLOYEENO, NAME, DEPARTMENTID, DESIGNATIONID, LOCATIONID
FROM EMPLOYEE
WHERE LINEMANAGERID IN (SELECT EMPLOYEEID FROM EMPLOYEE WHERE EMAILADDRESS = %s)
UNION ALL
SELECT e.EMPLOYEEID, e.EMPLOYEENO, e.NAME, e.DEPARTMENTID, e.DESIGNATIONID, e.LOCATIONID
FROM EMPLOYEE e
INNER JOIN cte c
ON e.LINEMANAGERID = c.EMPLOYEEID
)
SELECT c.EMPLOYEEID, c.EMPLOYEENO, c.NAME, des.NAME AS [DESIGNATION], d.DESCRIPTION AS [DEPARTMENT],
l.TRANID AS LeaveEntryID, l.LEAVESTATUS, l.APPFROMDATE, l.APPTODATE, l.APRLEAVEDATE, l.REMARKS AS Reason,
loc.DESCRIPTION AS [LOCATION], lv.DESCRIPTION AS LeaveName
FROM LEAVEENTRY l
JOIN cte c ON l.EMPID = c.EMPLOYEEID
JOIN LEAVE lv ON lv.LEAVEID = l.LEAVEID
LEFT JOIN DESIGNATION des ON des.DESIGNATIONID = c.DESIGNATIONID
LEFT JOIN DEPARTMENT d ON d.DEPARTMENTID = c.DEPARTMENTID
LEFT JOIN LOCATION loc ON loc.LOCATIONID = c.LOCATIONID
WHERE l.LEAVESTATUS = %n AND l.APRLEAVEDATE = %d",
salesHeadEmailAddress, leaveStatus, leaveApprovedDate);
return tc.ExecuteReader(sql);
}
internal static void OnapprovalCancelRequest(TransactionContext tc, int tranId, EnumLeaveStatus leaveStatus, EnumwfStatus wfstatus)
{
string updateWFNext = SQLParser.MakeSQL(@"
UPDATE WFMovementNext
SET Status = %n WHERE WFMovementNextID = (
SELECT max(wn.WFMovementNextID) FROM WFMovementNext wn
JOIN WFMovementTran wt ON wn.WFMovementTranID = wt.WFMovementTranID
WHERE wn.EmployeeID <> (SELECT EMPID FROM LEAVEENTRY WHERE TRANID = %n) AND
wt.ObjectID = %n AND wn.Status <> 0)", wfstatus, tranId, tranId);
string updateleaveEntry = SQLParser.MakeSQL(@"UPDATE LEAVEENTRY SET LEAVESTATUS = %n WHERE TRANID = %n", leaveStatus, tranId);
tc.ExecuteNonQuery(updateWFNext);
tc.ExecuteNonQuery(updateleaveEntry);
}
internal static DataTable AllApproverInfo(TransactionContext tc, int tranId)
{
string sql = SQLParser.MakeSQL(@"
SELECT e.NAME, e.EMAILADDRESS, leaveInfo.*
FROM (
SELECT e.EMPLOYEENO AS EMPNO, e.NAME AS EMPLOYEENAME, l.DESCRIPTION AS LEAVENAME, le.APPFROMDATE AS FROMDATE,
le.APPTODATE AS TODATE, le.APPTOTALDAYS AS TOTALDAYS
FROM LEAVEENTRY le
JOIN LEAVE l ON le.LEAVEID = l.LEAVEID
JOIN EMPLOYEE e ON e.EMPLOYEEID = le.EMPID
WHERE le.TRANID = %n
) leaveInfo,
WFMovementNext wn
JOIN WFMovementTran wt ON wn.WFMovementTranID = wt.WFMovementTranID
JOIN EMPLOYEE e ON e.EMPLOYEEID = wn.EmployeeID
WHERE wn.EmployeeID <> (SELECT EMPID FROM LEAVEENTRY WHERE TRANID = %n) AND
wt.ObjectID = %n AND wn.Status <> 0", tranId, tranId, tranId);
return tc.ExecuteDataTable(sql);
}
//Single Employee Leave Ledger for Mobile App
internal static IDataReader GetEmpleaveLedger(TransactionContext tc, int empId, DateTime fromDate, DateTime toDate)
{
string sql = SQLParser.MakeSQL(@"
SELECT l.DESCRIPTION LeaveName, le.APPFROMDATE FromDate, le.APPTODATE ToDate, le.APPTOTALDAYS TotalDays, le.REMARKS Reason
From LEAVEENTRY le
INNER JOIN LEAVE l ON le.LEAVEID = l.LEAVEID
WHERE le.EMPID=%n
AND le.APPLEAVEDATE BETWEEN %s AND %s", empId, fromDate, toDate);
return tc.ExecuteReader(sql);
}
//My Team Upcoming Leave Mobile App
internal static IDataReader GetMyTeamUpcomingLeave(TransactionContext tc, int empId, DateTime fromDate, DateTime toDate)
{
string sql = SQLParser.MakeSQL(@"
SELECT e.employeeNo, e.Name, l.DESCRIPTION LeaveName, le.APPFROMDATE FromDate, le.APPTODATE ToDate, le.APPTOTALDAYS TotalDays, le.REMARKS Reason
From LEAVEENTRY le
INNER JOIN LEAVE l ON le.LEAVEID = l.LEAVEID
INNER JOIN Employee e ON e.EMPLOYEEID = le.EMPID
WHERE e.Linemanagerid=%n
AND le.APPLEAVEDATE BETWEEN %s AND %s", empId, fromDate, toDate);
return tc.ExecuteReader(sql);
}
internal static DataTable GetMultipleLeaveLedgerData(TransactionContext tc, int leaveYearId, int leaveId, string empIds, DateTime fromDate, DateTime toDate)
{
if(empIds != "")
{
string sql = SQLParser.MakeSQL(
@"SELECT e.employeeNo EmployeeNo, e.NAME Name, deg.NAME Designation, dept.DESCRIPTION Department,
e.DateOfConfirmation, lv.DESCRIPTION LeaveType, le.APRFROMDATE FromDate, le.APRTODATE ToDate,
le.APPTOTALDAYS Days, le.REMARKS Reason, le.leaveStatus Status
FROM LEAVEENTRY le
LEFT JOIN EMPLOYEE e ON le.EMPID = e.EMPLOYEEID
LEFT JOIN DESIGNATION deg ON e.DESIGNATIONID = deg.DESIGNATIONID
LEFT JOIN DEPARTMENT dept ON e.DEPARTMENTID = dept.DEPARTMENTID
LEFT JOIN LEAVE lv ON le.LEAVEID = lv.LEAVEID
WHERE le.LEAVEYEAR = %n AND le.leaveId = %n AND le.APRFROMDATE >= %d AND le.APRTODATE <= %d AND le.EMPID IN (%q);", leaveYearId, leaveId, fromDate, toDate, empIds);
return tc.ExecuteDataTable(sql);
}
else
{
string sql = SQLParser.MakeSQL(
@"SELECT e.employeeNo EmployeeNo, e.NAME Name, deg.NAME Designation, dept.DESCRIPTION Department,
e.DateOfConfirmation, lv.DESCRIPTION LeaveType, le.APRFROMDATE FromDate, le.APRTODATE ToDate,
le.APPTOTALDAYS Days, le.REMARKS Reason, le.leaveStatus Status
FROM LEAVEENTRY le
LEFT JOIN EMPLOYEE e ON le.EMPID = e.EMPLOYEEID
LEFT JOIN DESIGNATION deg ON e.DESIGNATIONID = deg.DESIGNATIONID
LEFT JOIN DEPARTMENT dept ON e.DEPARTMENTID = dept.DEPARTMENTID
LEFT JOIN LEAVE lv ON le.LEAVEID = lv.LEAVEID
WHERE le.LEAVEYEAR = %n AND le.leaveId = %n AND le.APRFROMDATE >= %d AND le.APRTODATE <= %d;", leaveYearId, leaveId, fromDate, toDate, empIds);
return tc.ExecuteDataTable(sql);
}
}
internal static DataTable GetMultipleLeaveLedgerData(TransactionContext tc, int leaveYearId, string empIds, DateTime fromDate, DateTime toDate)
{
if(empIds != "")
{
string sql = SQLParser.MakeSQL(
@"SELECT e.employeeNo EmployeeNo, e.NAME Name, deg.NAME Designation, dept.DESCRIPTION Department,
e.DateOfConfirmation, lv.DESCRIPTION LeaveType, le.APRFROMDATE FromDate, le.APRTODATE ToDate,
le.APPTOTALDAYS Days, le.REMARKS Reason, le.leaveStatus Status
FROM LEAVEENTRY le
LEFT JOIN EMPLOYEE e ON le.EMPID = e.EMPLOYEEID
LEFT JOIN DESIGNATION deg ON e.DESIGNATIONID = deg.DESIGNATIONID
LEFT JOIN DEPARTMENT dept ON e.DEPARTMENTID = dept.DEPARTMENTID
LEFT JOIN LEAVE lv ON le.LEAVEID = lv.LEAVEID
WHERE le.LEAVEYEAR = %n AND le.APRFROMDATE >= %d AND le.APRTODATE <= %d AND le.EMPID IN (%q);", leaveYearId, fromDate, toDate, empIds);
return tc.ExecuteDataTable(sql);
}
else
{
string sql = SQLParser.MakeSQL(
@"SELECT e.employeeNo EmployeeNo, e.NAME Name, deg.NAME Designation, dept.DESCRIPTION Department,
e.DateOfConfirmation, lv.DESCRIPTION LeaveType, le.APRFROMDATE FromDate, le.APRTODATE ToDate,
le.APPTOTALDAYS Days, le.REMARKS Reason, le.leaveStatus Status
FROM LEAVEENTRY le
LEFT JOIN EMPLOYEE e ON le.EMPID = e.EMPLOYEEID
LEFT JOIN DESIGNATION deg ON e.DESIGNATIONID = deg.DESIGNATIONID
LEFT JOIN DEPARTMENT dept ON e.DEPARTMENTID = dept.DEPARTMENTID
LEFT JOIN LEAVE lv ON le.LEAVEID = lv.LEAVEID
WHERE le.LEAVEYEAR = %n AND le.APRFROMDATE >= %d AND le.APRTODATE <= %d;", leaveYearId, fromDate, toDate, empIds);
return tc.ExecuteDataTable(sql);
}
}
internal static DataSet GetAnnualLeave(TransactionContext tc, int empId)
{
string sSQL = SQLParser.MakeSQL(@"SELECT APRFROMDATE,APRTODATE,APRTOTALDAYS FROM LeaveEntry WHERE EMPID = %n ORDER BY APRTODATE,APRFROMDATE DESC", empId);
return tc.ExecuteDataSet(sSQL);
}
internal static DataTable GetLeaveTodayAndNextWeek(TransactionContext tc, Employee oEmp, EnumLeaveStatus status)
{
string subSQL = SQLParser.MakeSQL(@"SELECT EMPLOYEEID as EmployeeID FROM EMPLOYEE
WHERE LINEMANAGERID = %n and status = %n", oEmp.ID, EnumEmpStatus.Live);
string sSQL = SQLParser.MakeSQL(@"
Select
(SELECT COUNT(*) AS LeaveToday FROM LEAVEENTRY
WHERE LEAVESTATUS = %n and (GETDATE() between APRFROMDATE and APRTODATE)
AND EMPID IN(%q)) as LeaveToday,
(SELECT COUNT(*) AS LeavesNextWeek FROM LEAVEENTRY
WHERE LEAVESTATUS = %n and APRFROMDATE <= DATEADD(DAY, 7, GETDATE())
AND APRTODATE >= GETDATE()
AND EMPID IN(%q)) as LeavesNextWeek", status, subSQL, status, subSQL) ;
return tc.ExecuteDataTable(sSQL);
}
internal static DataTable getTopLeaveChartData(TransactionContext tc, Employee oEmp, int leaveYearId, EnumLeaveStatus status)
{
string sSQL = SQLParser.MakeSQL(@"SELECT
NAME as EmpName, EMPID as EmpId, EMPLOYEENO as EmpNo, Leavestatus,
sum(APRTOTALDAYS) as TotalDays, LeaveYear
FROM EMPLOYEE
LEFT JOIN LEAVEENTRY ON EMPID = EMPLOYEEID
WHERE LEAVEYEAR = %n AND LEAVESTATUS = %n
AND DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()), 0)<= APRFROMDATE and APRFROMDATE<= DATEADD(DAY, -1, DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) + 1, 0))
AND DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()), 0)<= APRTODATE and APRTODATE<= DATEADD(DAY, -1, DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) + 1, 0))
AND LINEMANAGERID = %n and status = %n
group by NAME, EMPID, employeeno, Leavestatus, LeaveYear
order by TotalDays desc", leaveYearId, status, oEmp.ID, EnumEmpStatus.Live);
return tc.ExecuteDataTable(sSQL);
}
internal static DataTable getcorehrLeaveChartData(TransactionContext tc, Employee oEmp, int leaveYearId, EnumLeaveStatus status)
{
string subSQL = "";
if(oEmp!= null && oEmp.LineManagerID != null)
{
subSQL = SQLParser.MakeSQL(@"and employee.DEPARTMENTID = %n ", oEmp.DepartmentID);
}
string sSQL = SQLParser.MakeSQL(@"SELECT
NAME as EmpName, EMPID as EmpId, EMPLOYEENO as EmpNo, Leavestatus,
sum(APRTOTALDAYS) as TotalDays, LeaveYear, EMPLOYEE.DEPARTMENTID
FROM EMPLOYEE
LEFT JOIN LEAVEENTRY ON EMPID = EMPLOYEEID
WHERE LEAVEYEAR = %n AND LEAVESTATUS = %n
AND DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()), 0)<= APRFROMDATE and APRFROMDATE<= DATEADD(DAY, -1, DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) + 1, 0))
AND DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()), 0)<= APRTODATE and APRTODATE<= DATEADD(DAY, -1, DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) + 1, 0))
AND status = %n %q
group by NAME, EMPID, employeeno, Leavestatus, LeaveYear, employee.DEPARTMENTID
order by TotalDays desc", leaveYearId, status, EnumEmpStatus.Live, subSQL);
return tc.ExecuteDataTable(sSQL);
}
internal static int GetOnApprovalLeaveCount(TransactionContext tc, int empId, int leaveId, int leaveYear, EnumLeaveStatus leaveStatus)
{
object ob = DBNull.Value;
ob = tc.ExecuteScalar("select SUM(APPTOTALDAYS) from LEAVEENTRY where EMPID = %n and LEAVEID = %n and LEAVEYEAR = %n and LEAVESTATUS = %n", empId, leaveId, leaveYear, leaveStatus);
return ob == DBNull.Value ? 0 : Convert.ToInt32(ob);
}
#endregion
}
}
/*----sbu wise
select Emp.SBUID,L.LeaveID,L.Description, sum(LE.APPTOTALDAYS) TotalDays from LeaveEntry LE,Employee Emp,Leave L ,LeaveParameter LP
where empid in(select E.EmployeeID from employee E where sbuid in (1,2))
and L.LeaveID=LP.LeaveID
and LP.LeaveParamID=LE.AprParamID
and Emp.EmployeeID=LE.EmpID
group by Emp.SBUID,L.LeaveID,L.Description
order by Emp.SBUID
*/