public async Task UpdateItemStatus(ItemStats itemStats) { var student = _studentRepository.GetStudentByRFID(itemStats.StudentRFID); var log = new ItemLog { dateTime = DateTime.Now }; var item = _itemRepository.GetItemById(itemStats.Id); item.IsInBox = itemStats.IsInBox; item.StudentBorrowed = student.FullName; item.StudentId = student.Id; if (itemStats.IsInBox) { if (student != null) { log.Message = "Racket No " + item.Id + " Is returned by: " + student.email; } else { log.Message = "Warning! item is returned but with unkown User"; //activate warning } } if (!itemStats.IsInBox) { log.Message = "Racket No " + item.Id + " Is Borrowed by: " + student.FullName; await _itemRepository.count(); } _itemRepository.AddLog(log); if (item.Id == 1) { await _boxHub.Clients.All.SendAsync("Item1", item.StudentBorrowed, item.IsInBox, DateTime.Now.ToString("HH:mm:ss")); await _notificationsRepository.AddNotificationAsync(log.Message); } if (item.Id == 2) { await _boxHub.Clients.All.SendAsync("Item2", item.StudentBorrowed, item.IsInBox, DateTime.Now.ToString("HH:mm:ss")); await _notificationsRepository.AddNotificationAsync(log.Message); } _mail.GenMail( student.email, "You borrowed a Racket from pingisBox", "You borrowed A racket with id: " + item.RFID + " from pingisBox \nBorrowing time:" + DateTime.Now.ToString("HH:mm:ss") + " You should return it letast at" + DateTime.Now.AddHours(1).ToString("HH:mm:ss")); if (!item.IsInBox) { BackgroundJob.Schedule(() => Reminder(item.Id, student.email, "Reminder From pingisBox", "You borrowed A racket with id: " + item.RFID + " from pingisBox \nBorrowing time:" + DateTime.Now.ToString("HH:mm:ss") + "\nPlease return the racket as soon as possible" ), TimeSpan.FromMinutes(60) ); } }