package com.takensoft.common.verify.web;

import com.takensoft.common.message.MessageCode;
import com.takensoft.common.util.ResponseUtil;
import com.takensoft.common.verify.service.EmailService;
import com.takensoft.common.verify.vo.EmailVO;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.FileInputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;

/**
 * @author 하석형
 * @since 2025.05.20
 * @modification
 *     since    |    author    | description
 *  2025.05.20  |    하석형     | 최초 등록
 *
 * 이메일 관련 Controller
 */
@RestController
@RequiredArgsConstructor
@Slf4j
@RequestMapping(value="/sys/email")
public class EmailController {

    private final EmailService emailService;
    private final ResponseUtil resUtil;

    /**
     * @param emailVO - 이메일 정보
     * @return ResponseEntity - 이메일 인증코드 발송 응답 결과
     *
     * 이메일 인증코드 발송
     */
    @PostMapping("/sendEmailVerifyCode.json")
    public ResponseEntity<?> sendEmailVerifyCode(@RequestBody EmailVO emailVO) {

        boolean result = emailService.sendEmailVerifyCode(emailVO);

        return resUtil.successRes(result, MessageCode.COMMON_SUCCESS);
    }

    /**
     * @param emailVO - 이메일 정보
     * @return ResponseEntity - 이메일 인증코드 확인 응답 결과
     *
     * 이메일 인증코드 확인
     */
    @PostMapping("/checkEmailVerifyCode.json")
    public ResponseEntity<?> checkEmailVerifyCode(@RequestBody EmailVO emailVO) {

        boolean result = emailService.checkEmailVerifyCode(emailVO);

        return resUtil.successRes(result, MessageCode.COMMON_SUCCESS);
    }
}
