Git Product home page Git Product logo

learningcentre's Introduction

Learning Centre App

##Description Learning Centre Web Application for Faculty of Computer Science at Dalhousie

#####Feel free to modify it for your own faculty or needs.

##Installation ###Prerequisites

  • Install Git
    • Windows:
    • Linux (Ubuntu):
      • sudo apt-get install git
    • Mac:
      • Installed by default
  • Install WAMP,LAMP or MAMP (Apache, MySQL, PHP 5.4):
    • Windows:
      • WAMP (Download WAMP with PHP 5.4)
    • Linux (Ubuntu):
      • sudo apt-get install lamp-server^ (Do not remove the ^)
    • Mac:
      • MAMP (Download the free version of MAMP )
  • Make sure you can run PHP in the Command Line
  • Enable the openssl and Mcrypt modules in PHP
  • Enable the rewrite_module in Apache

###Instructions

  • Open Terminal/Command Line/Git Bash
  • Change to the folder where you store your PHP code (Usually htdocs or www).
  • run git clone https://github.com/andreykul/learningcentre.git.
  • Enter the Folder created.
  • run php composer.phar install to install dependencies.
  • [Optional] Open PhpMyAdmin create a new database called "learningcentre"
  • Create a file app/config/database.php and copy database.php into it
    • Modify the following in the MySQL section to match your database:
      • host
      • database
      • user
      • password
  • [Optional] Modify app/config/mail.php to send actual emails
  • run php artisan migrate to update your database
  • run php artisan db:seed to populate the tables
  • You should have now have two accounts:
  • You should be able to access the project in your browset at:
    • http://localhost/learningcentre/public or
    • http://localhost:8888/learningcentre/public or
    • http://localhost:[port]/learningcentre/public
  • Modifications to public/.htaccess might be needed to work correctly

##Database ###Migrations

  • Update tables
    • run php artisan migrate
  • Reset tables
    • run php artisan migrate:refresh
  • Remvoe tables
    • run php artisan migrate:reset
  • Undo last table change
    • run php artisan migrate:rollback
  • Manual reset (If migrations fail to work)
    • Open PhpMyAdmin and remove each table manually
    • run php artisan migrate

###Populate/Seed

  • run php artisan db:seed

##Development

  • New Issue Branch
    • git checkout -b issue-#
    • git push -u origin issue-#
  • Working on somebody's branch (Will download their branches)
    • git fetch
  • Merge problems
    • You will be given your code and the other code sepperated with special symbols.
    • Decided what part to remove and what to keep
    • Add and Commit
    • You are good to go, push
  • Working with Emails
    • If you want to see the email that is sent in pretend mode
    • First change the mailer.php to display the body of the message as explained here.
    • You are able to view the pretend emails at "app/storage/logs"

learningcentre's People

Contributors

viviankou avatar andreykul avatar

Watchers

James Cloos avatar  avatar  avatar

learningcentre's Issues

TA shifts Summary

TA should be able to see a summary of total hours worked. Hours worked this week, etc.

General summary of how is the TA doing so far into the semester.

This is also where the TA will submit timesheets and will be able to see how many hours were approved and submitted.

Timesheets table is as follows:
id : integer
ta_id : integer (Reference to TA)
week : date (Saturday at the end of the week)
monday: float (amount of hours worked)
tuesday: float (amount of hours worked)
wednesday: float (amount of hours worked)
thursday: float (amount of hours worked)
friday: float (amount of hours worked)
saturday: float (amount of hours worked)
sunday: float (amount of hours worked)
additional: float (amount of hours worked)
total : float (total hours)
memo : text (Any extra information )
approved: boolean (approved by admin)

Add new TAs

The admin should be able to add and remove TAs from the learning centre.
Admin should be able to provide an email.
Then an email will be sent to the TA with a one time link to set up his account.

Active/Inactive TA option

TA should be able to activate or deactivate their account.
TAs sometimes don't work for a semester due to class load or co-op work term and then come back.

Instead of being deleted from the system they can just activate their account.
It is easier to keep them in the system, so we don't forget about them for next semester when they might be back.

Add Glyphs

Add glyphs where appropriate to make the website more appealing.
Glyphs instructions

For example:
add floppy-disk glyph next to all the save changes buttons
add floppy-saved glyph next to successful save.
add time glyph next to availability menu
etc.

Main Page

Create a main page for the application

TA Course Knowledge Level

Admin should be able to set up a list of courses.
TAs should be able to rate the level of knowledge they have of each course.

The list of courses can be stored a single comma separated string in the settings table.
While the rating will be stored in a separate table with ta_id and an integer (1-5)

The link to the list of courses for each TA should be through their profile page.

Format of all pages does not match

Some pages do not start with a div col-md-12, so some pages are shifted a bit to the left.

Need to go over all the views and make sure all match the format.

LC Hours Summary

Admin should be able to keep track of hours worked this week and in total.

Import Availability

Admin needs to import availability from the old system.
Admin will provide CSV which will contain the TAs names and their availability.
The format is as follow:
,TA1,TA2,TA3,
10:00,1,0,1,
10:30,1,1,0,
...

Table columns must have a default value

The deployment server requires that all field in a table to have a value when inserting a new record.

Need to check each table column and make sure it has a a default value or that it is nullable.

Implement TA Availability

Requirements:

  • TA can modify his availability
  • TA can modify his profile
  • Admin can view TAs availability

Download Availability

Admin should be able to download the TAs availability in a csv (Comma separated values) format.

Example for a CSV (TA # is the name of the TA):
,TA 1,TA 2,TA 3,TA 4,TA 5,TA 6,TA 7,TA 8,TA 9,TA 10,TA 11,TA 12,TA 13,TA 14,
9:00,0,0,0,0,0,0,0,0,1,1,0,0,0,1,
9:30,0,0,0,0,0,0,0,0,1,1,0,1,0,1,
10:00,0,0,0,0,2,2,0,0,1,1,0,1,0,1,
10:30,0,0,0,0,2,2,0,0,1,1,0,1,0,1,
11:00,0,0,0,0,2,2,0,0,1,1,0,1,0,1,
11:30,1,0,0,0,2,2,0,0,1,1,0,0,0,1,
12:00,1,0,0,0,2,2,0,0,1,1,0,1,0,1,
12:30,1,0,2,0,2,2,0,0,1,1,0,2,0,1,
13:00,1,0,2,0,2,0,0,0,1,1,0,2,0,1,
13:30,1,0,2,0,2,0,0,0,1,1,0,2,0,1,
14:00,1,0,0,0,2,0,0,0,1,1,0,2,0,1,
14:30,1,2,0,0,2,0,0,1,1,1,0,2,0,1,
15:00,1,2,0,1,0,0,1,1,1,2,0,1,0,1,
15:30,0,2,0,1,0,0,1,1,1,2,0,0,0,1,
16:00,0,2,0,1,0,1,1,0,1,2,0,0,2,1,
16:30,0,2,0,1,0,1,1,0,1,2,0,0,2,1,
17:00,0,2,0,1,0,1,1,0,2,2,0,0,2,1,
17:30,0,2,0,1,0,1,1,0,2,2,0,0,2,1,
18:00,0,2,0,1,0,1,0,0,2,2,0,0,2,1,
18:30,0,2,0,1,0,1,0,0,2,2,0,0,2,1,
19:00,0,2,0,1,0,1,0,0,2,2,0,0,0,1,
19:30,0,2,0,1,0,1,0,0,2,2,0,0,0,1,
20:00,0,2,0,0,0,0,0,0,2,2,0,0,0,0,
20:30,0,2,0,0,0,0,0,0,2,2,0,0,0,0,
21:00,0,2,0,0,0,0,0,0,2,0,0,0,0,0,
21:30,0,2,0,0,0,0,0,0,2,0,0,0,0,0,
22:00,0,2,0,0,0,0,0,0,2,0,0,0,0,0,
22:30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,

Login System

Simple login using username and password login on the main page. Users do not have to login to view basic content. There is no need to make registration. Only the admin can create new accounts for TAs.

TA Shifts

TA shifts should be done before the creation of the schedule to create a end result for the schedule to aim for.

TA is able to view his own shifts, in a week by week manner.
Shifts will be displayed the same as the availability table, but will include only the shifts assigned to the TA. The TA is able to Drop a shift, which will then be available to other TAs..

On the same table available shifts will be displayed, in other words shifts that some other TA was not able to do. another TA can take the shift if he is able to take the whole shift. Otherwise a TA is able to bid to take part of the shift. If another TA is able to take the rest of the shift, then both TA will be added a portion of the shift. But if another TA can take the whole shift the bid is discarded.

Therefore the structure of the shifts table is as follows:

  • id : integer (shift ID)
  • ta_id : integer (ID of TA to whom the shift belongs)
  • date : date ( day/month/year )
  • start : integer (At what time the shift starts)
  • end : integer (At what time the shift ends)
  • schedule_id : integer (ID of the schedule the shifts are based on)

We will need another table for the the bidding on shifts.
The structure of the shift_bids table is as follows:

  • id : integer (bid ID)
  • ta_id : integer (ID of TA who bid the shift)
  • shift_id ( The ID of the shift the bid is for)
  • start : integer (From what time the TA is able to take the shit)
  • end : integer (Until what time the TA is able to take the shift)

If there is not another TA to cover the second part of a shift one hour before the shift. Then the TA with the best bid, covers most time, will get the shift his bid. The rest of the shift will be posted as available, until the shift starts. When the shift starts and nobody has taken it, the shift will be discarded.

Timesheets approval

The Admin should be able to approve or disapprove timesheets submitted.
Once the a timesheet is approved, an email should be sent to payroll.
Email address for payroll should be stored as a setting.

TA and Admin interface

Create two interfaces based on TA and Admin role. For start can be as simple as welcome TA or welcome Admin.

Fix Routing for TA

TA routing is incorrect should be the same like admin.
The main work is in changing the routes.php file and then the names of the functions in the controllers.

Schedule generation

The Admin should be able to generate a schedule by hand.

The Admin will be presented with a table similar to the availability table.

The table will be colour coded with red, yellow and green showing how many TAs are available at each time.

The Admin will start with the days that have the most red, in other words the fewest amount of people available at that day.

The Admin will assign shifts by selecting a day. Once a day is selected a modal will appear with a list of TAs. The list will include TA that are available that day. It will include their availability, preference, total hours assigned to them and start and end of shift assigned to them that day, if any.

The schedule will be stored in the schedule table.

The structure of the schedule table is as follows:

  • id : integer (Schedule ID)
  • ta_id : integer (The ID of the TA assigned)
  • start : integer (At what time the shift starts)
  • end : integer (At what time the shift ends)

TA list for Guests

Visitors of the application who are not logged in should be able to see a list of all the TAs in the learning centre.

Finish availability Reminder

Admin should be able to remind a TA to fill his/her availability.

Button has been added on the availability page, but it does not work yet.

Admin should be able to click the Remind button, which will send an automated message.

There should be also a Remind all button, which will send an automated message to all the TAs.

Announcements

The Admin should be able to post announcements just for TAs and in general on the main page.

A table to store the announcements is needed.
The following can serve as the table:
id : integer (Primary key)
title : string (Title for the announcement)
text : text (Actual text of the announcement)
all : boolean (Post to all or just TAs)

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.