Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
mvahes
/
Lennubroneerimis_tarkvara
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
9c7f5cac
authored
Apr 24, 2023
by
krmaet
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update changedata.c, final
parent
76a35155
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
245 additions
and
40 deletions
changedata.c
changedata.c
View file @
9c7f5cac
...
...
@@ -4,14 +4,59 @@
#include <stdio.h>
#include <mysql/mysql.h>
#include <ncurses.h>
#include <time.h>
#include "changedata.h"
#include "readdata.h"
#include "main.h"
int
CheckUser
(
MYSQL
*
con
,
char
*
username
,
char
*
password
)
{
char
query
[
512
];
int
position
;
//Query for password associated with the username
sprintf
(
query
,
"SELECT password, position FROM profiles WHERE username = '%s';"
,
username
);
if
(
mysql_query
(
con
,
query
))
{
//päring serverile
printf
(
"Error getting data: %s
\n
"
,
mysql_error
(
con
));
exit
(
EXIT_FAILURE
);
}
MYSQL_RES
*
result
=
mysql_store_result
(
con
);
mysql_num_fields
(
result
);
char
tempPassword
[
128
]
=
{
" "
};
char
tempPosition
[
128
]
=
{
" "
};
MYSQL_ROW
row
;
while
((
row
=
mysql_fetch_row
(
result
)))
{
strcpy
(
tempPassword
,
row
[
0
]);
strcpy
(
tempPosition
,
row
[
1
]);
}
position
=
atoi
(
tempPosition
);
//Check if passwords match
if
(
!
strcmp
(
tempPassword
,
password
))
{
if
(
position
==
ADMIN
)
{
return
ADMIN
;
}
else
if
(
position
==
ASSISTANT
)
{
return
ASSISTANT
;
}
else
if
(
position
==
CLIENT
)
{
return
CLIENT
;
}
}
return
-
1
;
}
int
optionMenu
(
char
*
options
[],
int
count
,
char
buffer
[
STR_MAX
],
int
*
row
,
int
*
col
)
{
WINDOW
*
menu_win
;
//~ clear();
refresh
();
noecho
();
int
i
;
...
...
@@ -19,7 +64,7 @@ int optionMenu(char *options[], int count, char buffer[STR_MAX], int *row, int *
int
highlight
=
0
;
//Create new window
menu_win
=
create_newwin
(
28
,
100
,
1
,
*
col
/
2
-
100
/
2
);
menu_win
=
create_newwin
(
WIN_LENGTH
,
WIN_WIDTH
,
1
,
*
col
/
2
-
WIN_WIDTH
/
2
);
//Display char from parametre
mvwprintw
(
menu_win
,
1
,
1
,
"%s"
,
buffer
);
...
...
@@ -36,13 +81,13 @@ int optionMenu(char *options[], int count, char buffer[STR_MAX], int *row, int *
{
//Make that option highlighted
wattron
(
menu_win
,
A_REVERSE
);
mvwprintw
(
menu_win
,
i
+
3
,
1
,
"%s"
,
options
[
i
]);
mvwprintw
(
menu_win
,
i
+
count
,
1
,
"%s"
,
options
[
i
]);
wattroff
(
menu_win
,
A_REVERSE
);
}
//Print options as a list
else
{
mvwprintw
(
menu_win
,
i
+
3
,
1
,
"%s"
,
options
[
i
]);
mvwprintw
(
menu_win
,
i
+
count
,
1
,
"%s"
,
options
[
i
]);
}
}
...
...
@@ -85,19 +130,14 @@ void CheckIn(MYSQL *con, int *row, int *col)
noecho
();
int
i
,
choice
,
checkIn
;
int
highlight
=
0
;
int
count
=
2
;
char
booking
[
BOOKING_NUM
];
char
buffer
[
BUFFER_MAX
];
char
*
options
[
2
]
=
{
"Yes"
,
"No"
};
//Create new window
menu_win
=
create_newwin
(
28
,
100
,
1
,
*
col
/
2
-
100
/
2
);
//Asks booking number
//~ mvwprintw(menu_win, 1, 1, "Enter booking number");
//~ mvwprintw(menu_win, 2, 1, "--------------------");
//~ echo();
//~ mvwscanw(menu_win, 3, 1, "%s", booking);
//~ noecho();
menu_win
=
create_newwin
(
WIN_LENGTH
,
WIN_WIDTH
,
1
,
*
col
/
2
-
WIN_WIDTH
/
2
);
//Check if booking exists
if
(
CheckBooking
(
con
,
booking
,
row
,
col
))
{
mvwprintw
(
menu_win
,
5
,
1
,
"Person checked in?"
);
...
...
@@ -105,9 +145,10 @@ void CheckIn(MYSQL *con, int *row, int *col)
//Loop until choice is made, inside is commented in optionMenu()
while
(
1
)
{
for
(
i
=
0
;
i
<
2
;
i
++
)
//Print all choices
for
(
i
=
0
;
i
<
count
;
i
++
)
{
if
(
i
==
highlight
)
if
(
i
==
highlight
)
//If current option is selected, higlight it
{
wattron
(
menu_win
,
A_REVERSE
);
mvwprintw
(
menu_win
,
i
+
6
,
1
,
"%s"
,
options
[
i
]);
...
...
@@ -118,21 +159,21 @@ void CheckIn(MYSQL *con, int *row, int *col)
mvwprintw
(
menu_win
,
i
+
6
,
1
,
"%s"
,
options
[
i
]);
}
}
//Ask for arrow key
choice
=
wgetch
(
menu_win
);
switch
(
choice
){
case
UP_KEY
:
highlight
--
;
if
(
highlight
==
-
1
)
if
(
highlight
==
-
1
)
//If the selection is already at the top of the list
{
highlight
=
0
;
}
break
;
case
DOWN_KEY
:
highlight
++
;
if
(
highlight
==
2
)
if
(
highlight
==
count
)
//If selection is at the bottom
{
highlight
=
2
-
1
;
highlight
=
count
-
1
;
}
break
;
default:
...
...
@@ -146,6 +187,7 @@ void CheckIn(MYSQL *con, int *row, int *col)
}
}
//Change checkin accordingly
if
(
highlight
==
1
)
{
checkIn
=
0
;
...
...
@@ -162,10 +204,6 @@ void CheckIn(MYSQL *con, int *row, int *col)
{
finish_with_error
(
con
);
}
// SIIA LÄHEB SQL MUUTMINE
wrefresh
(
menu_win
);
}
...
...
@@ -178,14 +216,16 @@ int CheckBookingDocument(MYSQL *con, char *bookingNumber, char *documentNumber,
char
document
[
STR_MAX
];
char
buffer
[
BUFFER_MAX
];
menu_win
=
create_newwin
(
28
,
100
,
1
,
*
col
/
2
-
100
/
2
);
menu_win
=
create_newwin
(
WIN_LENGTH
,
WIN_WIDTH
,
1
,
*
col
/
2
-
WIN_WIDTH
/
2
);
//Ask for booking number
mvwprintw
(
menu_win
,
1
,
1
,
"Enter booking number"
);
mvwprintw
(
menu_win
,
2
,
1
,
"--------------------"
);
echo
();
mvwscanw
(
menu_win
,
3
,
1
,
"%s"
,
booking
);
noecho
();
//Ask for document number
mvwprintw
(
menu_win
,
5
,
1
,
"Enter document number"
);
mvwprintw
(
menu_win
,
6
,
1
,
"--------------------"
);
echo
();
...
...
@@ -205,6 +245,7 @@ int CheckBookingDocument(MYSQL *con, char *bookingNumber, char *documentNumber,
MYSQL_ROW
row1
;
row1
=
mysql_fetch_row
(
result
);
//Check if booking number exists
if
(
row1
==
NULL
)
{
...
...
@@ -213,7 +254,7 @@ int CheckBookingDocument(MYSQL *con, char *bookingNumber, char *documentNumber,
wgetch
(
menu_win
);
return
0
;
}
mysql_free_result
(
result
);
//Check if documentNumbers match
if
(
!
strcasecmp
(
row1
[
0
],
document
))
{
...
...
@@ -221,7 +262,6 @@ int CheckBookingDocument(MYSQL *con, char *bookingNumber, char *documentNumber,
strcpy
(
documentNumber
,
document
);
wrefresh
(
menu_win
);
delwin
(
menu_win
);
mysql_free_result
(
result
);
return
1
;
}
else
...
...
@@ -231,7 +271,6 @@ int CheckBookingDocument(MYSQL *con, char *bookingNumber, char *documentNumber,
wgetch
(
menu_win
);
wrefresh
(
menu_win
);
delwin
(
menu_win
);
mysql_free_result
(
result
);
return
0
;
}
}
...
...
@@ -244,8 +283,9 @@ int CheckBooking(MYSQL *con, char *bookingNumber, int *row, int *col)
char
temp
[
STR_MAX
];
char
buffer
[
200
];
menu_win
=
create_newwin
(
28
,
100
,
1
,
*
col
/
2
-
100
/
2
);
menu_win
=
create_newwin
(
WIN_LENGTH
,
WIN_WIDTH
,
1
,
*
col
/
2
-
WIN_WIDTH
/
2
);
//Ask for booking number
mvwprintw
(
menu_win
,
1
,
1
,
"Enter booking number"
);
mvwprintw
(
menu_win
,
2
,
1
,
"--------------------"
);
...
...
@@ -264,14 +304,14 @@ int CheckBooking(MYSQL *con, char *bookingNumber, int *row, int *col)
MYSQL_ROW
row1
;
row1
=
mysql_fetch_row
(
result
);
mysql_free_result
(
result
);
//Check if booking number exists
if
(
row1
!=
NULL
)
{
//~ wgetch(menu_win);
strcpy
(
bookingNumber
,
temp
);
wrefresh
(
menu_win
);
delwin
(
menu_win
);
mysql_free_result
(
result
);
return
1
;
}
else
...
...
@@ -281,7 +321,6 @@ int CheckBooking(MYSQL *con, char *bookingNumber, int *row, int *col)
wgetch
(
menu_win
);
wrefresh
(
menu_win
);
delwin
(
menu_win
);
mysql_free_result
(
result
);
return
0
;
}
}
...
...
@@ -295,14 +334,14 @@ void ChangeName(MYSQL *con, char *booking, int *row, int *col)
char
newLastName
[
STR_MAX
];
char
buffer
[
BUFFER_MAX
];
menu_win
=
create_newwin
(
28
,
100
,
1
,
*
col
/
2
-
100
/
2
);
menu_win
=
create_newwin
(
WIN_LENGTH
,
WIN_WIDTH
,
1
,
*
col
/
2
-
WIN_WIDTH
/
2
);
//Display booking number
mvwprintw
(
menu_win
,
1
,
1
,
"Booking number"
);
mvwprintw
(
menu_win
,
2
,
1
,
"--------------"
);
mvwprintw
(
menu_win
,
3
,
1
,
"%s"
,
booking
);
//
SIIA LÄHEB SQL NIME KÜSIMINE
//
Query for name associated with the booking number
sprintf
(
buffer
,
"SELECT firstName,lastName FROM Users WHERE id IN"
"(SELECT user_id FROM Bookings WHERE bookingNumber = '%s')"
,
booking
);
if
(
mysql_query
(
con
,
buffer
))
...
...
@@ -354,7 +393,7 @@ void ChangeDocument(MYSQL *con, char *booking, int *row, int *col)
char
newNumber
[
STR_MAX
];
char
buffer
[
BUFFER_MAX
];
//Create new window
menu_win
=
create_newwin
(
28
,
100
,
1
,
*
col
/
2
-
100
/
2
);
menu_win
=
create_newwin
(
WIN_LENGTH
,
WIN_WIDTH
,
1
,
*
col
/
2
-
WIN_WIDTH
/
2
);
//Display booking number
mvwprintw
(
menu_win
,
1
,
1
,
"Booking number"
);
...
...
@@ -402,12 +441,13 @@ void ChangeBaggage(MYSQL *con, char *booking, int *row, int *col)
clear
();
refresh
();
int
i
,
choice
,
luggage
;
int
count
=
3
;
char
*
options
[
3
]
=
{
"Non priority Carry-On"
,
"Priority Carry-On"
,
"Check-In Baggage"
};
int
highlight
=
0
;
char
buffer
[
BUFFER_MAX
];
//Create window
menu_win
=
create_newwin
(
28
,
100
,
1
,
*
col
/
2
-
100
/
2
);
menu_win
=
create_newwin
(
WIN_LENGTH
,
WIN_WIDTH
,
1
,
*
col
/
2
-
WIN_WIDTH
/
2
);
//Display booking number
mvwprintw
(
menu_win
,
1
,
1
,
"Booking number"
);
...
...
@@ -425,7 +465,7 @@ void ChangeBaggage(MYSQL *con, char *booking, int *row, int *col)
MYSQL_ROW
row1
;
row1
=
mysql_fetch_row
(
result
);
luggage
=
atoi
(
row1
[
0
]);
luggage
=
atoi
(
row1
[
0
]);
//Save current luggage class
//Display current name associated with the booking number
mvwprintw
(
menu_win
,
5
,
1
,
"Current baggage"
);
mvwprintw
(
menu_win
,
6
,
1
,
"---------------"
);
...
...
@@ -438,9 +478,10 @@ void ChangeBaggage(MYSQL *con, char *booking, int *row, int *col)
//Loop until choice is made
while
(
1
)
{
for
(
i
=
0
;
i
<
3
;
i
++
)
//Print all choices
for
(
i
=
0
;
i
<
count
;
i
++
)
{
if
(
i
==
highlight
)
if
(
i
==
highlight
)
//If current option is selected, highlight it
{
wattron
(
menu_win
,
A_REVERSE
);
mvwprintw
(
menu_win
,
i
+
11
,
1
,
"%s"
,
options
[
i
]);
...
...
@@ -452,20 +493,21 @@ void ChangeBaggage(MYSQL *con, char *booking, int *row, int *col)
}
}
//Ask for arrow key
choice
=
wgetch
(
menu_win
);
switch
(
choice
){
case
UP_KEY
:
highlight
--
;
if
(
highlight
==
-
1
)
if
(
highlight
==
-
1
)
//If selected is at the top of the list
{
highlight
=
0
;
}
break
;
case
DOWN_KEY
:
highlight
++
;
if
(
highlight
==
3
)
if
(
highlight
==
count
)
//If selected is at the bottom of the list
{
highlight
=
3
-
1
;
highlight
=
count
-
1
;
}
break
;
default:
...
...
@@ -488,3 +530,166 @@ void ChangeBaggage(MYSQL *con, char *booking, int *row, int *col)
delwin
(
menu_win
);
}
void
AddFlightDest
(
MYSQL
*
con
,
int
*
col
,
int
*
row
)
{
char
destination
[
STR_MAX
];
char
dot
[
STR_MAX
];
int
seats
=
72
;
char
flightNum
[
STR_MAX
];
char
query
[
1024
];
WINDOW
*
menu_win
;
menu_win
=
create_newwin
(
WIN_LENGTH
,
WIN_WIDTH
,
1
,
*
col
/
2
-
WIN_WIDTH
/
2
);
while
(
1
)
{
skip:
;
//Ask for new flight number
mvwprintw
(
menu_win
,
1
,
1
,
"Enter flight number for new flight"
);
mvwprintw
(
menu_win
,
2
,
1
,
"----------------------------------"
);
mvwprintw
(
menu_win
,
3
,
1
,
" "
);
echo
();
mvwscanw
(
menu_win
,
3
,
1
,
"%s"
,
flightNum
);
noecho
();
sprintf
(
query
,
"SELECT flightNum FROM Flights WHERE flightNum = '%s';"
,
flightNum
);
if
(
mysql_query
(
con
,
query
))
{
mvwprintw
(
menu_win
,
4
,
1
,
"Error checking if flightNum exists %s
\n
"
,
mysql_error
(
con
));
exit
(
EXIT_FAILURE
);
}
MYSQL_RES
*
result
=
mysql_store_result
(
con
);
MYSQL_ROW
row
;
row
=
mysql_fetch_row
(
result
);
//Check if flight number already exists
if
(
row
!=
NULL
)
{
mvwprintw
(
menu_win
,
4
,
1
,
"Flight number already exists, choose another"
);
goto
skip
;
}
else
break
;
mysql_free_result
(
result
);
break
;
}
//Ask for destination
mvwprintw
(
menu_win
,
5
,
1
,
"Enter destination"
);
mvwprintw
(
menu_win
,
6
,
1
,
"-----------------"
);
echo
();
mvwscanw
(
menu_win
,
7
,
1
,
"%s"
,
destination
);
noecho
();
//Ask for the date and time
mvwprintw
(
menu_win
,
9
,
1
,
"Enter date of time (MM:HH DD.Month.Year)"
);
mvwprintw
(
menu_win
,
10
,
1
,
"--------------------------------------"
);
echo
();
mvwscanw
(
menu_win
,
11
,
1
,
"%[^
\n
]%*c"
,
dot
);
//Read to the end of line
noecho
();
sprintf
(
query
,
"INSERT INTO flights (destination, time,"
"seats, flightNum) VALUES ('%s', '%s',%d, '%s');"
,
destination
,
dot
,
seats
,
flightNum
);
if
(
mysql_query
(
con
,
query
))
{
//Query and check to database
printf
(
"Error inserting flight into database: %s
\n
"
,
mysql_error
(
con
));
exit
(
EXIT_FAILURE
);
}
else
{
mvwprintw
(
menu_win
,
13
,
1
,
"New flight successfully created!"
);
mvwprintw
(
menu_win
,
14
,
1
,
"Press any key to continue!"
);
wgetch
(
menu_win
);
}
wrefresh
(
menu_win
);
delwin
(
menu_win
);
}
void
ChangeSeat
(
MYSQL
*
con
,
char
*
booking
,
int
*
row
,
int
*
col
)
{
int
seatmap
[
ROWS
][
COLUMNS
]
=
{
0
};
int
flightId
;
char
buffer
[
BUFFER_MAX
];
char
*
newSeat
=
malloc
(
10
*
sizeof
(
*
newSeat
));
WINDOW
*
menu_win
;
menu_win
=
create_newwin
(
WIN_LENGTH
,
WIN_WIDTH
,
1
,
*
col
/
2
-
WIN_WIDTH
/
2
);
//Ask database for flightId to fill seat map
sprintf
(
buffer
,
"SELECT flight_id FROM Bookings WHERE bookingNumber = '%s';"
,
booking
);
if
(
mysql_query
(
con
,
buffer
))
{
finish_with_error
(
con
);
}
MYSQL_RES
*
result
=
mysql_store_result
(
con
);
MYSQL_ROW
row1
;
row1
=
mysql_fetch_row
(
result
);
flightId
=
atoi
(
row1
[
0
]);
//Save the flightId
//Ask database for current seat
sprintf
(
buffer
,
"SELECT seat FROM Users WHERE id IN"
"(SELECT user_id FROM Bookings WHERE bookingNumber = '%s');"
,
booking
);
if
(
mysql_query
(
con
,
buffer
))
{
finish_with_error
(
con
);
}
MYSQL_RES
*
result1
=
mysql_store_result
(
con
);
MYSQL_ROW
row2
;
row2
=
mysql_fetch_row
(
result1
);
mvwprintw
(
menu_win
,
1
,
1
,
"Current booked seat is %s"
,
row2
[
0
]);
mvwprintw
(
menu_win
,
2
,
1
,
"------------------------------"
);
mvwprintw
(
menu_win
,
4
,
1
,
"Press any key to choose new seat"
);
wgetch
(
menu_win
);
wrefresh
(
menu_win
);
delwin
(
menu_win
);
//Show seatmap for the booking
FillSeatmap
(
seatmap
,
ROWS
,
COLUMNS
,
con
,
flightId
);
PrintSeats
(
seatmap
,
ROWS
,
COLUMNS
,
row
,
col
,
newSeat
);
//Insert new seat into database
sprintf
(
buffer
,
"UPDATE Users SET seat = '%s' WHERE id IN"
"(SELECT user_id FROM Bookings WHERE bookingNumber = '%s');"
,
newSeat
,
booking
);
if
(
mysql_query
(
con
,
buffer
))
{
finish_with_error
(
con
);
}
mysql_free_result
(
result
);
mysql_free_result
(
result1
);
free
(
newSeat
);
clear
();
}
void
DeleteFlight
(
MYSQL
*
con
,
int
*
rows
,
int
*
cols
)
{
int
choice
;
char
buffer
[
BUFFER_MAX
];
choice
=
ShowDestinations
(
con
,
rows
,
cols
);
//Delete all bookings connected to flight
sprintf
(
buffer
,
"DELETE FROM Bookings WHERE flight_id = %d;"
,
choice
);
if
(
mysql_query
(
con
,
buffer
))
{
finish_with_error
(
con
);
}
//Delete all users connected to flight
sprintf
(
buffer
,
"DELETE FROM Users WHERE flight_id = %d;"
,
choice
);
if
(
mysql_query
(
con
,
buffer
))
{
finish_with_error
(
con
);
}
//Delete flight
sprintf
(
buffer
,
"DELETE FROM Flights WHERE id = %d;"
,
choice
);
if
(
mysql_query
(
con
,
buffer
))
{
finish_with_error
(
con
);
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment