BathHacked/energy-sparks

View on GitHub
app/views/admin/school_groups/users/show.html.erb

Summary

Maintainability
Test Coverage
<div class="d-flex justify-content-between align-items-center">
  <h1><%= @school_group.name %> Users</h1>
  <div>
    <%= header_nav_link 'Manage school group', admin_school_group_path(@school_group) %>
    <%= header_nav_link 'All users', admin_users_path %>
  </div>
</div>

<div class="row mb-2">
  <div class="col">
    <%= link_to 'Download as CSV', admin_school_group_users_path(@school_group, format: :csv), class: 'btn btn-sm' %>
  </div>
</div>

<% if @group_admins.any? %>
  <div class="flex row justify-content-between">
    <div>
      <h2>Group Admins</h2>
    </div>
    <div>
      <%= link_to 'Lock all group users', lock_all_admin_school_group_users_path, class: 'btn btn-warning btn-sm',
                                                                                  data: { confirm: 'Are you sure?' } %>
    </div>
  </div>

  <table class="table table-sm table-sorted">
    <thead>
      <tr>
        <th>Name</th>
        <th>Email</th>
        <th>Confirmed?</th>
        <th>Last signed in</th>
        <th>Language</th>
        <th>Locked?</th>
        <th></th>
      </tr>
    </thead>
    <tbody>
      <% @group_admins.each do |user| %>
        <tr class="<%= 'table-danger' if user.access_locked? %>">
          <td><%= user.name %></td>
          <td><%= user.pupil? ? 'N/A' : user.email %></td>
          <td><%= y_n(user.confirmed?) %></td>
          <td data-order="<%= user.last_sign_in_at&.iso8601 %>"><%= display_last_signed_in_as(user) %></td>
          <td><%= I18n.t("languages.#{user.preferred_locale}") %></td>
          <td><%= y_n(user.access_locked?) %></td>
          <td>
            <div class="btn-group">
              <%= link_to 'Edit', edit_admin_user_path(user), class: 'btn btn-primary btn-sm' %>
              <%= link_to 'Delete', admin_user_path(user), method: :delete, data: { confirm: 'Are you sure?' },
                                                           class: 'btn btn-danger btn-sm' %>
            </div>
            <%= unless user.confirmed?
                  button_to 'Resend confirmation', admin_user_confirmation_path(user), class: 'btn btn-warning btn-sm'
                end %>

            <% if user.access_locked? %>
              <%= link_to 'Unlock', unlock_admin_school_group_users_path(user_id: user.id),
                          class: 'btn btn-warning btn-sm' %>
            <% else %>
              <%= link_to 'Lock', lock_admin_school_group_users_path(user_id: user.id), class: 'btn btn-warning btn-sm' %>
            <% end %>
          </td>
        </tr>
      <% end %>
    </tbody>
  </table>
<% end %>

<h2>School Users</h2>

<table class="table table-sm table-sorted">
  <thead>
    <tr>
      <th>School</th>
      <th>Name</th>
      <th>Email</th>
      <th>Role</th>
      <th>Staff Role</th>
      <th>Confirmed?</th>
      <th>Last signed in</th>
      <th>Alerts</th>
      <th>Language</th>
      <th>Locked?</th>
      <th></th>
    </tr>
  </thead>
  <tbody>
    <% @school_group.schools.by_name.each do |school| %>
      <% @school_users[school].each do |user| %>
      <tr class="<%= 'table-danger' if user.access_locked? %>">
          <td><%= link_to school.name, school_path(school) %></td>
          <td><%= user.name %></td>
          <td><%= user.pupil? ? 'N/A' : user.email %></td>
          <td><%= user.role.titleize %></td>
          <td><%= user.staff_role&.title %></td>
          <td><%= y_n(user.confirmed?) %></td>
          <td data-order="<%= user.last_sign_in_at&.iso8601 %>"><%= display_last_signed_in_as(user) %></td>
          <td><%= y_n(user.contact_for_school) %></td>
          <td><%= I18n.t("languages.#{user.preferred_locale}") %></td>
          <td><%= y_n(user.access_locked?) %></td>
          <td>
            <div class="btn-group">
              <%= link_to 'Edit', edit_admin_user_path(user), class: 'btn btn-primary btn-sm' %>
              <%= link_to 'Delete', admin_user_path(user), method: :delete, data: { confirm: 'Are you sure?' },
                                                           class: 'btn btn-danger btn-sm' %>
            </div>
            <%= unless user.confirmed?
                  button_to 'Resend confirmation', admin_user_confirmation_path(user), class: 'btn btn-warning btn-sm'
                end %>
            <% if user.access_locked? %>
              <%= link_to 'Unlock', unlock_admin_school_group_users_path(user_id: user.id),
                          class: 'btn btn-warning btn-sm' %>
            <% else %>
              <%= link_to 'Lock', lock_admin_school_group_users_path(user_id: user.id), class: 'btn btn-warning btn-sm' %>
            <% end %>
          </td>
        </tr>
      <% end %>
    <% end %>
  </tbody>
</table>