<?php

namespace App\Http\Controllers\Admin\Config\Register;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Models\Config;

class NotifyController extends Controller
{
    private Config $configModel;

    public function __construct(Config $config)
    {
        $this->configModel = $config;
    }

    /**
     * 알림
     * @method GET
     * @see /admin/config/register/notify
     */
    public function index()
    {
        return view('admin.config.register.notify', []);
    }

    /**
     * 알림 저장
     * @method POST
     * @see /admin/config/register/notify
     */
    public function store(Request $request)
    {
        $rules = [
            'send_email_register_admin' => 'numeric|nullable',
            'send_email_register_user' => 'numeric|nullable',
            'send_telegram_register_admin' => 'numeric|nullable',
            'send_telegram_register_user' => 'numeric|nullable',
            'send_email_changepw_admin' => 'numeric|nullable',
            'send_email_changepw_user' => 'numeric|nullable',
            'send_telegram_changepw_admin' => 'numeric|nullable',
            'send_telegram_changepw_user' => 'numeric|nullable',
            'send_email_withdraw_admin' => 'numeric|nullable',
            'send_email_withdraw_user' => 'numeric|nullable',
            'send_telegram_withdraw_admin' => 'numeric|nullable',
            'send_telegram_withdraw_user' => 'numeric|nullable'
        ];

        $attributes = [
            'send_email_register_admin' => '회원가입 시 - 최고관리자에게 이메일을 발송합니다.',
            'send_email_register_user' => '회원가입 시 - 회원에게 이메일을 발송합니다.',
            'send_telegram_register_admin' => '회원가입 시 - 최고관리자에게 텔레그램를 발송합니다.',
            'send_telegram_register_user' => '회원가입 시 - 회원에게 텔레그램를 발송합니다.',
            'send_email_changepw_admin' => '비밀번호 변경 시 - 최고관리자에게 이메일을 발송합니다.',
            'send_email_changepw_user' => '비밀번호 변경 시 - 회원에게 이메일을 발송합니다.',
            'send_telegram_changepw_admin' => '비밀번호 변경 시 - 최고관리자에게 텔레그램를 발송합니다.',
            'send_telegram_changepw_user' => '비밀번호 변경 시 - 회원에게 텔레그램를 발송합니다.',
            'send_email_withdraw_admin' => '회원탈퇴 시 - 최고관리자에게 이메일을 발송합니다.',
            'send_email_withdraw_user' => '회원탈퇴 시 - 회원에게 이메일을 발송합니다.',
            'send_telegram_withdraw_admin' => '회원탈퇴 시 - 최고관리자에게 텔레그램를 발송합니다.',
            'send_telegram_withdraw_user' => '회원탈퇴 시 - 회원에게 텔레그램를 발송합니다.'
        ];

        $posts = $this->validate($request, $rules, [], $attributes);
        $posts['send_email_register_admin'] ??= '0';
        $posts['send_email_register_user'] ??= '0';
        $posts['send_telegram_register_admin'] ??= '0';
        $posts['send_telegram_register_user'] ??= '0';
        $posts['send_email_changepw_admin'] ??= '0';
        $posts['send_email_changepw_user'] ??= '0';
        $posts['send_telegram_changepw_admin'] ??= '0';
        $posts['send_telegram_changepw_user'] ??= '0';
        $posts['send_email_withdraw_admin'] ??= '0';
        $posts['send_email_withdraw_user'] ??= '0';
        $posts['send_telegram_withdraw_admin'] ??= '0';
        $posts['send_telegram_withdraw_user'] ??= '0';

        $this->configModel->save($posts, $attributes);

        $message = '알림 정보가 저장되었습니다.';
        return redirect()->route('admin.config.register.notify.index')->with('message', $message);
    }
}
