/// <summary> /// Model -> View /// </summary> /// <param name="original"></param> public PaypalView(paypalAccessInfo original) { this.id = original.id; this.apiUserName = original.apiUserName; this.apiPassword = original.apiPassword; this.apiSignature = original.apiSignature; this.useSandbox = original.useSandbox; }
/// <summary> /// Thread body /// </summary> /// <param name="state"></param> private void StartWork(object state) { PaypalView paypalView = state as PaypalView; paypalAccessInfo savedPaypal = null; paypalAccessInfo thePaypal = new paypalAccessInfo(); paypalView.Merge(thePaypal, editMode); // Save to backend AutoResetEvent nextOneAutoResetEvent = new AutoResetEvent(false); EventHandler <save_PaypalCompletedEventArgs> h1 = (s, e) => { // TODO: handle error from server side savedPaypal = e.Result; nextOneAutoResetEvent.Set(); }; Globals.WSClient.save_PaypalCompleted += h1; Globals.WSClient.save_PaypalAsync(thePaypal); nextOneAutoResetEvent.WaitOne(); Globals.WSClient.save_PaypalCompleted -= h1; // Check return result. If failure, savedCategory will be null if (savedPaypal != null) { this.Dispatcher.BeginInvoke(delegate() { paypalView.Restore(new PaypalView(savedPaypal)); }); } else { ShopproHelper.ShowMessageWindow(this, "Error", "Fail to save this entry.", false); // Back to readonly mode this.Dispatcher.BeginInvoke(delegate() { // Restore cached UI data paypalView.CancelEdit(); this.itemDataForm.CancelEdit(); }); } ShopproHelper.HideBusyIndicator(this); // No unsaved item this.editMode = DataFormMode.ReadOnly; }
/// <summary> /// View -> Model /// </summary> /// <param name="original"></param> public void Merge(paypalAccessInfo original, DataFormMode editMode) { if (editMode == DataFormMode.Edit) { original.id = this.id; original.idSpecified = true; } else { original.idSpecified = false; } original.apiUserName = this.apiUserName; original.apiPassword = this.apiPassword; original.apiSignature = this.apiSignature; original.useSandbox = this.useSandbox; }