package itn.let.kakao.kakaoComm;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class KakaoServiceCommon{
	
	/** 비즈 회원 아이디 */
	@Value("#{globalSettings['Globals.mjon.biz.id']}")
	private String mjonBizId;
	
	/** 비즈 회원 API 키*/
	@Value("#{globalSettings['Globals.mjon.biz.kakao.apiKey']}")
	private String mjonBizKakaoApiKey;
	
	/** 비즈 JSON 파일저장 경로*/
	@Value("#{globalSettings['Globals.mjon.kakao.dir']}")
	private String mjonBizJsonDir;
	
	
	public KakaoVO kakaoBizApi(KakaoVO kakaoVO) {
		String responscCode = "";
		try {
			
			System.out.println("bizId " + mjonBizId);
			System.out.println("Kakao " + mjonBizKakaoApiKey);
			
//			String sendUrl = "https://kapi.ppurio.com/v3/kakao/profile/category/all";
			String sendUrl = "https://kapi.ppurio.com";
			sendUrl = sendUrl + kakaoVO.getBizUrl();
			HttpURLConnection conn =null;
			URL url = new URL(sendUrl);
			
			conn = (HttpURLConnection) url.openConnection();
			conn.setRequestMethod("POST");
			conn.setRequestProperty("Content-Type", "application/json");
			
			conn.setDoOutput(true);
			BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(conn.getOutputStream()));
			
			JSONObject jsonData  =  new JSONObject();
			
			jsonData.put("bizId", mjonBizId);
			jsonData.put("apiKey", mjonBizKakaoApiKey);
			jsonData.put("phoneNumber", kakaoVO.getPhoneNumber());
			jsonData.put("yellowId", kakaoVO.getYellowId());
			
			bw.write(jsonData.toString());
			bw.flush();
			bw.close();
			
			/**-----------------------------------------------------------------------------*/
			
			BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
			String returnMsg = in.readLine();
			System.out.println("응답메시지 : " + returnMsg);
			
			/*responscCode = conn.getResponseCode();
			
			kakaoVO.setBizReturnCode(responscCode);
			
			if(responscCode == 400) {
				System.out.println("400 : 명령을 실행 오류");
				kakaoVO.setBizReturnMsg("400 : 명령을 실행 오류");
			}else if(responscCode == 500) {
				System.out.println("500 : 서버");
				kakaoVO.setBizReturnMsg("500 : 서버");
			}else {
				System.out.println(responscCode+ " : 응답");
				kakaoVO.setBizReturnMsg(returnMsg);
			}*/
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return kakaoVO;
	}
	
	
	public void kakaoBizJson(KakaoVO kakaoVO) {
		try {
			
			LocalDateTime now = LocalDateTime.now(); // 현재 날짜 구하기
			DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss"); // 포맷 설정
			String formatedNow = now.format(formatter); // 포맷 적용
			String dFile = "userId_"+formatedNow+".json";

			System.out.println("fileName : " + dFile);
			
			dFile = "D:/"+mjonBizJsonDir +"/"+ dFile;
			
			System.out.println("jsonDir  : " + dFile);
			
			JSONObject jo = new JSONObject();
			jo.put("name", "Jone");
			jo.put("city", "Seoul");
			
			String jsonStr = jo.toString();
			File jsonFile = new File(dFile);
		
			BufferedWriter writer = new BufferedWriter(new FileWriter(jsonFile));
			writer.write(jsonStr);
			writer.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}