Stored procedure with Searching, Sorting and Pagination

-- GET_EMPLOYEE_LIST 'E','first_name','DESC',0,20
CREATE OR ALTER   PROCEDURE [dbo].[GET_EMPLOYEE_LIST]
@SEARCH_TEXT AS VARCHAR(50)='',
@SORT_COLUMN_NAME AS VARCHAR(50)='',
@SORT_COLUMN_DIRECTION AS VARCHAR(50)='',
@START_INDEX AS INT=0,
@PAGE_SIZE AS INT=10
AS
BEGIN
 DECLARE @QUERY AS VARCHAR(MAX)='',@ORDER_QUERY AS VARCHAR(MAX)='',@CONDITIONS AS VARCHAR(MAX)='',
 @PAGINATION AS VARCHAR(MAX)=''

 SET @QUERY='SELECT * FROM Employees '

 -- SEARCH OPERATION
 IF(ISNULL(@SEARCH_TEXT,'')<>'')
 BEGIN
  IF(ISDATE(@SEARCH_TEXT)=1) SET @CONDITIONS=' WHERE CAST(date_of_birth AS DATE)=CAST('+@SEARCH_TEXT+'AS DATE)'
  ELSE IF(ISNUMERIC(@SEARCH_TEXT)=1)
  BEGIN
   SET @CONDITIONS=' WHERE salary='+@SEARCH_TEXT+' OR phone_number= CAST('+@SEARCH_TEXT+'AS VARCHAR(50))'
  END
  ELSE
  BEGIN
   SET @CONDITIONS='
   WHERE
   first_name LIKE ''%'+@SEARCH_TEXT+'%''
   OR first_name +'' ''+last_name LIKE ''%'+@SEARCH_TEXT+'%''
   OR last_name LIKE ''%'+@SEARCH_TEXT+'%''
   OR email LIKE ''%'+@SEARCH_TEXT+'%''
   OR gender LIKE ''%'+@SEARCH_TEXT+'%''
   OR department LIKE ''%'+@SEARCH_TEXT+'%''
   OR phone_number LIKE ''%'+@SEARCH_TEXT+'%''
  '
  END
 END

 -- SORT OPERATION
 IF(ISNULL(@SORT_COLUMN_NAME,'')<>'' AND ISNULL(@SORT_COLUMN_DIRECTION,'')<>'')
 BEGIN
  SET @ORDER_QUERY=' ORDER BY '+@SORT_COLUMN_NAME+' '+@SORT_COLUMN_DIRECTION
 END
 ELSE SET @ORDER_QUERY=' ORDER BY ID ASC'

 -- PAGINATION OPERATION
 IF(@PAGE_SIZE>0)
 BEGIN
  SET @PAGINATION=' OFFSET '+(CAST(@START_INDEX AS varchar(10)))+' ROWS
  FETCH NEXT '+(CAST(@PAGE_SIZE AS varchar(10)))+' ROWS ONLY'
 END

 IF(@CONDITIONS<>'') SET @QUERY+=@CONDITIONS
 IF(@ORDER_QUERY<>'') SET @QUERY+=@ORDER_QUERY
 IF(@PAGINATION<>'') SET @QUERY+=@PAGINATION

 PRINT(@QUERY)
 EXEC(@QUERY)
END