feat(services): add rent service functions
This commit introduces new functions to handle rental services in the src/services/rent.service.ts. Functions created handle rental CRUD operations such as createRentService, updateRentService, deleteRentService, also additional utility functions such as getUserRentService and getRentByIdService that deal with user-associated rentals were introduced. These new functions serve to simplify rental management and improve our services for rental handling. Issue: #24 Signed-off-by: Mathis <yidhra@tuta.io>
This commit is contained in:
parent
371d960cf3
commit
ec53fcb247
176
src/services/rent.service.ts
Normal file
176
src/services/rent.service.ts
Normal file
@ -0,0 +1,176 @@
|
|||||||
|
//import { ErrorType, type ISError } from "@interfaces/services/ISError";
|
||||||
|
import MySqlService from "@services/mysql.service";
|
||||||
|
import { isDebugMode } from "@utils/debugState";
|
||||||
|
import { Logger } from "tslog";
|
||||||
|
import { v4 } from "uuid";
|
||||||
|
import IDbRent from "@interfaces/database/IDbRent";
|
||||||
|
import {body} from "express-validator";
|
||||||
|
|
||||||
|
const logger = new Logger({
|
||||||
|
name: "RentService",
|
||||||
|
});
|
||||||
|
|
||||||
|
const DbHandler = new MySqlService.Handler("RentService");
|
||||||
|
|
||||||
|
async function createRentService(data: IDbRent): Promise<boolean> {
|
||||||
|
if (isDebugMode()) logger.debug(`\n\n> Creating a new rent...\n`);
|
||||||
|
const wantedVehicleId = data.id;
|
||||||
|
const targetUserId = data.user_id;
|
||||||
|
if (!targetUserId || !wantedVehicleId) {
|
||||||
|
logger.error(`Missing targetUserId or targetVehicleId`);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
const userIfExist = await MySqlService.User.getById(DbHandler, targetUserId);
|
||||||
|
if (!userIfExist[0]) {
|
||||||
|
logger.error(`User does not exist`);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
const targetUser = userIfExist[0]
|
||||||
|
if (!targetUser.id) return false;
|
||||||
|
const vehicleIfExist = await MySqlService.Vehicle.getById(DbHandler, wantedVehicleId);
|
||||||
|
if (!vehicleIfExist[0] || !vehicleIfExist[0].id) {
|
||||||
|
logger.error(`Vehicle does not exist`);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
const vehicleId = vehicleIfExist[0].id
|
||||||
|
try {
|
||||||
|
const result = await MySqlService.Rent.insert(DbHandler, {
|
||||||
|
id: v4(),
|
||||||
|
vehicle_id: vehicleId,
|
||||||
|
user_id: targetUser.id,
|
||||||
|
active: data.active,
|
||||||
|
iat: new Date(Date.parse(`${data.iat}`)),
|
||||||
|
eat: new Date(Date.parse(`${data.eat}`)),
|
||||||
|
need_survey: data.need_survey,
|
||||||
|
km_at_start: Number.parseInt(`${data.km_at_start}`)
|
||||||
|
});
|
||||||
|
if (result.affectedRows !== 0) {
|
||||||
|
logger.info("\n\n> Success !");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
} catch (error) {
|
||||||
|
logger.error(`\n\n> Error creating category: \n${error}\n`);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function updateRentService(data: IDbRent) {
|
||||||
|
if (isDebugMode()) logger.debug(`\n\n> Updating a rent...\n`);
|
||||||
|
const wantedVehicleId = data.id;
|
||||||
|
const targetUserId = data.user_id;
|
||||||
|
if (!targetUserId || !wantedVehicleId || !data.id) {
|
||||||
|
logger.error(`Missing targetUserId or targetVehicleId`);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
const rentIfExist = await MySqlService.Rent.getById(DbHandler, data.id);
|
||||||
|
if (!rentIfExist[0]) {
|
||||||
|
logger.error(`Rent does not exist`);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
const rentId = rentIfExist[0].id;
|
||||||
|
if (!rentId) {
|
||||||
|
logger.error(`RentId does not exist`);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
const userIfExist = await MySqlService.User.getById(DbHandler, targetUserId);
|
||||||
|
if (!userIfExist[0]) {
|
||||||
|
logger.error(`User does not exist`);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
const targetUser = userIfExist[0]
|
||||||
|
if (!targetUser.id) return false;
|
||||||
|
const vehicleIfExist = await MySqlService.Vehicle.getById(DbHandler, wantedVehicleId);
|
||||||
|
if (!vehicleIfExist[0] || !vehicleIfExist[0].id) {
|
||||||
|
logger.error(`Vehicle does not exist`);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
const vehicleId = vehicleIfExist[0].id
|
||||||
|
try {
|
||||||
|
const result = await MySqlService.Rent.update(DbHandler, {
|
||||||
|
id: rentId,
|
||||||
|
vehicle_id: vehicleId,
|
||||||
|
user_id: targetUser.id,
|
||||||
|
active: data.active,
|
||||||
|
iat: new Date(Date.parse(`${data.iat}`)),
|
||||||
|
eat: new Date(Date.parse(`${data.eat}`)),
|
||||||
|
need_survey: data.need_survey,
|
||||||
|
km_at_start: Number.parseInt(`${data.km_at_start}`)
|
||||||
|
});
|
||||||
|
if (result.affectedRows !== 0) {
|
||||||
|
logger.info("\n\n> Success !");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
} catch (error) {
|
||||||
|
logger.error(`\n\n> Error updating category: \n${error}\n`);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function getAllAssignedRentService() {
|
||||||
|
const result = await MySqlService.Rent.getAllAssigned(DbHandler);
|
||||||
|
if (result.length > 0) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
logger.warn(`No assigned rents found`);
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
async function getRentByIdService(rentId: string) {
|
||||||
|
if (!rentId || rentId.length !== 36) {
|
||||||
|
logger.warn(`Id missing or not conform`)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
const rent = await MySqlService.Rent.getById(DbHandler, rentId);
|
||||||
|
if (rent.length > 0) {
|
||||||
|
return rent[0];
|
||||||
|
}
|
||||||
|
logger.warn(`Rent not found`);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function deleteRentService(rentId: string) {
|
||||||
|
const rentIfExist = await MySqlService.Rent.getById(DbHandler, rentId);
|
||||||
|
if (!rentIfExist[0]) {
|
||||||
|
logger.error(`Rent does not exist`);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
const target = rentIfExist[0]
|
||||||
|
if (!target.id) return false;
|
||||||
|
try {
|
||||||
|
const result = await MySqlService.Rent.delete(DbHandler, target.id);
|
||||||
|
if (result.affectedRows !== 0) {
|
||||||
|
logger.info("\n\n> Success !");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function getUserRentService(userId: string) {
|
||||||
|
if (!userId) {
|
||||||
|
logger.warn(`Missing userId`);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
const rents = await MySqlService.Rent.getAssignedToUser(DbHandler, userId);
|
||||||
|
if (rents.length > 0) {
|
||||||
|
return rents;
|
||||||
|
}
|
||||||
|
logger.warn(`No rents found for user`);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isDebugMode()) logger.debug("\nService loaded.");
|
||||||
|
|
||||||
|
const VehicleService = {
|
||||||
|
create: createRentService,
|
||||||
|
update: updateRentService,
|
||||||
|
getAll: getAllAssignedRentService,
|
||||||
|
getById: getRentByIdService,
|
||||||
|
delete: deleteRentService,
|
||||||
|
getUserRent: getUserRentService,
|
||||||
|
};
|
||||||
|
|
||||||
|
export default VehicleService;
|
Loading…
x
Reference in New Issue
Block a user