public void AddGigAttendance_GigNotExistsWithThisId_BadRequest()
        {
            var attendanceDto = new AttendDto {
                GigId = 1
            };

            var result = _attendanceController.AddGigAttendance(attendanceDto);

            result.Should().BeOfType <BadRequestErrorMessageResult>();
        }
        public void AddGigAttendance_ValidRequest_ShouldReturnOkWithAttendDto()
        {
            var attendanceDto = new AttendDto {
                GigId = 1
            };

            _gigRepository.Setup(g => g.GetGigWithAttendees(1))
            .Returns(new Gig());

            var result = _attendanceController.AddGigAttendance(attendanceDto);

            result.Should().BeOfType <OkResult>();
        }
        public void AddGigAttendance_UserAlreadyAttendGig_BadRequestMessage()
        {
            var attendanceDto = new AttendDto {
                GigId = 1
            };

            _gigRepository.Setup(g => g.GetGigWithAttendees(1))
            .Returns(new Gig {
                Attendences = { new Attendence {
                                    AttendeeId = _userId
                                } }
            });
            var result = _attendanceController.AddGigAttendance(attendanceDto);

            result.Should().BeOfType <BadRequestErrorMessageResult>();
        }
        public IHttpActionResult AddGigAttendance(AttendDto attendDto)
        {
            var gig = _unitOfWork.Gigs.GetGigWithAttendees(attendDto.GigId);

            if (gig == null)
            {
                return(BadRequest($"No gig exists with id {attendDto.GigId}"));
            }
            if (gig.Attendences.Any(a => a.AttendeeId == User.Identity.GetUserId()))
            {
                return(BadRequest("you already attending this gig"));
            }
            Attendence attendance = new Attendence
            {
                AttendeeId = User.Identity.GetUserId(),
                GigId      = attendDto.GigId
            };

            _unitOfWork.Attendences.Add(attendance);
            _unitOfWork.Complete();

            return(Ok());
        }