/**
 * Add shop product action by Ajax
 */
function addShopProduct()
{
    $userID = buckys_is_logged_in();
    if (!$userID) {
        return;
    }
    $inputValidFlag = true;
    $requiredFields = ['title', 'subtitle', 'description', 'category', 'return_policy', 'shipping_price', 'price'];
    if ($_REQUEST['return_policy'] == '') {
        $_REQUEST['return_policy'] = 'None';
    }
    foreach ($requiredFields as $requiredField) {
        if ($_REQUEST[$requiredField] == '') {
            $inputValidFlag = false;
        }
    }
    $categoryClass = new BuckysShopCategory();
    $category = $categoryClass->getCategoryByID($_REQUEST['category']);
    if (!$category['isDownloadable'] && $_REQUEST['location'] == '') {
        $inputValidFlag = false;
    } else {
        if ($category['isDownloadable'] == 1) {
            $_REQUEST['location'] = 0;
        }
    }
    if (isset($_REQUEST['price']) && (!is_numeric($_REQUEST['price']) || $_REQUEST['price'] <= 0)) {
        $inputValidFlag = false;
    }
    $shippingPriceList = [];
    if (isset($_REQUEST['shipping_price'])) {
        $shippingPriceList = json_decode($_REQUEST['shipping_price'], true);
        if (!is_array($shippingPriceList) || count($shippingPriceList) < 1) {
            $inputValidFlag = false;
        }
    }
    $listingFeeType = get_secure_integer($_REQUEST['listing_fee_type']);
    if ($listingFeeType === null) {
        $inputValidFlag = false;
    }
    if ($inputValidFlag && $userID !== false) {
        $shopProductIns = new BuckysShopProduct();
        $data['userID'] = $userID;
        $data['title'] = get_secure_string($_REQUEST['title']);
        $data['subtitle'] = get_secure_string($_REQUEST['subtitle']);
        $data['description'] = get_secure_string($_REQUEST['description']);
        $data['catID'] = get_secure_string($_REQUEST['category']);
        $data['images'] = get_secure_string($_REQUEST['images']);
        $data['locationID'] = buckys_escape_query_integer($_REQUEST['location']);
        $data['returnPolicy'] = get_secure_string($_REQUEST['return_policy']);
        $data['price'] = get_secure_string($_REQUEST['price']);
        $data['listingDuration'] = get_secure_string($_REQUEST['listing_duration']);
        $data['expiryDate'] = $data['listingDuration'] == -1 ? '0000-00-00 00:00:00' : date('Y-m-d H:i:s', time() + 3600 * 24 * $data['listingDuration']);
        $data['createdDate'] = date('Y-m-d H:i:s');
        $data['images'] = moveShopTmpImages($data['images']);
        if ($category['isDownloadable'] == 1) {
            if (!$_REQUEST['filename'] || file_exists(DIR_FS_SHOP_IMG_TMP . $_REQUEST['filename'])) {
                echo json_encode(['success' => 0, 'msg' => 'Please select a zip file.']);
                exit;
            }
            $data['isDownloadable'] = 1;
            $filename = moveShopTmpProduct($_REQUEST['filename']);
            $data['fileName'] = $filename;
        }
        if ($data['images'] === false) {
            echo json_encode(['success' => 0, 'msg' => 'Something goes wrong, please contact administrator.']);
            exit;
        }
        if ($newProductID = $shopProductIns->addProduct($data, $listingFeeType)) {
            $shopProductIns->addShippingPrice($newProductID, $shippingPriceList);
            echo json_encode(['success' => 1, 'msg' => 'Your item has been added successfully.']);
        } else {
            echo json_encode(['success' => 0, 'msg' => 'You do not have enough credits for that.']);
        }
    } else {
        //error
        echo json_encode(['success' => 0, 'msg' => 'Please input required field(s).']);
    }
}