예제 #1
0
    public static ReturnObject GetCompOffData(int page_number, bool is_filter, string filters)
    {
        compoff_approve page_object      = new compoff_approve();
        DBConnection    db_connection    = new DBConnection();
        ReturnObject    return_object    = new ReturnObject();
        DataTable       leave_listing    = new DataTable();
        DataTable       branch_list_data = new DataTable();
        DataTable       CoManagerID_data = new DataTable();

        string user_name   = string.Empty,
               employee_id = string.Empty,
               query       = string.Empty,
               CoManagerID = string.Empty,
               BranchList  = string.Empty;

        int user_access_level   = 0,
            start_row           = 0,
            number_of_record    = 0,
            IsDelegationManager = 0;

        try
        {
            user_name         = HttpContext.Current.Session["username"].ToString();
            employee_id       = HttpContext.Current.Session["employee_id"].ToString();
            user_access_level = Convert.ToInt32(HttpContext.Current.Session["access_level"]);

            start_row        = (page_number - 1) * 30;
            number_of_record = page_number * 30 + 1;

            //check employee is Delegation Manager or not if so get his CoManagerID
            IsDelegationManager = Convert.ToInt32(db_connection.ExecuteQuery_WithReturnValueString("Select COUNT(DelidationManagerID) from TbAsignDelegation Where DelidationManagerID='" + employee_id + "' And DeliationStatus=1 and Convert(date,Getdate())>=Convert(date,Fromdate) And Convert(date,Getdate())<=Convert(date,Todate)"));
            if (IsDelegationManager > 0)
            {
                query            = "Select ManagerId from TbAsignDelegation Where DelidationManagerID='" + employee_id + "' And DeliationStatus=1 and Convert(date,Getdate())>=Convert(date,Fromdate) And Convert(date,Getdate())<=Convert(date,Todate)";
                CoManagerID_data = db_connection.ReturnDataTable(query);
                if (CoManagerID_data.Rows.Count > 0)
                {
                    foreach (DataRow dr in CoManagerID_data.Rows)
                    {
                        CoManagerID += "'" + dr["ManagerId"] + "',";
                    }

                    CoManagerID = CoManagerID.TrimEnd(',');
                }
            }

            //get list of branches assigned to logged in manager hr

            query            = "Select BranchCode From TbManagerHrBranchMapping Where ManagerID='" + employee_id + "'";
            branch_list_data = db_connection.ReturnDataTable(query);
            query            = string.Empty;

            query = page_object.GetBaseQuery(); //read main query

            if (branch_list_data.Rows.Count > 0)
            {
                foreach (DataRow dr in branch_list_data.Rows)
                {
                    BranchList += "'" + dr["BranchCode"] + "',";
                }

                BranchList = BranchList.TrimEnd(',');
            }
            else
            {
                BranchList = "'Empty'";
            }

            //Validate CoManagerID
            if (string.IsNullOrEmpty(CoManagerID))
            {
                CoManagerID = "'Empty'";
            }

            //modify query as per access level
            if (user_access_level == 0)//Admin
            {
                query += " ";
            }
            else if (user_access_level == 3)//HR
            {
                query += " and ( l.EmpID='" + employee_id + "' or e.Emp_Branch In(" + BranchList + ")) ";
            }
            else if (user_access_level == 1 && !string.IsNullOrEmpty(CoManagerID) && CoManagerID != "'Empty'")//Manager and CoManager
            {
                query += " and l.EmpID in ( select Emp_Code from EmployeeMaster where ((managerId in ('" + employee_id + "'," + CoManagerID + ") or Emp_Code='" + employee_id + "') and Emp_Status=1 )  or Emp_Branch in (" + BranchList + "))";
            }
            else if (user_access_level == 1 && CoManagerID == "'Empty'")//Only Manager
            {
                query += " and l.EmpID in ( select Emp_Code from EmployeeMaster where ((managerId='" + employee_id + "' or Emp_Code='" + employee_id + "')  and Emp_Status=1 ) or Emp_Branch in (" + BranchList + "))";
            }
            else
            {
                query += " and 1=0";// Only Employee
            }

            if (is_filter)
            {
                query = page_object.GetFilterQuery(filters, query);
            }
            else
            {
                query += " and l.Flag=1 ";
            }

            query += " ) a where row > " + start_row + " and row < " + number_of_record;
            query += "  order by a.fromdate desc";

            leave_listing = db_connection.ReturnDataTable(query);

            return_object.status      = "success";
            return_object.return_data = JsonConvert.SerializeObject(leave_listing, Formatting.Indented);
        }
        catch (Exception Ex)
        {
            Logger.LogException(Ex, page, "GET_COMPOFF_DATA");
            return_object.status      = "error";
            return_object.return_data = "An error occurred while loading Leave Type data. Please try again. If the error persists, please contact Support.";
        }


        return(return_object);
    }