using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Threading; using System.Windows; using System.Windows.Input; using System.Windows.Threading; using System.Reflection; using SPC.Kiosk.Base; using SPC.Kiosk.Common; using SPC.Kiosk.Popup.Model; using SPC.Kiosk.Payments; using SPC.Kiosk.DataHelper; using System.Windows.Controls; using System.Windows.Media; namespace SPC.Kiosk.Popup.ViewModel { /// /// HappyPointCertify.xaml에 대한 ViewModel /// public class VmHappyPointCertify : PopupViewModelBase { #region [ Members ] private PosDataService posDataService = null; private ObservableCollection memberHistoryItems= new ObservableCollection(); /// /// Member History Items /// public ObservableCollection MemberHistoryItems { get { return memberHistoryItems; } set { memberHistoryItems = value; PropertyChange("MemberHistoryItems"); } } private ObservableCollection memberOrderBasket; /// /// Member Order Basket /// public ObservableCollection MemberOrderBasket { get { return memberOrderBasket; } set { memberOrderBasket = value; PropertyChange("MemberOrderBasket"); } } private double memberHistoryItemsGridHeight = 310d; /// /// Member History Items Grid Height /// public double MemberHistoryItemsGridHeight { get { return memberHistoryItemsGridHeight; } set { memberHistoryItemsGridHeight = value; PropertyChange("MemberHistoryItemsGridHeight"); } } private double topGridMarginHeight = 0d; /// /// Top Grid Margin Height /// public double TopGridMarginHeight { get { return topGridMarginHeight; } set { topGridMarginHeight = value; PropertyChange("TopGridMarginHeight"); } } private string titileImage; /// /// Titile Image /// public string TitileImage { get { return titileImage; } set { titileImage = value; PropertyChange("TitileImage"); } } private string imageQR; /// /// Image QR /// public string ImageQR { get { return imageQR; } set { imageQR = value; PropertyChange("ImageQR"); } } private string imageUserType= ResourceManager.GetNximagePathAdd("happy_member_pink.gif", CommonValue.PBdesignImagesPath); /// /// /// public string ImageUserType { get { return imageUserType; } set { imageUserType = value; PropertyChange("ImageUserType"); } } private List headerText; /// /// Top Header Text /// public List HeaderText { get { return headerText; } set { headerText = value; PropertyChange("HeaderText"); } } private List scanGuidText; /// /// Second Sub Header Text /// public List ScanGuidText { get { return scanGuidText; } set { scanGuidText = value; PropertyChange("ScanGuidText"); } } private List processingGuide; /// /// Processing Guide Text /// public List ProcessingGuide { get { return processingGuide; } set { processingGuide = value; PropertyChange("ProcessingGuide"); } } private List errorGuide; /// /// Error Guide Text /// public List ErrorGuide { get { return errorGuide; } set { errorGuide = value; PropertyChange("ErrorGuide"); } } private List infoGuid1Text; /// /// Bootom first infomation text /// public List InfoGuid1Text { get { return infoGuid1Text; } set { infoGuid1Text = value; PropertyChange("InfoGuid1Text"); } } private List infoGuid2Text; /// /// Bottom second infomation text /// public List InfoGuid2Text { get { return infoGuid2Text; } set { infoGuid2Text = value; PropertyChange("InfoGuid2Text"); } } private string processingGIF; /// /// Processing GIF /// public string ProcessingGIF { get { return processingGIF; } set { processingGIF = value; PropertyChange("ProcessingGIF"); } } private string errorImage; /// /// Read Barcode /// public string ErrorImage { get { return errorImage; } set { errorImage = value; PropertyChange("ErrorImage"); } } public bool certifyStartVisible = false; /// /// 인증 시작 화면 Visible /// public bool CertifyStartVisible { get { return certifyStartVisible; } set { certifyStartVisible = value; PropertyChange("CertifyStartVisible"); } } public bool certifyProcessingVisible = false; /// /// 인증 진행 화면 Visible /// public bool CertifyProcessingVisible { get { return certifyProcessingVisible; } set { certifyProcessingVisible = value; PropertyChange("CertifyProcessingVisible"); } } public bool processingErrorVisible = false; /// /// 인증 오류 화면 Visible /// public bool ProcessingErrorVisible { get { return processingErrorVisible; } set { processingErrorVisible = value; PropertyChange("ProcessingErrorVisible"); } } public bool certifySuccessVisible = false; /// /// 인증 완료 화면 Visible /// public bool CertifySuccessVisible { get { return certifySuccessVisible; } set { certifySuccessVisible = value; PropertyChange("CertifySuccessVisible"); } } private List processingMessageText; /// /// Number Pad Input Guide Text /// public List ProcessingMessageText { get { return processingMessageText; } set { processingMessageText = value; PropertyChange("ProcessingMessageText"); } } private List numPadGuidText; /// /// Number Pad Input Guide Text /// public List NumPadGuidText { get { return numPadGuidText; } set { numPadGuidText = value; PropertyChange("NumPadGuidText"); } } private List errorText; /// /// Process Error Text /// public List ErrorText { get { return errorText; } set { errorText = value; PropertyChange("ErrorText"); } } private bool isErrorBlink = false; /// /// Is Error Text Blink /// public bool IsErrorBlink { get { return isErrorBlink; } set { isErrorBlink = value; PropertyChange("IsErrorBlink"); } } private string formatedBarCode; /// /// Read Barcode Formated Text /// public string FormatedBarCode { get { return formatedBarCode; } set { formatedBarCode = value; PropertyChange("FormatedBarCode"); } } private string readBarCode; /// /// Read Barcode /// public string ReadBarCode { get { return readBarCode; } set { readBarCode = value; PropertyChange("ReadBarCode"); } } private bool showPhoneInput = false; /// /// Show Phone Input /// public bool ShowPhoneInput { get { return showPhoneInput; } set { showPhoneInput = value; PropertyChange("ShowPhoneInput"); } } private List showPhoneButtonText; /// /// Number Pad Input Guide Text /// public List ShowPhoneButtonText { get { return showPhoneButtonText; } set { showPhoneButtonText = value; PropertyChange("ShowPhoneButtonText"); } } private string inputNumbers = string.Empty; /// /// Number Pad Input Number /// public string InputNumbers { get { return inputNumbers; } set { inputNumbers = value; PropertyChange("InputNumbers"); } } private string memberNameText = string.Empty; /// /// Number Pad Input Number /// public string MemberNameText { get { return memberNameText; } set { memberNameText = value; PropertyChange("MemberNameText"); } } private string memberPointsText = string.Empty; /// /// Number Pad Input Number /// public string MemberPointsText { get { return memberPointsText; } set { memberPointsText = value; PropertyChange("MemberPointsText"); } } private double cancelButtonWidth = 650d; /// /// Cancel Button Width /// public double CancelButtonWidth { get { return cancelButtonWidth; } set { cancelButtonWidth = value; PropertyChange("CancelButtonWidth"); } } private List cancelButtonText; /// /// Cancel Button Text /// public List CancelButtonText { get { return cancelButtonText; } set { cancelButtonText = value; PropertyChange("CancelButtonText"); } } private List okButtonText; /// /// Ok Button Text /// public List OkButtonText { get { return okButtonText; } set { okButtonText = value; PropertyChange("OkButtonText"); } } public bool oKButtonEnabled = false; /// /// OK Button enabled /// public bool OKButtonEnabled { get { return oKButtonEnabled; } set { oKButtonEnabled = value; PropertyChange("OKButtonEnabled"); } } private double okButtonWidth = 650d; /// /// OK Button Width /// public double OKButtonWidth { get { return okButtonWidth; } set { okButtonWidth = value; PropertyChange("OKButtonWidth"); } } public bool numPadInputVisible = false; /// /// OK Button enabled /// public bool NumPadInputVisible { get { return numPadInputVisible; } set { numPadInputVisible = value; PropertyChange("NumPadInputVisible"); } } public bool numPadGuideVisible = true; /// /// OK Button enabled /// public bool NumPadGuideVisible { get { return numPadGuideVisible; } set { numPadGuideVisible = value; PropertyChange("NumPadGuideVisible"); } } public int numPadMaxLength; /// /// Number Pad Input Maxlength /// public int NumPadMaxLength { get { return numPadMaxLength; } set { numPadMaxLength = value; PropertyChange("NumPadMaxLength"); } } private List memberPointsHeaderText; /// /// Cancel Button Text /// public List MemberPointsHeaderText { get { return memberPointsHeaderText; } set { memberPointsHeaderText = value; PropertyChange("MemberPointsHeaderText"); } } private string languageButttonImage; /// /// Read Barcode Formated Text /// public string LanguageButttonImage { get { return languageButttonImage; } set { languageButttonImage = value; PropertyChange("LanguageButttonImage"); } } private bool languageButttonVisibel; /// /// Language Select Button Visible /// public bool LanguageButttonVisibel { get { return languageButttonVisibel; } set { languageButttonVisibel = value; PropertyChange("LanguageButttonVisibel"); } } private CertifyWindowType certifyWindow = CertifyWindowType.CertifyStart; /// /// Current View Window /// public CertifyWindowType CertifyWindow { get { return certifyWindow; } set { certifyWindow = value; PropertyChange("CertifyWindow"); } } private double popupWidth = 1300; /// /// Popup Whidth (For Calculate OK Button Width) /// public double PopupWidth { get { return popupWidth; } set { popupWidth = value; PropertyChange("PopupWidth"); } } private List bellButtonText; /// /// Barcode Scan Login Button Text /// public List BellButtonText { get { return bellButtonText; } set { bellButtonText = value; PropertyChange("BellButtonText"); } } private List talkButtonText; /// /// Mobile Login Button Text /// public List TalkButtonText { get { return talkButtonText; } set { talkButtonText = value; PropertyChange("TalkButtonText"); } } /// /// HappyPoint 인증 정보 /// public M_HappyPointReturn HappyPointReturn { get; set; } /// /// OK Click Command /// public ICommand OkCommand { get; protected set; } /// /// Cancel Click Command /// public ICommand CancelCommand { get; protected set; } public ICommand SwitchPhoneCommand { get; protected set; } /// /// Bell Button Command /// public ICommand BellButtonCommand { get; protected set; } /// /// Talk Button Command /// public ICommand TalkButtonCommand { get; protected set; } public bool openOptionPopup = true; /// /// OK Button enabled /// public bool OpenOptionPopup { get { return openOptionPopup; } set { openOptionPopup = value; PropertyChange("openOptionPopup"); } } /// /// Selected Data /// public M_ItemData SelectedData { get; protected set; } /// /// Get Option Popup Return /// public M_PopupReturn GetOptionPopupReturn { get; set; } private bool MemberProcessStart = false; private posHappyPoint posHappyPoint = null; private Task ProcessTask = null; private string certifyKey = string.Empty; private ParentPage _popupParentPage; /// /// Popup Parent Page /// public ParentPage PopupParentPage { get { return _popupParentPage; } set { _popupParentPage = value; PropertyChange("PopupParentPage"); } } private string cashReceipButtonBackground; /// /// CashReceip Button Background /// public string CashReceipButtonBackground { get { return cashReceipButtonBackground; } set { cashReceipButtonBackground = value; PropertyChange("CashReceipButtonBackground"); } } private string cashTypePersonButtonNormal; /// /// CashType Person Button Normal /// public string CashTypePersonButtonNormal { get { return cashTypePersonButtonNormal; } set { cashTypePersonButtonNormal = value; PropertyChange("CashTypePersonButtonNormal"); } } private string cashTypePersonButtonDisable; /// /// CashType Person Button Disable /// public string CashTypePersonButtonDisable { get { return cashTypePersonButtonDisable; } set { cashTypePersonButtonDisable = value; PropertyChange("CashTypePersonButtonDisable"); } } private bool cashTypePersonEnable = false; /// /// CashType Serson Enabled /// public bool CashTypePersonEnable { get { return cashTypePersonEnable; } set { cashTypePersonEnable = value; PropertyChange("CashTypePersonEnable"); } } private string cashTypeCompanyButtonNormal; /// /// CashType Company Button Normal /// public string CashTypeCompanyButtonNormal { get { return cashTypeCompanyButtonNormal; } set { cashTypeCompanyButtonNormal = value; PropertyChange("CashTypeCompanyButtonNormal"); } } private string cashTypeCompanyButtonDisable; /// /// CashType Company Button Disable /// public string CashTypeCompanyButtonDisable { get { return cashTypeCompanyButtonDisable; } set { cashTypeCompanyButtonDisable = value; PropertyChange("CashTypeCompanyButtonDisable"); } } public bool cashTypeCompanyEnable = true; /// /// CashType Serson Enabled /// public bool CashTypeCompanyEnable { get { return cashTypeCompanyEnable; } set { cashTypeCompanyEnable = value; PropertyChange("CashTypeCompanyEnable"); } } private bool bellButtonEnable = false; /// /// Bell Button Enable /// public bool BellButtonEnable { get { return bellButtonEnable; } set { bellButtonEnable = value; PropertyChange("BellButtonEnable"); } } private bool talkButtonEnable = true; /// /// Talk Button Enable /// public bool TalkButtonEnable { get { return talkButtonEnable; } set { talkButtonEnable = value; PropertyChange("TalkButtonEnable"); } } #endregion #region [ Ctor ] /// /// Ctor /// public VmHappyPointCertify() { posDataService = new PosDataService(); OkCommand = new Command(OkCommandHandler); CancelCommand = new Command(CancelCommandHandler); SwitchPhoneCommand = new Command(SwitchPhoneCommandHandler); this.PropertyChanged += VmHappyPointCertify_PropertyChanged; TitileImage = ResourceManager.GetNximagePathAdd("img_gif_barcode_happy.gif", CommonValue.PBdesignImagesPath); ProcessingGIF = ResourceManager.GetNximagePathAdd("ic_alert_ing2.gif", CommonValue.PBdesignImagesPath); ImageQR = ResourceManager.GetNximagePathAdd("Img_qr.png", CommonValue.PBdesignImagesPath); ErrorImage = ResourceManager.GetNximagePathAdd("ic_alert_error.png", CommonValue.PBdesignImagesPath); HeaderText = Languages.GetMessages("LBL0134"); MemberPointsHeaderText = Languages.GetMessages("LBL0054"); ProcessingMessageText = Languages.GetMessages("LBL0087"); ProcessingGuide = Languages.GetMessages("LBL0017"); ErrorGuide = Languages.GetMessages("LBL0017"); ErrorText = new List(); NumPadMaxLength = 11; NumPadGuidText = Languages.GetMessages("LBL0091"); ShowPhoneButtonText = new List { new M_Language { Type=SupportLanguageType.ko,LanguageData="전화번호로 로그인 >>" } }; ShowLanguageType = CommonValue.CommonLanguageType; posHappyPoint = new posHappyPoint(); CertifyWindow = CertifyWindowType.CertifyStart; ShowPhoneInput = false; BellButtonCommand = new Command(BellButtonCommandHandler); TalkButtonCommand = new Command(TalkButtonCommandHandler); CashReceipButtonBackground = ResourceManager.GetNximagePathAdd("img_check_bg.png", CommonValue.PBdesignImagesPath); CashTypePersonButtonNormal = ResourceManager.GetNximagePathAdd("btn_check_n.png", CommonValue.PBdesignImagesPath); CashTypePersonButtonDisable = ResourceManager.GetNximagePathAdd("btn_check_s.png", CommonValue.PBdesignImagesPath); CashTypeCompanyButtonNormal = ResourceManager.GetNximagePathAdd("btn_check_n.png", CommonValue.PBdesignImagesPath); CashTypeCompanyButtonDisable = ResourceManager.GetNximagePathAdd("btn_check_s.png", CommonValue.PBdesignImagesPath); } /// /// Dispose /// public new void Dispose() { this.TitileImage = null; this.ProcessingGIF = string.Empty; this.ErrorImage = string.Empty; this.PropertyChanged -= VmHappyPointCertify_PropertyChanged; if (posDataService != null) { posDataService.Dispose(); posDataService = null; } if (ProcessTask != null) { ProcessTask.Dispose(); ProcessTask = null; } if (posHappyPoint != null) { HappyPointRemoveEvents(); posHappyPoint.Dispose(); posHappyPoint = null; } base.Dispose(); } #endregion Ctor #region [ Method ] private void AddItem2Basket(M_ItemData _itemData) { var option = new List(); var itemCount = 1; var unitPrice = _itemData.Price; if (_itemData.IsOption) { SelectedData = _itemData; GetOptionPopupReturn = null; OpenOptionPopup = true; try { if (GetOptionPopupReturn is M_PopupReturn popupReturn) { if (popupReturn.TimeOut) { IsTimeout = true; 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 { OpenOptionPopup = false; } if (option == null) return; } else { option = null; itemCount = 1; unitPrice = _itemData.Price; } var getNewOrderBasket = posDataService.AddItemToBasket(MemberOrderBasket , itemCount , unitPrice , CommonValue.PBdesignImagesPath , _itemData , option); if (getNewOrderBasket is ObservableCollection) MemberOrderBasket = getNewOrderBasket; } private void InitError() { LastAccessTime = DateTime.Now; ErrorText = new List(); IsErrorBlink = false; } private void HappyPointCreateEvents() { if (posHappyPoint != null) { posHappyPoint.ReadStart += PosHappyPoint_ReadStart; posHappyPoint.ReadEnd += PosHappyPoint_ReadEnd; posHappyPoint.ErrorEvent += PosHappyPoint_ErrorEvent; posHappyPoint.ErrorMessageEvent += PosHappyPoint_ErrorMessageEvent; } } private void HappyPointRemoveEvents() { if (posHappyPoint != null) { posHappyPoint.ReadStart -= PosHappyPoint_ReadStart; posHappyPoint.ReadEnd -= PosHappyPoint_ReadEnd; posHappyPoint.ErrorEvent -= PosHappyPoint_ErrorEvent; posHappyPoint.ErrorMessageEvent -= PosHappyPoint_ErrorMessageEvent; } } private void DoHappyPointCertify() { if (posHappyPoint != null) { HappyPointCreateEvents(); var processTask = new Task(() => posHappyPoint.StartCertifyProcessing(certifyKey)); processTask.Start(); processTask.Wait(); HappyPointRemoveEvents(); if (posHappyPoint.ProcessOK) { CertifyWindow = CertifyWindowType.CertifySuccess; } else { CertifyWindow = CertifyWindowType.ProcessingError; } TimerEnabled = true; MemberProcessStart = false; processTask = null; } } private void DoBarCodeHappyPointCertify() { InputNumbers = string.Empty; FormatedBarCode = ReadBarCode.GetEncriptCardNo(); certifyKey = ReadBarCode; CertifyWindow = CertifyWindowType.CertifyProcessing; } private void SetImageUserType() { if (HappyPointReturn is M_HappyPointReturn) { if (HappyPointReturn.IsCompanyMember) { ImageUserType = ResourceManager.GetNximagePathAdd("happy_member_spc.png", CommonValue.PBdesignImagesPath); } else { switch (HappyPointReturn.MemberLevel) { case HappyPointMemberLevel.VIP: ImageUserType = ResourceManager.GetNximagePathAdd("happy_member_platinum.png", CommonValue.PBdesignImagesPath); break; case HappyPointMemberLevel.Gold: ImageUserType = ResourceManager.GetNximagePathAdd("happy_member_gold.png", CommonValue.PBdesignImagesPath); break; default: //PINK && None => Pink ImageUserType = ResourceManager.GetNximagePathAdd("happy_member_pink.png", CommonValue.PBdesignImagesPath); break; } } } } private void SetOrderHistory(string _custCD) { if (!string.IsNullOrEmpty(_custCD)) { using (var dataHelper = new CommonDataHelper()) { string[] orderHistoryArray = dataHelper.GetCustBuyHistory(_custCD); if (orderHistoryArray is string[] && orderHistoryArray.Length > 0) { List orderHistoryList = null; if (orderHistoryArray is string[] && orderHistoryArray.Length > 0) { orderHistoryList = new List(); var historyKeys = string.Format("'{0}'", string.Join("','", orderHistoryArray)); var historyItems = dataHelper.GetItemsData(historyKeys); //var historyItems = dataHelper.GetItemsData().GetRange(0,5); if (historyItems is List) { foreach (var aItem in historyItems) { aItem.BadgeHeight = 30; aItem.BadgeOrientation = Orientation.Horizontal; if (aItem.BadgeImages is List && aItem.BadgeImages.Count > 0) { var newBadgeImages = new List(); 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 && 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 = 60, Height = 60, Margin = new Thickness(80, 10, 95, 25), BrushStretch = Stretch.Fill, DragCursorHotSpot = HotSpotType.Center, ClickAnimationType = ButtonAnimationType.None, CircleBackBrush = "Transparent", CircleTextBruch = "Transparent", Enabled = !aItem.IsSoldOut, CircleText = string.Empty, }; aItem.BaseTextBlock = new M_TextBlock() { LanguageData = dataHelper.GetLaguageData("PROD", aItem.ItemCode), TextSize = 20, Width = 210, Height = 50, TextBrush = "Black", TextFontFamily = "NanumSquare", TextVerticalAlignment = VerticalAlignment.Center, TextMargin = new Thickness(5, 0, 20, 0), TextWeight = FontWeights.Bold, TextWrapping = TextWrapping.Wrap }; aItem.AdditionTextBlock = new M_TextBlock() { LanguageData = new List { new M_Language{ Type = SupportLanguageType.ko, LanguageData = string.Format("₩{0:#,##0}", aItem.Price)}, }, TextSize = 26, Width = 210, Height = 30, TextBrush = "#1469cc", TextFontFamily = "NanumSquare", TextVerticalAlignment = VerticalAlignment.Top, TextMargin = new Thickness(5, 5, 20, 0), TextWeight = FontWeights.Bold, }; orderHistoryList.Add(aItem.ItemCode); } } MemberHistoryItems = new ObservableCollection(historyItems); HappyPointReturn.OrderHistoryItems = orderHistoryList; } } } } } private void SetCertifyView() { if (ShowPhoneInput) { InputNumbers = string.Empty; CancelButtonWidth = PopupWidth / 2; OKButtonWidth = PopupWidth / 2; OKButtonEnabled = false; //OkButtonText = Languages.GetMessages("BTN0011"); //CancelButtonText = Languages.GetMessages("BTN0016"); //ShowPhoneButtonText = new List // { // new M_Language { Type=SupportLanguageType.ko,LanguageData="바코드 스캔 로그인 >>" } // }; TalkButtonEnable = false; BellButtonEnable = true; } else { CancelButtonWidth = PopupWidth; OKButtonWidth = 0d; OKButtonEnabled = false; //CancelButtonText = Languages.GetMessages("BTN0016"); ShowPhoneButtonText = new List { new M_Language { Type=SupportLanguageType.ko,LanguageData="전화번호로 로그인 >>" } }; TalkButtonEnable = true; BellButtonEnable = false; } } #endregion Method #region [ Event Handlers ] private void CancelCommandHandler(object obj) { TimerEnabled = false; ReturnValue = new M_PopupReturn { OKAnswer = false, TimeOut = false, ReturnLanguage = ShowLanguageType, PopupArgs = null }; CanWindowClose = true; } private void OkCommandHandler(object obj) { switch (CertifyWindow) { case CertifyWindowType.CertifyStart: certifyKey = InputNumbers; CertifyWindow = CertifyWindowType.CertifyProcessing; break; case CertifyWindowType.ProcessingError: CertifyWindow = CertifyWindowType.CertifyStart; break; case CertifyWindowType.CertifySuccess: ReturnValue = new M_PopupReturn { OKAnswer = true, TimeOut = false, ReturnLanguage = ShowLanguageType, PopupArgs = HappyPointReturn, PopupSubArgs = MemberOrderBasket is ObservableCollection ? MemberOrderBasket.ToList() : null }; if (ProcessTask != null) ProcessTask.Wait(); CanWindowClose = true; break; } } private void SwitchPhoneCommandHandler(object obj) { ShowPhoneInput = !ShowPhoneInput; } private void PosHappyPoint_ErrorMessageEvent(string ErrorString) { ErrorText = new List { new M_Language { Type = SupportLanguageType.ko, LanguageData = ErrorString.Replace("\n"," ").Replace("\r","") }, }; IsErrorBlink = true; } private void PosHappyPoint_ErrorEvent(posHappyPoint.ErrorCode _errorCode) { //TODO: 공통에 에러 메세지 등록 핋요 //ErrorText = Languages.GetMessages(_errorCode.ToString()); ErrorText = new List { new M_Language { Type = SupportLanguageType.ko, LanguageData = _errorCode.ToString() }, }; IsErrorBlink = true; } private void PosHappyPoint_ReadStart(object sender) { MemberProcessStart = true; TimerEnabled = false; } private void PosHappyPoint_ReadEnd(object sender) { if (sender is posHappyPoint getPosposHappyPoint) { if (getPosposHappyPoint.ProcessOK) { HappyPointReturn = new M_HappyPointReturn { MyHappyCoupons = getPosposHappyPoint.MyHappyCoupons, IsFavoriteStore = getPosposHappyPoint.IsFavoriteStore, IsCompanyMember = getPosposHappyPoint.IsCompanyMember, MemberName = getPosposHappyPoint.MemberName, MemberNumber = getPosposHappyPoint.MemberNumber, MemberCode = getPosposHappyPoint.CertifyKey, IsAppMamber = getPosposHappyPoint.IsAppMamber, MemberLevel = getPosposHappyPoint.MemberLevel.StartsWith("VIP") ? HappyPointMemberLevel.VIP : getPosposHappyPoint.MemberLevel.StartsWith("G") ? HappyPointMemberLevel.Gold : HappyPointMemberLevel.Pink, MemberPoint = getPosposHappyPoint.MemberPoint, UseablePoint = getPosposHappyPoint.UseablePoint, NeedPassword = getPosposHappyPoint.NeedPassword, ReservePoint = getPosposHappyPoint.CanReservePoint, IsCardNoUsed = getPosposHappyPoint.CertifyKey.Replace("=", "").Replace("@", "").Length.Equals(16) }; // 포인트 멤버이름 : 핸드폰번호 시 [고객] MemberNameText = HappyPointReturn.IsCardNoUsed ? HappyPointReturn.MemberName : "고객"; MemberPointsHeaderText = HappyPointReturn.IsCardNoUsed ? Languages.GetMessages("LBL0054") : new List(); SetImageUserType(); //주문이력 조회 기능 //SetOrderHistory("1011175065"); //Test if (HappyPointReturn.IsCardNoUsed) SetOrderHistory(HappyPointReturn.MemberNumber); //Prod // 핸드폰 로그인 시 안보여도 포인트는 가지고 있어야 한다. MemberPointsText = HappyPointReturn.IsCardNoUsed ? string.Format("{0}P", HappyPointReturn.MemberPoint.ToString("#,##0")) : string.Empty; } } } private void VmHappyPointCertify_PropertyChanged(object sender, PropertyChangedEventArgs e) { try { switch (e.PropertyName) { case "IsTimeout": if (IsTimeout) { switch (CertifyWindow) { case CertifyWindowType.CertifyStart: case CertifyWindowType.CertifySuccess: case CertifyWindowType.ProcessingError: ReturnValue = new M_PopupReturn { OKAnswer = false, TimeOut = true, ReturnLanguage = ShowLanguageType, PopupArgs = null }; break; } if (ProcessTask != null) ProcessTask.Wait(); CanWindowClose = true; } break; case "ShowLanguageType": switch (ShowLanguageType) { case SupportLanguageType.ko: LanguageButttonImage = ResourceManager.GetNximagePathAdd("btn_language_kor.png", CommonValue.PBdesignImagesPath); break; case SupportLanguageType.en: LanguageButttonImage = ResourceManager.GetNximagePathAdd("btn_language_eng.png", CommonValue.PBdesignImagesPath); break; case SupportLanguageType.ja: LanguageButttonImage = ResourceManager.GetNximagePathAdd("btn_language_jap.png", CommonValue.PBdesignImagesPath); break; case SupportLanguageType.zh: LanguageButttonImage = ResourceManager.GetNximagePathAdd("btn_language_chi.png", CommonValue.PBdesignImagesPath); break; } break; case "ShowPhoneInput": SetCertifyView(); break; case "NumPadInputVisible": NumPadGuideVisible = !NumPadInputVisible; break; case "InputNumbers": NumPadInputVisible = InputNumbers.Length > 0; if (NumPadInputVisible) { InitError(); ReadBarCode = string.Empty; } OKButtonEnabled = InputNumbers.Length.Equals(10) || InputNumbers.Length.Equals(11); break; case "ReadBarCode": if (!MemberProcessStart) { InitError(); switch (ReadBarCode.Length) { case 17: readBarCode = ReadBarCode.Substring(0, 16); DoBarCodeHappyPointCertify(); break; case 16: DoBarCodeHappyPointCertify(); break; default: FormatedBarCode = string.Empty; OKButtonEnabled = false; break; } } break; case "CertifyWindow": CertifyStartVisible = false; CertifyProcessingVisible = false; ProcessingErrorVisible = false; CertifySuccessVisible = false; switch (CertifyWindow) { case CertifyWindowType.CertifyStart: CertifyStartVisible = true; break; case CertifyWindowType.CertifyProcessing: CertifyProcessingVisible = true; break; case CertifyWindowType.ProcessingError: ProcessingErrorVisible = true; break; case CertifyWindowType.CertifySuccess: CertifySuccessVisible = true; break; } break; case "CertifyStartVisible": case "PopupParentPage": if (CertifyStartVisible) { if (PopupParentPage == ParentPage.PBPaymentsWindow) { HeaderText = Languages.GetMessages("LBL0135"); ScanGuidText = Languages.GetMessages("LBL0136"); OkButtonText = Languages.GetMessages("BTN0039"); CancelButtonText = Languages.GetMessages("BTN0033"); BellButtonText = new List() { new M_Language() { LanguageData = "바코드스캔", Type = SupportLanguageType.ko } }; TalkButtonText = new List() { new M_Language() { LanguageData = "휴대폰", Type = SupportLanguageType.ko } }; } else { HeaderText = Languages.GetMessages("LBL0134"); ScanGuidText = Languages.GetMessages("LBL0137"); OkButtonText = Languages.GetMessages("BTN0011"); CancelButtonText = Languages.GetMessages("BTN0016"); BellButtonText = new List() { new M_Language() { LanguageData = "바코드스캔 로그인", Type = SupportLanguageType.ko } }; TalkButtonText = new List() { new M_Language() { LanguageData = "휴대폰 로그인", Type = SupportLanguageType.ko } }; } InfoGuid1Text = new List(); InfoGuid2Text = new List(); SetCertifyView(); TimeOutSeconds = CommonValue.TimeOutSeconds; } break; case "CertifyProcessingVisible": if (CertifyProcessingVisible) { ScanGuidText = new List(); InfoGuid1Text = new List(); InfoGuid2Text = new List(); CancelButtonWidth = 0d; OKButtonWidth = 0d; LanguageButttonVisibel = false; if (ProcessTask != null) ProcessTask.Wait(); ProcessTask = new Task(DoHappyPointCertify); ProcessTask.Start(); } break; case "ProcessingErrorVisible": if (ProcessingErrorVisible) { if (PopupParentPage == ParentPage.PBPaymentsWindow) { HeaderText = Languages.GetMessages("LBL0135"); ScanGuidText = Languages.GetMessages("LBL0136"); OkButtonText = Languages.GetMessages("BTN0007"); CancelButtonText = Languages.GetMessages("BTN0033"); BellButtonText = new List() { new M_Language() { LanguageData = "바코드스캔", Type = SupportLanguageType.ko } }; TalkButtonText = new List() { new M_Language() { LanguageData = "휴대폰", Type = SupportLanguageType.ko } }; } else { HeaderText = Languages.GetMessages("LBL0134"); ScanGuidText = Languages.GetMessages("LBL0137"); OkButtonText = Languages.GetMessages("BTN0007"); CancelButtonText = Languages.GetMessages("BTN0033"); BellButtonText = new List() { new M_Language() { LanguageData = "바코드스캔 로그인", Type = SupportLanguageType.ko } }; TalkButtonText = new List() { new M_Language() { LanguageData = "휴대폰 로그인", Type = SupportLanguageType.ko } }; } ScanGuidText = new List(); InfoGuid1Text = new List(); InfoGuid2Text = new List(); CancelButtonWidth = PopupWidth / 2; OKButtonWidth = PopupWidth / 2; OKButtonEnabled = true; TimeOutSeconds = 10d; LanguageButttonVisibel = false; } break; case "CertifySuccessVisible": if (CertifySuccessVisible) { if (PopupParentPage == ParentPage.PBPaymentsWindow) { HeaderText = Languages.GetMessages("LBL0135"); OkButtonText = Languages.GetMessages("BTN0039"); ScanGuidText = Languages.GetMessages("LBL0141"); } else { HeaderText = Languages.GetMessages("LBL0134"); OkButtonText = Languages.GetMessages("BTN0039"); ScanGuidText = Languages.GetMessages("LBL0141"); } CancelButtonWidth = 0d; OKButtonWidth = PopupWidth; OKButtonEnabled = true; TimeOutSeconds = CommonValue.TimeOutSeconds; LanguageButttonVisibel = false; } break; } } catch (Exception ex) { CommonLog.ErrorLogWrite(this, "VmHappyPointCertify_PropertyChanged()", "Fail !!", string.Format("{0}\n{1}", ex.Message, ex.StackTrace)); } } private void BellButtonCommandHandler(object obj) { //BellButtonEnable = false; ShowPhoneInput = !ShowPhoneInput; } private void TalkButtonCommandHandler(object obj) { //TalkButtonEnable = false; ShowPhoneInput = !ShowPhoneInput; } #endregion Event Handlers } }