Esempio n. 1
0
        ///<inheritdoc/>
        public async Task EditClubReportAsync(User user, ClubAnnualReportDTO clubAnnualReportDto)
        {
            var clubAnnualReport = await _repositoryWrapper.ClubAnnualReports.GetFirstOrDefaultAsync(
                predicate : a => a.ClubId == clubAnnualReportDto.ClubId &&
                a.Status == AnnualReportStatus.Unconfirmed);

            if (clubAnnualReportDto.Status != AnnualReportStatus.Unconfirmed)
            {
                throw new InvalidOperationException();
            }
            if (!await _clubAccessService.HasAccessAsync(user, clubAnnualReport.ClubId))
            {
                throw new UnauthorizedAccessException();
            }
            clubAnnualReport = _mapper.Map <ClubAnnualReportDTO, ClubAnnualReport>(clubAnnualReportDto);
            _repositoryWrapper.ClubAnnualReports.Update(clubAnnualReport);
            await _repositoryWrapper.SaveAsync();
        }
        public async Task CreateAsync(ClaimsPrincipal claimsPrincipal, ClubAnnualReportDTO clubAnnualReportDTO)
        {
            var club = await _repositoryWrapper.Club.GetFirstOrDefaultAsync(
                predicate : a => a.ID == clubAnnualReportDTO.Club.ID);

            if (await CheckCreated(club.ID))
            {
                throw new InvalidOperationException();
            }
            if (!await _clubAccessService.HasAccessAsync(claimsPrincipal, club.ID))
            {
                throw new UnauthorizedAccessException();
            }
            var clubAnnualReport = _mapper.Map <ClubAnnualReportDTO, ClubAnnualReport>(clubAnnualReportDTO);

            clubAnnualReport.Date = DateTime.Now;
            await _repositoryWrapper.ClubAnnualReports.CreateAsync(clubAnnualReport);

            await _repositoryWrapper.SaveAsync();
        }
        public async Task EditClubAnnualReport_Invalid_NullReferenceFoundException_Test()
        {
            // Arrange
            _clubAnnualReportService.Setup(a => a.EditClubReportAsync(It.IsAny <User>(), It.IsAny <ClubAnnualReportDTO>()))
            .Throws(new NullReferenceException());

            AnnualReportController annualController = CreateAnnualReportController;
            ClubAnnualReportDTO    annualReport     = new ClubAnnualReportDTO();

            // Act
            var expected = StatusCodes.Status404NotFound;
            var result   = await annualController.EditClubAnnualReport(annualReport);

            var actual = (result as StatusCodeResult).StatusCode;

            // Assert
            Assert.AreEqual(expected, actual);
            Assert.NotNull(result);
            Assert.IsInstanceOf <StatusCodeResult>(result);
        }
        public async Task <IActionResult> EditClubAnnualReport(ClubAnnualReportDTO clubAnnualReport)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    await _clubAnnualReportService.EditClubReportAsync(await _userManager.GetUserAsync(User), clubAnnualReport);

                    return(Ok());
                }
                catch (NullReferenceException)
                {
                    return(StatusCode(StatusCodes.Status404NotFound));
                }
                catch (UnauthorizedAccessException)
                {
                    return(StatusCode(StatusCodes.Status403Forbidden));
                }
            }
            return(BadRequest(ModelState));
        }
        public async Task EditClubAnnualReport_Invalid_UnauthorisedAccessException_Test()
        {
            // Arrange
            _clubAnnualReportService.Setup(a => a.EditClubReportAsync(It.IsAny <User>(), It.IsAny <ClubAnnualReportDTO>()))
            .Throws(new UnauthorizedAccessException());
            _userManager.Setup(a => a.GetUserAsync(It.IsAny <ClaimsPrincipal>())).ReturnsAsync(new User());

            AnnualReportController annualController = CreateAnnualReportController;
            ClubAnnualReportDTO    annualReport     = new ClubAnnualReportDTO();

            // Act
            var expected = StatusCodes.Status403Forbidden;
            var result   = await annualController.EditClubAnnualReport(annualReport);

            var actual = (result as StatusCodeResult).StatusCode;

            // Assert
            Assert.NotNull(result);
            Assert.AreEqual(expected, actual);
            Assert.IsInstanceOf <StatusCodeResult>(result);
        }
        public async Task EditClubAnnualReport_Valid_Test()
        {
            // Arrange
            _clubAnnualReportService.Setup(a => a.EditClubReportAsync(It.IsAny <User>(), It.IsAny <ClubAnnualReportDTO>()));
            _clubAnnualReportService.Setup(a => a.GetByIdAsync(It.IsAny <User>(), It.IsAny <int>()))
            .ReturnsAsync(new ClubAnnualReportDTO());

            AnnualReportController annualController = CreateAnnualReportController;
            ClubAnnualReportDTO    annualReport     = new ClubAnnualReportDTO();

            // Act
            var expected = StatusCodes.Status200OK;
            var result   = await annualController.EditClubAnnualReport(annualReport);

            var actual = (result as StatusCodeResult).StatusCode;

            // Assert
            Assert.NotNull(result);
            Assert.AreEqual(actual, expected);
            Assert.IsInstanceOf <StatusCodeResult>(result);
        }
Esempio n. 7
0
        public async Task CreateAsync(ClaimsPrincipal claimsPrincipal, ClubAnnualReportDTO clubAnnualReportDTO)
        {
            var club = await _repositoryWrapper.Club.GetFirstOrDefaultAsync(
                predicate : a => a.ID == clubAnnualReportDTO.ClubId,
                include : source => source
                .Include(a => a.ClubMembers)
                .ThenInclude(ac => ac.User)
                .ThenInclude(af => af.UserPlastDegrees)
                .ThenInclude(ad => ad.PlastDegree)
                .Include(a => a.ClubAdministration)
                .ThenInclude(ap => ap.User)
                .ThenInclude(af => af.UserPlastDegrees)
                .ThenInclude(ad => ad.PlastDegree)

                );

            if (await CheckCreated(club.ID))
            {
                throw new InvalidOperationException();
            }
            if (!await _clubAccessService.HasAccessAsync(claimsPrincipal, club.ID))
            {
                throw new UnauthorizedAccessException();
            }

            StringBuilder clubMembers = new StringBuilder();

            foreach (var item in club.ClubMembers)
            {
                var userPlastDegrees = await _repositoryWrapper.UserPlastDegrees.GetAllAsync(upd => upd.UserId == item.UserId, include : pd => pd.Include(d => d.PlastDegree));

                var degree     = userPlastDegrees.FirstOrDefault(user => user.UserId == item.UserId);
                var cityMember = await _repositoryWrapper.CityMembers.GetFirstOrDefaultAsync(predicate : a => a.UserId == item.UserId, include : source => source.Include(ar => ar.City));

                clubMembers = clubMembers.Append(new StringBuilder(
                                                     $"{degree.PlastDegree.Name}, {item.User.FirstName} {item.User.LastName}, {cityMember.City.Name};").Append("\n"));
            }

            clubAnnualReportDTO.ClubMembersSummary = clubMembers.ToString();

            StringBuilder clubAdmins = new StringBuilder();

            foreach (var item in club.ClubAdministration)
            {
                var userPlastDegrees = await _repositoryWrapper.UserPlastDegrees.GetAllAsync(upd => upd.UserId == item.UserId, include : pd => pd.Include(d => d.PlastDegree));

                var degree = userPlastDegrees.FirstOrDefault(user => user.UserId == item.UserId);
                if (item.AdminTypeId == 69)
                {
                    clubAdmins = clubAdmins.Append(new StringBuilder(
                                                       $"{degree.PlastDegree.Name}, {item.User.FirstName} {item.User.LastName}, {item.User.Email}, {item.User.PhoneNumber};").Append("\n"));
                }
            }

            clubAnnualReportDTO.ClubAdminContacts = clubAdmins.ToString();
            clubAnnualReportDTO.ClubName          = club.Name;
            var clubAnnualReport = _mapper.Map <ClubAnnualReportDTO, ClubAnnualReport>(clubAnnualReportDTO);

            await _repositoryWrapper.ClubAnnualReports.CreateAsync(clubAnnualReport);

            await _repositoryWrapper.SaveAsync();
        }