using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Cosmos.BaseFrame;
using Cosmos.UserFrame;
using Cosmos.ServiceProvider;
using Cosmos.Common;
using Cosmos.CommonManager;
using Cosmos.UI;
namespace TableConfiguration
{
///
/// 작업대기 메시지
///
public partial class frmWaitMessage : Form
{
private SManager sManager = new SManager(); // 이 객체를 통해 업무 Service 호출
private StateServer StateObject = (StateServer)StateServer.GetInstance(); // StateObject : StateServer Object (객체)
private PosStatus m_cPosStatus = new PosStatus(); // 기본정보 참조
private ITableUs m_cTableSvr = null;
///
/// 작업구분(메뉴구분)
///
public string WorkType { set; private get; }
///
/// 작업결과
///
public string WorkResult { private set; get; }
///
/// 층 마스터
///
public List FloorMaster { set; get; }
///
/// 테이블 마스터
///
public List TableMaster { set; get; }
///
/// 생성자
///
public frmWaitMessage()
{
InitializeComponent();
base.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.ResizeRedraw, true);
//this.UpdateStyles();
m_cPosStatus = (PosStatus)StateObject.POS; // POS 기본정보
m_cTableSvr = (ITableUs)sManager.InitServiceInstance(ServiceLists.BSV_TABLE.DLL, ServiceLists.BSV_TABLE.TABLE_SERVICE);
}
private void Form_Load(object sender, EventArgs e)
{
try
{
UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "");
this.Tag = "START";
this.WorkResult = UserCom.RST_ERR;
this.picBack.Image = ImageManager.GetImage(BaseCom.NxImgPath, ImageManager.SCH_MESSAGE_BOX);
FormManager.MovePopUpForm(this, false, m_cPosStatus.Sale.ScreenSizeUser);
FormManager.SetFormAllControlFont(this, m_cPosStatus.Base.FONT);
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
ex.Message);
}
}
private void Form_Activated(object sender, EventArgs e)
{
try
{
if (this.Tag.ToString() == "START")
{
this.Tag = string.Empty;
this.lblMessage.Text = string.Empty;
this.Update();
switch (this.WorkType)
{
case PosKey.MENU_KEY.TABLE_BACKUP:
this.WorkResult = TableBackupProcess();
break;
case PosKey.MENU_KEY.TABLE_RESTORE:
this.WorkResult = TableRestorProcess();
break;
}
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
ex.Message);
this.DialogResult = System.Windows.Forms.DialogResult.Abort;
}
finally
{
this.Close();
}
}
private void Form_Closing(object sender, FormClosingEventArgs e)
{
this.WorkType = string.Empty;
UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name
, System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "."
+ System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "");
}
///
/// 테이블 백업
///
///
private string TableBackupProcess()
{
try
{
string ret = UserCom.RST_ERR;
string msg = MessageManager.GetGuideMessage(POS_MESSAGE.GUIDE.MSG_0004);
// 로컬저장
SetMessage(msg + "\n(Save to local database)");
ret = m_cTableSvr.TableMasterSave(this.FloorMaster, this.TableMaster);
if (ret == UserCom.RST_ERR)
{
WinManager.ErrorMessage(ret);
return UserCom.RST_ERR;
}
System.Threading.Thread.Sleep(1000);
// 서버 백업 처리
SetMessage(msg + "\n(Backup to the server)");
ret = m_cTableSvr.TableMasterBackup(this.FloorMaster, this.TableMaster);
if (ret != UserCom.RST_OK)
{
WinManager.ErrorMessage(ret);
return UserCom.RST_ERR;
}
WinManager.ConfirmMessage(POS_MESSAGE.ERROR.MSG_0519);
return UserCom.RST_OK;
}
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 UserCom.RST_ERR;
}
}
///
/// 테이블 복원
///
///
private string TableRestorProcess()
{
try
{
string ret = UserCom.RST_ERR;
string msg = MessageManager.GetGuideMessage(POS_MESSAGE.GUIDE.MSG_0005);
SetMessage(msg);
// 복원 처리
SetMessage(msg + "\n(Restore data from the server)");
ret = m_cTableSvr.TableMasterRestore();
if (ret != UserCom.RST_OK)
{
WinManager.ErrorMessage(ret);
return UserCom.RST_ERR;
}
System.Threading.Thread.Sleep(1000);
// 층 마스터 로드
SetMessage(msg + "\n(Reload the floor information)");
if (LoadFloorMaster(false) == false)
{
WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0522) + "\n" + "Reload floor master fails");
return UserCom.RST_ERR;
}
System.Threading.Thread.Sleep(1000);
// 테이블 마스터 로드
SetMessage(msg + "\n(Reload the table information)");
if (LoadTableMaster(false) == false)
{
WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0522) + "\n" + "Reload table master fails");
return UserCom.RST_ERR;
}
return UserCom.RST_OK;
}
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 UserCom.RST_ERR;
}
}
private bool LoadFloorMaster(bool isShowMsg = true)
{
try
{
this.FloorMaster.Clear();
DataTable dtData = null;
string ret = m_cTableSvr.SelectFloor(new string[] { PosConst.QueryTagDef.QueryFloorDef.FLOOR_ALL_SEARCH, string.Empty }, out dtData);
if (ret == UserCom.RST_IGNORE)
{
if (isShowMsg) WinManager.ConfirmMessage(POS_MESSAGE.ERROR.MSG_0079);
return true;
}
if (ret != UserCom.RST_OK)
{
if (isShowMsg) WinManager.ConfirmMessage(POS_MESSAGE.ERROR.MSG_0078);
return false;
}
foreach (DataRow dr in dtData.Rows)
{
Column.MST_FLOOR.FLOOR_DATA cFloor = new Column.MST_FLOOR.FLOOR_DATA();
cFloor.FLOOR_CD = CmUtil.GetDataRowStr(dr, "FLOOR_CD");
cFloor.FLOOR_NM = CmUtil.GetDataRowStr(dr, "FLOOR_NM");
cFloor.UPD_DT = CmUtil.GetDataRowStr(dr, "UPD_DT");
cFloor.REG_DT = CmUtil.GetDataRowStr(dr, "REG_DT");
cFloor.STATUS = PosConst.DB_ROW_STATUS.NONE;
this.FloorMaster.Add(cFloor);
}
return true;
}
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 false;
}
}
private bool LoadTableMaster(bool isShowMsg = true)
{
try
{
this.TableMaster.Clear();
DataTable dtData = null;
string ret = m_cTableSvr.SelectTable(new string[] { PosConst.QueryTagDef.QueryTableDef.TABLE_ALL_SEARCH }, out dtData);
if (ret == UserCom.RST_IGNORE)
{
if (isShowMsg) WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0495);
return true;
}
if (ret != UserCom.RST_OK)
{
if (isShowMsg) WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0496);
return false;
}
foreach (DataRow dr in dtData.Rows)
{
Column.MST_TABLE.TABLE_DATA cTable = new Column.MST_TABLE.TABLE_DATA();
m_cTableSvr.SetTableInfo(dr, ref cTable);
this.TableMaster.Add(cTable);
}
return true;
}
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 false;
}
}
private void SetMessage(string msg)
{
this.lblMessage.Text = msg;
this.lblMessage.Update();
}
}
}