public void Accept(ManagedSecurityContext sec, string message) { GetACL().Check(sec, DataOperation.Delete); AccountPlace place = new AccountPlace(); place.Account = mInstance.Account; place.Place = mInstance.Place; place.Created = place.Modified = DateTime.UtcNow; place.Type = mInstance.Type; place.Description = string.Format("System-approved on {0}.", DateTime.UtcNow.ToString()); Session.Save(place); if (mInstance.Account.AccountPlaces == null) { mInstance.Account.AccountPlaces = new List <AccountPlace>(); } mInstance.Account.AccountPlaces.Add(place); if (mInstance.Place.AccountPlaces == null) { mInstance.Place.AccountPlaces = new List <AccountPlace>(); } mInstance.Place.AccountPlaces.Add(place); ManagedAccount recepient = new ManagedAccount(Session, mInstance.Account); ManagedSiteConnector.TrySendAccountEmailMessageUriAsAdmin(Session, recepient, string.Format("EmailAccountPlaceRequestAccept.aspx?id={0}&message={1}", this.Id, Renderer.UrlEncode(message))); // delete the request when user notified Collection <AccountPlaceRequest> .GetSafeCollection(mInstance.Account.AccountPlaceRequests).Remove(mInstance); Session.Delete(mInstance); }
public override int CreateOrUpdate(TransitAccountPlaceRequest t_instance, ManagedSecurityContext sec) { if (t_instance.Id == 0) { AccountPlace e_place = (AccountPlace)Session.CreateCriteria(typeof(AccountPlace)) .Add(Expression.Eq("Account.Id", t_instance.AccountId)) .Add(Expression.Eq("Place.Id", t_instance.PlaceId)) .UniqueResult(); if (e_place != null) { throw new Exception(string.Format("You are already {0} of this place.", Renderer.Render(e_place.Type.Name))); } AccountPlaceRequest e_placerequest = (AccountPlaceRequest)Session.CreateCriteria(typeof(AccountPlaceRequest)) .Add(Expression.Eq("Account.Id", t_instance.AccountId)) .Add(Expression.Eq("Place.Id", t_instance.PlaceId)) .UniqueResult(); if (e_placerequest != null) { throw new Exception(string.Format("You have already requested to be {0} of this place. Please be patient.", Renderer.Render(e_placerequest.Type.Name))); } } int id = base.CreateOrUpdate(t_instance, sec); Session.Flush(); ManagedSiteConnector.SendAccountEmailMessageUriAsAdmin( Session, new MailAddress(ManagedConfiguration.GetValue(Session, "SnCore.Admin.EmailAddress", "*****@*****.**"), ManagedConfiguration.GetValue(Session, "SnCore.Admin.Name", "Admin")).ToString(), string.Format("EmailAccountPlaceRequest.aspx?id={0}", id)); foreach (AccountPlace place in Collection <AccountPlace> .GetSafeCollection(mInstance.Place.AccountPlaces)) { if (place.Type.CanWrite) { ManagedAccount acct = new ManagedAccount(Session, place.Account); ManagedSiteConnector.TrySendAccountEmailMessageUriAsAdmin( Session, acct, string.Format("EmailAccountPlaceRequest.aspx?id={0}", id)); } } return(id); }