//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); }
//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); }
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); }