public List <Candidate> GetCandidateByIds(List <int> ids)
        {
            var res = new List <Candidate>();

            string idsStr         = DBCommon.ConvertListIntToString(ids);
            string whereCondition = $"WHERE [C].[Id] IN ({idsStr})";

            var query = "SELECT [C].[Id], " +
                        "       [C].[DeliveryUnitId]," +
                        "       [C].[RelationType]," +
                        "       [C].[FirstName]," +
                        "       [C].[LastName]," +
                        "       [C].[CandidateRoleId]," +
                        "       [C].[DocType]," +
                        "       [C].[DocNumber]," +
                        "       [C].[EmployeeNumber]," +
                        "       [C].[InBench]," +
                        "       [C].[Picture]," +
                        "       [C].[IsActive]," +
                        "       [C].[Grade]," +
                        "       [C].[CurrentProjectId]," +
                        "       [C].[CurrentProjectJoin] " +
                        "FROM [dbo].[Candidate] AS [C] " +
                        $"{whereCondition}";

            using (var conn = new SqlConnection(Config.GetConnectionString()))
            {
                using (var cmd = new SqlCommand(query, conn))
                {
                    res = getCandidates(conn, cmd);
                }
            }

            return(res);
        }
        public List <Candidate> GetCandidatesPaginated(int pageIdx, int pageSize)
        {
            var res = new List <Candidate>();

            var query = "SELECT [C].[Id], " +
                        "       [C].[DeliveryUnitId]," +
                        "       [C].[RelationType]," +
                        "       [C].[FirstName]," +
                        "       [C].[LastName]," +
                        "       [C].[CandidateRoleId]," +
                        "       [C].[DocType]," +
                        "       [C].[DocNumber]," +
                        "       [C].[EmployeeNumber]," +
                        "       [C].[InBench]," +
                        "       [C].[Picture]," +
                        "       [C].[IsActive]," +
                        "       [C].[Grade]," +
                        "       [C].[CurrentProjectId]," +
                        "       [C].[CurrentProjectJoin] " +
                        "FROM [dbo].[Candidate] AS [C] " +
                        "ORDER BY [C].[FirstName]," +
                        "         [C].[LastName]" +
                        "OFFSET(@pageIdx * @pageSize) ROWS " +
                        "FETCH NEXT @pageSize ROWS ONLY";

            using (var conn = new SqlConnection(Config.GetConnectionString()))
            {
                using (var cmd = new SqlCommand(query, conn))
                {
                    DBCommon.SetPaginationParams(pageIdx, pageSize, cmd);

                    res = getCandidates(conn, cmd);
                }
            }

            return(res);
        }
        public List <Project> GetProjectsPaginated(int pageIdx, int pageSize)
        {
            var res = new List <Project>();

            var query = "SELECT [P].[Id], " +
                        "       [P].[Code]," +
                        "       [P].[Name] " +
                        "FROM [dbo].[Project] AS [P]" +
                        "ORDER BY [P].[Name] " +
                        "OFFSET(@pageIdx * @pageSize) ROWS " +
                        "FETCH NEXT @pageSize ROWS ONLY";

            using (var conn = new SqlConnection(Config.GetConnectionString()))
            {
                using (var cmd = new SqlCommand(query, conn))
                {
                    DBCommon.SetPaginationParams(pageIdx, pageSize, cmd);

                    res = getProjects(conn, cmd);
                }
            }

            return(res);
        }