コード例 #1
0
        public async Task <ActionResult <TeamCheckpoints> > PostTeamCheckpoint(TeamCheckpoints item)
        {
            item.TimeChecked = DateTime.Now;
            _context.TeamCheckpoints.Add(item);
            await _context.SaveChangesAsync();

            return(CreatedAtAction(nameof(GetTeamCheckpointById), new { id = item.Id }, item));
        }
コード例 #2
0
        public async Task <ActionResult <UserValidatedCheckpoints> > PostUserValidatedCheckpoint(UserValidatedCheckpoints item)
        {
            //if (_context.Users.Where(p => p.TicketCode == Request.Headers["Ticket"]).Count() == 0) return Unauthorized("WrongTicketNumber");

            // Si le checkpoint est déjà validé où est désactivé on renvoie une erreur
            Checkpoint currCp = _context.Checkpoints.Find(item.CheckpointId);

            if (_context.TeamCheckpoints.Where(p => p.TeamId == item.TeamId && p.CheckpointId == item.CheckpointId && p.TimeChecked > DateTime.Now.AddHours(-1)).Count() > 0 ||
                _context.UserValidatedCheckpoints.Where(p => p.UserId == item.UserId && p.CheckpointId == item.CheckpointId && p.TimeChecked > DateTime.Now.AddSeconds(-5)).Count() > 0 ||
                (currCp.LastDisabled == null || currCp.LastDisabled > DateTime.Now.AddHours(-1)))
            {
                return(Unauthorized());
            }

            item.TimeChecked = DateTime.Now;
            _context.UserValidatedCheckpoints.Add(item);
            await _context.SaveChangesAsync();

            int UserCheckedCount = _context.UserValidatedCheckpoints
                                   .Where(p => p.TeamId == item.TeamId && p.CheckpointId == item.CheckpointId && p.TimeChecked > DateTime.Now.AddSeconds(-5))
                                   .Select(p => p.UserId)
                                   .Distinct()
                                   .Count();

            // Si tous les membres du groupe ont validé le checkpoint on le renseigne dans la base
            if (UserCheckedCount == _context.Teams.Find(item.TeamId).MembersCount)
            {
                TeamCheckpoints teamCheckpoints = new TeamCheckpoints();
                teamCheckpoints.TeamId       = item.TeamId;
                teamCheckpoints.CheckpointId = item.CheckpointId;
                teamCheckpoints.TimeChecked  = DateTime.Now;

                _context.TeamCheckpoints.Add(teamCheckpoints);
                await _context.SaveChangesAsync();

                if (_context.TeamCheckpoints.Where(p => p.TeamId == item.TeamId && p.TimeChecked > DateTime.Now.AddHours(-1)).Count() == 12)
                {
                    DateTime dateTime = DateTime.Now;
                    item.Team.WinDate = dateTime;
                    foreach (Checkpoint checkpoint in _context.Checkpoints.ToList())
                    {
                        checkpoint.LastDisabled = dateTime;
                    }

                    Team team = await _context.Teams.FindAsync(item.TeamId);

                    team.WinDate = DateTime.Now;
                    await _context.SaveChangesAsync();
                }
            }

            return(CreatedAtAction(nameof(GetUserValidatedCheckpointsItems), new { id = item.Id }, item));
        }
コード例 #3
0
        public async Task <IActionResult> PutTeamCheckpoint(int id, TeamCheckpoints item)
        {
            if (id != item.Id)
            {
                return(BadRequest());
            }

            _context.Entry(item).State = EntityState.Modified;
            await _context.SaveChangesAsync();

            return(NoContent());
        }