./manage.cgi

#! /usr/local/bin/perl -w

use CGI::Carp qw(fatalsToBrowser);
use CGI qw(:standard);
use DBI;
use Time::localtime;
use POSIX;

require "common.pl";

$connection = mysql_connect();

$cookie = cookie('webair');
@cookie = split /-/, $cookie;
#check that the cookie contains a valid username

$query = "SELECT * FROM users WHERE user_id = '".$cookie[0]."' AND email = '".$cookie[1]."';";
$result = mysql_query($query);

if($result->rows>0)
{
    while($row = $result->fetchrow_hashref)
    {
        #check password
        $password = crypt($cookie[2], 'salt');
        if($password eq $row->{password})
        {
            $login = 'true';
            $newcookie = cookie(-name => "webair",
            -value => $cookie[0].'-'.$cookie[1].'-'.$cookie[2],
            -expires => "+20m",
            );
            $setcookie = 'true';
        }
    }
}

if($login ne "true")
{
    $body = load_template('manage/login');
    if(param(stage) eq "login")
    {
        $query = "SELECT * FROM users WHERE email = '".param(email)."';";
        $result = mysql_query($query);

        if($result->rows>0)
        {
            while($row = $result->fetchrow_hashref)
            {
                $password = crypt(param(password), 'salt');
                if($password eq $row->{password})
                {
                    #Login correct, set login cookie
                    $cookie = cookie(-name => "webair",
                    -value => $row->{user_id}.'-'.$row->{email}.'-'.param(password),
                    -expires => "+20m",
                    );
                    print "Location:http://****/webair/manage.cgi\r\n";
                    #Reload the page now the cookie has been set
                    print header(-cookie=>$cookie);

                    $header = 'true';
                }
                else
                {
                    $body = str_replace('%%ERROR%%', '<b>Your email address or password was not correct</b>', $body);
                }
            }
        }
        else
        {
            $body = str_replace('%%ERROR%%', '<b>Your email address or password was not correct</b>', $body);
        }
    }
    else
    {
        $body = str_replace('%%ERROR%%', '', $body);
    }
}
else
{
    if(!param(req))
    {
        $body = load_template("manage/home");
    }

    if(param(req)eq'flights')
    {
        if(param(func) eq "Cancel")
        {
            $message = 'You flight has been canceled.';
            $query = "DELETE FROM bookings WHERE Booking_id = '".param(id)."' AND user_id = '".$cookie[0]."'";
            mysql_query($query);
        }
        if(param(func) eq "Pay")
        {
            $message = 'Thank you for paying.';
            $query = "UPDATE bookings SET payment_status = '1' WHERE Booking_id = '".param(id)."' AND user_id = '".$cookie[0]."'";
            mysql_query($query);
        }

        $query = "SELECT bookings.*, flights.* FROM bookings, flights WHERE bookings.flight_id = flights.Flight_id AND User_id = '$cookie[0]';";
        $result = mysql_query($query);
        
        if($result->rows>0)
        {
            $body = $message.load_template('manage/flights_head');

            while($row = $result->fetchrow_hashref)
            {
                $out .= load_template('manage/flight');
                $out = str_replace('%BOOKINGID',$row->{Booking_id},$out);
                $out = str_replace('%DEPARTUREPLACE' ,tc($row->{departure}), $out);
                $out = str_replace('%ARRIVALPLACE' ,tc($row->{destination}), $out);
                $out = str_replace('%DATE' ,makenormdate($row->{booking_date}), $out);
                $out = str_replace('%DEPARTURETIME ' ,makenormtime($row->{departure_time}), $out);
                $out = str_replace('%ARRIVALTIME' ,makenormtime($row->{arrival_time}), $out);
                $out = str_replace('%TICKETS' ,$row->{seats}, $out);
                $out = str_replace('%PRICE' ,$row->{total_price}, $out);

                if($row->{payment_status}==1)
                {
                    $out = str_replace('%STATUS' ,'Paid', $out);
                    $out = str_replace('%%PAY%%' ,'', $out);
                }
                else
                {
                    $out = str_replace('%STATUS' ,'Unpaid', $out);
                    $out = str_replace('%%PAY%%' ,'<input type="submit" value="Pay" name="func">', $out);
                }
            }
            $body = str_replace('%FLIGHTS', $out, $body);
        }
    }

    if(param(req)eq'details')
    {
        $body= load_template("manage/detail_form");
        if(!param(forenames))
        {
            $query = "SELECT * FROM users WHERE user_id= '".$cookie[0]."';"; 
            $result = mysql_query($query);

            while($row = $result->fetchrow_hashref)
            {
                $body= str_replace ('%%SURNAME%%', $row->{surname}, $body);
                $body=str_replace('%%EMAIL%%', $row->{email}, $body);
                $body=str_replace('%%ADDRESS_LINE_ONE%%',$row->{address_line_one}, $body);
                $body=str_replace('%%ADDRESS_LINE_TWO%%',$row->{address_line_two}, $body);
                $body=str_replace('%%COUNTY%%',$row->{county}, $body);
                $body=str_replace('%%CITY%%',$row->{city}, $body);
                $body=str_replace('%%POSTCODE%%',$row->{post_code}, $body);
                $body=str_replace('%%HOMEPHONE%%',$row->{landline_number}, $body);
                $body=str_replace('%%MOBILEPHONE%%',$row->{mobile_number}, $body);
                $body=str_replace($row->{country}.'"%%SELECTED%%', $row->{country}.'" selected', $body);
                $body = str_replace('%%FORENAMES%%', $row->{forename}, $body);
            }
            $body = str_replace('%%SELECTED%%', '', $body);
            $body = str_replace('%%ERROR%%', '', $body);
        }
        else
        {
            if(!param(forenames) || param(forenames) =~ /[^[:space:]a-zA-Z]{1,}/)
            {
                $errors .= "<li>Please enter a valid forname.</li>";
            }
            if(!param(surname) || param(surname) =~ /[^[:space:]a-zA-Z]{1,}/)
            {
                $errors .= "<li>Please enter a valid surname.</li>";
            }
            if(!param(email) || param(email) =~ /[^a-z0-9A-Z@._-]{1,}/)
            {
                $errors .= "<li>Please enter a valid email address.</li>";
            }
            if(!param(address_line_one) || param(address_line_one) =~ /[:space:][^0-9][^a-z][^A-Z]{1,}/)
            {
                $errors .= "<li>Please enter a valid address.</li>";
            }
            if(!param(city) || param(city) =~ /[:space:][^a-z][^A-Z]{1,}/)
            {
                $errors .= "<li>Please enter a valid city.</li>";
            }
            if(!param(county) || param(county) =~ /[:space:][^a-z][^A-Z]{1,}/)
            {
                $errors .= "<li>Please enter a valid county.</li>";
            }
            if(!param(country) || param(country) eq "select")
            {
                $errors .= "<li>Please select a country.</li>";
            }
            if(!param(postcode) || param(postcode) =~ /[:space:][^a-z][^A-Z]{1,}/)
            {
                $errors .= "<li>Please enter a valid postcode.</li>";
            }
            if(!param(homephone) || param(homephone) =~ /[^0-9]{1,}/)
            {
                $errors .= "<li>Please enter a valid home phone number.</li>";
            }
            if(!param(mobilephone) || param(mobilephone) =~ /[^0-9]{1,}/)
            {
                $errors .= "<li>Please enter a valid mobile phone number.</li>";
            }

            if($errors)
            {
                $body = str_replace('%%ERROR%%', '<b>Please correct the followering:</b><ul>'.$errors.'</ul>', $body);
            }
            else
            {
                $query = "UPDATE users SET forename = '".param(forenames)."' WHERE user_id = '".$cookie[0]."'";
                mysql_query($query);

                $query = "UPDATE users SET surname = '".param(surname)."' WHERE user_id = '".$cookie[0]."'";
                mysql_query($query);

                $query = "UPDATE users SET address_line_one = '".param(address_line_one)."' WHERE user_id = '".$cookie[0]."'";
                mysql_query($query);

                $query = "UPDATE users SET address_line_two = '".param(address_line_two)."' WHERE user_id = '".$cookie[0]."'";
                mysql_query($query);

                $query = "UPDATE users SET city = '".param(city)."' WHERE user_id = '".$cookie[0]."'";
                mysql_query($query);

                $query = "UPDATE users SET county = '".param(county)."' WHERE user_id = '".$cookie[0]."'";
                mysql_query($query);

                $query = "UPDATE users SET country = '".param(country)."' WHERE user_id = '".$cookie[0]."'";
                mysql_query($query);

                $query = "UPDATE users SET post_code = '".param(postcode)."' WHERE user_id = '".$cookie[0]."'";
                mysql_query($query);

                $query = "UPDATE users SET landline_number = '".param(homephone)."' WHERE user_id = '".$cookie[0]."'";
                mysql_query($query);

                $query = "UPDATE users SET mobile_number = '".param(mobilephone)."' WHERE user_id = '".$cookie[0]."'";
                mysql_query($query);

                $query = "UPDATE users SET email = '".param(email)."' WHERE user_id = '".$cookie[0]."'";
                mysql_query($query);

                #The cookie information may now be invalid so we need to update it
                $query = "SELECT * FROM users WHERE user_id= '".$cookie[0]."';"; 
                $result = mysql_query($query);

                while($row = $result->fetchrow_hashref)
                {
                    $newcookie = cookie(-name => "webair",
                    -value => $row->{user_id}.'-'.$row->{email}.'-'.$cookie[2],
                    -expires => "+20m",
                    );
                    $setcookie = 'true';
                }
                    $body = str_replace('%%ERROR%%', 'Your new information has been saved.', $body);
            }    
        }
    }
    if(param(req)eq'card')
    {
        $body= load_template("manage/card_form");
        if(!param(cardtype))
        {
            $query = "SELECT * FROM users WHERE user_id= '".$cookie[0]."';"; 
            $result = mysql_query($query);

            while($row = $result->fetchrow_hashref)
            {
                $body= str_replace ('%%NAMR%%', $row->{name_on_the_card}, $body);
                $body=str_replace('%%NUMBER%%', $row->{card_number}, $body);
                $body=str_replace($row->{card_type}.'"%%CSELECTED%%', $row->{card_type}.'" selected', $body);
                @date = split '-', $row->{expire_date};
                $body=str_replace($date[0].'"%%YSELECTED%%', $date[0].'" selected', $body);
                $body=str_replace($date[1].'"%%MSELECTED%%', $date[1].'" selected', $body);
            }
            $body = str_replace('%%CSELECTED%%', '', $body);
            $body = str_replace('%%YSELECTED%%', '', $body);
            $body = str_replace('%%MSELECTED%%', '', $body);
            $body = str_replace('%%ERROR%%', '', $body);
        }
        else
        {
            if(!param(number) || param(number) =~ /[:space:][0-9]/)
            {
                $errors .= "<li>Please enter a valid card number.</li>";
            }
            if(!param(namr) || param(namr) =~ /[:space:]-[^a-z][^A-Z]/)
            {
                $errors .= "<li>Please enter your name as it appears on the card.</li>";
            }
            if(param(cardtype) eq "select")
            {
                $errors .= "<li>Please select a card type.</li>";
            }
            if(param(expire_month) eq "--")
            {
                $errors .= "<li>Please select the month your card expires.</li>";
            }
            if(param(expire_year) eq "----")
            {
                $errors .= "<li>Please select the year your card expires.</li>";
            }

            if($errors)
            {
                $body = str_replace('%%ERROR%%', '<b>Please correct the followering:</b><ul>'.$errors.'</ul>', $body);
            }
            else
            {
                $query = "UPDATE users SET card_number = '".param(number)."' WHERE user_id = '".$cookie[0]."'";
                mysql_query($query);

                $query = "UPDATE users SET name_on_the_card = '".param(namr)."' WHERE user_id = '".$cookie[0]."'";
                mysql_query($query);

                $query = "UPDATE users SET card_type = '".param(cardtype)."' WHERE user_id = '".$cookie[0]."'";
                mysql_query($query);

                $query = "UPDATE users SET expire_date = '".param(expire_year)."-".param(expire_month)."' WHERE user_id = '".$cookie[0]."'";
                mysql_query($query);

                $body = str_replace('%%ERROR%%', 'Your new information has been saved.', $body);
            }    
        }
    }
    if(param(req)eq'password')
    {
        $body= load_template("manage/password_form");
        if(!param(btn))
        {
            $body = str_replace('%%ERROR%%', '', $body);
        }
        else
        {
            if(!param(password) || !param(repassword))
            {
                $errors .= "<li>Please enter and re-enter your password.</li>";
            }
            if(param(password) ne param(repassword))
            {
                $errors .= "<li>Please make sure that your passwords match.</li>";
            }
            if($errors)
            {
                $body = str_replace('%%ERROR%%', '<b>Please correct the followering:</b><ul>'.$errors.'</ul>', $body);
            }
            else
            {
                $password = crypt(param(password), 'salt');

                $query = "UPDATE users SET password = '".$password."' WHERE user_id = '".$cookie[0]."'";
                mysql_query($query);

                $newcookie = cookie(-name => "webair",
                -value => $cookie[0].'-'.$cookie[1].'-'.param(password),
                -expires => "+20m",
                );
                $setcookie = 'true';

                $body = str_replace('%%ERROR%%', 'Your new information has been saved.', $body);
            }    
        }
    }
}
foreach $value (@parameters)
{
    if($value ne "country")
    {
        $body = str_replace('%%'.uc($value).'%%', param($value), $body);
    }
    else
    {
        $body = str_replace(param(country).'"%%SELECTED%%', param(country).'" selected', $body);
    }
}
$body = str_replace(param(cardtype).'"%%CSELECTED%%', param(cardtype).'" selected', $body);
$body = str_replace(param(expire_year).'"%%YSELECTED%%', param(expire_year).'" selected', $body);
$body = str_replace(param(expire_month).'"%%MSELECTED%%', param(expire_month).'" selected', $body);

$body = str_replace('%%CSELECTED%%', '', $body);
$body = str_replace('%%YSELECTED%%', '', $body);
$body = str_replace('%%MSELECTED%%', '', $body);
$body = str_replace('%%SELECTED%%', '', $body);

if($setcookie eq 'true')
{
    #Reload the page now the cookie has been set
    print header(-cookie=>$newcookie);
    $header = 'true';
}

if($header ne 'true')
{
    print header;
}
$head = load_template("head");
$head = str_replace('%%BODY%%', '', $head);
print $head;
print $body;
print load_template("foot");

mysql_disconnect();