package com.lemon.lifecenter.test;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Random;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import com.lemon.lifecenter.common.LifeCenterController;
import com.lemon.lifecenter.dto.PatientDTO;

@Controller

public class TestContorller extends LifeCenterController {
    
    @Autowired
    TestService s;
    
    @RequestMapping("/insert/{start}/{end}")
    public ModelAndView insert(@PathVariable("start") int start, @PathVariable("end") int end) {

        ModelAndView mv = setMV("test");

        PatientDTO dto = new PatientDTO();

        for (int i = start; i < end; i++) {
            dto.setPatientName(randomHangulName());
            dto.setWardNumber(numberGen(4, 1));
            dto.setRoomNumber(numberGen(3, 1));
            dto.setPatientPhone( "010" + numberGen(8, 1) );
            dto.setGuardianPhone( "010" + numberGen(8, 1)  );
            String a = this.getJumin();
            dto.setJumin(a); 
            dto.setPw(a);
            s.insertPatientCare(dto);
        }

        return mv;
    }
    
    @RequestMapping("/insertSymptom/{start}/{end}")
    public ModelAndView insertSymptom(@PathVariable("start") int start, @PathVariable("end") int end) {

        ModelAndView mv = setMV("test");

        PatientDTO dto = new PatientDTO();

        for (int i = start; i < end; i++) {
            dto.setPatientIdx( i );
            s.insertPatientSymptom(dto);
        }

        return mv;
    }
    @RequestMapping("/insertDisease/{start}/{end}")
    public ModelAndView insertdisease(@PathVariable("start") int start, @PathVariable("end") int end) {

        ModelAndView mv = setMV("test");

        PatientDTO dto = new PatientDTO();

        for (int i = start; i < end; i++) {
            dto.setPatientIdx( i );
            s.insertPatientDisease(dto);
        }

        return mv;
    }
    



    public String getJumin()
    {
        int[] maxDays = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        
        int iMinMonth = 1;
        int iMaxMonth = 12;
        
        int iRandomMonth = (int)(Math.random() * iMaxMonth - iMinMonth + 1) + iMinMonth;
        int iRandomDay = (int)(Math.random() * (maxDays[iRandomMonth-1] -2) + 1);
        
        String m = String.valueOf(iRandomMonth);
        String d = String.valueOf(iRandomDay);
        
        if( iRandomMonth < 10 ) {
            m = "0"+iRandomMonth; 
        } 
        
        if( iRandomDay < 10 ) {
            d = "0"+iRandomDay; 
        }
        return "" + (int)((Math.random() * 3) +7 )+ (int)(Math.random() * 10)  + m + "" + d;
    }



    

    public static String randomHangulName() {
        List<String> 성 = Arrays.asList("김", "이", "박", "최", "정", "강", "조", "윤", "장", "임", "한", "오", "서", "신", "권", "황",
                "안", "송", "류", "전", "홍", "고", "문", "양", "손", "배", "조", "백", "허", "유", "남", "심", "노", "정", "하", "곽", "성",
                "차", "주", "우", "구", "신", "임", "나", "전", "민", "유", "진", "지", "엄", "채", "원", "천", "방", "공", "강", "현", "함",
                "변", "염", "양", "변", "여", "추", "노", "도", "소", "신", "석", "선", "설", "마", "길", "주", "연", "방", "위", "표", "명",
                "기", "반", "왕", "금", "옥", "육", "인", "맹", "제", "모", "장", "남", "탁", "국", "여", "진", "어", "은", "편", "구",
                "용");
        List<String> 이름 = Arrays.asList("가", "강", "건", "경", "고", "관", "광", "구", "규", "근", "기", "길", "나", "남", "노", "누",
                "다", "단", "달", "담", "대", "덕", "도", "동", "두", "라", "래", "로", "루", "리", "마", "만", "명", "무", "문", "미", "민",
                "바", "박", "백", "범", "별", "병", "보", "빛", "사", "산", "상", "새", "서", "석", "선", "설", "섭", "성", "세", "소", "솔",
                "수", "숙", "순", "숭", "슬", "승", "시", "신", "아", "안", "애", "엄", "여", "연", "영", "예", "오", "옥", "완", "요", "용",
                "우", "원", "월", "위", "유", "윤", "율", "으", "은", "의", "이", "익", "인", "일", "잎", "자", "잔", "장", "재", "전", "정",
                "제", "조", "종", "주", "준", "중", "지", "진", "찬", "창", "채", "천", "철", "초", "춘", "충", "치", "탐", "태", "택", "판",
                "하", "한", "해", "혁", "현", "형", "혜", "호", "홍", "화", "환", "회", "효", "훈", "휘", "희", "운", "모", "배", "부", "림",
                "봉", "혼", "황", "량", "린", "을", "비", "솜", "공", "면", "탁", "온", "디", "항", "후", "려", "균", "묵", "송", "욱", "휴",
                "언", "령", "섬", "들", "견", "추", "걸", "삼", "열", "웅", "분", "변", "양", "출", "타", "흥", "겸", "곤", "번", "식", "란",
                "더", "손", "술", "훔", "반", "빈", "실", "직", "흠", "흔", "악", "람", "뜸", "권", "복", "심", "헌", "엽", "학", "개", "롱",
                "평", "늘", "늬", "랑", "얀", "향", "울", "련");
        Collections.shuffle(성);
        Collections.shuffle(이름);
        return 성.get(0) + 이름.get(0) + 이름.get(1);
    }

    public static String numberGen(int len, int dupCd) {

        Random rand = new Random();
        String numStr = ""; // 난수가 저장될 변수

        for (int i = 0; i < len; i++) {

            // 0~9 까지 난수 생성
            String ran = Integer.toString(rand.nextInt(10));

            if (dupCd == 1) {
                // 중복 허용시 numStr에 append
                numStr += ran;
            } else if (dupCd == 2) {
                // 중복을 허용하지 않을시 중복된 값이 있는지 검사한다
                if (!numStr.contains(ran)) {
                    // 중복된 값이 없으면 numStr에 append
                    numStr += ran;
                } else {
                    // 생성된 난수가 중복되면 루틴을 다시 실행한다
                    i -= 1;
                }
            }
        }
        return numStr;
    }

}
