public void MigrateToAccount(Account newowner, ManagedSecurityContext sec) { // migrate pictures IList <AccountEventPicture> pictures = Session.CreateCriteria(typeof(AccountEventPicture)) .Add(Expression.Eq("Account.Id", mInstance.Account.Id)) .Add(Expression.Eq("AccountEvent.Id", mInstance.Id)) .List <AccountEventPicture>(); foreach (AccountEventPicture pp in pictures) { ManagedAccountEventPicture mpp = new ManagedAccountEventPicture(Session, pp); mpp.MigrateToAccount(newowner, sec); } // migrate review discussion Discussion d = ManagedDiscussion.Find( Session, mInstance.Account.Id, typeof(AccountEvent), mInstance.Id, sec); if (d != null) { ManagedDiscussion md = new ManagedDiscussion(Session, d); md.MigrateToAccount(newowner, sec); } mInstance.Account = newowner; Session.Save(mInstance); }
public void MigrateToAccount(Account newowner, ManagedSecurityContext sec) { // migrate review discussion Discussion d = ManagedDiscussion.Find( Session, mInstance.Place.Account.Id, typeof(Place), mInstance.Id, sec); if (d != null) { ManagedDiscussion md = new ManagedDiscussion(Session, d); md.MigrateToAccount(newowner, sec); } mInstance.Account = newowner; Session.Save(mInstance); }
public void Merge(ManagedSecurityContext sec, int id) { if (id == mInstance.Id) { throw new Exception("Cannot merge a place into itself."); } ManagedPlace p = new ManagedPlace(Session, id); #region Merge AccountEvents foreach (AccountEvent inst in p.Instance.AccountEvents) { inst.Place = mInstance; Session.Save(inst); } #endregion #region Merge AccountGroupPlace foreach (AccountGroupPlace inst in p.Instance.AccountGroupPlaces) { if (!HasAccountGroup(inst.AccountGroup.Id)) { inst.Place = mInstance; Session.Save(inst); } } #endregion #region Merge AccountPlaceFavorite foreach (AccountPlaceFavorite inst in p.Instance.AccountPlaceFavorites) { bool found = false; foreach (AccountPlaceFavorite curr in inst.Account.AccountPlaceFavorites) { if (curr.Place.Id == mInstance.Id) { found = true; break; } } if (!found) { inst.Place = mInstance; Session.Save(inst); } } #endregion #region Merge AccountPlaceRequests foreach (AccountPlaceRequest inst in p.Instance.AccountPlaceRequests) { bool found = false; foreach (AccountPlaceRequest curr in inst.Account.AccountPlaceRequests) { if (curr.Place.Id == mInstance.Id) { found = true; break; } } if (!found) { inst.Place = mInstance; Session.Save(inst); } } #endregion #region Merge AccountPlaces foreach (AccountPlace inst in p.Instance.AccountPlaces) { bool found = false; foreach (AccountPlace curr in inst.Account.AccountPlaces) { if (curr.Place.Id == mInstance.Id) { found = true; break; } } if (!found) { inst.Place = mInstance; Session.Save(inst); } } #endregion #region Merge PlaceAttribute foreach (PlaceAttribute inst in p.Instance.PlaceAttributes) { if (!HasPlaceAttribute(inst.Attribute.Id)) { inst.Place = mInstance; Session.Save(inst); } } #endregion #region Merge PlaceNames // merge place names foreach (PlaceName inst in p.Instance.PlaceNames) { if (!HasPlaceName(inst.Name)) { inst.Place = mInstance; Session.Save(inst); } } #endregion #region Merge PlacePictures foreach (PlacePicture inst in p.Instance.PlacePictures) { inst.Place = mInstance; Session.Save(inst); } #endregion #region Merge PlacePropertyValues foreach (PlacePropertyValue inst in p.Instance.PlacePropertyValues) { if (!HasPlacePropertyValue(inst.PlaceProperty.Id)) { inst.Place = mInstance; Session.Save(inst); } } #endregion #region Merge PlaceQueueItems foreach (PlaceQueueItem inst in p.Instance.PlaceQueueItems) { bool found = false; foreach (PlaceQueue queue in inst.PlaceQueue.Account.PlaceQueues) { foreach (PlaceQueueItem curr in queue.PlaceQueueItems) { if (curr.Place.Id == mInstance.Id) { found = true; break; } } if (found) { break; } } if (!found) { inst.Place = mInstance; Session.Save(inst); } } #endregion #region Merge Discussion // TODO: move into ManagedDiscussion Discussion d_keep = ManagedDiscussion.Find(Session, mInstance.Account.Id, typeof(Place), mInstance.Id, sec); Discussion d_delete = ManagedDiscussion.Find(Session, p.Instance.Account.Id, typeof(Place), p.Instance.Id, sec); if (d_keep == null && d_delete != null) { d_delete.ObjectId = mInstance.Id; Session.Save(d_delete); } else if (d_delete != null) { foreach (DiscussionThread t in d_delete.DiscussionThreads) { t.Discussion = d_keep; if (t.Modified > d_keep.Modified) { d_keep.Modified = t.Modified; Session.Save(d_keep); } Session.Save(t); } } #endregion #region Merge MadLibs IList <MadLibInstance> madlibs = ManagedMadLibInstance.GetMadLibs(Session, "Place", p.Id); foreach (MadLibInstance madlib in madlibs) { madlib.ObjectId = mInstance.Id; Session.Save(madlib); } #endregion #region Merge Features IList <Feature> features = ManagedFeature.GetFeatures(Session, "Place", p.Id); foreach (Feature feature in features) { feature.DataRowId = mInstance.Id; Session.Save(feature); } #endregion Session.Delete(p.Instance); }