Coder Social home page Coder Social logo

bethgrace5 / sequoia-grove Goto Github PK

View Code? Open in Web Editor NEW
4.0 4.0 3.0 12.9 MB

Angular JS / Java Spring Web Application to Assist Employee Scheduling

Home Page: http://bethgrace5.github.io/sequoia-grove/

JavaScript 33.73% HTML 23.99% Java 36.97% PLpgSQL 2.57% SCSS 2.74%

sequoia-grove's People

Contributors

amadorjoaosilva avatar bethgrace5 avatar jsumal avatar tpascua11 avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

sequoia-grove's Issues

How to Store Scheule - Its own database table, or construct from gathering info from other tables

Controller could construct it by using the date range to find all:

  • granted requests
  • scheduled shifts
  • Half or Closed Days
  • a list of deliveries

Save schedule to localstorage, and send to database when published?
Probably best to treat a schedule like a dataset from datagatherer, save it to localstorage, but save separate components to database separately. The controller can build the schedule after finding all the necessary pieces.

Past schedules are not editable, they should be saved as PDF-whkhtmltopdf or as an image - The PDFs should be downloaded? I don't think they should/can be stored to the database.

Implement Date Pickers

All of the date inputs are currently plain text inputs - a library needs to be found for angular date picker, installed with bower, and implemented to return the format needed to send with requests.

Mobile Friendly

Mobile friendly implementation of application needs to be defined and implemented.

Publish Schedule

The Schedules need to be "published" so that employees can only see schedules when they're ready to view. Right now, any changes made are immediately reflected in the schedule view.

  • Create a table in the database named schedule. As far as I can tell, it would need a column for the start date of the schedule, a flag for if it is published or not, and possibly a date updated for efficiency later.
  • When a user goes to view the schedule, and a row does not exist in the schedule table for it, They should see a message that says that the schedule is not ready to view. They should also not be able to click the next arrow again to go to another week.
  • When publish is clicked on the schedule edit view, a new row needs to be created in the schedule table. When the Schedule is saved, the schedule table needs to be updated with the date/time it was changed.

Deployment - how

The app is bundled and pushed to the server - it looks like Grunt can do some or most of this. I can probably test it on my sleipnir account.

Reformat Existing ER model to put attributes as list inside entity.

  • update some of the attributes that need it. (shift: change weekdays[] to weekdayStart, weekdayEnd, weekendStart, weekendEnd, etc.)
  • Underline relationships instead of in diamond shape
  • add in types of relationships to diagram - (one to one), (many to one), (many to many). form (min:max)

Support for Multiple Locations

The application only supports one store, it needs to have a table for store, and employees and shifts and other things need to be associated with a store. They should be encapsulated so that they don't edit or see another store's information.

Setup Directives for existing templates

There are several directives that need to be set up, and need to reference their respective existing template.

  • published-schedule
  • edit-schedule
  • edit-deliveries
  • edit-shifts
  • edit-employee-info
  • edit-employee-availability
  • edit-pending-requests
  • view-request-history
  • user-requests

Ability to Employ/Unemploy employees

  • button on employee edit screen
  • for current employee, if unemployed, it sets date unemployed to current day, if employed, it inserts employment history with start as current day
  • for previous employees, it creates a new employment history with date_employed today, and date_unemployed to null.

Check Shift Time Frame Before Returning Schedule

New Shift table has a date start and end for each shift - this needs to be checked in the date range when pulling the schedules from the database, so the schedule being viewed is specific to that time frame.

RFI with Walter

Double check classification of back shifts, and get current schedule with shift titles.

  • front shifts
    • supervisor
    • cashier
    • cold prep
  • back shifts
    • hot prep
    • salads
    • bakery
    • soups
  • janitor shifts
    • janitor

Secure Login

Mozilla Persona Was suggested for authentication.

  • User table may be rendered useless - add attributes email and last login to Employee table instead?

Table for Session Logging

  • What kind of logging needs to be saved? Is this even necessary for so small of an application?
    attributes:
  • employee id
  • time logged in
  • time logged out or expired
  • activity details

add year to schedule view

Add the current year in schedule-header.html, maybe put it in grey lettering in the right hand corner, or somewhere where it's kindof inconspicuous.

Get Employee Id back when getting the scheudle.

Employee Id is not being returned with the main get schedule function - it is needed for checking to highlight the logged in employee. Right now, the "highlight me" button simply matches the first name strings - which isn't going to work correctly with two employees that have the same exact name.

URL Route Authorization - security

Current views that should be available to only logged in users, and ones that should only be available to logged in users that are 'manager' level are hidden via ng-hide(). Any user can modify the value in the page source, let alone, just type app/#/restrictedRoute in the browser's navigation, and view the page as they have the knowledge to do so.

solution: url route authorization - front end
http://jonsamwell.com/url-route-authorization-and-security-in-angular/

This is just a small security point, there should be other security measures implemented later.

Implement Requests

  • Employees need to be able to submit requests off - this means that they put a start date and end date ( the start date needs to be before the end date), and submit their request. The request must be submitted at least two weeks in advance - so the start date of the request needs to be 14 days before the current date.
  • Eventually, the requests need to be checked that the employee has not already submitted a request for the time span (skip this for now, and come back to it after the rest of the list is near done).
  • Employees need to be able to see all of their requests with their status - this means getting all requests where employee id is the id of the current logged in employee, and displaying them.
  • Managers need to be able to approve or deny requests - this means that a list of all pending requests should be pulled from the database, and displayed with information about the request, and a button next to each one should be there to approve or deny them. Clicking approve will remove the request and mark it as approved. Similarly, clicking deny will mark the request as denied.
  • Eventually, Managers should be able to create a request for an employee, and modifiy pending requests before they become approved or denied.
  • Managers also should be able to see a history of all the requests - the information about requests that were approved or denied, and who approved or denied the request.

I don't think that requests that were already approved or denied should be able to change status once they've been answered.

Back End - create and hook to front end

Make Printable Schedule View

The panel with repeating rows and columns wasn't working for previewing print - I set everything as .hidden-print. There needs to be a view with simple columns and rows for printing the schedule.

Schedule Checking

There are several reasons an employee cannot be scheduled for a specific shift - when one is violated, it needs to be made clear to the user what the error is. Right now, there is an Error and a Warning class that are being used. The following items need to be categorized into warning or error, and a nice way of showing the warning or error to the user needs to be created. They also all need to be checked while ther user manually types the schedule - eventually they will also be criteria for an auto generating schedule.

  • Employee is not available for the shift
  • Cannot work with someone else scheduled that day (Warning)
  • Already has too many hours that week (above their max hours per week)
  • Already scheduled that day (sometimes this is allowed to happen, but usually shouldn't - Warning)
  • Request was approved for that day off
  • Doesn't have the position for the shift
  • Employee does not exist (name was misspelled)
  • Employee is currently employed
  • UI feedback for errors or warnings

Implement Holidays

There are days that the store is closed for a half or full day. There exists a table in the database for this, but it is not connected to the front end yet. The managers need to be able to input holidays (name of holiday, date, full or half day). The schedule should block out shifts that occur during a holiday. The table may need to have a column for the time that the half day ends, so it will know which shifts to block out. Different stores may have different ending times, so this will need to be added to the database.

  • - input date, name, type for new holiday
  • - view list of current holidays
  • - edit/delete holidays
  • - the schedule displays the holiday, and doesn't allow manager to schedule shifts that are during the holiday.

New tables or attributes for existing tables

  • Spanish translation attributes for tasks / locations
  • Table for metadata about schedule - Start date, end date, ready to view,
  • Attribute for when user changed their pasword
  • Logging for session, track new stuff was added/deleted from stuff

User Table

  • username
  • preferences
    • language
    • dashboard settings
  • access level (manager, employee)

Save Schedules in Browser for efficiency

After schedule table exists:

  • save so many schedules to localstorage when app initializes.
  • the saved schedules will have a date start so schedules so far back in time will be deleted (maybe last week is still saved, but not the week before).
  • the saved schedules will have a date updated, and so it will only pull updated schedule if the date updated is newer on published schedules. The query to get the schedules themselves is fairly taxing on time.

Schedule Employees WIth Identical First Names - have user select name, or use last initial

When an employee name is typed into schedule edit, it is finding the employee by name. If two employees have the same name, it will simply select the first one it finds. It needs to check for strings with the first letter of the last name tacked at the end. Simply: If two names are equal, differentiate them with the first initial of last name, and subsequent letters until unique.

Push Notificaitons

I don't know how implementation intensive this will be, but it would be a neat addition. Notify employees by email or text when a new schedule is posted or their request has been responded to. They should have the option of turning off the notifications. This means saving their settings in a table in the database and allowing them to edit whether they get notifications in each instance.

Trade Shifts

Employees trade shifts - put it on a trade board, and employees accept, or have a specific person to swap with that needs to approve the swap? This needs to be implemented.

Manual ordering for shifts

Shifts as they are currently ordered by the company aren't in any logical order. So, to display shifts correctly, they need to be manually ordered. This means adding a column for index in the Shift table, and ordering them by that index on the front end. In addition, the shifts are grouped by categories, so some will need gaps after them. So, a column will need to be added to say whether there is a gap shown after a group. The ordering of the shifts, and which ones have gaps after them need to be editable on the front end as well.

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.