using System;
using System.Data;
using System.Collections;
using Cosmos.UserFrame;
using Cosmos.Common;
using Cosmos.ServiceProvider;
using Cosmos.CommonManager;
namespace Cosmos.Service
{
class WebPos : IDataServiceUs
{
private SManager sManager = new SManager(); // 이 객체를 통해 업무 Service 호출
private StateServer StateObject = (StateServer)StateServer.GetInstance(); // StateObject : StateServer Object (객체)
private PosStatus m_cPosStatus = new PosStatus(); // 기본정보 참조
private IMasterUs m_cMstService = null; // 마스터 인터페이스
private string STATIC_KEY_FOR_BIZEUN_WEB = "dkaghghkdlstnspc"; // 빚은WEB 암호화 고정키
public WebPos()
{
m_cPosStatus = (PosStatus)StateObject.POS; // POS 기본정보
m_cMstService = (IMasterUs)sManager.InitServiceInstance(ServiceLists.ASV_MASTER.DLL, ServiceLists.ASV_MASTER.POS_MASTER);
}
///
/// 웹 업무 URL 가져오기
///
/// FUNC_ID
/// 점포코드 암호화 여부
///
public object GetData(string[] aParam)
{
string sQuery = "";
string sRet = "";
bool bIsStorCdEncoded = false;
try
{
sQuery += " SELECT * FROM POSMST..MST_WEB_LNKAGE ";
sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'";
sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'";
sQuery += " AND USE_YN = '" + PosConst.MST_USE_YN.YES + "'";
sQuery += " AND FUNC_ID = '" + aParam[0] + "'";
DataTable dtDataInfo = m_cMstService.Select(new string[] { sQuery });
if(aParam.Length > 1)
{
bIsStorCdEncoded = aParam[1] == "1" ? true : false;
}
if (dtDataInfo != null && dtDataInfo.Rows.Count > 0)
{
DataRow dr = dtDataInfo.Rows[0];
string sDiv = CmUtil.GetDataRowStr(dr, PosMst.MST_WEB_LINKAGE.DATA.DIV); // 1: WEB POS, 2:WEB LINK
string sName = CmUtil.GetDataRowStr(dr, PosMst.MST_WEB_LINKAGE.DATA.MENU_NM).Replace("\n", " ").Replace("\\n", " ");
string sUrl = CmUtil.GetDataRowStr(dr, PosMst.MST_WEB_LINKAGE.DATA.WEB_MENU_ID);
string sParam = CmUtil.GetDataRowStr(dr, PosMst.MST_WEB_LINKAGE.DATA.PARAM);
string sCaption = CmUtil.GetDataRowStr(dr, PosMst.MST_WEB_LINKAGE.DATA.FILLER1);
if (sParam != "") sParam = ParamReplace(sParam, bIsStorCdEncoded);
// 링크구분(1) + 메뉴명(30) + 메뉴ID(100) + 파라미터(100) + 캡션(50)
sRet = CmUtil.RPadH(sDiv, 1) + CmUtil.RPadH(sName, 30) + CmUtil.RPadH(sUrl, 100) + CmUtil.RPadH(sParam, 100) + CmUtil.RPadH(sCaption, 50);
}
return sRet;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return sRet;
}
///
///
///
///
///
private string ParamReplace(string sParamInfo, bool bIsStorCdEncoded)
{
string sRetParam = sParamInfo;
try
{
if (sParamInfo != "")
{
string sStoreNo = "";
if (bIsStorCdEncoded == true)
{
// 빚은몰 URL로 GET방식으로 전달 시 아래 문자들에 대하여 치환하여 전송 함
// "&" -> "%26", "+" -> "%2B"
string sEncodedStoreNo = UserLog.UserAES.DynamicKeyEncrypt(STATIC_KEY_FOR_BIZEUN_WEB, m_cPosStatus.Base.StoreNo);
sEncodedStoreNo = sEncodedStoreNo.Replace("&", "%26");
sEncodedStoreNo = sEncodedStoreNo.Replace("+", "%2B");
sStoreNo = sEncodedStoreNo;
}
else
{
sStoreNo = m_cPosStatus.Base.StoreNo;
}
sRetParam = sRetParam.Replace("", sStoreNo);
sRetParam = sRetParam.Replace("", m_cPosStatus.Base.CashierNo);
sRetParam = sRetParam.Replace("", m_cPosStatus.Base.CashierWebPosPwd);
sRetParam = sRetParam.Replace("", m_cPosStatus.Base.BrandCd);
sRetParam = sRetParam.Replace("", m_cPosStatus.Base.SaleDate);
sRetParam = sRetParam.Replace("", m_cPosStatus.Base.CmpCd);
}
return sRetParam;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return sRetParam;
}
public string Execute(string[] aParam)
{
throw new NotImplementedException();
}
public string SetData(object oParam)
{
throw new NotImplementedException();
}
}
}