public void Enqueue(AttendanceLog model) { var message = JsonConvert.SerializeObject(model); var id = _db.Enqueue(model.Id, message); _hub.PublishAsync(new EventMessage(EventType.SyncWeb, id, model.Id, message)); }
public AttendanceStatus CalculateStatus(AttendanceLog lastLog) { if (lastLog == null) { return(AttendanceStatus.CheckIn); } var diff = LogDate.Subtract(lastLog.LogDate); if (diff.TotalHours >= 16) { // if new log date is more than 16 hours after last log date. // system think it is one check in. return(AttendanceStatus.CheckIn); } if (diff.TotalHours < 16 && diff.TotalHours > 0.5) { if (lastLog.LogStatus == AttendanceStatus.CheckIn) { return(AttendanceStatus.CheckOut); } if (lastLog.LogStatus == AttendanceStatus.CheckOut) { return(AttendanceStatus.CheckIn); } } if (diff.TotalHours < 0.5) { // time range is less than 30 minutes, system think it is a duplicated attendance log. if (lastLog.LogStatus == AttendanceStatus.CheckIn) { return(AttendanceStatus.CheckIn); } if (lastLog.LogStatus == AttendanceStatus.CheckOut) { return(AttendanceStatus.CheckOut); } } throw new NotSupportedException("Unknown attendance status."); }