GEWIS / sudosos-backend

SudoSOS is a Node.js-based Bar and POS system made for study association GEWIS.
https://sudosos.gewis.nl
GNU Affero General Public License v3.0
3 stars 3 forks source link

Remove createdBy transactions on the user related endpoints. #183

Closed SuperVK closed 1 month ago

SuperVK commented 1 month ago

Remove transactions created by the user from the transactions overview of the user (as well as the financial mutation)

Description

Currently, financial mutations and transactions on /user/{id}/transactions and /user/{id}/financialmutations return also transactions that are created by the user. This PR removes that functionality. The idea is that all the financial mutation (transactions, transfers, and financialmutation) on the /user/* should only return transactions/transfers that mutate the user's balance.

This is also tied into the frontend, where it would only make sense to display only transactions that influence the balance of the user together, serving the purpose of being able to see why you are €-15 when you topped up a week ago. Transactions that are created by the user should be displayed in a separate view because it serves a different purpose (namely, looking back at who you bought for in case someone comes knocking after an event).

Related issues/external references

This also solves (not fixes) the need for #157, because now transactions/transfers from users will actually be treated in a different way than transactions from an endpoint. They will get different views based on their purpose (seeing influences or your balance, or administratively what transactions happened on a PoS or by a user).

Types of changes

github-actions[bot] commented 1 month ago

SudoSOS Coverage Report

Commit: fc3db06 Base: develop@6e8e3dd

Type Base This PR
Total Statements Coverage ?  90.13% (?)
Total Branches Coverage ?  85.73% (?)
Total Functions Coverage ?  91.22% (?)
Total Lines Coverage ?  90.11% (?)
Details (changed files)
FileStatementsBranchesFunctionsLines
Details (all files)
FileStatementsBranchesFunctionsLines
/src/index.ts 82.78% 50% 33.33% 83.22%
/src/authentication/token-handler.ts 100% 100% 100% 100%
/src/controller/authentication-controller.ts 85.88% 94.73% 96% 86.3%
/src/controller/authentication-secure-controller.ts 88.88% 100% 100% 88.88%
/src/controller/balance-controller.ts 78.04% 14.28% 100% 78.04%
/src/controller/banner-controller.ts 82.52% 95.45% 100% 82.52%
/src/controller/base-controller.ts 100% 100% 100% 100%
/src/controller/container-controller.ts 86.27% 90.9% 100% 85.71%
/src/controller/debtor-controller.ts 79.59% 63.63% 100% 84.61%
/src/controller/event-controller.ts 82.66% 94.44% 100% 82.66%
/src/controller/event-shift-controller.ts 75.82% 89.47% 100% 75.82%
/src/controller/invoice-controller.ts 87.01% 92.1% 100% 86.84%
/src/controller/payout-request-controller.ts 81.33% 92.85% 100% 81.33%
/src/controller/point-of-sale-controller.ts 82.53% 86.66% 100% 81.96%
/src/controller/product-category-controller.ts 82.45% 100% 100% 82.45%
/src/controller/product-controller.ts 86.48% 92.5% 100% 86.91%
/src/controller/rbac-controller.ts 88.23% 100% 100% 88.23%
/src/controller/root-controller.ts 82.14% 100% 100% 82.14%
/src/controller/simple-file-controller.ts 11.62% 0% 0% 11.62%
/src/controller/stripe-controller.ts 92.59% 100% 100% 92.59%
/src/controller/stripe-webhook-controller.ts 100% 100% 100% 100%
/src/controller/test-controller.ts 33.33% 100% 0% 33.33%
/src/controller/transaction-controller.ts 85.14% 96.96% 100% 84.69%
/src/controller/transfer-controller.ts 83.92% 94.73% 100% 83.33%
/src/controller/user-controller.ts 82.99% 92.45% 100% 83.05%
/src/controller/vat-group-controller.ts 87.8% 100% 100% 87.8%
/src/controller/voucher-group-controller.ts 79.41% 83.33% 100% 79.41%
/src/controller/request/file-request.ts 0% 0% 0% 0%
/src/controller/request/validators/container-request-spec.ts 100% 100% 100% 100%
/src/controller/request/validators/duration-spec.ts 66.66% 50% 50% 64.28%
/src/controller/request/validators/general-validators.ts 88% 75% 75% 84.21%
/src/controller/request/validators/invoice-request-spec.ts 92.72% 81.81% 100% 97.72%
/src/controller/request/validators/point-of-sale-request-spec.ts 95% 75% 100% 94.11%
/src/controller/request/validators/product-request-spec.ts 90.32% 72.72% 100% 90%
/src/controller/request/validators/string-spec.ts 100% 100% 100% 100%
/src/controller/request/validators/update-local-request-spec.ts 100% 100% 100% 100%
/src/controller/request/validators/update-nfc-request-spec.ts 100% 100% 100% 100%
/src/controller/request/validators/update-pin-request-spec.ts 100% 100% 100% 100%
/src/controller/request/validators/user-request-spec.ts 86.95% 66.66% 85.71% 88.88%
/src/controller/request/validators/validation-errors.ts 88.05% 100% 63.63% 100%
/src/controller/response/dinero.ts 0% 0% 0% 0%
/src/database/database.ts 92.59% 75% 60% 93.5%
/src/database/schema.ts 92% 50% 50% 95.83%
/src/entity/banner.ts 100% 100% 100% 100%
/src/entity/base-entity-without-id.ts 100% 100% 100% 100%
/src/entity/base-entity.ts 100% 100% 100% 100%
/src/entity/vat-group.ts 100% 100% 100% 100%
/src/entity/authenticator/authentication-method.ts 100% 100% 100% 100%
/src/entity/authenticator/ean-authenticator.ts 100% 100% 100% 100%
/src/entity/authenticator/hash-based-authentication-method.ts 100% 100% 100% 100%
/src/entity/authenticator/key-authenticator.ts 100% 100% 100% 100%
/src/entity/authenticator/ldap-authenticator.ts 100% 100% 100% 100%
/src/entity/authenticator/local-authenticator.ts 100% 100% 100% 100%
/src/entity/authenticator/member-authenticator.ts 100% 100% 100% 100%
/src/entity/authenticator/nfc-authenticator.ts 100% 100% 100% 100%
/src/entity/authenticator/pin-authenticator.ts 100% 100% 100% 100%
/src/entity/authenticator/reset-token.ts 100% 100% 100% 100%
/src/entity/container/container-revision.ts 95% 100% 80% 92.85%
/src/entity/container/container.ts 100% 100% 100% 100%
/src/entity/deposit/stripe-deposit-status.ts 100% 100% 100% 100%
/src/entity/deposit/stripe-deposit.ts 100% 100% 100% 100%
/src/entity/event/event-shift-answer.ts 100% 100% 100% 100%
/src/entity/event/event-shift.ts 100% 100% 100% 100%
/src/entity/event/event.ts 100% 100% 100% 100%
/src/entity/file/banner-image.ts 100% 100% 100% 100%
/src/entity/file/base-file.ts 100% 100% 100% 100%
/src/entity/file/invoice-pdf.ts 100% 100% 100% 100%
/src/entity/file/product-image.ts 100% 100% 100% 100%
/src/entity/fine/fine.ts 100% 100% 100% 100%
/src/entity/fine/fineHandoutEvent.ts 100% 100% 100% 100%
/src/entity/fine/userFineGroup.ts 100% 100% 100% 100%
/src/entity/invoices/invoice-entry.ts 100% 100% 100% 100%
/src/entity/invoices/invoice-status.ts 100% 100% 100% 100%
/src/entity/invoices/invoice.ts 100% 100% 100% 100%
/src/entity/point-of-sale/point-of-sale-revision.ts 94.44% 100% 75% 92.3%
/src/entity/point-of-sale/point-of-sale.ts 100% 100% 100% 100%
/src/entity/point-of-sale/product-ordering.ts 100% 100% 100% 100%
/src/entity/product/product-category.ts 100% 100% 100% 100%
/src/entity/product/product-revision.ts 96% 100% 75% 95%
/src/entity/product/product.ts 100% 100% 100% 100%
/src/entity/roles/assigned-role.ts 100% 100% 100% 100%
/src/entity/transactions/balance.ts 100% 100% 100% 100%
/src/entity/transactions/flagged-transaction.ts 100% 100% 100% 100%
/src/entity/transactions/payout-request-status.ts 100% 100% 100% 100%
/src/entity/transactions/payout-request.ts 100% 100% 100% 100%
/src/entity/transactions/sub-transaction-row.ts 100% 100% 100% 100%
/src/entity/transactions/sub-transaction.ts 100% 100% 100% 100%
/src/entity/transactions/transaction.ts 100% 100% 100% 100%
/src/entity/transactions/transfer.ts 100% 100% 100% 100%
/src/entity/transformer/dinero-transformer.ts 100% 100% 100% 100%
/src/entity/user/invoice-user.ts 100% 100% 100% 100%
/src/entity/user/local-user.ts 100% 100% 100% 100%
/src/entity/user/user-voucher-group.ts 100% 100% 100% 100%
/src/entity/user/user.ts 97.72% 75% 100% 100%
/src/entity/user/voucher-group.ts 100% 100% 100% 100%
/src/files/initialize.ts 100% 50% 100% 100%
/src/files/response.ts 28.57% 100% 0% 28.57%
/src/files/storage/disk-storage.ts 82.14% 83.33% 60% 82.14%
/src/files/storage/file-storage.ts 100% 100% 100% 100%
/src/files/storage/index.ts 100% 100% 50% 100%
/src/files/storage/locations.ts 100% 100% 100% 100%
/src/gewis/gewis.ts 72.13% 44.44% 38.09% 75.86%
/src/gewis/controller/gewis-authentication-controller.ts 87.03% 70% 100% 87.03%
/src/gewis/database/seed.ts 100% 100% 100% 100%
/src/gewis/entity/gewis-user.ts 100% 100% 100% 100%
/src/helpers/ad.ts 90.9% 100% 100% 90.9%
/src/helpers/bindings.ts 100% 100% 100% 100%
/src/helpers/database.ts 100% 100% 100% 100%
/src/helpers/hash.ts 100% 100% 100% 100%
/src/helpers/ordering.ts 90.9% 83.33% 100% 90%
/src/helpers/pagination.ts 100% 85.71% 100% 100%
/src/helpers/query-filter.ts 100% 100% 100% 100%
/src/helpers/raw-body.ts 100% 100% 100% 100%
/src/helpers/revision-to-response.ts 91.3% 66.66% 88.88% 95.23%
/src/helpers/specification-validation.ts 97.29% 100% 88.88% 96.87%
/src/helpers/timestamps.ts 70% 66.66% 60% 70%
/src/helpers/token-helper.ts 100% 100% 100% 100%
/src/helpers/transaction-mapper.ts 95.89% 100% 88% 95.58%
/src/helpers/validators.ts 94% 90.27% 100% 97.4%
/src/mailer/index.ts 100% 100% 100% 100%
/src/mailer/mailer.ts 100% 100% 100% 100%
/src/mailer/transporter.ts 100% 100% 100% 100%
/src/mailer/templates/forgot-event-planning.ts 76.92% 100% 57.14% 76.92%
/src/mailer/templates/hello-world.ts 100% 100% 100% 100%
/src/mailer/templates/index.ts 100% 100% 100% 100%
/src/mailer/templates/mail-content.ts 100% 100% 100% 100%
/src/mailer/templates/mail-template.ts 100% 100% 100% 100%
/src/mailer/templates/password-reset.ts 36.84% 0% 0% 36.84%
/src/mailer/templates/signature.ts 100% 100% 100% 100%
/src/mailer/templates/user-debt-notification.ts 82.35% 50% 57.14% 82.35%
/src/mailer/templates/user-got-fined.ts 78.57% 100% 57.14% 78.57%
/src/mailer/templates/user-will-get-fined.ts 71.42% 50% 60% 71.42%
/src/mailer/templates/welcome-to-sudosos.ts 82.35% 50% 57.14% 82.35%
/src/mailer/templates/welcome-with-reset.ts 82.35% 50% 57.14% 82.35%
/src/middleware/policy-middleware.ts 81.81% 100% 100% 81.81%
/src/middleware/request-validator-middleware.ts 92.3% 80% 100% 100%
/src/middleware/restriction-middleware.ts 93.75% 92.85% 75% 100%
/src/middleware/token-middleware.ts 100% 100% 100% 100%
/src/migrations/1707251162194-invoice-refactor.ts 100% 50% 100% 100%
/src/rbac/role-manager.ts 95% 87.5% 100% 98.03%
/src/service/ad-service.ts 85.86% 52.94% 90% 89.04%
/src/service/authentication-service.ts 93.1% 83.78% 100% 92.66%
/src/service/balance-service.ts 98.16% 91.78% 100% 97.95%
/src/service/banner-service.ts 95.23% 86.95% 100% 95.12%
/src/service/container-service.ts 99.03% 89.74% 100% 100%
/src/service/debtor-service.ts 97.95% 85.71% 100% 100%
/src/service/event-service.ts 100% 99.06% 100% 100%
/src/service/file-service.ts 97.1% 79.16% 100% 97.05%
/src/service/invoice-pdf-service.ts 98.27% 89.47% 100% 100%
/src/service/invoice-service.ts 95.12% 83.95% 95.45% 97.25%
/src/service/payout-request-service.ts 100% 96.15% 100% 100%
/src/service/point-of-sale-service.ts 95% 76.19% 92.85% 98.18%
/src/service/product-category-service.ts 100% 100% 100% 100%
/src/service/product-service.ts 94.18% 65.11% 95% 95%
/src/service/rbac-service.ts 100% 100% 100% 100%
/src/service/stripe-service.ts 98.41% 100% 100% 98.3%
/src/service/transaction-service.ts 96.96% 86.53% 100% 96.68%
/src/service/transfer-service.ts 100% 96.15% 100% 100%
/src/service/user-service.ts 95.45% 74.46% 90% 97.5%
/src/service/vat-group-service.ts 98.64% 76.19% 92.85% 98.43%
/src/service/voucher-group-service.ts 100% 93.1% 100% 100%
/src/start/swagger.ts 82.5% 58.82% 66.66% 82.05%
/src/subscriber/index.ts 100% 100% 100% 100%
/src/subscriber/transaction-subscriber.ts 91.17% 78.57% 66.66% 92.85%
/src/subscriber/transfer-subscriber.ts 100% 87.5% 100% 100%
JustSamuel commented 1 month ago

And you suggest instead using a GET transactions to find which transactions a user created that were not for him? iirc you cant filter the user out so that would have duplicates?

Or do you think its not needed anymore that a user can see which transactions were created in his name for someone else?

SuperVK commented 1 month ago

Exactly this point was a problem in my head as well. I do think being to see which transactions you created is needed. I think a filter per POS will solve, because somebody from the BAC or from BOOM can filter on their respective POS and mostly see transactions made for others, rarely for themselves. However if you filter on "BAC Verkoop" you will still a lot of yourself, so i am not sure about that.

JustSamuel commented 1 month ago

You can merge it imho, but if you need a follow up, please create an issue now.

github-actions[bot] commented 2 weeks ago

:tada: This PR is included in version 0.1.0 :tada:

The release is available on GitHub release

Your semantic-release bot :package::rocket: