Example #1
0
        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);
        }
Example #2
0
        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);
        }