Add controllers
This commit is contained in:
parent
07533dbdcb
commit
ffd23217da
|
|
@ -0,0 +1,90 @@
|
||||||
|
import { Request, Response } from "express";
|
||||||
|
|
||||||
|
import Booking from "../models/booking.model";
|
||||||
|
import BookingRepository from "../repositories/booking.repository";
|
||||||
|
|
||||||
|
export default class BookingController {
|
||||||
|
async create(req: Request, res Response) {
|
||||||
|
if (!req.body.hotelId || !req.body.clientId) {
|
||||||
|
res.status(400).json({
|
||||||
|
message: "Content cannot be empty"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
const booking = {
|
||||||
|
hotelId: req.body.hotelId,
|
||||||
|
clientId: req.body.clientId,
|
||||||
|
};
|
||||||
|
|
||||||
|
try {
|
||||||
|
const booking = await BookingRepository.create(booking);
|
||||||
|
res.status(201).json(booking);
|
||||||
|
} catch (err) {
|
||||||
|
res.status(500).json({
|
||||||
|
message: err || "Internal Server Error!"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async findAll(req: Request, res Response) {
|
||||||
|
try {
|
||||||
|
const bookings = await BookingRepository.retrieveAll();
|
||||||
|
res.status(200).json(bookings);
|
||||||
|
} catch (err) {
|
||||||
|
res.status(500).json({
|
||||||
|
message: err || "Internal Server Error!",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async findOne(req: Request, res Response) {
|
||||||
|
if (!req.body.id) {
|
||||||
|
res.status(400).json({
|
||||||
|
message: "id cannot be empty"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
const booking = await BookingRepository.retrieveById(req.body.id);
|
||||||
|
res.status(200).json(booking);
|
||||||
|
} catch (err) {
|
||||||
|
res.status(500).json({
|
||||||
|
message: err || "Internal Server Error!",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async update(req: Request, res Response) {
|
||||||
|
res.status(405).json({
|
||||||
|
message: "Cannot update booking"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async delete(req: Request, res Response) {
|
||||||
|
if (!req.body.id) {
|
||||||
|
res.status(400).json({
|
||||||
|
message: "id cannot be empty"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
await BookingRepository.delete(req.body.id);
|
||||||
|
res.status(204);
|
||||||
|
} catch (err) {
|
||||||
|
res.status(500).json({
|
||||||
|
message: err || "Internal Server Error!",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async deleteAll(req: Request, res Response) {
|
||||||
|
try {
|
||||||
|
await BookingRepository.deleteAll();
|
||||||
|
res.status(204);
|
||||||
|
} catch (err) {
|
||||||
|
res.status(500).json({
|
||||||
|
message: err || "Internal Server Error!",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,125 @@
|
||||||
|
import { Request, Response } from "express";
|
||||||
|
|
||||||
|
import Client from "../models/client.model";
|
||||||
|
import ClientRepository from "../repositories/client.repository";
|
||||||
|
|
||||||
|
export default class ClientController {
|
||||||
|
async create(req: Request, res Response) {
|
||||||
|
if (!req.body.name || !req.body.address || !req.body.phone) {
|
||||||
|
res.status(400).json({
|
||||||
|
message: "Content cannot be empty"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
const client = {
|
||||||
|
name: req.body.name,
|
||||||
|
address: req.body.address,
|
||||||
|
phone: req.body.phone,
|
||||||
|
};
|
||||||
|
|
||||||
|
try {
|
||||||
|
const client = await ClientRepository.create(client);
|
||||||
|
res.status(201).json(client);
|
||||||
|
} catch (err) {
|
||||||
|
res.status(500).json({
|
||||||
|
message: err || "Internal Server Error!"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async findAll(req: Request, res Response) {
|
||||||
|
const name = req.query.name;
|
||||||
|
const address = req.query.address;
|
||||||
|
const phone = req.query.phone;
|
||||||
|
|
||||||
|
try {
|
||||||
|
const clients = await ClientRepository.retrieveAll({name, address, phone});
|
||||||
|
res.status(200).json(clients);
|
||||||
|
} catch (err) {
|
||||||
|
res.status(500).json({
|
||||||
|
message: err || "Internal Server Error!",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async findOne(req: Request, res Response) {
|
||||||
|
if (!req.body.id) {
|
||||||
|
res.status(400).json({
|
||||||
|
message: "id cannot be empty"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
const client = await ClientRepository.retrieveById(req.body.id);
|
||||||
|
res.status(200).json(client);
|
||||||
|
} catch (err) {
|
||||||
|
res.status(500).json({
|
||||||
|
message: err || "Internal Server Error!",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async update(req: Request, res Response) {
|
||||||
|
if (!req.body.id) {
|
||||||
|
res.status(400).json({
|
||||||
|
message: "id cannot be empty"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!req.body.name && !req.body.address && !req.body.phone) {
|
||||||
|
res.status(400).json({
|
||||||
|
message: "Content cannot be empty"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
const client = await clientRepository.retrieveById(id);
|
||||||
|
|
||||||
|
if (req.body.name) {
|
||||||
|
client.name = req.body.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (req.body.address) {
|
||||||
|
client.name = req.body.address;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (req.body.address) {
|
||||||
|
client.phone = req.body.phone;
|
||||||
|
}
|
||||||
|
|
||||||
|
await clientRepository.update(client);
|
||||||
|
} catch (err) {
|
||||||
|
res.status(404).json({
|
||||||
|
message: err || "Not found"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async delete(req: Request, res Response) {
|
||||||
|
if (!req.body.id) {
|
||||||
|
res.status(400).json({
|
||||||
|
message: "id cannot be empty"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
await ClientRepository.delete(req.body.id);
|
||||||
|
res.status(204);
|
||||||
|
} catch (err) {
|
||||||
|
res.status(500).json({
|
||||||
|
message: err || "Internal Server Error!",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async deleteAll(req: Request, res Response) {
|
||||||
|
try {
|
||||||
|
await ClientRepository.deleteAll();
|
||||||
|
res.status(204);
|
||||||
|
} catch (err) {
|
||||||
|
res.status(500).json({
|
||||||
|
message: err || "Internal Server Error!",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,119 @@
|
||||||
|
import { Request, Response } from "express";
|
||||||
|
|
||||||
|
import Hotel from "../models/hotel.model";
|
||||||
|
import HotelRepository from "../repositories/hotel.repository";
|
||||||
|
|
||||||
|
export default class HotelController {
|
||||||
|
async create(req: Request, res Response) {
|
||||||
|
if (!req.body.name || !req.body.address) {
|
||||||
|
res.status(400).json({
|
||||||
|
message: "Content cannot be empty"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
const hotel = {
|
||||||
|
name: req.body.name,
|
||||||
|
address: req.body.address,
|
||||||
|
};
|
||||||
|
|
||||||
|
try {
|
||||||
|
const hotel = await HotelRepository.create(hotel);
|
||||||
|
res.status(201).json(hotel);
|
||||||
|
} catch (err) {
|
||||||
|
res.status(500).json({
|
||||||
|
message: err || "Internal Server Error!"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async findAll(req: Request, res Response) {
|
||||||
|
const name = req.query.name;
|
||||||
|
const address = req.query.address;
|
||||||
|
|
||||||
|
try {
|
||||||
|
const hotels = await HotelRepository.retrieveAll({name, address});
|
||||||
|
res.status(200).json(hotels);
|
||||||
|
} catch (err) {
|
||||||
|
res.status(500).json({
|
||||||
|
message: err || "Internal Server Error!",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async findOne(req: Request, res Response) {
|
||||||
|
if (!req.body.id) {
|
||||||
|
res.status(400).json({
|
||||||
|
message: "id cannot be empty"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
const hotel = await HotelRepository.retrieveById(req.body.id);
|
||||||
|
res.status(200).json(hotel);
|
||||||
|
} catch (err) {
|
||||||
|
res.status(500).json({
|
||||||
|
message: err || "Internal Server Error!",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async update(req: Request, res Response) {
|
||||||
|
if (!req.body.id) {
|
||||||
|
res.status(400).json({
|
||||||
|
message: "id cannot be empty"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!req.body.name && !req.body.address) {
|
||||||
|
res.status(400).json({
|
||||||
|
message: "Content cannot be empty"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
const hotel = await hotelRepository.retrieveById(id);
|
||||||
|
|
||||||
|
if (req.body.name) {
|
||||||
|
hotel.name = req.body.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (req.body.address) {
|
||||||
|
hotel.name = req.body.address;
|
||||||
|
}
|
||||||
|
|
||||||
|
await hotelRepository.update(hotel);
|
||||||
|
} catch (err) {
|
||||||
|
res.status(404).json({
|
||||||
|
message: err || "Not found"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async delete(req: Request, res Response) {
|
||||||
|
if (!req.body.id) {
|
||||||
|
res.status(400).json({
|
||||||
|
message: "id cannot be empty"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
await HotelRepository.delete(req.body.id);
|
||||||
|
res.status(204);
|
||||||
|
} catch (err) {
|
||||||
|
res.status(500).json({
|
||||||
|
message: err || "Internal Server Error!",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async deleteAll(req: Request, res Response) {
|
||||||
|
try {
|
||||||
|
await HotelRepository.deleteAll();
|
||||||
|
res.status(204);
|
||||||
|
} catch (err) {
|
||||||
|
res.status(500).json({
|
||||||
|
message: err || "Internal Server Error!",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -2,7 +2,7 @@ import { Op } from "sequelize";
|
||||||
import Booking from "../models/booking.model";
|
import Booking from "../models/booking.model";
|
||||||
|
|
||||||
interface IBookingRepository {
|
interface IBookingRepository {
|
||||||
save(booking: Booking): Promise<Booking>;
|
create(booking: {clientId: number, hotelId: number}): Promise<Booking>;
|
||||||
retrieveAll(searchParams: {name: string, address: string}): Promise<Booking[]>;
|
retrieveAll(searchParams: {name: string, address: string}): Promise<Booking[]>;
|
||||||
retrieveById(bookingId: number): Promise<Booking | null>;
|
retrieveById(bookingId: number): Promise<Booking | null>;
|
||||||
update(booking: Booking): Promise<number>;
|
update(booking: Booking): Promise<number>;
|
||||||
|
|
@ -11,12 +11,9 @@ interface IBookingRepository {
|
||||||
}
|
}
|
||||||
|
|
||||||
class BookingRepository implements IBookingRepository {
|
class BookingRepository implements IBookingRepository {
|
||||||
async save(booking: Booking): Promise<Booking> {
|
async save(booking: {clientId: number, hotelId: number}): Promise<Booking> {
|
||||||
try {
|
try {
|
||||||
return await Booking.create({
|
return await Booking.create(booking);
|
||||||
hotelId: booking.hotel.id,
|
|
||||||
clientId: booking.client.id,
|
|
||||||
});
|
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
throw new Error("Failed to create Booking!");
|
throw new Error("Failed to create Booking!");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ import { Op } from "sequelize";
|
||||||
import Client from "../models/client.model";
|
import Client from "../models/client.model";
|
||||||
|
|
||||||
interface IClientRepository {
|
interface IClientRepository {
|
||||||
save(client: Client): Promise<Client>;
|
create(client: {name: string, address: string, phone: string}): Promise<Client>;
|
||||||
retrieveAll(searchParams: {name: string, address: string}): Promise<Client[]>;
|
retrieveAll(searchParams: {name: string, address: string}): Promise<Client[]>;
|
||||||
retrieveById(clientId: number): Promise<Client | null>;
|
retrieveById(clientId: number): Promise<Client | null>;
|
||||||
update(client: Client): Promise<number>;
|
update(client: Client): Promise<number>;
|
||||||
|
|
@ -11,7 +11,7 @@ interface IClientRepository {
|
||||||
}
|
}
|
||||||
|
|
||||||
class ClientRepository implements IClientRepository {
|
class ClientRepository implements IClientRepository {
|
||||||
async save(client: Client): Promise<Client> {
|
async create(client: {name: string, address: string, phone: string}): Promise<Client> {
|
||||||
try {
|
try {
|
||||||
return await Client.create({
|
return await Client.create({
|
||||||
name: client.name,
|
name: client.name,
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ import { Op } from "sequelize";
|
||||||
import Hotel from "../models/hotel.model";
|
import Hotel from "../models/hotel.model";
|
||||||
|
|
||||||
interface IHotelRepository {
|
interface IHotelRepository {
|
||||||
save(hotel: Hotel): Promise<Hotel>;
|
create(hotel: {name: string, address: string}): Promise<Hotel>;
|
||||||
retrieveAll(searchParams: {name: string, address: string}): Promise<Hotel[]>;
|
retrieveAll(searchParams: {name: string, address: string}): Promise<Hotel[]>;
|
||||||
retrieveById(hotelId: number): Promise<Hotel | null>;
|
retrieveById(hotelId: number): Promise<Hotel | null>;
|
||||||
update(hotel: Hotel): Promise<number>;
|
update(hotel: Hotel): Promise<number>;
|
||||||
|
|
@ -11,7 +11,7 @@ interface IHotelRepository {
|
||||||
}
|
}
|
||||||
|
|
||||||
class HotelRepository implements IHotelRepository {
|
class HotelRepository implements IHotelRepository {
|
||||||
async save(hotel: Hotel): Promise<Hotel> {
|
async create(hotel: {name: string, address: string}): Promise<Hotel> {
|
||||||
try {
|
try {
|
||||||
return await Hotel.create({
|
return await Hotel.create({
|
||||||
name: hotel.name,
|
name: hotel.name,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue