// DLG_GZMsg_JL.cpp: 实现文件
//

#include "stdafx.h"
#include "SmsManager.h"
#include "DLG_GZMsg_JL.h"
#include "afxdialogex.h"
#include "MainFrm.h"

// DLG_GZMsg_JL 对话框

IMPLEMENT_DYNAMIC(DLG_GZMsg_JL, CDialogEx)

DLG_GZMsg_JL::DLG_GZMsg_JL(CWnd* pParent /*=nullptr*/)
	: CDialogEx(IDD_K_GZMSG_JL, pParent)
{
	m_pMainFrame=NULL;
	m_lYWYID=0;
	m_pYWYData = NULL;
	m_lShowType = 0;
}

DLG_GZMsg_JL::~DLG_GZMsg_JL()
{
}

void DLG_GZMsg_JL::DoDataExchange(CDataExchange* pDX)
{
	CDialogEx::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_GZMSG_JL_LIST, m_wndList);
	DDX_Control(pDX, IDD_K_GZMSG_JL_MON, m_wndMon);
	DDX_Control(pDX, IDD_K_GZMSG_JL_PK1, m_wndPK1);
	DDX_Control(pDX, IDD_K_GZMSG_JL_PK2, m_wndPK2);
	DDX_Control(pDX, IDD_K_GZMSG_JL_PKRATIO, m_wndPKRatio);
	DDX_Control(pDX, IDD_K_GZMSG_JL_TYPE, m_wndType);
}


BEGIN_MESSAGE_MAP(DLG_GZMsg_JL, CDialogEx)
	ON_BN_CLICKED(IDD_K_GZMSG_JL_QUERY, &DLG_GZMsg_JL::OnBnClickedKGzmsgJlQuery)
	ON_NOTIFY(NM_RCLICK, IDC_GZMSG_JL_LIST, &DLG_GZMsg_JL::OnRclickGzmsgJlList)
	ON_COMMAND(MENU_GZMSG_JL_COPY, On_GZMsg_Copy)
	ON_COMMAND(MENU_GZMSG_JL_DEL, On_GZMsg_Del)
	ON_CBN_SELCHANGE(IDD_K_GZMSG_JL_TYPE, &DLG_GZMsg_JL::OnSelchangeIddKGzmsgJlType)
END_MESSAGE_MAP()


// DLG_GZMsg_JL 消息处理程序


void DLG_GZMsg_JL::OnBnClickedKGzmsgJlQuery()
{
	REQ_GZMsg_JL * pJL = new REQ_GZMsg_JL; memset(pJL, 0, sizeof(REQ_GZMsg_JL));
	pJL->lType = m_wndType.GetCurSel();
	CString strMon;
	m_wndMon.GetWindowText(strMon);
	_tcscpy(pJL->szMon, strMon);
	pJL->lPKRatio = m_wndPKRatio.GetCurSel();
	pJL->lPK1 = m_wndPK1.GetItemData(m_wndPK1.GetCurSel());
	pJL->lPK2 = m_wndPK2.GetItemData(m_wndPK2.GetCurSel());

	if (pJL->lType == 1)  //PK
	{
		if (pJL->lPK1 == pJL->lPK2)
		{
			MessageBox(_T("挑战者与被挑战者不能相同!"), _T("错误"), MB_ICONWARNING);
			m_wndPK1.SetFocus();
			return;
		}
		if (pJL->lPK1>= 500000 && pJL->lPK2< 500000)
		{
			MessageBox(_T("部门与个人不能互相挑战!"), _T("错误"), MB_ICONWARNING);
			m_wndPK1.SetFocus();
			return;
		}
		if (pJL->lPK1 < 500000 && pJL->lPK2 >= 500000)
		{
			MessageBox(_T("部门与个人不能互相挑战!"), _T("错误"), MB_ICONWARNING);
			m_wndPK1.SetFocus();
			return;
		}
	}

	m_pMainFrame->SendFrame(SMSFUNC_GZMSG_JL, (BYTE*)pJL, sizeof(REQ_GZMsg_JL));

}

BOOL DLG_GZMsg_JL::ProcessSocket(Socket_Head_Add *pHead, BYTE* pFrame)
{

	CString str;
	if (pHead->lFuncType == SMSFUNC_GZMSG_JL_PARA)
	{

		return true;
	}
	if (pHead->lFuncType == SMSFUNC_GZMSG_JL)
	{
		ANS_GZMsg_JL     * pJL = (ANS_GZMsg_JL     *)pFrame;
		ANS_GZMsg_JL_Data * pJLData = (ANS_GZMsg_JL_Data *)(pFrame + sizeof(ANS_GZMsg_JL));
		ANS_GZMsg_JL_Data2 * pJLData2 = (ANS_GZMsg_JL_Data2 *)(pFrame + sizeof(ANS_GZMsg_JL));

		if (!pJL->bOK)   //权限不足,返回错误
		{
			return true;
		}

		if (pJL->lType == 0)
		{
			CString str;
			m_wndList.DeleteAllItems();
			m_wndList.DeleteAllColumns();
			if (m_lShowType == 1)
				m_wndList.SetHeadings(_T("序号,50; 部门,100; 客户经理,100;  上月,100;上月得分,100;  本月,100;  本月A,100;  本月B,100;  本月C,100;本月总分,100;   平均分,100;"));
			else
				m_wndList.SetHeadings(_T("序号,50; 部门,100; 客户经理,100;  上月,100;平均业绩,100;平均客户,80;上月业绩,100;上月客户,80;  上月A,100;  上月B,100;  上月C,100;上月总分,100;  本月,100;平均业绩,100;平均客户,80;本月业绩,100;本月客户,80;  本月A,100;  本月B,100;  本月C,100;本月总分,100;   平均分,100;"));


			for (int i = 0; i < pJL->lCount; i++)
			{
				str.Format(_T("%d"), i + 1);
				m_wndList.InsertItem(i, str, 0);
				int iTemp = 1;
				m_wndList.SetItemText(i, iTemp++, pJLData->szGroupName);
				m_wndList.SetItemText(i, iTemp++, pJLData->szYWYName);
				str.Format(_T("%04d年%02d月"), pJLData->tMon2.wYear, pJLData->tMon2.wMonth);
				m_wndList.SetItemText(i, iTemp++, str);

				if (m_lShowType != 1)
				{
					str.Format(_T("%10.2f"), pJLData->fAvegYZ2);
					m_wndList.SetItemText(i, iTemp++, str);
					str.Format(_T("%10.2f"), pJLData->fAvegKH2);
					m_wndList.SetItemText(i, iTemp++, str);
					str.Format(_T("%10.2f"), pJLData->fYZ2);
					m_wndList.SetItemText(i, iTemp++, str);
					str.Format(_T("%6d"), (long)pJLData->fKH2);
					m_wndList.SetItemText(i, iTemp++, str);
					str.Format(_T("%10.2f"), pJLData->fA2);
					m_wndList.SetItemText(i, iTemp++, str);
					str.Format(_T("%10.2f"), pJLData->fB2);
					m_wndList.SetItemText(i, iTemp++, str);
					str.Format(_T("%10.2f"), pJLData->fC2);
					m_wndList.SetItemText(i, iTemp++, str);
				}
				str.Format(_T("%10.2f"), pJLData->fT2);
				m_wndList.SetItemText(i, iTemp++, str);

				str.Format(_T("%04d年%02d月"), pJLData->tMon1.wYear, pJLData->tMon1.wMonth);
				m_wndList.SetItemText(i, iTemp++, str);
				if (m_lShowType != 1)
				{
					str.Format(_T("%10.2f"), pJLData->fAvegYZ1);
					m_wndList.SetItemText(i, iTemp++, str);
					str.Format(_T("%10.2f"), pJLData->fAvegKH1);
					m_wndList.SetItemText(i, iTemp++, str);
					str.Format(_T("%10.2f"), pJLData->fYZ1);
					m_wndList.SetItemText(i, iTemp++, str);
					str.Format(_T("%6d"), (long)pJLData->fKH1);
					m_wndList.SetItemText(i, iTemp++, str);
				}
				str.Format(_T("%10.2f"), pJLData->fA1);
				m_wndList.SetItemText(i, iTemp++, str);
				str.Format(_T("%10.2f"), pJLData->fB1);
				m_wndList.SetItemText(i, iTemp++, str);
				str.Format(_T("%10.2f"), pJLData->fC1);
				m_wndList.SetItemText(i, iTemp++, str);
				str.Format(_T("%10.2f"), pJLData->fT1);
				m_wndList.SetItemText(i, iTemp++, str);

				str.Format(_T("%10.2f"), pJLData->fAvg);
				m_wndList.SetItemText(i, iTemp++, str);

				pJLData++;
			}
		}
		if (pJL->lType == 1)
		{
			if (m_lShowType == 1)
			{
				CString str;
				long lItem = m_wndList.GetItemCount();

				str.Format(_T("%d"), lItem + 1);
				m_wndList.InsertItem(lItem, str, 0);
				int iTemp = 1;
				//m_wndList.SetHeadings(_T("序号,50; 挑战者,150;被挑战者,150;挑战目标,100;挑战结果,150; 赢方,150;挑战者-业绩差,200;被挑战者-业绩差,200;"));
				m_wndList.SetItemText(lItem, iTemp++, pJLData2->szPK1);
				m_wndList.SetItemText(lItem, iTemp++, pJLData2->szPK2);
				str.Format(_T("%10.0f%%"), pJLData2->fAddRatio*100.0f);
				m_wndList.SetItemText(lItem, iTemp++, str);
				CString strResult;
				CString strWinner;
				if (pJLData2->bWin)
				{
					strResult = _T("挑战成功!!");
					strWinner = pJLData2->szPK1;
				}
				else
				{
					strResult = _T("挑战失败!!");
					strWinner = pJLData2->szPK2;
				}
				m_wndList.SetItemText(lItem, iTemp++, strResult);
				m_wndList.SetItemText(lItem, iTemp++, strWinner);

				str.Format(_T("%10.2f"), pJLData2->fWin1YZ);
				m_wndList.SetItemText(lItem, iTemp++, str);
				str.Format(_T("%10.2f"), pJLData2->fWin2YZ);
				m_wndList.SetItemText(lItem, iTemp++, str);
			}
			else
			{
				m_wndList.DeleteAllItems();
				m_wndList.DeleteAllColumns();
				m_wndList.SetHeadings(_T("项目,250; 内容,450;"));

				CString str;
				int iTemp = 0;
				m_wndList.InsertItem(iTemp++, _T(""), 1);
				str.Format(_T("    %s PK结果"), pJL->szMon);
				m_wndList.SetItemText(iTemp - 1, 1, str);
				m_wndList.InsertItem(iTemp++, _T(""), 1);
				m_wndList.InsertItem(iTemp++, _T(""), 1);

				m_wndList.InsertItem(iTemp++, _T("挑战者"), 1);
				m_wndList.SetItemText(iTemp - 1, 1, pJLData2->szPK1);
				m_wndList.InsertItem(iTemp++, _T("被挑战者"), 1);
				m_wndList.SetItemText(iTemp - 1, 1, pJLData2->szPK2);
				m_wndList.InsertItem(iTemp++, _T("挑战者-前三月平均业绩"), 1);
				str.Format(_T("%10.2f"), pJLData2->fPK1Pre3);
				m_wndList.SetItemText(iTemp - 1, 1, str);
				m_wndList.InsertItem(iTemp++, _T("被挑战者-前三月平均业绩"), 1);
				str.Format(_T("%10.2f"), pJLData2->fPK2Pre3);
				m_wndList.SetItemText(iTemp - 1, 1, str);

				m_wndList.InsertItem(iTemp++, _T("挑战目标"), 1);
				str.Format(_T("%10.0f%%"), pJLData2->fAddRatio*100.0f);
				m_wndList.SetItemText(iTemp - 1, 1, str);

				m_wndList.InsertItem(iTemp++, _T("挑战者-当月业绩"), 1);
				str.Format(_T("%10.2f"), pJLData2->fPK1Now);
				m_wndList.SetItemText(iTemp - 1, 1, str);

				m_wndList.InsertItem(iTemp++, _T("被挑战者-当月业绩"), 1);
				str.Format(_T("%10.2f"), pJLData2->fPK2Now);
				m_wndList.SetItemText(iTemp - 1, 1, str);

				m_wndList.InsertItem(iTemp++, _T("挑战系数"), 1);
				str.Format(_T("%10.2f%%"), pJLData2->fPKXS*100.0f);
				m_wndList.SetItemText(iTemp - 1, 1, str);

				m_wndList.InsertItem(iTemp++, _T("挑战者-折算业绩"), 1);
				str.Format(_T("%10.2f"), pJLData2->fPKYZ);
				m_wndList.SetItemText(iTemp - 1, 1, str);

				m_wndList.InsertItem(iTemp++, _T("挑战者-获胜业绩"), 1);
				str.Format(_T("%10.2f"), pJLData2->fPKWinYZ);
				m_wndList.SetItemText(iTemp - 1, 1, str);

				m_wndList.InsertItem(iTemp++, _T("挑战者-业绩差"), 1);
				str.Format(_T("%10.2f"), pJLData2->fWin1YZ);
				m_wndList.SetItemText(iTemp - 1, 1, str);

				m_wndList.InsertItem(iTemp++, _T("被挑战者-业绩差"), 1);
				str.Format(_T("%10.2f"), pJLData2->fWin2YZ);
				m_wndList.SetItemText(iTemp - 1, 1, str);

				if (pJLData2->bWin)
				{
					m_wndList.InsertItem(iTemp++, _T("挑战成功!!"), 0);
					str.Format(_T("赢方:%s"), pJLData2->szPK1);
					m_wndList.SetItemText(iTemp - 1, 1, str);
				}
				else
				{
					m_wndList.InsertItem(iTemp++, _T("挑战失败!!"), 1);
					m_wndList.SetItemText(iTemp - 1, 1, _T("挑战失败!!"));
					str.Format(_T("赢方:%s"), pJLData2->szPK2);
					m_wndList.SetItemText(iTemp - 1, 1, str);
				}
			}
		}

		return true;
	}
	return false;
}

void DLG_GZMsg_JL::SetParam(CMainFrame * pFrame, long lYWYID, CString strName,BYTE * pYWYData,long lShowType)
{

	m_lYWYID = lYWYID;
	m_strName = strName;
	m_pMainFrame = pFrame;
	m_pYWYData = pYWYData;
	m_lShowType = lShowType;
}


BOOL DLG_GZMsg_JL::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	if (!m_pYWYData)
		return true;


	//初始化List
	m_Image.Create(16, 16, ILC_COLOR16 | ILC_MASK, 5, 5);
	//m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_CORP));
	m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_SWTSQ));

	m_wndList.SubClassWindow2();
	if (m_lShowType == 1)
		m_wndList.SetHeadings(_T("序号,50; 挑战者,150;被挑战者,150;挑战目标,100;挑战结果,150; 赢方,150;挑战者-业绩差,200;被挑战者-业绩差,200;"));
	else
		m_wndList.SetHeadings(_T("序号,50; 部门,100; 客户经理,100;  上月,100;  上月A,100;  上月B,100;  上月C,100;上月总分,100;  本月,100;  本月A,100;  本月B,100;  本月C,100;本月总分,100;   平均分,100;"));
	m_wndList.SetGridLines(true);
	m_wndList.SetImageList(&m_Image, LVSIL_SMALL);


	ANS_GZMsg_JL_PARA     * pPara = (ANS_GZMsg_JL_PARA     *)m_pYWYData;
	ANS_GZMsg_JL_PARA_DATE * pData = (ANS_GZMsg_JL_PARA_DATE *)(m_pYWYData + sizeof(ANS_GZMsg_JL_PARA));
	if (pPara->lErrCode != 0)   //权限不足,返回错误
	{
		return true;
	}
	if (m_lShowType == 1)
		m_wndType.SetCurSel(1);
	else
		m_wndType.SetCurSel(0);
	ANS_GZMsg_JL_PARA_DATE * pMon = pData;
	for (int i = 0; i < pPara->lMonCount; i++)
	{
		m_wndMon.AddString(pMon[i].szName);
	}
	m_wndMon.SetCurSel(0);
	pData += pPara->lMonCount;

	ANS_GZMsg_JL_PARA_DATE * pPkRatio = pData;
	for (int i = 0; i < pPara->lPKRatioCount; i++)
	{
		m_wndPKRatio.AddString(pPkRatio[i].szName);
	}
	m_wndPKRatio.SetCurSel(0);
	pData += pPara->lPKRatioCount;

	ANS_GZMsg_JL_PARA_DATE * pYWY = pData;
	for (int i = 0; i < pPara->lYWYCount; i++)
	{
		int iItem = m_wndPK1.AddString(pYWY[i].szName);
		m_wndPK1.SetItemData(iItem, pYWY[i].lYWYID);

		iItem = m_wndPK2.AddString(pYWY[i].szName);
		m_wndPK2.SetItemData(iItem, pYWY[i].lYWYID);
	}
	m_wndPK1.SetCurSel(0);
	m_wndPK2.SetCurSel(0);

	if (m_lShowType != 1)
	{
		//默认为查询月度之星,隐藏相关参数
		m_wndPK1.ShowWindow(SW_HIDE);
		m_wndPK2.ShowWindow(SW_HIDE);
		m_wndPKRatio.ShowWindow(SW_HIDE);
		GetDlgItem(IDD_K_GZMSG_JL_PK1_S)->ShowWindow(SW_HIDE);
		GetDlgItem(IDD_K_GZMSG_JL_PK2_S)->ShowWindow(SW_HIDE);
		GetDlgItem(IDD_K_GZMSG_JL_PKRATIO_S)->ShowWindow(SW_HIDE);
	}

	/*
	if (m_lShowType == 1)
	{
		GetDlgItem(IDD_K_GZMSG_JL_TYPE)->EnableWindow(false);
	}
	*/
		
	return TRUE;  // return TRUE unless you set the focus to a control
				  // 异常: OCX 属性页应返回 FALSE
}


void DLG_GZMsg_JL::OnRclickGzmsgJlList(NMHDR *pNMHDR, LRESULT *pResult)
{
	LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
	// TODO: 在此添加控件通知处理程序代码
	*pResult = 0;

	ShowRMenu();
}


void DLG_GZMsg_JL::ShowRMenu()
{
	CMenu menu;
	menu.CreatePopupMenu();

	menu.AppendMenu(MF_STRING, MENU_GZMSG_JL_COPY, _T(" 复 制 "));
	menu.AppendMenu(MF_STRING, MENU_GZMSG_JL_DEL, _T(" 删 除 "));
	//显示菜单
	POINT pt;
	::GetCursorPos(&pt);
	//this->ClientToScreen( &pt);
	menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON, pt.x, pt.y, this, NULL);
	menu.DestroyMenu();
}

void DLG_GZMsg_JL::On_GZMsg_Copy()
{
	m_wndList.CopyToClipboard();
}

void DLG_GZMsg_JL::On_GZMsg_Del()
{
	int iItem = m_wndList.GetFirstSelectedItem();
	if (iItem >= 0)
		m_wndList.DeleteItem(iItem);
}

void DLG_GZMsg_JL::OnSelchangeIddKGzmsgJlType()
{
	if (m_wndType.GetCurSel() == 0)
	{
		m_wndPK1.ShowWindow(SW_HIDE);
		m_wndPK2.ShowWindow(SW_HIDE);
		m_wndPKRatio.ShowWindow(SW_HIDE);

		GetDlgItem(IDD_K_GZMSG_JL_PK1_S)->ShowWindow(SW_HIDE);
		GetDlgItem(IDD_K_GZMSG_JL_PK2_S)->ShowWindow(SW_HIDE);
		GetDlgItem(IDD_K_GZMSG_JL_PKRATIO_S)->ShowWindow(SW_HIDE);

		m_wndList.DeleteAllItems();
		m_wndList.DeleteAllColumns();
		if (m_lShowType == 1)
			m_wndList.SetHeadings(_T("序号,50; 部门,100; 客户经理,100;  上月,100;上月得分,100;  本月,100;  本月A,100;  本月B,100;  本月C,100;本月总分,100;   平均分,100;"));
		else
			m_wndList.SetHeadings(_T("序号,50; 部门,100; 客户经理,100;  上月,100;平均业绩,100;平均客户,80;上月业绩,100;上月客户,80;  上月A,100;  上月B,100;  上月C,100;上月总分,100;  本月,100;平均业绩,100;平均客户,80;本月业绩,100;本月客户,80;  本月A,100;  本月B,100;  本月C,100;本月总分,100;   平均分,100;"));

	}
	else
	{
		m_wndPK1.ShowWindow(SW_SHOW);
		m_wndPK2.ShowWindow(SW_SHOW);
		m_wndPKRatio.ShowWindow(SW_SHOW);

		GetDlgItem(IDD_K_GZMSG_JL_PK1_S)->ShowWindow(SW_SHOW);
		GetDlgItem(IDD_K_GZMSG_JL_PK2_S)->ShowWindow(SW_SHOW);
		GetDlgItem(IDD_K_GZMSG_JL_PKRATIO_S)->ShowWindow(SW_SHOW);

		m_wndList.DeleteAllItems();
		m_wndList.DeleteAllColumns();
		if (m_lShowType == 1)
			m_wndList.SetHeadings(_T("序号,50; 挑战者,150;被挑战者,150;挑战目标,100;挑战结果,150; 赢方,150;挑战者-业绩差,200;被挑战者-业绩差,200;"));
		else
			m_wndList.SetHeadings(_T("项目,250; 内容,450;"));

	}
}