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 CovenantWideMessage()
        {
            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()));
            }

            return(View(MVC.Messages.Views.CovenantWideMessage));
        }
Esempio n. 3
0
        private bool UserCanSeeRoom(ref string roomName)
        {
            if (roomName.StartsWith("coven_"))
            {
                var userId = User.Identity.GetUserId();
                var me     = PlayerProcedures.GetPlayerFromMembership(userId);

                if (User.IsInRole(PvPStatics.Permissions_Moderator) || User.IsInRole(PvPStatics.Permissions_Admin))
                {
                    // Always grant access for moderators
                    if (me.Covenant == null || me.Covenant <= 0 || roomName != $"coven_{me.Covenant}")
                    {
                        // User is not a member of this coven
                        TempData["Result"] = "You are in this covenant chat room for moderation purposes.";
                    }
                }
                else if (me.Covenant == null || me.Covenant <= 0)
                {
                    TempData["Error"] = "You are not in a covenant and cannot access this covenant chat room.";
                    return(false);
                }
                else if (roomName != $"coven_{me.Covenant}")
                {
                    TempData["Error"] = "You are not in this covenant and cannot access its chat room.";
                    return(false);
                }

                // Player is in coven or a moderator
                var covenId = roomName.Substring(6).Parse <int>();
                var coven   = CovenantProcedures.GetDbCovenant(covenId);
                if (coven != null)
                {
                    roomName = $"{coven.Name} (covenant)";
                }
            }
            else if (roomName.StartsWith("owner_"))
            {
                var userId = User.Identity.GetUserId();
                var me     = PlayerProcedures.GetPlayerFromMembership(userId);

                if (roomName != $"owner_{me.Id}")
                {
                    // Not the owner
                    var item = DomainRegistry.Repository.FindSingle(new GetItemByFormerPlayer {
                        PlayerId = me.Id
                    });

                    if (item == null || item.Owner == null || roomName != $"owner_{item.Owner.Id}")
                    {
                        // Not owned by the player
                        if (User.IsInRole(PvPStatics.Permissions_Moderator) || User.IsInRole(PvPStatics.Permissions_Admin))
                        {
                            TempData["Result"] = "You are in this owner chat room for moderation purposes.";
                        }
                        else
                        {
                            TempData["Error"] = "You do not have access to this owner chat room.";
                            return(false);
                        }
                    }
                }

                var ownerId = roomName.Substring(6).Parse <int>();
                var owner   = PlayerProcedures.GetPlayerFormViewModel(ownerId);
                if (owner != null && owner.Player != null)
                {
                    roomName = $"{owner.Player.GetFullName()} (owner chat)";
                }
            }

            return(true);
        }