//
//  LivePaymentDialog.swift
//  SodaLive
//
//  Created by klaus on 1/21/24.
//

import SwiftUI

struct LivePaymentDialog: View {
    
    let title: String
    let desc: String
    let desc2: String?
    let confirmButtonTitle: String
    let confirmButtonAction: () -> Void
    let cancelButtonTitle: String
    let cancelButtonAction: () -> Void
    
    let startDateTime: String?
    let nowDateTime: String?
    
    var body: some View {
        VStack {
            Text(title)
                .font(.custom(Font.bold.rawValue, size: 18.3))
                .foregroundColor(Color.graybb)
            
            Text(desc)
                .font(.custom(Font.medium.rawValue, size: 15))
                .foregroundColor(Color.graybb)
                .multilineTextAlignment(.center)
                .lineSpacing(6)
                .padding(.top, 21.3)
            
            if let startDateTime = startDateTime, let nowDateTime = nowDateTime, let desc = desc2 {
                VStack(spacing: 13.3) {
                    HStack(spacing: 6.7) {
                        Text("- 시작 시각 : ")
                            .font(.custom(Font.medium.rawValue, size: 13.3))
                            .foregroundColor(Color.graybb)
                        
                        Text(startDateTime)
                            .font(.custom(Font.medium.rawValue, size: 13.3))
                            .foregroundColor(Color.graybb)
                    }
                    
                    HStack(spacing: 6.7) {
                        Text("- 현재 시각 :")
                            .font(.custom(Font.medium.rawValue, size: 13.3))
                            .foregroundColor(Color.graybb)
                            .multilineTextAlignment(.leading)
                        
                        Text(nowDateTime)
                            .font(.custom(Font.medium.rawValue, size: 13.3))
                            .foregroundColor(Color.graybb)
                    }
                }
                .padding(.vertical, 13.3)
                .padding(.horizontal, 26.7)
                .background(Color.gray30)
                .cornerRadius(13.3)
                .padding(.top, 21.3)
                
                Text(desc)
                    .font(.custom(Font.medium.rawValue, size: 15))
                    .foregroundColor(Color.graybb)
                    .lineSpacing(6)
                    .padding(.top, 21.3)
            }
            
            HStack(spacing: 13.3) {
                Text("취소")
                    .font(.custom(Font.bold.rawValue, size: 18.3))
                    .foregroundColor(Color.button)
                    .padding(.vertical, 16)
                    .frame(maxWidth: .infinity)
                    .background(Color.bg)
                    .cornerRadius(10)
                    .overlay(
                        RoundedRectangle(cornerRadius: 8)
                        .stroke(Color(hex: "3bb9f1"), lineWidth: 1)
                    )
                    .onTapGesture { cancelButtonAction() }
                
                Text("결제 후 입장")
                    .font(.custom(Font.bold.rawValue, size: 18.3))
                    .padding(.vertical, 16)
                    .frame(maxWidth: .infinity)
                    .background(Color.button)
                    .cornerRadius(10)
                    .onTapGesture { confirmButtonAction() }
            }
            .padding(.top, 45)
        }
        .padding(.horizontal, 16.7)
        .padding(.bottom, 16.7)
        .padding(.top, 40)
        .background(Color(hex: "222222"))
        .cornerRadius(10)
    }
}

#Preview {
    LivePaymentDialog(
        title: "유료 라이브 입장",
        desc: "OO캔을 차감하고\n라이브에 입장 하시겠습니까?",
        desc2: "라이브가 시작한 지 1시간 10분이 지났습니다. 라이브에 입장 후 30분 이내에 라이브가 종료될 수도 있습니다.",
        confirmButtonTitle: "",
        confirmButtonAction: {},
        cancelButtonTitle: "",
        cancelButtonAction: {},
        startDateTime: "2024-01-01 15:00",
        nowDateTime: "2024-01-02 15:00"
    )
}
