Alterando lógica das rotas de vans e MER da tabela Vans
This commit is contained in:
@@ -6,16 +6,10 @@ export class CreateVansTable1655691282002 implements MigrationInterface {
|
|||||||
new Table({
|
new Table({
|
||||||
name: 'vans',
|
name: 'vans',
|
||||||
columns: [
|
columns: [
|
||||||
{
|
|
||||||
name: 'id_van',
|
|
||||||
type: 'uuid',
|
|
||||||
isPrimary: true,
|
|
||||||
generationStrategy: 'uuid',
|
|
||||||
default: 'uuid_generate_v4()',
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
name: 'plate',
|
name: 'plate',
|
||||||
type: 'varchar',
|
type: 'varchar',
|
||||||
|
isPrimary: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'brand',
|
name: 'brand',
|
||||||
@@ -30,7 +24,32 @@ export class CreateVansTable1655691282002 implements MigrationInterface {
|
|||||||
type: 'numeric',
|
type: 'numeric',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'document',
|
name: 'document_status',
|
||||||
|
type: 'boolean',
|
||||||
|
isNullable: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'locator_name',
|
||||||
|
type: 'varchar',
|
||||||
|
isNullable: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'locator_address',
|
||||||
|
type: 'varchar',
|
||||||
|
isNullable: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'locator_complement',
|
||||||
|
type: 'varchar',
|
||||||
|
isNullable: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'locator_city',
|
||||||
|
type: 'varchar',
|
||||||
|
isNullable: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'locator_state',
|
||||||
type: 'varchar',
|
type: 'varchar',
|
||||||
isNullable: true
|
isNullable: true
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,54 +0,0 @@
|
|||||||
import { MigrationInterface, QueryRunner, Table } from 'typeorm';
|
|
||||||
|
|
||||||
export class CreateVanLocatorTable1655692363126 implements MigrationInterface {
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
|
||||||
await queryRunner.createTable(
|
|
||||||
new Table({
|
|
||||||
name: 'vanLocator',
|
|
||||||
columns: [
|
|
||||||
{
|
|
||||||
name: 'id_vanLocator',
|
|
||||||
type: 'uuid',
|
|
||||||
isPrimary: true,
|
|
||||||
generationStrategy: 'uuid',
|
|
||||||
default: 'uuid_generate_v4()',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'name',
|
|
||||||
type: 'varchar',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'address',
|
|
||||||
type: 'varchar',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'complement',
|
|
||||||
type: 'varchar',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'city',
|
|
||||||
type: 'varchar',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'state',
|
|
||||||
type: 'varchar',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'created_at',
|
|
||||||
type: 'timestamp',
|
|
||||||
default: 'now()',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'updated_at',
|
|
||||||
type: 'timestamp',
|
|
||||||
default: 'now()',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
|
||||||
await queryRunner.dropTable('vanLocator');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
import { MigrationInterface, QueryRunner, Table } from 'typeorm';
|
|
||||||
|
|
||||||
export class CreateVanDocumentsTable1655692498005
|
|
||||||
implements MigrationInterface
|
|
||||||
{
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
|
||||||
await queryRunner.createTable(
|
|
||||||
new Table({
|
|
||||||
name: 'vanDocuments',
|
|
||||||
columns: [
|
|
||||||
{
|
|
||||||
name: 'document_van',
|
|
||||||
type: 'varchar',
|
|
||||||
isPrimary: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'vanLocator_id',
|
|
||||||
type: 'uuid',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'document_status',
|
|
||||||
type: 'varchar',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'created_at',
|
|
||||||
type: 'timestamp',
|
|
||||||
default: 'now()',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'updated_at',
|
|
||||||
type: 'timestamp',
|
|
||||||
default: 'now()',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
|
||||||
await queryRunner.dropTable('vanDocuments');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
import { MigrationInterface, QueryRunner, TableForeignKey } from 'typeorm';
|
|
||||||
|
|
||||||
export class AddFKVanLocatorIdToVanDocumentsTable1655692624024
|
|
||||||
implements MigrationInterface
|
|
||||||
{
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
|
||||||
await queryRunner.createForeignKey(
|
|
||||||
'vanDocuments',
|
|
||||||
new TableForeignKey({
|
|
||||||
name: 'VanLocatorVanDocuments', // nome da FK, serve para referenciar numa exclusão pelo QueryRunner se necessário
|
|
||||||
columnNames: ['vanLocator_id'], // coluna que vai virar FK
|
|
||||||
referencedColumnNames: ['id_vanLocator'], // coluna PK da primeira tabela
|
|
||||||
referencedTableName: 'vanLocator', // nome da tabela que possui a PK
|
|
||||||
onDelete: 'SET NULL',
|
|
||||||
onUpdate: 'CASCADE',
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
|
||||||
await queryRunner.dropForeignKey(
|
|
||||||
'vanDocuments',
|
|
||||||
'VanLocatorVanDocuments',
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
import { MigrationInterface, QueryRunner, TableForeignKey } from 'typeorm';
|
|
||||||
|
|
||||||
export class AddFKVanDocumentToVanDocumentsTable1655696991836
|
|
||||||
implements MigrationInterface
|
|
||||||
{
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
|
||||||
await queryRunner.createForeignKey(
|
|
||||||
'vanDocuments',
|
|
||||||
new TableForeignKey({
|
|
||||||
name: 'VanDocumentVanDocuments', // nome da FK, serve para referenciar numa exclusão pelo QueryRunner se necessário
|
|
||||||
columnNames: ['document_van'], // coluna que vai virar FK
|
|
||||||
referencedColumnNames: ['document'], // coluna PK da primeira tabela
|
|
||||||
referencedTableName: 'vanDocuments', // nome da tabela que possui a PK
|
|
||||||
onDelete: 'SET NULL',
|
|
||||||
onUpdate: 'CASCADE',
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
|
||||||
await queryRunner.dropForeignKey('vanDocuments', 'VanDocumentVanDocuments');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -6,16 +6,12 @@ import {
|
|||||||
UpdateDateColumn,
|
UpdateDateColumn,
|
||||||
JoinColumn,
|
JoinColumn,
|
||||||
OneToOne,
|
OneToOne,
|
||||||
|
PrimaryColumn,
|
||||||
} from 'typeorm';
|
} from 'typeorm';
|
||||||
import VanDocuments from './VanDocuments';
|
|
||||||
import VanLocator from './VanLocator';
|
|
||||||
|
|
||||||
@Entity('vans')
|
@Entity('vans')
|
||||||
class Van {
|
class Van {
|
||||||
@PrimaryGeneratedColumn('uuid')
|
@PrimaryColumn()
|
||||||
id_van: string;
|
|
||||||
|
|
||||||
@Column()
|
|
||||||
plate: string;
|
plate: string;
|
||||||
|
|
||||||
@Column()
|
@Column()
|
||||||
@@ -25,11 +21,25 @@ class Van {
|
|||||||
model: string;
|
model: string;
|
||||||
|
|
||||||
@Column()
|
@Column()
|
||||||
seats_number: number;
|
seats_number: string;
|
||||||
|
|
||||||
@OneToOne(() => VanLocator, { eager: true })
|
@Column()
|
||||||
@JoinColumn({ name: 'document' })
|
document_status: boolean
|
||||||
locator: VanLocator;
|
|
||||||
|
@Column()
|
||||||
|
locator_name: string;
|
||||||
|
|
||||||
|
@Column()
|
||||||
|
locator_address: string;
|
||||||
|
|
||||||
|
@Column()
|
||||||
|
locator_complement: string;
|
||||||
|
|
||||||
|
@Column()
|
||||||
|
locator_city: string;
|
||||||
|
|
||||||
|
@Column()
|
||||||
|
locator_state: string;
|
||||||
|
|
||||||
@CreateDateColumn()
|
@CreateDateColumn()
|
||||||
created_at: Date;
|
created_at: Date;
|
||||||
|
|||||||
@@ -1,33 +0,0 @@
|
|||||||
import {
|
|
||||||
Entity,
|
|
||||||
Column,
|
|
||||||
CreateDateColumn,
|
|
||||||
UpdateDateColumn,
|
|
||||||
JoinColumn,
|
|
||||||
OneToOne,
|
|
||||||
PrimaryColumn,
|
|
||||||
} from 'typeorm';
|
|
||||||
import VanLocator from './VanLocator';
|
|
||||||
|
|
||||||
@Entity('vanDocuments')
|
|
||||||
class VanDocuments {
|
|
||||||
@PrimaryColumn()
|
|
||||||
@OneToOne(() => VanDocuments, { eager: true })
|
|
||||||
@JoinColumn({ name: 'document' })
|
|
||||||
vanDocuments: string;
|
|
||||||
|
|
||||||
@OneToOne(() => VanLocator, { eager: true })
|
|
||||||
@JoinColumn({ name: 'vanLocator_id' })
|
|
||||||
vanLocator: VanLocator;
|
|
||||||
|
|
||||||
@Column()
|
|
||||||
document_status: string;
|
|
||||||
|
|
||||||
@CreateDateColumn()
|
|
||||||
created_at: Date;
|
|
||||||
|
|
||||||
@UpdateDateColumn()
|
|
||||||
updated_at: Date;
|
|
||||||
}
|
|
||||||
|
|
||||||
export default VanDocuments;
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
import {
|
|
||||||
Entity,
|
|
||||||
Column,
|
|
||||||
PrimaryGeneratedColumn,
|
|
||||||
CreateDateColumn,
|
|
||||||
UpdateDateColumn,
|
|
||||||
} from 'typeorm';
|
|
||||||
|
|
||||||
@Entity('vanLocator')
|
|
||||||
class VanLocator {
|
|
||||||
@PrimaryGeneratedColumn('uuid')
|
|
||||||
id_vanLocator: string;
|
|
||||||
|
|
||||||
@Column()
|
|
||||||
name: string;
|
|
||||||
|
|
||||||
@Column()
|
|
||||||
address: string;
|
|
||||||
|
|
||||||
@Column()
|
|
||||||
complement: string;
|
|
||||||
|
|
||||||
@Column()
|
|
||||||
city: string;
|
|
||||||
|
|
||||||
@Column()
|
|
||||||
state: string;
|
|
||||||
|
|
||||||
@CreateDateColumn()
|
|
||||||
created_at: Date;
|
|
||||||
|
|
||||||
@UpdateDateColumn()
|
|
||||||
updated_at: Date;
|
|
||||||
}
|
|
||||||
|
|
||||||
export default VanLocator;
|
|
||||||
@@ -5,6 +5,7 @@ import sessionsRouter from './sessions.routes';
|
|||||||
import transportesRouter from './transportes.routes';
|
import transportesRouter from './transportes.routes';
|
||||||
import usersRouter from './users.routes';
|
import usersRouter from './users.routes';
|
||||||
import carsRouter from './cars.routes';
|
import carsRouter from './cars.routes';
|
||||||
|
import vansRouter from './vans.routes';
|
||||||
|
|
||||||
const routes = Router();
|
const routes = Router();
|
||||||
|
|
||||||
@@ -13,5 +14,6 @@ routes.use('/sessions', sessionsRouter);
|
|||||||
routes.use('/search', searchRoutes);
|
routes.use('/search', searchRoutes);
|
||||||
routes.use('/transportes', transportesRouter);
|
routes.use('/transportes', transportesRouter);
|
||||||
routes.use('/cars', carsRouter);
|
routes.use('/cars', carsRouter);
|
||||||
|
routes.use('/vans', vansRouter);
|
||||||
|
|
||||||
export default routes;
|
export default routes;
|
||||||
|
|||||||
@@ -7,10 +7,7 @@ import ensureAuthenticated from '../middlewares/ensureAuthenticated';
|
|||||||
import FindVanService from '../services/FindVanService';
|
import FindVanService from '../services/FindVanService';
|
||||||
import CreateVanService from '../services/CreateVanService';
|
import CreateVanService from '../services/CreateVanService';
|
||||||
import UpdateVanService from '../services/UpdateVanService';
|
import UpdateVanService from '../services/UpdateVanService';
|
||||||
import VanLocator from '../models/VanLocator';
|
import UpdateVanPlateService from '../services/UpdateVanPlateService';
|
||||||
import FindVanLocatorService from '../services/FindVanLocatorService';
|
|
||||||
import CreateVanLocatorService from '../services/CreateVanLocatorService';
|
|
||||||
import UpdateVanLocatorService from '../services/UpdateVanLocatorService';
|
|
||||||
|
|
||||||
const vansRouter = Router();
|
const vansRouter = Router();
|
||||||
|
|
||||||
@@ -22,18 +19,28 @@ vansRouter.get('/list', async (request, response) => {
|
|||||||
return response.json({ data: vans });
|
return response.json({ data: vans });
|
||||||
});
|
});
|
||||||
|
|
||||||
vansRouter.get('/:id', ensureAuthenticated, async (request, response) => {
|
vansRouter.get('/:plate', ensureAuthenticated, async (request, response) => {
|
||||||
const { id } = request.params;
|
const { plate } = request.params;
|
||||||
|
|
||||||
const findVanService = new FindVanService();
|
const findVanService = new FindVanService();
|
||||||
|
|
||||||
const van = await findVanService.execute(id);
|
const van = await findVanService.execute(plate);
|
||||||
|
|
||||||
return response.json({ data: van });
|
return response.json({ data: van });
|
||||||
});
|
});
|
||||||
|
|
||||||
vansRouter.post('/', async (request, response) => {
|
vansRouter.post('/', async (request, response) => {
|
||||||
const { plate, brand, model, seats_number } = request.body;
|
const {
|
||||||
|
plate,
|
||||||
|
brand,
|
||||||
|
model,
|
||||||
|
seats_number,
|
||||||
|
locator_name,
|
||||||
|
locator_address,
|
||||||
|
locator_complement,
|
||||||
|
locator_city,
|
||||||
|
locator_state,
|
||||||
|
} = request.body;
|
||||||
|
|
||||||
const createVanService = new CreateVanService();
|
const createVanService = new CreateVanService();
|
||||||
|
|
||||||
@@ -42,6 +49,11 @@ vansRouter.post('/', async (request, response) => {
|
|||||||
brand,
|
brand,
|
||||||
model,
|
model,
|
||||||
seats_number,
|
seats_number,
|
||||||
|
locator_name,
|
||||||
|
locator_address,
|
||||||
|
locator_complement,
|
||||||
|
locator_city,
|
||||||
|
locator_state,
|
||||||
});
|
});
|
||||||
|
|
||||||
return response.json({ message: 'Van criada com sucesso.', data: van });
|
return response.json({ message: 'Van criada com sucesso.', data: van });
|
||||||
@@ -51,17 +63,31 @@ vansRouter.patch(
|
|||||||
'/edit/:plate',
|
'/edit/:plate',
|
||||||
ensureAuthenticated,
|
ensureAuthenticated,
|
||||||
async (request, response) => {
|
async (request, response) => {
|
||||||
const { brand, model, seats_number } = request.body;
|
const {
|
||||||
|
brand,
|
||||||
|
model,
|
||||||
|
seats_number,
|
||||||
|
locator_name,
|
||||||
|
locator_address,
|
||||||
|
locator_complement,
|
||||||
|
locator_city,
|
||||||
|
locator_state,
|
||||||
|
} = request.body;
|
||||||
|
|
||||||
const { plate } = request.params;
|
const { plate } = request.params;
|
||||||
|
|
||||||
const updateUserService = new UpdateVanService();
|
const updateVanService = new UpdateVanService();
|
||||||
|
|
||||||
await updateUserService.execute({
|
await updateVanService.execute({
|
||||||
plate,
|
plate,
|
||||||
brand,
|
brand,
|
||||||
model,
|
model,
|
||||||
seats_number,
|
seats_number,
|
||||||
|
locator_name,
|
||||||
|
locator_address,
|
||||||
|
locator_complement,
|
||||||
|
locator_city,
|
||||||
|
locator_state,
|
||||||
});
|
});
|
||||||
|
|
||||||
return response.json({
|
return response.json({
|
||||||
@@ -70,72 +96,23 @@ vansRouter.patch(
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
// locadores de van
|
|
||||||
vansRouter.get('/locator/list', async (request, response) => {
|
|
||||||
const vanLocatorsRepository = getRepository(VanLocator);
|
|
||||||
|
|
||||||
const vansLocators = await vanLocatorsRepository.find();
|
|
||||||
|
|
||||||
return response.json({ data: vansLocators });
|
|
||||||
});
|
|
||||||
|
|
||||||
vansRouter.get(
|
|
||||||
'/locator/:id',
|
|
||||||
ensureAuthenticated,
|
|
||||||
async (request, response) => {
|
|
||||||
const { id } = request.params;
|
|
||||||
|
|
||||||
const findVanLocatorService = new FindVanLocatorService();
|
|
||||||
|
|
||||||
const vanLocator = await findVanLocatorService.execute(id);
|
|
||||||
|
|
||||||
return response.json({ data: vanLocator });
|
|
||||||
},
|
|
||||||
);
|
|
||||||
|
|
||||||
vansRouter.post('/locator/:id_van', async (request, response) => {
|
|
||||||
const { name, address, complement, city, state } = request.body;
|
|
||||||
|
|
||||||
const { id_van } = request.params;
|
|
||||||
|
|
||||||
const createVanLocatorService = new CreateVanLocatorService();
|
|
||||||
|
|
||||||
const vanLocator = await createVanLocatorService.execute({
|
|
||||||
id_van,
|
|
||||||
name,
|
|
||||||
address,
|
|
||||||
complement,
|
|
||||||
city,
|
|
||||||
state,
|
|
||||||
});
|
|
||||||
|
|
||||||
return response.json({
|
|
||||||
message: 'Locador da van configurado com sucesso.',
|
|
||||||
data: vanLocator,
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
vansRouter.patch(
|
vansRouter.patch(
|
||||||
'/locator/edit/:id_van',
|
'/edit/plate/:plate',
|
||||||
ensureAuthenticated,
|
ensureAuthenticated,
|
||||||
async (request, response) => {
|
async (request, response) => {
|
||||||
const { name, address, complement, city, state } = request.body;
|
const { newPlate } = request.body;
|
||||||
|
|
||||||
const { id_van } = request.params;
|
const { plate } = request.params;
|
||||||
|
|
||||||
const updateVanLocatorService = new UpdateVanLocatorService();
|
const updateVanPlateService = new UpdateVanPlateService();
|
||||||
|
|
||||||
await updateVanLocatorService.execute({
|
await updateVanPlateService.execute({
|
||||||
id_van,
|
oldPlate: plate,
|
||||||
name,
|
newPlate,
|
||||||
address,
|
|
||||||
complement,
|
|
||||||
city,
|
|
||||||
state,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
return response.json({
|
return response.json({
|
||||||
message: 'Informações da van atualizadas com sucesso.',
|
message: 'Placa da van atualizada com sucesso.',
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,64 +0,0 @@
|
|||||||
import { getRepository } from 'typeorm';
|
|
||||||
import { v4 } from 'uuid';
|
|
||||||
import { hash } from 'bcryptjs';
|
|
||||||
|
|
||||||
import AppError from '../errors/AppError';
|
|
||||||
|
|
||||||
import Van from '../models/Van';
|
|
||||||
import VanLocator from '../models/VanLocator';
|
|
||||||
|
|
||||||
interface Request {
|
|
||||||
id_van: string;
|
|
||||||
name: string;
|
|
||||||
address: string;
|
|
||||||
complement: string;
|
|
||||||
city: string;
|
|
||||||
state: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
class CreateVanLocatorService {
|
|
||||||
public async execute({
|
|
||||||
id_van,
|
|
||||||
name,
|
|
||||||
address,
|
|
||||||
complement,
|
|
||||||
city,
|
|
||||||
state,
|
|
||||||
}: Request): Promise<VanLocator> {
|
|
||||||
const vansRepository = getRepository(Van);
|
|
||||||
const vansLocatorsRepository = getRepository(VanLocator);
|
|
||||||
|
|
||||||
const van = await vansRepository.findOne({
|
|
||||||
where: { id_van },
|
|
||||||
});
|
|
||||||
|
|
||||||
if (!van) {
|
|
||||||
throw new AppError('A van informada não existe.', 404);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (van.locator) {
|
|
||||||
throw new AppError(
|
|
||||||
'A van informada já possui um locador cadastrado.',
|
|
||||||
400,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
const vanLocator = vansLocatorsRepository.create({
|
|
||||||
name,
|
|
||||||
address,
|
|
||||||
complement,
|
|
||||||
city,
|
|
||||||
state,
|
|
||||||
});
|
|
||||||
|
|
||||||
await vansLocatorsRepository.save(vanLocator);
|
|
||||||
|
|
||||||
// linka o locador para o registro da van
|
|
||||||
van.locator = vanLocator
|
|
||||||
await vansRepository.save(van);
|
|
||||||
|
|
||||||
return vanLocator;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export default CreateVanLocatorService;
|
|
||||||
@@ -1,6 +1,4 @@
|
|||||||
import { getRepository } from 'typeorm';
|
import { getRepository } from 'typeorm';
|
||||||
import { v4 } from 'uuid';
|
|
||||||
import { hash } from 'bcryptjs';
|
|
||||||
|
|
||||||
import AppError from '../errors/AppError';
|
import AppError from '../errors/AppError';
|
||||||
|
|
||||||
@@ -11,6 +9,11 @@ interface Request {
|
|||||||
brand: string;
|
brand: string;
|
||||||
model: string;
|
model: string;
|
||||||
seats_number: string;
|
seats_number: string;
|
||||||
|
locator_name: string;
|
||||||
|
locator_address: string;
|
||||||
|
locator_complement: string;
|
||||||
|
locator_city: string;
|
||||||
|
locator_state: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
class CreateVanService {
|
class CreateVanService {
|
||||||
@@ -19,23 +22,36 @@ class CreateVanService {
|
|||||||
brand,
|
brand,
|
||||||
model,
|
model,
|
||||||
seats_number,
|
seats_number,
|
||||||
|
locator_name,
|
||||||
|
locator_address,
|
||||||
|
locator_complement,
|
||||||
|
locator_city,
|
||||||
|
locator_state,
|
||||||
}: Request): Promise<Van> {
|
}: Request): Promise<Van> {
|
||||||
const vansRepository = getRepository(Van);
|
const vansRepository = getRepository(Van);
|
||||||
|
|
||||||
const checkVanPlateExists = await vansRepository.findOne({
|
const vanExists = await vansRepository.findOne({
|
||||||
where: { plate },
|
where: { plate },
|
||||||
});
|
});
|
||||||
|
|
||||||
if (checkVanPlateExists) {
|
if (vanExists) {
|
||||||
throw new AppError('Placa do veículo já cadastrado!', 409);
|
throw new AppError(
|
||||||
|
'Uma van com a placa informada já foi cadastrada.',
|
||||||
|
409,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
const van = vansRepository.create({
|
const van = vansRepository.create({
|
||||||
id_van: v4(),
|
|
||||||
plate,
|
plate,
|
||||||
brand,
|
brand,
|
||||||
model,
|
model,
|
||||||
seats_number: (Number)(seats_number),
|
seats_number,
|
||||||
|
document_status: false,
|
||||||
|
locator_name,
|
||||||
|
locator_address,
|
||||||
|
locator_complement,
|
||||||
|
locator_city,
|
||||||
|
locator_state,
|
||||||
});
|
});
|
||||||
|
|
||||||
await vansRepository.save(van);
|
await vansRepository.save(van);
|
||||||
|
|||||||
@@ -1,56 +0,0 @@
|
|||||||
import { getRepository } from 'typeorm';
|
|
||||||
|
|
||||||
import AppError from '../errors/AppError';
|
|
||||||
|
|
||||||
import Van from '../models/Van';
|
|
||||||
import VanLocator from '../models/VanLocator';
|
|
||||||
|
|
||||||
interface Request {
|
|
||||||
id_van: string;
|
|
||||||
name: string;
|
|
||||||
address: string;
|
|
||||||
complement: string;
|
|
||||||
city: string;
|
|
||||||
state: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
class UpdateVanLocatorService {
|
|
||||||
public async execute({
|
|
||||||
id_van,
|
|
||||||
name,
|
|
||||||
address,
|
|
||||||
complement,
|
|
||||||
city,
|
|
||||||
state,
|
|
||||||
}: Request): Promise<VanLocator> {
|
|
||||||
const vansRepository = getRepository(Van);
|
|
||||||
const vansLocatorsRepository = getRepository(VanLocator);
|
|
||||||
|
|
||||||
const van = await vansRepository.findOne({
|
|
||||||
where: { id_van },
|
|
||||||
});
|
|
||||||
|
|
||||||
if (!van) {
|
|
||||||
throw new AppError('A van informada não existe.', 404);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!van.locator) {
|
|
||||||
throw new AppError(
|
|
||||||
'A van informada não possui um locador cadastrado.',
|
|
||||||
404,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (name) van.locator.name = name
|
|
||||||
if (address) van.locator.address = address
|
|
||||||
if (complement) van.locator.complement = complement
|
|
||||||
if (city) van.locator.city = city
|
|
||||||
if (state) van.locator.state = state
|
|
||||||
|
|
||||||
await vansRepository.save(van);
|
|
||||||
|
|
||||||
return van.locator;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export default UpdateVanLocatorService;
|
|
||||||
32
src/services/UpdateVanPlateService.ts
Normal file
32
src/services/UpdateVanPlateService.ts
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
import { getRepository } from 'typeorm';
|
||||||
|
|
||||||
|
import AppError from '../errors/AppError';
|
||||||
|
|
||||||
|
import Van from '../models/Van';
|
||||||
|
|
||||||
|
interface Request {
|
||||||
|
oldPlate: string;
|
||||||
|
newPlate: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
class UpdateVanPlateService {
|
||||||
|
public async execute({ oldPlate, newPlate }: Request): Promise<Van> {
|
||||||
|
const vansRepository = getRepository(Van);
|
||||||
|
|
||||||
|
const van = await vansRepository.findOne({
|
||||||
|
where: { plate: oldPlate },
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!van) {
|
||||||
|
throw new AppError('A van informada não existe.');
|
||||||
|
}
|
||||||
|
|
||||||
|
van.plate = newPlate
|
||||||
|
|
||||||
|
await vansRepository.save(van);
|
||||||
|
|
||||||
|
return van;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default UpdateVanPlateService;
|
||||||
@@ -6,9 +6,14 @@ import Van from '../models/Van';
|
|||||||
|
|
||||||
interface Request {
|
interface Request {
|
||||||
plate: string;
|
plate: string;
|
||||||
brand: string;
|
brand?: string;
|
||||||
model: string;
|
model?: string;
|
||||||
seats_number: string;
|
seats_number?: string;
|
||||||
|
locator_name?: string;
|
||||||
|
locator_address?: string;
|
||||||
|
locator_complement?: string;
|
||||||
|
locator_city?: string;
|
||||||
|
locator_state?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
class UpdateVanService {
|
class UpdateVanService {
|
||||||
@@ -17,6 +22,11 @@ class UpdateVanService {
|
|||||||
brand,
|
brand,
|
||||||
model,
|
model,
|
||||||
seats_number,
|
seats_number,
|
||||||
|
locator_name,
|
||||||
|
locator_address,
|
||||||
|
locator_complement,
|
||||||
|
locator_city,
|
||||||
|
locator_state,
|
||||||
}: Request): Promise<Van> {
|
}: Request): Promise<Van> {
|
||||||
const vansRepository = getRepository(Van);
|
const vansRepository = getRepository(Van);
|
||||||
|
|
||||||
@@ -25,13 +35,17 @@ class UpdateVanService {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (!van) {
|
if (!van) {
|
||||||
throw new AppError('Van informada não existe.');
|
throw new AppError('A van informada não existe.');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (plate) van.plate = plate;
|
if (brand) van.brand = brand
|
||||||
if (brand) van.brand = brand;
|
if (model) van.model = model
|
||||||
if (model) van.model = model;
|
if (seats_number) van.seats_number = seats_number
|
||||||
if (seats_number) van.seats_number = (Number)(seats_number);
|
if (locator_name) van.locator_name = locator_name
|
||||||
|
if (locator_address) van.locator_address = locator_address
|
||||||
|
if (locator_complement) van.locator_complement = locator_complement
|
||||||
|
if (locator_city) van.locator_city = locator_city
|
||||||
|
if (locator_state) van.locator_state = locator_state
|
||||||
|
|
||||||
await vansRepository.save(van);
|
await vansRepository.save(van);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user