using HRM.BO; using Ease.Core.DataAccess; using Ease.Core.Model; using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; namespace HRM.DA { #region SearchEmployeeDA internal class SearchEmployeeDA { #region Constructor public const string fndSQL = @" IF OBJECT_ID('tempdb..#tmpEmpSrc') IS NOT NULL DROP TABLE #tmpEmpSrc %q UPDATE #tmpEmpSrc SET #tmpEmpSrc.GradeName = RAN.DESCRIPTION FROM #tmpEmpSrc SI INNER JOIN grades RAN ON SI.gradeid = RAN.GRADEID; UPDATE #tmpEmpSrc SET #tmpEmpSrc.DepartmentName = RAN.DESCRIPTION FROM #tmpEmpSrc SI INNER JOIN DEPARTMENT RAN ON SI.departmentid = RAN.DEPARTMENTID; ; UPDATE #tmpEmpSrc SET #tmpEmpSrc.DesignationName = RAN.NAME FROM #tmpEmpSrc SI INNER JOIN DESIGNATION RAN ON SI.DESIGNATIONID = RAN.DESIGNATIONID; "; public const string fnddataPermissionSQL = @" IF EXISTS ( SELECT* FROM DataPermission WHERE userid = %n and PayrollTypeID = %n and PermissionType=1 ) BEGIN delete from #tmpEmpSrc where categoryid not in ( select referenceid from DataPermission where UserID =%n and PayrollTypeID =%n and PermissionType=1); END; IF EXISTS ( SELECT* FROM DataPermission WHERE userid = %n and PayrollTypeID = %n and PermissionType=2 ) BEGIN delete from #tmpEmpSrc where GRADEID not in ( select referenceid from DataPermission where UserID =%n and PayrollTypeID =%n and PermissionType=2); END; IF EXISTS ( SELECT* FROM DataPermission WHERE userid = %n and PayrollTypeID = %n and PermissionType=3 ) BEGIN IF OBJECT_ID('tempdb..#TEMPDOC') IS NOT NULL DROP TABLE #TEMPDOC ;WITH cteReports(departmentid) AS ( SELECT departmentid FROM DEPARTMENT WHERE DEPARTMENTID in (select referenceid from DataPermission where UserID = %n and PayrollTypeID = %n and PermissionType = 3) UNION ALL SELECT e.departmentid FROM DEPARTMENT e INNER JOIN cteReports r ON e.PARENTID = r.departmentid ) SELECT* INTO #TEMPDOC FROM cteReports delete from #tmpEmpSrc where Departmentid NOT in (SELECT * FROM #TEMPDOC); END; IF EXISTS ( SELECT* FROM DataPermission WHERE userid = %n and PayrollTypeID = %n and PermissionType=4 ) BEGIN IF OBJECT_ID('tempdb..#tmpLOC') IS NOT NULL DROP TABLE #tmpLOC -- delete from #tmpEmpSrc where locationid NOT in ( ; WITH cteReports(locationid) AS ( SELECT locationid FROM location WHERE LOCATIONid in (select referenceid from DataPermission where UserID = %n and PayrollTypeID = %n and PermissionType = 4) UNION ALL SELECT e.locationid FROM location e INNER JOIN cteReports r ON e.PARENTID = r.locationid ) SELECT* INTO #tmpLOC FROM cteReports delete from #tmpEmpSrc where locationid NOT in ( SELECT *FROM #tmpLOC); DROP TABLE #tmpLOC; END;"; public const string fnddropTempSQL = @" select* from #tmpEmpSrc order by employeeNo; DROP TABLE #tmpEmpSrc; "; private SearchEmployeeDA() { } #endregion #region Get Function internal static IDataReader Search(TransactionContext tc, string sql, bool withName) { if (withName == true) { string qry = SQLParser.MakeSQL(SearchEmployeeDA.fndSQL + SearchEmployeeDA.fnddropTempSQL, sql); return tc.ExecuteReader(qry); } else return tc.ExecuteReader(@"%q" , sql); } internal static IDataReader Search(TransactionContext tc, string sql, int userid, int payrolltypeid) { string qry = SQLParser.MakeSQL(SearchEmployeeDA.fndSQL + SearchEmployeeDA.fnddataPermissionSQL + SearchEmployeeDA.fnddropTempSQL, sql, userid, payrolltypeid,userid, payrolltypeid, userid, payrolltypeid, userid, payrolltypeid, userid, payrolltypeid, userid, payrolltypeid, userid, payrolltypeid, userid, payrolltypeid); //return tc.ExecuteReader(@"%q" + // "", sql, userid, payrolltypeid, userid, payrolltypeid, userid, payrolltypeid, userid, payrolltypeid, userid, payrolltypeid); return tc.ExecuteReader(qry); } internal static IDataReader get(TransactionContext tc, int empid) { return tc.ExecuteReader(@"Select EmployeeID, EmployeeNo, Name, categoryID, GradeID, LocationID, DepartmentID From Employee where employeeid=%n", empid); } internal static IDataReader FindCordinator(TransactionContext tc, int? id, int? payrollTypeID) { return tc.ExecuteReader(@"SELECT E.EmployeeID, E.LocationID, E.CategoryID, E.DesignationID, E.DepartmentID, D.DESCRIPTION AS DepartmentName, E.GradeID, G.DESCRIPTION AS GradeName , E.EmployeeNo, E.Name, E.Emailaddress, DS.NAME AS DesignationName FROM Employee E JOIN employeecordinator EC ON E.EMPLOYEEID = EC.EmployeeID JOIN DEPARTMENT D ON D.DEPARTMENTID = E.DepartmentID JOIN GRADES G ON G.GRADEID = E.GRADEID JOIN DESIGNATION DS ON DS.DESIGNATIONID = E.DESIGNATIONID WHERE EC.CordinatorID = %n AND E.PAYROLLTYPEID = 1 ", id); } internal static IDataReader GetEmployeeNotYetUser(TransactionContext tc, int payrollTypeid) { return tc.ExecuteReader(@"Select EmployeeID, EmployeeNo, Name, categoryID, GradeID, LocationID, DepartmentID From Employee e where e.EmployeeNo not IN (Select LoginID from Users where Usertype=%n) and e.payrolltypeid=%n", EnumUserType.Employee, payrollTypeid); } internal static IDataReader GetTeam(TransactionContext tc, int employeeid) { return tc.ExecuteReader(@"Select EmployeeID, EmployeeNo, Name, categoryID, GradeID, LocationID, DepartmentID From Employee where linemanagerid =%n", employeeid); } internal static IDataReader GetByEmpIDIn(TransactionContext tc, string empid) { return tc.ExecuteReader(@"Select e.EmployeeID, e.EmployeeNo, e.Name, e.categoryID, e.GradeID, e.LocationID, e.DepartmentID, e.DesignationID, dep.Description as DepartmentName, des.Name as DesignationName From Employee e, Department dep, Designation des where e.EmployeeID IN (%q) and dep.DepartmentID = e.DepartmentID and des.DesignationID = e.DesignationID ", empid); } internal static IDataReader GetTeam(TransactionContext tc, int employeeid, EnumStatus enumStatus) { return tc.ExecuteReader(@"Select EmployeeID, EmployeeNo, e.Name, e.categoryID, e.GradeID, LocationID, d.name as DesignationName, g.DESCRIPTION GradeName, dept.DESCRIPTION DepartmentName From Employee e left join designation d on d.DESIGNATIONID = e.DESIGNATIONID LEFT JOIN DEPARTMENT dept ON dept.DEPARTMENTID = e.DEPARTMENTID LEFT JOIN GRADES g ON g.GRADEID = e.GRADEID where e.linemanagerid = %n and e.status = %n", employeeid, (int)enumStatus); } internal static IDataReader GetTeamForAttenReguApprove(TransactionContext tc, int employeeid, EnumStatus enumStatus) { return tc.ExecuteReader(@"SELECT DISTINCT e.EmployeeID, EmployeeNo, e.Name, e.categoryID, e.GradeID, LocationID, d.name as DesignationName, g.DESCRIPTION GradeName, dept.DESCRIPTION DepartmentName From Employee e left join designation d on d.DESIGNATIONID = e.DESIGNATIONID LEFT JOIN DEPARTMENT dept ON dept.DEPARTMENTID = e.DEPARTMENTID LEFT JOIN GRADES g ON g.GRADEID = e.GRADEID LEFT JOIN DAILYATTNPROCESS dap ON dap.EMPLOYEEID = e.EMPLOYEEID WHERE dap.WFStatus = 1 AND e.linemanagerid =%n and e.status = %n", employeeid, (int)enumStatus); } internal static IDataReader Search(TransactionContext tc, int payrollTypeID, string code, string name) { string orderby = "name"; string sqlClause = ""; sqlClause = SQLParser.TagSQL(sqlClause) + SQLParser.MakeSQL("PayrollTypeID =%n AND Status = %n", payrollTypeID, EnumStatus.Active); if (code != string.Empty) { sqlClause = SQLParser.TagSQL(sqlClause) + SQLParser.MakeSQL("EmployeeNo LIKE %s", ("%" + code + "%")); orderby = "EmployeeNo"; } if (name != string.Empty) sqlClause = SQLParser.TagSQL(sqlClause) + SQLParser.MakeSQL("Name LIKE %s", ("%" + name + "%")); return tc.ExecuteReader( "Select EmployeeID, EmployeeNo, Name, categoryID, GradeID, LocationID, designationid, DepartmentID From Employee %q Order by %s", sqlClause, orderby); } #endregion } #endregion }