MakersNetwork/agenda-saude

View on GitHub
app/views/community/appointments/index.html.erb

Summary

Maintainability
Test Coverage
<% if @appointment -%>
  <ul class="container">
    <li class="card">
      <h4 class="card-header">Sua vacinação agendada:</h4>
      <ul class="list-group list-group-flush">
        <li class="list-group-item">
          <%= render @appointment %>
        </li>
        <li class="list-group-item">
          <div class="row">
            <div class="col">
              <%= link_to "« Voltar e manter meu agendamento",
                          home_community_appointments_path,
                          class: "btn btn-secondary btn-block" %>
            </div>
          </div>
        </li>
      </ul>
    </li>
  </ul>
<% end -%>

<div class="container">
  <div class="row">
    <div class="col">
      <% if current_patient.doses.exists? -%>
        <div class="alert alert-info">
          Serão exibidas apenas as unidades definidas pela Secretaria da Saúde para receber reagendamento da dose de reforço.
        </div>
      <% else -%>
        <div class="alert alert-info">
          Para agendar, escolha um dia, unidade e clique no horário disponível desejado.
        </div>
      <% end -%>
    </div>
  </div>
</div>

<div class="container">
  <div class="row mt-3">
    <div class="col">
      <nav aria-label="Page navigation">
        <ul class="pagination justify-content-center">
          <%=
            content_tag :li, class: "page-item #{@days <= 0 ? :disabled : :active}" do
              link_to "« Dia anterior",
                      community_appointments_path(page: @days - 1),
                      class: "page-link",
                      data: { cy: "previousDayButton" }
            end
          %>
          <li class="page-item active disabled">
            <a class="page-link" href="#">
              <%= l @days.days.from_now, format: :short_date %>
            </a>
          </li>
          <%=
            content_tag :li, class: "page-item #{@days >= Rails.configuration.x.schedule_up_to_days ? :disabled : :active}" do
              link_to "Próximo dia »",
                      community_appointments_path(page: @days + 1),
                      class: "page-link",
                      data: { cy: "nextDayButton" }
            end
          %>
        </ul>
      </nav>
    </div>
  </div>
</div>

<div class="container">
  <div class="row">
    <div class="col">
      <div class="card">
        <div class="card-header">
          <h4 class="mt-2 card-title">Unidades com disponibilidade nesta data:</h4>
          <p class="card-text">Clique no nome da unidade para ver os horários disponíveis na mesma.</p>
        </div>
        <ul class="list-group list-group-flush">
          <% if @appointments.empty? -%>
            <li class="list-group-item">
              <h4 class="text-muted mt-5 mb-5 text-center">Nenhuma vaga disponível.</h4>
            </li>
          <% end -%>

          <% @appointments.each do |ubs, slots| -%>
            <li class="list-group-item mt-2">
              <a class=""
                 data-toggle="collapse" role="button" aria-expanded="false"
                 href="#ubs<%= ubs.id %>"
                 aria-controls="ubs<%= ubs.id %>"
                 data-cy="ubs<%= ubs.id %>Button"
              >
                <h5>
                  <%= ubs.name %>
                  <small>
                    <%= ubs.full_address %>
                  </small>
                  <% if ubs.neighborhood_id == current_patient.neighborhood_id -%>
                    <span class="badge badge-success">No seu bairro</span>
                  <% end -%>
                </h5>
              </a>

              <div class="collapse" id="ubs<%= ubs.id %>">
                <p>Escolha um horário abaixo. Clicando no botão, tentaremos agendar a vaga imediatamente.</p>
                <%= form_with url: community_appointments_path, method: :post, local: true do |f| %>
                  <%= hidden_field_tag "appointment[ubs_id]", ubs.id %>
                  <% slots.in_groups_of(4) do |slot_group| -%>
                    <div class="row">
                      <% slot_group.each do |slot| -%>
                        <div class="col-sm mt-4">
                          <% if slot -%>
                            <%= f.button name: "appointment[start]",
                                         value: slot.start,
                                         class: "btn btn-primary btn-lg btn-block",
                                         data: { cy: "scheduleTimeButton" } do %>
                              <%= l(slot.start, format: :short_hour) %>
                            <% end -%>
                          <% end -%>
                        </div>
                      <% end -%>
                    </div>
                  <% end -%>
                <% end -%>
              </div>
            </li>
          <% end -%>
        </ul>
      </div>
    </div>
  </div>
</div>