// DLG_Corp_Extension.cpp: 实现文件
//

#include "stdafx.h"
#include "SmsManager.h"
#include "afxdialogex.h"
#include "DLG_Corp_Extension.h"


// DLG_Corp_Extension 对话框

IMPLEMENT_DYNAMIC(DLG_Corp_Extension, CDialogEx)

DLG_Corp_Extension::DLG_Corp_Extension(CWnd* pParent /*=nullptr*/)
	: CDialogEx(IDD_CORP_EXTENSION, pParent)
	, m_strCorpName(_T(""))
	, m_strDuration(_T(""))
	, m_strExpiry(_T(""))
	, m_S1(_T(""))
	, m_strYWY(_T(""))
	, m_tNewExpiry(COleDateTime::GetCurrentTime())
	, m_strBZ(_T(""))
	, m_strCorpID(_T(""))
{
	m_tOvrTime = { 0 };
	m_tNewOvrTime = { 0 };
	m_lType=0;
	m_lCorpID = 0;
}

DLG_Corp_Extension::~DLG_Corp_Extension()
{
}

void DLG_Corp_Extension::DoDataExchange(CDataExchange* pDX)
{
	CDialogEx::DoDataExchange(pDX);
	DDX_Text(pDX, IDC_CORP_EXTENSION_CORPNAME, m_strCorpName);
	DDX_CBString(pDX, IDC_CORP_EXTENSION_DURATION, m_strDuration);
	DDX_Text(pDX, IDC_CORP_EXTENSION_EXPRIY, m_strExpiry);
	DDX_Text(pDX, IDC_CORP_EXTENSION_S1, m_S1);
	DDX_Text(pDX, IDC_CORP_EXTENSION_YWY, m_strYWY);
	DDX_DateTimeCtrl(pDX, IDC_CORP_EXTENSION_NEWEXPIRY, m_tNewExpiry);
	DDX_Control(pDX, IDC_CORP_EXTENSION_DURATION, m_L_Duration);
	DDX_Text(pDX, IDC_CORP_HSSMS_BZ, m_strBZ);
	DDV_MaxChars(pDX, m_strBZ, 160);
	DDX_Text(pDX, IDC_CORP_EXTENSION_CORPID, m_strCorpID);
}


BEGIN_MESSAGE_MAP(DLG_Corp_Extension, CDialogEx)
	ON_BN_CLICKED(IDOK, &DLG_Corp_Extension::OnBnClickedOk)
	ON_CBN_SELCHANGE(IDC_CORP_EXTENSION_DURATION, &DLG_Corp_Extension::OnSelchangeCorpExtensionDuration)
END_MESSAGE_MAP()


// DLG_Corp_Extension 消息处理程序


void DLG_Corp_Extension::SetData(long lCorpID,CString strCorpName, CString strYWYName, SYSTEMTIME tOvrTime, long lType)
{
	m_lCorpID = lCorpID;
	m_strCorpName2 = strCorpName;
	m_strYWYName2 = strYWYName;
	m_tOvrTime = tOvrTime;
	m_lType = lType;
}


BOOL DLG_Corp_Extension::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	// TODO:  在此添加额外的初始化
	m_strCorpID.Format(_T("%d"), m_lCorpID);
	m_strCorpName = m_strCorpName2;
	m_strYWY = m_strYWYName2;
	m_strExpiry.Format(_T("%04d.%02d.%02d"), m_tOvrTime.wYear, m_tOvrTime.wMonth, m_tOvrTime.wDay);
	if (m_lType == 1)
	{
		m_S1 = _T("代理商延期");
		GetDlgItem(IDC_CORP_EXTENSION_CORPID_S)->SetWindowText(_T("代理商ID"));
	}
	UpdateData(false);


	m_L_Duration.SetCurSel(0);
	OnSelchangeCorpExtensionDuration();

	return TRUE;  // return TRUE unless you set the focus to a control
	// 异常: OCX 属性页应返回 FALSE
}


SYSTEMTIME DLG_Corp_Extension::GetData()
{
	return SYSTEMTIME(m_tNewOvrTime);
}


void DLG_Corp_Extension::OnBnClickedOk()
{
	if (!UpdateData(true))
		return;
	m_tNewExpiry.SetDateTime(m_tNewExpiry.GetYear(), m_tNewExpiry.GetMonth(), m_tNewExpiry.GetDay(),23, 59, 59);
	if (m_tNewExpiry < COleDateTime::GetCurrentTime())
	{
		MessageBox(_T("延期后新过期时间不能小于当前日期!"), _T("错误"), MB_ICONWARNING);
		return;
	}

	if (m_tNewExpiry > COleDateTime::GetCurrentTime() + COleDateTimeSpan(366))
	{
		MessageBox(_T("延期后新过期时间不能超过1年!"), _T("错误"), MB_ICONWARNING);
		return;
	}

	m_tNewExpiry.GetAsSystemTime(m_tNewOvrTime);
	if (m_strBZ.GetLength() < 4)
	{
		MessageBox(_T("请录入延期原因!"), _T("错误"), MB_ICONWARNING);
		GetDlgItem(IDC_CORP_HSSMS_BZ)->SetFocus();
		return;
	}

	CDialogEx::OnOK();
}


void DLG_Corp_Extension::OnSelchangeCorpExtensionDuration()
{
	//计算延期时间
	long lDuration = m_L_Duration.GetCurSel();

	UpdateData(true);
	//1星期;1个月;2个月;3个月;6个月;1年;其它日期;
	SYSTEMTIME tNow = { 0 };
	tNow = m_tOvrTime;
	if (COleDateTime(tNow).GetStatus() == COleDateTime::invalid)
	{
		GetLocalTime(&tNow);
	}
	COleDateTime tNewExpiry=COleDateTime(tNow);
	WORD wMon = 0;
	BOOL bEnable = false;
	switch(lDuration)
	{
	case 0:  //1星期
	default:
		tNewExpiry = tNewExpiry + COleDateTimeSpan(7, 0, 0, 0);
		break;
	case 1:  //1月
	case 2:  //2月
	case 3:  //3月
	case 4:  //6月
		if (lDuration == 4)
			wMon = 6;
		else
			wMon = lDuration;
		tNow.wYear = tNow.wYear + (tNow.wMonth + wMon) / 12;
		tNow.wMonth = (tNow.wMonth + wMon) % 12;
		tNewExpiry = COleDateTime(tNow);
		break;
	case 5: //1年
		tNow.wYear = tNow.wYear + 1;
		tNewExpiry = COleDateTime(tNow);
		break;
	case 6: //其它日期
		tNewExpiry = tNewExpiry + COleDateTimeSpan(7, 0, 0, 0);
		bEnable = true;
		break;
	}
	m_tNewExpiry = tNewExpiry;
	tNewExpiry.SetTime(23, 59, 59);

	GetDlgItem(IDC_CORP_EXTENSION_NEWEXPIRY)->EnableWindow(bEnable);

	UpdateData(false);
}