A community management system for easier governance and administration the common residential areas.
Each endpoint signature can be changed during development, feel free to make new additions or corrections where you think it is necessary.
TIPS: Add "READY" prefix in front of each point that is fully implemented. Add "WORKING" prefix in front of each point that is currently under construction.
I. UserController
- READY! - Register User (POST) - api/account/register -> RequestBody -> {email, password, confirmPassword, firstName, lastName, appartmentNumber, verificationToken}
- Update User by ID - (PUT) - api/user/{id}
- Delete User by ID - (DELETE) - api/user/{id}
- Delete User by Email - (DELETE) - api/user/{email}
- Get User by ID - (GET) - api/user/{id}
- Get User by Apartment Number - (GET) - api/user/{apartment-number}
- Get all Users - (GET) - api/user
- Get all Users without the current logged user - (GET) - api/users-available
- Get all Users matching a given Name - (GET) - api/user/{name}
- Get all Users that have taxes which are not paid - (GET) api/user/taxes-not-paid
- Get all Users that have concrete tax which is not paid (GET) api/user/taxes-not-paid/{tax-id} (Example: Tax - "Elevator electricity and support" -> Ivan, Gosho, Marto, Mariyan have not paid)
II. TaxController - READY Authorization: Administrator, Accountant
- Create Tax - (POST) - api/taxes -> RequestBody TaxRequestTransferMode.cs
- Get Tax by Id - (GET) - api/taxes/get/{id}
- Update Tax by ID - (PUT) - api/taxes/update/{id} -> RequestBody TaxDataTransferMode.cs
- Delete Tax by ID - (DELETE) - api/taxes/delete/{id} marks as deleted
- Remove Tax by ID - (DELETE) - api/taxes/remove/{id} removes entity from DB
- Get all Taxes - (GET) - api/taxes Removed- users should not be able to get all taxes in the system
- Get all Taxes by CommunityId - (GET) - api/taxes/community/{id}
- Get all Taxes which are available for payment by community ID - (GET) - api/taxes/available/{id}
- Get all Taxes which are not-available for payment (their deadline has passed) for current community - (GET) - api/taxes/expired/{id}
- Create payment for a tax or update if same user has already paid - ** (POST) - api/taxes/addpayment/{id}** -> RequestBody TaxPaymentRequestModel.cs
III. ProposalsController
- Create Proposal - (POST) - api/proposals --> RequestBody: ProposalDataTransferModel
- Update Proposal by ID - (PUT) - api/proposals/{id} *-- N/A *
- Delete Proposal by ID - (DELETE) - api/proposals/{id} *-- N/A *
- Delete all Proposals by given AuthorID - (DELETE) - api/proposals/{author-id} *-- N/A *
- Get Proposal by ID - (GET) - api/proposals/{id} *-- N/A *
- Get all Proposals - (GET) -api/proposals
- Get all Proposals by ComunityId - (GET) -api/proposals/getByCommunity/{id}
- Vote for by proposal id - (POST) -api/proposals/VoteUp/{id}
- Vote against by proposal id - (POST) -api/proposals/VoteDown/{id}
- Vote neutral by proposal id - (POST) -api/proposals/VoteNeutral/{id}
- Get all votes for a proposal by proposalId - (Get) -api/proposals/votes/{id}
IV. InvitationController
- READY! - Send Invitation - (POST) - api/invitation -> RequestBody { email, communityName }
- READY! - Get All Invitations - (GET) - api/invitation
V. CommunitiesController
- READY! - Get all Communities - (GET) - api/communities
- READY! - Create new Community with appended administrator - (POST) - api/communities -> RequestBody {check CommunityWithAdminDataTransferModel.cs}