Ejemplo n.º 1
0
 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);
         }
     });
 }
Ejemplo n.º 2
0
        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);
                }
            }
        }