Esempio n. 1
0
        public IActionResult GetEmployeeTimesheet(EmployeeTimeSheetVM model)
        {
            var items = _employeeService.GetEmployeeTimeSheet(model);

            return(new ObjectResult(items));
        }
Esempio n. 2
0
        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());
        }