using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using TaxBaik.Application.Services;

namespace TaxBaik.Web.Pages;

public class ContactModel : PageModel
{
    private readonly InquiryService _inquiryService;

    [BindProperty]
    public string Name { get; set; } = "";

    [BindProperty]
    public string Phone { get; set; } = "";

    [BindProperty]
    public string? Email { get; set; }

    [BindProperty]
    public string ServiceType { get; set; } = "기타";

    [BindProperty]
    public string Message { get; set; } = "";

    [BindProperty]
    public bool Agree { get; set; }

    public ContactModel(InquiryService inquiryService)
    {
        _inquiryService = inquiryService;
    }

    public async Task<IActionResult> OnPostAsync()
    {
        if (!ModelState.IsValid || !Agree)
            return Page();

        try
        {
            await _inquiryService.SubmitAsync(
                Name,
                Phone,
                ServiceType,
                Message,
                Email,
                HttpContext.Connection.RemoteIpAddress?.ToString());
            TempData["Success"] = "상담 신청이 접수되었습니다. 빠른 시간 내에 연락드리겠습니다.";
            return RedirectToPage();
        }
        catch (ValidationException ex)
        {
            ModelState.AddModelError("", ex.Message);
            return Page();
        }
        catch
        {
            ModelState.AddModelError("", "시스템 오류가 발생했습니다. 잠시 후 다시 시도해주세요.");
            return Page();
        }
    }
}
