<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;
use DB;
use DateTime;
use DateInterval;
use DatePeriod;
use App\Models\CronLog;
use Maatwebsite;
use App\Feedback;
use App\FtpDetails;
use App\FtpFilesDetails;
use App\Organization;
use Auth;
use App\User;
use App\Branch;
use App\EmailTemplate;
use App\EmailQueue;
use App\Manager;
use App\SycleFilesDetails;

class TransferCsvFiles extends Command
{
    protected $signature = 'transfer:files';
    protected $description = 'Transfer CSV Files';

    //Path constants

    /**
     * Execute the command.
     *
     * @return void
     */
    public function handle()
    {
        $dir = env('SYCLE_CSV_PATH');

        // Sort in descending order
        $files = scandir($dir,1);

        if(!empty($files)) {
            foreach ($files as $key => $value) {
                $file = $dir.$value;
                if(is_file($file)) {
                    $path_parts = pathinfo($file);
                    if( $path_parts['extension'] == 'csv' || $path_parts['extension'] == 'xlsx' ) {
                        //Insert into new tbl
                        $this->saveFiles($path_parts);
                        $this->moveFile($path_parts);

                    }
                } 
            }
        } else {
            echo "\n  No files found. \n";
        }
        
        $this->updateCronLog();
    }

    public function updateCronLog()
    {
        $date = date('Y-m-d H:i:s'); 
        DB::table('cron_log')->where('name', $this->signature)->update(['cron_at' => $date]);
    }

    public function saveFiles($fileInfo)
    {
        $filesModel = new SycleFilesDetails();
        $filesModel->filename = $fileInfo['basename'];
        $filesModel->filepath = $fileInfo['dirname'];
        $filesModel->sync_status = 'Pending';
        $filesModel->save();
    }

    public function moveFile($fileInfo)
    {
        $environment = app()->environment();
        $file = env('SYCLE_CSV_PATH') .$fileInfo['basename'];
        $dest = env('SYCLE_CSV_MOVED_PATH') .$fileInfo['basename'];
        rename($file, $dest);
        echo "\n  File: ".$fileInfo['basename']. " has been transferred .. \n";
    }
}
