<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;

use Illuminate\Http\Request;
use App\Models\Media;
use Illuminate\Support\Facades\Storage;


class MediaController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $req)
    {
        abort_if(!userCan('order.view'), 403);
        $mediaEntries = Media::orderBy('created_at', 'desc')->get();
        return view('admin.media.index', compact('mediaEntries'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        abort_if(!userCan('order.view'), 403);
        return view('admin.media.create');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        abort_if(!userCan('order.view'), 403);
        $request->validate([
            'company_name' => 'required',
            'title' => 'required',
            'description' => 'required',
            'url' => 'required',
            'date' => 'required',
            'images' => 'required',
            'category' => 'required',
            'featured' => 'required',
        ]);

        $folder_desktop = 'uploads/images/media';
        // $folder_mobile = 'uploads/images/media/mobile';
        $timestamp = now()->format('YmdHis'); 


        $media = new Media();
        $media->company_name = $request->input('company_name');
        $media->title = $request->input('title');
        $media->description = $request->input('description');
        $media->url = $request->input('url');
        $media->date = $request->input('date');
        $media->category = $request->input('category');
        $media->featured = $request->input('featured');
        $media->featured = $request->input('featured');

        $file_images = $request->file('images');
        if(!empty($file_images)){
            $originalFileNameImagesDesktop = $file_images->getClientOriginalName();
            $modifiedFileNameImagesDesktop = $timestamp . '_' . $originalFileNameImagesDesktop;
            $path_images = Storage::disk('public')->putFileAs($folder_desktop, $file_images, $modifiedFileNameImagesDesktop);
            $media->images = $path_images;
        }

        // $file_image_mobile = $request->file('image_mobile');
        // if(!empty($file_image_mobile)){
        //     $originalFileNameImagesMobile = $file_image_mobile->getClientOriginalName();
        //     $modifiedFileNameImagesMobile = $timestamp . '_' . $originalFileNameImagesMobile;
        //     $path_image_mobile = Storage::disk('public')->putFileAs($folder_mobile, $file_image_mobile, $modifiedFileNameImagesMobile);
        //     $media->image_mobile = $path_image_mobile;
        // }

        $media->save();
        flashSuccess(__('media_created_successfully'));
        return redirect()->route('media.index');
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        abort_if(!userCan('order.view'), 403);
        $media = Media::where('id',$id)->first();
        return view('admin.media.edit', compact('media'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        abort_if(!userCan('order.view'), 403);
        $request->validate([
            'company_name' => 'required',
            'title' => 'required',
            'description' => 'required',
            'url' => 'required',
            'date' => 'required',
            'category' => 'required',
            'featured' => 'required',
        ]);

        $folder_desktop = 'uploads/images/media';
        // $folder_mobile = 'uploads/images/media/mobile';
        $timestamp = now()->format('YmdHis'); 
        
        $media = Media::where('id',$id)->first();
        $media->company_name = $request->input('company_name');
        $media->title = $request->input('title');
        $media->description = $request->input('description');
        $media->url = $request->input('url');
        $media->date = $request->input('date');
        $media->category = $request->input('category');
        $media->featured = $request->input('featured');
        $media->featured = $request->input('featured');
        

        $file_images = $request->file('images');
        if(!empty($file_images)){
            if ($media['images'] && Storage::disk('public')->exists($media['images'])) {
                Storage::disk('public')->delete($media['images']);
            }
            $originalFileNameImagesDesktop = $file_images->getClientOriginalName();
            $modifiedFileNameImagesDesktop = $timestamp . '_' . $originalFileNameImagesDesktop;
            $path_images = Storage::disk('public')->putFileAs($folder_desktop, $file_images, $modifiedFileNameImagesDesktop);
            $media->images = $path_images;
        }
        
        // $file_image_mobile = $request->file('image_mobile');
        // if(!empty($file_image_mobile)){
        //     if ($media['image_mobile'] && Storage::disk('public')->exists($media['image_mobile'])) {
        //         Storage::disk('public')->delete($media['image_mobile']);
        //     }
        //     $originalFileNameImagesMobile = $file_image_mobile->getClientOriginalName();
        //     $modifiedFileNameImagesMobile = $timestamp . '_' . $originalFileNameImagesMobile;
        //     $path_image_mobile = Storage::disk('public')->putFileAs($folder_mobile, $file_image_mobile, $modifiedFileNameImagesMobile);
        //     $media->image_mobile = $path_image_mobile;
        // }

        $media->update();
        flashSuccess(__('media_updated_successfully'));
        return redirect()->route('media.index');
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        abort_if(!userCan('order.view'), 403);
        $media=Media::where('id',$id)->first();
        if ($media['images'] && Storage::disk('public')->exists($media['images'])) {
            Storage::disk('public')->delete($media['images']);
        }
        // if ($media['image_mobile'] && Storage::disk('public')->exists($media['image_mobile'])) {
        //     Storage::disk('public')->delete($media['image_mobile']);
        // }
        $media->delete();
        flashSuccess(__('media_deleted_successfully'));
        return back();
    }
}