////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); } }
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); }