// ProviderDlg.cpp : implementation file
//
#include "stdafx.h"
#include "LYFZSendMsg.h"
#include "ProviderDlg.h"
#include "MyMdi.H"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// ProviderDlg

IMPLEMENT_DYNCREATE(ProviderDlg, CFormView)

ProviderDlg::ProviderDlg()
	: CFormView(ProviderDlg::IDD)
{
	//{{AFX_DATA_INIT(ProviderDlg)
	m_id = _T("");
	m_name = _T("");
	m_address = _T("");
	m_phone = _T("");
	m_fax = _T("");
	m_netaddress = _T("");
	m_bz = _T("");
	//}}AFX_DATA_INIT
}

ProviderDlg::~ProviderDlg()
{
}

void ProviderDlg::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(ProviderDlg)
	DDX_Control(pDX, IDC_LIST2, m_List1);
	DDX_Control(pDX, IDC_STATIC1, m_static1);
	DDX_Text(pDX, IDC_EDITaddress, m_address);
	DDX_Text(pDX, IDC_EDITbz, m_bz);
	DDX_Text(pDX, IDC_EDITfax, m_fax);
	DDX_Text(pDX, IDC_EDITid, m_id);
	DDX_Text(pDX, IDC_EDITname, m_name);
	DDX_Text(pDX, IDC_EDITnetaddress, m_netaddress);
	DDX_Text(pDX, IDC_EDITphone, m_phone);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(ProviderDlg, CFormView)
	//{{AFX_MSG_MAP(ProviderDlg)
	ON_BN_CLICKED(IDC_BUTsave, OnBUTsave)
	ON_BN_CLICKED(IDC_BUTdel, OnBUTdel)
	ON_BN_CLICKED(IDC_BUTclose, OnBUTclose)
	ON_NOTIFY(NM_CLICK, IDC_LIST2, OnClickList2)
	ON_BN_CLICKED(IDC_BUTadd, OnBUTadd)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// ProviderDlg diagnostics

#ifdef _DEBUG
void ProviderDlg::AssertValid() const
{
	CFormView::AssertValid();
}

void ProviderDlg::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// ProviderDlg message handlers

void ProviderDlg::OnInitialUpdate() 
{
	CFormView::OnInitialUpdate();
	// TODO: Add your specialized code here and/or call the base class
	CMyMdi Mdi;
	Mdi.SetSubView((CWnd*)GetParent(), (CWnd*)this);
	
	// Here we create the outbar control using the splitter as its parent
	// and setting its id to the first pane.
	CRect rc2;
	GetWindowRect(rc2);
	::MoveWindow(m_hWnd,g_rc.left,g_rc.top,g_rc.Width(),g_rc.Height(),TRUE);

 	EnumChildWindows(m_hWnd,(WNDENUMPROC)EnumChildProc,0);
 


	m_static1.SetFont (&g_titlefont);

	m_List1.SetHeadings( "��Ӧ�̱��, 60;��Ӧ������, 60;��ַ, 60;�绰, 60;����, 60;��ַ, 60" );
 	m_List1.LoadColumnInfo (104);

	GetData();
}

void ProviderDlg::FillGrid()
{
	m_List1.DeleteAllItems2 ();
	int ii=0;
	m_List1.m_arLabels.SetSize( m_List1array.GetSize (), 1 );
	int count=0;
	for(ii=0; ii<m_List1.m_arLabels.GetSize (); ii++)
	{
		m_List1.m_arLabels.ElementAt (count++).Copy (m_List1array.ElementAt (ii));
	}
	m_List1.m_arLabels.SetSize(count, 1);
	ii=count;
	m_List1.m_LabelCount=ii;
	m_List1.SetItemCountEx (ii);

    OnBUTadd() ;
}

void ProviderDlg::OnBUTclose() 
{
	// TODO: Add your control notification handler code here
	GetParent()->SendMessage(WM_CLOSE);
}

void ProviderDlg::ClearCtrl()
{
	m_address = _T("");
	m_bz = _T("");
	m_fax = _T("");
	m_id = _T("");
	m_name = _T("");
	m_netaddress = _T("");
	m_phone = _T("");
	UpdateData(false);
}

void ProviderDlg::OnClickList2(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	ListSelChange();
	*pResult = 0;
}

void ProviderDlg::ListSelChange()
{
 	POSITION pos; 
	pos=m_List1.GetFirstSelectedItemPosition();	
	if(pos==NULL)
	{OnBUTadd() ;
		return;
	}
	int iItem=m_List1.GetNextSelectedItem(pos);
	
	m_oldid=m_List1.GetItemText (iItem, 0);	
	m_oldname=m_List1.GetItemText (iItem, 1);	
    for(int ii=0; ii<m_List1array.GetSize (); ii++)
	{
		if(m_List1array.ElementAt (ii).ElementAt (0)==m_oldid)
		{
	 
			m_id = m_List1array.ElementAt (ii).ElementAt (0);
			m_name = m_List1array.ElementAt (ii).ElementAt (1); 
			m_address = m_List1array.ElementAt (ii).ElementAt (2); 
			m_phone = m_List1array.ElementAt (ii).ElementAt (3);
			m_fax = m_List1array.ElementAt (ii).ElementAt (4);
			m_netaddress = m_List1array.ElementAt (ii).ElementAt (5);
			m_bz = m_List1array.ElementAt (ii).ElementAt (6);
			UpdateData(false);
			return;
		}
	}
}

void ProviderDlg::OnBUTadd() 
{
	// TODO: Add your control notification handler code here
	m_oldid.Empty ();
	m_oldname.Empty ();
	ClearCtrl();
}

void ProviderDlg::OnBUTsave() 
{
	// TODO: Add your control notification handler code here
	UpdateData();
	if(m_id.IsEmpty () || m_name.IsEmpty () )
	{
		AfxMessageBox("���ϲ�ȫ!", MB_ICONINFORMATION);return;
	}
	CString sql;

	if(m_oldid.IsEmpty ())//����
	{
		if(IsExist())
		{
			AfxMessageBox("���д˱�Ż����ƵĹ�Ӧ��,����������!", MB_ICONINFORMATION);
			return;
		}
sql.Format ("insert into gongyingshang(gyid,gyname,addr,tel,fax,netaddress,bz)\
values('%s','%s','%s','%s','%s','%s','%s')", m_id,m_name,m_address,m_phone,m_fax,m_netaddress,m_bz);
sql+=GYS_REF;
g_sendhead.bsql=1;
	    g_pMainWnd->ProcessChatMessageRequest2(sql);if(g_bSendOK==0)return;
		GetData();
	}
	else//�޸�
	{
		if(m_oldid!=m_id)
		{
		if(IsExistID())
		{
			AfxMessageBox("���д˱�ŵĹ�Ӧ��,����������!", MB_ICONINFORMATION);
			return;
		}
		}
		if(m_oldname!=m_name)
		{
		if(IsExistName())
		{
			AfxMessageBox("���д����ƵĹ�Ӧ��,����������!", MB_ICONINFORMATION);
			return;
		}
		}
sql.Format ("update gongyingshang set gyid='%s',gyname='%s',addr='%s',tel='%s',fax='%s',netaddress='%s',bz='%s' where gyid='%s' ", m_id,m_name,m_address,m_phone,m_fax,m_netaddress,m_bz, m_oldid);
sql+=GYS_REF;
g_sendhead.bsql=1;
	    g_pMainWnd->ProcessChatMessageRequest2(sql);if(g_bSendOK==0)return;
		GetData();
	}
}

void ProviderDlg::OnBUTdel() 
{
	// TODO: Add your control notification handler code here
	POSITION pos; 
	pos=m_List1.GetFirstSelectedItemPosition();	
	if(pos==NULL)
	{
		return;	
	}
	if(AfxMessageBox("ȷ��ɾ����?", MB_YESNO|MB_ICONINFORMATION)!=IDYES)return;
	int iItem=m_List1.GetNextSelectedItem(pos);
	CString id=m_List1.GetItemText (iItem, 0);
	CString sql;
	sql.Format ("delete from gongyingshang where gyid='%s' ", id);
	sql+=GYS_REF;
	g_sendhead.bsql=1;
	    g_pMainWnd->ProcessChatMessageRequest2(sql);if(g_bSendOK==0)return;
		GetData();
}

void ProviderDlg::GetData()
{
	g_sendhead.bsql=0;
	g_sendhead.code[0]=9;
	g_sendhead.tabcount=1;
	g_pMainWnd->ProcessChatMessageRequest2(9);if(g_bSendOK==0)return;
	DataToArray(&m_List1array);
	FillGrid();
}

BOOL ProviderDlg::IsExist()
{
	for(int i=0; i<m_List1array.GetSize (); i++)
	{
    	if(m_id==m_List1array.ElementAt (i).ElementAt (0))return 1;
    	if(m_name==m_List1array.ElementAt (i).ElementAt (1))return 1;
	}
	return 0;
}
BOOL ProviderDlg::IsExistID()
{
	for(int i=0; i<m_List1array.GetSize (); i++)
	{
    	if(m_id==m_List1array.ElementAt (i).ElementAt (0))return 1;
	}
	return 0;
}
BOOL ProviderDlg::IsExistName()
{
	for(int i=0; i<m_List1array.GetSize (); i++)
	{
    	if(m_name==m_List1array.ElementAt (i).ElementAt (1))return 1;
	}
	return 0;
}

BOOL ProviderDlg::PreTranslateMessage(MSG* pMsg) 
{
	// TODO: Add your specialized code here and/or call the base class
	try
	{
	if(pMsg->message==WM_KEYDOWN)
	{
		switch (pMsg->wParam)
		{
		case 0x43: // copy
			if ( ( GetKeyState( VK_CONTROL ) & 0x80 ) )
			{
				GetFocus()->SendMessage(WM_COPY);
				return TRUE;
			}
			break;
		case 0x56: //Ctrl + V:
			if ( ( GetKeyState( VK_CONTROL ) & 0x80 ) )
			{
				GetFocus()->SendMessage(WM_PASTE);
				return TRUE;
			}
			break;
		case 0x58: // cut
			if ( ( GetKeyState( VK_CONTROL ) & 0x80 ) )
			{
				GetFocus()->SendMessage(WM_CUT);
				return TRUE;
			}
			break;
		case 0x5A: //undo
		case 0x59: //redo
			if ( ( GetKeyState( VK_CONTROL ) & 0x80 ) )
			{
				GetFocus()->SendMessage(WM_UNDO);
				return TRUE;
			}
			break;
		}
	}
	return CFormView::PreTranslateMessage(pMsg);
	}
	catch(...)
	{
	}
}