<?php

/**
 * Pimcore Global service
 *
 * This source file is available under two different licenses:
 * - GNU General Public License version 3 (GPLv3)
 * - Pimcore Enterprise License (PEL)
 * Full copyright and license information is available in
 * LICENSE.md which is distributed with this source code.
 * @category   Pimcore Global service
 * @package    AppBundle\Model
 *
 * @copyright  Copyright (c) Pimcore Global service
 */

namespace DataImportBundle\Model;

use Pimcore\Model\DataObject\Product;
use DataImportBundle\Service\ImportHelperService;
use DataImportBundle\Service\GoogleCloudStorageService;
use Google\Cloud\Core\Timestamp;

class ImageImport {

    public function importImages() {
        try {
            $folderName = IMAGE_SOURCE_PATH_IN_GCS;

            /*$importHelper = new ImportHelperService();
            echo("Downloading....\n");

            $filesDownloaded = $importHelper->downloadFolder($folderName); //download the folder to local

            if ($filesDownloaded == FALSE) {
                return false;
	    }*/
            //$folderPath = PIMCORE_WEB_ROOT . IMAGE_DOWNLOAD_PATH_IN_LOCAL . '/*';
            $folderPath = '/stage-efs/storage/web-var/Picture/';
            $images = glob($folderPath);

            echo("Download Completed\n");
	    echo("Procesing....\n");

            $logFileName = IMAGE_DOWNLOAD_PATH_IN_LOCAL . date('Ymd') . ".csv";
            $logFilePath = PIMCORE_WEB_ROOT . LOG_FILE_PATH;

            $logFile = fopen($logFilePath . "/" . $logFileName, 'w');
            chmod($logFilePath . "/" . $logFileName, LOG_FILE_PERMISSION);

            fputcsv($logFile, array(FILENAME, ASSET_CREATION, PRODUCT_LINKING));


            foreach ($images as $filename) {
                if (is_file($filename)) {
                    $baseName = basename($filename);
                    $baseName = explode('_', $baseName);
                    $productName = $baseName[1];
                    $imageAttribute = explode('.', $baseName[2]);
                    $imageAttribute = $imageAttribute[0];
                    $getImageAttributeConstant = IMAGES_ATTRIBUTE[$imageAttribute];
                }
                $assetObject = Utility::saveAsset($filename);
                if (!empty($assetObject)) {
                    try {
                        $productObject = new Product();
                        $productObject = $productObject::getByUPCWithOutChkDigit($productName, 1);
                        if (!empty($productObject)) {
                            $setterFunc = 'set' . $getImageAttributeConstant;
                            $productObject->$setterFunc($assetObject);
                            $productObject->save();
                            fputcsv($logFile, array(basename($filename), "Success", "Success"));
                        } else {
                            fputcsv($logFile, array(basename($filename), "Success", "Failed"));
                        }
                    } catch (\Exception $ex) {
                        echo $ex->getMessage();
                        fputcsv($logFile, array(basename($filename), "Success", "Failed"));
                    }
                } else {
                    fputcsv($logFile, array(basename($filename), "Failed", "Failed"));
                }
            }
            echo ("Processed\n");
            echo("Uploading Logs....\n");

            $logFileName = ltrim($logFileName, '/');
            //$importHelper->handleImageImportResult($folderName, $logFilePath, $logFileName);

            echo("Import Completed\n");
        } catch (\Exception $ex) {
            echo $ex->getMessage();
        }
    }

}
