// MailMsgDlg.cpp : implementation file // #include "stdafx.h" #include "sp.h" #include "MailMsgDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CMailMsgDlg dialog CMailMsgDlg::CMailMsgDlg(CWnd* pParent /*=NULL*/) : CDialog(CMailMsgDlg::IDD, pParent) { //{{AFX_DATA_INIT(CMailMsgDlg) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT k=new GZK; k->GZSetUniqueKey(40); m_pApp= (CSpApp*)AfxGetApp(); /* rs=new GZRset("Mail message entry screen error:"); rs->SetConnect(m_pApp->strConnectString); */ //Initialize recordset pointer rs=m_pApp->rsPool->GetRS("CMailMsgDlg"); m_strMessage.Empty(); m_strSubject.Empty(); m_bNoRE=false; } void CMailMsgDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CMailMsgDlg) DDX_Control(pDX, IDC_USERS, m_lbUsers); DDX_Control(pDX, IDC_SUBJECT, m_edSubject); DDX_Control(pDX, IDC_SEND, m_btnSend); DDX_Control(pDX, IDC_POPUP, m_ckPopup); DDX_Control(pDX, IDC_MESSAGE, m_edMessage); DDX_Control(pDX, IDC_DATETIMEPICKER1, m_dtDate); DDX_Control(pDX, IDC_CANCEL, m_btnCancel); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CMailMsgDlg, CDialog) //{{AFX_MSG_MAP(CMailMsgDlg) ON_BN_CLICKED(IDC_SEND, OnSend) ON_BN_CLICKED(IDC_CANCEL, OnCancel) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CMailMsgDlg message handlers void CMailMsgDlg::OnOK() { //CDialog::OnOK(); } void CMailMsgDlg::OnCancel() { CDialog::OnOK(); } void CMailMsgDlg::OnSend() { CString strMsg,strSubject,q; COleDateTime dtData,dtData2,dtData3; long lData; bool bData; int nRecipients=m_lbUsers.SelectionCount(); //Ensure there is at least one selected user if(nRecipients==0) { AfxMessageBox("You must select at least one person\r\n" "to send this message to."); return; } //encrypt the subject and message // m_edMessage.GetWindowText(strMsg); m_edSubject.GetWindowText(strSubject); if(strSubject.IsEmpty()) { AfxMessageBox("A subject is required"); return; } k->GZEncrypt(&strMsg,false); k->GZEncrypt(&strSubject,false); //save the message //open the recordset without returning a record (no id=0) rs->Query("SELECT mail.* FROM mail;"); rs->AddNewRecord(); //******************************** // START SAVING FIELDS //******************************** //FROM rs->UpdateField("from",&m_pApp->m_lusrID); //rs->SaveRecord(); //DATE: dtData=COleDateTime::GetCurrentTime(); rs->UpdateField("date",&dtData); //rs->SaveRecord(); //POPUP bData = m_ckPopup.GetCheck() ? true:false; rs->UpdateField("popup",&bData); //rs->SaveRecord(); //SUBJECT rs->UpdateField("subject",&strSubject); // rs->SaveRecord(); //MESSAGE rs->UpdateField("message",&strMsg); //rs->SaveRecord(); //DELIVERY DATE //get the date, remove on the date portion which //sets the time to 0:0:0 (midnight) m_dtDate.GetTime(dtData3); dtData2.SetDate(dtData3.GetYear(),dtData3.GetMonth(),dtData3.GetDay()); rs->UpdateField("deliverydate",&dtData2); rs->SaveRecord(); //****************** DONE SAVING FIELDS ************* //*************************************************** //retrieve the id number q.Format("SELECT mail.* FROM mail " "WHERE (((mail.from)=%u) AND ((mail.date)=#%s#));" ,m_pApp->m_lusrID,dtData.Format(_T("%m/%d/%Y %H:%M:%S"))); rs->Query(q); //should work but.... ASSERT(!rs->IsEmpty()); rs->FetchField("id",&lData); //save the recipient records for(int x=0;xEx(q); } rs->Close(); CDialog::OnOK(); } BOOL CMailMsgDlg::OnInitDialog() { CDialog::OnInitDialog(); rs->Query("SELECT users.id, users.mail, [last] & \", \" & [first] AS name " "FROM users WHERE (((users.active)=True) AND (users.mail)=True) " "ORDER BY [last] & \", \" & [first];"); if(rs->IsEmpty())//bail { AfxMessageBox("No users could be found for you to send mail to"); CDialog::OnOK(); } //fill the list box CString strData; CString strIndex; long lData; m_lbUsers.Clear(); //fill combo box with available zones rs->MoveFirst(); rs->FetchField("name",&strData); rs->FetchField("id",&lData); strIndex.Format("%u",lData); m_lbUsers.AddRow(strData,strIndex); while(rs->MoveForward()) { rs->FetchField("name",&strData); rs->FetchField("id",&lData); strIndex.Format("%u",lData); m_lbUsers.AddRow(strData,strIndex); } if(!m_strSubject.IsEmpty()) { if(m_bNoRE) { m_edSubject.SetWindowText(m_strSubject); m_edMessage.SetWindowText(m_strMessage); } else { //if replying/forwarding, set previous message if(m_strSubject.Left(3)!="Re:") m_strSubject="Re: " + m_strSubject; m_strMessage=">" + m_strMessage; m_strMessage.Replace("\r\n","\r\n> "); m_edSubject.SetWindowText(m_strSubject); m_edMessage.SetWindowText(m_strMessage); } } return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } //***********************88 CMailMsgDlg::~CMailMsgDlg() { m_pApp->rsPool->ReleaseRS(&rs->m_nID); delete k; } //************************************************************ //SAVE EDIT CONTROL FIELD //************************************************************ bool CMailMsgDlg::SaveField(CEdit *edControl,CString fldname,bool AllowEmpty) { CString str; //do nothing if not changed if(edControl->GetModify()!=TRUE) return true; edControl->GetWindowText(str); //dont save empty fields if not allowed to if(!AllowEmpty) { if(str.IsEmpty()) { edControl->Undo(); return false; } } rs->UpdateField(fldname,&str); rs->SaveRecord(); edControl->SetModify(FALSE); return true; } //************************************************************ //SAVE CheckBox CONTROL FIELD //************************************************************ bool CMailMsgDlg::SaveField(CButton *ckControl,CString fldname) { bool bData=false; BOOL BData; BData=ckControl->GetCheck(); if(BData==TRUE) bData=true; rs->UpdateField(fldname,&bData); rs->SaveRecord(); return true; } //************************************************************ //SAVE DateTimePicker CONTROL FIELD //************************************************************ bool CMailMsgDlg::SaveField(CDateTimeCtrl *dtControl,CString fldname) { COleDateTime dtData; dtControl->GetTime(dtData); rs->UpdateField(fldname,&dtData); rs->SaveRecord(); return true; } void CMailMsgDlg::SetForwardInfo(CString *pSubject, CString *pMessage) { m_strMessage=*pMessage; m_strSubject=*pSubject; }