USE [EnVisage]
GO

ALTER FUNCTION [dbo].[resourceAvailability_f](@StartDate datetime, @EndDate datetime)

RETURNS @restable TABLE

   (FirstName  varchar(100),

    LastName   varchar(100),

    ExpenditureCategory       varchar(100),

    AvailableHours       float,

    AllocatedHours       float,

    TrainingHours       float,

    VacationHours       float,

    ResourceAvailability       float,

    TeamName	varchar(100)

    )

AS

BEGIN

  

    INSERT INTO @restable

select 
vw.FirstName, vw.LastName, vw.Name as ExpenditureCategory, 
sum(vw.AvailableHours) as AvailableHours, sum(vw.AllocatedHours) as AllocatedHours, 
sum(vw.TrainingHours) as TrainingHours, sum(vw.VacationHours) as VacationHours,
sum(vw.AvailableHours)-sum(vw.AllocatedHours)-sum(vw.TrainingHours)-sum(vw.VacationHours) as ResourceAvailability,
vw.TeamName

From(

select 
    pr.FirstName,
	pr.LastName,
	ec2.Name, 
	t.Name as TeamName,
	fc.EndDate, 

	((select UOM.UOMValue
	from UOM, ExpenditureCategory ec
	where UOM.Id=ec.UOMId and ec.Id=pr.ExpenditureCategoryId)
	*((cast( ww.Monday as int) + cast(ww.Tuesday as int) +  cast(ww.Wednesday as int) + cast(ww.Thursday as int) + cast(ww.Friday as int) + cast(ww.Saturday as int) + cast(ww.Sunday as int)) /5.0)
	) as AvailableHours, 

	ISNULL((select SUM (pa.Quantity)
	From PeopleResourceAllocation pa
	inner join Scenario s on s.Id = pa.ScenarioId and s.Status = 1
	Where pa.PeopleResourceId=pr.Id and  pa.WeekEndingDate = fc.EndDate), 0) as AllocatedHours,

	ISNULL((select SUM (pt.HoursOff)
	From NonProjectTimeAllocation pt
	Where pt.PeopleResourceId=pr.Id and pt.WeekEndingDate = fc.EndDate), 0) as TrainingHours,

	0 as VacationHours

	from FiscalCalendar fc
	join PeopleResource pr on (not(fc.StartDate > pr.EndDate) and not(fc.EndDate < pr.StartDate))
	join ExpenditureCategory ec2 on ec2.Id=pr.ExpenditureCategoryId
	join WorkWeek ww on ww.Id = pr.WorkWeekId
	join Team t on t.Id = pr.TeamId 
	where fc.StartDate >= @StartDate  and fc.StartDate <= @EndDate and fc.Type = 0	
) as vw 
group by vw.FirstName, vw.LastName, vw.Name, vw.TeamName--, vw.EndDate

  RETURN

END

GO