public JsonResult Create(TeamViewModel teamViewModel)
        {
            JsonResult result = null;

            if (!ModelState.IsValid)
            {
                result = Json(ModelState);
            }
            else
            {
                try
                {
                    var roster = teamViewModel.Roster.Select(t => t.ToDomain()).ToList();

                    _playerService.Create(roster);

                    var domainTeam = teamViewModel.ToDomain();
                    domainTeam.CaptainId = roster[0].Id;

                    _teamService.Create(domainTeam);

                    if (teamViewModel.Roster != null)
                    {
                        _teamService.UpdateRosterTeamId(roster, domainTeam.Id);
                    }

                    teamViewModel.Id = domainTeam.Id;
                    result           = Json(teamViewModel, JsonRequestBehavior.AllowGet);
                }
                catch (ArgumentException ex)
                {
                    result = Json(new { Success = "False", ex.Message });
                }
                catch (MissingEntityException ex)
                {
                    result = Json(new { Success = "False", ex.Message });
                }
                catch (ValidationException ex)
                {
                    result = Json(new { Success = "False", ex.Message });
                }
            }

            return(result);
        }
Example #2
0
        /// <summary>
        /// Creates Team
        /// </summary>
        /// <param name="team"> The  team as ViewModel. </param>
        /// <returns> Has been saved successfully - Created OData result
        /// unsuccessfully - Bad request </returns>
        public IHttpActionResult Post(TeamViewModel team)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var teamToCreate = team.ToDomain();

            try
            {
                _teamService.Create(teamToCreate);
            }
            catch (MissingEntityException ex)
            {
                ModelState.AddModelError(string.Format("{0}.{1}", CONTROLLER_NAME, ex.Source), ex.Message);
                return(BadRequest(ModelState));
            }

            team.Id = teamToCreate.Id;
            return(Ok(team));
        }
Example #3
0
        public JsonResult Edit(TeamViewModel teamViewModel)
        {
            JsonResult result = null;

            if (!ModelState.IsValid)
            {
                result = Json(ModelState);
            }
            else
            {
                try
                {
                    var playersIdsToAddToTeam = teamViewModel.AddedPlayers
                                                .Where(x => x.Id > 0)
                                                .Select(x => new PlayerId(x.Id))
                                                .ToList();

                    var playersToAddToTeam = teamViewModel.AddedPlayers
                                             .Where(x => x.Id == 0)
                                             .Select(x => x.ToCreatePlayerDto())
                                             .ToList();

                    if (playersToAddToTeam.Count != 0)
                    {
                        playersIdsToAddToTeam.AddRange(_playerService.CreateBulk(playersToAddToTeam)
                                                       .Select(x => new PlayerId(x.Id)));
                    }

                    if (playersIdsToAddToTeam.Count != 0)
                    {
                        _teamService.AddPlayers(new TeamId(teamViewModel.Id), playersIdsToAddToTeam);
                    }

                    ChangeCaptain(teamViewModel);

                    if (teamViewModel.DeletedPlayers.Count > 0)
                    {
                        _teamService.RemovePlayers(new TeamId(teamViewModel.Id), teamViewModel.DeletedPlayers.Select(x => new PlayerId(x)));
                    }

                    var domainTeam = teamViewModel.ToDomain();

                    _teamService.Edit(domainTeam);

                    result = Json(teamViewModel, JsonRequestBehavior.AllowGet);
                }
                catch (ArgumentException ex)
                {
                    result = Json(new { Success = "False", ex.Message });
                }
                catch (MissingEntityException ex)
                {
                    result = Json(new { Success = "False", ex.Message });
                }
                catch (ValidationException ex)
                {
                    result = Json(new { Success = "False", ex.Message });
                }
            }

            return(result);
        }