// HireDress.cpp : implementation file
//

#include "stdafx.h"
#include "ylgl.h"
#include "HireDress.h"
#include "ShowPhoto.h"
#include "ShowEarlyWarning.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// HireDress IDC_EDITtime3 12
HireDress::HireDress(CWnd* pParent /*=NULL*/)
: CDialog(HireDress::IDD, pParent)
{
	//{{AFX_DATA_INIT(HireDress)
	m_addr2 = _T("");
	m_name2 = _T("");
	m_occupation2 = _T("");
	m_phone2 = _T("");
	m_qq2 = _T("");
	m_birthday2 = _T("");
	m_time3 = _T("");
	m_id = _T("");
	m_money = _T("");
	m_money2 = _T("");
	m_inputdate = g_date;
	m_clerk = g_user.name ;
	m_balance = _T("");
	m_count = _T("");
	m_no = _T("");
	m_remark = _T("");
	m_date1 = _T("");
	m_date2 = _T("");
	m_bAdd=1;
	m_pImg=NULL;
	m_bIsSale=0;
	m_radio1 = 0;
	//}}AFX_DATA_INIT
}

void HireDress::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(HireDress)
	DDX_Control(pDX, IDC_EDITdate2, m_datectrl5);
	DDX_Control(pDX, IDC_EDITdate1, m_datectrl4);
	DDX_Control(pDX, IDC_EDITcount, m_editctrl3);
	DDX_Control(pDX, IDC_EDITmoney2, m_editctrl2);
	DDX_Control(pDX, IDC_EDITmoney, m_editctrl);
	DDX_Control(pDX, IDC_LIST4, m_List1);
	DDX_Control(pDX, IDC_COMBOname, m_comboname);
	DDX_Control(pDX, IDC_EDITtime3, m_datectrl3);
	DDX_Control(pDX, IDC_EDITBirthday2, m_datectrl2);
	DDX_Text(pDX, IDC_EDITaddr2, m_addr2);
	DDX_Text(pDX, IDC_EDITname2, m_name2);
	DDX_Text(pDX, IDC_EDITOccupation2, m_occupation2);
	DDX_Text(pDX, IDC_EDITphone2, m_phone2);
	DDX_Text(pDX, IDC_EDITqq2, m_qq2);
	DDX_Text(pDX, IDC_EDITBirthday2, m_birthday2);
	DDX_Text(pDX, IDC_EDITtime3, m_time3);
	DDX_Text(pDX, IDC_EDITid, m_id);
	DDX_Text(pDX, IDC_EDITmoney, m_money);
	DDX_Text(pDX, IDC_EDITmoney2, m_money2);
	DDX_Text(pDX, IDC_EDITinputdate, m_inputdate);
	DDX_Text(pDX, IDC_EDITclerk, m_clerk);
	DDX_Text(pDX, IDC_EDITbalance, m_balance);
	DDX_Text(pDX, IDC_EDITcount, m_count);
	DDX_Text(pDX, IDC_EDITno, m_no);
	DDX_Text(pDX, IDC_EDITremark, m_remark);
	DDV_MaxChars(pDX, m_remark, 1000);
	DDX_Text(pDX, IDC_EDITdate1, m_date1);
	DDX_Text(pDX, IDC_EDITdate2, m_date2);
	DDX_Radio(pDX, IDC_RADIO1, m_radio1);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(HireDress, CDialog)
//{{AFX_MSG_MAP(HireDress)
ON_CBN_SELCHANGE(IDC_COMBOname, OnSelchangeCOMBOname)
ON_WM_DESTROY()
ON_WM_PAINT()
ON_BN_CLICKED(IDC_BUTTON1, OnAddDress)
ON_BN_CLICKED(IDC_BUTTON2, OnDelDress)
ON_BN_CLICKED(IDC_RADIO1, OnRadio1)
ON_BN_CLICKED(IDC_RADIO2, OnRadio2)
ON_BN_CLICKED(IDC_STATIC4, OnStatic4)
ON_BN_CLICKED(IDC_BUTTON3, OnButton3)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// HireDress message handlers

BOOL HireDress::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	
	if(m_bAdd)
	{
		if(m_bIsSale)
		{
			SetWindowText("������۵�");
			GetDlgItem(IDC_STATIC10)->ShowWindow(SW_HIDE);
			GetDlgItem(IDC_EDITdate2)->ShowWindow(SW_HIDE);
		}
		
		
		CString sql="select max(id) as cot from dresshire where [date]='"+g_date+"'";
		g_sendhead.bsql=1;
		g_pMainWnd->ProcessChatMessageRequest2(sql);
		if(g_bSendOK==0)
		{
			CDialog::OnCancel ();
			return false;
		}
		CString date=g_date;
		date.Replace ("-", "");
		m_id.Format ("%s-(lf)%03d", date, g_ncount+1);
		g_sendhead.bsql=0;
		g_sendhead.code[0]=72;
		g_sendhead.tabcount=1;
		g_pMainWnd->ProcessChatMessageRequest2(0);
		if(g_bSendOK==0)
		{
			CDialog::OnCancel ();
			return false;
		}
		DataToArray(&m_List1array);
		
		TypeChange();
	}
	else
	{
		
		
		if(m_bIsSale)
		{
			SetWindowText("������۵��޸�");
			GetDlgItem(IDC_STATIC10)->ShowWindow(SW_HIDE);
			GetDlgItem(IDC_EDITdate2)->ShowWindow(SW_HIDE);
		}
		else
			SetWindowText("������ⵥ�޸�");
		
		
		CString filter=";id='"+m_id+"';id='"+m_id+"';id='"+m_id+"'";
		g_sendhead.bsql=0;
		g_sendhead.code[0]=72;
		g_sendhead.code[1]=73;
		g_sendhead.code[2]=74;
		g_sendhead.code[3]=52;
		g_sendhead.tabcount=4;
		g_pMainWnd->ProcessChatMessageRequest2(filter);
		if(g_bSendOK==0)
		{
			CDialog::OnCancel ();
			return false;
		}
		CArray<CStringArray, CStringArray>dresshirearray;
		CArray<CStringArray, CStringArray>dresshiredataarray;
		CArray<CStringArray, CStringArray>clientarray;
		DataToArray(&m_List1array, &dresshirearray, &dresshiredataarray, &clientarray);
		if(dresshirearray.GetSize ())
		{
			m_money = dresshirearray.ElementAt (0).ElementAt (1);
			m_money2 = dresshirearray.ElementAt (0).ElementAt (2);
			m_remark = dresshirearray.ElementAt (0).ElementAt (10);
			m_inputdate = dresshirearray.ElementAt (0).ElementAt (6);
			m_date1 = dresshirearray.ElementAt (0).ElementAt (7);
			m_date2 = dresshirearray.ElementAt (0).ElementAt (8);
			m_clerk = g_user.name ;
		}
		if(clientarray.GetSize ())
		{
			m_name2=clientarray.ElementAt (0).ElementAt (2);
			m_phone2=clientarray.ElementAt (0).ElementAt (4);
			m_qq2=clientarray.ElementAt (0).ElementAt (6);
			m_addr2=clientarray.ElementAt (0).ElementAt (8);
			m_occupation2=clientarray.ElementAt (0).ElementAt (10);
			m_birthday2=clientarray.ElementAt (0).ElementAt (12);
			m_time3=clientarray.ElementAt (0).ElementAt (20);
		}
		for(int i=0; i<dresshiredataarray.GetSize (); i++)
		{
			m_needgetbalancearray.Add (dresshiredataarray.ElementAt (i).ElementAt (1));
			m_seldressarray.Add (dresshiredataarray.ElementAt (i).ElementAt (1));
			m_seldressarray.Add (dresshiredataarray.ElementAt (i).ElementAt (2));
			m_seldressarray.Add (dresshiredataarray.ElementAt (i).ElementAt (3));
			m_seldressarray.Add (m_id);
			m_seldressarray.Add (dresshiredataarray.ElementAt (i).ElementAt (4));
			m_seldressarray.Add (dresshiredataarray.ElementAt (i).ElementAt (7));
			
			CString str;
			str=dresshiredataarray.ElementAt (i).ElementAt (2);
			str+="\r\n����:";
			str+=dresshiredataarray.ElementAt (i).ElementAt (3);
			if(m_List1.GetCount()%2)
				m_List1.AddEntry( str , g_gridcol1, m_List1.GetCount());
			else
				m_List1.AddEntry( str , g_gridcol2, m_List1.GetCount());
		}
		
		
		
		TypeChange();
	}
	
	if(m_bIsSale)
		GetDlgItem(IDC_STATIC1)->SetWindowText("��������");
	CenterWindow();
	UpdateData(false);
	return TRUE;  // return TRUE unless you set the focus to a control
	// EXCEPTION: OCX Property Pages should return FALSE
}

void HireDress::OnOK() 
{
	// TODO: Add extra validation here
	UpdateData();
	m_money.TrimLeft ();m_money.TrimRight ();
	m_money2.TrimLeft ();m_money2.TrimRight ();
	m_name2.TrimLeft ();m_name2.TrimRight ();
	m_phone2.TrimLeft ();m_phone2.TrimRight ();
	
	if(!CheckDateOK(m_birthday2))return;
	if(!CheckDateOK(m_time3))return;
	if(!CheckDateOK(m_date1))return;
	
	if(m_bIsSale)
	{
		m_date2="..";
	}
	else
	{
		if(!CheckDateOK(m_date2))return;
	}
	
	
    if(m_money.IsEmpty () || m_money2.IsEmpty () || m_name2.IsEmpty () || m_phone2.IsEmpty () || m_money.IsEmpty () )
	{
		AfxMessageBox("���ϲ�ȫ, ��*�ŵ���ĿΪ������Ŀ!");
		return;
	}
	
	if(m_bIsSale==0)
	{
		if(m_date1.IsEmpty () || m_date2.IsEmpty ())
		{
			AfxMessageBox("���ϲ�ȫ, ��*�ŵ���ĿΪ������Ŀ!");
			return;
		}
	}
	
    if( m_seldressarray.GetSize()==0 )
	{
		AfxMessageBox("����������!");
		return;
	}
	if(0)//m_bIsSale==0)//�����Ƿ�ײ��
	{
		CString str,time1,time2,hireorsale,no,count;
		CTimeSpan dt(1, 0, 0, 0);
		for(int i=0; i<m_seldressarray.GetSize (); i+=6)
		{
			no=m_seldressarray.ElementAt (i);count=m_seldressarray.ElementAt (i+2);
			if(GetCountFromNo(no)>atoi(count))continue;
			
			CString filter="[no]='"+no+"'";
			g_sendhead.bsql=0;
			g_sendhead.code[0]=191;
			g_sendhead.tabcount=1;
			g_pMainWnd->ProcessChatMessageRequest2(filter);if(g_bSendOK==0)return;
			CArray<CStringArray, CStringArray>m_List1array;
			DataToArray(&m_List1array);
			for(int j=0; j<m_List1array.GetSize (); j++)
			{	
				hireorsale=m_List1array.ElementAt (j).ElementAt(4);
				if(hireorsale=="��")continue;
				time1=m_List1array.ElementAt (j).ElementAt(2);
				time2=m_List1array.ElementAt (j).ElementAt(3);
				if(CheckDateOK(time1) && CheckDateOK(time2))
				{
					CTime tm1(atoi(time1.Mid (0,4)),atoi(time1.Mid (5,2)),atoi(time1.Mid (8,2)),0,0,0); 
					CTime tm2(atoi(time2.Mid (0,4)),atoi(time2.Mid (5,2)),atoi(time2.Mid (8,2)),0,0,0); 
					CTime tm=tm2;
					tm+=dt;
					if(tm.Format ("%Y-%m-%d")==m_date1)
					{
						str.Format ("���:%s�黹����ȡ����ֻ��һ��! �Ƿ����?", no);
						if(AfxMessageBox(str, MB_YESNO|MB_ICONINFORMATION)!=IDYES)return;
					}
				}
			}
		}
	}
	
	
	CString sql,sql2;
	CString hireorsale="��";
	if(m_bIsSale)hireorsale="��";
	if(m_bAdd)
	{
		sql.Format ("insert into [dresshire]([id],[money],[money2],[date],[clerk],[hireorsale],[remark],[name],[phone],[date1],[date2])values('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')",m_id,m_money,m_money2,m_inputdate,m_clerk,hireorsale,m_remark,m_name2,m_phone2,m_date1,m_date2);
		sql2.Format ("***insert into [client]([name2],[phone2],[qq2],[addr2],[occupation2],[birthday2],[time3],[id])values('%s','%s','%s','%s','%s','%s','%s','%s')",m_name2,m_phone2,m_qq2,m_addr2,m_occupation2,m_birthday2,m_time3,m_id);
	}
	else
	{
		sql="update [dresshire] set [money]='"+m_money+"',[money2]='"+m_money2+"',[clerk]='"+m_clerk+"',[remark]='"+m_remark+"',[name]='"+m_name2+"',[phone]='"+m_phone2+"',[date1]='"+m_date1+"',[date2]='"+m_date2+"' where [id]='"+m_id+"'";
		
		sql2.Format ("***update [client] set [name2]='%s',[phone2]='%s',[qq2]='%s',[addr2]='%s',[occupation2]='%s',[birthday2]='%s',[time3]='%s' where [id]='%s' ", m_name2,m_phone2,m_qq2,m_addr2,m_occupation2,m_birthday2,m_time3,m_id);
	}
	sql+=sql2;
	g_sendhead.bsql=1;
	g_pMainWnd->ProcessChatMessageRequest2(sql);if(g_bSendOK==0)return;
	
	CStringArray m_seldressarraybak;
	m_seldressarraybak.Copy (m_seldressarray);
	int count=m_seldressarray.GetSize ();
	CString str;
	str.Format ("%d", count);
	for(int i=0; i<m_needgetbalancearray.GetSize (); i++)
	{
		m_seldressarray.Add (m_needgetbalancearray.ElementAt (i));
	}
	m_seldressarray.Add (str);
	m_seldressarray.Add (m_date1);
	m_seldressarray.Add (m_date2);
	
    CMemFile memfile;
	CArchive ar(&memfile, CArchive::store);
	m_seldressarray.Serialize (ar);
	ar.Close();
	int length=memfile.GetLength ();
    BYTE *pData = memfile.Detach();
	g_nSendCode=20;
    g_pMainWnd->ProcessChatMessageRequest2(pData, length);
	g_nSendCode=0;
	delete []pData;
	
	m_seldressarray.RemoveAll ();
	m_seldressarray.Copy (m_seldressarraybak);
	
	if(g_bSendOK==0)return;
	
	AfxMessageBox("����ɹ�!", MB_ICONINFORMATION);
	CDialog::OnOK();
}

void HireDress::OnSelchangeCOMBOname() 
{
	// TODO: Add your control notification handler code here
	int pos=m_comboname.GetCurSel ();
	if(pos==-1)return;
	UpdateData();
	CString name;
	m_comboname.GetLBText (pos, name);
	for(int i=0; i<m_List1array.GetSize (); i++)
	{
		if(name==m_List1array.ElementAt (i).ElementAt (2))
		{
			m_no=m_List1array.ElementAt (i).ElementAt (1);
			m_balance=m_List1array.ElementAt (i).ElementAt (4);
			m_sellcot=m_List1array.ElementAt (i).ElementAt (6);
			
			
			CString savepath=g_path5+"\\";
			if(m_pImg)delete m_pImg;m_pImg=NULL;
			
			if(PathFileExists( savepath+""+m_no+".jpg" ) )
			{
				::LoadImageFromBuf (&m_pImg, savepath+""+m_no+".jpg");
			}
			CRect rc;
			GetDlgItem(IDC_STATIC4)->GetWindowRect(rc);
			ScreenToClient(rc);
			InvalidateRect(rc);
			UpdateData(false);
		}
	}
}

void HireDress::OnDestroy() 
{
	
	
	// TODO: Add your message handler code here
	if(m_pImg)delete m_pImg;m_pImg=NULL;
	CDialog::OnDestroy();
}

void HireDress::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	
	// TODO: Add your message handler code here
	if(m_pImg)
	{
		CRect rc;
		GetDlgItem(IDC_STATIC4)->GetWindowRect(rc);
		ScreenToClient(rc);
		RectFitDes(m_pImg->GetWidth(), m_pImg->GetHeight(), rc);
		Graphics dcgraph(dc.GetSafeHdc());
		Rect destinationRect(rc.left , rc.top , rc.Width (), rc.Height ());
		dcgraph.DrawImage(m_pImg, destinationRect, 0,0,m_pImg->GetWidth(), m_pImg->GetHeight(),UnitPixel);
	}
	// Do not call CDialog::OnPaint() for painting messages
}

void HireDress::OnAddDress() 
{
	// TODO: Add your control notification handler code here
	UpdateData();
	int pos=m_comboname.GetCurSel ();
	if(pos==-1)return;
	CString name;
	m_comboname.GetLBText (pos, name);
	m_count.TrimLeft ();m_count.TrimRight ();
	if(atoi(m_count)<1)
	{
		AfxMessageBox("����������!");
		return;
	}
	if(atoi(m_count)>atoi(m_balance))
	{
		//	AfxMessageBox("��治��!");
		//	return;
	}
	for(int i=0; i<m_seldressarray.GetSize (); i+=6)
	{
		if(name==m_seldressarray.ElementAt (i+1))
		{	
			AfxMessageBox("���д�����ļ�¼!");
			return;
		}
	}
	
	if(CheckEarlyWarning())	
	{	
		if(m_bIsSale)
		{
			if(AfxMessageBox("�������������δ�أ��Ƿ���������۵���", MB_YESNO|MB_ICONINFORMATION)!=IDYES)return;
		}
		else
			return;
	}
	
	m_needgetbalancearray.Add (m_no);
	m_seldressarray.Add (m_no);
	m_seldressarray.Add (name);
	m_seldressarray.Add (m_count);
	m_seldressarray.Add (m_id);
	m_seldressarray.Add ("");
	if(m_bIsSale)
		m_seldressarray.Add ("��");
	else
		m_seldressarray.Add ("��");
	CString str;
	str=name;
	str+="\r\n����:";
	str+=m_count;
	if(m_List1.GetCount()%2)
		m_List1.AddEntry( str , g_gridcol1, m_List1.GetCount());
	else
		m_List1.AddEntry( str , g_gridcol2, m_List1.GetCount());
	
}

void HireDress::OnDelDress() 
{
	// TODO: Add your control notification handler code here
	int pos=m_List1.GetCurSel ();
	if(pos==-1)
	{
		AfxMessageBox("����ѡ����Ҫɾ�������!");
		return;
	}
	m_List1.DeleteString (pos);
	pos*=6;
	
	if(m_bAdd==0)
		m_needgetbalancearray.Add (m_seldressarray.ElementAt (pos));
	
	m_seldressarray.RemoveAt(pos+5);
	m_seldressarray.RemoveAt(pos+4);
	m_seldressarray.RemoveAt(pos+3);
	m_seldressarray.RemoveAt(pos+2);
	m_seldressarray.RemoveAt(pos+1);
	m_seldressarray.RemoveAt(pos);
}

int HireDress::GetCountFromNo(CString no)
{
/*	for(int i=0; i<m_List1array.GetSize (); i++)
{
if(no==m_List1array.ElementAt (i).ElementAt (1))
{
return atoi(m_List1array.ElementAt (i).ElementAt (8));
}
}*/
	return 0;
}

void HireDress::OnRadio1() 
{
	// TODO: Add your control notification handler code here
	OnRadio2();
}

void HireDress::OnRadio2() 
{
	// TODO: Add your control notification handler code here
	UpdateData();
	TypeChange();
}

void HireDress::OnStatic4() 
{
	// TODO: Add your control notification handler code here
	if(m_pImg)
	{
		ShowPhoto dlg;
		dlg.m_pImg=m_pImg;
		dlg.DoModal();
	}	
}

void HireDress::TypeChange()
{
	m_comboname.ResetContent();
	for(int i=0; i<m_List1array.GetSize (); i++)
	{
		if(m_radio1!=atoi(m_List1array.ElementAt (i).ElementAt (12)))continue;
		m_comboname.AddString (m_List1array.ElementAt (i).ElementAt (2));
	}
}

void HireDress::OnButton3() 
{
	// TODO: Add your control notification handler code here
	UpdateData();
	
	if(!CheckDateOK(m_date1))return;
    if(m_date1.IsEmpty () || m_no.IsEmpty () || m_count.IsEmpty ())
	{
		AfxMessageBox("ȡ�����ںͱ�ź�����Ϊ������Ŀ!");
		return;
	}	
	
	if(m_bIsSale==0)
	{
		if(!CheckDateOK(m_date2))return;  
		if(m_date2.IsEmpty ())
		{
			AfxMessageBox("ȡ�����ںͱ�ź�����Ϊ������Ŀ!");
			return;
		}	
	}
	
	int pos=m_comboname.GetCurSel ();
	if(pos==-1)return;
	UpdateData();
	CString name;
	m_comboname.GetLBText (pos, name);
	ShowEarlyWarning dlg;
	dlg.m_no=m_no;
	dlg.m_name=name;
	dlg.m_cot1=m_balance;
	dlg.m_cot2=m_sellcot;
	dlg.m_cot3=m_count; 
	dlg.m_date1=m_date1;
	if(m_bIsSale==0)dlg.m_date2=m_date2;
	dlg.DoModal();
}

BOOL HireDress::CheckEarlyWarning()
{
	if(!CheckDateOK(m_date1))return 1;
	
    if(m_date1.IsEmpty () || m_no.IsEmpty () || m_count.IsEmpty ())
	{
		AfxMessageBox("ȡ�����ںͱ�ź�����Ϊ������Ŀ!");
		return 1;
	}
	
	if(m_bIsSale==0)
	{
		if(!CheckDateOK(m_date2))return 1;  
		if(m_date2.IsEmpty ())
		{
			AfxMessageBox("ȡ�����ںͱ�ź�����Ϊ������Ŀ!");
			return 1;
		}	
	}
	
	
	int pos=m_comboname.GetCurSel ();
	if(pos==-1)return 1;
	
	CString name;
	m_comboname.GetLBText (pos, name);
	
	
	ShowEarlyWarning dlg;
	dlg.m_mode=1;
	dlg.m_no=m_no;
	dlg.m_name=name;
	dlg.m_cot1=m_balance;
	dlg.m_cot2=m_sellcot;
	dlg.m_cot3=m_count; 
	dlg.m_date1=m_date1;
	if(m_bIsSale==0)dlg.m_date2=m_date2;
	dlg.DoModal();
	return dlg.m_nRet;
}
//��治��