public IActionResult GetWorkingHoursByUser([FromQuery] UserEngagementOwnerParameters ownerParams) { if (ownerParams.UserId.Length == 0 || ownerParams.DateFormatSelected.Length == 0) { return(BadRequest("Please check owner parameters. User and DateFormat must be selected")); } return(Ok(_reportFacade.GetUserEngagementByOwnerParams(ownerParams))); }
public dynamic GetUserEngagementByOwnerParamsBySupervisor(UserEngagementOwnerParameters ownerParams, string supervisorId) { if (ownerParams.DateFormatSelected == "dd") { var query = from p in _appDbContext.Project join pi in _appDbContext.Projectinfo on p.ProjectId equals pi.ProjectId into q1 from pi in q1.DefaultIfEmpty() where pi.UserId == ownerParams.UserId && p.AssignedByUserId == supervisorId group new { pi.UserId, pi.HoursWorked, pi.Date } by new { pi.UserId, pi.Date } into q select new { UserId = q.Key.UserId, Date = q.Key.Date, Day = q.Key.Date.Day, q.Key.Date.Month, q.Key.Date.Year, ProjectWorkingHours = q.Sum(c => c.HoursWorked) }; return(query.OrderBy(c => c.Year).ThenBy(c => c.Month).ThenBy(c => c.Day).ToList()); } else if (ownerParams.DateFormatSelected == "mm") { var query = from p in _appDbContext.Project join pi in _appDbContext.Projectinfo on p.ProjectId equals pi.ProjectId into q1 from pi in q1.DefaultIfEmpty() where pi.UserId == ownerParams.UserId && p.AssignedByUserId == supervisorId group new { pi.UserId, pi.HoursWorked, pi.Date } by new { pi.UserId, pi.Date.Month, pi.Date.Year } into q select new { UserId = q.Key.UserId, q.Key.Month, q.Key.Year, ProjectWorkingHours = q.Sum(c => c.HoursWorked) }; return(query.OrderBy(c => c.Year).ThenBy(c => c.Month).ToList()); } else if (ownerParams.DateFormatSelected == "ww") { var query = from p in _appDbContext.Project join pi in _appDbContext.Projectinfo on p.ProjectId equals pi.ProjectId into q1 from pi in q1.DefaultIfEmpty() where pi.UserId == ownerParams.UserId && p.AssignedByUserId == supervisorId group new { pi.UserId, pi.HoursWorked, pi.Date } by new { pi.UserId, p.ProjectId, p.Name, pi.Date, pi.Date.Month, pi.Date.Year } into q select new { UserId = q.Key.UserId, WeekNumber = ReportFacade.GetWeekNumberOfMonth(q.Key.Date), q.Key.Month, q.Key.Year, ProjectWorkingHours = q.Sum(c => c.HoursWorked) }; var queryResult = query.ToList(); Dictionary <int, ReportModelHelper> modelDic = new Dictionary <int, ReportModelHelper>(); for (int i = 0; i < queryResult.Count(); i++) { int weekNumber = queryResult.ElementAt(i).WeekNumber; int monthNumber = queryResult.ElementAt(i).WeekNumber; ReportModelHelper model = new ReportModelHelper() { WeekNumber = queryResult.ElementAt(i).WeekNumber, Year = queryResult.ElementAt(i).Year, Month = queryResult.ElementAt(i).Month, TotalWorkingHours = queryResult .Where(c => c.WeekNumber == weekNumber) .Sum(c => c.ProjectWorkingHours) }; if (!modelDic.ContainsKey(model.WeekNumber)) { modelDic.Add(model.WeekNumber, model); } } return(modelDic.Select(c => c.Value).OrderBy(x => x.Month).ThenBy(c => c.WeekNumber).ToList()); } return(null); }
public IActionResult GetUserWorkingHoursByProject([FromQuery] string supervisorId, [FromQuery] UserEngagementOwnerParameters ownerParams) { if (supervisorId.Length == 0 || ownerParams.UserId.Length == 0 || ownerParams.DateFormatSelected.Length == 0) { return(BadRequest("Please check owner parameters Project and DateFormat must be selected")); } return(Ok(_reportFacade.GetUserEngagementByOwnerParamsBySupervisor(ownerParams, supervisorId))); }