Create a leasing agency system that can handle any transaction between the property, the leasing agent, and the applicant/customer
- Ruby version: ruby-3.0.2
- Rails Version: 6.1.4.1
- Database: SQLLite 1.4
- Email address: admin@123.com
- Password: 12345
Application Status:
- Applied - Default status when an application is created.
- Checkin - When an agent/admin assigns the property to an applicant.
- Rejected - When an agent/admin rejects an application.
- Checkout - When an applicant moves out of the property.
- Withdraw - When an applicant withdraws an application.
Features:
1. Agent View Testing:
- Create a new Agent before login.
- Signup button on home page can be used to create new Agent.
- During signup, you need to select user_type as Agent from the drop down.
- Only unique Email is allowed while sign up.
- Email,password, name, address are mandatory fields while signup.
- Leasing Agent can add new property, view the list of applications and properties from his home page.
- He can only see the list of properties that he has created.
- He can only see applications for the properties which he has created.
- He can also create a new application, but for creating a new application he should have the applicant id to whom he is creating an application.
- He can update the status of an application to Checkin, Rejected
- If an applicant is Checked in, he can checkout that applicant. Then the property will no longer occupied by that applicant.
- Create a new applicant before login.
- Sign up is similar to agent signup, but user_type needs to be selected as Applicant.
- Once the applicant sign up is done, login using the applicant credentials.
- He can click on the view properties to see the list of properties which are un-occupied.
- He can also see the property in which he is staying if he has already checked into one of the properties.
- At the bottom of properties view there is an option to "Apply Now". He can click on that button to apply to one of the unoccupied properties.
- While applying to a property, the applicant has to give the property id to which he needs to apply.
- Also applicant can view the list of properties that he has applied using View Application button.
- After he applies to a property if he wishes to withdraw the application he can do so on the applications view page.
- If he is already checked into a property, he can checkout of the property from the applications page. The property can then be to allocated to other applicants.
- Admin signup is pre-configured. There can only be one admin and cannot create a new admin using sign up.
- Admin can add/edit/delete users, properties.
- He can view the list of users, applications and properties.
- Admin will have the access to all the agent and applicant functionalities
- He can update any information that he wants to, except changing the email address of users.
- Admin will not have an option to delete his account.
- When a user tries to sign up as admin, the system will throw an error.
- Admin can update user details, but cannot update their email address.
- Leasing agent can only view the properties that he has created. He cannot see the properties that are created by some other agents/admin.
- Leasing agent can only see applications to the properties which are created by him.
- If leasing agent tries to check in an applicant to a property that is already occupied then the system throws an error.
- Leasing agent cannot withdraw the application. Only applicant can do that.
- Leasing agent cannot reject application after checkin. He can only checkout the applicant.
- When agent check out an applicant, the property will be available for check in.
- After check out, reject, withdraw agent or admin cannot update the application any more.
- New application cannot be created for Admins or Agents.
- Applicant can't edit property details. He can only view them.
- Applicant can withdraw the application after he applied to a property. Also he can checkout after he moves in.
- Applicant can't withdraw the application once he moves in.
- Applicant can't destroy the application if the applicant already moved in.