Skip to content

Zahnen/Guestly.Solution

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

67 Commits
 
 
 
 
 
 

Repository files navigation

Guestly


Last Updated: January 28th, 2021

ℹ️ Description

Guestly is a customer relationship management tool designed for the hospitality industry. Guestly allows hotel staff to manage records of guest stays, track revenue performance, and sort through historical guest and reservation data. It features a highly queryable database of guest information that allows properties to target sets of guests who may be interested in specific email campaigns. Developed to boost the efficacy of marketing efforts, Guestly offers relevance and engagement with its users' target audience.

Guestly was built collaboratively in a team of 5 developers while studying at Epicodus. Guestly makes use of primarily C#, ASP.NET MVC, and MySQL databases.

📸 Demonstration

gif of page

🎯 MVP User Stories / Stretch Goal

Expand User Stories and Stretch Goals

Have a queryable database of guests with full CRUD funcationality.

  1. As a hotel employee, I need to be able to see a list of all guests that have stayed at my hotel.~

  2. As a hotel employee, I need to be able to see a record of which rooms a guest has stayed in. (I.E. Sarah Johnson stayed in room 207, room 319, and room 500.)

  3. As a hotel employee, I need to be able to see a record of which guests stayed in which room. (I.E. in room 206, Sarah Johnson, Peter Jackson, and Jenny Calendar stayed here.)

  4. As a hotel employee, I need to be able to track the revenue earned from an individual guest.

  5. As a hotel employee, I need to be able to search/query my list of guests in order to search by revenue earned, most nights stayed, etc.

  6. As a hotel employee, I need to be able to see a details page of each individual guest, where information such as contact info and stay history can be viewed.

Stretch Goals?

✅ JS front end - adding interactivity with nav bar, etc.

✅ Add extra search parameters to refine queries made by search bar.

✅ Handle Identity Errors.

✅ Sticky nav bar.

✅ Support links at bottom of page(s) - github link, email link.

✅ Sort database with table links.

✅ Add DateTime data for guest check-in check-out dates.

✅ Show Google map search based on guest data.

✅ As a hotel manager, I would like if revenue tracking was presented in an easy-to-digest and dynamically updated chart and/or graph.

  • As hotel management, I need to be able to manage different hotel properties, each containing their respective guests and rooms.

  • As hotel management, I need to be able to be able to send messages and requests to staff members.

  • As hotel management, I need to be able to be able to send email campaigns to targeted customers.

🧑‍💻 Contributers

Name GitHub Profile
Ben McFarland Harzulu
Kaila Sprague McRae kaila-spraguemcrae
Max Brockbank MaxBrockbank
Zahnen Garner Zahnen
Taylor Delph Taylulz

⚙️ Technologies Used

💾 Installation Requirements

For Both Mac & Windows systems

To Clone:

  • Open your preferred command line program.
  • Navigate to the location or directory you'd like the project directory to be created in. (e.g., "cd Desktop" if you'd like to clone the project to your desktop)
  • Enter the command "$ git clone https://github.com/Zahnen/Guestly.Solution" in your command line.

To Download:

  • Navigate to the project repository in your browser.
  • Click the green "Code" button toward the top right of the page.
  • Click "Download ZIP" and extract the files.
  • Open the newly-downloaded project in your preferred code editor.

📁 Installing C#, .NET, dotnet script, & MySQL

This program requires C# and the .NET Framework to be installed on your machine:

For Mac 

  • Download this .NET Core SDK (Software Development Kit). Clicking this link will prompt a .pkg file download from Microsoft.
  • Open the .pkg file. This will launch an installer which will walk you through installation steps. Use the default settings the installer suggests.
  • Confirm the installation is successful by opening your terminal and running the command $ dotnet --version, which should return something like: 2.2.105.

For Windows (10+)

  • Download this 64-bit .NET Core SDK (Software Development Kit). Clicking these links will prompt a .exe file download from Microsoft.
  • Open the file and follow the steps provided by the installer for your OS.
  • Confirm the installation is successful by opening a new Windows PowerShell window and running the command dotnet --version. You should see something a response like this: 2.2.105.

For Mac & Windows Operating Systems

  • Install dotnet script with the following terminal command:
    dotnet tool install -g dotnet-script.

🖥️ Opening the Project on your Local System

Once the project has been cloned and you have all the necessary items on your local computer, open the project in the application of your choice (Visual Code Studio was used and is recommended by the application builder)

AppSettings.json File

  • Create an appsettings.json file in the Guestly folder and paste in the code snippet below.
    • Replace PASSWORD with the password to your server created for this project
    • Replace DATABASE_NAME with the name of your database
{
    "Logging": {
      "LogLevel": {
        "Default": "Warning"
      }
    },
    "AllowedHosts": "*",
    "ConnectionStrings": {
      "DefaultConnection": "Server=localhost;Port=3306;database=[DATABASE_NAME];uid=root;pwd=[PASSWORD];"
    }
}

MySQL Database Setup

Make sure to have a MySQL server running on your machine on port 3306

  • Using your terminal or command line, navigate to the Guestly folder in Guestly.Solution: /Guestly.Solution/Guestly.
  • Next, run the command: dotnet ef database update.
  • You should have your database created for this project.

Run the project:

  • Once the project is cloned and the MySQL database is established, use your preferred command line program to navigate to the directory titled "Guestly" within the root directory created when cloning the project.
  • To run the console application, enter "dotnet build" in your command line while still within the "Guestly" directory. Follow this command with "dotnet run"
  • Your command line will open a server (likely "http://localhost:5000/"). Navigate to this URL in your browser to view the project.

Setting up User Roles and granting "Admin" permissions

Once you open the project in your code editor navigate to 'Guestly/Contollers/AdministrationContoroller' and comment out [Authorize(Roles = "Admin")] which is under the namespace.

After this you will be able to do the following steps:

  1. Navigate to "Register" and fill out the form.
  2. Click "Log in" and fill out the form.
  3. In the url navigate to 'localhost:5000/administration/listroles'.
  4. Click "Create Role" and name the new role "Admin".
  5. Next to add your account to the "Admin" role, click "Edit" and then click "Add or Remove Users".
  6. Check the checkbox next to your user email and then click "Update"
  7. To have to the role update your permission Logout and then Log back into your account. You should now see "Manage User Roles" and "ADMIN" in the navbar.

At this point you should return to the code editor and uncomment or add [Authorize(Roles = "Admin")] back.

*To have full access to the web application you will need to add the User Role "Admin" to your account.

☎️ Support / Contact Details

🐛 Bugs / Issues

Date Error Handled Solution
01.25.2021 "The entity type 'IdentityUserLogin<string>' requires a primary key to be defined." add base.OnModelCreating(builder) to GuestlyContext.cs
01.25.2021 "error CS0664: Literal of type double cannot be implicitly converted to type 'float'; use an 'F' suffix to create a literal of this type" add "f" to float data, ie: 125.00f
01.26.2021 login, register and create roles do not show errors add @Html.ValidationSummary(false,"",new { @class = "text-danger"}) to Views and add ModelState.AddModelError(string.Empty, error.Description) to Controllers
01.26.2021 when setting nav bar's position to "fixed" in css, nav covers page contents format through bootstrap by adding "sticky-top" to <nav> class`
01.27.2021 sorting a table with jQuery is hot garbage add a <span class="data"> to <td> column, modify function to sort by span class instead of td tag

©️ License & Copyright

License: MIT

Copyright (c) 2021 Ben McFarland, Kaila Sprague McRae, Max Brockbank, Zahnen Garner, Taylor Delph

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published