public async Task <bool> Handle(TimeInStudentIDCommand request, CancellationToken cancellationToken) { var _dateNow = DateTime.Now.Date; //DateTime from = Convert.ToDateTime("00:00:01"); //DateTime to = Convert.ToDateTime("11:59:59"); StudentBasicInfo _checkStudentID = dbContext.StudentBasicInfos.Find(request.studID); if (_checkStudentID == null) { throw new Exception("Student ID does not exist!"); } var _checkTimeInToday = dbContext.StudentDailyTimeRecords.Select(a => a.StudentBasicInfoID == request.studID && a.StudentTimeIn.Date == _dateNow).ToList(); if (_checkTimeInToday.Count() > 0) { throw new Exception("Student ID has already timed in!"); } StudentDailyTimeRecord _studentTimeIn = new StudentDailyTimeRecord { StudentBasicInfoID = request.studID, StudentTimeIn = DateTime.Now }; dbContext.StudentDailyTimeRecords.Add(_studentTimeIn); await dbContext.SaveChangesAsync(); return(true); }
public async Task <DateTime> Handle(TimeOutStudentIDCommand request, CancellationToken cancellationToken) { var _dateNow = DateTime.Now.Date; DateTime _timeOut = Convert.ToDateTime("0001-01-01 00:00:00.0000000"); ////DateTime from = Convert.ToDateTime("00:00:01"); ////DateTime to = Convert.ToDateTime("11:59:59"); //var _checkTimeInToday = dbContext.StudentsTimeIn.Select(a => a.StudentBasicInfoID == request.studID && a.StudentTimeInRecord.Date == _dateNow).ToList(); var _checkStudentID = dbContext.StudentBasicInfos.Find(request.studID); if (_checkStudentID == null) { throw new Exception("Student ID does not exist!"); } var _checkTimeOutToday = dbContext.StudentDailyTimeRecords.Select(a => a.StudentBasicInfoID == request.studID && a.StudentTimeOut == _timeOut).ToList(); if (_checkTimeOutToday.Count() > 1) { throw new Exception("Student ID has already timed out!"); } var _getStudentTimeInRecord = dbContext.StudentDailyTimeRecords.Where(a => a.StudentBasicInfoID == request.studID && a.StudentTimeIn == _dateNow).SingleOrDefault(); var _getStudentIDTimeIn = _getStudentTimeInRecord.StudentBasicInfoID; var _getStudentTimeIn = _getStudentTimeInRecord.StudentTimeIn; var _deleteStudentTimeIn = dbContext.StudentDailyTimeRecords.Find(_getStudentIDTimeIn); dbContext.StudentDailyTimeRecords.Remove(_deleteStudentTimeIn); await dbContext.SaveChangesAsync(); StudentDailyTimeRecord _studentNewRecord = new StudentDailyTimeRecord { StudentBasicInfoID = request.studID, StudentTimeIn = _getStudentTimeIn, StudentTimeOut = DateTime.Now }; dbContext.StudentDailyTimeRecords.Add(_studentNewRecord); await dbContext.SaveChangesAsync(); return(_getStudentTimeIn); }