📄 items.cpp
字号:
// File: Items.cpp
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// This source code is only intended as a supplement to the
// Microsoft Classes Reference and related electronic
// documentation provided with the library.
// See these sources for detailed information regarding the
// Microsoft C++ Libraries products.
#include "stdafx.h"
#include "BidsDB.h"
#include "Bids.h"
class CAddItem : public CRequestHandlerT<CAddItem>
{
protected:
char m_szError[255];
LPCSTR m_szItemShortDesc;
LPCSTR m_szItemLongDesc;
LPCSTR m_szItemEndDate;
LPCSTR m_szItemEndTime;
LPCSTR m_szItemMinBid;
LPCSTR m_szUserID;
char m_szDate[255];
char m_szTime[255];
public:
HTTP_CODE ValidateAndExchange()
{
m_szItemShortDesc = m_HttpRequest.m_QueryParams.Lookup("shortdesc");
m_szItemLongDesc = m_HttpRequest.m_QueryParams.Lookup("longdesc");
m_szItemEndDate = m_HttpRequest.m_QueryParams.Lookup("enddate");
m_szItemEndTime = m_HttpRequest.m_QueryParams.Lookup("endtime");
m_szItemMinBid = m_HttpRequest.m_QueryParams.Lookup("minbid");
if (m_szItemShortDesc == NULL &&
m_szItemLongDesc == NULL &&
m_szItemEndDate == NULL &&
m_szItemEndTime == NULL &&
m_szItemMinBid == NULL)
{
m_szItemShortDesc = "";
m_szItemLongDesc = "";
m_szItemMinBid = "0.00";
SYSTEMTIME st;
GetLocalTime(&st);
sprintf(m_szDate, "%d/%d/%d", st.wMonth, st.wDay, st.wYear);
sprintf(m_szTime, "%d:%02d", st.wHour + 1, st.wMinute);
m_szItemEndDate = m_szDate;
m_szItemEndTime = m_szTime;
strcpy(m_szError, "");
return HTTP_SUCCESS;
}
const CCookie &c = m_HttpRequest.Cookies("userid");
if (c.IsEmpty())
{
m_HttpResponse.Redirect("login.srf");
return HTTP_SUCCESS_NO_PROCESS;
}
m_szUserID = c.m_strValue;
if (atofc(m_szItemMinBid) < 0.0)
{
strcpy(m_szError, "Minimum bid must be ≥ 0");
return HTTP_SUCCESS;
}
double dItemEnd = str2dbl(m_szItemEndDate, m_szItemEndTime);
char szParsedDesc[65536];
// Escape out single quotes so as not to kill the SQL query
LPCSTR szOrig;
LPSTR szCopy;
szOrig = m_szItemLongDesc;
szCopy = szParsedDesc;
while (*szOrig != '\0')
{
*szCopy = *szOrig;
if (*szCopy == '\'')
{
szCopy++;
*szCopy = '\'';
}
szCopy++;
szOrig++;
}
*szCopy = '\0';
CString strCommand;
strCommand.Format(
"INSERT INTO [Items] ([User ID], [Short Description], [Long Description], [Minimum Bid], [Ends]) VALUES (%s, '%s', '%s', %s, %lf)",
m_szUserID, m_szItemShortDesc, szParsedDesc, m_szItemMinBid, dItemEnd);
CDataConnection DC;
if (GetDataSource(m_spServiceProvider, DATASOURCE, CONNECTION_STRING, &DC) != S_OK)
{
m_HttpResponse.Redirect("dberror.htm");
return HTTP_SUCCESS_NO_PROCESS;
}
CCommand<> command;
if (command.Open(DC, strCommand, NULL, NULL, DBGUID_DEFAULT, true) != S_OK)
{
strcpy(m_szError, "Make sure the data is entered correctly");
return HTTP_SUCCESS;
}
strCommand.Format("userinfo.srf?userid=%s", m_szUserID);
m_HttpResponse.Redirect(strCommand);
return HTTP_SUCCESS_NO_PROCESS;
}
HTTP_CODE OnGetError()
{
m_HttpResponse << m_szError;
return HTTP_SUCCESS;
}
HTTP_CODE OnGetShortDesc()
{
m_HttpResponse << m_szItemShortDesc;
return HTTP_SUCCESS;
}
HTTP_CODE OnGetLongDesc()
{
m_HttpResponse << m_szItemLongDesc;
return HTTP_SUCCESS;
}
HTTP_CODE OnGetEndDate()
{
m_HttpResponse << m_szItemEndDate;
return HTTP_SUCCESS;
}
HTTP_CODE OnGetEndTime()
{
m_HttpResponse << m_szItemEndTime;
return HTTP_SUCCESS;
}
HTTP_CODE OnGetMinBid()
{
m_HttpResponse << m_szItemMinBid;
return HTTP_SUCCESS;
}
HTTP_CODE OnIsLoggedOn()
{
const CCookie &c = m_HttpRequest.Cookies("userid");
if (c.IsEmpty())
return HTTP_S_FALSE;
else
return HTTP_SUCCESS;
}
HTTP_CODE OnGetLoggedOnUserID()
{
LPCSTR szUID = (LPCSTR)m_HttpRequest.Cookies("userid").m_strValue;
m_HttpResponse << szUID;
return HTTP_SUCCESS;
}
BEGIN_REPLACEMENT_METHOD_MAP(CAddItem)
REPLACEMENT_METHOD_ENTRY("GetError", OnGetError)
REPLACEMENT_METHOD_ENTRY("GetShortDesc", OnGetShortDesc)
REPLACEMENT_METHOD_ENTRY("GetLongDesc", OnGetLongDesc)
REPLACEMENT_METHOD_ENTRY("GetEndDate", OnGetEndDate)
REPLACEMENT_METHOD_ENTRY("GetEndTime", OnGetEndTime)
REPLACEMENT_METHOD_ENTRY("GetMinBid", OnGetMinBid)
REPLACEMENT_METHOD_ENTRY("GetLoggedOnUserID", OnGetLoggedOnUserID)
REPLACEMENT_METHOD_ENTRY("IsLoggedOn", OnIsLoggedOn)
END_REPLACEMENT_METHOD_MAP()
};
class CEditItem : public CRequestHandlerT<CEditItem>
{
protected:
char m_szError[255];
LPCSTR m_szItemShortDesc;
LPCSTR m_szItemLongDesc;
LPCSTR m_szItemEndDate;
LPCSTR m_szItemEndTime;
LPCSTR m_szItemMinBid;
LPCSTR m_szUserID;
LPCSTR m_szItemID;
char m_szDate[255];
char m_szTime[255];
CCommand< CAccessor<CItemInfo> > m_ItemInfo;
public:
HTTP_CODE ValidateAndExchange()
{
strcpy(m_szError, "");
CDataConnection DC;
if (GetDataSource(m_spServiceProvider, DATASOURCE, CONNECTION_STRING, &DC) != S_OK)
{
m_HttpResponse.Redirect("dberror.htm");
return HTTP_SUCCESS_NO_PROCESS;
}
m_szItemID = m_HttpRequest.m_QueryParams.Lookup("itemid");
const CCookie &c = m_HttpRequest.Cookies("userid");
if (c.IsEmpty())
{
m_HttpResponse.Redirect("login.srf");
return HTTP_SUCCESS_NO_PROCESS;
}
m_szUserID = (LPCSTR)c.m_strValue;
m_szItemShortDesc = m_HttpRequest.m_QueryParams.Lookup("shortdesc");
m_szItemLongDesc = m_HttpRequest.m_QueryParams.Lookup("longdesc");
CString strCommand;
if (m_szItemShortDesc == NULL ||
m_szItemLongDesc == NULL)
{
strCommand.Format("SELECT * FROM [Items] WHERE [Items].[Item ID] = %s", m_szItemID);
if (m_ItemInfo.Open(DC, strCommand, NULL, NULL, DBGUID_DEFAULT, true) != S_OK)
{
strcpy(m_szError, "Unexpected error opening database");
return HTTP_SUCCESS;
}
m_ItemInfo.MoveFirst();
if (m_szUserID == NULL || m_ItemInfo.m_dwUserID != (DWORD)atoi(m_szUserID))
{
m_HttpResponse.Redirect("login.srf");
return HTTP_SUCCESS_NO_PROCESS;
}
return HTTP_SUCCESS;
}
else
{
char szParsedDesc[65536];
// Escape out single quotes so as not to kill the SQL query
LPCSTR szOrig;
LPSTR szCopy;
szOrig = m_szItemLongDesc;
szCopy = szParsedDesc;
while (*szOrig != '\0')
{
*szCopy = *szOrig;
if (*szCopy == '\'')
{
szCopy++;
*szCopy = '\'';
}
szCopy++;
szOrig++;
}
*szCopy = '\0';
CString strCommand;
strCommand.Format(
"UPDATE [Items] SET [Items].[Short Description] = '%s', [Items].[Long Description] = '%s' WHERE [Items].[Item ID] = %s",
m_szItemShortDesc, szParsedDesc, m_szItemID);
CCommand<> command;
if (command.Open(DC, strCommand, NULL, NULL, DBGUID_DEFAULT, true) != S_OK)
{
strcpy(m_szError, "Make sure the data is entered correctly");
return HTTP_SUCCESS;
}
strCommand.Format("userinfo.srf?userid=%s", m_szUserID);
m_HttpResponse.Redirect(strCommand);
}
return HTTP_SUCCESS;
}
HTTP_CODE OnGetError()
{
m_HttpResponse << m_szError;
return HTTP_SUCCESS;
}
HTTP_CODE OnGetShortDesc()
{
m_HttpResponse << m_ItemInfo.m_szShortDesc;
return HTTP_SUCCESS;
}
HTTP_CODE OnGetLongDesc()
{
m_HttpResponse << m_ItemInfo.m_szLongDesc;
return HTTP_SUCCESS;
}
HTTP_CODE OnGetItemID()
{
m_HttpResponse << m_szItemID;
return HTTP_SUCCESS;
}
HTTP_CODE OnIsLoggedOn()
{
const CCookie &c = m_HttpRequest.Cookies("userid");
if (c.IsEmpty())
return HTTP_S_FALSE;
else
return HTTP_SUCCESS;
}
HTTP_CODE OnGetLoggedOnUserID()
{
LPCSTR szUID = (LPCSTR)m_HttpRequest.Cookies("userid").m_strValue;
m_HttpResponse << szUID;
return HTTP_SUCCESS;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -