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