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); }
// for classroomTeacher change switch classroom public async Task LeaveClassroom(int cardId, bool status) { var currentUser = Users.Where(p => p.ConnectionId == Context.ConnectionId).FirstOrDefault(); if (currentUser != null) { var changedCard = new SchoolClassroomManager().LeaveClassroomCard(cardId, status); await this.Clients.Group(currentUser.UserGroup).InvokeAsync("LeaveClassroom", changedCard); } }
// for dismissalTeacher change switch hallway public async Task LeaveHallway(int cardId, bool status) { var currentUser = Users.Where(p => p.ConnectionId == Context.ConnectionId).FirstOrDefault(); if (currentUser != null) { var changedCard = new SchoolClassroomManager().LeaveHallwayCard(cardId, status); if (changedCard != null && changedCard.CardId == 0) { //delete this flight in client await this.Clients.Group("Teacher" + currentUser.SchoolId.ToString()).InvokeAsync("StatusFlight", new FlightModel { FlightId = changedCard.FlightId, Status = "Finished" }); } else { await this.Clients.Group(currentUser.UserGroup).InvokeAsync("LeaveHallway", changedCard); } } }
// only for single scanner public async Task <string> ChangeLane(List <int> cardId, int laneId) { var currentUser = Users.Where(p => p.ConnectionId == Context.ConnectionId).FirstOrDefault(); var result = currentUser.Ssm.ChangeLane(cardId, laneId, currentUser.UserId); var flightData = currentUser.Ssm.ScannerFlights.FirstOrDefault(l => l.LaneId == laneId); if (result != null) { var laneName = currentUser.Ssm.Lanes.FirstOrDefault(l => l.Id == laneId).Name; await this.Clients.Client(Context.ConnectionId).InvokeAsync("FlightNotification", "You moved " + result + " to the " + laneName + " Lane"); var classStudent = new SchoolClassroomManager(); foreach (var item in cardId) { var classCard = classStudent.GetClassroomCard(item); classCard.FlightId = flightData.FlightId; classCard.FlightNumber = flightData.FlightNumber; await this.Clients.Group("Teacher" + currentUser.SchoolId.ToString()).InvokeAsync("ChangedLane", classCard); } } return(flightData == null ? null : flightData.FlightNumber.ToString()); }