Coder Social home page Coder Social logo

roijs / reserbiz Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 62.4 MB

This is a mobile android application that records transactions related with rental of units. This tracks the list of tenants and the contracts associated with tenants. This also automatically generates statement of accounts and has a feature to notify the statements of accounts to the tenants via SMS or email.

C# 33.38% JavaScript 1.31% TypeScript 41.14% HTML 22.17% SCSS 1.85% Dockerfile 0.05% TSQL 0.09%

reserbiz's People

Contributors

dependabot[bot] avatar roam915 avatar roijs avatar

Stargazers

 avatar

Watchers

 avatar

reserbiz's Issues

Make the page scrollable while the keyboard is active

This is general user interface issue on the application which makes the application somewhat user-unfriendly when filling out any forms on the app while the keyboard is active. The page is not scrollable which makes it a bit harder for the user to navigate to the next fields while the keyboard is active. Now, the goal is to find a way to eliminate this issue. The user should be available to navigate to next fields that is not already visible on the view while the keyboard is active.

Upgrade Nativescript 7.0 to 8.0 (including other dependencies)

Recently, the nativescript framework has been upgraded to version 8.0 https://blog.nativescript.org/nativescript-8-announcement/.

I think we have to make the necessary upgrade on the app as well but we will wait until the latest version will become stable (in couple of months maybe). I know nativescript community releases major version every 6 months, not really sure though, I need to research more about this.

I suggest to do more research how to upgrade the nativescript version to the latest one used by the app and also don't forget to check other dependencies' version.

Development of Tenants Portal Account

Today, Reserbiz application is supposed to be used by an Administrator. This issue will introduce a new feature that will allow tenants to have their account credentials and be able to access Reserbiz. Tenants will obviously have limited access on the application. They can only view their information and assigned active contracts, and anything that only tenants can have an access to.

TODO:

Send push notification for every new statement of account generated via the auto generated feature

On issue #34, a pre-study of how to implement push notification for android has been done. Now, this issue dedicates for the actual implementation of the push notification feature to Reserbiz Mobile application. Based on the pre-study, there is a bit of problem because the plugin does not support click event on the received notification at the time of this writing. So the goal of this issue is to at least implement the notification. The user should at least receive push notification (mobile app is in background) for each and every new statement of account generated.

TODO:

Part 1 - Set up firebase plugin

Part 2 - Modifications on Generating Statement of account

  • Introduce new service called "FireBasePushNotificationService". This service will be responsible for sending notification.
  • Use this newly created service on AccountStatementRepository and called it every after new statement of account has been generated.
  • Introduce new angular service named push-notification.service.ts.
  • Use this newly added service inside auth.component and app.component
  • Test and verify

Introduction of Utility due date field

Currently, due date for electric and water bill is always the same with the statement of account which turned out to be not true in all cases because the contract can always start anytime of the month but not with the electric and/or water bills because this usually given end of the month.

This issue will introduced new field on statement of account details page where user can select the due date for the utility bills. Setting the date automatically cannot be done since the date where utility bills are given is unpredictable from within the app so we will make the user pick the date themselves.

TODO:

  • Introduce new field DueDate on AccountStatement, AccountStatementWaterAndElectricBillUpdateDto classes
  • Update AccountStatementService.updateWaterAndElectricBillAmount() function to add dueDate parameter.
  • Update both contract-account-statement-information.component.tns.ts and contract-account-statement-information.component.tns.html to introduce new due date field.

Make the switch state color component follow the default theme of rad data form for consistency

Currently on Adding new statement of account dialog the switch color is following the Nativescript theme but most of the switch control on the other pages are following the default theme offered by RadDataForm. For consistency, we will follow the theme from Raddataform for now. As of now, RadDataForm does not offer a way to customize the state color for the switch control. In the future, we will find a way to override the switch color them natively (using Java code).

Example switch control on Terms Details page:
image

Switch control on Add Statement of account dialog:
image

Contract Details Page: Introduce settings to control how the paid status is validated for statement of accounts

Overview

Currently, the statement of accounts is marked as paid if the total amount for statement of accounts is already paid by the tenant. This total amount comprises the rental, utility bills, miscellaneous and penalties and all of these must be paid before the statement of account is considered as paid. This functionality could be a problem in the future because we might never know how the user would want the calculation for paid status would be. With this, I decided to introduce settings so user can customize in someway how the statement of account will be considered as paid.

On Contract Details page, we introduced two new section, (1) General Information and (2) Mark Account Statement as Paid sections.

General Information Section will have the current available fields on the contract details page.

TODO

For Mark Account Statement as Paid section on the other hand, introduce the following new settings:

  • Check Rental Amount
  • Check Utility Bills
  • Check Miscellaneous Fees
  • Check Penalties
  • Update the logic which identifies if the statement of account is paid or unpaid
  • Display the breakdown payment on statement of accounts details page
  • Update manual adding of statement of account when Mark as Paid setting is true
  • Update Dataseeding of statement of accounts payment details

Update also the following:

  • Unit Test
  • Online Documentation

Introduced Email address field on Profile settings

Currently, we already have email address field on Accounts table and this was introduced while working on automating the process of creating demo/customer database. This time we will introduce this field on profile page on the application so user can manage it. This issue will also serve as pre-requisite before implementing issue #37 .

Statement of account Details Page: Hide Utility Bills details if both Electric and Water Bill is set to be included on the Rate

On statement of account details, user can specify the amount for electric and water bills. This is possible whether the electric or water bill amount is excluded from the rate or not, which is configured on terms details.

I guess, its better to hide these fields if the electric or water bill amount is already included on the rate.

The goal of this issue is to hide the electric or water bill amount fields if they are already included on the rate.

TODO:

  • Hide electric bill amount field if it is set to be included on rental rate
  • Hide water bill amount field if it is set to be included on rental rate.
  • If both are set to be included on the rental rate then hide the entire section.
  • Update the format when sending statement of accounts via email and SMS.
  • Update Online Documentation

Unit List Page: Introduce advanced filter settings

On the unit list page, add new advanced filter settings dialog.

Inside the dialog, add status field and unit type settings.

  • The status settings will have two options, "Occupied" and "Available".
  • The Unit Type settings will be a dropdown and will contains the list of available active unit types.
  • Update unit test
  • Update online documentation

Register Payment: Improvement on pre-filling values for amount if the Amount For Deposit setting is activated.

Overview

Currently, the system has the functionality to pre-fill amount field when registering payment. The amount field is pre-fill when the setting Amount From Deposit setting is activated. The pre-filled amount is based on the contract rate or the remaining unused deposited amount for the contract. If the contract rate is less than the remaining deposited amount then the contract rate will be the prefilled amount, otherwise the remaining deposited amount is used.

Now on issue #66, we introduced a new setting on the payment register dialog that identifies the Payment For Type (Rental, Electric Bill, Water Bill, Miscellaneous Fees or Penalty) for the payment. For a better user experience, we also make the pre-filled value be based on the selected Payment For type setting. Example, if the setting is "Electric Bill" then the suggested pre-filled value will be the Electric bill amount of the current statement of account. The same concept for other Payment For Type.

TODO

  • Make the suggested prefill amount value based on the Payment For Type settings.
  • Update the Unit Test
  • Update the Online Documentation

Use Host Server Email address for notifications

On the hosting server, I prepared new email addresses and these are the following:

Now, the goal is to use these following email address on features that sends email notification on the application/infrastructure.

TODO:

Introduce client type

Before implementing issue #19 , we must introduced the concept of "Client Type" (demo or regular) to distinguish the type of database we have. "Demo" databases will be used for purpose of doing demo of the app for the prospect clients while "Regular" database will be the official/actual customer database.

TODO:

  • Introduced "ClientType" column Client.cs
  • Performed database migration
  • Test and verify

Specify miscellaneous due date

On issue #51, we started introducing a separate due date field for utility bills (electric and water bills). This means we have now two separate due dates per statement of account, one for the rental which is based on the contract terms and one for the utility bills.

We have to introduce new setting to specify from which of these two due dates do the miscellaneous will going to follow.

We are going to introduce this new setting on terms details, call it "Miscellaneous Due Date" with two options: "Same with Utility bill Due Date" or "Same with Rental Due Date".

If option "Same with Utility bill Due Date" is selected, on statement of account details page, group the miscellaneous details with the utility bills details.

If option "Same with Rental Due Date" is selected, group the miscellaneous details with the rental information. And also, when generating penalties, make sure to add the miscellaneous total amount with the rental amount when checking if the statement of account is already fully paid before generating penalty details.

Don't forget to update unit tests and the online documentation.

Create SOP Wiki Page for publishing the application

To have an organize way of publishing, we will going to create a Wiki page for the following:

Introduce Notifications page

On issue #34 and #35 we have implemented the push notification feature on Reserbiz. This feature is only used whenever there is a new statement of account generated. There is something that we can enhanced on this feature and this is to persist these notifications so user can see the list of notifications (read and unread notifications).

This issue is focus on introducing new page on the app where list of notifications are shown.

TODO:

  • Introduce new table and back-end code that will manage the list of notifications.
  • Update the logic when auto generating statement of accounts. Add logic that will store information related to the notifications. Details like, Message, date and time, account id, read or unread status. and the notification path.
  • Introduce new notifications page. This page contains the list of notifications.
  • Sort the list based on date and time descending order.
  • Introduced advanced filter dialog. Add date and time and also sort order filter settings.
  • When clicking an item, make sure to redirect the user to the page corresponds to the notifications and automatically marked the notification item as read.
  • Test and verify.
  • Make sure to update the Unit test if there are things that needs to be updated
  • Make sure to add this new feature on Reserbiz Online Documentation.

Development Environment:
Branch: Features/95-Introduce-Notifications-page
Database: db_a727c0_demo52

Move the deleting of expired refresh tokens on hangfire scheduled tasks

Currently, we store refresh tokens and we check and delete expired refresh tokens when logging in to the app which sometimes make the login performance affected. So in order to reduce the processing time when logging in, I decided to move the process of deleting expired refresh tokens on hangfire schedule tasks, preferably run this tasks one a week for now. This might change later on.

Make the database server, username and password dynamic on database connection string template

I just found out the the database server offered by the hosting server is changing and this causes a problem on the connection string template declared on the app settings file on the web api as it statically provide the server, username and password for the connection string except for the database name which is dynamic.

To resolve this issue, we will make the server, username and password dynamic as well.

TODO:

  • Introduced new columns DBServer, DBUsername and DBPassword on table Clients.
  • Introduce new settings on the appSettings.Development.json and appSettings.Production.json which contains the default server, username and password that the system will use when registering new database.
  • Update the connection string template on the appSettings.json
  • Modify Startup.cs. Provide the server, username and password dynamically on the current connection string for every request.
  • Modify the function that registers client and demo databases
  • Test and verify

Pre-study on publishing the Web API to Smarterasp.net hosting provide

This issue is focus on doing pre-study how to publish the WEB API to smarterasp.net hosting provider. https://www.smarterasp.net/

I have done few research about this. I was able to ask their support about the following points below:

  • Websocket support
    ** According to their support their servers support Websocket by default.
  • Backup of databases
    ** They run database backups every Tuesday, Friday and Sunday for MSSQL
    ** They have added that they will provide the database backup whenever their customer send them a support ticket about it.

Identify the problems building the Reserbiz on IOS

This issue will focused on identifying and listing down all the problems that the Reserbiz application encounters when building and running the application on IOS. Make a list of this problems and proposed possible solutions.

Introduce Tenant Payments Approval Process

This issue will focus on introducing the process of approving payments. Currently, only the administrator are allowed to register payments and these payments are automatically approved. With the introduction of Tenants portal, tenants are allowed to register payments but they are still subject for the approval of the admin.

Specifications

Modifications on Payment Details Page

  • Introduce new field payment status (For Approval, Approved or Declined)
  • If the payment is registered by the admin, it will automatically set to Approved.
  • If the payment if registered by the tenant, marked it as for approval and then send a notification to the admin that the tenant registered a payment.
  • Make sure that any total amount displayed on the page are approved.

Modifications on Statement of accounts details page

  • On TOTAL AMOUNT section, make sure to only display approved payments.
  • On the CASH RECEIVED section, only include approved payments.

Modifications on Contract Details (Footer Section)

  • On Total Paid section, only show approved payments amount.
  • On Paid Amount from Deposit, only show approved payments amount.

Modifications on Dashboard Page

  • On Account Statements Amount Summary Widget particularly on Total Paid Amount, make sure to only display approved payments.

General Modifications

  • Update the Online Documentation.

Automate Synchronizing multiple customer databases

This issue is to improve the process of updating multiple client databases with the latest updates. The goal of this issue is to find an easy and efficient way of syncing multiple customer databases whenever there are new updates. On issue #19, I have mentioned the StackOverflow discussion I have found to make this process possible.

Automate the process of registering new client database and data seeding

The goal of this issue is to automate the process of registering new client database with default data inside the database for the purpose of demo and actual client sign up database.

I have done research about how this can be done on EF Core. I found this stackoverflow discussion https://stackoverflow.com/questions/50325856/dotnet-ef-database-update-programatically-with-entity-framework-core

Below is the expected process flow of registering new database. For now, there is no interface where user can directly create/signup demo or official database. This will also serve as preparation for future planning about the idea of having user interface where user can sign up themselves.

Process Flow:

  • Save new client information
  • Set up new database
  • Populate the database with default demo data -> for demo
  • Populate only with default user account -> sign up
  • Send email to [email protected] for notification
  • Test and verify

Register Payments: Introduce payment type setting

Overview

The idea of this issue to introduce something that will identity the payment type of a payment details. This will help to categorize the payment for statement of accounts.

TODO

  • On the new payment dialog, add new setting called Payment Type. This settings will contain the following options: Rental, Electric Bill, Water Bill, Miscellaneous and Penalty.
  • Update the Online Documentation

Payment List Page: Introduce advanced filter option

Overview

On Payments List page, introduce new advanced filter dialog options. This dialog will contain the filter settings.

TODO

  • Move the sort order settings inside the dialog.
  • Introduce Payment Type settings. This will contain the payment type options.

Don't forget to update also the following:

  • Unit Tests
  • Online Documentation

Implement Forgot Password Feature

After implementing issue #38 , we will address this issue. We will make it as simple as possible for now. For now, we won't do any email validation. What we will do is that, we introduce new page for requesting password change. we will require the user to enter either his/her email address or username if it exists on database, if so, proceed to another page where the user can start changing his/her password. Present two fields, new password and confirm new password. After changing the password, redirect the user back to the login page. Make sure to do thorough testing for this.

Payment Details: Introduce amount validation allowed maximum limit

When registering payments, there is no validation if the payment already exceeds with the expected amount.

On issue #67, we introduce checking of payments per category (Rental, Utility, Miscellaneous and Penalty) if they are already paid, the exact checking is greater than or equal to the expected amount. This type of checking allows the user to register payments which is more than what is expected and this may cause any floating amount since any extra paid amount for a particular category cannot be used as offset to other category, validation is done separately.

The goal of this issue is to introduce validation to make sure that the payment registration will not exceed to the expected amount.

TODO:

  • On register payment dialog, add a logic to validate the input amount if it exceeds with the expected amount based on the payment for type setting when tapping the save button. If the total amount paid plus the inputted amount already exceeds against the expected amount then show an error dialog saying "The total amount already exceeds with the expected amount for which is ". eg "The total amount already exceeds with the expected amount for Rental which is 9000.".
  • Update the online documentation

Improve Sending of Statement of accounts feature

The goal of this issue is to make sure that if the rental is already fully paid then we don't need to include this information when sending statement of account information to tenants.

On issue #52, we introduced new setting to determine which due date the miscellaneous bills will follow, either the due date with the utility bills or rental bills. If the selected option is same with due date of rental bills then we include this amount when checking if the rental bills is fully paid, If so, then we don't need to include these information when sending statement of account to tenants.

Archive Contracts: Introduce advanced filter settings

On archived contract list page, introduce advanced filter settings dialog.

This dialog will contain new setting called Status and Sort Order field.

  • Status field setting will contain Expired and Inactive.
  • Sort Order will define the sort order of list based on contract code.
  • Update Unit Test
  • Update online documentation

Add functionality that add capabilities to the app to handle encashing of deposited amount

This is a missing functionality that the mobile app should have.

There could be a scenario where tenant might decide to encash their remaining deposited amount when they finally decide to end their contract. Right now, the application only handles the scenario where tenant might want to utilize their deposited amount by extending their stay until their contract ends.

This issue will focus on introducing this missing functionality.

TODO:

  • On Contract Level, add new setting "Encash deposit amount".
  • Make this setting available only if there is remaining deposited amount
  • If this settings is activated, show something on the contract information page how much amount has been encashed.
  • On add payment dialog, disable/hide the setting "Amount from Deposit" if "Encash deposit amount" is set to true.
  • Test and verify.

Make it possible to track previous values on Term details every after update

Overview

Today, the user can be able to update the term details assigned to the contract. Any updates on the term details will only take effect on the future statement of accounts but not on the existing ones anymore. This means that the current setup of the term details will no longer match with the existing statement of accounts and this could lead to confusions just in case the system failed to generate a correct statement of account details. So, to make the investigation much easier, I decided to introduce something on the internally so the investigation will be much easier, and this is to introduce the concept of term versioning. If there are any changes applied on the term details assigned to the contract, the system will not perform update on the term but instead it will create a new copy and just keep the old data. Technically, we will need to introduced new table that will keep track on the previous versions of terms assigned to the contract.

TODO

  • Introduce new table called TermVersions.
  • Introduce new DataRepository for the term version
  • Update the logic inside the Update function on ContractControler
  • Make sure to create a new version of the term if there is modifications.
  • Test and verify

Introduce new settings to include/exclude the miscellaneous fees when generating penalty

On issue #52, a setting was introduced to specify the due date for miscellaneous fees, either same with the utility bills or rental fees. There is a condition that if the miscellaneous due date is the same with the rental fees then include the miscellaneous fees when checking for penalty. There might be a scenario where user would not want to include the miscellaneous fees when checking for penalty. To resolve this, we are going to introduce new setting on terms level that will include/exclude the miscellaneous fees when checking for penalty.

TODO:

  • On term details page particularly on Miscellaneous Settings panel, add new setting called "Include in Checking and Calculating Penalty". Make this setting only available if the Miscellaneous Due Date is set to same with the rental fees. If Miscellaneous Due Date is set to same with the rental fees and the new setting is activated then make sure to include the miscellaneous fees when checking for penalty. And if the penalty value type setting is set to Percentage, make sure to get the penalty percentage value on the sum of rental and miscellaneous fees.
  • Add new Miscellaneous Settings Panel on Terms Details page.
  • Update unit tests
  • Update online documentation

Make the contract inactive when tenant is deactivated

There is an issue where contract is still active even though the tenant assigned to the contract is already deactivated. This causes an issue because the auto-generate statement of accounts and penalties process skip inactive tenants and contracts attached to them causing the contract showing a past dates. So, to avoid this we must inactive all contracts attached to the tenants once it is deactived.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.