Duffer Derek

Current Path : /var/www/podiomigration.bitkit.dk/httpdocs/src/classes/Repository/Copy/
Upload File :
Current File : /var/www/podiomigration.bitkit.dk/httpdocs/src/classes/Repository/Copy/CopyRepo.php

<?php

namespace App\Repository\Copy;


use App\Repository\General\Async;
use App\Repository\General\PodioConfig;
use App\Repository\General\DB;
use App\Repository\General\Log;
use App\Repository\Transfer\TransferRepo;
use App\Repository\Utils\CustomPodioAPI;
use App\Repository\Utils\PodioAuthRepo;
use App\Repository\Utils\TestRepo;
use Monolog\Handler\Curl\Util;
use PDO;
use Podio;
use PodioApp;
use PodioAppField;
use PodioFile;
use PodioSpaceMember;
use PodioUser;
use PodioUserStatus;

/**
 * Created by PhpStorm.
 * User: jis
 * Date: 29/3/17
 * Time: 12:17 PM
 */
class CopyRepo
{
    private $customPodioAPI;
    /**
     * WorkSpaceRepo constructor.
     */
    public function __construct()
    {
        $this->customPodioAPI = new CustomPodioAPI();
    }

    public function copyAsyncProcess($type, $param)
    {
        Log::log("copyAsyncProcess " . $type, $param);
        echo "<pre>";
        switch ($type) {
            case 'test-auth':
                $repo = new PodioAuthRepo();
                if ($repo->authenticateSF(2)) {
                    echo "Here";
                } else {
                    echo "FAILED";
                }
                exit;
                break;
            case "start-transfer":
                $this->startTransferProcess($param);
                break;
            case "process-first-space":
                if (isset($param['identifier'])) {
                    $repo = new WorkSpaceCopyRepo();
                    $repo->processFirstSpace($param['identifier']);
                } else {
                    Log::log("asyncProcess identifier is missing " . $type, $param, "warning");
                }
                break;

            case "process-first-app-in-the-space":
                if (isset($param['identifier']) && isset($param['space'])) {
                    $repo = new AppCopyRepo();
                    $repo->processFirstAppInTheSpace($param['identifier'], $param['space']);
                } else {
                    Log::log("asyncProcess identifier is missing " . $type, $param, "warning");
                }
                break;
            case "save-items-comments-files-tasks":
                // if (isset($param['identifier']) && isset($param['app'])) {
                if (isset($param['identifier'])) {
                    $repo = new ItemCopyRepo();
                    // $repo->saveItemsCommentsFilesTasks($param['identifier'], $param['app']);
                    $repo->saveItemsCommentsFilesTasks($param['identifier']);
                } else {
                    Log::log("asyncProcess identifier is missing " . $type, $param, "warning");
                }
                break;

            case "save-missing-items-comments-files-tasks":
                if (isset($param['identifier'])) {
                    $repo = new ItemCopyRepo();
                    //   $repo->saveItemsCommentsFilesTasks($param['identifier'], $param['appId']);
                    $repo->saveItemsCommentsFilesTasks($param['identifier']);
                } else {
                    Log::log("asyncProcess identifier is missing " . $type, $param, "warning");
                }
                break;

            case "save-first-space-app-tasks":
                if (isset($param['identifier'])) {
                    $repo = new TasksCopyRepo();
                    $repo->saveSpaceAppTasks($param['identifier']);
                }
                break;

            case "save-stream-status":
                if (isset($param['identifier'])) {
                    $repo = new StreamCopyRepo();
                    $repo->saveSpaceStreamStatusMessages($param['identifier']);
                }
                break;

            case "save-tasks-files-comments":
                if (isset($param['identifier'])) {
                    $repo = new TasksCopyRepo();
                    $repo->saveTasksCommentsAndFiles($param['identifier']);
                }
                break;

            case "copy-space-files":
                if (isset($param['identifier'])) {
                    $repo = new WorkSpaceCopyRepo();
                    $repo->copySpaceFiles($param['identifier']);
                }
                break;

            //FINISHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH

            case "save-app-item-id":
                if (isset($param['identifier'])) {
                    $repo = new AppCopyRepo();
                    $repo->saveAppItemId($param['identifier']);
                }
                break;

            case "delta-copy-items":
                if (isset($param['identifier'])) {
                    $repo = new AppCopyRepo();
                    $repo->deltaCopy($param['identifier']);
                }
                break;

            case "delta-save-tasks-files-comments":
                if (isset($param['identifier'])) {
                    $repo = new ItemCopyRepo();
                    $repo->saveItemsCommentsFilesTasksDelta($param['identifier']);
                }
                break;

            case "save-comments":
                $repo = new ItemCopyRepo();
                $repo->saveItemComments();
                break;

            case "replace-comments":
                $repo = new ItemCopyRepo();
                $repo->ReplaceItemCommentsToOne();
                break;

            case "save-archived-apps":
                if (isset($param['identifier'])) {
                    $repo = new WorkSpaceCopyRepo();
                    $repo->saveArchivedApps($param['identifier']);
                }
                break;

            case "process-first-app":
                if (isset($param['identifier'])) {
                    $repo = new AppCopyRepo();
                    $repo->processFirstApp($param['identifier']);
                }
                break;
            case "copy-contact-app":
                if (isset($param['identifier'])) {
                    $repo = new WorkSpaceCopyRepo();
                    $repo->saveContactApp($param['identifier']);
                }
                break;
            case "save-contacts":
                if (isset($param['identifier'])) {
                    $repo = new PodioAuthRepo();
                    if ($repo->authenticate(43)) {
                        $repo = new WorkSpaceCopyRepo();
                        $sql = "select * from `work_spaces`";
                        $STH = DB::prepare($sql);
                        $STH->execute();
                        $result = $STH->fetchAll(PDO::FETCH_ASSOC);
                        foreach ($result as $space) {
                            $repo->saveSpaceContacts($space['src_space_id']);
                        }
                    } else {
                        Log::log("asyncProcess identifier is missing " . $type, $param, "warning");
                    }
                }
                break;
            case "db-edit":
                $this->editDB();
                break;
            case "db-save":
                $repo = new FileCopyRepo();
                $repo->saveToDB(1);
                break;
        }
    }

    private function editDB()
    {
        $repo = new PodioAuthRepo();
        if ($repo->authenticate(9)) {
            $sql = "select src_task_id from tasks";
            $STH = DB::prepare($sql);
            $STH->execute();
            $result = $STH->fetchAll(PDO::FETCH_ASSOC);
            $test = array();
            if ($result && count($result) > 0) {
                foreach ($result as $task) {
                    $taskId = $task['src_task_id'];

                    $task = Podio::get("/task/$taskId")->json_body();

                    if (isset($task['status']) && $task['status'] == "completed") {
                        // print_r($task);
                        $parameters = array(
                            "completed_by_user" => $task['completed_by']['user_id'],
                            "completed_by_name" => $task['completed_by']['name'],
                            "completed_on" => $task['completed_on'],
                            "src_task_id" => $taskId,
                        );
                        // print_r($parameters);
                        array_push($test, $task['task_id']);
                        $sql3 = "UPDATE tasks SET completed_by_user=:completed_by_user,completed_by_name=:completed_by_name,completed_on=:completed_on WHERE src_task_id=:src_task_id";
                        $STH3 = DB::prepare($sql3);
                        $STH3->execute($parameters);
                    }
                }
                echo 'Total completed tasks : ' . count($test) . '<br>';
                echo '<pre>';
                print_r($test);
                //                exit;
            }
        } else {
            echo "fail";
        }
    }

    private
    function startTransferProcess($param)
    {
        Log::log("TransferProcess started ", $param, "info");
        try {
            if (isset($param['user'])) {
                $repo = new TransferRepo();
                if (!$repo->isProcessRunning($param['user'])) {
                    $userID = $param['user']; //$userID = 4560696;

                    //WS Id's array
                    $WSArray = array(7740345, 6617918, 1786246, 6306307);

                    $id = $this->saveProcess($userID, json_encode($WSArray), 1);
                    $repo = new WorkSpaceCopyRepo();
                    $repo->saveAllSpaces($WSArray, $id);
                    exit;
                    //copyAsync in TransferController
                    Async::callAsync("copy-async/process-first-space?identifier=" . $id);
                }
            }
        } catch (\Exception $e) {
            Log::logError($e . "", null, "startTransferProcess");
        }
    }


    private
    function saveProcess($user, $spaces, $key)
    {

        $sql = "INSERT INTO  `transfer_process` (`user`,`start_time`,`spaces`,`key`) VALUES(:user,:start_time,:spaces,:key )";
        $STH = DB::prepare($sql);
        $STH->execute(array(
            'user' => $user,
            "start_time" => time(),
            "spaces" => $spaces,
            'key' => $key
        ));
        return 1;
    }
}

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists