<?php

if(empty($errorMsg) && isset($_REQUEST['dateTimeFrom']) && !empty($_REQUEST['dateTimeFrom']) && isset($_REQUEST['dateTimeTo']) && !empty($_REQUEST['dateTimeTo']))

{

    $startDate = date("Y-m-d H:i:s", strtotime($_REQUEST['dateTimeFrom']));

    $endDate = date("Y-m-d H:i:s", strtotime($_REQUEST['dateTimeTo']));

    $maxEndDate = date("Y-m-d H:i:s", strtotime($startDate . " +7 days"));

    if($endDate > $maxEndDate)

    {

        $endDate = $maxEndDate;

    }

    

    if ($result = $mysqli->query("SELECT Booking.Id, Booking.UserId, Booking.QuotationId, Booking.Quantity, 

    Booking.Packaging, Booking.Description, Booking.UniqueConsignmentReference, Booking.Marks, Booking.Hazardous, 

    Booking.Vessel, Booking.CollectionDetails, Booking.SpecialInstructions, 

    Booking.Make, Booking.Model, Booking.Year, Booking.Runner, Booking.CreatedDateTime,

    User.Name, User.UserLevelId, UserLevel.Name AS UserLevelName, User.Reference, User.Email,

    User.CompanyName, User.JobTitle, User.PhoneNumber, User.PostTown, User.PostCode, User.CountryId, Country.Name AS CountryName, 

    User.Activated, User.LoginDateTime, User.Disabled, User.CreatedDateTime,

    Quotation.Reference AS QuotationReference, Quotation.FreightTypeId, FreightType.Name AS FreightTypeName,

    Quotation.Weight, Quotation.Volume, Quotation.MarineInsurance, 

    Quotation.Valuation, Quotation.ShippingDate, Quotation.OriginCountryId, Quotation.OriginId, Quotation.OriginHaulageLocationId, 

    Quotation.DestinationCountryId, Quotation.DestinationId, Quotation.DestinationHaulageLocationId, Quotation.CurrencyId, 

    Quotation.TotalCharge, Quotation.ExpiryDate, Quotation.BeatThisDateTime, Quotation.CreatedDateTime AS QuotationCreatedDateTime,

    OriginCountry.Name AS OriginCountryName, DestinationCountry.Name AS DestinationCountryName, 

    OriginCountry.Code AS OriginCountryCode, DestinationCountry.Code AS DestinationCountryCode, 

    Origin.Name AS OriginName, Origin.LocationCode AS OriginLocationCode, Destination.Name AS DestinationName, Destination.LocationCode AS DestinationLocationCode, 

    OriginHaulageLocation.Name AS OriginHaulageLocationName, DestinationHaulageLocation.Name AS DestinationHaulageLocationName, 

    OriginHaulageLocation.Code AS OriginHaulageLocationCode, DestinationHaulageLocation.Code AS DestinationHaulageLocationCode, 

    Currency.Name AS CurrencyName, Currency.Code AS CurrencyCode, Email.Content

    FROM Booking

    INNER JOIN User ON User.Id = Booking.UserId

    INNER JOIN UserLevel ON UserLevel.Id = User.UserLevelId

    INNER JOIN Country ON Country.Id = User.CountryId

    INNER JOIN Quotation ON Quotation.Id = Booking.QuotationId

    INNER JOIN FreightType ON FreightType.Id = Quotation.FreightTypeId

    INNER JOIN Country AS OriginCountry ON OriginCountry.Id = Quotation.OriginCountryId

    INNER JOIN Country AS DestinationCountry ON DestinationCountry.Id = Quotation.DestinationCountryId

    INNER JOIN Currency ON Currency.Id = Quotation.CurrencyId

    LEFT OUTER JOIN Origin ON Origin.Id = Quotation.OriginId

    LEFT OUTER JOIN HaulageLocation AS OriginHaulageLocation ON OriginHaulageLocation.Id = Quotation.OriginHaulageLocationId

    LEFT OUTER JOIN Destination ON Destination.Id = Quotation.DestinationId

    LEFT OUTER JOIN HaulageLocation AS DestinationHaulageLocation ON DestinationHaulageLocation.Id = Quotation.DestinationHaulageLocationId

    LEFT OUTER JOIN Email ON Email.QuotationId = Booking.QuotationId

    WHERE User.WebsiteId = '" . $websiteId . "' AND Booking.CreatedDateTime >= '" . $startDate . "' AND Booking.CreatedDateTime < '" . $endDate . "';"))

    {

        if($result->num_rows == 0)

        {

            $errorMsg[] = 'No bookings have been found';

        }

        else

        {

            $xmlContent = $xml->addChild('Bookings');

	        while ($row = $result->fetch_object())

	        {

                $xmlBooking = $xmlContent->addChild('Booking');

	            $xmlBooking->addChild('Id', intval($row->Id));

                $xmlUser = $xmlBooking->addChild('User');

	            $xmlUser->addChild('Id', intval($row->UserId));

	            $xmlUser->addChild('Name', encodeString($row->Name));

                $xmlUserLevel = $xmlUser->addChild('UserLevel');

	            $xmlUserLevel->addChild('Id', encodeString($row->UserLevelId));

	            $xmlUserLevel->addChild('Name', encodeString($row->UserLevelName));

	            $xmlUser->addChild('Reference', encodeString($row->Reference));

	            $xmlUser->addChild('Email', encodeString($row->Email));

	            $xmlUser->addChild('CompanyName', encodeString($row->CompanyName));

	            $xmlUser->addChild('JobTitle', encodeString($row->JobTitle));

	            $xmlUser->addChild('PhoneNumber', encodeString($row->PhoneNumber));

	            $xmlUser->addChild('PostTown', encodeString($row->PostTown));

	            $xmlUser->addChild('PostCode', encodeString($row->PostCode));

                $xmlCountry = $xmlUser->addChild('Country');

	            $xmlCountry->addChild('Id', encodeString($row->CountryId));

	            $xmlCountry->addChild('Name', encodeString($row->CountryName));

	            $xmlUser->addChild('Activated', intval($row->Activated));

	            $xmlUser->addChild('LoginDateTime', $row->LoginDateTime);

	            $xmlUser->addChild('Disabled', intval($row->Disabled));

	            $xmlUser->addChild('CreatedDateTime', $row->CreatedDateTime);

                $xmlQuotation = $xmlBooking->addChild('Quotation');

                if(!empty($row->QuotationId))

                {

	                $xmlQuotation->addChild('Id', intval($row->QuotationId));

	                $xmlQuotation->addChild('Reference', encodeString($row->QuotationReference));

                    $xmlFreightType = $xmlQuotation->addChild('FreightType');

                    if(!empty($row->FreightTypeId))

                    {

	                    $xmlFreightType->addChild('Id', intval($row->FreightTypeId));

	                    $xmlFreightType->addChild('Name', encodeString($row->FreightTypeName));

                    }

	                $xmlQuotation->addChild('Weight', encodeString($row->Weight));

	                $xmlQuotation->addChild('Volume', encodeString($row->Volume));

	                $xmlQuotation->addChild('MarineInsurance', intval($row->MarineInsurance));

	                $xmlQuotation->addChild('Valuation', encodeString($row->Valuation));

	                $xmlQuotation->addChild('ShippingDate', encodeString($row->ShippingDate));

                    $xmlOriginCountry = $xmlQuotation->addChild('OriginCountry');

	                $xmlOriginCountry->addChild('Id', $row->OriginCountryId);

	                $xmlOriginCountry->addChild('Code', encodeString($row->OriginCountryCode));

	                $xmlOriginCountry->addChild('Name', encodeString($row->OriginCountryName));

                    $xmlOrigin = $xmlQuotation->addChild('Origin');

	                $xmlOrigin->addChild('Id', $row->OriginId);

	                $xmlOrigin->addChild('Code', encodeString($row->OriginLocationCode));

	                $xmlOrigin->addChild('Name', encodeString($row->OriginName));

                    $xmlOriginHaulageLocation = $xmlQuotation->addChild('OriginHaulageLocation');

                    if(!empty($row->OriginHaulageLocationId))

                    {

	                    $xmlOriginHaulageLocation->addChild('Id', $row->OriginHaulageLocationId);

	                    $xmlOriginHaulageLocation->addChild('Code', encodeString($row->OriginHaulageLocationCode));

	                    $xmlOriginHaulageLocation->addChild('Name', encodeString($row->OriginHaulageLocationName));

                    }

                    $xmlDestinationCountry = $xmlQuotation->addChild('DestinationCountry');

	                $xmlDestinationCountry->addChild('Id', $row->DestinationCountryId);

	                $xmlDestinationCountry->addChild('Code', encodeString($row->DestinationCountryCode));

	                $xmlDestinationCountry->addChild('Name', encodeString($row->DestinationCountryName));

                    $xmlDestination = $xmlQuotation->addChild('Destination');

	                $xmlDestination->addChild('Id', $row->DestinationId);

	                $xmlDestination->addChild('Code', encodeString($row->DestinationLocationCode));

	                $xmlDestination->addChild('Name', encodeString($row->DestinationName));

                    $xmlDestinationHaulageLocation = $xmlQuotation->addChild('DestinationHaulageLocation');

                    if(!empty($row->DestinationHaulageLocationId))

                    {

	                    $xmlDestinationHaulageLocation->addChild('Id', $row->DestinationHaulageLocationId);

	                    $xmlDestinationHaulageLocation->addChild('Code', encodeString($row->DestinationHaulageLocationCode));

	                    $xmlDestinationHaulageLocation->addChild('Name', encodeString($row->DestinationHaulageLocationName));

                    }

                    $xmlCurrency = $xmlQuotation->addChild('Currency');

	                $xmlCurrency->addChild('Id', intval($row->CurrencyId));

	                $xmlCurrency->addChild('Code', encodeString($row->CurrencyCode));

	                $xmlCurrency->addChild('Name', encodeString($row->CurrencyName));

	                $xmlQuotation->addChild('TotalCharge', encodeString($row->TotalCharge));

	                $xmlQuotation->addChild('ExpiryDate', $row->ExpiryDate);

	                $xmlQuotation->addChild('BeatThisDateTime', $row->BeatThisDateTime);

	                $xmlQuotation->addChild('EmailContent', '');

                    if(!empty($row->Content))

                    {

	                    $xmlQuotation->EmailContent->addCData($row->Content);

                    }

	                $xmlQuotation->addChild('CreatedDateTime', $row->QuotationCreatedDateTime);

	            }

                $xmlBooking->addChild('Quantity', encodeString($row->Quantity));

	            $xmlBooking->addChild('Packaging', encodeString($row->Packaging));

	            $xmlBooking->addChild('Description', encodeString($row->Description));

	            $xmlBooking->addChild('UniqueConsignmentReference', encodeString($row->UniqueConsignmentReference));

	            $xmlBooking->addChild('Marks', encodeString($row->Marks));

	            $xmlBooking->addChild('Hazardous', intval($row->Hazardous));

	            $xmlBooking->addChild('Vessel', encodeString($row->Vessel));

	            $xmlBooking->addChild('CollectionDetails', encodeString($row->CollectionDetails));

	            $xmlBooking->addChild('SpecialInstructions', encodeString($row->SpecialInstructions));

	            $xmlBooking->addChild('Make', encodeString($row->Make));

	            $xmlBooking->addChild('Model', encodeString($row->Model));

	            $xmlBooking->addChild('Year', encodeString($row->Year));

	            $xmlBooking->addChild('Runner', intval($row->Runner));

	            $xmlBooking->addChild('CreatedDateTime', $row->CreatedDateTime);

	        }

        }

    }

    else

    {

	    print $mysqli->error;

	    exit;

    }

    $result->close();

}

else

{

    $errorMsg[] = 'No date time parameters were sent';

}

?>