// HospitalClientAlarm.cpp : implementation file
//
#include "stdafx.h"
#include "ylgl.h"
#include "HospitalClientAlarm.h"
#include "MyMdi.H"
#include "ModifyDinDan.h"
#include "NeroDlg.h"
#include "ClientRequirement.h"
#include "./helper/ffsco.h"
#include "SendMsgDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#pragma comment(lib, "Shlwapi.lib")
/////////////////////////////////////////////////////////////////////////////
// HospitalClientAlarm

IMPLEMENT_DYNCREATE(HospitalClientAlarm, MyFormView)
HospitalClientAlarm::HospitalClientAlarm()
: MyFormView(HospitalClientAlarm::IDD)
{
	m_date1 = GetTmFromStr(g_date);
	m_date2 = m_date1+CTimeSpan(30, 0, 0, 0);
	//}}AFX_DATA_INIT
}

HospitalClientAlarm::~HospitalClientAlarm()
{
}

void HospitalClientAlarm::DoDataExchange(CDataExchange* pDX)
{
	MyFormView::DoDataExchange(pDX);
	
	DDX_Control(pDX, IDC_LIST2, m_List1);
	DDX_Control(pDX, IDC_STATIC1, m_static1);
	DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKERdate1, m_date1);
	DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKERdate2, m_date2);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(HospitalClientAlarm, MyFormView)

ON_BN_CLICKED(IDC_BUTclose, OnBUTclose)
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
ON_CBN_SELCHANGE(IDC_COMBO1, OnSelchangeCombo1)
ON_WM_TIMER()
ON_BN_CLICKED(IDC_BUTshowphoto, OnBUTshowphoto)
ON_BN_CLICKED(IDC_BUTexportphoto, OnBUTexportphoto)
ON_BN_CLICKED(IDC_BUTimportphoto, OnBUTimportphoto)
ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST2, OnItemchangedList2)
ON_BN_CLICKED(IDC_BUTburncd, OnBUTHospitalClientAlarm)
ON_NOTIFY(NM_DBLCLK, IDC_LIST2, OnDblclkList2)
ON_BN_CLICKED(IDC_BUTburncd2, OnBUTburncd2)
ON_BN_CLICKED(IDC_BUTsendmsg, OnBUTsendmsg)
ON_BN_CLICKED(IDC_BUTprint3, OnBUTprint3)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// HospitalClientAlarm diagnostics

#ifdef _DEBUG
void HospitalClientAlarm::AssertValid() const
{
	MyFormView::AssertValid();
}

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

/////////////////////////////////////////////////////////////////////////////
// HospitalClientAlarm message handlers

void HospitalClientAlarm::OnInitialUpdate() 
{
	MyFormView::OnInitialUpdate();
	
	GetDlgItem(IDC_BUTprint3)->EnableWindow(IsHasRights2new(49));
	// 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);
	
	int idarray[]={IDC_BUTburncd2,IDC_BUTsendmsg,IDC_BUTprint3,IDC_BUTclose};
	int idcount=4;
	int btnwid;
	CRect prerc;
	for(int a=idcount-2; a>=0; a--)
	{
		GetDlgItem(idarray[a+1])->GetWindowRect (prerc);
		ScreenToClient(prerc);
		GetDlgItem(idarray[a])->GetWindowRect (rc2);
		ScreenToClient(rc2);
		btnwid=rc2.Width ();
		rc2.right =prerc.left ;
		rc2.left =rc2.right -btnwid;
		GetDlgItem(idarray[a])->MoveWindow (rc2);
	}
	
	m_static1.SetFont (&g_titlefont);
	
#if 0 // Jeff hospitalview������2�ֶ�,GetData�﷢�͵IJ�ѯ��hospitalview��ͼ�ģ����Ը��б�ͷҲҪ��ʾ;
	m_List1.SetHeadings("��������,100;�ͻ�����,100;��������,100;�����Ա�,100;����,100;���,100;ҽԺ,100;�绰1,100;�绰2,100;QQ,100;��ַ1,100;��ַ2,100;��ַ3,100;¼������,100;����,100;¼��Ա,100;ҵ������,100;ҵ������,100;ԤԼ����,100;��������,100;���ŵ�ַ,100;��ע,100" );
#else
	m_List1.SetHeadings("��������,100;�ͻ�����,100;��������,100;�����Ա�,100;��������,100;��������,100;����,100;���,100;ҽԺ,100;�绰1,100;�绰2,100;QQ,100;��ַ1,100;��ַ2,100;��ַ3,100;¼������,100;����,100;¼��Ա,100;ҵ������,100;ҵ������,100;ԤԼ����,100;��������,100;���ŵ�ַ,100;��ע,100" );
#endif

	//	m_List1.LoadColumnInfo (144);
	m_List1.m_bSortSupport=0;
	
	GetData();
}

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


void HospitalClientAlarm::OnSelchangeCombo1() 
{
	// TODO: Add your control notification handler code here
	SetTimer(1, 100, NULL);	
}

void HospitalClientAlarm::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	KillTimer(nIDEvent);
	OnButton1();
}


BOOL HospitalClientAlarm::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 VK_RETURN:
				OnButton1();
				return 1;
			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 MyFormView::PreTranslateMessage(pMsg);
	}
	catch(...)
	{
	}
	
}

void HospitalClientAlarm::GetSavePath(CString &path)
{
}

int HospitalClientAlarm::FindArray(CStringArray *pArray, CString Str)
{
	return 0;
}

void HospitalClientAlarm::GetNo(CString str, CStringArray &array)
{
	
}

CString HospitalClientAlarm::GetSelName(CString name, CArray<CStringArray, CStringArray>&spnamearray)
{
	return "";
}

void HospitalClientAlarm::OnBUTexportphoto() 
{
}

void HospitalClientAlarm::OnBUTimportphoto() 
{
}

void HospitalClientAlarm::OnBUTshowphoto() 
{
	// TODO: Add your control notification handler code here
}

void HospitalClientAlarm::OnButton1() 
{
	// TODO: Add your control notification handler code here
	FillGrid();
}

void HospitalClientAlarm::OnItemchangedList2(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
	// TODO: Add your control notification handler code here
	*pResult = 0;
}

void HospitalClientAlarm::OnBUTHospitalClientAlarm() 
{
	// TODO: Add your control notification handler code here
}

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

void HospitalClientAlarm::OnBUTburncd2() 
{
	// TODO: Add your control notification handler code here
    POSITION pos;
	pos=m_List1.GetFirstSelectedItemPosition();	
	if(pos==NULL)
	{
		AfxMessageBox("����ѡ����Ҫȡ������Ŀ!", MB_ICONINFORMATION);
		return;
	}
	if(AfxMessageBox("ȷ��ȡ������Ŀ������?", MB_YESNO|MB_ICONINFORMATION)!=IDYES)return;
	int iItem=m_List1.GetNextSelectedItem(pos);	
	CString businesstype=m_List1.GetItemText (iItem, 16);
	CString businessintention=m_List1.GetItemText (iItem, 17);
	CString bookingdate=m_List1.GetItemText (iItem, 18);
	CString alarmdate=m_List1.GetItemText (iItem, 19);
	
	CString id=m_List1.GetItemText (iItem, 0);
	while(id=="")
	{
		iItem--;
		id=m_List1.GetItemText (iItem, 0);
	}
	
	CString sql;
	
	sql.Format ("update [hospitalclientcontactreg] set [alarmcheck]='������' where [businesstype]='%s' and [businessintention]='%s' and [bookingdate]='%s' and [alarmdate]='%s' and [id]='%s'",businesstype,businessintention,bookingdate,alarmdate, id);
	
	g_sendhead.bsql=1;
	g_pMainWnd->ProcessChatMessageRequest2(sql);if(g_bSendOK==0)return;
	AfxMessageBox("����ɹ�!", MB_ICONINFORMATION);
	GetData();
	
}

// Jeff :���Ͷ���;
void HospitalClientAlarm::OnBUTsendmsg() 
{
	// TODO: Add your control notification handler code here
    POSITION pos;
	pos=m_List1.GetFirstSelectedItemPosition();	
	if(pos==NULL)
	{
		AfxMessageBox("����ѡ����Ҫ���Ͷ��ŵĿ���!", MB_ICONINFORMATION);
		return;
	}
	int iItem;	
	CStringArray array;
	while (pos)
    {
#if 0	// Jeff:�б�����2�ֶ�,��Ҫ��λ;
        iItem = m_List1.GetNextSelectedItem(pos);
		if(!m_List1.GetItemText (iItem,  7).IsEmpty ())
			array.Add (m_List1.GetItemText (iItem,  7));
		
		if(!m_List1.GetItemText (iItem,  8).IsEmpty ())
			array.Add (m_List1.GetItemText (iItem,  8));
#else
		iItem = m_List1.GetNextSelectedItem(pos);
		if(!m_List1.GetItemText (iItem,  9).IsEmpty ())
			array.Add (m_List1.GetItemText (iItem,  9));
		
		if(!m_List1.GetItemText (iItem,  10).IsEmpty ())
			array.Add (m_List1.GetItemText (iItem,  10));
#endif
    }
	SendMsgDlg dlg;
	dlg.m_mode=2;
	dlg.m_pArray=&array;
	dlg.DoModal ();		
}

void HospitalClientAlarm::OnBUTprint3() 
{
	ListToXLS(&m_List1, "c:\\�����б�.xls", 0);	
}

void HospitalClientAlarm::GetData()
{
	g_sendhead.bsql=0;
	g_sendhead.code[0]=207;
	g_sendhead.tabcount=1;
	CString filter="alarmcheck='����'";
	g_pMainWnd->ProcessChatMessageRequest2(filter);if(g_bSendOK==0)return;
	DataToArray(&m_List1array);
	if(m_List1array.GetSize ())
	{
		CString id=m_List1array.ElementAt (0).ElementAt (0);
		for(int ii=1; ii<m_List1array.GetSize (); ii++)
		{
			if(m_List1array.ElementAt (ii).ElementAt (0)==id)
			{
				m_List1array.ElementAt (ii).SetAt (0, "");
				m_List1array.ElementAt (ii).SetAt (1, "");
				m_List1array.ElementAt (ii).SetAt (2, "");
				m_List1array.ElementAt (ii).SetAt (3, "");
				m_List1array.ElementAt (ii).SetAt (4, "");
				m_List1array.ElementAt (ii).SetAt (5, "");
				m_List1array.ElementAt (ii).SetAt (6, "");
				m_List1array.ElementAt (ii).SetAt (7, "");
				m_List1array.ElementAt (ii).SetAt (8, "");
				m_List1array.ElementAt (ii).SetAt (9, "");
				m_List1array.ElementAt (ii).SetAt (10, "");
				m_List1array.ElementAt (ii).SetAt (11, "");
				m_List1array.ElementAt (ii).SetAt (12, "");
				m_List1array.ElementAt (ii).SetAt (13, "");
				m_List1array.ElementAt (ii).SetAt (14, "");
				m_List1array.ElementAt (ii).SetAt (15, "");
				
				m_List1array.ElementAt (ii).SetAt (22, "");
				m_List1array.ElementAt (ii).SetAt (23, "");

				m_List1array.ElementAt (ii).SetAt (23, ""); // Jeff Add 20014.05.20
				m_List1array.ElementAt (ii).SetAt (24, ""); // Jeff Add 20014.05.20
			}
			else
				id=m_List1array.ElementAt (ii).ElementAt (0);
		}
	}
    FillGrid();
}

void HospitalClientAlarm::FillGrid()
{
	UpdateData();
	m_List1.DeleteAllItems2 ();
	int ii=0;
	int maxsize=m_List1array.GetSize ();
	m_List1.m_arLabels.SetSize( m_List1array.GetSize (), 1 );
	CArray<int,int>signarray;

	int i = 0;
	for( i=0; i<maxsize; i++)
		signarray.Add(1);
	int count=0;
	CArray<int,int>posarray;
	
	{
		CString date1=m_date1.Format("%Y-%m-%d");
		CString date2=m_date2.Format("%Y-%m-%d");
		{
			BOOL bFinded=0;	 
			for(ii=0; ii<m_List1.m_arLabels.GetSize (); ii++)
			{	
				if(0)//bFinded && m_List1array.ElementAt (ii).ElementAt (0).IsEmpty ())
				{
					continue;
				}
				
				// Jeff :hospitalview��ͼ������2���ֶ�,array��Ҫ��λ;
				//if(m_List1array.ElementAt (ii).ElementAt (19)<date1 || m_List1array.ElementAt (ii).ElementAt (19)>date2)
				if(m_List1array.ElementAt (ii).ElementAt (21)<date1 || m_List1array.ElementAt (ii).ElementAt (21)>date2)
				{
					signarray.SetAt(ii, 0);
					bFinded=0;
					continue;
				}
				bFinded=1;
			}
		}
		
		
		for(ii=0; ii<signarray.GetSize (); ii++)
		{
			if(signarray.ElementAt(ii))
			{
				m_List1.m_arLabels.ElementAt (count++).Copy (m_List1array.ElementAt (ii));
				posarray.Add(ii);
			}
		}
	}

	m_List1.m_arLabels.SetSize(count, 1);
	{
		for( i=0; i<posarray.GetSize(); i++)
		{
			int pos=posarray.ElementAt (i);
			CString id=m_List1array.ElementAt (pos).ElementAt(0);
			while(id=="")
			{
				pos--;
				id=m_List1array.ElementAt (pos).ElementAt(0);
			}
			posarray.SetAt(i, pos);
		}
		
		for( i=0; i<count; i++)
		{
			if(m_List1.m_arLabels.ElementAt(i).ElementAt(0)=="")
			{
				int pos=posarray.ElementAt (i);
				m_List1.m_arLabels.ElementAt (i).SetAt (0, m_List1array.ElementAt (pos).ElementAt(0) );
				m_List1.m_arLabels.ElementAt (i).SetAt (1, m_List1array.ElementAt (pos).ElementAt(1) );
				m_List1.m_arLabels.ElementAt (i).SetAt (2, m_List1array.ElementAt (pos).ElementAt(2) );
				m_List1.m_arLabels.ElementAt (i).SetAt (3, m_List1array.ElementAt (pos).ElementAt(3) );
				m_List1.m_arLabels.ElementAt (i).SetAt (4, m_List1array.ElementAt (pos).ElementAt(4) );
				m_List1.m_arLabels.ElementAt (i).SetAt (5, m_List1array.ElementAt (pos).ElementAt(5) );
				m_List1.m_arLabels.ElementAt (i).SetAt (6, m_List1array.ElementAt (pos).ElementAt(6) );
				m_List1.m_arLabels.ElementAt (i).SetAt (7, m_List1array.ElementAt (pos).ElementAt(7) );
				m_List1.m_arLabels.ElementAt (i).SetAt (8, m_List1array.ElementAt (pos).ElementAt(8) );
				m_List1.m_arLabels.ElementAt (i).SetAt (9, m_List1array.ElementAt (pos).ElementAt(9) );
				m_List1.m_arLabels.ElementAt (i).SetAt (10, m_List1array.ElementAt (pos).ElementAt(10) );
				m_List1.m_arLabels.ElementAt (i).SetAt (11, m_List1array.ElementAt (pos).ElementAt(11) );
				m_List1.m_arLabels.ElementAt (i).SetAt (12, m_List1array.ElementAt (pos).ElementAt(12) );
				m_List1.m_arLabels.ElementAt (i).SetAt (13, m_List1array.ElementAt (pos).ElementAt(13) );		
				m_List1.m_arLabels.ElementAt (i).SetAt (14, m_List1array.ElementAt (pos).ElementAt(14) );
				m_List1.m_arLabels.ElementAt (i).SetAt (15, m_List1array.ElementAt (pos).ElementAt(15) );
				
				m_List1.m_arLabels.ElementAt (i).SetAt (21, m_List1array.ElementAt (pos).ElementAt(21) );
				m_List1.m_arLabels.ElementAt (i).SetAt (22, m_List1array.ElementAt (pos).ElementAt(22) );

				m_List1.m_arLabels.ElementAt (i).SetAt (23, m_List1array.ElementAt (pos).ElementAt(23) );	// add by Jeff
				m_List1.m_arLabels.ElementAt (i).SetAt (24, m_List1array.ElementAt (pos).ElementAt(24) );	// add by Jeff
			}
		}
		if(m_List1.m_arLabels.GetSize ())
		{
			CString id=m_List1.m_arLabels.ElementAt (0).ElementAt (0);
			for(int ii=1; ii<m_List1.m_arLabels.GetSize (); ii++)
			{
				if(m_List1.m_arLabels.ElementAt (ii).ElementAt (0)==id)
				{
					m_List1.m_arLabels.ElementAt (ii).SetAt (0, "");
					m_List1.m_arLabels.ElementAt (ii).SetAt (1, "");
					m_List1.m_arLabels.ElementAt (ii).SetAt (2, "");
					m_List1.m_arLabels.ElementAt (ii).SetAt (3, "");
					m_List1.m_arLabels.ElementAt (ii).SetAt (4, "");
					m_List1.m_arLabels.ElementAt (ii).SetAt (5, "");
					m_List1.m_arLabels.ElementAt (ii).SetAt (6, "");
					m_List1.m_arLabels.ElementAt (ii).SetAt (7, "");
					m_List1.m_arLabels.ElementAt (ii).SetAt (8, "");
					m_List1.m_arLabels.ElementAt (ii).SetAt (9, "");
					m_List1.m_arLabels.ElementAt (ii).SetAt (10, "");
					m_List1.m_arLabels.ElementAt (ii).SetAt (11, "");
					m_List1.m_arLabels.ElementAt (ii).SetAt (12, "");
					m_List1.m_arLabels.ElementAt (ii).SetAt (13, "");
					m_List1.m_arLabels.ElementAt (ii).SetAt (14, "");
					m_List1.m_arLabels.ElementAt (ii).SetAt (15, "");
					
					m_List1.m_arLabels.ElementAt (ii).SetAt (21, "");
					m_List1.m_arLabels.ElementAt (ii).SetAt (22, "");

					m_List1array.ElementAt (ii).SetAt (23, ""); // Jeff Add 20014.05.20
					m_List1array.ElementAt (ii).SetAt (24, ""); // Jeff Add 20014.05.20
				}
				else
					id=m_List1.m_arLabels.ElementAt (ii).ElementAt (0);
			}
		}
	}
	
	ii=count;
	m_List1.m_LabelCount=ii;
	m_List1.SetItemCountEx (ii);
	CString str;
	str.Format ("��Ŀ:%d", ii);
	SetDlgItemText(IDC_STATIC2, str);
}