import { PATHS } from '@/shared/constants/paths';
import { useNavigate } from '@/shared/lib/hooks/use-navigate';
import { HeaderType } from '@/entities/common/model/types';
import { 
	useSetHeaderTitle,
	useSetHeaderType,
	useSetFooterMode,
  useSetOnBack
} from '@/widgets/sub-layout/use-sub-layout';
import { useLocation } from 'react-router';
import { useEffect, useState } from 'react';
import { ExtensionAlimtalkDetailParams, ExtensionAlimtalkDetailResponse } from '@/entities/additional-service/model/alimtalk/types';
import { useExtensionAlimtalkDetailMutation } from '@/entities/additional-service/api/alimtalk/use-extansion-alimtalk-detail-mutation';
import moment from 'moment';
import { getAlimtalkAlimClText, getAlimtalkSendClTypeText, getAlimtalkSendTypeText, getAlimtalkServiceCodeText } from '@/entities/additional-service/model/alimtalk/constant';
import { useTranslation } from 'react-i18next';

export const AlimtalkDetailPage = () => {
  const { navigate } = useNavigate();
  const { t } = useTranslation();
  const location = useLocation();

  const tid = location.state.tid;
  const mid = location.state.mid;

  const [detail, setDetail] = useState<ExtensionAlimtalkDetailResponse>();
  
  const { mutateAsync: extensionAlimtalkDetail } = useExtensionAlimtalkDetailMutation();

  const callDetail = () => {
    let params: ExtensionAlimtalkDetailParams = {
      mid: mid,
      tid: tid
    };

    extensionAlimtalkDetail(params).then((rs: ExtensionAlimtalkDetailResponse) => {
      setDetail(rs);
    });
  };

  useSetHeaderTitle('알림톡 발송 상세');
  useSetHeaderType(HeaderType.LeftArrow);
  useSetFooterMode(false);
  useSetOnBack(() => {
    navigate(PATHS.additionalService.alimtalk.list);
  });

  useEffect(() => {
    callDetail();
  }, []);

  const getDate = (date?: string) => {
    return (date)? moment(date, 'YYYYMMDDHHmmss').format('YYYY.MM.DD HH:mm:ss'): '';
  };

  return (
    <>
      <main className="full-height">
        <div className="tab-content">
          <div className="tab-pane sub active">
            <div className="pay-top">
              <div className="num-amount">
                <span className="amount">{ detail?.receiverName }</span>
              </div>
              <div className="num-store">{ detail?.companyName }</div>
              <div className="num-day">{ getDate(detail?.sendDate) }</div>
            </div>
            <div className="detail-divider"></div>
            <div className="pay-detail">
              <div className="detail-title">거래 정보</div>
              <ul className="kv-list">
                <li className="kv-row">
                  <span className="k">MID</span>
                  <span className="v">{ detail?.mid }</span>
                </li>
                <li className="kv-row">
                  <span className="k">TID</span>
                  <span className="v">{ detail?.tid }</span>
                </li>
                <li className="kv-row">
                  <span className="k">서비스명</span>
                  <span className="v">{ detail?.extensionServiceName }</span>
                </li>
                <li className="kv-row">
                  <span className="k">발송 종류</span>
                  <span className="v">{ getAlimtalkSendTypeText(t)(detail?.sendType) }</span>
                </li>
                <li className="kv-row">
                  <span className="k">주문자명</span>
                  <span className="v">{detail?.receiverName }</span>
                </li>
                <li className="kv-row">
                  <span className="k">결제서비스</span>
                  <span className="v">{ getAlimtalkServiceCodeText(t)(detail?.serviceCode) }</span>
                </li>
                <li className="kv-row">
                  <span className="k">알림구분</span>
                  <span className="v">{ getAlimtalkAlimClText(t)(detail?.alimCl) }</span>
                </li>
                <li className="kv-row">
                  <span className="k">발송구분</span>
                  <span className="v">{ getAlimtalkSendClTypeText(t)(detail?.sendCl) }</span>
                </li>
              </ul>
            </div>
          </div>
        </div>
      </main>
    </>
  );
};