public IActionResult GetSessions([FromQuery] DateTime?start, [FromQuery] DateTime?end, [FromQuery] int?crn, [FromQuery] string email, [FromQuery] int page = 1) { var resultSet = _sessionRepo.GetAll(); if (start.HasValue) { resultSet = resultSet.Where(x => x.InTime.Date >= start.Value.Date); } if (end.HasValue) { resultSet = resultSet.Where(x => x.OutTime.GetValueOrDefault(end.Value).Date <= end.Value.Date); } if (crn.HasValue) { resultSet = resultSet.Where(x => x.SessionClasses.Any(c => c.ClassId == crn.Value)); } if (!string.IsNullOrEmpty(email)) { resultSet = resultSet.Where(x => x.Person.Email == email); } var sessionsDisplay = resultSet.Select(x => _mapper.Map <SessionDisplayDTO>(x)); var pageResult = new Paging <SessionDisplayDTO>(page, sessionsDisplay); return(Ok(pageResult)); }
/// <summary>Execute signing out all session that have not been signed out</summary> /// signs them out 2 hours after their inTime public async Task Execute(IJobExecutionContext context) { var signIns = _iRepo.GetAll(x => x.OutTime == null && x.InTime != null); foreach (var signIn in signIns) { signIn.OutTime = signIn.InTime.AddHours(2); await _iRepo.Update(signIn); } }
public IActionResult Get([FromQuery] DateTime start, [FromQuery] DateTime end) { return(Ok(ReportsBusinessLogic.WeeklyVisits(_sessionRepo.GetAll(), start, end))); }