using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Newtonsoft.Json;
using Cosmos.UserFrame;
using Cosmos.BaseFrame;
using Cosmos.ServiceProvider;
using Cosmos.Common;
using System.Data;
using System.Globalization;
/*-----------------------------------------------------------------------------------------------*/
// 설 명 : 해피버즈
// 작 성 자 :
// 변경 이력 :
/*-----------------------------------------------------------------------------------------------*/
namespace Cosmos.Service
{
class HappyBuzz : IHappyBuzz
{
private SManager sManager = new SManager(); // 이 객체를 통해 업무 Service 호출
private StateServer StateObject = (StateServer)StateServer.GetInstance(); // StateObject : StateServer Object (객체)
private PosStatus m_cPosStatus = new PosStatus(); // 기본정보 참조
private TranStatus m_cTrnStatus = new TranStatus(); // 기본거래 참조
private INetworkHttp m_cNetworkHttp = null;
private IDataServiceUs m_cWebBiz = null; // 웹정보 서비스
private static ArrayList m_sPrintData = new ArrayList();
private string m_HAPPYBUZZ_URL = "";
///
/// 생성자
///
public HappyBuzz()
{
m_cPosStatus = (PosStatus)StateObject.POS;
m_cTrnStatus = (TranStatus)StateObject.TRAN;
m_cNetworkHttp = (INetworkHttp)sManager.InitServiceInstance(ServiceLists.AGENT_NETWORK.DLL, ServiceLists.AGENT_NETWORK.NETWORK_HTTP);
m_cWebBiz = (IDataServiceUs)sManager.InitServiceInstance(ServiceLists.BSV_BASIC.DLL, ServiceLists.BSV_BASIC.WEB_POS);
//GetHappyBuzzUrl();
}
///
/// URL 가져오기
///
///
private bool GetHappyBuzzUrl()
{
bool bRet = false;
try
{
string stmp = (string)m_cWebBiz.GetData(new string[] { PosKey.MENU_KEY.HAPPY_BUZ_SEARCH });
if (string.IsNullOrEmpty(stmp) == false)
{
m_HAPPYBUZZ_URL = CmUtil.MidH(stmp, 30, 100).Trim();
bRet = true;
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
return bRet;
}
///
/// 해피버즈 등록
///
///
///
///
public int SetHappyBuzz(string[] aParam, ref string[] aOutParam)
{
int iRet = BaseCom.NG;
string sCardNo = "";
try
{
if (m_HAPPYBUZZ_URL == "")
{
if (GetHappyBuzzUrl() == false)
{
return BaseCom.NG1;
}
}
//[0] : 카드번호
sCardNo = aParam[0].ToString();
// 상품정보
ArrayList aSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
//아이템 리스트 담기
Hashtable[] htDatail = new Hashtable[aSaleItem.Count > 5 ? 5 : aSaleItem.Count];
for (int iRow = 0; iRow < aSaleItem.Count; iRow++)
{
Column.TR_PLU.DATA cSaleItem = (Column.TR_PLU.DATA)aSaleItem[iRow];
htDatail[iRow] = new Hashtable();
htDatail[iRow].Add("name", cSaleItem.ITEM_NAME);
htDatail[iRow].Add("price", (int)cSaleItem.SALE_AMT);
htDatail[iRow].Add("count", (int)cSaleItem.SALE_QTY);
if (iRow >= 4) break;
}
//헤더 담기
Hashtable htRequest = new Hashtable();
htRequest.Add("storeCd", m_cPosStatus.Base.StoreNo); //유니크한 점포코드
//htRequest.Add("storeCd", "99931"); //테스트용
htRequest.Add("subCd", 0);
htRequest.Add("orderCnt", aSaleItem.Count > 5 ? 5 : aSaleItem.Count);
htRequest.Add("cardNo", sCardNo); //적립사용카드번호
htRequest.Add("orderList", htDatail); //적립사용카드번호
htRequest.Add("totalAmount", (int)m_cTrnStatus.Head.TotSaleAmt); //결제금액
htRequest.Add("expectTime", 600); //초단위 예상대기시간(10분고정)
Hashtable htResponse = null;
int iReturn = SendReceiveForHttps(new object[] { m_HAPPYBUZZ_URL, PosConst.HAPPYBUZZ_SUB_URL.SET, htRequest }, ref htResponse);
if (iReturn == BaseCom.OK)
{
aOutParam[0] = htResponse["result"].ToString().Trim();
aOutParam[1] = htResponse["msg"] == null ? "" : htResponse["msg"].ToString();
aOutParam[2] = htResponse["pagerNo"].ToString();
iRet = BaseCom.OK;
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
return iRet;
}
///
/// 해피버즈 취소
///
///
///
///
public int CanHappyBuzz(string[] aParam, ref string[] aOutParam)
{
int iRet = BaseCom.NG;
try
{
if (m_HAPPYBUZZ_URL == "")
{
if (GetHappyBuzzUrl() == false)
{
return BaseCom.NG1;
}
}
//[0] : 카드번호
//헤더 담기
Hashtable htRequest = new Hashtable();
htRequest.Add("storeCd", m_cPosStatus.Base.StoreNo); //유니크한 점포코드
//htRequest.Add("storeCd", "99931"); //테스트용
htRequest.Add("subCd", 0);
htRequest.Add("pagerNo", aParam[0].ToString());
Hashtable htResponse = null;
int iReturn = SendReceiveForHttps(new object[] { m_HAPPYBUZZ_URL, PosConst.HAPPYBUZZ_SUB_URL.CAN, htRequest }, ref htResponse);
if (iReturn == BaseCom.OK)
{
aOutParam[0] = htResponse["result"].ToString().Trim();
aOutParam[1] = htResponse["msg"] == null ? "" : htResponse["msg"].ToString();
iRet = BaseCom.OK;
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
return iRet;
}
///
/// Http 통신
///
///
///
public int SendReceiveForHttps(object[] aParam, ref Hashtable htResponse)
{
string sUrl;
string sWorkType;
Hashtable htRequest;
int iRet = BaseCom.NG;
try
{
sUrl = (string)aParam[0];
sWorkType = (string)aParam[1];
htRequest = (Hashtable)aParam[2];
htResponse = null;
string sResp = string.Empty;
iRet = m_cNetworkHttp.HttpJsonPOST_SendReceiveForBuzz(sUrl, sWorkType, htRequest, ref htResponse);
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
return iRet;
}
}
}