<?php

namespace App\Http\Middleware;

use App\Helpers\IpDetector;
use App\iSession;
use Closure;
use Yajny\Member\Models\Member;

class LocalizationMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        $userCurrency = 'USD';
        if (isset($_POST['web_token'])) {
            $session = iSession::find($_POST['web_token']);
            if (isset($session) && $session->user_id) {
                $regionCode = $request->region ?? null;
                $user = Member::find($session->user_id);
                if ($user) {
                    if ($user->region_code != $regionCode) {
                        $user->region_code = $regionCode;
                    }
                    if (!isset($user->country_code)) {
                        $user->country_code = IpDetector::getCountryCodeFromClientIp();
                    }
                    $appPlatform = $request->header('platform');
                    if (!isset($user->platform) && $appPlatform) {
                        $user->platform = $appPlatform;
                    }
                    $user->save();
                    $userCurrency = $user->currency_code ?? 'USD';
                }
            }
        }
        $request->merge(['userCurrency' => $userCurrency]);
        return $next($request);
    }
}
