<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Mail;

class ForgotPasswordController extends Controller
{
    // パスワードリセット申請画面表示
    public function showLinkRequestForm()
    {
        return view('auth.forgot-password');
    }

    // リセットメール送信
    public function sendResetLinkEmail(Request $request)
    {
        $request->validate([
            'email' => 'required|email',
            'email_confirmation' => 'required|email|same:email',
        ], [
            'email.required' => 'メールアドレスを入力してください。',
            'email.email' => '正しいメールアドレス形式で入力してください。',
            'email_confirmation.required' => '確認用メールアドレスを入力してください。',
            'email_confirmation.email' => '正しいメールアドレス形式で入力してください。',
            'email_confirmation.same' => 'メールアドレスが一致しません。',
        ]);

        // ope_mailでユーザーを検索
        $user = \App\Models\Ope::where('ope_mail', $request->input('email'))->first();

        if (!$user) {
            return back()->withErrors(['email' => '該当するユーザーが見つかりません。']);
        }

        // トークン生成
        $token = Str::random(60);

        // トークン保存（既存レコードがあれば更新）
        DB::table('password_reset_tokens')->updateOrInsert(
            ['ope_mail' => $user->ope_mail],
            [
                'token' => $token,
                'created_at' => now(),
            ]
        );

        // メール送信
        $resetUrl = url('/reset-password?token=' . $token . '&email=' . urlencode($user->ope_mail));
        Mail::raw("下記URLからパスワード再設定を行ってください。\n\n{$resetUrl}", function ($message) use ($user) {
            $message->to($user->ope_mail)
                ->subject('パスワード再設定のご案内');
        });

        return back()->with('status', 'パスワード再設定メールを送信しました。');
    }
}