Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
80243ce
fixed confirm reservation?
AuroraMaestro Dec 8, 2021
2140ae4
added components to their respective folders
AuroraMaestro Dec 18, 2021
df70d8e
added logo to web application
AuroraMaestro Dec 19, 2021
7557d3d
styled some tables
AuroraMaestro Dec 19, 2021
a08c9aa
Merge branch 'zakaria's-branch' into shafei's-branch
MooSheefo Dec 19, 2021
f92fd57
added more styling
AuroraMaestro Dec 19, 2021
5b8fc53
more styling , again
AuroraMaestro Dec 19, 2021
f7b0673
more styling , AGAIN
AuroraMaestro Dec 19, 2021
c5601db
background added
MooSheefo Dec 19, 2021
f865e40
Merge branch 'zakaria's-branch' into shafei's-branch
MooSheefo Dec 19, 2021
0e3b50b
added navbar and update pass verification
MooSheefo Dec 19, 2021
cea7a10
added login page
AuroraMaestro Dec 20, 2021
60707e2
stylized admin panel
AuroraMaestro Dec 20, 2021
b71464f
added hashing to passwords
AuroraMaestro Dec 20, 2021
53087e1
small changes plus hashing
youssefsameh307 Dec 20, 2021
3f07b44
Merge branch 'zakaria's-branch' of https://github.com/advanced-comput…
youssefsameh307 Dec 20, 2021
c7e68ac
registration page and more respectable front end
MooSheefo Dec 20, 2021
950f160
some styling
MooSheefo Dec 22, 2021
0fd71cc
fixed navbar on some pages
MooSheefo Dec 22, 2021
786e624
merging
AuroraMaestro Dec 22, 2021
b1044c3
Merge branch 'zakaria's-branch' into shafei's-branch
AuroraMaestro Dec 22, 2021
fa59c71
start of sprint 3 + pulling latest
Dec 22, 2021
453ba0a
mregingg gggggg
AuroraMaestro Dec 22, 2021
09af59b
Revert "Merge branch 'zakaria's-branch' into shafei's-branch"
AuroraMaestro Dec 22, 2021
c3efc37
Merge branch 'shafei's-branch' of https://github.com/advanced-compute…
AuroraMaestro Dec 22, 2021
f297ecc
Revert "Merge branch 'shafei's-branch' of https://github.com/advanced…
AuroraMaestro Dec 22, 2021
2120d5e
Merge branch 'shafei's-branch' of https://github.com/advanced-compute…
Dec 22, 2021
d12d731
clean start
Dec 22, 2021
446a6c3
fixed my branch??
Dec 22, 2021
0dc1d98
added navbar in all pages and footers and fixed form view
MooSheefo Dec 22, 2021
ca272eb
created admin login page
Dec 22, 2021
d2066c2
merge with zakaria
AuroraMaestro Dec 23, 2021
9cc2ffc
pay
youssefsameh307 Dec 23, 2021
4481915
added telephone,address,countrynumber to registration
MooSheefo Dec 23, 2021
fd8689f
payment journey
youssefsameh307 Dec 23, 2021
a71be44
fixed cancel reservation
AuroraMaestro Dec 24, 2021
d711b0c
Merge branch 'shafei's-branch' of https://github.com/advanced-compute…
AuroraMaestro Dec 24, 2021
5df12bf
Merge branch 'shafei's-branch' into zakaria's-branch
AuroraMaestro Dec 24, 2021
977eeb2
Merge branch 'joe's-branch' into zakaria's-branch
AuroraMaestro Dec 24, 2021
7fc61f8
added res.send
MooSheefo Dec 24, 2021
ee737ec
Merge branch 'shafei's-branch' of https://github.com/advanced-compute…
AuroraMaestro Dec 24, 2021
2befbad
Merge branch 'shafei's-branch' into zakaria's-branch
AuroraMaestro Dec 24, 2021
e5d9919
merge with Hossam
AuroraMaestro Dec 24, 2021
e0ecd00
merged with hossam
AuroraMaestro Dec 24, 2021
3c1e194
admin login & logout
Dec 24, 2021
ffac826
added navigation constraints and pulled buttons up
MooSheefo Dec 24, 2021
425429e
footer fixed
MooSheefo Dec 24, 2021
ada95c7
Merge branch 'zakaria's-branch' into shafei's-branch
MooSheefo Dec 24, 2021
5a16ea8
fixed more bugs
AuroraMaestro Dec 24, 2021
c587306
deleted cancel flight comp
MooSheefo Dec 24, 2021
0ada092
Merge branch 'zakaria's-branch' into shafei's-branch
MooSheefo Dec 24, 2021
f8ea44b
Merge branch 'shafei's-branch' into zakaria's-branch
AuroraMaestro Dec 24, 2021
9809b79
Merge branch 'Corg's-Branch' into zakaria's-branch
AuroraMaestro Dec 24, 2021
dbaa628
merged with rest of team
AuroraMaestro Dec 24, 2021
1e5bfab
fixed a lot of bugs , added log out button too for user
AuroraMaestro Dec 24, 2021
6cb136d
Merge branch 'zakaria's-branch' into shafei's-branch
MooSheefo Dec 24, 2021
7e8e286
Revert "Merge branch 'zakaria's-branch' into shafei's-branch"
MooSheefo Dec 24, 2021
ab86d59
Revert "Merge branch 'zakaria's-branch' into shafei's-branch"
MooSheefo Dec 24, 2021
61a43a5
Merge branch 'zakaria's-branch' into fix
MooSheefo Dec 24, 2021
3a9df26
Merge branch 'fix' into shafei's-branch
MooSheefo Dec 24, 2021
5d92568
Revert "deleted cancel flight comp"
MooSheefo Dec 24, 2021
fdbab8e
added nodemailer FE in view reserved flights
MooSheefo Dec 25, 2021
fc5fa58
Merge branch 'temp' into shafei's-branch
MooSheefo Dec 25, 2021
132bbfe
Revert "Merge branch 'temp' into shafei's-branch"
MooSheefo Dec 25, 2021
b869655
fixing set cookie bug
AuroraMaestro Dec 25, 2021
743c896
Merge branch 'temp' into shafei's-branch
MooSheefo Dec 25, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions backend/Controllers/AdminController.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ const Reservation = require('../Models/Reservation');
const transporter = nodemailer.createTransport({
service:"hotmail",
auth: {
user:"guccsen704@outlook.com",
pass:"Hossam2021"
user:"hossamgus704@outlook.com",
pass:"Hossam21"
}
});

Expand Down
184 changes: 167 additions & 17 deletions backend/Controllers/UserController.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
const User = require('../Models/User');
const Reservation = require('../Models/Reservation');
const Flight = require('../Models/Flight');
const bcrypt = require('bcrypt');
const nodemailer = require('nodemailer');
const saltRounds = 10;

const reserveSelectedSeats = async function(depID,returnID,assignedDepartureSeats,assignedReturnSeats,cabinclass) {

updateReservationSeats(depID,cabinclass,assignedDepartureSeats);
updateReservationSeats(depID,cabinclass,assignedDepartureSeats , false);

updateReservationSeats(returnID,cabinclass,assignedReturnSeats);
updateReservationSeats(returnID,cabinclass,assignedReturnSeats , false);

}

Expand All @@ -17,6 +20,7 @@ exports.getUserById = async function(req,res) {
await User.findById(ID)
.then( (user) => {
res.status(200)
res.send({statusCode:200})
res.json(user)
})
.catch( (err) => {
Expand All @@ -31,7 +35,7 @@ exports.updateUserById = async function(req,res) {
await User.findByIdAndUpdate(ID, req.body.user, {new: true, runValidators: true})
.then( (user) => {
res.status(200)
res.json(user)
res.send({statusCode:200 , data: user})
})
.catch( (err) => {
res.send({statusCode : err.status, message : err.message})
Expand All @@ -44,26 +48,28 @@ exports.getAllReservedSeats = async function(req,res) {
Reservation.find()
.then( (reservedflights) => {
//res.status(200)
res.json(reservedflights)
res.send({statusCode:200 , data:reservedflights})
})
.catch( (err) => {
//res.status(404)
res.send({statusCode:404})
console.log(err)})

}

exports.getReservedFlightById = async function(req,res) {


let ID = req.params.getID
let ID = req.params.id;

Reservation.findById(ID)
.then( (reservedflights) => {
//res.status(200)
res.json(reservedflights)
res.send({statusCode:200 , data:reservedflights})
})
.catch( (err) => {
//res.status(404)
res.send({statusCode:404})
console.log(err)})
}

Expand All @@ -80,6 +86,7 @@ exports.createReservedFlight = async function(req,res) {
.then( (reservedflights) => {
//res.status(200)
console.log('CREATED RESERVATION');
res.send({statusCode: 200 , reservationNumber: reservedflights.reservationNumber,object:reservedflights});
})
.catch( (err) => {
if (err.name === "ValidationError") {
Expand Down Expand Up @@ -114,7 +121,7 @@ exports.getAllreservedFlights = async function(req,res) {

await Reservation.find({reservedUserID : ID + ''})
.then( (reservation) => {
res.send(reservation)
res.send({"reservation":reservation,statusCode:200})
})
.catch( (err) => {
res.send({statusCode : err.status, message : err.message})
Expand All @@ -125,15 +132,56 @@ exports.getAllreservedFlights = async function(req,res) {

exports.deleteReservedFlightById = async function(req,res) {

let ID = req.params.deleteID
let ID = req.params.id;


Reservation.findByIdAndDelete(ID)
.then( (reservedflights) => {
//res.status(200)
res.json(reservedflights)
.then(async (reservedflights) => {


await updateReservationSeats(reservedflights.reservedFlightIDs[0],
reservedflights.cabinClass,
reservedflights.assignedDepartureSeats , true);
await updateReservationSeats(reservedflights.reservedFlightIDs[1],
reservedflights.cabinClass,
reservedflights.assignedReturnSeats , true);


let IDuser = reservedflights.reservedUserID;
let useremail= null;

await User.findById(IDuser)
.then( (user) => {

useremail= user.email;

})
.catch( (err) => {
res.send({statusCode : err.status, message : err.message})
console.log(err.status)})

const option ={
from:'guccsen704@gmail.com',
to:useremail,
subject :"Cancelled flight",
text:"Your flight was cancelled , you will be refunded by "+ reservedflights.price

};

transporter.sendMail(option, (err,info)=>{

if(err){
console.log(err);
return;
}
console.log("Sent: "+ info.response);
})

res.send({statusCode:200});
})
.catch( (err) => {
//res.status(404)
res.send({statusCode:400});
console.log(err)})
}

Expand All @@ -142,12 +190,23 @@ const updateFlight = async function(ID,reservedSeats){

await Flight.findByIdAndUpdate(ID, reservedSeats, {new: true, runValidators: true})
.then( (flights) => {
console.log(flights)})
console.log(flights)
res.send({statusCode:200})
})

}

//create transporter for sender data
const transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user:'guccsen704@gmail.com',
pass:'Hossam2021'
}
});


const updateReservationSeats = async function(ID,cabinclass,assignedSeats){
const updateReservationSeats = async function(ID,cabinclass,assignedSeats , isCancelled){

let oldFlight = null;

Expand All @@ -160,8 +219,8 @@ const updateReservationSeats = async function(ID,cabinclass,assignedSeats){
if(cabinclass.toLowerCase() === 'economy'){

for (let i = 0; i < oldFlight.reservedEconomySeats.length; i++) {
if(assignedSeats.contains(i))
newDepSeats[i] = true;
if(assignedSeats.includes(i + ''))
newDepSeats[i] = !isCancelled;
else
newDepSeats[i] = oldFlight.reservedEconomySeats[i];
}
Expand All @@ -174,8 +233,8 @@ const updateReservationSeats = async function(ID,cabinclass,assignedSeats){
}else {

for (let i = 0; i < oldFlight.reservedBusinessSeats.length; i++) {
if(assignedSeats.includes(i))
newDepSeats[i] = true;
if(assignedSeats.includes(i + ''))
newDepSeats[i] = !isCancelled;
else
newDepSeats[i] = oldFlight.reservedBusinessSeats[i];
}
Expand All @@ -187,4 +246,95 @@ const updateReservationSeats = async function(ID,cabinclass,assignedSeats){
}

updateFlight(ID,oldFlight);
}

exports.register = async function(req,res) {

let newuser = new User(req.body.newuser);
bcrypt.hash(newuser.password, saltRounds).then(function(hash) {
newuser.password = hash ;
});
await newuser.save()
.then( (user) => {
res.status(200)
res.json(user)
res.send({statusCode:200})
})
.catch( (err) => {
if (err.name === "ValidationError") {
let errors = {};

Object.keys(err.errors).forEach((key) => {
errors[key] = err.errors[key].message;
});
console.log(errors);
return res.status(400).send({statusCode : err.status, errors});
}
if (err.name === "MongoServerError"){
let errors = {};
errors[Object.keys(err.keyValue)[0]] = "duplicate key error";
console.log(errors);

return res.status(400).send({statusCode : err.status, errors})
}

res.send({statusCode : err.status, message : err.message})
console.log(err.status)})
}

exports.sendsummary = async function(req,res){

let ID = req.params.id;

let IDuser = req.body.userid;
let useremail= null;
await User.findById(IDuser)
.then( (user) => {

useremail= 'hossamnew16@gmail.com';

})
.catch( (err) => {
// res.send({statusCode : err.status, message : err.message})
console.log(err.status)})






await Reservation.findById(ID)
.then( (reservedflights) => {

//recevier info
const option ={
from:'guccsen704@gmail.com',
to:useremail,
subject :"Summary",
text: "Dear Customer ," +
"\n Here is your summary for the reservation : " +
"\n Reservation number : "+ reservedflights.reservationNumber + "\n" +
"Number of seats : "+ reservedflights.assignedSeats.length + "\n Assigned departure seats : " + reservedflights.assignedDepartureSeats
+ "\n Assigned return seats : "+ reservedflights.assignedReturnSeats + "\n Total price : " +reservedflights.price
+ "\n Number of adults : "+reservedflights.numberOfAdults + "\n Number of children : "+ reservedflights.numberOfChildren +
"\n Thank you for choosing Weeb Airlines."


};


transporter.sendMail(option, (err,info)=>{

if(err){
console.log(err);
return;
}
console.log("Sent: "+ info.response);
})
res.status(200)
res.json(reservedflights)
})
.catch( (err) => {
res.send({statusCode : err.status, message : err.message})
console.log(err.status)})
}
4 changes: 4 additions & 0 deletions backend/Models/Reservation.js
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,10 @@ const reservationSchema = new Schema ({
type : String,
required : true,
},
payed:{
type:Boolean,
default:false
}

}, {timestamps:true})

Expand Down
12 changes: 12 additions & 0 deletions backend/Models/User.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,18 @@ const userSchema = new Schema({
email:{
type:String,
required:true
},
telephoneNumber:{
type:String,
required:true
},
countryNumber:{
type:String,
required:true
},
address:{
type:String,
required:true
}
});

Expand Down
Loading