/// <summary> /// View -> Model /// </summary> /// <param name="original"></param> public void Merge(myGlob original, DataFormMode editMode) { if (editMode == DataFormMode.Edit) { original.id = this.id; original.idSpecified = true; } else { original.idSpecified = false; } original.shopName = this.shopName; original.slogan = this.slogan; original.phoneNumber = this.phoneNumber; original.logoAbsoluteUrl = this.logoAbsoluteUrl; original.address = this.address; original.page404 = this.page404; original.page500 = this.page500; original.pageNoSearchResult = this.pageNoSearchResult; original.footer = this.footer; original.googleCustSearchCode = this.googleCustSearchCode; original.signupAgreement = this.signupAgreement; original.version = this.version; original.siteType = this.siteType; original.unlockEmailTemplate = this.unlockEmailTemplate; original.resetPasswordMailTemplate = this.resetPasswordMailTemplate; original.siteTypeSpecified = true; }
/// <summary> /// Thread body /// </summary> /// <param name="state"></param> private void StartWork(object state) { GlobalView globalView = state as GlobalView; myGlob savedGlobal = null; myGlob theGlobal = new myGlob(); globalView.Merge(theGlobal, editMode); // Save to backend AutoResetEvent nextOneAutoResetEvent = new AutoResetEvent(false); EventHandler <save_MyGlobCompletedEventArgs> h1 = (s, e) => { // TODO: handle error from server side savedGlobal = e.Result; nextOneAutoResetEvent.Set(); }; Globals.WSClient.save_MyGlobCompleted += h1; Globals.WSClient.save_MyGlobAsync(theGlobal); nextOneAutoResetEvent.WaitOne(); Globals.WSClient.save_MyGlobCompleted -= h1; // Check return result. If failure, savedCategory will be null if (savedGlobal != null) { this.Dispatcher.BeginInvoke(delegate() { globalView.Restore(new GlobalView(savedGlobal)); }); } else { // Show error message ShopproHelper.ShowMessageWindow(this, "Error", "Fail to save this entry.", false); // Back to readonly mode this.Dispatcher.BeginInvoke(delegate() { // Restore cached UI data globalView.CancelEdit(); this.itemDataForm.CancelEdit(); }); } ShopproHelper.HideBusyIndicator(this); // No unsaved item this.editMode = DataFormMode.ReadOnly; }
/// <summary> /// Model -> View /// </summary> /// <param name="original"></param> public GlobalView(myGlob original) { this.id = original.id; this.shopName = original.shopName; this.slogan = original.slogan; this.phoneNumber = original.phoneNumber; this.logoAbsoluteUrl = original.logoAbsoluteUrl; this.address = original.address; this.page404 = original.page404; this.page500 = original.page500; this.pageNoSearchResult = original.pageNoSearchResult; this.footer = original.footer; this.googleCustSearchCode = original.googleCustSearchCode; this.signupAgreement = original.signupAgreement; this.version = original.version; this.siteType = original.siteType; this.unlockEmailTemplate = original.unlockEmailTemplate; this.resetPasswordMailTemplate = original.resetPasswordMailTemplate; }
/// <summary> /// global -> GlobalView in collection /// </summary> /// <param name="articleCollection"></param> /// <returns></returns> static public GlobalView Convert(myGlob global) { GlobalView globalView = new GlobalView(global); return(globalView); }