I have been googling for hours on this, what I am trying to do is build a application with the following criterias
Employees Company Business Hours Shifts
This will allow one user to create a business account with the ability to add other employees to the account, the one user will first create the businesses general business hours by selecting open and close hours for Sunday - Saturday. Then once the first user adds other employees to the business account, that user will be able to edit each employees shifts. The one user will be able to manage each of the employees entire day by 15 minute increments, this is going to be used for a calendering system.
So lets say...
Company A hours are 9am-5pm Mon-Fri Employee 1 hours are 11am-3pm Mon-Thurs Employee 2 hours are 9am-5pm Tues-Fri Employee 3 comes in at 9am but has to leave at 11am but comes back at 11:45am-5pm Mon-Fri
and each employee needs to be able to have there lunch break blacked out whether that is a 15 min lunch or 60 min lunch
Now the question is how would I go about designing the database (MongoDB) structure and models. I could build this out but I want to use the best practice from the start of the project since this will need to be scalable to hundreds of companies and thousands of employees. Everything that I have read leads no where. My thinking on this(I come from PHP background)
Companies company_id name address .... .... Employees employee_id company_id name .... .......
Hours (Just for the business hours) hour_id business_id either do a hours field that holds a array OR something like the following sun_open = 9:00:00 sun_close = 17:00:00 mon_open ... ...... sat_close ...
Shifts shift_id shift_name employee_id day month year start_time end_time THEN HERE IS WHERE I AM STUCK - Going back to Employee 3's requirements:
Employee 3 comes in at 9am but has to leave at 11am but comes back at 11:45am-5pm Mon-Fri
How can I store it in the database for the 11am to 11:45 off period as well as a lunch break for each employee. I dont want to create seperate columns for each of the 15 min increments for each day. And I dont want millions of records in the database, also once the shifts are set they need to be able to be changed still be 15 min increments. Hopefully that is the best explanation for this problem any help would be appreciated!!! Thanks for your time in advance, I really do appreciate it!