public IActionResult New(NewAvailabilityViewModel model) { if (!ModelState.IsValid) { return(View(model)); } var request = new NewAvailabilityRequest { AvailabilityStatus = model.AvailabilityStatus.Value, ClubId = club.Guid, DateFrom = model.DateFrom.Value, DateTo = model.DateTo, Notes = model.Notes, PlayerId = model.PlayerId }; var response = availabilityService.AddAvailability(request); if (!response.RequestIsFulfilled) { foreach (var error in response.Errors) { ModelState.AddModelError("", error); } return(View(model)); } return(RedirectToAction(nameof(Index))); }
public void AddAvailability(NewAvailabilityRequest request) { using (var connection = connectionFactory.Connect()) { string sql = @"INSERT INTO PlayerAvailability(PlayerId, AvailabilityId, DateFrom, DateTo, Notes) SELECT PlayerId, @AvailabilityId, @DateFrom, @DateTo, @Notes FROM Players P INNER JOIN Squads S ON P.SquadId = S.SquadId INNER JOIN Clubs C ON S.ClubId = C.ClubId WHERE P.Guid = @PlayerGuid AND C.Guid = @ClubGuid AND (P.Deleted IS NULL OR P.Deleted = 0)" ; var p = new DynamicParameters(); p.Add("@ClubGuid", request.ClubId.ToString()); p.Add("@PlayerGuid", request.PlayerId.ToString()); p.Add("@AvailabilityId", (short)request.AvailabilityStatus); p.Add("@DateFrom", request.DateFrom); p.Add("@DateTo", request.DateTo); p.Add("@Notes", request.Notes); connection.Open(); connection.Execute(sql, p); } }
public Response AddAvailability(NewAvailabilityRequest request) { var validationResult = newAvailabilityValidator.Validate(request); if (!validationResult.IsValid) { return(Response.CreateResponse(validationResult.Messages)); } var club = clubQuery.GetClub(request.ClubId); if (club == null) { return(Response.CreateResponse(new EntityNotFoundException("The specified club does not exist"))); } var player = memberQuery.GetPlayer(request.PlayerId); if (player == null) { return(Response.CreateResponse(new EntityNotFoundException("The specified player does not exist"))); } var squad = squadQuery.GetSquad(player.SquadId); if (squad == null || squad.ClubId != club.Guid) { return(Response.CreateResponse(new IllegalOperationException("The specified player does not belong to this club"))); } try { repository.AddAvailability(request); return(Response.CreateSuccessResponse()); } catch (Exception ex) { return(Response.CreateResponse(ex)); } }