hs-office-coopshares: use only membership uuid in filter
| | |
| | | final String currentUser, |
| | | final String assumedRoles, |
| | | final UUID membershipUuid, |
| | | Integer memberNumber, // TODO: remove |
| | | final @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate fromValueDate, |
| | | final @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate toValueDate) { |
| | | context.define(currentUser, assumedRoles); |
| | | |
| | | |
| | | final var entities = coopSharesTransactionRepo.findCoopSharesTransactionByOptionalMembershipUuidAndDateRange( |
| | | memberNumber, |
| | | membershipUuid, |
| | | fromValueDate, |
| | | toValueDate); |
| | | |
| | |
| | | |
| | | @Query(""" |
| | | SELECT st FROM HsOfficeCoopSharesTransactionEntity st |
| | | WHERE (:memberNumber IS NULL OR st.membership.memberNumber = :memberNumber) |
| | | WHERE ( CAST(:membershipUuid AS org.hibernate.type.UUIDCharType) IS NULL OR st.membership.uuid = :membershipUuid) |
| | | AND ( CAST(:fromValueDate AS java.time.LocalDate) IS NULL OR (st.valueDate >= :fromValueDate)) |
| | | AND ( CAST(:toValueDate AS java.time.LocalDate)IS NULL OR (st.valueDate <= :toValueDate)) |
| | | ORDER BY st.membership.memberNumber, st.valueDate |
| | | """) |
| | | List<HsOfficeCoopSharesTransactionEntity> findCoopSharesTransactionByOptionalMembershipUuidAndDateRange( |
| | | Integer memberNumber, LocalDate fromValueDate, LocalDate toValueDate); |
| | | UUID membershipUuid, LocalDate fromValueDate, LocalDate toValueDate); |
| | | |
| | | HsOfficeCoopSharesTransactionEntity save(final HsOfficeCoopSharesTransactionEntity entity); |
| | | |
| | |
| | | type: string |
| | | format: uuid |
| | | description: Optional UUID of the related membership. |
| | | - name: memberNumber |
| | | in: query |
| | | required: false |
| | | schema: |
| | | type: integer |
| | | description: Optional member number of the related membership. |
| | | - name: fromValueDate |
| | | in: query |
| | | required: false |
| | |
| | | @Test |
| | | void globalAdmin_canFindCoopSharesTransactionsByMemberNumber() { |
| | | |
| | | context.define("superuser-alex@hostsharing.net"); |
| | | final var givenMembership = membershipRepo.findMembershipsByOptionalPartnerUuidAndOptionalMemberNumber(null, 10002) |
| | | .get(0); |
| | | |
| | | RestAssured // @formatter:off |
| | | .given() |
| | | .header("current-user", "superuser-alex@hostsharing.net") |
| | | .port(port) |
| | | .when() |
| | | .get("http://localhost/api/hs/office/coopsharestransactions?memberNumber=10002") |
| | | .get("http://localhost/api/hs/office/coopsharestransactions?membershipUuid="+givenMembership.getUuid()) |
| | | .then().log().all().assertThat() |
| | | .statusCode(200) |
| | | .contentType("application/json") |
| | |
| | | @Test |
| | | void globalAdmin_canFindCoopSharesTransactionsByMemberNumberAndDateRange() { |
| | | |
| | | context.define("superuser-alex@hostsharing.net"); |
| | | final var givenMembership = membershipRepo.findMembershipsByOptionalPartnerUuidAndOptionalMemberNumber(null, 10002) |
| | | .get(0); |
| | | |
| | | RestAssured // @formatter:off |
| | | .given() |
| | | .given() |
| | | .header("current-user", "superuser-alex@hostsharing.net") |
| | | .port(port) |
| | | .when() |
| | | .get("http://localhost/api/hs/office/coopsharestransactions?memberNumber=10002&fromValueDate=2020-01-01&toValueDate=2021-12-31") |
| | | .then().log().all().assertThat() |
| | | .when() |
| | | .get("http://localhost/api/hs/office/coopsharestransactions?membershipUuid=" |
| | | + givenMembership.getUuid() + "&fromValueDate=2020-01-01&toValueDate=2021-12-31") |
| | | .then().log().all().assertThat() |
| | | .statusCode(200) |
| | | .contentType("application/json") |
| | | .body("", lenientlyEquals(""" |
| | |
| | | class FindAllCoopSharesTransactions { |
| | | |
| | | @Test |
| | | public void globalAdmin_withoutAssumedRole_canViewAllCoopSharesTransactions() { |
| | | public void globalAdmin_anViewAllCoopSharesTransactions() { |
| | | // given |
| | | context("superuser-alex@hostsharing.net"); |
| | | |
| | |
| | | } |
| | | |
| | | @Test |
| | | public void globalAdmin_canViewCoopSharesTransactions_filteredByMembershipUuid() { |
| | | // given |
| | | context("superuser-alex@hostsharing.net"); |
| | | final var givenMembership = membershipRepo.findMembershipsByOptionalPartnerUuidAndOptionalMemberNumber(null, 10002).get(0); |
| | | |
| | | // when |
| | | final var result = coopSharesTransactionRepo.findCoopSharesTransactionByOptionalMembershipUuidAndDateRange( |
| | | givenMembership.getUuid(), |
| | | null, |
| | | null); |
| | | |
| | | // then |
| | | allTheseCoopSharesTransactionsAreReturned( |
| | | result, |
| | | "CoopShareTransaction(10002, 2010-03-15, SUBSCRIPTION, 2, ref 10002-1)", |
| | | "CoopShareTransaction(10002, 2021-09-01, SUBSCRIPTION, 24, ref 10002-2)", |
| | | "CoopShareTransaction(10002, 2022-10-20, CANCELLATION, 12, ref 10002-3)"); |
| | | } |
| | | |
| | | @Test |
| | | public void globalAdmin_canViewCoopSharesTransactions_filteredByMembershipUuidAndValueDateRange() { |
| | | // given |
| | | context("superuser-alex@hostsharing.net"); |
| | | final var givenMembership = membershipRepo.findMembershipsByOptionalPartnerUuidAndOptionalMemberNumber(null, 10002).get(0); |
| | | |
| | | // when |
| | | final var result = coopSharesTransactionRepo.findCoopSharesTransactionByOptionalMembershipUuidAndDateRange( |
| | | givenMembership.getUuid(), |
| | | LocalDate.parse("2021-09-01"), |
| | | LocalDate.parse("2021-09-01")); |
| | | |
| | | // then |
| | | allTheseCoopSharesTransactionsAreReturned( |
| | | result, |
| | | "CoopShareTransaction(10002, 2021-09-01, SUBSCRIPTION, 24, ref 10002-2)"); |
| | | } |
| | | |
| | | @Test |
| | | public void normalUser_canViewOnlyRelatedCoopSharesTransactions() { |
| | | // given: |
| | | context("superuser-alex@hostsharing.net", "hs_office_partner#FirstGmbH-firstcontact.admin"); |