////public void ChoosePaymentMethod()
 ////{
 ////    if (this.creditCardSpecification.
 ////    And(this.wiretransferSpecification.Not()).
 ////    And(this.freePurchaseSpecification.Not()).
 ////    And(this.promotionalPurchaseSpecification.Not()).
 ////    IsSatisfiedBy(this.purchaseTestInput))
 ////    {
 ////        this.CreditCard.SendKeys("371449635398431");
 ////        this.SecurityNumber.SendKeys("1234");
 ////    }
 ////    else
 ////    {
 ////        this.Wiretransfer.SendKeys("pathToFile");
 ////    }
 ////}
 public void TypePromotionalCode(string promoCode)
 {
     if (IsPromoCodePurchase)
     {
         PromotionalCode.SendKeys(promoCode);
     }
 }
Пример #2
0
        public async Task <IActionResult> Post([FromBody] TeamViewModel teamViewModel)
        {
            IActionResult   result    = null;
            var             managerId = Convert.ToInt32(User.FindFirstValue(ClaimTypes.NameIdentifier));
            Team            team      = null;
            bool            hasError  = false;
            PromotionalCode promoCode = null;

            await ValidateTeamName(teamViewModel);

            await ValidatePlayerData(teamViewModel);

            if (!string.IsNullOrWhiteSpace(teamViewModel.PromotionalCode))
            {
                promoCode = await ValidatePromoCode(teamViewModel);
            }

            if (ModelState.IsValid)
            {
                // perform update of team/player data
                if (teamViewModel.Id.HasValue && teamViewModel.Id.Value > 0)
                {
                    team = TeamRepository.All.SingleOrDefault(t => t.ManagerId == managerId && t.Id == teamViewModel.Id.Value);
                    if (team == null)
                    {
                        // log exception, notify user they are trying to edit a team they are not a manager of
                        var error = new ApiStatusResponse
                        {
                            Messages   = new List <string>(new string[] { "You are trying to edit a team that you do not manage." }),
                            StatusCode = Microsoft.AspNetCore.Http.StatusCodes.Status403Forbidden
                        };
                        Response.StatusCode = error.StatusCode;
                        result   = new ObjectResult(error);
                        hasError = true;
                    }
                    else
                    {
                        Mapper.Map(teamViewModel, team);
                        await UpdateParticipants(teamViewModel, managerId);
                    }
                }
                // add new team/players
                else
                {
                    // map team information
                    team           = Mapper.Map <Team>(teamViewModel);
                    team.ManagerId = managerId;
                    // map any player information
                    foreach (ParticipantViewModel participant in teamViewModel.Players)
                    {
                        if (team.Members == null)
                        {
                            team.Members = new List <Participant>();
                        }
                        team.Members.Add(Mapper.Map <Participant>(participant));
                    }
                }

                if (!hasError)
                {
                    if (promoCode != null)
                    {
                        team.PromotionalCodeId = promoCode.Id;
                    }
                    TeamRepository.InsertOrUpdate(team);
                    try
                    {
                        await TeamRepository.SaveAsync();

                        var teamId = team.Id;
                        team = await TeamRepository.All.Include(t => t.Division).Include(t => t.Gender).Include(t => t.CompetitionLevel).Include(t => t.Members).Where(t => t.ManagerId == managerId && t.Id == teamId).SingleOrDefaultAsync();

                        if (team.Members == null)
                        {
                            team.Members = new List <Participant>();
                        }
                        teamViewModel = Mapper.Map <TeamViewModel>(team);

                        teamViewModel.Validate(team);

                        result = Json(teamViewModel);
                    }
                    catch (Exception e)
                    {
                        // need to log exception and then let the user know that their team could not be saved.
                        var error = new ApiStatusResponse
                        {
                            Messages   = new List <string>(new string[] { e.Message }),
                            StatusCode = Microsoft.AspNetCore.Http.StatusCodes.Status400BadRequest
                        };
                        Response.StatusCode = error.StatusCode;
                        result = new ObjectResult(error);
                    }
                }
            }
            else
            {
                // need to add all model state errors
                var error = new ApiStatusResponse
                {
                    Messages   = new List <string>(),
                    StatusCode = Microsoft.AspNetCore.Http.StatusCodes.Status422UnprocessableEntity
                };
                foreach (var key in ModelState.Keys)
                {
                    foreach (var modelStateError in ModelState[key].Errors)
                    {
                        var player = "";
                        switch (key)
                        {
                        case string k when(k.IndexOf("players[0]", StringComparison.CurrentCultureIgnoreCase) > -1):
                            player = "Captain";

                            break;

                        case string k when(k.IndexOf("players[1]", StringComparison.CurrentCultureIgnoreCase) > -1):
                            player = "Player #2";

                            break;

                        case string k when(k.IndexOf("players[2]", StringComparison.CurrentCultureIgnoreCase) > -1):
                            player = "Player #3";

                            break;

                        case string k when(k.IndexOf("players[3]", StringComparison.CurrentCultureIgnoreCase) > -1):
                            player = "Player #4";

                            break;
                        }
                        error.Messages.Add($"{player} - {modelStateError.ErrorMessage}");
                    }
                }
                Response.StatusCode = error.StatusCode;
                result = new ObjectResult(error);
            }

            return(result);
        }