Skip to content
This repository was archived by the owner on Sep 29, 2020. It is now read-only.

Commit ed5c0ce

Browse files
authored
v0.1.7
Merge pull request #22 from TechforgoodCAST/dev
2 parents 2153d69 + a4bea49 commit ed5c0ce

File tree

19 files changed

+225
-10
lines changed

19 files changed

+225
-10
lines changed

app/assets/stylesheets/modules/button.sass

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
.btn, .btn-wide
1+
.btn:not(.no-style), .btn-wide
22
font-size: 22px
33
font-weight: bold
44
text-decoration: none

app/assets/stylesheets/modules/form.sass

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
input, textarea
1+
input:not(.no-style), textarea
22
background: $off-white
33
width: 100%
44
padding: 15px
55
font-size: 14px
66

7-
input
7+
input:not(.no-style)
88
border: 1px solid $grey
99

1010
textarea
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
class AssignmentsController < ApplicationController
2+
before_action :load_referral, except: :new
3+
before_action :parse_date, only: :index
4+
5+
def index
6+
@referrals = Referral.joins(:assignees).order(created_at: :desc)
7+
.by_month(@date, col: 'referrals.created_at')
8+
.select('referrals.*', 'users.first_name', 'users.last_name')
9+
end
10+
11+
def create
12+
@assignment = Assignment.new(form_params)
13+
@assignment.referral = @referral
14+
15+
if @assignment.save!
16+
redirect_to referral_path(@referral.partner, @referral)
17+
else
18+
render :new
19+
end
20+
end
21+
22+
def destroy
23+
@assignment = Assignment.find_by(referral: @referral, user_id: params[:user_id])
24+
@assignment.destroy
25+
26+
redirect_to referral_path(@referral.partner, @referral)
27+
end
28+
29+
private
30+
31+
def form_params
32+
params.require(:assignment).permit(:user_id)
33+
end
34+
35+
def load_referral
36+
@referral = Referral.find_by(sequential_id: params[:id])
37+
end
38+
end

app/controllers/referrals_controller.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ def index
1919

2020
def show
2121
@referral = @partner.referrals.find_by(sequential_id: params[:id])
22+
@users = User.all - User.joins(:assignments).where('referral_id = ?', @referral)
2223
render_status(404) if @referral.nil?
2324
end
2425

app/models/assignment.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
class Assignment < ApplicationRecord
2+
belongs_to :referral
3+
belongs_to :user
4+
end

app/models/referral.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ class Referral < ApplicationRecord
44
belongs_to :partner
55
acts_as_sequenced scope: :partner_id
66

7+
has_many :assignments
8+
has_many :assignees, through: :assignments, source: :user
9+
710
has_many :reviews, dependent: :destroy
811

912
validates :last_state, inclusion: { in: STATES }

app/models/user.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,12 @@ class User < ApplicationRecord
22
devise :database_authenticatable,
33
:recoverable, :rememberable, :validatable, :trackable
44

5+
has_many :assignments
56
has_many :reviews
67

78
validates :first_name, :last_name, presence: true
9+
10+
def full_name
11+
"#{first_name} #{last_name}"
12+
end
813
end
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
<div class="mt50 mb40">
2+
3+
<% if @referrals.any? %>
4+
5+
<div class="row bold h2">
6+
<div class="sm f1 truncate">Identifier</div>
7+
<div class="sm f1 truncate">Partner</div>
8+
<div class="sm f1 truncate">Status</div>
9+
<div class="sm f1 truncate">Date</div>
10+
</div>
11+
12+
<% @referrals.group_by { |o| "#{o.first_name} #{o.last_name}" }.each do |g| %>
13+
14+
<div class="mb10">Assigned to <%= g[0] %> (<%= g[1].size %>)</div>
15+
16+
<% g[1].each.each do |r| %>
17+
18+
<%= link_to(
19+
referral_path(r.partner, r),
20+
class: "row h3 mb10 #{requires_review(r.last_state)}"
21+
) do %>
22+
<span class="sm f1 truncate bold">
23+
<%= r.response_identifier %>
24+
</span>
25+
<span class="sm f1 truncate">
26+
<%= r.partner.name %>
27+
</span>
28+
<%= status_text(r.last_state) %>
29+
<span class="sm f1 truncate">
30+
<%= r.created_at.strftime('%d / %m / %y') %>
31+
</span>
32+
<% end %>
33+
<% end %>
34+
35+
<% end %>
36+
37+
<% else %>
38+
39+
<div class="center">No assignees this month.</div>
40+
41+
<% end %>
42+
43+
</div>
44+
45+
<%= render(partial: 'layouts/month_picker', locals: { date: @date, path: :advisors_path }) %>

app/views/layouts/application.html.erb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@
1616
<div class="mw-767 mx-auto flex justify-between">
1717
<div>
1818
<%= link_to('Slots', root_path, class: "nav-item h2 bold black mr40 #{current_page?(root_path) ? 'active' : ''}") %>
19-
<%= link_to('Referrals', referrals_path, class: "nav-item h2 bold black #{current_page?(referrals_path) ? 'active' : ''}") %>
19+
<%= link_to('Referrals', referrals_path, class: "nav-item h2 bold black mr40 #{current_page?(referrals_path) ? 'active' : ''}") %>
20+
<%= link_to('Advisors', advisors_path, class: "nav-item h2 bold black #{current_page?(advisors_path) ? 'active' : ''}") %>
2021
</div>
2122
<%= link_to('Log Out', destroy_user_session_path, method: :delete, class: 'nav-item h2 bold black underline') %>
2223
</div>

app/views/referrals/show.html.erb

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<div class="mt50 mb20">
2-
<%= link_to("❮ Go back", referrals_path, class: "h1 bold underline") %>
2+
<%= link_to("❮ Back to referrals", referrals_path, class: "bold underline") %>
33
</div>
44

55
<div class="row bold h2">
@@ -49,7 +49,7 @@
4949
</div>
5050
<% end %>
5151

52-
<div class="p15 bg-white rounded">
52+
<div class="p15 bg-white rounded mb20">
5353
<h3 class="bold mb20">Change status</h3>
5454

5555
<%= simple_form_for @referral.reviews.new, url: new_referral_review_path(@partner, @referral) do |f| %>
@@ -72,3 +72,23 @@
7272
</div>
7373
<% end %>
7474
</div>
75+
76+
<div class="p15 bg-white rounded">
77+
<h3 class="bold mb20">Assignees</h3>
78+
<%- if @referral.assignees.any? %>
79+
<ul class="mb20">
80+
<%- @referral.assignees.each do |user| %>
81+
<li><%= user.full_name %> <%= link_to '(Unassign)', assignment_path(@referral.partner, @referral, user), method: :delete, data: { confirm: 'Are you sure?' } %></li>
82+
<% end %>
83+
</ul>
84+
<% else %>
85+
<p class="mb20"><em>None</em></p>
86+
<% end %>
87+
88+
<p><strong>Assign advisor</strong></p>
89+
90+
<%= simple_form_for Assignment.new, url: new_assignment_path(@partner, @referral) do |f| %>
91+
<%= f.input :user_id, collection: @users, label_method: :full_name, label: false, wrapper_html: { style: "display: inline-block" } %>
92+
<%= f.button :submit, "Assign", class: "no-style", data: { disable_with: "Assigning..." } %>
93+
<% end %>
94+
</div>

0 commit comments

Comments
 (0)