Skip to content

Commit

Permalink
Merge 68769aa into a045738
Browse files Browse the repository at this point in the history
  • Loading branch information
ghatighorias committed Oct 30, 2017
2 parents a045738 + 68769aa commit 6a50338
Show file tree
Hide file tree
Showing 14 changed files with 71 additions and 31 deletions.
3 changes: 2 additions & 1 deletion lib/course_planner/accounts/coordinators.ex
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ defmodule CoursePlanner.Accounts.Coordinators do
import Ecto.Query
alias CoursePlanner.{Repo, Accounts.User, Accounts.Users}

@coordinators from u in User, where: u.role == "Coordinator"
@coordinators from u in User, where: u.role == "Coordinator",
order_by: [u.name, u.family_name, u.nickname]

def all do
Repo.all(@coordinators)
Expand Down
3 changes: 2 additions & 1 deletion lib/course_planner/accounts/students.ex
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ defmodule CoursePlanner.Accounts.Students do
alias CoursePlanner.{Repo, Accounts.User, Accounts.Users, Courses.OfferedCourse}
import Ecto.Query

@students from u in User, where: u.role == "Student"
@students from u in User, where: u.role == "Student",
order_by: [u.name, u.family_name, u.nickname]

def all do
Repo.all(@students)
Expand Down
3 changes: 2 additions & 1 deletion lib/course_planner/accounts/teachers.ex
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ defmodule CoursePlanner.Accounts.Teachers do
import Ecto.Query
alias CoursePlanner.{Repo, Accounts.User, Accounts.Users, Courses.OfferedCourse}

@teachers from u in User, where: u.role == "Teacher"
@teachers from u in User, where: u.role == "Teacher",
order_by: [u.name, u.family_name, u.nickname]

def all do
Repo.all(@teachers)
Expand Down
5 changes: 4 additions & 1 deletion lib/course_planner/accounts/users.ex
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,10 @@ defmodule CoursePlanner.Accounts.Users do
do: Application.get_env(:course_planner, :auth_password_reset_token_validation_days)

def all do
Repo.all(User)
query = from u in User,
order_by: [u.name, u.family_name, u.nickname]

Repo.all(query)
end

def add_default_password_params(user, token) do
Expand Down
3 changes: 2 additions & 1 deletion lib/course_planner/accounts/volunteers.ex
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ defmodule CoursePlanner.Accounts.Volunteers do
import Ecto.Query
alias CoursePlanner.{Repo, Accounts.User, Accounts.Users, Tasks.Task}

@volunteers from u in User, where: u.role == "Volunteer"
@volunteers from u in User, where: u.role == "Volunteer",
order_by: [u.name, u.family_name, u.nickname]

def all do
Repo.all(@volunteers)
Expand Down
15 changes: 12 additions & 3 deletions lib/course_planner/attendances/attendances.ex
Original file line number Diff line number Diff line change
Expand Up @@ -45,27 +45,36 @@ defmodule CoursePlanner.Attendances do

def get_all_offered_courses do
Repo.all(from oc in OfferedCourse,
join: te in assoc(oc, :term),
join: co in assoc(oc, :course),
join: c in assoc(oc, :classes),
join: s in assoc(oc, :students),
join: t in assoc(oc, :teachers),
preload: [:term, :course, teachers: t, students: s, classes: c])
preload: [term: t, course: co, teachers: t, students: s, classes: c],
order_by: [asc: te.name, asc: co.name])
end

def get_all_teacher_offered_courses(teacher_id) do
Repo.all(from oc in OfferedCourse,
join: te in assoc(oc, :term),
join: co in assoc(oc, :course),
join: t in assoc(oc, :teachers),
join: c in assoc(oc, :classes),
join: s in assoc(oc, :students),
preload: [:term, :course, teachers: t, students: s, classes: c],
preload: [term: t, course: co, teachers: t, students: s, classes: c],
order_by: [asc: te.name, asc: co.name],
where: t.id == ^teacher_id)
end

def get_all_student_offered_courses(student_id) do
Repo.all(from oc in OfferedCourse,
join: te in assoc(oc, :term),
join: co in assoc(oc, :course),
join: s in assoc(oc, :students),
join: c in assoc(oc, :classes),
join: t in assoc(oc, :teachers),
preload: [:term, :course, teachers: t, students: s, classes: c],
preload: [term: t, course: co, teachers: t, students: s, classes: c],
order_by: [asc: te.name, asc: co.name],
where: s.id == ^student_id)
end

Expand Down
12 changes: 12 additions & 0 deletions lib/course_planner/classes/classes.ex
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,18 @@ defmodule CoursePlanner.Classes do

@notifier Application.get_env(:course_planner, :notifier, Notifier)

def all do
query = from t in Term,
join: oc in assoc(t, :offered_courses),
join: co in assoc(oc, :course),
join: c in assoc(oc, :classes),
preload: [offered_courses: {oc, classes: c, course: co}],
order_by: [desc: t.start_date, desc: co.name, desc: c.date,
desc: c.starting_at, desc: c.finishes_at]

Repo.all(query)
end

def validate_for_holiday(%{valid?: true} = changeset) do
class_date = changeset |> Changeset.get_field(:date) |> Date.cast!
offered_course_id = changeset |> Changeset.get_field(:offered_course_id)
Expand Down
6 changes: 6 additions & 0 deletions lib/course_planner/courses/courses.ex
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,17 @@ defmodule CoursePlanner.Courses do
@moduledoc """
This module provides custom functionality for controller over the model
"""
import Ecto.Query

alias CoursePlanner.{Repo, Courses.Course, Terms, Notifications.Notifier, Notifications}

@notifier Application.get_env(:course_planner, :notifier, Notifier)

def all do
query = from c in Course, order_by: [asc: c.name]
Repo.all(query)
end

def delete(id) do
course = Repo.get(Course, id)
if is_nil(course) do
Expand Down
15 changes: 13 additions & 2 deletions lib/course_planner/events/events.ex
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,20 @@ defmodule CoursePlanner.Events do
}
alias Ecto.Changeset

def all, do: Repo.all(Event)
def all do
query = from e in Event,
order_by: [desc: e.starting_time, desc: e.finishing_time]

def all_with_users, do: Repo.preload(all(), :users)
Repo.all(query)
end

def all_with_users do
query = from e in Event,
preload: [:users],
order_by: [desc: e.starting_time, desc: e.finishing_time]

Repo.all(query)
end

def get(id) do
case Repo.get(Event, id) do
Expand Down
5 changes: 4 additions & 1 deletion lib/course_planner/tasks/tasks.ex
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,10 @@ defmodule CoursePlanner.Tasks do
import Ecto.Query, except: [update: 2]

def all do
Repo.all(Task)
query = from t in Task,
order_by: [desc: t.start_time, desc: t.finish_time]

Repo.all(query)
end
def all_with_users, do: all() |> Repo.preload(:volunteers)

Expand Down
12 changes: 7 additions & 5 deletions lib/course_planner/terms/terms.ex
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ defmodule CoursePlanner.Terms do
@notifier Application.get_env(:course_planner, :notifier, Notifier)

def all do
Repo.all(Term)
query = from t in Term, order_by: [desc: t.start_date, desc: t.end_date]
Repo.all(query)
end

def new do
Expand Down Expand Up @@ -106,7 +107,7 @@ defmodule CoursePlanner.Terms do
join: oc in assoc(t, :offered_courses),
join: co in assoc(oc, :course),
preload: [offered_courses: {oc, course: co}],
order_by: [asc: t.start_date, asc: co.name])
order_by: [desc: t.start_date, asc: co.name])
end
def find_all_by_user(%{role: "Teacher", id: user_id}) do
Repo.all(from t in Term,
Expand All @@ -115,7 +116,7 @@ defmodule CoursePlanner.Terms do
join: te in assoc(oc, :teachers),
preload: [offered_courses: {oc, course: co, teachers: te}],
where: te.id == ^user_id,
order_by: [asc: t.start_date, asc: co.name]
order_by: [desc: t.start_date, asc: co.name]
)
end
def find_all_by_user(%{role: "Student", id: user_id}) do
Expand All @@ -125,7 +126,7 @@ defmodule CoursePlanner.Terms do
join: s in assoc(oc, :students),
preload: [offered_courses: {oc, course: co, students: s}],
where: s.id == ^user_id,
order_by: [asc: t.start_date, asc: co.name]
order_by: [desc: t.start_date, asc: co.name]
)
end

Expand All @@ -138,6 +139,7 @@ defmodule CoursePlanner.Terms do
join: as in assoc(a, :student),
preload: [offered_courses: {oc, course: co, classes: {c, attendances: {a, student: as}}}],
where: as.id == ^student_id,
order_by: [asc: t.start_date, asc: t.end_date, asc: co.name, asc: c.date, asc: c.starting_at])
order_by: [desc: t.start_date, desc: t.end_date,
asc: co.name, asc: c.date, asc: c.starting_at])
end
end
13 changes: 2 additions & 11 deletions lib/course_planner_web/controllers/class_controller.ex
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,13 @@ defmodule CoursePlannerWeb.ClassController do
@moduledoc false
use CoursePlannerWeb, :controller

alias CoursePlanner.{Classes.Class, Classes, Attendances, Terms.Term}
alias CoursePlanner.{Classes.Class, Classes, Attendances}

import Canary.Plugs
plug :authorize_controller

def index(conn, _params) do
query = from t in Term,
join: oc in assoc(t, :offered_courses),
join: co in assoc(oc, :course),
join: c in assoc(oc, :classes),
preload: [offered_courses: {oc, classes: c, course: co}],
order_by: [asc: t.start_date, asc: co.name, asc: c.date, asc: c.starting_at, asc: c.finishes_at]

terms = Repo.all(query)

render(conn, "index.html", terms: terms)
render(conn, "index.html", terms: Classes.all())
end

def new(conn, _params) do
Expand Down
3 changes: 1 addition & 2 deletions lib/course_planner_web/controllers/course_controller.ex
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,7 @@ defmodule CoursePlannerWeb.CourseController do
plug :authorize_controller

def index(conn, _params) do
courses = Repo.all(Course)
render(conn, "index.html", courses: courses)
render(conn, "index.html", courses: Courses.all())
end

def new(conn, _params) do
Expand Down
4 changes: 2 additions & 2 deletions lib/course_planner_web/controllers/term_controller.ex
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@ defmodule CoursePlannerWeb.TermController do
@moduledoc false
use CoursePlannerWeb, :controller

alias CoursePlanner.Terms
alias CoursePlanner.{Terms, Terms.Term}
alias Ecto.Changeset

import Canary.Plugs
plug :authorize_controller

def index(conn, _params) do
render(conn, "index.html", terms: Terms.all)
render(conn, "index.html", terms: Terms.all())
end

def new(conn, _params) do
Expand Down

0 comments on commit 6a50338

Please sign in to comment.