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 classroom and dismissalTeacher role
        public async Task SetClassroomTeacher(int userId, string scId)
        {
            //needs to add implimintation for superAdmin -> schoolId

            int schoolId = 0;

            using (var ds = new DataSeed())
            {
                schoolId = Convert.ToInt32(ds.GetUserSchoolId(userId));
            };

            var currentUser = Users.Where(p => p.ConnectionId == Context.ConnectionId).FirstOrDefault();

            if (currentUser == null)
            {
                currentUser = new UserSignalR {
                    ConnectionId = Context.ConnectionId, SchoolId = Convert.ToInt32(schoolId), UserId = userId, Role = HubRole.Teacher
                };
                Users.Add(currentUser);
            }
            else
            {
                currentUser.SchoolId = Convert.ToInt32(schoolId);
                currentUser.UserId   = userId;
                currentUser.Role     = HubRole.Teacher;
            }

            await Groups.AddAsync(Context.ConnectionId, currentUser.UserGroup);

            // await this.Clients.Client(currentUser.ConnectionId).InvokeAsync("SetClassroomTeacher", currentUser);
        }
        //for scanner role
        public async Task SetScanner(int userId)
        {
            ScannerManager manager;
            UserSignalR    currentUser = null;
            int?           schoolId    = null;

            using (var ds = new DataSeed()) {
                schoolId = ds.GetUserSchoolId(userId);
                if (schoolId == 0)
                {
                    return;
                }
                var sameUser = Users.FirstOrDefault(p => p.UserId == userId);
                if (sameUser != null)
                {
                    Users.Remove(sameUser);
                }
                var schoolScanner = Users.FirstOrDefault(p => p.SchoolId == schoolId && p.Role == HubRole.Scanner);
                currentUser = Users.FirstOrDefault(p => p.ConnectionId == Context.ConnectionId);
                if (schoolScanner == null)
                {
                    manager = new ScannerManager(Convert.ToInt32(schoolId), userId, ds);
                }
                else
                {
                    manager = schoolScanner.Ssm;
                }
            }
            //set User data
            currentUser.SchoolId = Convert.ToInt32(schoolId);
            currentUser.UserId   = userId;
            currentUser.Ssm      = manager;
            currentUser.Role     = HubRole.Scanner;

            await Groups.AddAsync(Context.ConnectionId, currentUser.UserGroup);
        }