private void CheckAttendance(DateTime date) { if (date.DayOfWeek == DayOfWeek.Saturday || date.DayOfWeek == DayOfWeek.Sunday) { return; } if (string.IsNullOrWhiteSpace(Settings.Default.AbsentMessage)) { return; } if (_checkingAttendance) { return; } _checkingAttendance = true; Task.Factory.StartNew(async() => { var students = Student.Cache.ToList(); foreach (var student in students) { if (string.IsNullOrWhiteSpace(student.ContactNumber)) { continue; } if (student.DateRegistered.Date == date.Date || student.LastAbsentNotification.Date == date.Date) { continue; } var previousPass = GatePass.GetPreviousPass(student.Id); if (date == previousPass?.Time.Date) { continue; } var message = Settings.Default.AbsentMessage .Replace("[NAME]", student.Fullname) .Replace("[TIME]", date.ToString("MMM d, yyyy")); SMS.Send(message, student.ContactNumber); student.Update(nameof(Student.LastAbsentNotification), date.Date); await TaskEx.Delay(1111); } }); }
private MainViewModel() { Messenger.Default.AddListener <string>(Messages.Scan, id => { var stud = Student.Cache.FirstOrDefault(x => x.Barcode.ToUpper() == id.ToUpper()); if (stud == null) { return; } GateMonitor.Student = stud; var pass = GatePass.GetPreviousPass(stud.Id); if (pass == null) { pass = new GatePass(stud.Id); } else { pass = new GatePass(stud.Id, !pass.In); } pass.Save(); GateMonitor.Pass = pass; var message = ""; if (pass.In) { message = Settings.Default.EntranceMessage; } else { message = Settings.Default.ExitMessage; } message = message.Replace("[NAME]", stud.Fullname) .Replace("[TIME]", pass.Time.ToString("MMM d h:mm tt")); if (!string.IsNullOrWhiteSpace(stud.ContactNumber)) { SMS.Send(message, stud.ContactNumber, true); } }); Messenger.Default.AddListener <User>(Messages.ModelDeleted, usr => { MessageQueue.Enqueue("User deleted", "UNDO", u => { u.Undelete(); }, usr); CurrentUser = null; }); if (Settings.Default.NotifyAbsent) { if (!string.IsNullOrWhiteSpace(Settings.Default.AbsentTime)) { Task.Factory.StartNew(AbsentReminder); } else { CheckAttendance(DateTime.Now.AddDays(-1).Date); } } }