public IActionResult GetEmployeeTimesheet(EmployeeTimeSheetVM model) { var items = _employeeService.GetEmployeeTimeSheet(model); return(new ObjectResult(items)); }
public IQueryable <TimeSheetOutputVM> GetEmployeeTimeSheet(EmployeeTimeSheetVM employeeTimesheet) { var startDate = employeeTimesheet.ScheduleDate.AddDays(-(int)employeeTimesheet.ScheduleDate.DayOfWeek); var endDate = startDate.AddDays(7).AddSeconds(-1); var empID = employeeTimesheet.EmployeeID; var data = db.TimeSheets .Include(i => i.Task) .Where(o => o.EmployeeID == empID && o.Date >= startDate && o.Date <= endDate) .AsEnumerable() .GroupBy(o => new { o.Date, o.Task }) .Select(g => new TimeSheetVM { Task = g.Key.Task.Name, Week = g.Key.Date.ToString("dddd"), Hours = g.Sum(o => o.Hours) }) .ToList() .AsQueryable(); var pivotdata = data.GroupBy(p => p.Task) .Select(g => new { TaskName = g.Key, Days = g.ToDictionary(item => item.Week, item => item.Hours) }); var emptimesheet = new List <TimeSheetOutputVM>(); foreach (var record in pivotdata) { var timesheetoutput = new TimeSheetOutputVM(); timesheetoutput.task = record.TaskName; foreach (var day in record.Days) { switch (day.Key) { case "Sunday": timesheetoutput.Sunday = day.Value; break; case "Monday": timesheetoutput.Monday = day.Value; break; case "Tuesday": timesheetoutput.Tuesday = day.Value; break; case "Wednesday": timesheetoutput.Wednesday = day.Value; break; case "Thursday": timesheetoutput.Thursday = day.Value; break; case "Friday": timesheetoutput.Friday = day.Value; break; case "Saturday": timesheetoutput.Saturday = day.Value; break; } } emptimesheet.Add(timesheetoutput); } return(emptimesheet.AsQueryable()); }