public virtual ActionResult SendCovenantWideMessage(string Message)
        {
            if (Message.Length > 1000)
            {
                TempData["Error"] = "Your message is too long.  There is a 1000 character limit.";
                return(RedirectToAction(MVC.Covenant.MyCovenant()));
            }
            var me = PlayerProcedures.GetPlayerFromMembership(User.Identity.GetUserId());

            // assert that player is in a covenant
            if (me.Covenant == null || me.Covenant <= 0)
            {
                TempData["Error"] = "You are not in a covenant and cannot send out mass messages to your members.";
                return(RedirectToAction(MVC.Covenant.MyCovenant()));
            }

            // assert that the player is a covenant leader
            var myCov = CovenantProcedures.GetDbCovenant((int)me.Covenant);

            if (myCov.LeaderId != me.Id)
            {
                TempData["Error"]    = "You are not the leader of your covenant.";
                TempData["SubError"] = "Only covenant leaders can send out mass messages.";
                return(RedirectToAction(MVC.Covenant.MyCovenant()));
            }

            MessageProcedures.SendCovenantWideMessage(me, Message);

            TempData["Result"] = "Message sent out!";
            return(RedirectToAction(MVC.Covenant.MyCovenant()));
        }
        public virtual ActionResult Index(int offset = 0)
        {
            var myMembershipId = User.Identity.GetUserId();

            var me = PlayerProcedures.GetPlayerFromMembership(myMembershipId);

            if (DomainRegistry.Repository.FindSingle(new IsAccountLockedOut {
                userId = me.MembershipId
            }))
            {
                return(RedirectToAction(MVC.PvP.Play()));
            }

            DomainRegistry.Repository.Execute(new DeletePlayerExpiredMessages {
                OwnerId = me.Id
            });

            var output = MessageProcedures.GetPlayerMessages(me, offset);

            output.InboxSize = 150;

            // if you are inanimate and are being worn, grab the data on who is wearing you

            if (me.Mobility == PvPStatics.MobilityInanimate)
            {
                var personWearingMe = ItemProcedures.BeingWornBy(me);
                if (personWearingMe != null)
                {
                    output.WearerId    = personWearingMe.Player.Id;
                    output.WearerBotId = personWearingMe.Player.BotId;
                    output.WearerName  = personWearingMe.Player.GetFullName();
                }
            }

            var isDonator = me.DonatorGetsMessagesRewards();

            ViewBag.IsDonator = isDonator;

            if (isDonator)
            {
                output.InboxSize = 500;
            }

            ViewBag.ErrorMessage    = TempData["Error"];
            ViewBag.SubErrorMessage = TempData["SubError"];
            ViewBag.Result          = TempData["Result"];

            return(View(MVC.Messages.Views.Messages, output));
        }