<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Services\Account\AccountAppSettingsService;
use App\Http\Requests\StoreUserAppSettings;
use App\Models\UserAppSettings;
use App\Http\Resources\UserAppSettingsResource;

class UserAppSettingsController extends Controller
{
    public function __construct()
    {
    	$this->middleware('auth');
    }

    public function get(Request $request)
    {
    	abort_if(!$request->user(), 403);

    	$settings = UserAppSettings::whereUserId($request->user()->id)->first();

    	if(!$settings) {
    		return [
    			'id' => (string) $request->user()->profile_id,
    			'username' => $request->user()->username,
    			'updated_at' =>  null,
    			'common' => AccountAppSettingsService::default(),
    		];
    	}

    	return new UserAppSettingsResource($settings);
    }

    public function store(StoreUserAppSettings $request)
    {
    	$res = UserAppSettings::updateOrCreate([
    			'user_id' => $request->user()->id,
	    	],[
    			'profile_id' => $request->user()->profile_id,
	    		'common' => $request->common,
	    	]
	    );

    	return new UserAppSettingsResource($res);
    }
}