Giter VIP home page Giter VIP logo

carrentalapp's Introduction

CSC 517 Program 2 - OnePlus Car Rental Application

Note: Do not use fake e-mail IDs during signup

The application requires you to make use of legitimate e-mails IDs (and not fake email IDs). As we are using e-mails for notifications, kindly use your personal e-mail IDs to test the application.

Note: Clicking on OnePlus Car Rentals (top left) at any point of time will take you back to the homepage.\

All extra credit requirements have been implemented.

Credentials

SuperAdmins

Only one Superadmin has been created during deployment. To login, the Superadmin should use the admins login button which can be found on the application homepage.

e-mail: [email protected]  
password: a  
Admins

To create new admin/superadmin, a(n) admin/superadmin has to click on the "Manage Admins" link provided on his homepage after logging in.

Customers

A customer can use the sign up option and create an account. The customer will then get a welcome e-mail in the e-mail that he/she used to register.

Problem Statement

The full problem statement can be found here.

Functionality covered

  • Customers can:

    • Signup and Login
    • Edit his/her profile
    • Reserve a car based on the number (one reservation per user) and time constraints present in the Problem Statement
    • View and Cancel their reservations and also Checkout and Return the cars
    • Suggest a car to be added (added upon admins approval)
    • View his/her own reservations and reservation history
    • Pay the rental charge applicable
    • Subscribe to reserved cars to get notified when they become available
  • Admins can

    • Be added/deleted by other admins/superadmins
    • Manage other admins
    • Manage cars (CRUD) as per requirement
    • Manage customers (RUD) as per requirement
    • Manage reservations (CRUD) as per requirement
    • Accept/Reject car suggestions by users
    • View Current and Past reservation of each user by viewing their profile
    • View each car's Checkout history
  • Superadmins can

    • Be created by other superadmins
    • Perform everything that an admin can
    • not be deleted by anyone
  • Cars

    • A car can be added/removed by a(n) Admin/Superadmin
    • Anyone can view the details of the car
    • Admin/Superadmins can view a car's checkout history
  • Reservations

    • A customer can only have one reservation posted on his account at a time, even when the reservation is of a future date
    • All car reservations, when completed a full flow (Available -> Reserved -> Checked Out -> Returned) will be added in the reservation history.
    • Admins/Superadmins can view all customers' reservations
  • Viewing Past Reservations

    • Customer can view his/her past reservations
    • Admins/Superadmins can view all customers' past reservations
  • Deleting users/admin

    • Customers can be deleted by Admins/Superadmins
    • Admins can be deleted by Superadmins
    • Superadmins cannot be deleted
    • A customer cannot be deleted if he/she has an ongoing reservation
  • Deleting cars

    • Admins and Superadmins can delete cars
    • A car cannot be deleted if it is a part of an ongoing reservation
  • Search Cars

    • Customers can search cars based on Model Name/ Manufacturer/ Location/ Style in one search box
  • Notifications are sent when

    • User Signs up successfully
    • A car suggestion by a user is approved
    • A car suggestion by a user is rejected
    • A car which the customer has subscribed to becomes available
    • A car is automatically returned when reservation time runs out

Routes

                   Prefix Verb   URI Pattern                             Controller#Action
        unauthorized_show GET    /unauthorized/show(.:format)            unauthorized#show
     application_sign_out GET    /application/sign_out(.:format)         application#sign_out
      reservations_cancel GET    /reservations/cancel(.:format)          reservations#cancel
    reservations_checkout GET    /reservations/checkout(.:format)        reservations#checkout
      reservations_return GET    /reservations/return(.:format)          reservations#return
    car_approvals_approve GET    /car_approvals/approve(.:format)        car_approvals#approve
            customers_pay GET    /customers/pay(.:format)                customers#pay
                customers GET    /customers(.:format)                    customers#index
                          POST   /customers(.:format)                    customers#create
             new_customer GET    /customers/new(.:format)                customers#new
            edit_customer GET    /customers/:id/edit(.:format)           customers#edit
                 customer GET    /customers/:id(.:format)                customers#show
                          PATCH  /customers/:id(.:format)                customers#update
                          PUT    /customers/:id(.:format)                customers#update
                          DELETE /customers/:id(.:format)                customers#destroy
              login_index POST   /login(.:format)                        login#create
                new_login GET    /login/new(.:format)                    login#new
       admins_login_index POST   /admins_login(.:format)                 admins_login#create
         new_admins_login GET    /admins_login/new(.:format)             admins_login#new
                   admins GET    /admins(.:format)                       admins#index
                          POST   /admins(.:format)                       admins#create
                new_admin GET    /admins/new(.:format)                   admins#new
               edit_admin GET    /admins/:id/edit(.:format)              admins#edit
                    admin GET    /admins/:id(.:format)                   admins#show
                          PATCH  /admins/:id(.:format)                   admins#update
                          PUT    /admins/:id(.:format)                   admins#update
                          DELETE /admins/:id(.:format)                   admins#destroy
                     cars GET    /cars(.:format)                         cars#index
                          POST   /cars(.:format)                         cars#create
                  new_car GET    /cars/new(.:format)                     cars#new
                 edit_car GET    /cars/:id/edit(.:format)                cars#edit
                      car GET    /cars/:id(.:format)                     cars#show
                          PATCH  /cars/:id(.:format)                     cars#update
                          PUT    /cars/:id(.:format)                     cars#update
                          DELETE /cars/:id(.:format)                     cars#destroy
             reservations GET    /reservations(.:format)                 reservations#index
                          POST   /reservations(.:format)                 reservations#create
          new_reservation GET    /reservations/new(.:format)             reservations#new
         edit_reservation GET    /reservations/:id/edit(.:format)        reservations#edit
              reservation GET    /reservations/:id(.:format)             reservations#show
                          PATCH  /reservations/:id(.:format)             reservations#update
                          PUT    /reservations/:id(.:format)             reservations#update
                          DELETE /reservations/:id(.:format)             reservations#destroy
reservation_history_index GET    /reservation_history(.:format)          reservation_history#index
                          POST   /reservation_history(.:format)          reservation_history#create
  new_reservation_history GET    /reservation_history/new(.:format)      reservation_history#new
 edit_reservation_history GET    /reservation_history/:id/edit(.:format) reservation_history#edit
      reservation_history GET    /reservation_history/:id(.:format)      reservation_history#show
                          PATCH  /reservation_history/:id(.:format)      reservation_history#update
                          PUT    /reservation_history/:id(.:format)      reservation_history#update
                          DELETE /reservation_history/:id(.:format)      reservation_history#destroy
            notifications GET    /notifications(.:format)                notifications#index
                          POST   /notifications(.:format)                notifications#create
         new_notification GET    /notifications/new(.:format)            notifications#new
        edit_notification GET    /notifications/:id/edit(.:format)       notifications#edit
             notification GET    /notifications/:id(.:format)            notifications#show
                          PATCH  /notifications/:id(.:format)            notifications#update
                          PUT    /notifications/:id(.:format)            notifications#update
                          DELETE /notifications/:id(.:format)            notifications#destroy
            car_approvals GET    /car_approvals(.:format)                car_approvals#index
                          POST   /car_approvals(.:format)                car_approvals#create
         new_car_approval GET    /car_approvals/new(.:format)            car_approvals#new
        edit_car_approval GET    /car_approvals/:id/edit(.:format)       car_approvals#edit
             car_approval GET    /car_approvals/:id(.:format)            car_approvals#show
                          PATCH  /car_approvals/:id(.:format)            car_approvals#update
                          PUT    /car_approvals/:id(.:format)            car_approvals#update
                          DELETE /car_approvals/:id(.:format)            car_approvals#destroy
                     root GET    /                                       login#new


carrentalapp's People

Contributors

vjhebbar avatar rajanalwan avatar rcoutin avatar

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.