3019 lines
130 KiB
C#
3019 lines
130 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Windows.Media;
|
|
using System.Windows.Media.Imaging;
|
|
using System.IO;
|
|
using System.ComponentModel;
|
|
using System.Windows.Input;
|
|
using System.Windows.Media.Animation;
|
|
using System.Windows;
|
|
using System.Collections.ObjectModel;
|
|
using System.Text.RegularExpressions;
|
|
using System.Windows.Threading;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Controls;
|
|
#region SPC.Kiosk
|
|
using SPC.Kiosk.Base;
|
|
using SPC.Kiosk.Common;
|
|
using SPC.Kiosk.DataHelper;
|
|
using SPC.Kiosk.PB.Model;
|
|
using SPC.Kiosk.Popup;
|
|
using SPC.Kiosk.Popup.Model;
|
|
using System.Threading;
|
|
using System.Net.Sockets;
|
|
using System.Net;
|
|
using Newtonsoft.Json.Linq;
|
|
#endregion
|
|
namespace SPC.Kiosk.PB.ViewModel
|
|
{
|
|
/// <summary>
|
|
/// PBWindow View Model
|
|
/// </summary>
|
|
public class VmPBViewModel : ViewModelBase
|
|
{
|
|
#region [ Members ]
|
|
private PopupManager popupManager = PopupManager.GetInstance;
|
|
private BackDataService backDataService;
|
|
private Queue<M_ScanData> scanQueue = new Queue<M_ScanData>();
|
|
private bool IsScanProcess = true;
|
|
private Task ScanProcess = null;
|
|
//public Dictionary<string, string> PosOptionValues;
|
|
|
|
|
|
|
|
private static readonly string ip = "127.0.0.1";
|
|
private static readonly int port = 11004;
|
|
private static Thread listenThread;
|
|
private static Thread recevieThread;
|
|
private static Socket clientSocket;
|
|
private static Socket listenSocket;
|
|
|
|
|
|
|
|
private string optionValue810;
|
|
/// <summary>
|
|
/// 자동계산 사용여부
|
|
/// </summary>
|
|
public string OptionValue810
|
|
{
|
|
get { return optionValue810; }
|
|
set { optionValue810 = value; PropertyChange("OptionValue810"); }
|
|
}
|
|
private string optionValue811;
|
|
/// <summary>
|
|
/// 바코드계산 사용여부
|
|
/// </summary>
|
|
public string OptionValue811
|
|
{
|
|
get { return optionValue811; }
|
|
set { optionValue811 = value; PropertyChange("OptionValue811"); }
|
|
}
|
|
|
|
private string optionValue812;
|
|
/// <summary>
|
|
/// 직원호출 사용여부
|
|
/// </summary>
|
|
public string OptionValue812
|
|
{
|
|
get { return optionValue812; }
|
|
set { optionValue812 = value; PropertyChange("OptionValue812"); }
|
|
}
|
|
|
|
private PBSensingSubPageType sensingSubPage = PBSensingSubPageType.SensingPage;
|
|
/// <summary>
|
|
/// PB Sensing SubPage Type
|
|
/// </summary>
|
|
public PBSensingSubPageType SensingSubPage
|
|
{
|
|
get { return sensingSubPage; }
|
|
set { sensingSubPage = value; PropertyChange("SensingSubPage"); }
|
|
}
|
|
|
|
/// <summary>
|
|
/// 처리중 화면
|
|
/// </summary>
|
|
public WaitWindow WaitWindowFrom { get; set; }
|
|
private DispatcherTimer ToIntoroTimer;
|
|
/// <summary>
|
|
/// 입력 대기 초과시 연장 팝업 사용 유무
|
|
/// </summary>
|
|
public bool IsTimeoutPopup { get; set; } = false;
|
|
private DateTime LastAccessTime { get; set; }
|
|
/// <summary>
|
|
/// 대기 화면에서 다음 화면 연결시 옵션
|
|
/// </summary>
|
|
public string DefaultLinkValue { get; set; }
|
|
/// <summary>
|
|
/// 상품 목록 초기화 필요 유무
|
|
/// </summary>
|
|
public bool NeedIntailizeItems { get; set; }
|
|
|
|
private SupportLanguageType showLanguageType;
|
|
/// <summary>
|
|
/// 다국어 코드
|
|
/// </summary>
|
|
public SupportLanguageType ShowLanguageType
|
|
{
|
|
get { return showLanguageType; }
|
|
set { showLanguageType = value; PropertyChange("ShowLanguageType"); }
|
|
}
|
|
private PBPageType defaultPage = PBPageType.Intro;
|
|
/// <summary>
|
|
/// 현재 화면
|
|
/// </summary>
|
|
public PBPageType DefaultPage
|
|
{
|
|
get { return defaultPage; }
|
|
set { defaultPage = value; PropertyChange("DefaultPage"); }
|
|
}
|
|
private bool canWindowClose = false;
|
|
/// <summary>
|
|
/// 화면 닫기 (true 이면 바로 닫음)
|
|
/// </summary>
|
|
public bool CanWindowClose
|
|
{
|
|
get { return canWindowClose; }
|
|
set { canWindowClose = value; PropertyChange("CanWindowClose"); }
|
|
}
|
|
|
|
#region Intro & Page
|
|
private ObservableCollection<M_IntroItems> introItems;
|
|
/// <summary>
|
|
/// 대기 화면 Contents
|
|
/// </summary>
|
|
public ObservableCollection<M_IntroItems> IntroItems
|
|
{
|
|
get { return introItems; }
|
|
set { introItems = value; PropertyChange("IntroItems"); }
|
|
}
|
|
private M_HappyPointReturn happyPointReturn;
|
|
/// <summary>
|
|
/// 해피 포인트 인증 정보
|
|
/// </summary>
|
|
public M_HappyPointReturn HappyPointReturn
|
|
{
|
|
get { return happyPointReturn; }
|
|
set { happyPointReturn = value; PropertyChange("HappyPointReturn"); }
|
|
}
|
|
/// <summary>
|
|
/// Alt+F4 대한 Command
|
|
/// </summary>
|
|
public ICommand ToExecuteNothing { get; protected set; } = null;
|
|
/// <summary>
|
|
/// 대기 화면 클릭
|
|
/// </summary>
|
|
public ICommand RollMediaCommand { get; protected set; } = null;
|
|
|
|
#endregion
|
|
|
|
#region GMB
|
|
|
|
#region GMB Left
|
|
/// <summary>
|
|
/// 공통 메뉴 로고
|
|
/// </summary>
|
|
public string GmbLogo { get; set; } = ResourceManager.GetNximagePathAdd("Img_main_logo.png", CommonValue.PBdesignImagesPath);
|
|
/// <summary>
|
|
/// 공통 메뉴 관리자 기능 클릭
|
|
/// </summary>
|
|
public ICommand ReaderCheckCommand { get; protected set; } = null;
|
|
/// <summary>
|
|
/// 로로 클릭 > 홈 화면으로 이동
|
|
/// </summary>
|
|
public ICommand GotoFirstCommand { get; protected set; } = null;
|
|
/// <summary>
|
|
/// 관리자 기능 클릭 수
|
|
/// </summary>
|
|
public int ReaderCheckClickCount { get; set; } = 0;
|
|
private bool gmbReaderCheckOpen = false;
|
|
/// <summary>
|
|
/// 관리자 기늘 오픈
|
|
/// </summary>
|
|
public bool GmbReaderCheckOpen
|
|
{
|
|
get { return gmbReaderCheckOpen; }
|
|
set { gmbReaderCheckOpen = value; PropertyChange("GmbReaderCheckOpen"); }
|
|
}
|
|
#endregion
|
|
|
|
#region GMB Center
|
|
/// <summary>
|
|
/// 공통 토글 메뉴 배경 (센싱,일반주문 전환 배경)
|
|
/// </summary>
|
|
public string GmbToggleOff { get; set; } = ResourceManager.GetNximagePathAdd("Btn_toggle_off.png", CommonValue.PBdesignImagesPath);
|
|
/// <summary>
|
|
/// 공통 토글 메뉴 전경 (센싱,일반주문 전환 전경)
|
|
/// </summary>
|
|
public string GmbToggleOn { get; set; } = ResourceManager.GetNximagePathAdd("Btn_toggle_on.png", CommonValue.PBdesignImagesPath);
|
|
/// <summary>
|
|
/// 자동 주문 배경
|
|
/// </summary>
|
|
public string GmbAIscannerNormal { get; set; } = ResourceManager.GetNximagePathAdd("Ic_ai_off.png", CommonValue.PBdesignImagesPath);
|
|
/// <summary>
|
|
/// 자동 주문 Disable 배경
|
|
/// </summary>
|
|
public string GmbAIscannerDisable { get; set; } = ResourceManager.GetNximagePathAdd("Ic_ai_on.png", CommonValue.PBdesignImagesPath);
|
|
private bool gmbAIscannerEnable;
|
|
/// <summary>
|
|
/// 자동 주문 버튼 Enabled
|
|
/// </summary>
|
|
public bool GmbAIscannerEnable
|
|
{
|
|
get { return gmbAIscannerEnable; }
|
|
set { gmbAIscannerEnable = value; PropertyChange("GmbAIscannerEnable"); }
|
|
}
|
|
/// <summary>
|
|
/// 일반 주문 배경
|
|
/// </summary>
|
|
public string GmbOrderNormal { get; set; } = ResourceManager.GetNximagePathAdd("Ic_order_off.png", CommonValue.PBdesignImagesPath);
|
|
/// <summary>
|
|
/// 일반 주문 Disable 배경
|
|
/// </summary>
|
|
public string GmbOrderDisable { get; set; } = ResourceManager.GetNximagePathAdd("Ic_order_on.png", CommonValue.PBdesignImagesPath);
|
|
private bool gmbOrderEnable;
|
|
/// <summary>
|
|
/// 일반 주문 버튼 Enabled
|
|
/// </summary>
|
|
public bool GmbOrderEnable
|
|
{
|
|
get { return gmbOrderEnable; }
|
|
set { gmbOrderEnable = value; PropertyChange("GmbOrderEnable"); }
|
|
}
|
|
/// <summary>
|
|
/// 자동 주문 Command
|
|
/// </summary>
|
|
public ICommand GmbAIscannerCommand { get; protected set; } = null;
|
|
/// <summary>
|
|
/// 일반 주문 Command
|
|
/// </summary>
|
|
public ICommand GmbOrderCommand { get; protected set; } = null;
|
|
private string gmbMemberName;
|
|
/// <summary>
|
|
/// 해피 포인트 가입 고객명
|
|
/// </summary>
|
|
public string GmbMemberName
|
|
{
|
|
get { return gmbMemberName; }
|
|
set { gmbMemberName = value; PropertyChange("GmbMemberName"); }
|
|
}
|
|
/// <summary>
|
|
/// 해피 포인트 안내 배경
|
|
/// </summary>
|
|
public string GmbHappyInfoBackGround { get; set; } = ResourceManager.GetNximagePathAdd("btn_happypoint_info.png", CommonValue.PBdesignImagesPath);
|
|
private bool gmbHappyInfoEnable = false;
|
|
/// <summary>
|
|
/// 해피 포인트 안내 Enabled
|
|
/// </summary>
|
|
public bool GmbHappyInfoEnable
|
|
{
|
|
get { return gmbHappyInfoEnable; }
|
|
set { gmbHappyInfoEnable = value; PropertyChange("GmbHappyInfoEnable"); }
|
|
}
|
|
/// <summary>
|
|
/// 해피 포인트 안내 표시 시점
|
|
/// </summary>
|
|
public DateTime GmbHappyInfoEnableTime { get; set; }
|
|
#endregion
|
|
|
|
#region GMB Right
|
|
/// <summary>
|
|
/// 해피 포인트 로그인 아이콘
|
|
/// </summary>
|
|
public string GmbHappyPointimage { get; set; } = ResourceManager.GetNximagePathAdd("btn_happypoint_d.png", CommonValue.PBdesignImagesPath);
|
|
/// <summary>
|
|
/// 해피 포인트 로그인 Disabled 아이콘
|
|
/// </summary>
|
|
public string GmbHappyPointDisable { get; set; } = ResourceManager.GetNximagePathAdd("btn_happypoint_n.png", CommonValue.PBdesignImagesPath);
|
|
/// <summary>
|
|
/// 직원 호출 아이콘
|
|
/// </summary>
|
|
public string GmbCallimage { get; set; } = ResourceManager.GetNximagePathAdd("btn_help.png", CommonValue.PBdesignImagesPath);
|
|
/// <summary>
|
|
/// 로그 아웃 아이콘
|
|
/// </summary>
|
|
public string GmbHomeimage { get; set; } = ResourceManager.GetNximagePathAdd("btn_reset.png", CommonValue.PBdesignImagesPath);
|
|
private string gmbLanguageimage = ResourceManager.GetNximagePathAdd("btn_language_kor.png", CommonValue.PBdesignImagesPath);
|
|
/// <summary>
|
|
/// 다국어 변경 아이콘
|
|
/// </summary>
|
|
public string GmbLanguageimage
|
|
{
|
|
get { return gmbLanguageimage; }
|
|
set { gmbLanguageimage = value; PropertyChange("GmbLanguageimage"); }
|
|
}
|
|
private bool gmbHome = true;
|
|
/// <summary>
|
|
/// 로그 아웃 Enabled
|
|
/// </summary>
|
|
public bool GmbHome
|
|
{
|
|
get { return gmbHome; }
|
|
set { gmbHome = value; PropertyChange("GmbHome"); }
|
|
}
|
|
private bool gmbHappyPointEnable = true;
|
|
/// <summary>
|
|
/// 해피 포인트 로그인 Enabled
|
|
/// </summary>
|
|
public bool GmbHappyPointEnable
|
|
{
|
|
get { return gmbHappyPointEnable; }
|
|
set { gmbHappyPointEnable = value; PropertyChange("GmbHappyPointEnable"); }
|
|
}
|
|
private bool gmbEmpCall = true;
|
|
/// <summary>
|
|
/// 직원 호출 Enabled
|
|
/// </summary>
|
|
public bool GmbEmpCall
|
|
{
|
|
get { return gmbEmpCall; }
|
|
set { gmbEmpCall = value; PropertyChange("GmbEmpCall"); }
|
|
}
|
|
private bool gmbLanguage = true;
|
|
/// <summary>
|
|
/// 다국어 변경 Enabled
|
|
/// </summary>
|
|
public bool GmbLanguage
|
|
{
|
|
get { return gmbLanguage; }
|
|
set { gmbLanguage = value; PropertyChange("GmbLanguage"); }
|
|
}
|
|
private bool memberLoginOK = false;
|
|
/// <summary>
|
|
/// 해피 포인트 로그인 유무
|
|
/// </summary>
|
|
public bool MemberLoginOK
|
|
{
|
|
get { return memberLoginOK; }
|
|
set { memberLoginOK = value; PropertyChange("MemberLoginOK"); }
|
|
}
|
|
/// <summary>
|
|
/// 해피 포인트 로그인 Command
|
|
/// </summary>
|
|
public ICommand HappyPointCommand { get; protected set; } = null;
|
|
/// <summary>
|
|
/// 직원 호출 Command
|
|
/// </summary>
|
|
public ICommand CallEmployeeCommand { get; protected set; } = null;
|
|
/// <summary>
|
|
/// 다국어 변경 Command
|
|
/// </summary>
|
|
public ICommand LanguageCommand { get; protected set; } = null;
|
|
/// <summary>
|
|
/// 로그 아웃 Command
|
|
/// </summary>
|
|
public ICommand GotoIntroPageCommand { get; protected set; } = null;
|
|
|
|
#endregion
|
|
|
|
|
|
#endregion
|
|
|
|
#region First Page Contents
|
|
/// <summary>
|
|
/// 홈페이지 자동 주문 배경
|
|
/// </summary>
|
|
public string First2CameraBackNormal { get; set; } = ResourceManager.GetNximagePathAdd("btn_main_camerascan_n.png", CommonValue.PBdesignImagesPath);
|
|
/// <summary>
|
|
/// 홈페이지 자동 주문 마우스 다운 배경
|
|
/// </summary>
|
|
public string First2CameraBackDown { get; set; } = ResourceManager.GetNximagePathAdd("btn_main_camerascan_f.png", CommonValue.PBdesignImagesPath);
|
|
/// <summary>
|
|
/// 홈페이지 일반 주문 배경
|
|
/// </summary>
|
|
public string First2SelfOrderBackNormal { get; set; } = ResourceManager.GetNximagePathAdd("btn_main_selforder_n.png", CommonValue.PBdesignImagesPath);
|
|
/// <summary>
|
|
/// 홈페이지 일반 주문 마우스 다운 배경
|
|
/// </summary>
|
|
public string First2SelfOrderBackDown { get; set; } = ResourceManager.GetNximagePathAdd("btn_main_selforder_f.png", CommonValue.PBdesignImagesPath);
|
|
|
|
#endregion
|
|
|
|
#region Items Contents
|
|
|
|
#region Category
|
|
/// <summary>
|
|
/// Category1 Background
|
|
/// </summary>
|
|
public string Category1Background { get; set; } = ResourceManager.GetNximagePathAdd("btn_main_menu_n.png", CommonValue.PBdesignImagesPath);
|
|
/// <summary>
|
|
/// All Category Data
|
|
/// </summary>
|
|
public List<M_CategoryItems> AllCategory { get; set; }
|
|
|
|
private ObservableCollection<M_ItemData> category1Data;
|
|
/// <summary>
|
|
/// Category1 Data
|
|
/// </summary>
|
|
public ObservableCollection<M_ItemData> Category1Data
|
|
{
|
|
get { return category1Data; }
|
|
set { category1Data = value; PropertyChange("Category1Data"); }
|
|
}
|
|
private ObservableCollection<M_ItemData> category2Data;
|
|
/// <summary>
|
|
/// Category2 Data
|
|
/// </summary>
|
|
public ObservableCollection<M_ItemData> Category2Data
|
|
{
|
|
get { return category2Data; }
|
|
set { category2Data = value; PropertyChange("Category2Data"); }
|
|
}
|
|
private int defaultCategory1Item;
|
|
/// <summary>
|
|
/// Default Category1 Item
|
|
/// </summary>
|
|
public int DefaultCategory1Item
|
|
{
|
|
get { return defaultCategory1Item; }
|
|
set { defaultCategory1Item = value; PropertyChange("DefaultCategory1Item"); }
|
|
}
|
|
private int defaultCategory2Item;
|
|
/// <summary>
|
|
/// Default Category2 Item
|
|
/// </summary>
|
|
public int DefaultCategory2Item
|
|
{
|
|
get { return defaultCategory2Item; }
|
|
set { defaultCategory2Item = value; PropertyChange("DefaultCategory2Item"); }
|
|
}
|
|
private int defaultCategory1PageNo;
|
|
/// <summary>
|
|
/// Default Category1 Page No
|
|
/// </summary>
|
|
public int DefaultCategory1PageNo
|
|
{
|
|
get { return defaultCategory1PageNo; }
|
|
set { defaultCategory1PageNo = value; PropertyChange("DefaultCategory1PageNo"); }
|
|
}
|
|
private int defaultCategory2PageNo;
|
|
/// <summary>
|
|
/// Default Category2 Page No
|
|
/// </summary>
|
|
public int DefaultCategory2PageNo
|
|
{
|
|
get { return defaultCategory2PageNo; }
|
|
set { defaultCategory2PageNo = value; PropertyChange("DefaultCategory2PageNo"); }
|
|
}
|
|
/// <summary>
|
|
/// Category1 Commad
|
|
/// </summary>
|
|
public ICommand Category1Command { get; protected set; } = null;
|
|
/// <summary>
|
|
/// Category2 Commad
|
|
/// </summary>
|
|
public ICommand Category2Command { get; protected set; } = null;
|
|
/// <summary>
|
|
/// OrderHistory Command (open)
|
|
/// </summary>
|
|
public ICommand OrderHistoryCommand { get; protected set; } = null;
|
|
/// <summary>
|
|
/// OrderHistory Close Command
|
|
/// </summary>
|
|
public ICommand OrderHistoryCloseCommand { get; protected set; } = null;
|
|
#endregion
|
|
|
|
#region Items
|
|
/// <summary>
|
|
/// AllI tems
|
|
/// </summary>
|
|
public List<M_ItemData> AllItems { get; set; }
|
|
/// <summary>
|
|
/// Order(item) Column Count
|
|
/// </summary>
|
|
public int OrderColumnCount { get; set; }
|
|
/// <summary>
|
|
/// Order(item) Row Count
|
|
/// </summary>
|
|
public int OrderRowCount { get; set; }
|
|
private int defaultOrderItem;
|
|
/// <summary>
|
|
/// Default Order Item
|
|
/// </summary>
|
|
public int DefaultOrderItem
|
|
{
|
|
get { return defaultOrderItem; }
|
|
set { defaultOrderItem = value; PropertyChange("DefaultOrderItem"); }
|
|
}
|
|
private int orderItemPageNo;
|
|
/// <summary>
|
|
/// Default Order Item Page No
|
|
/// </summary>
|
|
public int OrderItemPageNo
|
|
{
|
|
get { return orderItemPageNo; }
|
|
set { orderItemPageNo = value; PropertyChange("OrderItemPageNo"); }
|
|
}
|
|
|
|
private ObservableCollection<M_ItemData> orderItems;
|
|
/// <summary>
|
|
/// Order Items Data
|
|
/// </summary>
|
|
public ObservableCollection<M_ItemData> OrderItems
|
|
{
|
|
get { return orderItems; }
|
|
set { orderItems = value; PropertyChange("OrderItems"); }
|
|
}
|
|
/// <summary>
|
|
/// Item Command
|
|
/// </summary>
|
|
public ICommand ItemCommand { get; protected set; } = null;
|
|
/// <summary>
|
|
/// Page to Left Normal Image
|
|
/// </summary>
|
|
public string Page2LeftNormalImage { get; set; } = ResourceManager.GetNximagePathAdd("btn_page_before_n.png", CommonValue.PBdesignImagesPath);
|
|
/// <summary>
|
|
/// Page to Right Normal Image
|
|
/// </summary>
|
|
public string Page2RightNormalImage { get; set; } = ResourceManager.GetNximagePathAdd("btn_page_after_n.png", CommonValue.PBdesignImagesPath);
|
|
private bool page2LeftEnable;
|
|
/// <summary>
|
|
/// Page to Left Enabled
|
|
/// </summary>
|
|
public bool Page2LeftEnable
|
|
{
|
|
get { return page2LeftEnable; }
|
|
set { page2LeftEnable = value; PropertyChange("Page2LeftEnable"); }
|
|
}
|
|
private bool page2RightEnable;
|
|
/// <summary>
|
|
/// Page to Right Enabled
|
|
/// </summary>
|
|
public bool Page2RightEnable
|
|
{
|
|
get { return page2RightEnable; }
|
|
set { page2RightEnable = value; PropertyChange("Page2RightEnable"); }
|
|
}
|
|
/// <summary>
|
|
/// Page to Left Command
|
|
/// </summary>
|
|
public ICommand Page2LeftCommand { get; protected set; } = null;
|
|
/// <summary>
|
|
/// Page to Right Command
|
|
/// </summary>
|
|
public ICommand Page2RightCommand { get; protected set; } = null;
|
|
|
|
private ObservableCollection<M_ItemData> itemPageStatus;
|
|
/// <summary>
|
|
/// Item Page Status
|
|
/// </summary>
|
|
public ObservableCollection<M_ItemData> ItemPageStatus
|
|
{
|
|
get { return itemPageStatus; }
|
|
set { itemPageStatus = value; PropertyChange("ItemPageStatus"); }
|
|
}
|
|
private int pageStatusColumnCount;
|
|
/// <summary>
|
|
/// Page Status Column Count
|
|
/// </summary>
|
|
public int PageStatusColumnCount
|
|
{
|
|
get { return pageStatusColumnCount; }
|
|
set { pageStatusColumnCount = value; PropertyChange("PageStatusColumnCount"); }
|
|
}
|
|
/// <summary>
|
|
/// Page Select Command
|
|
/// </summary>
|
|
public ICommand PageSelectCommand { get; protected set; } = null;
|
|
|
|
#endregion
|
|
|
|
#region Order History
|
|
/// <summary>
|
|
/// Order History Normal Brush
|
|
/// </summary>
|
|
public string OrderHistoryNormalBrush { get; set; } = ResourceManager.GetNximagePathAdd("Ic_mylist_d.png", CommonValue.PBdesignImagesPath);
|
|
/// <summary>
|
|
/// Order History Disable Brush
|
|
/// </summary>
|
|
public string OrderHistoryDisableBrush { get; set; } = ResourceManager.GetNximagePathAdd("Ic_mylist_n.png", CommonValue.PBdesignImagesPath);
|
|
/// <summary>
|
|
/// Order History Close NormalB rush
|
|
/// </summary>
|
|
public string CloseOrderHistoryNormalBrush { get; set; } = ResourceManager.GetNximagePathAdd("Ic_mylist_s.png", CommonValue.PBdesignImagesPath);
|
|
private bool orderHistoryView = false;
|
|
/// <summary>
|
|
/// Is Order History View
|
|
/// </summary>
|
|
public bool OrderHistoryView
|
|
{
|
|
get { return orderHistoryView; }
|
|
set { orderHistoryView = value; PropertyChange("OrderHistoryView"); }
|
|
}
|
|
private List<string> findOrderHistoryItems;
|
|
/// <summary>
|
|
/// Find Order History Items
|
|
/// </summary>
|
|
public List<string> FindOrderHistoryItems
|
|
{
|
|
get { return findOrderHistoryItems; }
|
|
set { findOrderHistoryItems = value; PropertyChange("FindOrderHistoryItems"); }
|
|
}
|
|
|
|
private ObservableCollection<M_ItemData> orderHistoryItems;
|
|
/// <summary>
|
|
/// Order History Items
|
|
/// </summary>
|
|
public ObservableCollection<M_ItemData> OrderHistoryItems
|
|
{
|
|
get { return orderHistoryItems; }
|
|
set { orderHistoryItems = value; PropertyChange("OrderHistoryItems"); }
|
|
}
|
|
private bool orderHistoryItemsEnable;
|
|
/// <summary>
|
|
/// Order History Items Enable
|
|
/// </summary>
|
|
public bool OrderHistoryItemsEnable
|
|
{
|
|
get { return orderHistoryItemsEnable; }
|
|
set { orderHistoryItemsEnable = value; PropertyChange("OrderHistoryItemsEnable"); }
|
|
}
|
|
#endregion
|
|
#endregion Contents
|
|
|
|
#region Scan Contents
|
|
/// <summary>
|
|
/// Scan Info GIF
|
|
/// </summary>
|
|
public string ScanInfoGIF { get; set; } = ResourceManager.GetNximagePathAdd("img_gif_barcodescan.gif", CommonValue.PBdesignImagesPath);
|
|
/// <summary>
|
|
/// Scan Header Bar
|
|
/// </summary>
|
|
public string ScanHeaderBar { get; set; } = ResourceManager.GetNximagePathAdd("Bl_bar.png", CommonValue.PBdesignImagesPath);
|
|
/// <summary>
|
|
/// Scan Payment1 Normal
|
|
/// </summary>
|
|
public string ScanPayment1Normal { get; set; } = ResourceManager.GetNximagePathAdd("btn_addorder_payment_n.png", CommonValue.PBdesignImagesPath);
|
|
/// <summary>
|
|
/// Scan Payment1 Down
|
|
/// </summary>
|
|
public string ScanPayment1Down { get; set; } = ResourceManager.GetNximagePathAdd("btn_addorder_payment_f.png", CommonValue.PBdesignImagesPath);
|
|
/// <summary>
|
|
/// Add Scan1 Normal
|
|
/// </summary>
|
|
public string AddScan1Normal { get; set; } = ResourceManager.GetNximagePathAdd("btn_addorder_camerascan_n.png", CommonValue.PBdesignImagesPath);
|
|
/// <summary>
|
|
/// Add Scan1 Down
|
|
/// </summary>
|
|
public string AddScan1Down { get; set; } = ResourceManager.GetNximagePathAdd("btn_addorder_camerascan_f.png", CommonValue.PBdesignImagesPath);
|
|
/// <summary>
|
|
/// Scan Order1 Normal
|
|
/// </summary>
|
|
public string ScanOrder1Normal { get; set; } = ResourceManager.GetNximagePathAdd("btn_addorder_selforder_n.png", CommonValue.PBdesignImagesPath);
|
|
/// <summary>
|
|
/// Scan Order1 Down
|
|
/// </summary>
|
|
public string ScanOrder1Down { get; set; } = ResourceManager.GetNximagePathAdd("btn_addorder_selforder_f.png", CommonValue.PBdesignImagesPath);
|
|
/// <summary>
|
|
/// Scan Button Small Normal
|
|
/// </summary>
|
|
public string ScanButtonSmallNormal { get; set; } = ResourceManager.GetNximagePathAdd("btn_addorder_n.png", CommonValue.PBdesignImagesPath);
|
|
/// <summary>
|
|
/// Scan Button Small Down
|
|
/// </summary>
|
|
public string ScanButtonSmallDown { get; set; } = ResourceManager.GetNximagePathAdd("btn_addorder_f.png", CommonValue.PBdesignImagesPath);
|
|
/// <summary>
|
|
/// Scan Button Large Normal
|
|
/// </summary>
|
|
public string ScanButtonLargeNormal { get; set; } = ResourceManager.GetNximagePathAdd("btn_addorder2_n.png", CommonValue.PBdesignImagesPath);
|
|
/// <summary>
|
|
/// Scan Button Large Down
|
|
/// </summary>
|
|
public string ScanButtonLargeDown { get; set; } = ResourceManager.GetNximagePathAdd("btn_addorder2_f.png", CommonValue.PBdesignImagesPath);
|
|
/// <summary>
|
|
/// Scan Button Normal
|
|
/// </summary>
|
|
public string ScanButtonNormal { get; set; } = ResourceManager.GetNximagePathAdd("btn_addorder3_n.png", CommonValue.PBdesignImagesPath);
|
|
/// <summary>
|
|
/// Scan Button Down
|
|
/// </summary>
|
|
public string ScanButtonDown { get; set; } = ResourceManager.GetNximagePathAdd("btn_addorder3_f.png", CommonValue.PBdesignImagesPath);
|
|
/// <summary>
|
|
/// Info Logo
|
|
/// </summary>
|
|
public string InfoLogo { get; set; } = ResourceManager.GetNximagePathAdd("ic_info.png", CommonValue.PBdesignImagesPath);
|
|
/// <summary>
|
|
/// Info LogoX
|
|
/// </summary>
|
|
public string InfoLogoX { get; set; } = ResourceManager.GetNximagePathAdd("btn_help.png", CommonValue.PBdesignImagesPath);
|
|
|
|
private string readBarCode;
|
|
/// <summary>
|
|
/// Read Barcode
|
|
/// </summary>
|
|
public string ReadBarCode
|
|
{
|
|
get { return readBarCode; }
|
|
set { readBarCode = value; PropertyChange("ReadBarCode"); }
|
|
}
|
|
private int aIScanCount;
|
|
/// <summary>
|
|
/// AI Scan Count
|
|
/// </summary>
|
|
public int AIScanCount
|
|
{
|
|
get { return aIScanCount; }
|
|
set { aIScanCount = value; PropertyChange("AIScanCount"); }
|
|
}
|
|
/// <summary>
|
|
/// Rescan Commad
|
|
/// </summary>
|
|
public ICommand RescanCommand { get; protected set; } = null;
|
|
/// <summary>
|
|
/// Goto Barcode Commad
|
|
/// </summary>
|
|
public ICommand GotoBarcodeCommand { get; protected set; } = null;
|
|
#endregion
|
|
|
|
#region MiniBasket
|
|
/// <summary>
|
|
/// MiniBasket Delete All Image
|
|
/// </summary>
|
|
public string MiniBasketDeleteAllImage { get; set; } = ResourceManager.GetNximagePathAdd("btn_delete.png", CommonValue.PBdesignImagesPath);
|
|
private bool miniBasketDeleteAllEnable;
|
|
/// <summary>
|
|
/// MiniBasket Delete All Enabled
|
|
/// </summary>
|
|
public bool MiniBasketDeleteAllEnable
|
|
{
|
|
get { return miniBasketDeleteAllEnable; }
|
|
set { miniBasketDeleteAllEnable = value; PropertyChange("MiniBasketDeleteAllEnable"); }
|
|
}
|
|
/// <summary>
|
|
/// Empty Basket Image
|
|
/// </summary>
|
|
public string EmptyBasketImage { get; set; } = ResourceManager.GetNximagePathAdd("Ic_Basket.png", CommonValue.PBdesignImagesPath);
|
|
/// <summary>
|
|
/// Empty Basket DropCommand
|
|
/// </summary>
|
|
public ICommand EmptyBasketDropCommand { get; protected set; } = null;
|
|
/// <summary>
|
|
/// MiniBasket Delete All Command
|
|
/// </summary>
|
|
public ICommand MiniBasketDeleteAllCommand { get; protected set; } = null;
|
|
private Visibility orderNoneDataGridVisibility = Visibility.Visible;
|
|
/// <summary>
|
|
/// Order None Data Grid Visibility
|
|
/// </summary>
|
|
public Visibility OrderNoneDataGridVisibility
|
|
{
|
|
get { return orderNoneDataGridVisibility; }
|
|
set { orderNoneDataGridVisibility = value; PropertyChange("OrderNoneDataGridVisibility"); }
|
|
|
|
}
|
|
private Visibility orderExistDataGridVisibility = Visibility.Hidden;
|
|
/// <summary>
|
|
/// Order Exist Data Grid Visibility
|
|
/// </summary>
|
|
public Visibility OrderExistDataGridVisibility
|
|
{
|
|
get { return orderExistDataGridVisibility; }
|
|
set { orderExistDataGridVisibility = value; PropertyChange("OrderExistDataGridVisibility"); }
|
|
|
|
}
|
|
#region BasketItems
|
|
|
|
private ObservableCollection<M_BasketItem> miniBasketData;
|
|
/// <summary>
|
|
/// Mini Basket Data
|
|
/// </summary>
|
|
public ObservableCollection<M_BasketItem> MiniBasketData
|
|
{
|
|
get { return miniBasketData; }
|
|
set { miniBasketData = value; PropertyChange("MiniBasketData"); }
|
|
}
|
|
/// <summary>
|
|
/// Basket Item Delete Command
|
|
/// </summary>
|
|
public ICommand BasketItemDeleteCommand { get; protected set; } = null;
|
|
#endregion
|
|
#region Total
|
|
/// <summary>
|
|
/// Order Total Payment Icon
|
|
/// </summary>
|
|
public string OrderTotalPaymentIcon { get; set; } = ResourceManager.GetNximagePathAdd("Ic_totalcost.png", CommonValue.PBdesignImagesPath);
|
|
private int orderTotalCount = 0;
|
|
/// <summary>
|
|
/// Order Total Count
|
|
/// </summary>
|
|
public int OrderTotalCount
|
|
{
|
|
get { return orderTotalCount; }
|
|
set { orderTotalCount = value; PropertyChange("OrderTotalCount"); }
|
|
|
|
}
|
|
private double orderTotalPayment = 0d;
|
|
/// <summary>
|
|
/// Order Total Payment
|
|
/// </summary>
|
|
public double OrderTotalPayment
|
|
{
|
|
get { return orderTotalPayment; }
|
|
set { orderTotalPayment = value; PropertyChange("OrderTotalPayment"); }
|
|
|
|
}
|
|
#endregion
|
|
#region Button
|
|
private bool orderDetailEnable;
|
|
/// <summary>
|
|
/// Order Detail Enabled
|
|
/// </summary>
|
|
public bool OrderDetailEnable
|
|
{
|
|
get { return orderDetailEnable; }
|
|
set { orderDetailEnable = value; PropertyChange("OrderDetailEnable"); }
|
|
}
|
|
/// <summary>
|
|
/// Order Detail Command
|
|
/// </summary>
|
|
public ICommand OrderDetailCommand { get; protected set; } = null;
|
|
|
|
private bool gotoPaymentEnable;
|
|
/// <summary>
|
|
/// Goto Payment Enabled
|
|
/// </summary>
|
|
public bool GotoPaymentEnable
|
|
{
|
|
get { return gotoPaymentEnable; }
|
|
set { gotoPaymentEnable = value; PropertyChange("GotoPaymentEnable"); }
|
|
}
|
|
/// <summary>
|
|
/// Goto Payment Command
|
|
/// </summary>
|
|
public ICommand GotoPaymentCommand { get; protected set; } = null;
|
|
|
|
private PBPaymentPageType openPBPaymentPage = PBPaymentPageType.DetailBasket;
|
|
/// <summary>
|
|
/// Open PB Payment Page
|
|
/// </summary>
|
|
public PBPaymentPageType OpenPBPaymentPage
|
|
{
|
|
get { return openPBPaymentPage; }
|
|
set { openPBPaymentPage = value; PropertyChange("OpenPBPaymentPage"); }
|
|
}
|
|
#endregion
|
|
#endregion MiniBasket
|
|
|
|
#endregion Members
|
|
|
|
#region [ Ctor ]
|
|
/// <summary>
|
|
/// Ctor
|
|
/// </summary>
|
|
public VmPBViewModel()
|
|
{
|
|
WaitWindowFrom = WaitWindow.GetInstance;
|
|
InitViewModel();
|
|
LastAccessTime = DateTime.Now;
|
|
ToIntoroTimer = new DispatcherTimer
|
|
{
|
|
Interval = TimeSpan.FromSeconds(1d),
|
|
};
|
|
ToIntoroTimer.Tick += ToIntoroTimer_Tick;
|
|
backDataService = new BackDataService();
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// Dispose
|
|
/// </summary>
|
|
public void Dispose()
|
|
{
|
|
if (ScanProcess != null)
|
|
{
|
|
IsScanProcess = false;
|
|
ScanProcess.Wait();
|
|
ScanProcess = null;
|
|
}
|
|
if (backDataService != null)
|
|
{
|
|
backDataService.Dispose();
|
|
backDataService = null;
|
|
}
|
|
this.PropertyChanged -= VmPBViewModel_PropertyChanged;
|
|
if (WaitWindowFrom != null)
|
|
{
|
|
WaitWindowFrom.CloseWaitWindow();
|
|
WaitWindowFrom = null;
|
|
}
|
|
if (ToIntoroTimer != null)
|
|
{
|
|
ToIntoroTimer.Stop();
|
|
ToIntoroTimer.Tick -= ToIntoroTimer_Tick;
|
|
ToIntoroTimer = null;
|
|
}
|
|
if (popupManager != null)
|
|
{
|
|
popupManager = null;
|
|
}
|
|
GC.SuppressFinalize(this);
|
|
}
|
|
#endregion Ctor
|
|
|
|
#region [ Methods ]
|
|
private void InitViewModel()
|
|
{
|
|
WaitWindowFrom.ShowWaitWindow();
|
|
try
|
|
{
|
|
//Intro
|
|
SetCommon();
|
|
SetIntro();
|
|
ToExecuteNothing = new Command(ToExecuteNothingHandler);
|
|
RollMediaCommand = new Command(RollMediaCommandHandler);
|
|
//GMB Left
|
|
GotoFirstCommand = new Command(GotoFirstCommandHandler);
|
|
ReaderCheckCommand = new Command(ReaderCheckCommandHandler);
|
|
//GMB Right
|
|
LanguageCommand = new Command(LanguageCommandHandler);
|
|
HappyPointCommand = new Command(HappyPointCommandHandler);
|
|
CallEmployeeCommand = new Command(CallEmployeeCommandHandler);
|
|
GotoIntroPageCommand = new Command(GotoIntroPageCommadHandler);
|
|
//GMB Center
|
|
GmbAIscannerCommand = new Command(GmbAIscannerCommandHandler);
|
|
GmbOrderCommand = new Command(GmbOrderCommandHandler);
|
|
GmbAIscannerEnable = false;
|
|
//Scan Contents
|
|
RescanCommand = new Command(RescanCommandHandler);
|
|
GotoBarcodeCommand = new Command(GotoBarcodeCommandHandler);
|
|
//Item Contents
|
|
ItemCommand = new Command(ItemCommandCommandHandler);
|
|
Category1Command = new Command(Category1CommandHandler);
|
|
Category2Command = new Command(Category2CommandHandler);
|
|
OrderHistoryCommand = new Command(OrderHistoryCommandHandler);
|
|
OrderHistoryCloseCommand = new Command(OrderHistoryCloseCommandHandler);
|
|
Page2LeftCommand = new Command(Page2LeftCommandHandler);
|
|
Page2RightCommand = new Command(Page2RightCommandHandler);
|
|
OrderColumnCount = 5;
|
|
OrderRowCount = 2;
|
|
PageSelectCommand = new Command(PageSelectCommandHandler);
|
|
//MiniBasket
|
|
MiniBasketDeleteAllCommand = new Command(MiniBasketDeleteAllCommandHandler);
|
|
EmptyBasketDropCommand = new Command(EmptyBasketDropCommandHandler);
|
|
BasketItemDeleteCommand = new Command(BasketItemDeleteCommandHandler);
|
|
OrderDetailCommand = new Command(OrderDetailCommandHandler);
|
|
GotoPaymentCommand = new Command(GotoPaymentCommandHandler);
|
|
this.PropertyChanged += VmPBViewModel_PropertyChanged;
|
|
ShowLanguageType = CommonValue.CommonLanguageType;
|
|
ScanProcess = new Task(ScanDataProcessor);
|
|
ScanProcess.Start();
|
|
|
|
this.GetPosOption();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
CommonLog.ErrorLogWrite(this, "InitViewModel()", "Fail", string.Format("{0}\n{1}", ex.Message, ex.StackTrace));
|
|
}
|
|
finally
|
|
{
|
|
WaitWindowFrom.CloseWaitWindow();
|
|
}
|
|
}
|
|
|
|
private void GetPosOption()
|
|
{
|
|
//PosOption 값 획득
|
|
using (var backDataService = new BackDataService())
|
|
{
|
|
this.OptionValue810 = backDataService.GetPosOption(nameof(PosOptionType.OPT810));
|
|
this.OptionValue811 = backDataService.GetPosOption(nameof(PosOptionType.OPT811));
|
|
this.OptionValue812 = backDataService.GetPosOption(nameof(PosOptionType.OPT812));
|
|
|
|
//if (this.PosOptionValues == null) this.PosOptionValues = new Dictionary<string, string>();
|
|
//if (!this.PosOptionValues.ContainsKey(nameof(PosOptionType.OPT810))) { this.PosOptionValues.Add(nameof(PosOptionType.OPT810), this.optionValue810); }
|
|
//if (!this.PosOptionValues.ContainsKey(nameof(PosOptionType.OPT811))) { this.PosOptionValues.Add(nameof(PosOptionType.OPT811), this.optionValue811); }
|
|
}
|
|
}
|
|
|
|
private void SetCommon()
|
|
{
|
|
#if TESTMODE
|
|
using (var dataHelper = new CommonDataHelper())
|
|
{
|
|
if (!dataHelper.NeedInitModule) dataHelper.SetCommonLanguage();
|
|
}
|
|
#endif
|
|
}
|
|
|
|
|
|
#region Intro
|
|
private void SetIntro()
|
|
{
|
|
|
|
using (var dataHelper = new CommonDataHelper())
|
|
{
|
|
var getIntro = dataHelper.GetIntroData(1920d);
|
|
if (getIntro is List<M_IntroItems> && getIntro.Count > 0)
|
|
{
|
|
IntroItems = new ObservableCollection<M_IntroItems>(getIntro);
|
|
}
|
|
else
|
|
{
|
|
#region Default Intro
|
|
IntroItems = new ObservableCollection<M_IntroItems>
|
|
{
|
|
new M_IntroItems
|
|
{
|
|
ItemsStack=0,
|
|
StackWidth=1920,
|
|
StackContents = new List<M_StackContents>
|
|
{
|
|
new M_StackContents
|
|
{
|
|
ItemsIndex = 0,
|
|
MediaRollItems = new List<M_MediaRollItem>
|
|
{
|
|
new M_MediaRollItem
|
|
{
|
|
Type = MediaType.Image,
|
|
MediaPath =ResourceManager.GetNximagePathAdd("nextstation_img.jpg", CommonValue.PBdesignImagesPath),
|
|
LinkType = IntroLinkType.Page,
|
|
LinkParameter = "FirstSelect",
|
|
RunnigSeconds =10
|
|
},
|
|
}
|
|
},
|
|
new M_StackContents
|
|
{
|
|
ItemsIndex = 1,
|
|
MediaRollItems = new List<M_MediaRollItem>
|
|
{
|
|
new M_MediaRollItem{
|
|
Type = MediaType.Image,
|
|
MediaPath = ResourceManager.GetNximagePathAdd("nextstation_button.jpg", CommonValue.PBdesignImagesPath),
|
|
LinkType = IntroLinkType.Page,
|
|
LinkParameter = "ItemPage",
|
|
RunnigSeconds =10
|
|
},
|
|
}
|
|
}
|
|
}
|
|
},
|
|
};
|
|
#endregion
|
|
|
|
}
|
|
}
|
|
}
|
|
#endregion Intro
|
|
|
|
#region Contents
|
|
|
|
#region Self Order
|
|
private void SetContents()
|
|
{
|
|
if (!string.IsNullOrEmpty(DefaultLinkValue))
|
|
{
|
|
if (DefaultLinkValue.ToLower().StartsWith("category&"))
|
|
{
|
|
DataModelInit();
|
|
var getCategory = DefaultLinkValue.Split('&');
|
|
switch (getCategory.Length)
|
|
{
|
|
case 2:
|
|
DefaultCategory1Item = Category1Data.IndexOf(Category1Data.Where(r => r.Category1.Equals(getCategory[1])).FirstOrDefault());
|
|
if (DefaultCategory1Item < 0) DefaultCategory1Item = 0;
|
|
DefaultCategory2Item = 0;
|
|
break;
|
|
case 3:
|
|
DefaultCategory1Item = Category1Data.IndexOf(Category1Data.Where(r => r.Category1.Equals(getCategory[1])).FirstOrDefault());
|
|
if (DefaultCategory1Item < 0) DefaultCategory1Item = 0;
|
|
if (!string.IsNullOrEmpty(getCategory[2]))
|
|
{
|
|
DefaultCategory2Item = Category2Data.IndexOf(Category2Data.Where(r => r.Category2.Equals(getCategory[2])).FirstOrDefault());
|
|
if (DefaultCategory2Item < 0) DefaultCategory2Item = 0;
|
|
}
|
|
else
|
|
{
|
|
DefaultCategory2Item = 0;
|
|
}
|
|
break;
|
|
default:
|
|
DefaultCategory1Item = 0;
|
|
DefaultCategory2Item = 0;
|
|
break;
|
|
}
|
|
DefaultOrderItem = 0;
|
|
}
|
|
else
|
|
{
|
|
DataModelInit();
|
|
var findItem = AllItems.Where(r => r.ItemCode.Equals(DefaultLinkValue)).FirstOrDefault();
|
|
if (findItem is M_ItemData)
|
|
{
|
|
DefaultCategory1Item = Category1Data.IndexOf(Category1Data.Where(r => r.Category1.Equals(findItem.Category1)).FirstOrDefault());
|
|
DefaultCategory2Item = Category2Data.IndexOf(Category2Data.Where(r => r.Category2.Equals(findItem.Category2)).FirstOrDefault());
|
|
DefaultOrderItem = OrderItems.IndexOf(OrderItems.Where(r => r.ItemCode.Equals(DefaultLinkValue)).FirstOrDefault());
|
|
}
|
|
else
|
|
{
|
|
DefaultCategory1Item = 0;
|
|
DefaultCategory2Item = 0;
|
|
DefaultOrderItem = 0;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
DataModelInit();
|
|
DefaultCategory1Item = 0;
|
|
DefaultCategory2Item = 0;
|
|
DefaultOrderItem = 0;
|
|
}
|
|
}
|
|
private void DataModelInit()
|
|
{
|
|
try
|
|
{
|
|
if (NeedIntailizeItems)
|
|
{
|
|
ItemCacheClear();
|
|
this.SetItemData();
|
|
SetCategory1();
|
|
|
|
NeedIntailizeItems = false;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
CommonLog.ErrorLogWrite(this, "DataModelInit()", "Fail", string.Format("{0}\n{1}", ex.Message, ex.StackTrace));
|
|
}
|
|
}
|
|
private void ItemCacheClear()
|
|
{
|
|
if (AllItems is List<M_ItemData>)
|
|
{
|
|
foreach (var aitem in AllItems)
|
|
{
|
|
if (aitem.DataParameter.NormalBrush != null)
|
|
{
|
|
CacheManager.CacheRemove(aitem.DataParameter.NormalBrush);
|
|
}
|
|
if (aitem.DataParameter.SwitchOnBrush != null)
|
|
{
|
|
CacheManager.CacheRemove(aitem.DataParameter.SwitchOnBrush);
|
|
}
|
|
if (aitem.DataParameter.DisableBrush != null)
|
|
{
|
|
CacheManager.CacheRemove(aitem.DataParameter.DisableBrush);
|
|
}
|
|
if (aitem.DataParameter.DownBrush != null)
|
|
{
|
|
CacheManager.CacheRemove(aitem.DataParameter.DownBrush);
|
|
}
|
|
if (aitem.DataParameter.DragCursorImage != null)
|
|
{
|
|
CacheManager.CacheRemove(aitem.DataParameter.DragCursorImage);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
private void SetItemData()
|
|
{
|
|
try
|
|
{
|
|
#region Item Data From DB
|
|
using (var dataHelper = new CommonDataHelper())
|
|
{
|
|
//Categoty Data
|
|
AllCategory = dataHelper.GetCategoryData();
|
|
if (AllCategory is List<M_CategoryItems>)
|
|
{
|
|
//Category Design Parameter Add
|
|
foreach (var category1Item in AllCategory)
|
|
{
|
|
//Category1 Design Parameter
|
|
category1Item.Catalog1Item.DataParameter = new M_AnimationButton
|
|
{
|
|
NormalBrush = ResourceManager.GetNximagePathAdd("btn_main_menu_n.png", CommonValue.PBdesignImagesPath),
|
|
SwitchOnBrush = ResourceManager.GetNximagePathAdd("btn_main_menu_p.png", CommonValue.PBdesignImagesPath),
|
|
Width = 150,
|
|
Height = 160,
|
|
BrushStretch = Stretch.Fill,
|
|
ClickAnimationType = ButtonAnimationType.TextSizeDown,
|
|
CircleBackBrush = "Transparent",
|
|
CircleTextBruch = "Transparent",
|
|
CircleText = string.Empty,
|
|
TextVisible = Visibility.Visible,
|
|
TextFontSize = 28,
|
|
SwitchOnFontSize = 30,
|
|
TextForeground = "#adadad",
|
|
TextWrapping = TextWrapping.Wrap,
|
|
SwitchOnForeground = "White",
|
|
TextFontFamily = "NanumSquare",
|
|
TextFontWeight = FontWeights.Normal,
|
|
SwitchOnFontWeight = FontWeights.Bold,
|
|
TextAlignment = TextAlignment.Right,
|
|
TextHorizontalAlignment = HorizontalAlignment.Right,
|
|
TextVerticalAlignment = VerticalAlignment.Top,
|
|
TextMargin = new Thickness(5, 21, 20, 21),
|
|
LanguageText = dataHelper.GetLaguageData("CATE", category1Item.Catalog1Item.Category1)
|
|
};
|
|
foreach (var category2Item in category1Item.Catalog2Items)
|
|
{
|
|
//Category2 Design Parameter
|
|
category2Item.DataParameter = new M_AnimationButton
|
|
{
|
|
NormalBrush = "Transparent",
|
|
SwitchOnBrush = "Transparent",
|
|
Width = 194,
|
|
Height = 86,
|
|
BrushStretch = Stretch.Fill,
|
|
ClickAnimationType = ButtonAnimationType.TextBounceDown,
|
|
CircleBackBrush = "Transparent",
|
|
CircleTextBruch = "Transparent",
|
|
CircleText = string.Empty,
|
|
TextVisible = Visibility.Visible,
|
|
TextFontSize = 24,
|
|
SwitchOnFontSize = 24,
|
|
TextForeground = "Black",
|
|
SwitchOnForeground = "#1469cc",
|
|
TextFontFamily = "NanumSquare",
|
|
TextFontWeight = FontWeights.Normal,
|
|
SwitchOnFontWeight = FontWeights.Bold,
|
|
TextAlignment = TextAlignment.Center,
|
|
TextMargin = new Thickness(0, 0, 18, 0),
|
|
TextWrapping = TextWrapping.Wrap,
|
|
TextHorizontalAlignment = HorizontalAlignment.Center,
|
|
TextVerticalAlignment = VerticalAlignment.Center,
|
|
LanguageText = dataHelper.GetLaguageData("CATE", category2Item.Category2)
|
|
};
|
|
};
|
|
}
|
|
|
|
}
|
|
//Item Master
|
|
AllItems = dataHelper.GetItemsData();
|
|
if (AllItems is List<M_ItemData> && AllItems.Count > 0)
|
|
{
|
|
//Item Design Parameter Add
|
|
foreach (var aItem in AllItems)
|
|
{
|
|
aItem.BadgeHeight = 30;
|
|
aItem.BadgeOrientation = Orientation.Horizontal;
|
|
if (aItem.BadgeImages is List<string> && aItem.BadgeImages.Count > 0)
|
|
{
|
|
var newBadgeImages = new List<string>();
|
|
foreach (var aBadgeImage in aItem.BadgeImages)
|
|
{
|
|
var strBadgeImage = ResourceManager.GetNximagePathAdd(aBadgeImage, CommonValue.PBdesignImagesPath);
|
|
if (!string.IsNullOrEmpty(strBadgeImage))
|
|
{
|
|
newBadgeImages.Add(strBadgeImage);
|
|
}
|
|
}
|
|
aItem.BadgeImages = newBadgeImages;
|
|
}
|
|
if (aItem.Option is List<M_ItemOptionGroup> && aItem.Option.Count > 0)
|
|
{
|
|
foreach (var aOptionGRP in aItem.Option)
|
|
{
|
|
if (aOptionGRP is M_ItemOptionGroup)
|
|
{
|
|
aOptionGRP.ImageFile = aOptionGRP.Index.Equals(0)
|
|
? "ic_option_takein.png"
|
|
: aOptionGRP.Index.Equals(1)
|
|
? "ic_option_shot.png"
|
|
: "ic_option_candle.png";
|
|
}
|
|
}
|
|
}
|
|
var itemImage = ResourceManager.GetItemImage(aItem.ImageFile, CommonValue.ItemDefaultImage);//파일 없을 경우 DefaultImage로
|
|
aItem.DataParameter = new M_AnimationButton
|
|
{
|
|
NormalBrush = itemImage,
|
|
DragCursorImage = itemImage,
|
|
DisableBrush = ResourceManager.GetNximagePathAdd("img_contents_soldout.png", CommonValue.PBdesignImagesPath),
|
|
Width = 100,
|
|
Height = 100,
|
|
Margin = new Thickness(80, 30, 80, 40),
|
|
BrushStretch = Stretch.Fill,
|
|
DragCursorHotSpot = HotSpotType.Center,
|
|
ClickAnimationType = ButtonAnimationType.SizeDown,
|
|
CircleBackBrush = "Transparent",
|
|
CircleTextBruch = "Transparent",
|
|
Enabled = !aItem.IsSoldOut,
|
|
CircleText = string.Empty,
|
|
};
|
|
aItem.BaseTextBlock = new M_TextBlock()
|
|
{
|
|
LanguageData = dataHelper.GetLaguageData("PROD", aItem.ItemCode),
|
|
TextSize = 24,
|
|
Width = 250,
|
|
Height = 82,
|
|
TextBrush = "Black",
|
|
TextFontFamily = "NanumSquare",
|
|
TextVerticalAlignment = VerticalAlignment.Center,
|
|
TextMargin = new Thickness(5, 0, 5, 0),
|
|
TextWeight = FontWeights.Bold,
|
|
TextWrapping = TextWrapping.Wrap
|
|
};
|
|
aItem.AdditionTextBlock = new M_TextBlock()
|
|
{
|
|
LanguageData = new List<M_Language>
|
|
{
|
|
new M_Language{ Type = SupportLanguageType.ko, LanguageData = string.Format("₩{0:#,##0}", aItem.Price)},
|
|
},
|
|
TextSize = 26,
|
|
Width = 250,
|
|
Height = 40,
|
|
TextBrush = "#1469cc",
|
|
TextFontFamily = "NanumSquare",
|
|
TextVerticalAlignment = VerticalAlignment.Top,
|
|
TextMargin = new Thickness(5, 0, 5, 0),
|
|
TextWeight = FontWeights.Bold,
|
|
};
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
|
|
#if TESTMODE
|
|
#region Test Item
|
|
AllItems = new List<M_ItemData>();
|
|
AllCategory = new List<M_CategoryItems>();
|
|
var itemFiles = ResourceManager.GetItemImages("*.png");
|
|
int index = 0;
|
|
foreach (var aItemFles in itemFiles)
|
|
{
|
|
var aFile = new FileInfo(aItemFles);
|
|
if (Regex.IsMatch(aFile.Name.Replace(aFile.Extension, ""), "^[0-9]") && !aFile.Name.Contains("_FULL"))
|
|
{
|
|
var category1Code = aFile.Name.Substring(0, 1);
|
|
var category2Code = aFile.Name.Substring(1, 2);
|
|
var testPrice = 2000d;
|
|
int intCategory1Code = int.Parse(category1Code);
|
|
if (intCategory1Code < 4)
|
|
{
|
|
//Add ItemData
|
|
AllItems.Add(new M_ItemData()
|
|
{
|
|
Index = index,
|
|
ItemCode = aFile.Name.Replace(aFile.Extension, ""),
|
|
Category1 = category1Code,
|
|
Category2 = category2Code,
|
|
Price = testPrice,
|
|
BadgeHeight = 30,
|
|
BadgeOrientation = Orientation.Horizontal,
|
|
BadgeImages = index.Equals(0)
|
|
? new List<string>
|
|
{
|
|
ResourceManager.GetNximagePathAdd("Img_best.png", CommonValue.PBdesignImagesPath),
|
|
ResourceManager.GetNximagePathAdd("Img_new.png", CommonValue.PBdesignImagesPath),
|
|
ResourceManager.GetNximagePathAdd("img_like.png", CommonValue.PBdesignImagesPath),
|
|
ResourceManager.GetNximagePathAdd("img_event.png", CommonValue.PBdesignImagesPath)
|
|
}
|
|
: index.Equals(1)
|
|
? new List<string>
|
|
{
|
|
ResourceManager.GetNximagePathAdd("Img_best.png", CommonValue.PBdesignImagesPath),
|
|
ResourceManager.GetNximagePathAdd("Img_new.png", CommonValue.PBdesignImagesPath),
|
|
}
|
|
: index.Equals(2)
|
|
? new List<string>
|
|
{
|
|
ResourceManager.GetNximagePathAdd("img_like.png", CommonValue.PBdesignImagesPath),
|
|
ResourceManager.GetNximagePathAdd("img_event.png", CommonValue.PBdesignImagesPath),
|
|
}
|
|
: index.Equals(3)
|
|
? new List<string>
|
|
{
|
|
ResourceManager.GetNximagePathAdd("Img_best.png", CommonValue.PBdesignImagesPath),
|
|
}
|
|
: null,
|
|
DataParameter = new M_AnimationButton
|
|
{
|
|
NormalBrush = aItemFles,
|
|
DragCursorImage = aItemFles,
|
|
DisableBrush = ResourceManager.GetNximagePathAdd("img_contents_soldout.png", CommonValue.PBdesignImagesPath),
|
|
Width = 100,
|
|
Height = 100,
|
|
Margin = new Thickness(80, 30, 80, 40),
|
|
BrushStretch = Stretch.Fill,
|
|
DragCursorHotSpot = HotSpotType.Center,
|
|
ClickAnimationType = ButtonAnimationType.SizeDown,
|
|
CircleBackBrush = "Transparent",
|
|
CircleTextBruch = "Transparent",
|
|
Enabled = !index.Equals(7),
|
|
CircleText = string.Empty,
|
|
},
|
|
BaseTextBlock = new M_TextBlock()
|
|
{
|
|
LanguageData = index.Equals(0)
|
|
? new List<M_Language>
|
|
{
|
|
new M_Language{ Type = SupportLanguageType.en, LanguageData = "en아메리카노"},
|
|
new M_Language{ Type = SupportLanguageType.ko, LanguageData = "아메리카노"}
|
|
}
|
|
: index.Equals(1)
|
|
? new List<M_Language>
|
|
{
|
|
new M_Language{ Type = SupportLanguageType.en, LanguageData = "3mm 황금비율로 바삭하고 en고소한 전병세트"},
|
|
new M_Language{ Type = SupportLanguageType.ko, LanguageData = "3mm 황금비율로 바삭하고 고소한 전병세트"}
|
|
}
|
|
: index.Equals(2)
|
|
? new List<M_Language>
|
|
{
|
|
new M_Language{ Type = SupportLanguageType.en, LanguageData = "en카푸치노"},
|
|
new M_Language{ Type = SupportLanguageType.ko, LanguageData = "카푸치노"}
|
|
}
|
|
: index.Equals(3)
|
|
? new List<M_Language>
|
|
{
|
|
new M_Language{ Type = SupportLanguageType.en, LanguageData = "en바닐라라떼"},
|
|
new M_Language{ Type = SupportLanguageType.ko, LanguageData = "바닐라라떼"}
|
|
}
|
|
: new List<M_Language>
|
|
{
|
|
new M_Language{ Type = SupportLanguageType.en, LanguageData = aFile.Name.Replace(aFile.Extension, "")},
|
|
new M_Language{ Type = SupportLanguageType.ko, LanguageData = aFile.Name.Replace(aFile.Extension, "")}
|
|
},
|
|
TextSize = 24,
|
|
Width = 250,
|
|
Height = 82,
|
|
TextBrush = "Black",
|
|
TextFontFamily = "NanumSquare",
|
|
TextVerticalAlignment = VerticalAlignment.Center,
|
|
TextMargin = new Thickness(5, 0, 5, 0),
|
|
TextWeight = FontWeights.Bold,
|
|
TextWrapping = TextWrapping.Wrap
|
|
},
|
|
AdditionTextBlock = new M_TextBlock()
|
|
{
|
|
LanguageData = new List<M_Language> {
|
|
new M_Language{ Type = SupportLanguageType.ko, LanguageData = string.Format("₩{0:#,##0}", testPrice)},
|
|
},
|
|
TextSize = 26,
|
|
Width = 250,
|
|
Height = 40,
|
|
TextBrush = "#1469cc",
|
|
TextFontFamily = "NanumSquare",
|
|
TextVerticalAlignment = VerticalAlignment.Top,
|
|
TextMargin = new Thickness(5, 0, 5, 0),
|
|
TextWeight = FontWeights.Bold,
|
|
},
|
|
|
|
});
|
|
//Add CategoryData
|
|
if (!CheckExistCategory1(category1Code))
|
|
{
|
|
var mItemData = new M_ItemData
|
|
{
|
|
Index = -1,
|
|
ItemCode = category1Code,
|
|
Category1 = category1Code,
|
|
DataParameter = new M_AnimationButton
|
|
{
|
|
NormalBrush = ResourceManager.GetNximagePathAdd("btn_main_menu_n.png", CommonValue.PBdesignImagesPath),
|
|
SwitchOnBrush = ResourceManager.GetNximagePathAdd("btn_main_menu_p.png", CommonValue.PBdesignImagesPath),
|
|
Width = 150,
|
|
Height = 160,
|
|
BrushStretch = Stretch.Fill,
|
|
ClickAnimationType = ButtonAnimationType.TextSizeDown,
|
|
CircleBackBrush = "Transparent",
|
|
CircleTextBruch = "Transparent",
|
|
CircleText = string.Empty,
|
|
TextVisible = Visibility.Visible,
|
|
TextFontSize = 27,
|
|
SwitchOnFontSize = 40,
|
|
TextForeground = "#adadad",
|
|
TextWrapping = TextWrapping.Wrap,
|
|
SwitchOnForeground = "White",
|
|
TextFontFamily = "NanumSquare",
|
|
TextFontWeight = FontWeights.Normal,
|
|
SwitchOnFontWeight = FontWeights.Bold,
|
|
TextAlignment = TextAlignment.Right,
|
|
TextHorizontalAlignment = HorizontalAlignment.Right,
|
|
TextVerticalAlignment = VerticalAlignment.Top,
|
|
TextMargin = new Thickness(10, 21, 27, 21),
|
|
LanguageText = new List<M_Language> {
|
|
new M_Language{ Type = SupportLanguageType.en, LanguageData = category1Code+"en" },
|
|
new M_Language{ Type = SupportLanguageType.ko, LanguageData = category1Code+"ko" }
|
|
},
|
|
}
|
|
};
|
|
switch (category1Code)
|
|
{
|
|
case "0":
|
|
mItemData.DataParameter.LanguageText = new List<M_Language> {
|
|
new M_Language{ Type = SupportLanguageType.en, LanguageData = "Coffee" },
|
|
new M_Language{ Type = SupportLanguageType.ko, LanguageData = "커피" }
|
|
};
|
|
break;
|
|
case "1":
|
|
mItemData.DataParameter.LanguageText = new List<M_Language> {
|
|
new M_Language{ Type = SupportLanguageType.en, LanguageData = "Beverage" },
|
|
new M_Language{ Type = SupportLanguageType.ko, LanguageData = "음료" }
|
|
};
|
|
break;
|
|
case "2":
|
|
mItemData.DataParameter.LanguageText = new List<M_Language> {
|
|
new M_Language{ Type = SupportLanguageType.en, LanguageData = "Sherbet" },
|
|
new M_Language{ Type = SupportLanguageType.ko, LanguageData = "빙수" }
|
|
};
|
|
break;
|
|
case "3":
|
|
mItemData.DataParameter.LanguageText = new List<M_Language> {
|
|
new M_Language{ Type = SupportLanguageType.en, LanguageData = "Cake" },
|
|
new M_Language{ Type = SupportLanguageType.ko, LanguageData = "케이크" }
|
|
};
|
|
break;
|
|
}
|
|
AddCategory1(category1Code, mItemData);
|
|
}
|
|
if (!CheckExistCategory2(category1Code, category2Code))
|
|
{
|
|
var mItemData = new M_ItemData
|
|
{
|
|
Index = -1,
|
|
ItemCode = category2Code,
|
|
Category1 = category1Code,
|
|
Category2 = category2Code,
|
|
DataParameter = new M_AnimationButton
|
|
{
|
|
NormalBrush = "Transparent",
|
|
SwitchOnBrush = "Transparent",
|
|
//SwitchOnBrush = ResourceManager.GetNximagePathAdd("line_main_tab.png", CommonValue.PBdesignImagesPath),
|
|
Width = 194,
|
|
Height = 86,
|
|
BrushStretch = Stretch.Fill,
|
|
ClickAnimationType = ButtonAnimationType.TextBounceDown,
|
|
CircleBackBrush = "Transparent",
|
|
CircleTextBruch = "Transparent",
|
|
CircleText = string.Empty,
|
|
TextVisible = Visibility.Visible,
|
|
TextFontSize = 24,
|
|
SwitchOnFontSize = 28,
|
|
TextForeground = "Black",
|
|
SwitchOnForeground = "#1469cc",
|
|
TextFontFamily = "NanumSquare",
|
|
TextFontWeight = FontWeights.Normal,
|
|
SwitchOnFontWeight = FontWeights.Bold,
|
|
TextAlignment = TextAlignment.Center,
|
|
TextMargin = new Thickness(0, 0, 18, 0),
|
|
TextWrapping = TextWrapping.Wrap,
|
|
TextHorizontalAlignment = HorizontalAlignment.Center,
|
|
TextVerticalAlignment = VerticalAlignment.Center,
|
|
LanguageText = new List<M_Language> {
|
|
new M_Language{ Type = SupportLanguageType.en, LanguageData = category2Code+"en" },
|
|
new M_Language{ Type = SupportLanguageType.ko, LanguageData = category2Code+"ko" }
|
|
},
|
|
}
|
|
};
|
|
if (category1Code.Equals("0"))
|
|
{
|
|
switch (category2Code)
|
|
{
|
|
case "01":
|
|
mItemData.DataParameter.LanguageText = new List<M_Language> {
|
|
new M_Language{ Type = SupportLanguageType.en, LanguageData = "Cafe Adagio" },
|
|
new M_Language{ Type = SupportLanguageType.ko, LanguageData = "카페 아다지오" }
|
|
};
|
|
break;
|
|
case "10":
|
|
mItemData.DataParameter.LanguageText = new List<M_Language> {
|
|
new M_Language{ Type = SupportLanguageType.en, LanguageData = "Latte&Tea" },
|
|
new M_Language{ Type = SupportLanguageType.ko, LanguageData = "라떼&티" }
|
|
};
|
|
break;
|
|
case "50":
|
|
mItemData.DataParameter.LanguageText = new List<M_Language> {
|
|
new M_Language{ Type = SupportLanguageType.en, LanguageData = "Juice&Ade" },
|
|
new M_Language{ Type = SupportLanguageType.ko, LanguageData = "주스&에이드" }
|
|
};
|
|
break;
|
|
case "51":
|
|
mItemData.DataParameter.LanguageText = new List<M_Language> {
|
|
new M_Language{ Type = SupportLanguageType.en, LanguageData = "Smoothies" },
|
|
new M_Language{ Type = SupportLanguageType.ko, LanguageData = "스무디" }
|
|
};
|
|
break;
|
|
case "52":
|
|
mItemData.DataParameter.LanguageText = new List<M_Language> {
|
|
new M_Language{ Type = SupportLanguageType.en, LanguageData = "Sherbet" },
|
|
new M_Language{ Type = SupportLanguageType.ko, LanguageData = "빙수" }
|
|
};
|
|
break;
|
|
case "71":
|
|
mItemData.DataParameter.LanguageText = new List<M_Language> {
|
|
new M_Language{ Type = SupportLanguageType.en, LanguageData = "Product Beverage" },
|
|
new M_Language{ Type = SupportLanguageType.ko, LanguageData = "완제음료" }
|
|
};
|
|
break;
|
|
|
|
}
|
|
}
|
|
AddCategory2(category1Code, category2Code, mItemData);
|
|
}
|
|
index++;
|
|
}
|
|
|
|
}
|
|
}
|
|
#endregion
|
|
#endif
|
|
}
|
|
}
|
|
#endregion
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
CommonLog.ErrorLogWrite(this, "SetOrderHistoryItems()", "Fail", string.Format("{0}\n{1}", ex.Message, ex.StackTrace));
|
|
}
|
|
}
|
|
private void SetOrderHistoryItems()
|
|
{
|
|
try
|
|
{
|
|
if (FindOrderHistoryItems is List<string>
|
|
&& FindOrderHistoryItems.Count > 0
|
|
&& AllItems is List<M_ItemData>
|
|
&& AllItems.Count > 0)
|
|
{
|
|
var newOrderHistoryItems = new List<M_ItemData>();
|
|
foreach (var aHistoryItem in FindOrderHistoryItems)
|
|
{
|
|
var findItem = AllItems.Find(r => r.ItemCode.Equals(aHistoryItem));
|
|
if (findItem is M_ItemData) newOrderHistoryItems.Add(findItem);
|
|
}
|
|
if (newOrderHistoryItems.Count > 0)
|
|
{
|
|
OrderHistoryItems = new ObservableCollection<M_ItemData>(newOrderHistoryItems);
|
|
}
|
|
else
|
|
{
|
|
OrderHistoryItems = null;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
OrderHistoryItems = null;
|
|
}
|
|
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
CommonLog.ErrorLogWrite(this, "SetOrderHistoryItems()", "Fail", string.Format("{0}\n{1}", ex.Message, ex.StackTrace));
|
|
}
|
|
}
|
|
private void SetCategory1(int _index = 0)
|
|
{
|
|
if (AllCategory != null)
|
|
{
|
|
if (NeedIntailizeItems) Category1Data = new ObservableCollection<M_ItemData>((from aRow in AllCategory
|
|
select aRow.Catalog1Item).ToList());
|
|
DefaultCategory1Item = _index < 0 ? 0 : _index;
|
|
}
|
|
}
|
|
private void SetCategory2(int _index = 0)
|
|
{
|
|
if (Category1Data != null)
|
|
{
|
|
var catalog2Items = AllCategory[DefaultCategory1Item].Catalog2Items;
|
|
Category2Data = new ObservableCollection<M_ItemData>(catalog2Items);
|
|
DefaultCategory2Item = _index < 0 ? 0 : _index;
|
|
}
|
|
}
|
|
private void SetItemList(int _index = 0)
|
|
{
|
|
if (AllItems != null)
|
|
{
|
|
var category1Code = Category1Data[DefaultCategory1Item < 0 ? 0 : DefaultCategory1Item].Category1;
|
|
var category2Code = Category2Data[DefaultCategory2Item < 0 ? 0 : DefaultCategory2Item].Category2;
|
|
if (OrderItems != null) OrderItemPageNo = 0;
|
|
OrderItems = new ObservableCollection<M_ItemData>
|
|
(
|
|
from aRow in AllItems
|
|
where aRow.Category1.Equals(category1Code)
|
|
&& aRow.Category2.Equals(category2Code)
|
|
select aRow
|
|
);
|
|
DefaultOrderItem = _index < 0 ? 0 : _index;
|
|
}
|
|
}
|
|
private bool CheckExistCategory1(string _categoryCode)
|
|
{
|
|
bool result = false;
|
|
try
|
|
{
|
|
if (AllCategory != null)
|
|
{
|
|
result = !AllCategory.Where(r => r.Catalog1Item.Category1.Equals(_categoryCode)).Count().Equals(0);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
CommonLog.ErrorLogWrite(this, "CheckExistCategory1()", "Fail", string.Format("{0}\n{1}", ex.Message, ex.StackTrace));
|
|
result = false;
|
|
}
|
|
return result;
|
|
}
|
|
private bool CheckExistCategory2(string _category1Code, string _category2Code)
|
|
{
|
|
bool result = false;
|
|
try
|
|
{
|
|
if (AllCategory != null)
|
|
{
|
|
var category1Items = AllCategory.Where(r => r.Catalog1Item.Category1.Equals(_category1Code)).FirstOrDefault();
|
|
if (category1Items != null && category1Items.Catalog2Items != null)
|
|
{
|
|
result = !category1Items.Catalog2Items.Where(r => r.Category2.Equals(_category2Code)).Count().Equals(0);
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
CommonLog.ErrorLogWrite(this, "CheckExistCategory2()", "Fail", string.Format("{0}\n{1}", ex.Message, ex.StackTrace));
|
|
result = false;
|
|
}
|
|
return result;
|
|
|
|
}
|
|
private void AddCategory1(string _categoryCode, M_ItemData _categoryItem)
|
|
{
|
|
if (AllCategory != null)
|
|
{
|
|
if (AllCategory.Where(r => r.Catalog1Item.Category1.Equals(_categoryCode)).Count().Equals(0))
|
|
{
|
|
_categoryItem.Index = AllCategory.Count;
|
|
AllCategory.Add(
|
|
new M_CategoryItems
|
|
{
|
|
Catalog1Item = _categoryItem,
|
|
Catalog2Items = new List<M_ItemData>()
|
|
}
|
|
);
|
|
}
|
|
}
|
|
}
|
|
private void AddCategory2(string _category1Code, string _category2Code, M_ItemData _categoryItem)
|
|
{
|
|
if (AllCategory != null)
|
|
{
|
|
var category1Items = AllCategory.Where(r => r.Catalog1Item.Category1.Equals(_category1Code)).FirstOrDefault();
|
|
if (category1Items != null && category1Items.Catalog2Items != null)
|
|
{
|
|
if (category1Items.Catalog2Items.Where(r => r.Category2.Equals(_category2Code)).Count().Equals(0))
|
|
{
|
|
_categoryItem.Index = category1Items.Catalog2Items.Count;
|
|
category1Items.Catalog2Items.Add(_categoryItem);
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
private void SetPageNumber()
|
|
{
|
|
var pageCount = GetItemPageCount();
|
|
var pageNumbers = new ObservableCollection<M_ItemData>();
|
|
for (int index = 0; index < pageCount; index++)
|
|
{
|
|
pageNumbers.Add(new M_ItemData
|
|
{
|
|
Index = index,
|
|
DataParameter = new M_AnimationButton
|
|
{
|
|
NormalBrush = ResourceManager.GetNximagePathAdd("Img_page_dot_off.png", CommonValue.PBdesignImagesPath),
|
|
SwitchOnBrush = ResourceManager.GetNximagePathAdd("Img_page_dot_on.png", CommonValue.PBdesignImagesPath),
|
|
Width = 20,
|
|
Height = 20,
|
|
BrushStretch = Stretch.Fill,
|
|
ClickAnimationType = ButtonAnimationType.SizeDown,
|
|
CircleBackBrush = "Transparent",
|
|
CircleTextBruch = "Transparent",
|
|
CircleText = string.Empty,
|
|
TextVisible = Visibility.Collapsed,
|
|
}
|
|
});
|
|
|
|
}
|
|
ItemPageStatus = pageNumbers;
|
|
}
|
|
#endregion
|
|
|
|
#region Senssing
|
|
private M_ItemData SetItemDesignData(CommonDataHelper dataHelper, M_ItemData aItem)
|
|
{
|
|
var result = aItem;
|
|
try
|
|
{
|
|
aItem.BadgeHeight = 30;
|
|
aItem.BadgeOrientation = Orientation.Horizontal;
|
|
if (aItem.BadgeImages is List<string> && aItem.BadgeImages.Count > 0)
|
|
{
|
|
var newBadgeImages = new List<string>();
|
|
foreach (var aBadgeImage in aItem.BadgeImages)
|
|
{
|
|
var strBadgeImage = ResourceManager.GetNximagePathAdd(aBadgeImage, CommonValue.PBdesignImagesPath);
|
|
if (!string.IsNullOrEmpty(strBadgeImage))
|
|
{
|
|
newBadgeImages.Add(strBadgeImage);
|
|
}
|
|
}
|
|
aItem.BadgeImages = newBadgeImages;
|
|
}
|
|
//if (aItem.Option is List<M_ItemOptionGroup> && aItem.Option.Count > 0)
|
|
//{
|
|
// foreach (var aOptionGRP in aItem.Option)
|
|
// {
|
|
// if (aOptionGRP is M_ItemOptionGroup)
|
|
// {
|
|
// aOptionGRP.ImageFile = aOptionGRP.Index.Equals(0)
|
|
// ? "ic_option_takein.png"
|
|
// : aOptionGRP.Index.Equals(1)
|
|
// ? "ic_option_shot.png"
|
|
// : "ic_option_candle.png";
|
|
// }
|
|
// }
|
|
//}
|
|
var itemImage = ResourceManager.GetItemImage(aItem.ImageFile, CommonValue.ItemDefaultImage);
|
|
aItem.DataParameter = new M_AnimationButton
|
|
{
|
|
NormalBrush = itemImage,
|
|
DragCursorImage = itemImage,
|
|
DisableBrush = ResourceManager.GetNximagePathAdd("img_contents_soldout.png", CommonValue.PBdesignImagesPath),
|
|
Width = 100,
|
|
Height = 100,
|
|
Margin = new Thickness(80, 30, 80, 40),
|
|
BrushStretch = Stretch.Fill,
|
|
DragCursorHotSpot = HotSpotType.Center,
|
|
ClickAnimationType = ButtonAnimationType.SizeDown,
|
|
CircleBackBrush = "Transparent",
|
|
CircleTextBruch = "Transparent",
|
|
Enabled = !aItem.IsSoldOut,
|
|
CircleText = string.Empty,
|
|
};
|
|
aItem.BaseTextBlock = new M_TextBlock()
|
|
{
|
|
LanguageData = dataHelper.GetLaguageData("PROD", aItem.ItemCode),
|
|
TextSize = 24,
|
|
Width = 250,
|
|
Height = 82,
|
|
TextBrush = "Black",
|
|
TextFontFamily = "NanumSquare",
|
|
TextVerticalAlignment = VerticalAlignment.Center,
|
|
TextMargin = new Thickness(5, 0, 5, 0),
|
|
TextWeight = FontWeights.Bold,
|
|
TextWrapping = TextWrapping.Wrap
|
|
};
|
|
aItem.AdditionTextBlock = new M_TextBlock()
|
|
{
|
|
LanguageData = new List<M_Language>
|
|
{
|
|
new M_Language{ Type = SupportLanguageType.ko, LanguageData = string.Format("₩{0:#,##0}", aItem.Price)},
|
|
},
|
|
TextSize = 26,
|
|
Width = 250,
|
|
Height = 40,
|
|
TextBrush = "#1469cc",
|
|
TextFontFamily = "NanumSquare",
|
|
TextVerticalAlignment = VerticalAlignment.Top,
|
|
TextMargin = new Thickness(5, 0, 5, 0),
|
|
TextWeight = FontWeights.Bold,
|
|
};
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
CommonLog.ErrorLogWrite(this, "SetItemDesignData()", "Fail", string.Format("{0}\n{1}", ex.Message, ex.StackTrace));
|
|
result = aItem;
|
|
}
|
|
return result;
|
|
}
|
|
private void ProcessBardcord()
|
|
{
|
|
Console.WriteLine("Paag={0},SubPage={1},Barcord={2}", DefaultPage, SensingSubPage, ReadBarCode);
|
|
if (string.IsNullOrEmpty(ReadBarCode) || !DefaultPage.Equals(PBPageType.Sensing)) return;
|
|
var barcordData = ReadBarCode.Trim().ToUpper();
|
|
if (barcordData.rIsBigAlpa() && barcordData.Contains("SCANSTART"))
|
|
{
|
|
AIScanCount = 0;
|
|
}
|
|
else
|
|
{
|
|
var isNumeric = barcordData.rIsNum();
|
|
var isAlpaNumaric = barcordData.rIsAlpaNum();
|
|
var barcord = isNumeric && isAlpaNumaric ? barcordData : null;
|
|
var itemcode = !isNumeric && isAlpaNumaric ? barcordData.rGetOnlyNum() : null;
|
|
var itemType = string.IsNullOrEmpty(itemcode) && !string.IsNullOrEmpty(barcord) && SensingSubPage.Equals(PBSensingSubPageType.BarcordPage)
|
|
? BasketItemType.Barcode
|
|
: !string.IsNullOrEmpty(itemcode) && string.IsNullOrEmpty(barcord) && SensingSubPage.Equals(PBSensingSubPageType.SensingPage)
|
|
? BasketItemType.Scan
|
|
: BasketItemType.None;
|
|
if (!itemType.Equals(BasketItemType.None))
|
|
{
|
|
var newScanData = new M_ScanData
|
|
{
|
|
ItemCode = itemcode,
|
|
Barcord = barcord,
|
|
ItemType = itemType,
|
|
};
|
|
scanQueue.Enqueue(newScanData);
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
private void ProcessBarcode(string msg)
|
|
{
|
|
try
|
|
{
|
|
|
|
CommonLog.InfoLogWrite(msg, "aiSocketSuccess");
|
|
if (msg.Replace("\0", "").Length == 0) return;
|
|
JObject json = JObject.Parse(msg.Replace("\0", ""));
|
|
//{"COUNT":1,"DATA":[{"ITEM_CDOE":"310105","ITEM_NAME":"베르깽)과일맛소프트캔디","ITEM_QTY":1,"ITEM_BARCODE":"00310105"}]}
|
|
foreach (var root in json["DATA"])
|
|
{
|
|
var itemCode = root["ITEM_CDOE"].ToString();
|
|
var barcord = root["ITEM_BARCODE"].ToString();
|
|
var newScanData = new M_ScanData
|
|
{
|
|
ItemCode = itemCode,
|
|
Barcord = barcord,
|
|
ItemType = BasketItemType.Scan
|
|
};
|
|
scanQueue.Enqueue(newScanData);
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
//EndListening();
|
|
}
|
|
}
|
|
|
|
private void ScanDataProcessor()
|
|
{
|
|
while (IsScanProcess)
|
|
{
|
|
try
|
|
{
|
|
var scanData = scanQueue.Count > 0 ? scanQueue.Dequeue() : null;
|
|
if (scanData is M_ScanData)
|
|
{
|
|
using (var dataHelper = new CommonDataHelper())
|
|
{
|
|
var getItemData = dataHelper.GetBarcordItemsData(scanData.ItemCode, scanData.Barcord);
|
|
if (getItemData is M_ItemData)
|
|
{
|
|
var designItem = SetItemDesignData(dataHelper, getItemData);
|
|
AddItem2Basket(designItem, scanData.ItemType);
|
|
if (scanData.ItemType.Equals(BasketItemType.Scan)) AIScanCount += 1;
|
|
}
|
|
else
|
|
{
|
|
CommonLog.ErrorLogWrite(this, "ScanDataProcessor()", "Not Found Item Error !!", string.Format("\nItem={0},Barcord={1}", scanData.ItemCode, scanData.Barcord));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
CommonLog.ErrorLogWrite(this, "Dispose", "Fail", string.Format("{0}\n{1}", ex.Message, ex.StackTrace));
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region Basket
|
|
private void AddItem2Basket(M_ItemData _itemData, BasketItemType _itemType = BasketItemType.Order)
|
|
{
|
|
var option = new List<M_ItemOptionGroup>();
|
|
var itemCount = 1;
|
|
var unitPrice = _itemData.Price;
|
|
if (_itemType.Equals(BasketItemType.Order))
|
|
{
|
|
if (_itemData.IsOption)
|
|
{
|
|
ToIntorTimerStop();
|
|
try
|
|
{
|
|
var newOptions = new List<M_ItemOptionGroup>();
|
|
foreach (var aOptionGroup in _itemData.Option)
|
|
{
|
|
newOptions.Add(aOptionGroup.Clone());
|
|
}
|
|
var popupReturn = popupManager.OpenOptionSelect(_itemData.BaseTextBlock.LanguageData
|
|
, newOptions
|
|
, _itemData.DataParameter.NormalBrush
|
|
, itemCount
|
|
, _itemData.Price);
|
|
if (popupReturn is M_PopupReturn)
|
|
{
|
|
if (popupReturn.TimeOut)
|
|
{
|
|
DefaultPage = PBPageType.Intro;
|
|
option = null;
|
|
}
|
|
else
|
|
{
|
|
if (popupReturn.PopupArgs is M_OptionReturn getOption)
|
|
{
|
|
option = getOption.Options;
|
|
itemCount = getOption.ItemCount;
|
|
unitPrice = getOption.PriceWithOption;
|
|
}
|
|
else
|
|
{
|
|
option = null;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
option = null;
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
option = null;
|
|
}
|
|
finally
|
|
{
|
|
ToIntorTimerStart();
|
|
}
|
|
if (option == null) return;
|
|
}
|
|
else
|
|
{
|
|
option = null;
|
|
itemCount = 1;
|
|
unitPrice = _itemData.Price;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
option = null;
|
|
}
|
|
using (var posDataService = new PosDataService())
|
|
{
|
|
var getNewBasketData = posDataService.AddItemToBasket(MiniBasketData
|
|
, itemCount
|
|
, unitPrice
|
|
, CommonValue.PBdesignImagesPath
|
|
, _itemData
|
|
, option
|
|
, _itemType);
|
|
if (getNewBasketData is ObservableCollection<M_BasketItem>) MiniBasketData = getNewBasketData;
|
|
}
|
|
}
|
|
private double GetItemPrice(M_ItemData _itemData, List<M_ItemOptionGroup> _option)
|
|
{
|
|
double result = _itemData.Price;
|
|
try
|
|
{
|
|
foreach (var aOptionGroup in _option)
|
|
{
|
|
foreach (var aOption in aOptionGroup.Options)
|
|
{
|
|
if (aOption.IsSelected)
|
|
{
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
|
|
result = _itemData.Price;
|
|
}
|
|
return result;
|
|
}
|
|
private void SetBasketSum()
|
|
{
|
|
if (MiniBasketData is ObservableCollection<M_BasketItem>)
|
|
{
|
|
OrderTotalCount = MiniBasketData.Sum(r => r.Count);
|
|
OrderTotalPayment = MiniBasketData.Sum(r => r.Count * r.Price);
|
|
}
|
|
else
|
|
{
|
|
OrderTotalCount = 0;
|
|
OrderTotalPayment = 0;
|
|
}
|
|
}
|
|
private void DeleteBasketItem(M_BasketItem _deleteItem)
|
|
{
|
|
if (MiniBasketData is ObservableCollection<M_BasketItem>)
|
|
{
|
|
var newBasketData = MiniBasketData.ToList();
|
|
using (var posDataService = new PosDataService())
|
|
{
|
|
if (posDataService.DelItem(_deleteItem))
|
|
{
|
|
newBasketData.Remove(_deleteItem);
|
|
}
|
|
}
|
|
MiniBasketData = new ObservableCollection<M_BasketItem>(newBasketData);
|
|
|
|
}
|
|
}
|
|
private void DeleteScanItem()
|
|
{
|
|
if (MiniBasketData is ObservableCollection<M_BasketItem>)
|
|
{
|
|
var newBasketData = MiniBasketData.ToList();
|
|
using (var posDataService = new PosDataService())
|
|
{
|
|
foreach (var aitem in newBasketData.Where(r => r.ItemType.Equals(BasketItemType.Scan)).ToList())
|
|
{
|
|
if (posDataService.DelItem(aitem))
|
|
{
|
|
newBasketData.Remove(aitem);
|
|
}
|
|
}
|
|
}
|
|
newBasketData.RemoveAll(r => r.ItemType.Equals(BasketItemType.Scan));
|
|
MiniBasketData = new ObservableCollection<M_BasketItem>(newBasketData);
|
|
}
|
|
}
|
|
public void DeledteAllBasket()
|
|
{
|
|
|
|
if (MiniBasketData is ObservableCollection<M_BasketItem>)
|
|
{
|
|
using (var posDataService = new PosDataService())
|
|
{
|
|
foreach (var aitem in MiniBasketData)
|
|
{
|
|
posDataService.DelItem(aitem);
|
|
}
|
|
}
|
|
MiniBasketData = null;
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#endregion Contents
|
|
|
|
#region Etc
|
|
/// <summary>
|
|
/// 타이머 스톱
|
|
/// </summary>
|
|
public void ToIntorTimerStart()
|
|
{
|
|
|
|
LastAccessTime = DateTime.Now;
|
|
ToIntoroTimer.Start();
|
|
|
|
}
|
|
/// <summary>
|
|
/// 타이머 재시작
|
|
/// </summary>
|
|
public void ToIntorTimerStop()
|
|
{
|
|
LastAccessTime = DateTime.Now;
|
|
ToIntoroTimer.Stop();
|
|
}
|
|
private int GetMaxItemPageNo()
|
|
{
|
|
int result = 0;
|
|
try
|
|
{
|
|
result = OrderItems.Count / (OrderColumnCount * OrderRowCount);
|
|
if ((OrderItems.Count % (OrderColumnCount * OrderRowCount)).Equals(0)) result -= 1;
|
|
|
|
}
|
|
catch
|
|
{
|
|
result = 0;
|
|
}
|
|
return result;
|
|
}
|
|
private int GetItemPageCount()
|
|
{
|
|
int result = 0;
|
|
try
|
|
{
|
|
result = OrderItems.Count / (OrderColumnCount * OrderRowCount);
|
|
if (!(OrderItems.Count % (OrderColumnCount * OrderRowCount)).Equals(0)) result += 1;
|
|
|
|
}
|
|
catch
|
|
{
|
|
result = 0;
|
|
}
|
|
return result;
|
|
}
|
|
#endregion Etc
|
|
|
|
#endregion Methods
|
|
|
|
#region [ Event Handlers ]
|
|
private void ToExecuteNothingHandler(object obj)
|
|
{
|
|
|
|
}
|
|
private void VmPBViewModel_PropertyChanged(object sender, PropertyChangedEventArgs e)
|
|
{
|
|
LastAccessTime = DateTime.Now;
|
|
try
|
|
{
|
|
switch (e.PropertyName)
|
|
{
|
|
case "DefaultPage":
|
|
if (DefaultPage.Equals(PBPageType.FirstSelect)
|
|
|| DefaultPage.Equals(PBPageType.Items))
|
|
{
|
|
GmbHappyInfoEnable = !MemberLoginOK;
|
|
}
|
|
else
|
|
{
|
|
GmbHappyInfoEnable = false;
|
|
}
|
|
switch (DefaultPage)
|
|
{
|
|
case PBPageType.Intro:
|
|
ToIntorTimerStop();
|
|
OrderHistoryView = false;
|
|
MemberLoginOK = false;
|
|
HappyPointReturn = null;
|
|
FindOrderHistoryItems = null;
|
|
SetIntro();
|
|
DeledteAllBasket();
|
|
//EndListening();
|
|
break;
|
|
case PBPageType.FirstSelect:
|
|
ToIntorTimerStart();
|
|
//EndListening();
|
|
break;
|
|
case PBPageType.Items:
|
|
GmbOrderEnable = false;
|
|
SetContents();
|
|
SetOrderHistoryItems();
|
|
ToIntorTimerStart();
|
|
//EndListening();
|
|
break;
|
|
case PBPageType.Sensing:
|
|
StartListening();
|
|
GmbAIscannerEnable = false;
|
|
AIScanCount = 0;
|
|
ToIntorTimerStart();
|
|
break;
|
|
}
|
|
break;
|
|
case "MemberLoginOK":
|
|
GmbHappyPointEnable = !MemberLoginOK;
|
|
GmbHappyInfoEnable = !MemberLoginOK;
|
|
break;
|
|
case "GmbHappyInfoEnable":
|
|
if (GmbHappyInfoEnable)
|
|
{
|
|
GmbHappyInfoEnableTime = DateTime.Now;
|
|
}
|
|
break;
|
|
case "DefaultCategory1Item":
|
|
if (DefaultCategory1Item > -1)
|
|
{
|
|
if (Category2Data == null)
|
|
{
|
|
SetCategory2();
|
|
}
|
|
else
|
|
{
|
|
if (!Category1Data[DefaultCategory1Item].Category1.Equals(Category2Data.FirstOrDefault().Category1))
|
|
{
|
|
SetCategory2();
|
|
}
|
|
}
|
|
}
|
|
OrderItemPageNo = 0;
|
|
break;
|
|
case "DefaultCategory2Item":
|
|
if (DefaultCategory1Item > -1)
|
|
{
|
|
SetItemList();
|
|
}
|
|
OrderItemPageNo = 0;
|
|
ToIntorTimerStart();
|
|
break;
|
|
case "DefaultCategory1PageNo":
|
|
case "DefaultCategory2PageNo":
|
|
break;
|
|
case "ShowLanguageType":
|
|
CommonValue.CommonLanguageType = ShowLanguageType;
|
|
switch (ShowLanguageType)
|
|
{
|
|
case SupportLanguageType.ko:
|
|
GmbLanguageimage=ResourceManager.GetNximagePathAdd("btn_language_kor.png", CommonValue.PBdesignImagesPath);
|
|
break;
|
|
case SupportLanguageType.en:
|
|
GmbLanguageimage = ResourceManager.GetNximagePathAdd("btn_language_eng.png", CommonValue.PBdesignImagesPath);
|
|
break;
|
|
case SupportLanguageType.ja:
|
|
GmbLanguageimage = ResourceManager.GetNximagePathAdd("btn_language_jap.png", CommonValue.PBdesignImagesPath);
|
|
break;
|
|
case SupportLanguageType.zh:
|
|
GmbLanguageimage = ResourceManager.GetNximagePathAdd("btn_language_chi.png", CommonValue.PBdesignImagesPath);
|
|
break;
|
|
}
|
|
break;
|
|
case "OrderItems":
|
|
PageStatusColumnCount = GetItemPageCount();
|
|
SetPageNumber();
|
|
break;
|
|
case "OrderItemPageNo":
|
|
Page2LeftEnable = !OrderItemPageNo.Equals(0);
|
|
Page2RightEnable = !OrderItemPageNo.Equals(GetMaxItemPageNo());
|
|
break;
|
|
case "MiniBasketData":
|
|
SetBasketSum();
|
|
if (MiniBasketData is ObservableCollection<M_BasketItem> miniBasketItems
|
|
&& miniBasketItems.Count > 0)
|
|
{
|
|
OrderDetailEnable = true;
|
|
GotoPaymentEnable = true;
|
|
MiniBasketDeleteAllEnable = true;
|
|
OrderNoneDataGridVisibility = Visibility.Hidden;
|
|
OrderExistDataGridVisibility = Visibility.Visible;
|
|
foreach (var aBasketItem in miniBasketItems )
|
|
{
|
|
aBasketItem.PropertyChanged += ABasketItem_PropertyChanged;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
OrderDetailEnable = false;
|
|
GotoPaymentEnable = false;
|
|
MiniBasketDeleteAllEnable = false;
|
|
OrderNoneDataGridVisibility = Visibility.Visible;
|
|
OrderExistDataGridVisibility = Visibility.Hidden;
|
|
}
|
|
break;
|
|
case "FindOrderHistoryItems":
|
|
SetOrderHistoryItems();
|
|
break;
|
|
case "OrderHistoryItems":
|
|
//OrderHistoryItemsEnable = OrderHistoryItems != null && OrderHistoryItems.Count > 0;
|
|
OrderHistoryItemsEnable = MemberLoginOK;
|
|
GmbHappyPointEnable = !MemberLoginOK;
|
|
GmbHappyInfoEnable = !MemberLoginOK;
|
|
break;
|
|
case "ReadBarCode":
|
|
ProcessBardcord();
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
CommonLog.ErrorLogWrite(this, "VmPBViewModel_PropertyChanged()", "Fail", string.Format("{0}\n{1}", ex.Message, ex.StackTrace));
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#region Intro Click
|
|
private void RollMediaCommandHandler(object _param)
|
|
{
|
|
try
|
|
{
|
|
if (_param is M_MediaRollItem selectItem)
|
|
{
|
|
NeedIntailizeItems = true;
|
|
PBPageType targetPage = PBPageType.Intro;
|
|
switch (selectItem.LinkType)
|
|
{
|
|
case IntroLinkType.Page:
|
|
DefaultLinkValue = string.Empty;
|
|
switch (selectItem.LinkParameter)
|
|
{
|
|
case "IntroPage":
|
|
targetPage = PBPageType.Intro;
|
|
break;
|
|
case "ItemPage":
|
|
targetPage = PBPageType.Items;
|
|
break;
|
|
case "SensingPage":
|
|
targetPage = PBPageType.Sensing;
|
|
break;
|
|
case "FirstSelect":
|
|
targetPage = PBPageType.FirstSelect;
|
|
break;
|
|
}
|
|
break;
|
|
case IntroLinkType.Category:
|
|
DefaultLinkValue = selectItem.LinkParameter;
|
|
targetPage = PBPageType.Items;
|
|
break;
|
|
case IntroLinkType.ItemCode:
|
|
DefaultLinkValue = selectItem.LinkParameter;
|
|
targetPage = PBPageType.Items;
|
|
break;
|
|
default:
|
|
targetPage = PBPageType.FirstSelect;
|
|
break;
|
|
}
|
|
ShowLanguageType = SupportLanguageType.ko;
|
|
#region 인트로에서 벗어 날때 해피포인트 맴버 인증 (사용 않음)
|
|
//if (!targetPage.Equals(PBPageType.Intro))
|
|
//{
|
|
// var popupReturn = popupManager.OpenHappyPointCertify();
|
|
// if (popupReturn is M_PopupReturn)
|
|
// {
|
|
// MemberLoginOK = popupReturn.OKAnswer;
|
|
// if (popupReturn.PopupArgs is M_HappyPointReturn _HappyPointReturn)
|
|
// {
|
|
// HappyPointReturn = _HappyPointReturn;
|
|
// GmbMemberName = HappyPointReturn.MemberName;
|
|
// }
|
|
// if (!popupReturn.ReturnLanguage.Equals(ShowLanguageType))
|
|
// {
|
|
// ShowLanguageType = popupReturn.ReturnLanguage;
|
|
// }
|
|
// if (popupReturn.TimeOut) targetPage = PBPageType.Intro;
|
|
// }
|
|
//}
|
|
#endregion
|
|
WaitWindowFrom.ShowWaitWindow();
|
|
DefaultPage = targetPage;
|
|
if (!targetPage.Equals(PBPageType.Intro)) IntroItems = null;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
CommonLog.ErrorLogWrite(this, "RollMediaCommandHandler()", "Fail", string.Format("{0}\n{1}", ex.Message, ex.StackTrace));
|
|
}
|
|
finally
|
|
{
|
|
WaitWindowFrom.CloseWaitWindow();
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region GMB Left Click
|
|
private void GotoFirstCommandHandler(object obj)
|
|
{
|
|
DefaultPage = PBPageType.FirstSelect;
|
|
}
|
|
|
|
private void ReaderCheckCommandHandler(object obj)
|
|
{
|
|
try
|
|
{
|
|
ReaderCheckClickCount += 1;
|
|
if (ReaderCheckClickCount.Equals(10))
|
|
{
|
|
ToIntorTimerStop();
|
|
try
|
|
{
|
|
var popupReturn = popupManager.OpenNumPadPopup(ShowLanguageType
|
|
, Languages.GetMessages("InputPassword")
|
|
, false,true,5,5);
|
|
if (popupReturn is M_PopupReturn)
|
|
{
|
|
if (popupReturn.TimeOut)
|
|
{
|
|
DefaultPage = PBPageType.Intro;
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
if (popupReturn.OKAnswer)
|
|
{
|
|
if (popupReturn.PopupArgs is string getPassword
|
|
&& getPassword.Equals(DateTime.Now.ToString("ddMM")
|
|
+ ((int.Parse(DateTime.Now.ToString("dd"))
|
|
* int.Parse(DateTime.Now.ToString("MM"))) % 10).ToString()))
|
|
{
|
|
GmbReaderCheckOpen = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
CommonLog.ErrorLogWrite(this, "ReaderCheckCommandHandler()", "OpenNumPadPopup Fail !!", string.Format("{0}\n{1}", ex.Message, ex.StackTrace));
|
|
}
|
|
finally
|
|
{
|
|
ReaderCheckClickCount = 0;
|
|
ToIntorTimerStart();
|
|
}
|
|
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
CommonLog.ErrorLogWrite(this, "ReaderCheckCommandHandler()", "Fail !!", string.Format("{0}\n{1}", ex.Message, ex.StackTrace));
|
|
}
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region GMB Right Click
|
|
private void HappyPointCommandHandler(object obj)
|
|
{
|
|
if (HappyPointReturn is M_HappyPointReturn)
|
|
{
|
|
GmbHappyPointEnable = false;
|
|
return;
|
|
}
|
|
ToIntorTimerStop();
|
|
try
|
|
{
|
|
OrderHistoryView = false;
|
|
FindOrderHistoryItems = null;
|
|
var popupReturn = popupManager.OpenHappyPointCertify(false, true, ParentPage.PBWindow);
|
|
if (popupReturn is M_PopupReturn)
|
|
{
|
|
if (popupReturn.TimeOut)
|
|
{
|
|
DefaultPage = PBPageType.Intro;
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
MemberLoginOK = popupReturn.OKAnswer;
|
|
if (popupReturn.PopupArgs is M_HappyPointReturn _HappyPointReturn)
|
|
{
|
|
HappyPointReturn = _HappyPointReturn;
|
|
GmbMemberName = HappyPointReturn.IsCardNoUsed ? HappyPointReturn.MemberName : "고객";
|
|
if (HappyPointReturn.OrderHistoryItems is List<string> orderHistoryItems
|
|
&& orderHistoryItems.Count > 0)
|
|
{
|
|
FindOrderHistoryItems = orderHistoryItems;
|
|
}
|
|
else
|
|
{
|
|
FindOrderHistoryItems = null;
|
|
}
|
|
if (DefaultPage.Equals(PBPageType.Items)) OrderHistoryView = OrderHistoryItemsEnable;
|
|
|
|
}
|
|
else
|
|
{
|
|
HappyPointReturn = null;
|
|
}
|
|
if (!popupReturn.ReturnLanguage.Equals(ShowLanguageType))
|
|
{
|
|
ShowLanguageType = popupReturn.ReturnLanguage;
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
CommonLog.ErrorLogWrite(this, "HappyPointCommandHandler()", "Fail !!", string.Format("{0}\n{1}", ex.Message, ex.StackTrace));
|
|
}
|
|
finally
|
|
{
|
|
ToIntorTimerStart();
|
|
}
|
|
}
|
|
private void CallEmployeeCommandHandler(object obj)
|
|
{
|
|
ToIntorTimerStop();
|
|
try
|
|
{
|
|
var popupReturn = popupManager.OpenCallEmployee();
|
|
if (popupReturn is M_PopupReturn)
|
|
{
|
|
if (popupReturn.TimeOut)
|
|
{
|
|
DefaultPage = PBPageType.Intro;
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
CommonLog.ErrorLogWrite(this, "CallEmployeeCommandHandler()", "Fail !!", string.Format("{0}\n{1}", ex.Message, ex.StackTrace));
|
|
}
|
|
finally
|
|
{
|
|
ToIntorTimerStart();
|
|
}
|
|
}
|
|
private void LanguageCommandHandler(object obj)
|
|
{
|
|
ToIntorTimerStop();
|
|
try
|
|
{
|
|
var popupReturn = popupManager.OpenLanguageSelector(ShowLanguageType);
|
|
if (popupReturn is M_PopupReturn)
|
|
{
|
|
if (popupReturn.TimeOut)
|
|
{
|
|
DefaultPage = PBPageType.Intro;
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
ShowLanguageType = popupReturn.ReturnLanguage;
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
CommonLog.ErrorLogWrite(this, "LanguageCommandHandler()", "Fail !!", string.Format("{0}\n{1}", ex.Message, ex.StackTrace));
|
|
}
|
|
finally
|
|
{
|
|
ToIntorTimerStart();
|
|
}
|
|
}
|
|
private void GotoIntroPageCommadHandler(object obj)
|
|
{
|
|
ToIntorTimerStop();
|
|
try
|
|
{
|
|
if (MiniBasketData != null && MiniBasketData.Count > 0)
|
|
{
|
|
var miniPopup = new M_MiniPopup
|
|
{
|
|
Icon = MiniPopupIcon.Cancel,
|
|
DisplayLanguage = ShowLanguageType,
|
|
Message = Languages.GetMessages("LBL0085"),
|
|
CencalButtonText = Languages.GetMessages("BTN0021"),
|
|
OkButtonText = Languages.GetMessages("BTN0005"),
|
|
IsCencalButton = true,
|
|
TimeoutSeconds = 10,
|
|
};
|
|
var popupReturn = popupManager.OpenMiniPopup(miniPopup);
|
|
if (popupReturn is M_PopupReturn)
|
|
{
|
|
if (popupReturn.OKAnswer)
|
|
{
|
|
DefaultPage = PBPageType.Intro;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
DefaultPage = PBPageType.Intro;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
CommonLog.ErrorLogWrite(this, "GotoIntroPageCommadHandler()", "Fail !!", string.Format("{0}\n{1}", ex.Message, ex.StackTrace));
|
|
}
|
|
finally
|
|
{
|
|
ToIntorTimerStart();
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region GMB Center Click
|
|
private void GmbOrderCommandHandler(object obj)
|
|
{
|
|
DefaultPage = PBPageType.Items;
|
|
}
|
|
private void GmbAIscannerCommandHandler(object obj)
|
|
{
|
|
DefaultPage = PBPageType.Sensing;
|
|
if (this.OptionValue810 == "0"
|
|
&& this.OptionValue811 == "1")
|
|
{
|
|
SensingSubPage = PBSensingSubPageType.BarcordPage;
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region Contents
|
|
private void RescanCommandHandler(object obj)
|
|
{
|
|
DeleteScanItem();
|
|
DefaultPage = PBPageType.Sensing;
|
|
}
|
|
private void GotoBarcodeCommandHandler(object obj)
|
|
{
|
|
if (DefaultPage.Equals(PBPageType.Sensing))
|
|
{
|
|
SensingSubPage = PBSensingSubPageType.BarcordPage;
|
|
}
|
|
}
|
|
|
|
private void Page2LeftCommandHandler(object obj)
|
|
{
|
|
OrderItemPageNo -= 1;
|
|
}
|
|
|
|
private void Page2RightCommandHandler(object obj)
|
|
{
|
|
OrderItemPageNo += 1;
|
|
}
|
|
private void ItemCommandCommandHandler(object _param)
|
|
{
|
|
if (_param is AnimationButton targetButton && targetButton.DataParameter is M_ItemData _ItemData)
|
|
{
|
|
//AddItem2Basket(_ItemData);
|
|
}
|
|
}
|
|
|
|
|
|
private void Category2CommandHandler(object _param)
|
|
{
|
|
ToIntorTimerStart();
|
|
if (_param is AnimationButton targetButton && targetButton.DataParameter is M_ItemData _ItemData)
|
|
{
|
|
DefaultCategory2Item = Category2Data.IndexOf(_ItemData);
|
|
}
|
|
|
|
}
|
|
|
|
private void Category1CommandHandler(object _param)
|
|
{
|
|
ToIntorTimerStart();
|
|
if (_param is AnimationButton targetButton && targetButton.DataParameter is M_ItemData _ItemData)
|
|
{
|
|
DefaultCategory1Item = Category1Data.IndexOf(_ItemData);
|
|
}
|
|
}
|
|
private void PageSelectCommandHandler(object _param)
|
|
{
|
|
if (_param is AnimationButton targetButton && targetButton.DataParameter is M_ItemData _ItemData)
|
|
{
|
|
OrderItemPageNo = ItemPageStatus.IndexOf(_ItemData);
|
|
}
|
|
}
|
|
private void OrderHistoryCommandHandler(object obj)
|
|
{
|
|
OrderHistoryView = true;
|
|
}
|
|
|
|
private void OrderHistoryCloseCommandHandler(object obj)
|
|
{
|
|
OrderHistoryView = false;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region MiniBasket
|
|
private void ABasketItem_PropertyChanged(object sender, PropertyChangedEventArgs e)
|
|
{
|
|
if (sender is M_BasketItem basketItem)
|
|
{
|
|
using (var posDataService = new PosDataService())
|
|
{
|
|
posDataService.UpdatedItem(basketItem);
|
|
}
|
|
SetBasketSum();
|
|
}
|
|
|
|
|
|
}
|
|
|
|
private void MiniBasketDeleteAllCommandHandler(object _param)
|
|
{
|
|
|
|
ToIntorTimerStop();
|
|
try
|
|
{
|
|
var miniPopup = new M_MiniPopup
|
|
{
|
|
Icon = MiniPopupIcon.ListCancel,
|
|
DisplayLanguage = ShowLanguageType,
|
|
Message = Languages.GetMessages("LBL0099"),
|
|
CencalButtonText = Languages.GetMessages("BTN0021"),
|
|
OkButtonText = Languages.GetMessages("BTN0005"),
|
|
IsCencalButton = true,
|
|
TimeoutSeconds = 10,
|
|
};
|
|
var popupReturn = popupManager.OpenMiniPopup(miniPopup);
|
|
if (popupReturn is M_PopupReturn && popupReturn.OKAnswer)
|
|
{
|
|
DeledteAllBasket();
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
CommonLog.ErrorLogWrite(this, "MiniBasketDeleteAllCommandHandler()", "Fail !!", string.Format("{0}\n{1}", ex.Message, ex.StackTrace));
|
|
}
|
|
finally
|
|
{
|
|
ToIntorTimerStart();
|
|
}
|
|
|
|
}
|
|
|
|
private void EmptyBasketDropCommandHandler(object _param)
|
|
{
|
|
if (_param is M_ItemDropEventArgs dropedItem)
|
|
{
|
|
if (dropedItem.SourceObject is AnimationButton sourceButton && sourceButton.DataParameter is M_ItemData _ItemData)
|
|
{
|
|
AddItem2Basket(_ItemData);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void BasketItemDeleteCommandHandler(object _param)
|
|
{
|
|
if (_param is M_BasketItem deleteItem)
|
|
{
|
|
DeleteBasketItem(deleteItem);
|
|
}
|
|
}
|
|
|
|
private void OrderDetailCommandHandler(object _param)
|
|
{
|
|
OpenPBPaymentPage = PBPaymentPageType.DetailBasket;
|
|
}
|
|
|
|
private void GotoPaymentCommandHandler(object _param)
|
|
{
|
|
if (MiniBasketData is ObservableCollection<M_BasketItem>
|
|
&& MiniBasketData.Count > 0)
|
|
{
|
|
OpenPBPaymentPage = PBPaymentPageType.PointsDisCounts;
|
|
}
|
|
else
|
|
{
|
|
ToIntorTimerStop();
|
|
var topMessage = new List<M_Language>
|
|
{
|
|
new M_Language
|
|
{
|
|
Type = SupportLanguageType.ko,
|
|
LanguageData = "선택한 제품이 없습니다."
|
|
},
|
|
new M_Language
|
|
{
|
|
Type = SupportLanguageType.en,
|
|
LanguageData = "en선택한 제품이 없습니다."
|
|
},
|
|
};
|
|
var popupReturn = PopupMessageBox.ShowMessageBox(ShowLanguageType
|
|
, topMessage
|
|
, null
|
|
, MessageBoxButton.OK
|
|
, OpenCloseAnimationType.FullSizeUp
|
|
, OpenCloseAnimationType.FullSizeDown
|
|
, 0.5, 0.2, 5);
|
|
ToIntorTimerStart();
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
private void ToIntoroTimer_Tick(object sender, EventArgs e)
|
|
{
|
|
if (GmbHappyInfoEnable)
|
|
{
|
|
if (GmbHappyInfoEnableTime.AddSeconds(3) <= DateTime.Now)
|
|
{
|
|
GmbHappyInfoEnableTime = DateTime.Now;
|
|
GmbHappyInfoEnable = false;
|
|
}
|
|
|
|
}
|
|
if (DefaultPage.Equals(PBPageType.Intro))
|
|
{
|
|
LastAccessTime = DateTime.Now;
|
|
}
|
|
else if ((DateTime.Now - LastAccessTime) > TimeSpan.FromSeconds(CommonValue.TimeOutSeconds))
|
|
{
|
|
ReaderCheckClickCount = 0;
|
|
#if !TESTMODE
|
|
if (IsTimeoutPopup)
|
|
{
|
|
ToIntorTimerStop();
|
|
var popupReturn = PopupMessageBox.ShowMessageBox(ShowLanguageType
|
|
, Languages.GetMessages("LBL0067")
|
|
, Languages.GetMessages("LBL0021")
|
|
, MessageBoxButton.YesNo
|
|
, OpenCloseAnimationType.FullSizeUp
|
|
, OpenCloseAnimationType.FullSizeDown
|
|
, 0.5, 0.2, 10);
|
|
if (popupReturn.Equals(MessageBoxResult.Yes))
|
|
{
|
|
ToIntorTimerStart();
|
|
}
|
|
else
|
|
{
|
|
|
|
if (!DefaultPage.Equals(PBPageType.Intro)) DefaultPage = PBPageType.Intro;
|
|
}
|
|
}
|
|
#else
|
|
LastAccessTime = DateTime.Now;
|
|
Console.WriteLine(">>> PBViewModel.DefaultPage=PBPageType.Intro");
|
|
#endif
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public void StartListening()
|
|
{
|
|
if (listenThread == null)
|
|
{
|
|
listenThread = new Thread(new ThreadStart(Listen));
|
|
listenThread.IsBackground = true;
|
|
listenThread.Start();
|
|
}
|
|
}
|
|
|
|
public void EndListening()
|
|
{
|
|
if (clientSocket != null)
|
|
{
|
|
clientSocket.Disconnect(false);
|
|
clientSocket.Close();
|
|
clientSocket = null;
|
|
}
|
|
|
|
if (listenSocket != null)
|
|
{
|
|
|
|
listenSocket.Disconnect(false);
|
|
listenSocket.Close();
|
|
listenSocket = null;
|
|
}
|
|
|
|
if (recevieThread != null)
|
|
{
|
|
recevieThread.Abort();
|
|
recevieThread = null;
|
|
}
|
|
|
|
|
|
if (listenThread != null)
|
|
{
|
|
listenThread.Abort();
|
|
listenThread = null;
|
|
}
|
|
|
|
}
|
|
|
|
private void Listen()
|
|
{
|
|
IPAddress ipaddress = IPAddress.Parse(ip);
|
|
IPEndPoint endPoint = new IPEndPoint(ipaddress, port);
|
|
listenSocket = new Socket(
|
|
AddressFamily.InterNetwork,
|
|
SocketType.Stream,
|
|
ProtocolType.Tcp
|
|
);
|
|
listenSocket.Bind(endPoint);
|
|
listenSocket.Listen(10);
|
|
clientSocket = listenSocket.Accept();
|
|
|
|
recevieThread = new Thread(new ThreadStart(Receive));
|
|
recevieThread.IsBackground = true;
|
|
recevieThread.Start(); //Receive() 호출
|
|
}
|
|
bool bConnected = true;
|
|
private void Receive()
|
|
{
|
|
byte[] receiveBuffer = new byte[512];
|
|
while (true)
|
|
{
|
|
|
|
if(bConnected == false)
|
|
{
|
|
clientSocket = listenSocket.Accept();
|
|
bConnected = true;
|
|
|
|
}
|
|
else
|
|
{
|
|
int len;
|
|
try
|
|
{
|
|
len = clientSocket.Receive(receiveBuffer);
|
|
if(len == 0)
|
|
{
|
|
bConnected = false;
|
|
clientSocket.Disconnect(true);
|
|
|
|
}
|
|
else
|
|
{
|
|
string msg = System.Text.Encoding.ASCII.GetString(receiveBuffer); //.rToEncString(CodeType.UTF8);
|
|
ProcessBarcode(msg);
|
|
}
|
|
}
|
|
catch (SocketException se)
|
|
{
|
|
bConnected = false;
|
|
}
|
|
}
|
|
|
|
//연결된 클라이언트가 보낸 데이터 수신
|
|
//byte[] receiveBuffer = new byte[512];
|
|
//int length = clientSocket.Receive(
|
|
// receiveBuffer, receiveBuffer.Length, SocketFlags.None
|
|
//);
|
|
|
|
//string msg = receiveBuffer.rToEncString(CodeType.UTF8);// Encoding.UTF8.GetString(receiveBuffer);
|
|
//if (msg.Replace("\0", "").Length >0) ProcessBarcode(msg);
|
|
}
|
|
|
|
}
|
|
|
|
#endregion Event Handlers
|
|
}
|
|
|
|
}
|