<?php

namespace App\Http\Controllers\Webprofile\Front;

use App\Http\Controllers\Controller;
use App\Models\Webprofile\Categories;
use App\Models\Webprofile\CategoriesFile;
use App\Models\Webprofile\Design;
use App\Models\Webprofile\File;
use App\Models\Webprofile\Menu;
use App\Models\Webprofile\Posts;
use App\Repositories\Webprofile\FileRepository;

class DownloadController extends Controller
{
    public function index()
    {
        $categoriesFile = CategoriesFile::where('is_active', 1)->orderBy('created_at', 'DESC')->with(['rFile'])->get();
        $setting = webprofilesetting();
        $menu = Menu::orderby('urutan', 'asc')->get();
        $hot = Posts::where('post_status', '1')->orderby('viewer', 'desc')->limit('5')->get();
        $categories = Categories::where('is_active', '1')->get();
        $widget_right = Design::where('name_design', 'widget_right')->orderBy('urutan', 'ASC')->get();
        $widget_left = Design::where('name_design', 'widget_left')->orderBy('urutan', 'ASC')->get();
        $footer = Design::where('name_design', 'like', '%footer_row%')->get();

        $data = [
            'categoriesFile' => $categoriesFile,
            'setting' => $setting,
            'menu' => $menu,
            'hot' => $hot,
            'categories' => $categories,
            'widget_right' => $widget_right,
            'widget_left' => $widget_left,
            'footer' => $footer,
        ];

        return view('webprofile.front.'.$setting['theme'].'.download', $data);
    }

    public function downloadFile($id)
    {
        $setting = webprofilesetting();

        $fileModel = new File();
        $fileRepo = new FileRepository($fileModel);

        $dbfile = File::find($id);

        if ($setting['external_storage'] == 1) {
            $file = $setting['url_static'].'/'.$setting['directory'].'/file/'.$dbfile->file;
        } else {
            $file = url('/storage/file/'.$dbfile->file);
        }

        $fileRepo->countDownload($dbfile);

        // if ($fileRepo->is_url_exist($file)) {
        $filename = $dbfile->slug;
         $tempImage = tempnam(sys_get_temp_dir(), $filename);
         stream_context_set_default([
                 'ssl' => [
                     'verify_peer' => false,
                     'verify_peer_name' => false,
                 ],
             ]);
         copy($file, $tempImage);


        return response()->download($tempImage, $filename)->deleteFileAfterSend(true);
        // } else {
        //     Alert::error('File tidak ditemukan');
        //     return redirect()->back();
        // }
    }
}