예제 #1
0
        //Altemating
        private ScannedStudent AddStudentAltemating(DataSeed ds, Dismissal dismissal, ScannedStudent scannedStudent)
        {
            isMoveRemoveCard = false;
            var laneId         = Lanes.ElementAt(currentLaneNumber).Id;
            var lane2FlightObj = ScannerFlights.FirstOrDefault(sf => sf.LaneId == laneId);

            lane2FlightObj = CheckIsLane(ds, dismissal.UserId, laneId, lane2FlightObj);

            if (!ds.IsCarExistInPrevLane(lane2FlightObj.Flight2LaneId, scannedStudent.ParentLicense))
            {
                currentLaneNumber = currentLaneNumber >= (Lanes.Count() - 1) ? 0 : (currentLaneNumber + 1);
                laneId            = Lanes.ElementAt(currentLaneNumber).Id;
                lane2FlightObj    = ScannerFlights.FirstOrDefault(sf => sf.LaneId == laneId);
            }
            else
            {
                lane2FlightObj.CountCarsInLane -= 1;
            }

            lane2FlightObj = CheckIsLane(ds, dismissal.UserId, laneId, lane2FlightObj);

            //check isLanefull
            if (CountCarInLane(ds, dismissal.UserId, lane2FlightObj, scannedStudent.ParentLicense))
            {
                lane2FlightObj = ScannerFlights.FirstOrDefault(sf => sf.LaneId == laneId);
            }

            dismissal.FlightLaneId          = lane2FlightObj.Flight2LaneId;
            lane2FlightObj.CountCarsInLane += 1;
            dismissal.CarNumber             = lane2FlightObj.CountCarsInLane;
            scannedStudent.CardId           = ds.AddStudentToDismissal(dismissal);
            scannedStudent.FlightNumber     = lane2FlightObj.FlightNumber;
            scannedStudent.FligthId         = lane2FlightObj.FlightId;
            if (scannedStudent.CardId == 0)
            {
                lane2FlightObj.CountCarsInLane -= 1;
                Status = "Barcode did not save. Please, try to scanne again!";
                return(null);
            }
            scannedStudent.Lane = Lanes.Where(p => p.Id == lane2FlightObj.LaneId).FirstOrDefault();

            return(scannedStudent);
        }
예제 #2
0
        //by laneId
        private ScannedStudent AddStudentToLane(DataSeed ds, Dismissal dismissal, int laneId, ScannedStudent scannedStudent)
        {
            var lane2FlightObj = ScannerFlights.FirstOrDefault(sf => sf.LaneId == laneId);

            lane2FlightObj = CheckIsLane(ds, dismissal.UserId, laneId, lane2FlightObj);
            //check isLanefull
            if (CountCarInLane(ds, dismissal.UserId, lane2FlightObj, scannedStudent.ParentLicense))
            {
                lane2FlightObj = ScannerFlights.FirstOrDefault(sf => sf.LaneId == laneId);
            }

            if (ds.IsCarExistInPrevLane(lane2FlightObj.Flight2LaneId, scannedStudent.ParentLicense))
            {
                lane2FlightObj.CountCarsInLane -= 1;
            }

            dismissal.FlightLaneId          = lane2FlightObj.Flight2LaneId;
            scannedStudent.FlightNumber     = lane2FlightObj.FlightNumber;
            scannedStudent.FligthId         = lane2FlightObj.FlightId;
            lane2FlightObj.CountCarsInLane += 1;
            dismissal.CarNumber             = lane2FlightObj.CountCarsInLane;
            scannedStudent.CardId           = ds.AddStudentToDismissal(dismissal);
            if (scannedStudent.CardId == 0)
            {
                lane2FlightObj.CountCarsInLane -= 1;
                Status = "Barcode did not save. Please, try to scanne again!";
                return(null);
            }
            scannedStudent.Lane = Lanes.Where(p => p.Id == lane2FlightObj.LaneId).FirstOrDefault();

            return(scannedStudent);
        }
예제 #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);
        }