public Elevator findElevator(int requestedFloor, int floorNumber, string direction, int userPosition, int elevatorCurrentFloor) { int bestCase = 0; Elevator bestElevator = null; if (Battery.findColumn(requestedFloor,floorNumber).bestColumn =[0]) { foreach (Elevator i in elevatorList) { if (requestedFloor < 7 && direction == "down" && elevatorCurrentFloor == 7 || floorNumber == 7 && direction == "up" && elevatorCurrentFloor <= userPosition) { bestCase = 4; bestElevator = i; } else if (requestedFloor < 7 && direction == "idle" && elevatorCurrentFloor == 7 || floorNumber == 7 && direction == "idle " && elevatorCurrentFloor == userPosition) { if (bestCase < 3) { bestCase = 3; bestElevator = i; } } else if (requestedFloor < 7 && direction == "idle " && elevatorCurrentFloor != 7 || floorNumber == 7 && direction == "idle" && elevatorCurrentFloor != userPosition) { if (bestCase < 2) { bestCase = 2; bestElevator = i; } } else { if (bestCase < 1) { bestCase = 1; bestElevator = i; } } } } else { foreach (Elevator i in elevatorList) { if (requestedFloor > 7 && direction == "up" && elevatorCurrentFloor == 7 || floorNumber == 7 && direction == "down" && elevatorCurrentFloor >= userPosition) { bestCase = 4; bestElevator = i; } else if (requestedFloor > 7 && direction == "idle" && elevatorCurrentFloor == 7 || floorNumber == 7 && direction == "idle " && elevatorCurrentFloor == userPosition) { if (bestCase < 3) { bestCase = 3; bestElevator = i; } } else if (requestedFloor > 7 && direction == "idle " && elevatorCurrentFloor != 7 || floorNumber == 7 && direction == "idle" && elevatorCurrentFloor != userPosition) { if (bestCase < 2) { bestCase = 2; bestElevator = i; } } else { if (bestCase < 1) { bestCase = 1; bestElevator = i; } } } } return bestElevator; }