// GET: Profile/ShowTeam
        public ActionResult ShowTeam()
        {
            if (string.IsNullOrEmpty(Request.QueryString["teamId"]))
            {
                return(Redirect("~/Profile/Index"));
            }

            int teamId;

            if (!int.TryParse(Request.QueryString["teamId"], out teamId))
            {
                return(Redirect("~/Profile/Index"));
            }

            TeamHandle handle = UserManager.Default.QueryTeamById(teamId);

            if (handle == null)
            {
                return(Redirect("~/Error/TeamNotFound"));
            }

            TeamDetailModel model = TeamDetailModel.FromTeamHandle(handle);

            return(View(model));
        }
        public ActionResult AddTeamUser()
        {
            // AJAX 查询响应
            if (!UserSession.IsAuthorized(Session))
            {
                return(new ContentResult());
            }

            if (string.IsNullOrEmpty(Request.QueryString["teamId"]) ||
                string.IsNullOrEmpty(Request.QueryString["username"]))
            {
                return(new ContentResult());
            }

            int teamId;

            if (!int.TryParse(Request.QueryString["teamId"], out teamId))
            {
                return(new ContentResult());
            }

            TeamHandle teamHandle = UserManager.Default.QueryTeamById(teamId);

            if (teamHandle == null)
            {
                // 给定的队伍不存在于数据库中。
                return(new ContentResult());
            }

            UserHandle userHandle = UserManager.Default.QueryUserByName(Request.QueryString["username"]);

            if (userHandle == null)
            {
                // 给定的用户不存在于数据库中。
                return(new ContentResult());
            }

            // 查询队伍信息。
            using (TeamDataProvider data = TeamDataProvider.Create(teamHandle, true))
            {
                // 检查操作权限。
                if (string.Compare(data.Leader, UserSession.GetUsername(Session), false) != 0)
                {
                    return(new ContentResult());
                }
            }

            UserManager.Default.AddUserToTeam(teamHandle, userHandle);
            return(new ContentResult());
        }
        public ActionResult ContestRegisterIdentity()
        {
            string contestIdString = Request.QueryString["id"];

            if (string.IsNullOrEmpty(contestIdString))
            {
                return(QueryResult(1, "Contest ID is required."));
            }

            int contestId;

            if (!int.TryParse(contestIdString, out contestId))
            {
                return(QueryResult(2, "Invalid contest ID."));
            }

            ContestHandle contest = new ContestHandle(contestId);
            UserHandle    user    = UserSession.GetUserHandle(Session);

            if (user == null)
            {
                // 当前会话中不存在任何活动的登录用户。
                return(QueryResult(3, "User session not exist."));
            }

            ContestAuthorizationState authState = ContestAuthorization.GetUserAuthorizationState(contest, user);

            if (authState.RegisterState == ContestRegisterState.NotRegistered ||
                authState.RegisterState == ContestRegisterState.PasswordRequired)
            {
                return(QueryResult(string.Empty));
            }
            else
            {
                if (authState.RegisterState == ContestRegisterState.IndividualRegistered)
                {
                    return(QueryResult(user.Username));
                }
                else
                {
                    TeamHandle registeredTeam = new TeamHandle(authState.TeamId);
                    using (TeamDataProvider teamData = TeamDataProvider.Create(registeredTeam, true))
                    {
                        return(QueryResult(teamData.Name));
                    }
                }
            }
        }
        /// <summary>
        /// 将给定的队伍添加至给定的比赛的注册队伍列表中。
        /// </summary>
        /// <param name="contest">比赛句柄。</param>
        /// <param name="team">要添加的队伍句柄。</param>
        /// <exception cref="ArgumentNullException"/>
        public static void Register(ContestHandle contest, TeamHandle team)
        {
            if (contest == null)
            {
                throw new ArgumentNullException(nameof(contest));
            }
            if (team == null)
            {
                throw new ArgumentNullException(nameof(team));
            }

            using (ContestDataProvider contestData = ContestDataProvider.Create(contest, false))
            {
                contestData.AddTeamToAuthorizedList(team);
            }
        }
Exemple #5
0
        /// <summary>
        /// 获取当前用户所处的所有队伍。
        /// </summary>
        /// <returns>当前用户所处的所有队伍的队伍句柄。</returns>
        /// <exception cref="ObjectDisposedException"/>
        public TeamHandle[] GetTeams()
        {
            if (m_disposed)
            {
                throw new ObjectDisposedException(GetType().Name);
            }

            TeamHandle[] handles = new TeamHandle[m_entity.Teams.Count];
            int          i       = 0;

            foreach (TeamProfileEntity entity in m_entity.Teams)
            {
                handles[i++] = TeamHandle.FromTeamEntity(entity);
            }

            return(handles);
        }
Exemple #6
0
        /// <summary>
        /// 从给定的队伍句柄加载队伍数据到当前数据模型中。
        /// </summary>
        /// <param name="data">队伍句柄。</param>
        /// <exception cref="ArgumentNullException"/>
        public static TeamBriefModel FromTeamHandle(TeamHandle handle)
        {
            if (handle == null)
            {
                throw new ArgumentNullException(nameof(handle));
            }

            TeamBriefModel model = new TeamBriefModel();

            using (TeamDataProvider data = TeamDataProvider.Create(handle, true))
            {
                model.TeamId       = data.TeamId;
                model.Name         = data.Name;
                model.MembersCount = data.GetMembers().Length;
            }

            return(model);
        }
Exemple #7
0
        /// <summary>
        /// 使用给定的队伍句柄和一个指示当前对象是否为只读对象的值创建一个新的 TeamDataProvider。
        /// </summary>
        /// <param name="handle">队伍句柄。</param>
        /// <param name="isReadonly">一个值,该值指示当前对象是否为只读。</param>
        /// <returns>绑定到给定队伍句柄的 TeamDataProvider 对象。</returns>
        /// <exception cref="ArgumentNullException"/>
        /// <exception cref="TeamNotFoundException"/>
        public static TeamDataProvider Create(TeamHandle handle, bool isReadonly)
        {
            if (handle == null)
            {
                throw new ArgumentNullException(nameof(handle));
            }

            // 从数据库中查询队伍数据。
            UserDataContext   context = new UserDataContextFactory().CreateContext();
            TeamProfileEntity entity  = context.QueryTeamProfileEntity(handle.TeamId);

            if (entity == null)
            {
                context.Dispose();
                throw new TeamNotFoundException(handle);
            }

            return(new TeamDataProvider(context, entity, isReadonly));
        }
        public ActionResult CreateTeam(FormCollection form)
        {
            // AJAX 查询,以 JSON 返回结果。
            // 验证表单参数。
            if (string.IsNullOrEmpty(form["teamName"]) || string.IsNullOrEmpty(form["leader"]))
            {
                return(new ContentResult());
            }

            // 创建新的队伍。
            TeamHandle handle = UserManager.Default.CreateTeam();

            using (TeamDataProvider data = TeamDataProvider.Create(handle, false))
            {
                data.Name   = form["teamName"];
                data.Leader = form["leader"];

                UserManager.Default.AddUserToTeam(handle, new UserHandle(form["leader"]));
            }

            return(new ContentResult());
        }
Exemple #9
0
        private void HandleProcessTest()
        {
            Console.SetOut(tw);
            var type = ConfigSingleton.CreateInstance().GetAppConfig <string>("ReptileType");

            IReptile r = IocUnity.GetService <IReptile>(type);

            var ph = new TeamHandle();

            var path = @"C:\Users\Gaushee\Desktop\555.txt";
            var txt  = File.ReadAllText(path);
            var data = new BRData
            {
                Param = new TeamParam()
                {
                    TeamId = "223423", PlayerId = "12334"
                },
                Html = txt
            };

            ph.Process(data);
        }
        public ActionResult DeleteTeam()
        {
            if (!UserSession.IsAuthorized(Session))
            {
                return(new ContentResult());
            }

            if (string.IsNullOrEmpty(Request.QueryString["teamId"]))
            {
                return(new ContentResult());
            }

            int teamId;

            if (!int.TryParse(Request.QueryString["teamId"], out teamId))
            {
                return(new ContentResult());
            }

            TeamHandle teamHandle = UserManager.Default.QueryTeamById(teamId);

            if (teamHandle == null)
            {
                return(new ContentResult());
            }

            using (TeamDataProvider data = TeamDataProvider.Create(teamHandle, true))
            {
                // 检查操作权限。
                if (string.Compare(data.Leader, UserSession.GetUsername(Session), false) != 0)
                {
                    return(new ContentResult());
                }
            }

            UserManager.Default.RemoveTeam(teamHandle);
            return(new ContentResult());
        }
        /// <summary>
        /// 从给定的队伍句柄创建队伍详细信息数据模型。
        /// </summary>
        /// <param name="handle">队伍句柄。</param>
        /// <returns>队伍详细信息数据模型。</returns>
        /// <exception cref="ArgumentNullException"/>
        public static TeamDetailModel FromTeamHandle(TeamHandle handle)
        {
            if (handle == null)
            {
                throw new ArgumentNullException(nameof(handle));
            }

            TeamDetailModel model = new TeamDetailModel();

            using (TeamDataProvider data = TeamDataProvider.Create(handle, true))
            {
                model.TeamId   = data.TeamId;
                model.TeamName = data.Name;
                model.Leader   = data.Leader;

                foreach (UserHandle user in data.GetMembers())
                {
                    model.Members.Add(UserProfileModel.FromUserHandle(user));
                }
            }

            return(model);
        }
Exemple #12
0
 /// <summary>
 /// 使用给定的队伍句柄和异常消息创建 TeamNotFoundException 类的新实例。
 /// </summary>
 /// <param name="handle">队伍句柄。</param>
 /// <param name="message">异常消息。</param>
 public TeamNotFoundException(TeamHandle handle, string message) : base(handle, message)
 {
 }
Exemple #13
0
 /// <summary>
 /// 使用给定的队伍句柄创建 TeamNotFoundException 类的新实例。
 /// </summary>
 /// <param name="handle">队伍句柄。</param>
 public TeamNotFoundException(TeamHandle handle) : base(handle, "给定的队伍不存在。")
 {
 }