// ClientContract.cpp : implementation file
//

#include "stdafx.h"
#include "ylgl.h"
#include "ClientContract.h"

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

/////////////////////////////////////////////////////////////////////////////
// ClientContract dialog


ClientContract::ClientContract(CWnd* pParent /*=NULL*/)
	: CDialog(ClientContract::IDD, pParent)
{
	//{{AFX_DATA_INIT(ClientContract)
	//}}AFX_DATA_INIT
}


void ClientContract::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(ClientContract)
	DDX_Control(pDX, IDC_LIST1, m_List1);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(ClientContract, CDialog)
	//{{AFX_MSG_MAP(ClientContract)
	ON_BN_CLICKED(IDC_BUTadd, OnBUTadd)
	ON_BN_CLICKED(IDC_BUTdel, OnBUTdel)
	ON_BN_CLICKED(IDC_BUTshow, OnBUTshow)
	ON_NOTIFY(NM_DBLCLK, IDC_LIST1, OnDblclkList1)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// ClientContract message handlers

BOOL ClientContract::OnInitDialog()
{
	CDialog::OnInitDialog();

	// TODO: Add extra initialization here
	if (IsHasRights2new(16) == 1 || IsHasRights2new(49) == 1)
	{
		GetDlgItem(IDC_BUTadd)->EnableWindow(1);    GetDlgItem(IDC_BUTdel)->EnableWindow(1);
	}
	else
	{
		GetDlgItem(IDC_BUTadd)->EnableWindow(0);	GetDlgItem(IDC_BUTdel)->EnableWindow(0);
	}


	m_List1.SetHeadings("���,50;�ϴ�����,150");
	m_List1.LoadColumnInfo(304);

	GetData();







	this->CenterWindow(g_pMainWnd);


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

void ClientContract::OnCancel()
{
	// TODO: Add extra cleanup here

	CDialog::OnCancel();
}

void ClientContract::OnOK()
{
	// TODO: Add extra validation here



	CDialog::OnOK();
}


void ClientContract::FillGrid()
{
	UpdateData();

	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);
}
extern void SaveImageToFile2(Image *img, CString path, ULONG quality);
void ClientContract::OnBUTadd()
{
	// TODO: Add your control notification handler code here

	CFileDialog fdlg(true, NULL, "", OFN_HIDEREADONLY, "jpg files(*jpg)|*.jpg||");
	if (fdlg.DoModal() != IDOK)return;
	CString path = fdlg.GetPathName();
	Image *m_pImg = NULL;
	if (m_pImg)delete m_pImg; m_pImg = NULL;
	::LoadImageFromBuf(&m_pImg, path);
	if (m_pImg == NULL)
	{
		AfxMessageBox("��ЧͼƬ�ļ�!"); return;
	}
	Image *simg2 = NULL;
	CRect rc2(0, 0, 2000, 2000);
	RectFitDes(m_pImg->GetWidth(), m_pImg->GetHeight(), rc2);
	simg2 = m_pImg->GetThumbnailImage(rc2.Width(), rc2.Height(), NULL, NULL);
	Graphics graphic2(simg2);//��ֹGetThumbnailImageӰ������
	graphic2.Clear(Color(255, 255, 255, 255));
	graphic2.DrawImage(m_pImg, 0, 0, simg2->GetWidth(), simg2->GetHeight());
	if (m_pImg)delete m_pImg; m_pImg = NULL;
	path = g_mainpath + "\\1.jpg";
	::SaveImageToFile2(simg2, path, 40); delete simg2;

	CFile fp;
	if (!fp.Open(path, CFile::modeRead))
	{
		AfxMessageBox("�ļ���ʧ��!");
		return;
	}
	DWORD length = fp.GetLength();

	BYTE *m_pData = new BYTE[length + 100];
	fp.Read(m_pData, length);
	fp.Close();
	::DeleteFile(path);			// ɾ��1.jpg�ļ�;
	char no[100];
	memset(no, 0, 100);
#ifdef VC60
	strcpy(no, m_id + ";");
#else
	strcpy_s(no, 100, m_id + ";");
#endif
	
	memcpy(m_pData + length, no, 100);

	g_nSendCode = 39;
	g_pMainWnd->ProcessChatMessageRequest2(m_pData, length + 100);
	g_nSendCode = 0;
	delete[]m_pData;
	if (g_bSendOK == 0)
	{
		if (m_pImg)delete m_pImg; m_pImg = NULL;
		return;
	}
	AfxMessageBox("�ϴ��ɹ�!"); GetData();
}

void ClientContract::OnBUTdel()
{
	// TODO: Add your control notification handler code here

	POSITION pos;
	pos = m_List1.GetFirstSelectedItemPosition();
	if (pos == NULL)
	{
		AfxMessageBox("����ѡ����Ҫɾ���ĺ�ͬ");
		return;
	}
	if (AfxMessageBox("�Ƿ�ɾ���˺�ͬ, ȷ����?", MB_YESNO | MB_ICONINFORMATION) != IDYES)return;
	int iItem = m_List1.GetNextSelectedItem(pos);
	CString date = m_List1.GetItemText(iItem, 1);

	BYTE *m_pData = new BYTE[100];

	char no[100];
	memset(no, 0, 100);
#ifdef VC60
	strcpy(no, m_id + ";" + date);
#else
	strcpy_s(no, 100, m_id + ";" + date);
#endif
	memcpy(m_pData, no, 100);

	g_nSendCode = 39;
	g_pMainWnd->ProcessChatMessageRequest2(m_pData, 100);
	g_nSendCode = 0;
	delete[]m_pData;
	if (g_bSendOK == 0)
	{
		return;
	}
	AfxMessageBox("ɾ���ɹ�!"); GetData();
}



void ClientContract::GetData()
{
	CString filter = "id='" + m_id + "'";
	g_sendhead.bsql = 0;
	g_sendhead.code[0] = 230;
	g_sendhead.tabcount = 1;
	g_pMainWnd->ProcessChatMessageRequest2(filter); if (g_bSendOK == 0)return;
	DataToArray(&m_List1array);

	FillGrid();
}
void ClientContract::OnBUTshow()
{
	// TODO: Add your control notification handler code here
	POSITION pos;
	pos = m_List1.GetFirstSelectedItemPosition();
	if (pos == NULL)
	{
		AfxMessageBox("����ѡ����Ҫ�鿴�ĺ�ͬ!");
		return;
	}
	int iItem = m_List1.GetNextSelectedItem(pos);
	CString date = m_List1.GetItemText(iItem, 1);
	char no[100];
	memset(no, 0, 100);
#ifdef VC60
	strcpy(no, m_id + ";" + date);
#else
	strcpy_s(no, 100, m_id + ";" + date);
#endif
	g_nSendCode = 40;
	g_pMainWnd->ProcessChatMessageRequest2((BYTE*)no, 100);
	g_nSendCode = 0;
	if (g_bSendOK == 0)
	{
		return;
	}


	CString path = g_mainpath + "\\1.jpg";
	::DeleteFile(path);			// ɾ��1.jpg�ļ�;
	CFile fp;
	fp.Open(path, CFile::modeCreate | CFile::modeWrite);
	fp.Write(g_pData, g_nLeng);
	fp.Close();
	ShellExecute(NULL, _T("open"), path, NULL, NULL, SW_SHOWMAXIMIZED);


}

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