예제 #1
0
        public ActionResult <TeamDto> CreateTeam(Guid personId, Guid projectId, [FromBody] CreateTeamDto dto)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest());
                }
                if (!_db.Person.BelongsToUser(personId, HttpContext))
                {
                    return(Forbid());
                }
                if (_db.Participation.GetRole(personId, projectId)?.CalendarWrite != true)
                {
                    return(Forbid());
                }

                var team = _mapper.Map <Team>(dto);
                team.ProjectId = projectId;

                _db.Team.Create(team);
                _db.Save();

                return(Ok(_mapper.Map <TeamDto>(team)));
            }
            catch (Exception e)
            {
                _logger.LogError($"ERROR in CreateTeam: {e.Message}");
                return(StatusCode(500, "Internal server error"));
            }
        }
예제 #2
0
        /// <summary>
        /// Create a new team.
        /// </summary>
        /// <param name="teamToCreate">A Team to create.</param>
        public Team Create(CreateTeamDto teamToCreate)
        {
            _authService.CheckAccess(AuthOperations.Teams.Create);

            if (teamToCreate.Captain == null)
            {
                throw new EntityInvariantViolationException("Captain can not be null");
            }

            ThrowExceptionIfTeamWithSuchNameExists(teamToCreate.Name);

            var captain = GetPlayerById(teamToCreate.Captain.Id);

            if (captain == null)
            {
                throw new MissingEntityException(ServiceResources.ExceptionMessages.PlayerNotFound, teamToCreate.Captain.Id);
            }

            // Check if captain in teamToCreate is captain of another team
            var existTeam = GetTeamLedByCaptain(captain.Id);

            VerifyExistingTeamOrThrow(existTeam);

            return(_teamRepository.Add(teamToCreate));
        }
예제 #3
0
        private async Task <ResponseMessagesDto> CreateTeamAsync(CreateTeamDto model)
        {
            var result = await _repository.InsertAsync(new Team()
            {
                Address  = model.Address,
                Zone     = model.Zone,
                Name     = model.Name,
                TenantId = model.TenantId
            });


            await UnitOfWorkManager.Current.SaveChangesAsync();

            if (result.Id != 0)
            {
                return(new ResponseMessagesDto()
                {
                    Id = result.Id,
                    SuccessMessage = AppConsts.SuccessfullyInserted,
                    Success = true,
                    Error = false,
                });
            }
            return(new ResponseMessagesDto()
            {
                Id = 0,
                ErrorMessage = AppConsts.InsertFailure,
                Success = false,
                Error = true,
            });
        }
예제 #4
0
        private async Task <ResponseMessagesDto> UpdateTeamAsync(CreateTeamDto model)
        {
            var result = await _repository.UpdateAsync(new Team()
            {
                Id       = model.Id,
                Address  = model.Address,
                Name     = model.Name,
                Zone     = model.Zone,
                TenantId = model.TenantId
            });

            if (result != null)
            {
                return(new ResponseMessagesDto()
                {
                    Id = result.Id,
                    SuccessMessage = AppConsts.SuccessfullyUpdated,
                    Success = true,
                    Error = false,
                });
            }
            return(new ResponseMessagesDto()
            {
                Id = 0,
                ErrorMessage = AppConsts.UpdateFailure,
                Success = false,
                Error = true,
            });
        }
예제 #5
0
        public async Task <IActionResult> Create([FromBody] CreateTeamDto teamDto)
        {
            if (teamDto == null)
            {
                return(NotFound());
            }
            if (ModelState.IsValid)
            {
                var mappedTeam = Mapper.Map <Teams>(teamDto);

                await _team.Create(teamDto);

                //
                if (!await _team.Save())
                {
                    return(StatusCode(500, "Server Error, Something went wrong with our server"));
                }
                var createdUser = Mapper.Map <TeamDto>(mappedTeam);
                return(CreatedAtRoute("GetTeam", new { id = createdUser.Id }, createdUser));
            }
            else
            {
                return(BadRequest(ModelState));
            }
        }
예제 #6
0
        public Team Add(CreateTeamDto teamToCreate)
        {
            var players = teamToCreate.Roster.Select(x => x.Id);
            var roster  = _unitOfWork.Context.Players
                          .Where(p => players.Contains(p.Id)).ToList();

            var newTeam = new TeamEntity {
                Name         = teamToCreate.Name,
                Coach        = teamToCreate.Coach,
                CaptainId    = teamToCreate.Captain.Id,
                Achievements = teamToCreate.Achievements,
                Players      = roster
            };

            if (!_dbStorageSpecification.IsSatisfiedBy(newTeam))
            {
                throw new InvalidEntityException();
            }

            _dalTeams.Add(newTeam);
            _unitOfWork.Commit();

            return(new Team(
                       newTeam.Id,
                       newTeam.Name,
                       newTeam.Coach,
                       newTeam.Achievements,
                       new PlayerId(newTeam.CaptainId),
                       teamToCreate.Roster.ToList()
                       ));
        }
예제 #7
0
        public async Task CreateTeam(CreateTeamDto teamDto)
        {
            try
            {
                Team t = new Team
                {
                    Name             = teamDto.Name,
                    ShortDescription = teamDto.Description,
                    OccupationFilter = teamDto.OccupationFilter,
                    AgeRange         = teamDto.Range,
                    Identity         = Guid.NewGuid(),
                    IsClosed         = false,
                    TrackingState    = TrackingState.Added
                };

                InsertMemberAsCreator(t, teamDto.ProfileId);
                InsertOccupations(teamDto, t);

                _teamService.ApplyChanges(t);
                await _unitOfWork.SaveChangesAsync();

                OnTeamCreated(new TeamCreatedArgs(t));
            }
            catch (Exception e)
            {
                OnCreationFaild(new TeamCreationFailedException("There was an error creating the team. Try again.", e, teamDto));
            }
        }
예제 #8
0
 public async Task Create(CreateTeamDto team)
 {
     await _context.Teams.AddAsync(new Teams()
     {
         Description = team.Description,
         Name        = team.Name,
         ProjectId   = team.ProjectId,
     });
 }
 public CreateTeamDtoBuilder()
 {
     _team = new CreateTeamDto {
         Name         = "Name",
         Coach        = "Coach",
         Achievements = "Achievements",
         Captain      = new PlayerId(1),
         Roster       = new List <PlayerId>()
     };
 }
예제 #10
0
        public async Task <ResponseMessagesDto> CreateOrEditAsync(CreateTeamDto model)
        {
            ResponseMessagesDto result;

            if (model.Id == 0)
            {
                result = await CreateTeamAsync(model);
            }
            else
            {
                result = await UpdateTeamAsync(model);
            }
            return(result);
        }
예제 #11
0
        private void InsertOccupations(CreateTeamDto teamDto, Team t)
        {
            if (!teamDto.OccupationFilter)
            {
                return;
            }

            foreach (var ocpId in teamDto.OccupationIds)
            {
                t.AllowedOccupations.Add(new TeamOccupations
                {
                    Team          = t,
                    OccupationId  = ocpId,
                    TrackingState = TrackingState.Added
                });
            }
        }
예제 #12
0
        public async Task <TeamDto> CreateTeam(CreateTeamDto createTeamDto)
        {
            if (false == IsModelValid(createTeamDto, out string issues))
            {
                throw new ArgumentException($"Team model is not valid. Issues: {issues}");
            }

            var teamToCreate = _mapper.Map <CreateTeamDto, TeamModel>(createTeamDto);

            var createdTeam = await _context.Teams.AddAsync(teamToCreate);

            await _context.SaveChangesAsync();

            var teamDto = _mapper.Map <TeamModel, TeamDto>(createdTeam.Entity);

            return(teamDto);
        }
        public IActionResult Create(CreateTeamDto model)
        {
            if (ModelState.IsValid)
            {
                model.AppUserId = GetLoggedUser().Id;
                var teamEntity = _mapper.Map <TeamEntity>(model);
                _teamService.Add(teamEntity);
                _teamPlayersService.Add(new TeamPlayersEntity
                {
                    AppUserId = model.AppUserId,
                    TeamId    = teamEntity.Id
                });
                return(RedirectToAction("Index"));
            }

            return(View(model));
        }
        public void WhenIExecuteCreateTeam()
        {
            try
            {
                var teamDto = new CreateTeamDto {
                    Name         = _teamName,
                    Coach        = _coach,
                    Achievements = _achievements,
                    Captain      = _captain,
                    Roster       = _playerList
                };

                _team      = _teamService.Create(teamDto);
                _newTeamId = _team.Id;
            }
            catch (Exception ex)
            {
                _exception = ex;
            }
        }
예제 #15
0
        public string Execute(string[] data)
        {
            if (!Validation.CheckLength(3, data) && !Validation.CheckLength(2, data))
            {
                return(InvalidLength);
            }

            if (Session.User == null)
            {
                return(NoUser);
            }
            var dto = new CreateTeamDto
            {
                Name    = data[0],
                Acronym = data[1],
            };

            if (data.Length > 2)
            {
                dto.Description = data[2];
            }

            if (teamService.Exists(dto.Name))
            {
                return(String.Format(TeamExists, dto.Name));
            }

            if (!Validation.ValidateAcronym(dto.Acronym))
            {
                return(InvalidAcronym);
            }

            if (!Validation.IsValid(dto))
            {
                return(InvalidDetails);
            }

            teamService.CreateTeam(dto.Name, dto.Acronym, dto.Description, Session.User.Username);

            return(String.Format(SuccessMessage, dto.Name));
        }
예제 #16
0
        public async Task <TeamDto> CreateTeamAsync(int userId, CreateTeamDto dto)
        {
            if (dto == null)
            {
                throw new ArgumentNullException();
            }
            if (await this.repository.TeamNameExistsAsync(dto.Name).ConfigureAwait(false))
            {
                throw new BadRequestException("Team name already exists.");
            }

            var newTeam = new TeamDto
            {
                Id   = await this.repository.CreateTeamAsync(dto.Name, dto.Zip).ConfigureAwait(false),
                Name = dto.Name,
                Zip  = dto.Zip,
            };

            await this.repository.AddUserToTeamAsync(userId, newTeam.Id).ConfigureAwait(false);

            return(newTeam);
        }
예제 #17
0
        public async Task <object> CreateTeam([FromBody] CreateTeamDto model)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }
                if (model.Advanced == model.Beginner)
                {
                    return(BadRequest(new { message = "Advanced and Beginner must not be the same" }));
                }
                var team = new Team()
                {
                    Name     = model.Name,
                    Advanced = model.Advanced,
                    Beginner = model.Beginner
                };
                var dbTeam = await _dbContext.Teams.AddAsync(team);

                _dbContext.Problems
                .Where(x => x.Beginner == model.Beginner)
                .Where(x => x.Advanced == model.Advanced)
                .ToList()
                .ForEach(x => _dbContext.TeamProblems.Add(new TeamProblems()
                {
                    Team = dbTeam.Entity, Problem = x, MarkedForJudging = false
                }));

                await _dbContext.SaveChangesAsync();

                return(Ok(dbTeam.Entity));
            }
            catch (Exception e)
            {
                return(BadRequest(e.Message));
            }
        }
예제 #18
0
 private void MockTeamRepositoryAddToThrow(CreateTeamDto testTeam, Exception exception) =>
 _teamRepositoryMock.Setup(tr => tr.Add(It.Is <CreateTeamDto>(dto => CreateTeamDtosAreEqual(dto, testTeam))))
 .Throws(exception);
        public static TeamModel ToTeamModel(this IMapper mapper, CreateTeamDto createTeamDto)
        {
            var teamModel = mapper.Map <CreateTeamDto, TeamModel>(createTeamDto);

            return(teamModel);
        }
 public TeamCreationFailedException(Exception e, CreateTeamDto data)
 {
 }
 public TeamCreationFailedException(string displayMessage, Exception e, CreateTeamDto data) : base(displayMessage)
 {
 }
예제 #22
0
 private bool IsModelValid(CreateTeamDto createTeamDto, out string issues)
 {
     issues = "";
     return(true);
 }
예제 #23
0
 private bool CreateTeamDtosAreEqual(CreateTeamDto x, CreateTeamDto y)
 {
     return(new CreateTeamDtoComparer().Compare(x, y) == 0);
 }
예제 #24
0
 private void VerifyCreateTeam(CreateTeamDto team, Times times)
 {
     _teamRepositoryMock.Verify(tr => tr.Add(It.Is <CreateTeamDto>(t => CreateTeamDtosAreEqual(t, team))), times);
 }
예제 #25
0
 public async Task <ObjectResult> CreateTeam(int userId, [FromBody] CreateTeamDto teamDto)
 {
     return(new OkObjectResult(await this.teamsService.CreateTeamAsync(userId, teamDto)));
 }
예제 #26
0
        public string Execute(params string[] args)
        {
            string result = default(string);

            try
            {
                if (!Validate.ArgsCountValidate(this.expectedArgs[0], args) && !Validate.ArgsCountValidate(this.expectedArgs[1], args))
                {
                    throw new FormatException(Constants.FormatException);
                }

                string name        = args[0];
                string acronym     = args[1];
                string description = default(string);
                if (args.Length == 3)
                {
                    description = args[2];
                }

                // Check if team exists
                if (this.teamService.TeamExists(name))
                {
                    throw new ArgumentException(string.Format(TeamExists, name));
                }

                // Create Do and validate properties
                CreateTeamDto teamDto = new CreateTeamDto
                {
                    Name        = name,
                    Acronym     = acronym,
                    Description = description
                };

                List <ValidationResult> validationResult = Validate.EntityValidator(teamDto);

                if (validationResult != null)
                {
                    result = validationResult.First().ErrorMessage;
                }

                // Chack if there is any logged in user
                if (UserSession.LoggedInUser == null)
                {
                    throw new InvalidOperationException(Constants.UserIsNotLoggedIn);
                }

                // Map to model
                Team newTeam = Mapper.Map <Team>(teamDto);
                newTeam.Creator = UserSession.LoggedInUser;

                this.teamService.CreateTeam(newTeam);

                result = string.Format(Success, newTeam.Name);
            }
            catch (Exception e)
            {
                result = e.Message;
            }

            return(result);
        }