using System;
using System.Linq;
using System.Text;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Runtime.InteropServices;
using Cosmos.BaseFrame;
using Cosmos.UserFrame;
using Cosmos.ServiceProvider;
using Cosmos.Common;
using Cosmos.Service;
using Cosmos.CommonManager;
using System.Timers;
//using System.Threading;
using SPC.Kiosk.Common;
using SPC.Kiosk.PB.Model;
namespace SPC.Kiosk.DataHelper
{
public class BackDataService : IDisposable
{
#region [ Members ]
private SManager sManager = null; // 이 객체를 통해 업무 Service 호출
private StateServer StateObject = null; // StateObject : StateServer Object (객체)
private PosStatus m_cPosStatus = null; // 기본정보 참조
private TranStatus m_cTrnStatus = null; // 거래정보 참조
protected IDataCommonUs m_cDataCommon = null;
private Timer objServiceTimer;
private DateTime lastTime;
private IDataProcessUs m_cDataService = null; // 거래데이터 합계금액 계산 및 관리
private ICampaignUs m_cCampaingMain = null; // 캠페인 관리
private String m_sMstBatchDownDate = "";
///
/// POS 초기화 필요 유무
///
public bool NeedInitModule { get; set; }
#endregion Members
#region [ Ctor & Dispose ]
///
/// Ctor
///
public BackDataService()
{
sManager = new SManager();
StateObject = (StateServer)StateServer.GetInstance();
if (!NeedInitModule)
{
m_cPosStatus = (PosStatus)StateObject.POS; // POS 기본정보
m_cTrnStatus = (TranStatus)StateObject.TRAN; // POS 거래정보
m_cDataCommon = (IDataCommonUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_COMMON);
m_cDataService = (IDataProcessUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_SERVICE);
m_cCampaingMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN);
// 캠페인 마스터 로딩
m_cDataService.InitTranHeader();
m_sMstBatchDownDate = m_cPosStatus.Base.MstBatchDownDate;
m_cCampaingMain.LoadCampaignCondition(new string[] { });
objServiceTimer = new Timer(1000);
lastTime = DateTime.Now;
objServiceTimer.Elapsed += ObjServiceTimer_Elapsed;
objServiceTimer.Start();
}
}
private void ObjServiceTimer_Elapsed(object sender, ElapsedEventArgs e)
{
DateTime _dateTime = DateTime.Now;
//if ((DateTime.Now - lastTime) >= (TimeSpan.FromMinutes(0.5d)))
if ((_dateTime - lastTime) >= (TimeSpan.FromMinutes(0.5d)))
{
//TODO:5분마다 처리할 로직 추가
lastTime = DateTime.Now;
//string[] _list = m_cDataCommon.Select_NHS_CUST_BUY_HIST(string.Format("{0:yyyyMMddHHmmss}", DateTime.Now), @"1011175065");
// 2019-03-21 - 1997fx11 : 아이템 변경 수신
int iRet01 = m_cDataCommon.Get_NEW_PRODUCT_BY_IRT();
// 2019-03-21 - 1997fx11 : 시스템정보 전송
int iRet02 = m_cDataCommon.Send_SYSTEM_INFO();
}
// 2019-04-25 - 1997fx11 : 자동 마감/개점 ver 0.2
// PosStart/frmPosStart.cs/tmrStart_Tick 내에 메인포스 개점여부에 따라 진행. (추가예정?? 부분)
string sCurrentTime = System.DateTime.Now.ToString("HHmmss");
if (CmUtil.LongParse(sCurrentTime) == CmUtil.LongParse("050000"))
{
m_cDataCommon.SetSaleEndOpen();
}
}
///
/// Dispose
///
public void Dispose()
{
if (objServiceTimer != null)
{
objServiceTimer.Stop();
objServiceTimer.Elapsed -= ObjServiceTimer_Elapsed;
objServiceTimer.Dispose();
objServiceTimer = null;
}
sManager = null; // 이 객체를 통해 업무 Service 호출
StateObject = null; // StateObject : StateServer Object (객체)
m_cPosStatus = null; // 기본정보 참조
m_cTrnStatus = null; // 거래정보 참조
m_cDataCommon = null;
}
#endregion Ctor & Dispose
#region [ Methods ]
///
/// 옵션값 획득
///
///
///
public string GetPosOption(string sOptCode)
{
return PosMstManager.GetPosOption(sOptCode);
}
#endregion Methods
}
}