示例#1
0
        //return a competition with results from the user ID that is provided.
        public CompetitionWithResult GetCompetitionWithResultFromID(int ID)
        {
            using (var context = new DivingCompDbContext())
            {
                CompetitionWithResult cwr = new CompetitionWithResult();
                cwr.Comp = GetCompetitionWithUserFromID(ID);

                //cwr.Results = new List<Result>();

                //users = context.Users.Where(u => context.CompetitionUsers.Any(cu => u.ID == cu.UID & cu.CID == comp.ID)).ToList();
                //users where id = ( in competition users where cu.UID <-- and cu.cid == comp.id)
                cwr.Jumps = context.Jumps.Where(jump =>
                                                context.CompetitionUsers.Any(cu => jump.CUID == cu.ID && cu.CID == cwr.Comp.ID)).Include(j => j.Results).ToList();


                foreach (Jump j in cwr.Jumps)
                {
                    CompetitionUser tmp = context.CompetitionUsers.FirstOrDefault(u => u.ID == j.CUID);
                    j.CUID = tmp.UID;

                    foreach (Result r in j.Results)
                    {
                        r.Jump = null;
                    }
                }



                return(cwr);
            }
        }
        public async Task JoinCompetition(int id, string userId)
        {
            var competition = this.competitionsRepository.All().FirstOrDefault(x => x.Id == id);
            var user        = await this.userManager.FindByIdAsync(userId);

            var CompetitionUser = new CompetitionUser();

            CompetitionUser.Competition = competition;
            CompetitionUser.User        = user;

            if (!joinedRepository.All().Any(x => x.UserId == userId && x.CompetitionId == id))
            {
                competition.JoinedUsers.Add(CompetitionUser);
                await this.competitionsRepository.SaveChangesAsync();
            }
        }
示例#3
0
        public static List <CompetitionUser> ReadCompetitionUsers(string query)
        {
            List <CompetitionUser> users = new List <CompetitionUser>();

            using (DatabaseConnection dbClient = Alias.Server.DatabaseManager.GetConnection())
            {
                using (MySqlDataReader Reader = dbClient.DataReader(query))
                {
                    while (Reader.Read())
                    {
                        CompetitionUser user = new CompetitionUser
                        {
                            Id       = Reader.GetInt32("id"),
                            Username = Reader.GetString("username"),
                            Figure   = Reader.GetString("look"),
                            Points   = Reader.GetInt32("points")
                        };
                        users.Add(user);
                    }
                }
            }
            return(users);
        }
示例#4
0
        public void CreateCompetition(CompetitionWithUser CompInfo, List <Jump> jumps)
        {
            var context = new DivingCompDbContext();

            context.Database.EnsureCreated();

            //create a new competition object to later add tot the database.
            Competition c = new Competition();

            //add provided info to the competition object.
            c.Name  = CompInfo.Name;
            c.Start = CompInfo.Start;
            c.Jumps = CompInfo.Jumps;

            //add it to the database.
            context.Competitions.Add(c);
            context.SaveChanges();

            List <CompetitionUser> CUIDs = new List <CompetitionUser>();

            //for each jumper in the provided information, add to the database and to the competition
            foreach (User userJumper in CompInfo.Users)
            {
                CompetitionUser temp = new CompetitionUser();
                temp.CID = c.ID;
                temp.UID = userJumper.ID;

                context.CompetitionUsers.Add(temp);
                context.SaveChanges();

                CompetitionUser tmp = new CompetitionUser();
                tmp.ID  = temp.ID;
                tmp.UID = temp.UID;
                CUIDs.Add(tmp);
            }

            //for each judge in the provided information, add judge to the competition.
            foreach (User userJudge in CompInfo.Judges)
            {
                CompetitionJudge temp = new CompetitionJudge();
                temp.CID = c.ID;
                temp.UID = userJudge.ID;
                context.CompetitionJudges.Add(temp);
            }

            //aa...
            List <Jump> orderedJumps = jumps.OrderBy(o => o.CUID).ToList();
            int         n            = 0;

            for (int i = 0; i < orderedJumps.Count; i++)
            {
                if (i % c.Jumps == 0 && i != 0)
                {
                    n++;
                }

                orderedJumps[i].GlobalNumber = orderedJumps[i].Number * (orderedJumps.Count / c.Jumps) + n;
            }

            foreach (Jump j in orderedJumps)
            {
                Jump temp = new Jump();

                for (int i = 0; i < CUIDs.Count; i++) //for all CU stored
                // CUIDs.ID == compuser.ID, CUIDs.UID == user ID
                {
                    // currently, j.CUID == compuser.UID but this will be changed to compuser.ID
                    if (CUIDs[i].UID == j.CUID)    // this means our jump belongs to this compuser
                    {
                        temp.CUID   = CUIDs[i].ID; //here
                        temp.Code   = j.Code;
                        temp.Number = j.Number;
                        temp.Height = j.Height;

                        temp.GlobalNumber = j.GlobalNumber;

                        Jump t = JumpHelper.ParseDifficulty(j.Code, j.Height);
                        temp.Name       = t.Name;
                        temp.Difficulty = t.Difficulty;
                        context.Jumps.Add(temp);
                    }
                }
            }
            context.SaveChanges();
        }