Пример #1
0
        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)));
        }
Пример #2
0
        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);
            }
        }
Пример #3
0
        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));
            }
        }