<?php

namespace App\Http\Controllers;

use App\Http\Resources\Admin\SettingResource;
use App\Setting;
use Illuminate\Http\Request;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\Cache;

class SettingController extends Controller
{
    const ITEM_PER_PAGE = 100;

    public function all()
    {
        $allSettings = Cache::remember('all_publish_settings', (7*24*60*60), function() {
            $allow = ['system_name', 'site_name', 'phone_number', 'copy_right', 'company_time', 'company_name', 'company_hot_line', 'company_fax', 'company_address'];

            $list = Setting::select('slug', 'content')
                ->notDeleted()
                ->isActivated()
                ->isPublish()
                ->whereIn('slug', $allow)
                ->pluck('content', 'slug');

            return ['items' => $list, 'lastModify' => (gmdate('D, d M Y H:i:s') . ' GMT')];
        });

        return response()->json(['data' => $allSettings['items']], 200)->header('Last-Modified', $allSettings['lastModify']);
    }

    public function uploadImage(Request $request) {
        $all = $request->all();
        $keys = array_keys($all);
        foreach ($keys as $k) {
            if ($request->hasFile($k)) {
                $file = $request->file($k);
                $baseName = $file->getClientOriginalName();
                $fileName = md5($baseName . rand(1111, 9999) . date('YmdHis')) . '.' .$file->getClientOriginalExtension();
                $file->move(public_path('uploads/image/setting'), $fileName);

                return response()->json(['status' => 'success', 'message' => 'Upload Success.', 'name' => $k, 'file_name' => $fileName], 200);
            }
        }

        return response()->json(['status' => 'error', 'message' => 'Upload Fail.', 'name' => '', 'file_name' => ''], 403);
    }
}
