public static IQueryable<AttendanceService.AttendanceWithSummaryDateTime> GetAttendanceWithSummaryDateTime( this IQueryable<Attendance> qryAttendance, ChartGroupBy summarizeBy )
{
IQueryable<AttendanceService.AttendanceWithSummaryDateTime> qryAttendanceGroupedBy;
if ( summarizeBy == ChartGroupBy.Week )
{
qryAttendanceGroupedBy = qryAttendance.Select( a => new AttendanceService.AttendanceWithSummaryDateTime
{
SummaryDateTime = a.SundayDate,
Attendance = a
} );
}
else if ( summarizeBy == ChartGroupBy.Month )
{
qryAttendanceGroupedBy = qryAttendance.Select( a => new AttendanceService.AttendanceWithSummaryDateTime
{
SummaryDateTime = (DateTime)SqlFunctions.DateAdd( "day", -SqlFunctions.DatePart( "day", a.SundayDate ) + 1, a.SundayDate ),
Attendance = a
} );
}
else if ( summarizeBy == ChartGroupBy.Year )
{
qryAttendanceGroupedBy = qryAttendance.Select( a => new AttendanceService.AttendanceWithSummaryDateTime
{
SummaryDateTime = (DateTime)SqlFunctions.DateAdd( "day", -SqlFunctions.DatePart( "dayofyear", a.SundayDate ) + 1, a.SundayDate ),
Attendance = a
} );
}
else
{
// shouldn't happen
qryAttendanceGroupedBy = qryAttendance.Select( a => new AttendanceService.AttendanceWithSummaryDateTime
{
SummaryDateTime = a.SundayDate,
Attendance = a
} );
}
return qryAttendanceGroupedBy;
}