CEC-1183/CEC-1201 fleet vehicles forms (#130)
* working fleet vehicles forms * snapshots and api tests
This commit is contained in:
@@ -5,9 +5,13 @@ const FleetContext = React.createContext();
|
||||
|
||||
export const FleetProvider = ({ children }) => {
|
||||
const [busy, setBusy] = useState(false);
|
||||
|
||||
const [fleets, setFleets] = useState([]);
|
||||
const [totalFleets, setTotalFleets] = useState(0);
|
||||
|
||||
const [fleetVehicles, setFleetVehicles] = useState([]);
|
||||
const [totalFleetVehicles, setTotalFleetVehicles] = useState(0);
|
||||
|
||||
const addFleet = async (fleet, token) => {
|
||||
try {
|
||||
setBusy(true);
|
||||
@@ -31,7 +35,6 @@ export const FleetProvider = ({ children }) => {
|
||||
setFleets([])
|
||||
throw new Error(`Get fleets error. ${result.message}`);
|
||||
}
|
||||
|
||||
setFleets(result.data)
|
||||
if (result.total) {
|
||||
setTotalFleets(result.total);
|
||||
@@ -78,16 +81,80 @@ export const FleetProvider = ({ children }) => {
|
||||
}
|
||||
}
|
||||
|
||||
const getFleetVehicles = async (name, search, token) => {
|
||||
try {
|
||||
setBusy(true);
|
||||
|
||||
const result = await api.getFleetVehicles(name, search, token);
|
||||
if (result.error) {
|
||||
setFleetVehicles([])
|
||||
throw new Error(`Get fleet vehicles error. ${result.message}`);
|
||||
}
|
||||
|
||||
setFleetVehicles(result.data)
|
||||
if (result.total) {
|
||||
setTotalFleetVehicles(result.total);
|
||||
}
|
||||
return result;
|
||||
} finally {
|
||||
setBusy(false);
|
||||
}
|
||||
}
|
||||
|
||||
const addFleetVehicle = async (name, vehicle, token) => {
|
||||
try {
|
||||
setBusy(true);
|
||||
|
||||
validateFleetName(name);
|
||||
validateVIN(vehicle.vin);
|
||||
|
||||
const result = await api.addFleetVehicle(name, vehicle, token);
|
||||
if (result.error) {
|
||||
throw new Error(`Add fleet vehicle error. ${result.message}`);
|
||||
}
|
||||
return result;
|
||||
} finally {
|
||||
setBusy(false);
|
||||
}
|
||||
}
|
||||
|
||||
const deleteFleetVehicle = async (name, vehicle, token) => {
|
||||
try {
|
||||
setBusy(true);
|
||||
|
||||
validateFleetName(name);
|
||||
validateVIN(vehicle.vin);
|
||||
|
||||
const result = await api.deleteFleetVehicle(name, vehicle, token);
|
||||
if (result.error) {
|
||||
throw new Error(`Delete fleet vehicle error. ${result.message}`);
|
||||
}
|
||||
|
||||
const index = fleetVehicles.findIndex(element => element === vehicle.vin);
|
||||
if (index >= 0) fleetVehicles.splice(index, 1);
|
||||
return result;
|
||||
} finally {
|
||||
setBusy(false);
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
<FleetContext.Provider
|
||||
value={{
|
||||
busy,
|
||||
|
||||
fleets,
|
||||
totalFleets,
|
||||
addFleet,
|
||||
getFleets,
|
||||
updateFleet,
|
||||
deleteFleet
|
||||
deleteFleet,
|
||||
|
||||
fleetVehicles,
|
||||
totalFleetVehicles,
|
||||
getFleetVehicles,
|
||||
addFleetVehicle,
|
||||
deleteFleetVehicle
|
||||
}}
|
||||
>
|
||||
{children}
|
||||
@@ -104,9 +171,15 @@ const validateFleet = (fleet) => {
|
||||
}
|
||||
|
||||
const validateFleetName = (name) => {
|
||||
if (name == null || !/^[A-Za-z-]+$/.test(name)) {
|
||||
if (name == null || !/^[0-9A-Za-z-]+$/.test(name)) {
|
||||
throw new Error("Invalid name");
|
||||
}
|
||||
}
|
||||
|
||||
const validateVIN = (vin) => {
|
||||
if (vin == null || vin.length !== 17) {
|
||||
throw new Error("Invalid VIN");
|
||||
}
|
||||
}
|
||||
|
||||
export const useFleetContext = () => useContext(FleetContext);
|
||||
|
||||
Reference in New Issue
Block a user