Esempio n. 1
0
        public async Task <bool> AddToTeamAsync(Guid vmId, Guid teamId, CancellationToken ct)
        {
            var vm = await _context.Vms.SingleOrDefaultAsync(v => v.Id == vmId, ct);

            if (vm == null)
            {
                throw new EntityNotFoundException <Vm>();
            }

            if (!(await _playerService.CanManageTeamAsync(teamId, ct)))
            {
                throw new ForbiddenException();
            }

            if (!(await _permissionsService.CanWrite(new[] { teamId }, ct)))
            {
                throw new ForbiddenException();
            }

            var team = await _context.Teams.SingleOrDefaultAsync(t => t.Id == teamId, ct);

            if (team == null)
            {
                Domain.Models.Team te = new Domain.Models.Team {
                    Id = teamId
                };
                _context.Teams.Add(te);
            }

            var vmteam = await _context.VmTeams.SingleOrDefaultAsync(vt => vt.VmId == vmId && vt.TeamId == teamId);

            if (vmteam != null)
            {
                return(true);
            }

            Domain.Models.VmTeam entity = new Domain.Models.VmTeam {
                VmId = vmId, TeamId = teamId
            };
            _context.VmTeams.Add(entity);
            await _context.SaveChangesAsync(ct);

            return(true);
        }
        public IHttpActionResult AddTeam([FromBody] AddTeamVM model)
        {
            var date = DateTime.Now;
            var team = new Domain.Models.Team()
            {
                Name        = model.TeamName,
                DateCreated = date
            };

            var ut = new Domain.Models.UserTeam()
            {
                UserId     = model.UserId,
                DateJoined = date,
                IsLeader   = true,
                TeamId     = team.TeamId
            };

            _userTeamRepo.AddTeamAndUserTeam(team, ut);
            _userTeamRepo.SaveChanges();

            return(Ok(team));
        }