Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        public async Task ScanCard(ScannerInput scannerInput)
        {
            var currentUser = Users.Where(p => p.ConnectionId == Context.ConnectionId).FirstOrDefault();

            if (currentUser != null)
            {
                await AddScannedStudent(scannerInput, currentUser);
            }
        }
Ejemplo n.º 3
0
        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);
        }