require_once "../config.php";
use citibytes\CityPincodes;
use citibytes\UserProfile;
use citibytes\utils\MysqlUtils;
use citibytes\ApprovedPincodeRequests;
use citibytes\PendingPincodeRequests;
use citibytes\exceptions\QueryFailedException;
use citibytes\exceptions\DatabaseConnectionException;
$data = $_REQUEST["json"];
$data = stripslashes($data);
$data = json_decode($data, TRUE);
$email_id = $data["email_id"];
try {
    $connection = MysqlUtils::getConnection();
    //DELETE item from approved_pincode_requests
    $approved_pincode_requests = new ApprovedPincodeRequests();
    $approved_pincode_requests->delete($connection, $data);
    $success_json = array("status" => "success");
    echo json_encode($success_json);
} catch (DatabaseConnectionException $e) {
    $failure_json = array("status" => "error", "error" => "Database Unavailable");
    echo json_encode($failure_json);
    return;
} catch (QueryFailedException $e) {
    error_log(mysqli_error($connection));
    $failure_json = array("status" => "error", "error" => "Query Error");
    echo json_encode($failure_json);
    return;
}
mysqli_close($connection);
$data = $_REQUEST["json"];
$data = stripslashes($data);
$data = json_decode($data, TRUE);
$is_approved = $_REQUEST["is_approved"] == 1 ? TRUE : FALSE;
$email_id = $data["email_id"];
try {
    $connection = MysqlUtils::getConnection();
    //Get the user's profile
    $user_profile = UserProfile::getProfile($connection, $email_id);
    $personal_number = $user_profile["personal_number"];
    $data["personal_number"] = $personal_number;
    //DELETE item from pending_pincode_requests
    $pending_pincode_requests = new PendingPincodeRequests();
    $pending_pincode_requests->delete($connection, $data);
    //If approved,save it in approved_pincode_requests domain
    if ($is_approved === TRUE) {
        $approved_pincode_requests = new ApprovedPincodeRequests();
        $approved_pincode_requests->save($connection, $data);
    }
    $success_json = array("status" => "success");
    echo json_encode($success_json);
} catch (DatabaseConnectionException $e) {
    $failure_json = array("status" => "error", "error" => "Database Unavailable");
    echo json_encode($failure_json);
    return;
} catch (QueryFailedException $e) {
    error_log(mysqli_error($connection));
    $failure_json = array("status" => "error", "error" => "Query Error");
    echo json_encode($failure_json);
    return;
}
use citibytes\CityPincodes;
use citibytes\utils\MysqlUtils;
use citibytes\PendingPincodeRequests;
use citibytes\ApprovedPincodeRequests;
use citibytes\exceptions\QueryFailedException;
use citibytes\exceptions\DatabaseConnectionException;
$city = $_REQUEST["city"];
$email = $_REQUEST["email"];
if (empty($city) === TRUE || empty($email) === TRUE) {
    $error_json = array("status" => "error", "error" => "Empty Input Parameters");
    echo json_decode($error_json);
    return;
}
try {
    $connection = MysqlUtils::getConnection();
    $approved_pincode_requests = new ApprovedPincodeRequests();
    $approved_pincodes = $approved_pincode_requests->getApprovedPincodes($connection, $email, $city);
    $pending_pincode_requests = new PendingPincodeRequests();
    $unapproved_pincodes = $pending_pincode_requests->getUnApprovedPincodes($connection, $email, $city);
    $city_pincodes = new CityPincodes($city);
    $all_pincodes = $city_pincodes->getAllPincodes($connection);
    foreach ($approved_pincodes as $approved_pincode) {
        unset($all_pincodes[$approved_pincode]);
    }
    foreach ($unapproved_pincodes as $unapproved_pincode) {
        unset($all_pincodes[$unapproved_pincode]);
    }
    $count = count($all_pincodes);
    echo json_encode(array("status" => "success", "count" => $count, "pincodes" => $all_pincodes));
} catch (DatabaseConnectionException $e) {
    $failure_json = array("status" => "error", "error" => "Database Unavailable");