private async Task AddScannedStudent(ScannerInput scannerInput, UserSignalR currentUser) { var card = currentUser.Ssm.AddScannedStudenToFlight(scannerInput, Convert.ToInt32(currentUser.UserId), currentUser.SchoolId); if (card == null) { await this.Clients.Client(Context.ConnectionId).InvokeAsync("FlightNotification", currentUser.Ssm.Status); } else { if (currentUser.Ssm.CloseLaneStatus != "") { await this.Clients.Client(Context.ConnectionId).InvokeAsync("FlightNotification", currentUser.Ssm.CloseLaneStatus); } await this.Clients.Client(Context.ConnectionId).InvokeAsync("CardData", card); var classStudent = new SchoolClassroomManager(); var classCard = classStudent.GetClassroomCard(card.CardId); classCard.FlightId = card.FligthId; classCard.FlightNumber = card.FlightNumber; await this.Clients.Group("Teacher" + currentUser.SchoolId.ToString()).InvokeAsync("GetScannedCard", classCard); var closedflightId = currentUser.Ssm.CloseFlightId; if (closedflightId != 0) { await this.Clients.Group("Teacher" + currentUser.SchoolId.ToString()).InvokeAsync("StatusFlight", new FlightModel { FlightId = closedflightId, Status = "Closed" }); } } // await this.Clients.Group(currentUser.UserGroup).InvokeAsync("CurrentFlight", card.FlightNumber); }
public async Task ScanCard(ScannerInput scannerInput) { var currentUser = Users.Where(p => p.ConnectionId == Context.ConnectionId).FirstOrDefault(); if (currentUser != null) { await AddScannedStudent(scannerInput, currentUser); } }
public ScannedStudent AddScannedStudenToFlight(ScannerInput card, int userId, int schoolId) { ScannedStudent result = null; CloseLaneStatus = ""; CloseFlightId = 0; var scannedStudent = new ScannedStudent(); using (var ds = new DataSeed()) { var student = ds.GetStudentByIdForDismissal(card.StudentId, schoolId); if (student == null) { Status = "Barcode not found"; return(null); } var parent = ds.GetParentById(card.ParentId); if (parent == null) { Status = "Barcode not found"; return(null); } var parentName = ds.StudentAlredyScanned(card.StudentId, SchoolId); if (parentName != null) { Status = "This student was picked up by " + parentName; return(null); } scannedStudent.ParentId = parent.Id; scannedStudent.ParentLicense = parent.DriverLicense; scannedStudent.StudentId = student.Id; scannedStudent.ParentName = parent.Name; scannedStudent.Name = student.Name; var dismissal = new Dismissal { StudentId = student.Id, ParentId = parent.Id, ScanTime = DateTime.Now, UserId = userId }; if (ScannerFlights == null || ScannerFlights.Count() == 0) { CreateNewFlight(ds, dismissal.UserId); } if (LaneLogistic == ScannerType.MultipleScanner) { var laneId = Lanes.FirstOrDefault(l => l.UserId == dismissal.UserId).Id; result = AddStudentToLane(ds, dismissal, laneId, scannedStudent); } else if (LaneLogistic == ScannerType.SingleScanner) { if (curentLaneId == 0) { result = AddStudentAltemating(ds, dismissal, scannedStudent); // default single scanner } else { result = AddStudentToLane(ds, dismissal, curentLaneId, scannedStudent); } } }; return(result); }