// DLG_SP_Modify.cpp : implementation file
//

#include "stdafx.h"
#include "smsmanager.h"
#include "DLG_SP_Modify.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// DLG_SP_Modify dialog
#include "SPDlg.h"

DLG_SP_Modify::DLG_SP_Modify(CWnd* pParent /*=NULL*/)
	: CDialog(DLG_SP_Modify::IDD, pParent)
{
	//{{AFX_DATA_INIT(DLG_SP_Modify)
	m_strBZ = _T("");
	m_bWeek = FALSE;
	m_strName = _T("");
	m_strOperCmd = _T("");
	m_lPrice = 1;
	m_lSendNum = 1;
	m_tSend1 = COleDateTime::GetCurrentTime();
	m_tSend2 = COleDateTime::GetCurrentTime();
	m_tSend3 = COleDateTime::GetCurrentTime();
	m_bWeek_0 = FALSE;
	m_bWeek_1 = FALSE;
	m_bWeek_2 = FALSE;
	m_bWeek_3 = FALSE;
	m_bWeek_4 = FALSE;
	m_bWeek_6 = FALSE;
	m_bWeek_5 = FALSE;
	//}}AFX_DATA_INIT

	m_pSPDlg = (CSPDlg *)pParent;
	memset( &m_SPData , 0 , sizeof(m_SPData));
	m_bAdd           = false;
	m_Pos            = 0;
}


void DLG_SP_Modify::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(DLG_SP_Modify)
	DDX_Text(pDX, IDC_SP_MODIFY_BZ, m_strBZ);
	DDV_MaxChars(pDX, m_strBZ, 250);
	DDX_Check(pDX, IDC_SP_MODIFY_ISWEEK, m_bWeek);
	DDX_Text(pDX, IDC_SP_MODIFY_NAME, m_strName);
	DDV_MaxChars(pDX, m_strName, 30);
	DDX_Text(pDX, IDC_SP_MODIFY_OPERCMD, m_strOperCmd);
	DDV_MaxChars(pDX, m_strOperCmd, 16);
	DDX_Text(pDX, IDC_SP_MODIFY_PRICE, m_lPrice);
	DDV_MinMaxUInt(pDX, m_lPrice, 1, 100);
	DDX_Text(pDX, IDC_SP_MODIFY_SENDNUM, m_lSendNum);
	DDV_MinMaxUInt(pDX, m_lSendNum, 1, 100);
	DDX_DateTimeCtrl(pDX, IDC_SP_MODIFY_SENDTIME1, m_tSend1);
	DDX_DateTimeCtrl(pDX, IDC_SP_MODIFY_SENDTIME2, m_tSend2);
	DDX_DateTimeCtrl(pDX, IDC_SP_MODIFY_SENDTIME3, m_tSend3);
	DDX_Check(pDX, IDC_SP_MODIFY_WEEK_0, m_bWeek_0);
	DDX_Check(pDX, IDC_SP_MODIFY_WEEK_1, m_bWeek_1);
	DDX_Check(pDX, IDC_SP_MODIFY_WEEK_2, m_bWeek_2);
	DDX_Check(pDX, IDC_SP_MODIFY_WEEK_3, m_bWeek_3);
	DDX_Check(pDX, IDC_SP_MODIFY_WEEK_4, m_bWeek_4);
	DDX_Check(pDX, IDC_SP_MODIFY_WEEK_6, m_bWeek_6);
	DDX_Check(pDX, IDC_SP_MODIFY_WEEK_5, m_bWeek_5);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(DLG_SP_Modify, CDialog)
	//{{AFX_MSG_MAP(DLG_SP_Modify)
	ON_BN_CLICKED(IDC_SP_MODIFY_ISWEEK, OnSpModifyIsweek)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// DLG_SP_Modify message handlers

BOOL DLG_SP_Modify::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	m_strName = m_SPData.szName;
	m_strOperCmd = m_SPData.szOperCmd;
	m_lPrice = m_SPData.lPrice;
	if ( m_lPrice <=0 || m_lPrice>100 ) m_lPrice=1;
	m_lSendNum = m_SPData.lSendNum;
	if ( m_lSendNum <=0 || m_lSendNum>100 ) m_lSendNum=1;
	m_tSend1 = m_SPData.tDZSendTime1;
	m_tSend2 = m_SPData.tDZSendTime2;
	m_tSend3 = m_SPData.tDZSendTime3;
	if ( m_tSend1.GetStatus()!=0 )
		m_tSend1.SetDateTime(1900,1,1,0,0,0);
	if ( m_tSend2.GetStatus()!=0 )
		m_tSend2.SetDateTime(1900,1,1,0,0,0);
	if ( m_tSend3.GetStatus()!=0 )
		m_tSend3.SetDateTime(1900,1,1,0,0,0);

	m_bWeek  = m_SPData.bWeek;
	if ( m_SPData.szWeekDay[0] == '1' )
		m_bWeek_0 = true;
	if ( m_SPData.szWeekDay[1] == '1' )
		m_bWeek_1 = true;
	if ( m_SPData.szWeekDay[2] == '1' )
		m_bWeek_2 = true;
	if ( m_SPData.szWeekDay[3] == '1' )
		m_bWeek_3 = true;
	if ( m_SPData.szWeekDay[4] == '1' )
		m_bWeek_4 = true;
	if ( m_SPData.szWeekDay[5] == '1' )
		m_bWeek_5 = true;
	if ( m_SPData.szWeekDay[6] == '1' )
		m_bWeek_6 = true;
	m_strBZ = m_SPData.szBZ;

	UpdateData(false);

	OnSpModifyIsweek();

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void DLG_SP_Modify::SetParam(ANS_SP_SeeData data, POSITION pos, BOOL bAdd)
{
	m_SPData = data;
	m_Pos   = pos;
	m_bAdd   = bAdd;
}

ANS_SP_SeeData DLG_SP_Modify::GetParam()
{
	return m_SPData;
}

void DLG_SP_Modify::OnSpModifyIsweek() 
{
	if ( !UpdateData(true) )
		return ;

	if ( m_bWeek )
	{
		GetDlgItem(IDC_SP_MODIFY_WEEK_0)->EnableWindow(true);
		GetDlgItem(IDC_SP_MODIFY_WEEK_1)->EnableWindow(true);
		GetDlgItem(IDC_SP_MODIFY_WEEK_2)->EnableWindow(true);
		GetDlgItem(IDC_SP_MODIFY_WEEK_3)->EnableWindow(true);
		GetDlgItem(IDC_SP_MODIFY_WEEK_4)->EnableWindow(true);
		GetDlgItem(IDC_SP_MODIFY_WEEK_5)->EnableWindow(true);
		GetDlgItem(IDC_SP_MODIFY_WEEK_6)->EnableWindow(true);
	}
	else
	{
		GetDlgItem(IDC_SP_MODIFY_WEEK_0)->EnableWindow(false);
		GetDlgItem(IDC_SP_MODIFY_WEEK_1)->EnableWindow(false);
		GetDlgItem(IDC_SP_MODIFY_WEEK_2)->EnableWindow(false);
		GetDlgItem(IDC_SP_MODIFY_WEEK_3)->EnableWindow(false);
		GetDlgItem(IDC_SP_MODIFY_WEEK_4)->EnableWindow(false);
		GetDlgItem(IDC_SP_MODIFY_WEEK_5)->EnableWindow(false);
		GetDlgItem(IDC_SP_MODIFY_WEEK_6)->EnableWindow(false);
	}
}

void DLG_SP_Modify::OnOK() 
{
	if ( !UpdateData(true) )
		return ;
	
	if ( m_strName.GetLength()<= 0 )
	{
		MessageBox( _T("ҵ�����Ʋ���Ϊ�գ������룡"),_T("����") , MB_ICONWARNING );
		return ;
	}
	if ( m_pSPDlg->FindSPName( m_strName,m_Pos ) )
	{
		MessageBox( _T("ҵ����������ʹ�ã�����������ҵ������!") , _T("����") , MB_ICONWARNING );
		return ;
	}
	if ( m_strOperCmd.GetLength()<= 0 )
	{
		MessageBox( _T("ҵ��ָ���Ϊ�գ������룡"),_T("����") , MB_ICONWARNING );
		return ;
	}
	if ( m_pSPDlg->FindOperCmd( m_strOperCmd,m_Pos ) )
	{
		MessageBox( _T("ҵ��ָ������ʹ�ã�����������ҵ��ָ��!") , _T("����") , MB_ICONWARNING );
		return ;
	}

	if ( m_bWeek_0 )
		m_SPData.szWeekDay[0] = '1';
	else
		m_SPData.szWeekDay[0] = '0';
	if ( m_bWeek_1 )
		m_SPData.szWeekDay[1] = '1';
	else
		m_SPData.szWeekDay[1] = '0';
	if ( m_bWeek_2 )
		m_SPData.szWeekDay[2] = '1';
	else
		m_SPData.szWeekDay[2] = '0';
	if ( m_bWeek_3 )
		m_SPData.szWeekDay[3] = '1';
	else
		m_SPData.szWeekDay[3] = '0';
	if ( m_bWeek_4 )
		m_SPData.szWeekDay[4] = '1';
	else
		m_SPData.szWeekDay[4] = '0';
	if ( m_bWeek_5 )
		m_SPData.szWeekDay[5] = '1';
	else
		m_SPData.szWeekDay[5] = '0';
	if ( m_bWeek_6 )
		m_SPData.szWeekDay[6] = '1';
	else
		m_SPData.szWeekDay[6] = '0';

	if ( m_bWeek && !_tcsncmp(m_SPData.szWeekDay,_T("0000000"),7) )
	{
		MessageBox( _T("���趨�˰����ڷ��ͣ���û�趨����ķ�������!") , _T("����") , MB_ICONWARNING );
		return ;
	}

	if ( m_tSend1.GetHour() == 0 &&
		 m_tSend1.GetMinute() == 0 &&
		 m_tSend1.GetSecond() == 0 )
	{
		MessageBox( _T("����ʱ��1�����趨����ʱ��!") , _T("����") , MB_ICONWARNING );
		return ;
	}
	if ( (m_tSend2.GetHour() != 0 ||
		 m_tSend2.GetMinute() != 0 ||
		 m_tSend2.GetSecond() != 0) &&
         m_tSend2 <= m_tSend1 )
	{
		MessageBox( _T("����ʱ��2����С�ڷ���ʱ��1!") , _T("����") , MB_ICONWARNING );
		return ;
	}
	if ( (m_tSend3.GetHour() != 0 ||
		 m_tSend3.GetMinute() != 0 ||
		 m_tSend3.GetSecond() != 0) &&
	     m_tSend3 < m_tSend2 )
	{
		MessageBox( _T("����ʱ��3����С�ڷ���ʱ��2!") , _T("����") , MB_ICONWARNING );
		return ;
	}

	_tcscpy(m_SPData.szName,m_strName);
	_tcscpy(m_SPData.szOperCmd,m_strOperCmd);
	_tcscpy(m_SPData.szBZ,m_strBZ);

	m_SPData.lPrice = m_lPrice;
	m_SPData.lSendNum= m_lSendNum;
	m_SPData.bWeek = m_bWeek;
	m_tSend1.GetAsSystemTime(m_SPData.tDZSendTime1);
	m_tSend2.GetAsSystemTime(m_SPData.tDZSendTime2);
	m_tSend3.GetAsSystemTime(m_SPData.tDZSendTime3);

	CDialog::OnOK();
}