Skip to content

Instantly share code, notes, and snippets.

@abdulmuneer22
Created June 11, 2020 12:58
Show Gist options
  • Save abdulmuneer22/b65a7461d62ef1c00d56890c250ba054 to your computer and use it in GitHub Desktop.
Save abdulmuneer22/b65a7461d62ef1c00d56890c250ba054 to your computer and use it in GitHub Desktop.
import { chain } from "icepick";
const slotsStub = [
{
slot: 0,
vehicleNumber: "",
color: ""
},
{
slot: 1,
vehicleNumber: "",
color: ""
},
{
slot: 2,
vehicleNumber: "",
color: ""
},
{
slot: 3,
vehicleNumber: "",
color: ""
},
{
slot: 4,
vehicleNumber: "",
color: ""
},
{
slot: 5,
vehicleNumber: "",
color: ""
}
];
class ParkingLot {
constructor() {
this.parkingCapacity = 5;
this.slots = slotsStub;
}
getCurrentParkingCapacity = () => {
return this.parkingCapacity;
};
enterVehicle = (vehicleNumber, color) => {
if (!vehicleNumber) {
console.error("Please provide a valid vehicle number");
return;
}
let nextSlot = this.slots.findIndex(obj => obj.vehicleNumber === "");
console.log("next slot", nextSlot);
if (nextSlot === -1) {
console.error("No Slots are available");
return;
}
let updatedSlots = chain(this.slots)
.setIn([nextSlot, "vehicleNumber"], vehicleNumber)
.setIn([nextSlot, "color"], color)
.value();
this.slots = updatedSlots;
};
exitVehicle = vehicleNumber => {
if (!vehicleNumber) {
console.error("Please provide a valid vehicle number");
return;
}
let slot = this.slots.findIndex(obj => obj.vehicleNumber === vehicleNumber);
if (slot === -1) {
console.error("No vehicle with this number found");
return;
}
let updatedSlots = chain(this.slots)
.setIn([slot, "vehicleNumber"], "")
.setIn([slot, "color"], "")
.value();
this.slots = updatedSlots;
};
getSlotByColor = color => {
let vehicles = this.slots.filter(obj => obj.color === color);
if (vehicles && vehicles.length > 0) {
return vehicles;
}
console.error("No Vehicles found with given color");
};
getEmptySlots = () => {
let slots = this.slots.filter(obj => obj.vehicleNumber === "");
return slots;
};
findVehicleSlot = vehicleNumber => {
let slot = this.slots.filter(obj => obj.vehicleNumber === vehicleNumber);
if (!slot.length > 0) {
console.error("No Vehicles found with given number");
return;
}
return slot;
};
}
const parkingLot = new ParkingLot({ parkingCapacity: 100 });
console.log(parkingLot.getCurrentParkingCapacity());
parkingLot.enterVehicle("KA-1020", "red");
console.log(parkingLot.slots);
parkingLot.enterVehicle("KA-1020", "red");
console.log(parkingLot.slots);
parkingLot.enterVehicle("KA-1020", "red");
console.log(parkingLot.slots);
parkingLot.enterVehicle("KA-1020", "red");
console.log(parkingLot.slots);
parkingLot.enterVehicle("KA-1020", "red");
console.log(parkingLot.slots);
parkingLot.enterVehicle("KA-1020", "red");
console.log(parkingLot.slots);
parkingLot.enterVehicle("KA-1020", "red");
console.log(parkingLot.slots);
parkingLot.exitVehicle("KA-1020", "red");
console.log(parkingLot.slots);
console.log(parkingLot.vehicles);
console.log(parkingLot.getSlotByColor("yellow"));
console.log(parkingLot.getEmptySlots());
console.log(parkingLot.findVehicleSlot("KA-1020"));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment