public ResidentialsController(IEventAggregator eventAggregator, IRegionManager regionManager) { if (eventAggregator == null) { throw new ArgumentNullException("eventAggregator"); } if (regionManager == null) { throw new ArgumentNullException("eventAggregator"); } _eventAggregator = eventAggregator; _regionManager = regionManager; _customerContext = new NitpickHouseDomainContext(); _curResidential = new EntityList<Residential>(_customerContext.Residentials); _eventAggregator.GetEvent<ResourceTokenChangeEvent>().Subscribe(OnTokenChanged, ThreadOption.UIThread); _eventAggregator.GetEvent<MainTabChangedEvent>().Subscribe(OnMainTabChanged, ThreadOption.UIThread); }
private void ShowAllInfo(int nResidentialID) { // NitpickHouseDomainContext _customerContext = new NitpickHouseDomainContext(); // EntitySet<Residential> ResidentialInfoSet; //ApartemtnStatistic aa= _customerContext.GetResidentialStatistic(0); // LoadOperation<Residential> loadOp = _customerContext.Load(query); NitpickHouseDomainContext _customerContext = new NitpickHouseDomainContext(); InvokeOperation<ApartemtnStatistic> OpRes=_customerContext.GetResidentialStatistic(nResidentialID); OpRes.Completed += (sender, args) => { InvokeOperation<ApartemtnStatistic> lo = sender as InvokeOperation<ApartemtnStatistic>; if (!lo.HasError) { ApartemtnStatistic InfoItem = lo.Value as ApartemtnStatistic; Items.Clear(); Items.Add(new VirtulaPieInfoItem("已售", InfoItem.SoldCount)); Items.Add(new VirtulaPieInfoItem("未售", InfoItem.TotalCount-InfoItem.SoldCount)); Items.Add(new VirtulaPieInfoItem("锁定", InfoItem.LockCount)); m_szTotalNum = InfoItem.TotalCount.ToString(); m_szSaledNum = InfoItem.SoldCount.ToString(); m_szLockedNum = InfoItem.LockCount.ToString(); } else { Items.Clear(); Items.Add(new VirtulaPieInfoItem("已售", 0)); Items.Add(new VirtulaPieInfoItem("未售", 0)); Items.Add(new VirtulaPieInfoItem("锁定", 0)); m_szTotalNum = string.Empty; m_szSaledNum = string.Empty; m_szLockedNum = string.Empty; } }; }
public void ApartmentDelete(Apartment cur) { #region Check if (MessageBox.Show(ApartmentServiceError.DelException_Warnning, "警告", MessageBoxButton.OKCancel) == MessageBoxResult.Cancel) { return; } if (cur.CanDelSold == false) { cur.ValidationErrors.Add(new ValidationResult(ApartmentServiceError.DelException_AuthLimit, null)); MessageBox.Show(ApartmentServiceError.DelException_AuthLimit); return; } if (cur.Consumer == null || cur.LockStatu == null) { throw new InvalidOperationException(ApartmentServiceError.SystemException_CheckState); } //为空,则表示正在删除未售记录 if (String.IsNullOrEmpty(cur.Consumer.OperateUser)) { throw new InvalidOperationException(ApartmentServiceError.SystemException_DeleteUnSell); } #endregion #region pepare RepareOperation(cur); #endregion #region initial content Apartment commitApartment = new Apartment { ApartmentId = cur.ApartmentId, RoomType = cur.RoomType, Area = cur.Area, Builing = cur.Builing, Uint = cur.Uint, Floor = cur.Floor, Number = cur.Number, ActualArea = cur.ActualArea, ShareArea = cur.ShareArea, ShareFactor = cur.ShareFactor, ResidentialId = cur.ResidentialId, Residential = null, Consumer = null, LockStatu = null }; commitApartment.Consumer = new Consumer() { Apartment = commitApartment, ApartmentId = cur.Consumer.ApartmentId, SellType = cur.Consumer.SellType, RegionType = cur.Consumer.RegionType, Name = cur.Consumer.Name, IdCard = cur.Consumer.IdCard, RealEstateId = cur.Consumer.RealEstateId, OriginArea = cur.Consumer.OriginArea, OriginAddress = cur.Consumer.OriginAddress, OperateTime = cur.Consumer.OperateTime, OperateUser = cur.Consumer.OperateUser }; commitApartment.LockStatu = new LockStatu() { Apartment = commitApartment, ApartmentId = cur.ApartmentId, OperateUser = cur.LockStatu.OperateUser, OperateTime = cur.LockStatu.OperateTime }; #endregion #region submit NitpickHouseDomainContext submitContext = new NitpickHouseDomainContext(); //use attach to set apartment to unchange state submitContext.Apartments.Attach(commitApartment); commitApartment.LockStatu = null; commitApartment.Consumer = null; // submit the new context SubmitOperation submitOp = submitContext.SubmitChanges(); submitOp.Completed += (send, args) => { CompleteOperation(submitOp, cur); }; #endregion }
public void OnTokenChanged(string szInfo) { _binitailToken = true; //如果当前正在加载,则查询结果可能不正确,需要cancel一次 MakeSureLoadCorret(); //用户登录,需要清除现有集合,从而清除视图 _apartemntLocked.Clear(); //只有重建一个新的,才能彻底清除数据 _domainContext = new NitpickHouseDomainContext(); }
public void ApartmentSell(Apartment cur) { #region Check if (cur.CanSell == false && cur.CanMarketSell == false) { cur.ValidationErrors.Add(new ValidationResult(ApartmentServiceError.SellException_AuthLimit, null)); MessageBox.Show(ApartmentServiceError.SellException_AuthLimit); return; } if (cur.Consumer == null || cur.LockStatu == null) { throw new InvalidOperationException(ApartmentServiceError.SystemException_CheckState); } //不为空,则表示已售记录,再次销售 if (!String.IsNullOrEmpty(cur.Consumer.OperateUser)) { throw new InvalidOperationException(ApartmentServiceError.SystemException_SellSold); } if (!CheckComsterInfo(cur.Consumer)) { MessageBox.Show(ApartmentServiceError.SellException_NeedInformation); return; } #endregion #region pepare RepareOperation(cur); #endregion #region initial content Apartment commitApartment = new Apartment { ApartmentId = cur.ApartmentId, RoomType = cur.RoomType, Area = cur.Area, Builing = cur.Builing, Uint = cur.Uint, Floor = cur.Floor, Number = cur.Number, ActualArea = cur.ActualArea, ShareArea = cur.ShareArea, ShareFactor = cur.ShareFactor, ResidentialId = cur.ResidentialId, Residential = null, Consumer = null, LockStatu = null }; commitApartment.LockStatu = new LockStatu() { Apartment = commitApartment, ApartmentId = cur.ApartmentId, OperateUser = cur.LockStatu.OperateUser, OperateTime = cur.LockStatu.OperateTime }; #endregion #region submit NitpickHouseDomainContext submitContext = new NitpickHouseDomainContext(); //use attach to set apartment to unchange state submitContext.Apartments.Attach(commitApartment); commitApartment.LockStatu = null; commitApartment.Consumer = new Consumer() { Apartment = commitApartment, ApartmentId = cur.Consumer.ApartmentId, SellType = cur.Consumer.SellType, RegionType = cur.Consumer.RegionType, Name = cur.Consumer.Name, IdCard = cur.Consumer.IdCard, RealEstateId = cur.Consumer.RealEstateId, OriginArea = cur.Consumer.OriginArea, OriginAddress = cur.Consumer.OriginAddress, OperateUser = WebContext.Current.User.Name, OperateTime = DateTime.Now }; // submit the new context SubmitOperation submitOp = submitContext.SubmitChanges(); submitOp.Completed += (send, args) => { CompleteOperation(submitOp, cur); }; #endregion }
/// <summary> /// 锁定Apartment函数,被browser调用 /// </summary> /// <param name="cur"></param> /// <param name="callback"></param> public void ApartmentLock(Apartment cur) { #region Check if (cur.CanLock == false) { cur.CurState = ApartmentRuntimeState.Deleted; cur.ValidationErrors.Add(new ValidationResult(ApartmentServiceError.LockException_AuthLimit, null)); MessageBox.Show(ApartmentServiceError.LockException_AuthLimit); return; } if (cur.LockStatu != null) { cur.CurState = ApartmentRuntimeState.Deleted; cur.ValidationErrors.Add(new ValidationResult(ApartmentServiceError.LockException_LockForLocked, null)); MessageBox.Show(ApartmentServiceError.LockException_LockForLocked); return; } if (cur.HasChanges) { cur.CurState = ApartmentRuntimeState.Deleted; cur.ValidationErrors.Add(new ValidationResult(ApartmentServiceError.LockException_RecordModified, null)); MessageBox.Show(ApartmentServiceError.LockException_RecordModified); return; } #endregion #region set origin state cur.CurState = ApartmentRuntimeState.Busing; #endregion #region initial content Apartment commitApartment = new Apartment{ ApartmentId = cur.ApartmentId, RoomType = cur.RoomType, Area = cur.Area, Builing = cur.Builing, Uint = cur.Uint, Floor = cur.Floor, Number = cur.Number, ActualArea = cur.ActualArea, ShareArea = cur.ShareArea, ShareFactor = cur.ShareFactor, ResidentialId = cur.ResidentialId, Residential = null, Consumer = null, LockStatu = null }; if (cur.Consumer != null) { commitApartment.Consumer = new Consumer() { Apartment = commitApartment, ApartmentId = cur.Consumer.ApartmentId, SellType = cur.Consumer.SellType, RegionType = cur.Consumer.RegionType, Name = cur.Consumer.Name, IdCard = cur.Consumer.IdCard, RealEstateId = cur.Consumer.RealEstateId, OriginArea = cur.Consumer.OriginArea, OriginAddress = cur.Consumer.OriginAddress, OperateTime = cur.Consumer.OperateTime, OperateUser = cur.Consumer.OperateUser }; } #endregion #region submit NitpickHouseDomainContext submitContext = new NitpickHouseDomainContext(); //use attach to set apartment to unchange state submitContext.Apartments.Attach(commitApartment); commitApartment.LockStatu = new LockStatu() { Apartment = commitApartment, ApartmentId = cur.ApartmentId, OperateUser = WebContext.Current.User.Name, OperateTime = DateTime.Now }; // submit the new context var submitOp = submitContext.SubmitChanges(); submitOp.Completed += (send, args) => { if (submitOp.HasError) { cur.CurState = ApartmentRuntimeState.Deleted; cur.ValidationErrors.Add(new ValidationResult(submitOp.Error.Message, null)); submitOp.MarkErrorAsHandled(); MessageBox.Show(ApartmentServiceError.ServerOperationException); } else { //--------------------------- //如果当前正在加载,则查询结果可能不正确,需要cancel一次 MakeSureLoadCorret(); //--------------------------- Apartment submittedApartments = (Apartment)submitOp.ChangeSet.ModifiedEntities[0]; submitContext.Apartments.Detach(submittedApartments); //刷新状态 submittedApartments.CurState = ApartmentRuntimeState.Normal; submittedApartments.RefreshAuthenticate(true); _domainContext.Apartments.Attach(submittedApartments); InitialAttachedData(submittedApartments); //----------------------- //add 到视图,及时显示出来 //因为前面清除了当前查询,所以不会出现马上清除的情况。 _apartemntLocked.Add(submittedApartments); } }; #endregion }