from utils.css import load_css

def retirement_planning_tool(current_age, retirement_age, current_investment, monthly_investment, pre_retirement_roi, post_retirement_roi, pre_retirement_dividend_yield, post_retirement_dividend_yield, reinvest_dividends, life_expectancy):
    # NoneType일 때 0으로 처리
    current_age = current_age if current_age is not None else 0
    retirement_age = retirement_age if retirement_age is not None else 0
    current_investment = current_investment if current_investment is not None else 0
    monthly_investment = monthly_investment if monthly_investment is not None else 0
    pre_retirement_roi = pre_retirement_roi if pre_retirement_roi is not None else 0
    post_retirement_roi = post_retirement_roi if post_retirement_roi is not None else 0
    pre_retirement_dividend_yield = pre_retirement_dividend_yield if pre_retirement_dividend_yield is not None else 0
    life_expectancy = life_expectancy if life_expectancy is not None else 0

    # 은퇴 전후의 년 수 계산
    years_to_retirement = retirement_age - current_age
    post_retirement_years = life_expectancy - retirement_age

    # 현재 투자액으로 초기 투자 설정
    total_investment = current_investment

    # 은퇴 전 월간 이자율
    # 연간 수익률을 월간 수익률로 변환: (1 + 연간 수익률)^(1/12) - 1
    monthly_return_pre = (1 + pre_retirement_roi / 100) ** (1/12) - 1

    # 은퇴 시점의 투자 계산
    for year in range(years_to_retirement):
        for month in range(12):
            total_investment = (total_investment + monthly_investment) * (1 + monthly_return_pre)
            if reinvest_dividends:
                total_investment += total_investment * (pre_retirement_dividend_yield / 100 / 12)

    # 은퇴 시작 시점의 총 투자액과 연간 배당 수익 저장
    investment_at_retirement = total_investment
    annual_dividend_at_retirement = investment_at_retirement * (pre_retirement_dividend_yield / 100)
    monthly_dividend_at_retirement = annual_dividend_at_retirement / 12

    # 은퇴 후 월간 이자율
    # 연간 수익률을 월간 수익률로 변환: (1 + 연간 수익률)^(1/12) - 1
    monthly_return_post = (1 + post_retirement_roi / 100) ** (1/12) - 1

    # 은퇴 후 투자 목록 초기화
    post_retirement_investments = [(retirement_age, investment_at_retirement, annual_dividend_at_retirement, monthly_dividend_at_retirement)]

    # 은퇴 후 각 년도의 투자 및 배당 수익 계산
    for year in range(1, post_retirement_years + 1):
        total_investment *= (1 + post_retirement_roi / 100)  # 은퇴 후 수익률 적용
        annual_dividend_income = total_investment * (post_retirement_dividend_yield / 100)  # 연간 배당 수익 계산
        monthly_dividend_income = annual_dividend_income / 12  # 월간 배당 수익 계산
        post_retirement_investments.append((retirement_age + year, total_investment, annual_dividend_income, monthly_dividend_income))

    # style.css에서 CSS 읽기
    css = load_css()

    # 은퇴 계획에 대한 HTML 결과 생성
    result_html = css + f"""
    <div class="wrap-text" style="box-shadow: 0 0.25rem 0.5rem rgba(0, 0, 0, 0.1); border-radius: 0.5rem; padding: 3rem; position: relative; width: 100%; padding: 1.5rem;">
        <div>
            <div style="margin-bottom: 1.5rem;">
                <div style="font-size: 1.5rem; margin-top: 1.5rem; margin-bottom: 1.5rem;">Total investment at retirement:</div>
                <div style="font-size: 1.5rem; font-weight: bold; color: #1c75bc;">
                    <span style='color: #1678fb'>{investment_at_retirement:,.0f}</span>
                </div>
                <hr style="margin: 1.5rem 0;">
            </div>
        </div>
        <div>
            <div style="margin-bottom: 1.5rem;">
                <div style="font-size: 1.5rem; margin-top: 1.5rem; margin-bottom: 1.5rem;">Dividend income at retirement:</div>
                    <span style='font-size: 1.5rem; font-weight: bold; color: #1678fb'>{annual_dividend_at_retirement:,.0f}</span> 
                    Annual
                    <p></p>
                    <span style='font-size: 1.5rem; font-weight: bold; color: #1678fb'>{monthly_dividend_at_retirement:,.0f}</span> 
                    Monthly 
                <hr style="margin: 1.5rem 0;">
            </div>
        </div>
        <div>
            
        </div>
    </div>
    <h3>Dividend Income After Retirement</h3>
    <div class='table-container'>
        <table style='border-collapse: collapse; width: 100%;'>
            <thead>
                <tr>
                    <th style='border: 1px solid #ddd; padding: 0.5rem;'>Age</th>
                    <th style='border: 1px solid #ddd; padding: 0.5rem;'>Total</th>
                    <th style='border: 1px solid #ddd; padding: 0.5rem;'>Annual</th>
                    <th style='border: 1px solid #ddd; padding: 0.5rem;'>Monthly</th>
                </tr>
            </thead>
            <tbody>
    """
    
    for age, investment, annual_dividend_income, monthly_dividend_income in post_retirement_investments:
        result_html += f"""
                <tr>
                    <td style='border: 1px solid #ddd; padding: 0.5rem;'>{age}</td>
                    <td style='border: 1px solid #ddd; padding: 0.5rem;'>{investment:,.0f}</td>
                    <td style='border: 1px solid #ddd; padding: 0.5rem;'>{annual_dividend_income:,.0f}</td>
                    <td style='border: 1px solid #ddd; padding: 0.5rem;'>{monthly_dividend_income:,.0f}</td>
                </tr>
        """

    result_html += """
            </tbody>
        </table>
    </div>
    <p style="padding: 10px; border: 1px solid; border-radius: 5px; text-align: center; max-width: 400px; margin: 20px auto;">
        <strong>Note:</strong> No additional investments or reinvestment of dividends after retirement.
    </p>
    """

    return result_html