Time card Hours

I have something close , it need a little touch(I don't have time in this mom)

but here it is:

;WITH cte AS
(SELECT 6665157 AS Code,'ENTER' AS Activity,'2016-05-17 08:13:43' AS TimeDate UNION ALL
 SELECT 6665157        ,'ENTER'            ,'2016-05-17 08:14:17'			  UNION ALL
 SELECT 6665157        ,'EXITS'            ,'2016-05-17 12:14:49'			  UNION ALL
 SELECT 6665157        ,'EXITS'            ,'2016-05-17 12:24:23'			  UNION ALL
 SELECT 6665157        ,'ENTER'            ,'2016-05-17 12:26:04'			  UNION ALL
 SELECT 6665157        ,'ENTER'            ,'2016-05-17 12:26:39'			  UNION ALL
 SELECT 6665157        ,'EXITS'            ,'2016-05-17 12:33:22'			  UNION ALL
 SELECT 6665157        ,'ENTER'            ,'2016-05-17 13:02:43'			  UNION ALL
 SELECT 6665157        ,'ENTER'            ,'2016-05-17 13:48:48'			  UNION ALL
 SELECT 6665157        ,'EXITS'            ,'2016-05-17 18:11:32'			  
 )
,cteFilter
AS(
SELECT
	Code
	,Activity
	,MAX(TimeDate)  AS Max_TimeDate
FROM
(
	SELECT 
		Code
		,Activity
		,TimeDate		
		,ROW_NUMBER() OVER(PARTITION BY Code , DATEADD(DAY,DATEDIFF(DAY,0,TimeDate),0) ORDER BY TimeDate ASC) 
		- ROW_NUMBER() OVER(PARTITION BY Code , DATEADD(DAY,DATEDIFF(DAY,0,TimeDate),0),Activity ORDER BY TimeDate ASC) AS Grp		
	FROM
		cte AS A
)A
GROUP BY
	Code
	,Activity
	,GRP
)
,cteWithNextRow
AS(
SELECT 
	Code
	,Activity
	,Max_TimeDate 
	,LEAD(Max_TimeDate,1,Max_TimeDate) OVER(PARTITION BY Code , DATEADD(DAY,DATEDIFF(DAY,0,Max_TimeDate),0) ORDER BY Max_TimeDate ASC) AS Max_TimeDate_NextRow
FROM 
	cteFilter	
--ORDER BY 
	--Max_TimeDate
)
,cteFinal
AS(
SELECT
	Code
	,Activity
	,Max_TimeDate
	,Max_TimeDate_NextRow
	,DATEDIFF(SECOND,Max_TimeDate,Max_TimeDate_NextRow) AS DiffSec
FROM
	cteWithNextRow
)

SELECT	DISTINCT
	Code
	,MIN(MAX_TimeDate) OVER(PARTITION BY Code , DATEADD(DAY,DATEDIFF(DAY,0,Max_TimeDate),0) ORDER BY Max_TimeDate ASC
					ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS StartTime
	,MAX(MAX_TimeDate) OVER(PARTITION BY Code , DATEADD(DAY,DATEDIFF(DAY,0,Max_TimeDate),0) ORDER BY Max_TimeDate ASC
					ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS EndTime
	,SUM(CASE WHEN Activity = 'ENTER' THEN DiffSec ELSE 0 END) OVER(PARTITION BY Code , DATEADD(DAY,DATEDIFF(DAY,0,Max_TimeDate),0) ORDER BY Max_TimeDate ASC
					ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS WorkHoursInSec
	,SUM(DiffSec) OVER(PARTITION BY Code , DATEADD(DAY,DATEDIFF(DAY,0,Max_TimeDate),0) ORDER BY Max_TimeDate ASC
					ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS TotalHours
	,SUM(CASE WHEN Activity = 'EXITS' THEN DiffSec ELSE 0 END) OVER(PARTITION BY Code , DATEADD(DAY,DATEDIFF(DAY,0,Max_TimeDate),0) ORDER BY Max_TimeDate ASC
					ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS BreakTime
FROM
	cteFinal

The output for this is:

Code        StartTime           EndTime             WorkHoursInSec TotalHours  BreakTime
6665157     2016-05-17 08:14:17 2016-05-17 18:11:32 31173          35835       4662

I know is not the same as your's output ...