Skip to content

Commit

Permalink
Merge pull request #209 from FSW-AND-BINAR-BATCH-6/feat/user
Browse files Browse the repository at this point in the history
Feat/user
  • Loading branch information
vierynugroho authored Jul 3, 2024
2 parents 4f6fd24 + 8c7671c commit 9f56814
Show file tree
Hide file tree
Showing 3 changed files with 102 additions and 107 deletions.
12 changes: 6 additions & 6 deletions controllers/transaction.js
Original file line number Diff line number Diff line change
Expand Up @@ -266,7 +266,7 @@ const notification = async (req, res) => {
const flightCode = flights[0].code;

// Create the new ticket
const generateTicket = seats.map(async (seat) => {
seats.map(async (seat) => {
let uniqueCode = `${airlineCode}-${airportCode}-${flightCode}-${seat.seatNumber}`;

const existingTicket = await prisma.ticket.findUnique({
Expand All @@ -290,9 +290,9 @@ const notification = async (req, res) => {
ticketTransactionId: dataTransaction.id,
},
});
});

await Promise.all(generateTicket);
res.status(200).json({ message: "OK" });
});
}
} else if (datas.transaction_status == "settlement") {
// TODO set transaction status on your database to 'success'
Expand Down Expand Up @@ -357,7 +357,7 @@ const notification = async (req, res) => {
const flightCode = flights[0].code;

// Create the new ticket
const generateTicket = seats.map(async (seat) => {
seats.map(async (seat) => {
let uniqueCode = `${airlineCode}-${airportCode}-${flightCode}-${seat.seatNumber}`;

const existingTicket = await prisma.ticket.findUnique({
Expand Down Expand Up @@ -385,9 +385,9 @@ const notification = async (req, res) => {
ticketTransaction: true,
},
});
});

await Promise.all(generateTicket);
res.status(200).json({ message: "OK" });
});
} else if (
datas.transaction_status == "cancel" ||
datas.transaction_status == "deny" ||
Expand Down
184 changes: 91 additions & 93 deletions prisma/seeder/seeder.js
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,6 @@ async function main() {
},
];


const flightSeats = [];

const seatRows = 12;
Expand Down Expand Up @@ -311,99 +310,98 @@ async function main() {
},
});


const airlinesMap = await prisma.airline.findMany();
const airportsMap = await prisma.airport.findMany();

const maxFlights = 2000;

const AirlinesArray = airlinesMap.map((data) => data);
const AirportArray = airportsMap.map((data) => data);

const flightData = new Set();

const generateFlights = () => {
const capacity = 72;
const price = 1500000;
const startDate = new Date("2024-06-01T08:00:00Z");
const msPerDay = 24 * 60 * 60 * 1000;

let currentDate = new Date(startDate);

while (currentDate < new Date("2024-07-31T08:00:00Z") && flightData.size < maxFlights) {
for (const departureAirport of AirportArray) {
const shuffledAirlines = AirlinesArray.sort(() => 0.5 - Math.random());

const airline = shuffledAirlines[0];
const destinationAirport = AirportArray.filter(airport => airport.id !== departureAirport.id)[Math.floor(Math.random() * (AirportArray.length - 1))];
const departureDate = new Date(currentDate);
const arrivalDate = new Date(departureDate.getTime() + 4 * 60 * 60 * 1000);
const forwardFlight = {
planeId: airline.id,
departureDate: departureDate,
departureAirportId: departureAirport.id,
arrivalDate: arrivalDate,
destinationAirportId: destinationAirport.id,
capacity: capacity,
price: price,
code: `${airline.code}.${departureAirport.code}.${destinationAirport.code}`,
};

const returnAirline = shuffledAirlines[1] || airline;
const returnDepartureDate = new Date(departureDate.getTime() + msPerDay);
const returnArrivalDate = new Date(returnDepartureDate.getTime() + 4 * 60 * 60 * 1000);
const returnFlight = {
planeId: returnAirline.id,
departureDate: returnDepartureDate,
departureAirportId: destinationAirport.id,
arrivalDate: returnArrivalDate,
destinationAirportId: departureAirport.id,
capacity: capacity,
price: price,
code: `${returnAirline.code}.${destinationAirport.code}.${departureAirport.code}`,
};

flightData.add(JSON.stringify(forwardFlight));
if (flightData.size < maxFlights) {
flightData.add(JSON.stringify(returnFlight));
}

if (flightData.size >= maxFlights) break;
}
currentDate = new Date(currentDate.getTime() + msPerDay);
}
};

generateFlights();

for (const flight of flightData) {
await prisma.flight.create({ data: JSON.parse(flight) });
}
// const airlinesMap = await prisma.airline.findMany();
// const airportsMap = await prisma.airport.findMany();

// const maxFlights = 2000;

// const AirlinesArray = airlinesMap.map((data) => data);
// const AirportArray = airportsMap.map((data) => data);

// const flightData = new Set();

// const generateFlights = () => {
// const capacity = 72;
// const price = 1500000;
// const startDate = new Date("2024-06-01T08:00:00Z");
// const msPerDay = 24 * 60 * 60 * 1000;

// let currentDate = new Date(startDate);

// while (currentDate < new Date("2024-07-31T08:00:00Z") && flightData.size < maxFlights) {
// for (const departureAirport of AirportArray) {
// const shuffledAirlines = AirlinesArray.sort(() => 0.5 - Math.random());

// const airline = shuffledAirlines[0];
// const destinationAirport = AirportArray.filter(airport => airport.id !== departureAirport.id)[Math.floor(Math.random() * (AirportArray.length - 1))];
// const departureDate = new Date(currentDate);
// const arrivalDate = new Date(departureDate.getTime() + 4 * 60 * 60 * 1000);
// const forwardFlight = {
// planeId: airline.id,
// departureDate: departureDate,
// departureAirportId: departureAirport.id,
// arrivalDate: arrivalDate,
// destinationAirportId: destinationAirport.id,
// capacity: capacity,
// price: price,
// code: `${airline.code}.${departureAirport.code}.${destinationAirport.code}`,
// };

// const returnAirline = shuffledAirlines[1] || airline;
// const returnDepartureDate = new Date(departureDate.getTime() + msPerDay);
// const returnArrivalDate = new Date(returnDepartureDate.getTime() + 4 * 60 * 60 * 1000);
// const returnFlight = {
// planeId: returnAirline.id,
// departureDate: returnDepartureDate,
// departureAirportId: destinationAirport.id,
// arrivalDate: returnArrivalDate,
// destinationAirportId: departureAirport.id,
// capacity: capacity,
// price: price,
// code: `${returnAirline.code}.${destinationAirport.code}.${departureAirport.code}`,
// };

// flightData.add(JSON.stringify(forwardFlight));
// if (flightData.size < maxFlights) {
// flightData.add(JSON.stringify(returnFlight));
// }

// if (flightData.size >= maxFlights) break;
// }
// currentDate = new Date(currentDate.getTime() + msPerDay);
// }
// };

// generateFlights();

// for (const flight of flightData) {
// await prisma.flight.create({ data: JSON.parse(flight) });
// }

const flight = await prisma.flight.findMany()
await Promise.all(
flight.map(async (flight) => {
await Promise.all(
flightSeats.map(async (seat) => {
let price = flight.price;
if (seat.type === "BUSINESS") {
price *= 1.5;
} else if (seat.type === "FIRST") {
price *= 2;
}
await prisma.flightSeat.create({
data: {
flightId: flight.id,
seatNumber: seat.seatNumber,
isBooked: seat.isBooked,
type: seat.type,
price: price,
},
});
})
);
})
);
// const flight = await prisma.flight.findMany()
// await Promise.all(
// flight.map(async (flight) => {
// await Promise.all(
// flightSeats.map(async (seat) => {
// let price = flight.price;
// if (seat.type === "BUSINESS") {
// price *= 1.5;
// } else if (seat.type === "FIRST") {
// price *= 2;
// }
// await prisma.flightSeat.create({
// data: {
// flightId: flight.id,
// seatNumber: seat.seatNumber,
// isBooked: seat.isBooked,
// type: seat.type,
// price: price,
// },
// });
// })
// );
// })
// );

const users = await prisma.user.findMany();
//! [START] Transaction
Expand Down
13 changes: 5 additions & 8 deletions test/integrations/transaction.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ const request = require("supertest");

describe("Transaction Integration Test", () => {
let token;
let transactionId = "cly60w9dk0002afm09flc7aid";
let orderId = "f11e98c2-8173-43cb-8f9d-4f8373686f3d";
const baseUrl = "https://backend-skyfly-c1.vercel.app";
beforeAll(async () => {
const response = await request(baseUrl)
Expand All @@ -26,7 +28,7 @@ describe("Transaction Integration Test", () => {
describe("getTransactionById", () => {
it("success", async () => {
const response = await request(baseUrl)
.get("/api/v1/transactions/clxygk7uc0005ctx100hsm6hn")
.get(`/api/v1/transactions/${transactionId}`)
.set("Authorization", `Bearer ${token}`);
expect(response.statusCode).toBe(200);
});
Expand All @@ -35,9 +37,7 @@ describe("Transaction Integration Test", () => {
describe("getTransaction", () => {
it("success", async () => {
const response = await request(baseUrl)
.get(
"/api/v1/transactions/status/2ecaed1c-bfb9-4937-a151-7e16634c7385"
)
.get(`/api/v1/transactions/status/${orderId}`)
.set("Authorization", `Bearer ${token}`);
expect(response.statusCode).toBe(200);
});
Expand All @@ -46,16 +46,13 @@ describe("Transaction Integration Test", () => {
describe("getTransaction", () => {
it("success", async () => {
const response = await request(baseUrl)
.get(
"/api/v1/transactions/status/2ecaed1c-bfb9-4937-a151-7e16634c7385"
)
.get(`/api/v1/transactions/status/${orderId}`)
.set("Authorization", `Bearer ${token}`);
expect(response.statusCode).toBe(200);
});
});

describe("cancelTransaction", () => {
let orderId = "5d5fdb1c-9e6a-43d8-bb37-704dd215d282";
it("success", async () => {
const response = await request(baseUrl)
.post(`/api/v1/transactions/cancel/${orderId}`)
Expand Down

0 comments on commit 9f56814

Please sign in to comment.