spc-kiosk-pb/SPC.Kiosk.DataHelper/CommonDataHelper.cs

621 lines
28 KiB
C#
Raw Normal View History

2019-06-16 05:12:09 +00:00
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.Threading;
using SPC.Kiosk.Common;
using SPC.Kiosk.PB.Model;
namespace SPC.Kiosk.DataHelper
{
public class CommonDataHelper : 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;
/// <summary>
/// POS 초기화 필요 유무
/// </summary>
public bool NeedInitModule { get; set; }
#endregion Members
#region [ Ctor & Dispose ]
/// <summary>
/// Ctor
/// </summary>
public CommonDataHelper()
{
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);
}
}
/// <summary>
/// Dispose
/// </summary>
public void Dispose()
{
sManager = null; // 이 객체를 통해 업무 Service 호출
StateObject = null; // StateObject : StateServer Object (객체)
m_cPosStatus = null; // 기본정보 참조
m_cTrnStatus = null; // 거래정보 참조
m_cDataCommon = null;
}
#endregion Ctor & Dispose
#region [ Methods ]
/// <summary>
/// Set Common Language Data
/// </summary>
public void SetCommonLanguage()
{
if (NeedInitModule) return;
var getLanguageData = m_cDataCommon.Select_NHS_LANG_MSG("PROD");//m_cDataCommon.Select_NHS_LANG_MSG("COMMON");
if (getLanguageData is DataTable)
{
foreach (var aLanguageData in getLanguageData.Rows)
{
if (aLanguageData is DataRow aRow)
{
var languageCode = aRow["LANG_MESSAGE_CD"] is null ? string.Empty : aRow["LANG_MESSAGE_CD"].ToString();
var languageType = SupportLanguageType.ko;
if (!(aRow["LANG_CD"] is null) && aRow["LANG_CD"].ToString().Length > 2)
{
languageType = (SupportLanguageType)Enum.Parse(typeof(SupportLanguageType), aRow["LANG_CD"].ToString().Substring(0, 2));
}
var languageData = aRow["LANG_MESSAGE"] is null ? string.Empty : aRow["LANG_MESSAGE"].ToString();
Languages.SetMessage(languageCode, languageType, languageData);
}
}
}
}
/// <summary>
/// Get Language Data
/// _gubunCD
/// 상품/제품 = "PROD" Item
/// 카데고리 = "CATE" Category
/// 옵션 = "OPTN" Option
/// 옵션그룹 = "OPTNGRP" Option Group
/// </summary>
/// <param name="_gubunCD"></param>
/// <param name="_messageCD"></param>
/// <returns></returns>
public List<M_Language> GetLaguageData(string _gubunCD, string _messageCD)
{
if (NeedInitModule) return null;
List<M_Language> result = null;
try
{
var getLanguageData = m_cDataCommon.Select_NHS_LANG_MSG(_gubunCD, _messageCD);
if (getLanguageData is DataTable && getLanguageData.Rows.Count > 0)
{
result = new List<M_Language>();
foreach (var aLanguageData in getLanguageData.Rows)
{
if (aLanguageData is DataRow aRow)
{
var languageCode = aRow["LANG_MESSAGE_CD"] is null ? string.Empty : aRow["LANG_MESSAGE_CD"].ToString();
var languageType = SupportLanguageType.ko;
if (!(aRow["LANG_CD"] is null) && aRow["LANG_CD"].ToString().Length > 2)
{
languageType = (SupportLanguageType)Enum.Parse(typeof(SupportLanguageType), aRow["LANG_CD"].ToString().Substring(0, 2));
}
var languageData = aRow["LANG_MESSAGE"] is null ? string.Empty : aRow["LANG_MESSAGE"].ToString();
var dataFinded = result.Where(r => r.Type.Equals(languageType)).FirstOrDefault();
if (dataFinded is M_Language)
{
dataFinded.LanguageData = languageData;
}
else
{
var addDada = new M_Language
{
Type = languageType,
LanguageData = languageData
};
result.Add(addDada);
}
}
}
}
}
catch
{
result = null;
}
return result;
}
/// <summary>
/// Get Into Data
/// </summary>
/// <returns></returns>
public List<M_IntroItems> GetIntroData(double _screenWidth)
{
if (NeedInitModule) return null;
List<M_IntroItems> result = null;
try
{
var getIntroItem = m_cDataCommon.Select_NHS_SCREEN();
if (getIntroItem is DataTable && getIntroItem.Rows.Count > 0)
{
result = new List<M_IntroItems>();
var screenRow = getIntroItem.Rows[0];
var screenCD = screenRow["SCREEN_CD"] is null ? string.Empty : screenRow["SCREEN_CD"].ToString();
if (!string.IsNullOrEmpty(screenCD))
{
var getFrames = m_cDataCommon.Select_NHS_SCREEN_LAYER_GROUPBY_FRAMECD(screenCD);
var stackWidth = _screenWidth;
if (getFrames.Rows.Count.Equals(2)) stackWidth = _screenWidth / 2;
var stackIndex = 0;
foreach (var getFramesItem in getFrames.Rows)
{
if (getFramesItem is DataRow aFrameRow)
{
var frameCD = aFrameRow["FRAME_CD"] is null ? string.Empty : aFrameRow["FRAME_CD"].ToString();
if (!string.IsNullOrEmpty(frameCD))
{
var getStackContents = GetStackContents(screenCD, frameCD);
var newIntroItems = new M_IntroItems
{
ItemsStack = stackIndex,
StackWidth = stackWidth,
StackContents = getStackContents
};
result.Add(newIntroItems);
stackIndex++;
}
}
}
}
}
}
catch
{
result = null;
}
return result;
}
private List<M_StackContents> GetStackContents(string _screenCD, string _frameCD)
{
List<M_StackContents> result = null;
try
{
var getScreenLayer = m_cDataCommon.Select_NHS_SCREEN_LAYER(_screenCD, _frameCD);
if (getScreenLayer is DataTable && getScreenLayer.Rows.Count > 0)
{
result = new List<M_StackContents>();
int setIndex = 0;
foreach (var aStackItem in getScreenLayer.Rows)
{
if (aStackItem is DataRow aRow)
{
var layerCD = aRow["LAYER_CD"] is null ? string.Empty : aRow["LAYER_CD"].ToString();
if (!string.IsNullOrEmpty(layerCD))
{
var mediaItems = GetMediaRollItems(_screenCD, _frameCD, layerCD);
var newStackItems = new M_StackContents
{
ItemsIndex = setIndex,
MediaRollItems = mediaItems,
};
result.Add(newStackItems);
setIndex++;
}
}
}
}
}
catch
{
result = null;
}
return result;
}
private List<M_MediaRollItem> GetMediaRollItems(string _screenCD, string _frameCD, string _layerCD)
{
List<M_MediaRollItem> result = null;
try
{
var getScreenContents = m_cDataCommon.Select_NHS_SCREEN_CONTENTS(_screenCD, _frameCD, _layerCD);
if (getScreenContents is DataTable && getScreenContents.Rows.Count > 0)
{
result = new List<M_MediaRollItem>();
foreach (var aContents in getScreenContents.Rows)
{
if (aContents is DataRow aRow)
{
var fileType = aRow["FILE_MIME_TYPE"].ToString().Equals("PNG")
? MediaType.Image
: aRow["FILE_MIME_TYPE"].ToString().Equals("MP4")
? MediaType.VOD
: MediaType.None;
var linkType = aRow["LINK_YN"].ToString().Equals("1")
? IntroLinkType.Page
: aRow["LINK_YN"].ToString().Equals("2")
? IntroLinkType.Category
: aRow["LINK_YN"].ToString().Equals("3")
? IntroLinkType.ItemCode
: IntroLinkType.None;
var param1 = aRow["PRD_CATE_L"] is null ? string.Empty : aRow["PRD_CATE_L"].ToString();
var param2 = aRow["PRD_CATE_M"] is null ? string.Empty : aRow["PRD_CATE_M"].ToString();
var linkParameter = string.Empty;
switch (linkType)
{
case IntroLinkType.Page:
switch (param1)
{
case "0":
linkParameter = "FirstSelect";
break;
case "1":
linkParameter = "SensingPage";
break;
case "2":
linkParameter = "ItemPage";
break;
default:
linkParameter = "FirstSelect";
break;
}
break;
case IntroLinkType.Category:
linkParameter = string.Format("category&{0}&{1}", param1, param2);
break;
case IntroLinkType.ItemCode:
linkParameter = param1;
break;
}
var mediaPath = aRow["FILE_NAME"] is null ? string.Empty : aRow["FILE_NAME"].ToString();
var runnigSeconds = aRow["PLAY_TIME"] is null ? 0 : int.Parse(aRow["PLAY_TIME"].ToString());
var startTime = aRow["DISPLAY_START_TIME"] is null ? string.Empty : aRow["DISPLAY_START_TIME"].ToString();
var endTime = aRow["DISPLAY_END_TIME"] is null ? string.Empty : aRow["DISPLAY_END_TIME"].ToString();
if (!startTime.Length.Equals(4)) startTime = string.Empty;
if (!endTime.Length.Equals(4)) startTime = string.Empty;
var newMediaItem = new M_MediaRollItem
{
Type = fileType,
MediaPath = ResourceManager.GetCDPimagePath(mediaPath),
LinkType = linkType,
LinkParameter = linkParameter,
RunnigSeconds = runnigSeconds,
StartTime = startTime.Equals(string.Empty)
? default(TimeSpan)
: new TimeSpan(int.Parse(startTime.Substring(0,2)), int.Parse(startTime.Substring(2, 2)), 0),
EndTime = endTime.Equals(string.Empty)
? default(TimeSpan)
: new TimeSpan(int.Parse(endTime.Substring(0, 2)), int.Parse(endTime.Substring(2, 2)), 59)
};
result.Add(newMediaItem);
}
}
}
}
catch
{
result = null;
}
return result;
}
/// <summary>
/// Get Category Data
/// </summary>
/// <returns></returns>
public List<M_CategoryItems> GetCategoryData()
{
if (NeedInitModule) return null;
List<M_CategoryItems> result = null;
try
{
var getCategory1Items = m_cDataCommon.Select_NHS_PRD_CATE("0000");
if (getCategory1Items is DataTable)
{
result = new List<M_CategoryItems>();
int setIndex = 0;
foreach (var aCategoryItem in getCategory1Items.Rows)
{
if (aCategoryItem is DataRow aRow)
{
var category1Code = aRow["PRD_CATE_CD"] is null ? string.Empty : aRow["PRD_CATE_CD"].ToString();
if (!result.Exists(r => r.Catalog1Item.Category1.Equals(category1Code)))
{
result.Add
(
new M_CategoryItems
{
Catalog1Item = new M_ItemData
{
Index = setIndex,
ItemCode = category1Code,
Category1 = category1Code,
},
Catalog2Items = GetCategory2Data(category1Code)
}
);
setIndex++;
}
}
}
}
}
catch
{
result = null;
}
return result;
}
/// <summary>
/// Get Category2 Data
/// </summary>
/// <returns></returns>
public List<M_ItemData> GetCategory2Data(string _category1Code)
{
if (NeedInitModule) return new List<M_ItemData>();
var result = new List<M_ItemData>();
try
{
var getCategory2Item = m_cDataCommon.Select_NHS_PRD_CATE(_category1Code);
if (getCategory2Item is DataTable)
{
int setIndex = 0;
foreach (var aCategoryItem in getCategory2Item.Rows)
{
if (aCategoryItem is DataRow aRow)
{
var category2Code = aRow["PRD_CATE_CD"] is null ? string.Empty : aRow["PRD_CATE_CD"].ToString();
if (!result.Exists(r => r.Category2.Equals(category2Code)))
{
result.Add
(
new M_ItemData
{
Index = setIndex,
ItemCode = category2Code,
Category1 = _category1Code,
Category2 = category2Code,
}
);
setIndex++;
}
}
}
}
}
catch
{
result = new List<M_ItemData>();
}
return result;
}
/// <summary>
/// Get Item Data
/// </summary>
/// <param name="_categoryItems"></param>
/// <returns></returns>
public List<M_ItemData> GetItemsData()
{
if (NeedInitModule) return new List<M_ItemData>();
var result = new List<M_ItemData>();
try
{
var getItems = m_cDataCommon.Select_NHS_STOR_PRD_KEY();
if (getItems is DataTable)
{
int setIndex = 0;
foreach (var aItem in getItems.Rows)
{
if (aItem is DataRow aRow)
{
try
{
var itemCode = aRow["ITEM_CD"] is null ? string.Empty : aRow["ITEM_CD"].ToString();
if (!result.Exists(r => r.ItemCode.Equals(itemCode)))
{
var category1 = aRow["PRD_CATE_UP_CD"] is null ? string.Empty : aRow["PRD_CATE_UP_CD"].ToString();
var category2 = aRow["PRD_CATE_CD"] is null ? string.Empty : aRow["PRD_CATE_CD"].ToString();
var imageFile = aRow["FILE_NAME"] is null ? string.Empty : aRow["FILE_NAME"].ToString();
var isOption = aRow["OPTN_YN"] is null ? false : aRow["OPTN_YN"].ToString().Equals("1");
var isSoldOut = aRow["SOLDOUT_YN"] is null ? false : aRow["SOLDOUT_YN"].ToString().Equals("1");
var itemPrice = aRow["SALES_PRC"] is null ? 0d : double.Parse(aRow["SALES_PRC"].ToString());
var option = isOption ? GetItemOption(itemCode) : null;
result.Add
(
new M_ItemData
{
Index = setIndex,
ItemCode = itemCode,
Category1 = category1,
Category2 = category2,
ImageFile = imageFile,
IsOption = isOption,
IsSoldOut = isSoldOut,
Price = itemPrice,
Option = option
}
);
setIndex++;
}
}
catch
{
}
}
}
}
}
catch
{
result = new List<M_ItemData>();
}
return result;
}
/// <summary>
/// Get Option Data
/// </summary>
/// <param name="_itemCode"></param>
/// <returns></returns>
public List<M_ItemOptionGroup> GetItemOption(string _itemCode)
{
if (NeedInitModule) return null;
List<M_ItemOptionGroup> result = null;
try
{
var getOptionGroup = m_cDataCommon.Select_NHS_PRD_OPTN(_itemCode);
if (getOptionGroup is DataTable && getOptionGroup.Rows.Count > 0 )
{
result = new List<M_ItemOptionGroup>();
int setIndex = 0;
foreach (var aItem in getOptionGroup.Rows)
{
if (aItem is DataRow aRow)
{
try
{
var optionGroupCode = aRow["ITEM_OPTN_GRP_CD"] is null ? string.Empty : aRow["ITEM_OPTN_GRP_CD"].ToString();
if (!result.Exists(r => r.Code.Equals(optionGroupCode)))
{
var getOptionGroupItem = m_cDataCommon.Select_NHS_PRD_OPTN_GRP(optionGroupCode);
if (getOptionGroupItem is DataTable && getOptionGroupItem.Rows.Count.Equals(1))
{
var optionGroupItem = getOptionGroupItem.Rows[0];
var selectMode = optionGroupItem["SEL_MTD"].ToString().Equals("S")
? OptionSelectMode.Single
: optionGroupItem["SEL_MTD"].ToString().Equals("M")
? OptionSelectMode.Multi
: OptionSelectMode.None;
var imageFile = optionGroupItem["FILE_NAME"] is null ? string.Empty : optionGroupItem["FILE_NAME"].ToString();
var isMustSelect = optionGroupItem["RQRD_YN"] is null ? false : optionGroupItem["RQRD_YN"].ToString().Equals("1");
result.Add
(
new M_ItemOptionGroup
{
Index = setIndex,
Code = optionGroupCode,
ImageFile = imageFile,
SelectMode = selectMode,
IsMustSelect = isMustSelect,
Name = GetLaguageData("OPTNGRP", optionGroupCode),
Options = GetOptions(optionGroupCode),
}
);
setIndex++;
}
}
}
catch
{
}
}
}
}
}
catch
{
result = null;
}
return result;
}
/// <summary>
/// Get Option Group Data With Options Data
/// </summary>
/// <param name="_optionGroupCode"></param>
/// <returns></returns>
public List<M_ItemOption> GetOptions(string _optionGroupCode)
{
if (NeedInitModule) return null;
List<M_ItemOption> result = null;
try
{
var getOption = m_cDataCommon.Select_NHS_OPTN_MST(_optionGroupCode);
if (getOption is DataTable && getOption.Rows.Count > 0)
{
result = new List<M_ItemOption>();
int setIndex = 0;
foreach (var aItem in getOption.Rows)
{
if (aItem is DataRow aRow)
{
try
{
var optionCode = aRow["ITEM_OPTN_CD"] is null ? string.Empty : aRow["ITEM_OPTN_CD"].ToString();
if (!result.Exists(r => r.Code.Equals(optionCode)))
{
var kind = aRow["KIND"].ToString().Equals("DIS")
? OptionKind.Discount
: aRow["KIND"].ToString().Equals("BTN")
? OptionKind.Button
: aRow["KIND"].ToString().Equals("UPC")
? OptionKind.UpCharge
: aRow["KIND"].ToString().Equals("CNT")
? OptionKind.Count
: OptionKind.None;
var kindCode = aRow["KIND_CODE"] is null ? string.Empty : aRow["KIND_CODE"].ToString();
var amountMin = aRow["MIN_AMT"] is null ? 0 : int.Parse(aRow["MIN_AMT"].ToString());
var amountMax = aRow["MAX_AMT"] is null ? 0 : int.Parse(aRow["MAX_AMT"].ToString());
var amount = aRow["AMT"] is null ? 0d : double.Parse(aRow["AMT"].ToString());
result.Add
(
new M_ItemOption
{
Index = setIndex,
Code = optionCode,
Name = GetLaguageData("OPTN", optionCode),
SelectValue = 0d,
Kind = kind,
KindCode = kindCode,
Amount = amount,
AmountMin = amountMin,
AmountMax = amountMax
}
);
setIndex++;
}
}
catch
{
}
}
}
}
}
catch
{
result = null;
}
return result;
}
#endregion Methods
}
}