Skip to content
Snippets Groups Projects
Commit b567f1d6 authored by Arnaud Levy's avatar Arnaud Levy
Browse files

declarative connections

parent 31d1ee68
No related branches found
No related tags found
No related merge requests found
class Admin::Communication::Extranets::ContactsController < Admin::Communication::Extranets::ApplicationController
def index
@persons = @extranet.connections.where(object_type: 'University::Person').page params[:page]
@persons = current_university.people.ordered
@organizations = current_university.organizations.ordered
breadcrumb
add_breadcrumb Communication::Extranet.human_attribute_name(:feature_contacts)
end
def connect
load_object
@extranet.connect @object
redirect_back(fallback_location: admin_communication_extranet_contacts_path(@extranet))
end
def disconnect
load_object
@extranet.disconnect @object
redirect_back(fallback_location: admin_communication_extranet_contacts_path(@extranet))
end
protected
def load_object
object_type = params[:objectType]
object_id = params[:objectId]
@object = object_type.constantize.find object_id
end
end
\ No newline at end of file
......@@ -4,5 +4,16 @@ module Communication::Extranet::WithConnections
included do
has_many :connections
end
def connected?(object)
connections.where(university: university, object: object).any?
end
def connect(object)
connections.where(university: university, object: object).first_or_create
end
def disconnect(object)
connections.where(university: university, object: object).destroy_all
end
end
\ No newline at end of file
<% content_for :title, Communication::Extranet.human_attribute_name(:feature_contacts) %>
<%= render 'admin/communication/extranets/sidebar' do %>
Search
<table class="<%= table_classes%>">
<tbody>
<% @persons.each do |person| %>
<tr>
<td><%= link_to person, [:admin, person] %></td>
<td><%= link_to 'Déconnecter',
disconnect_admin_communication_extranet_contacts_path(
extranet_id: @extranet.id,
objectId: person.id,
objectType: person.class
),
class: button_classes_danger,
method: :post %></td>
</tr>
<% end %>
</tbody>
</table>
<%= paginate @persons, theme: 'bootstrap-5' %>
<%= osuny_panel University::Person.model_name.human(count: 2) do %>
<table class="<%= table_classes%>">
<tbody>
<% @persons.each do |person| %>
<tr>
<td><%= link_to person, [:admin, person] %></td>
<td><%= person.email %></td>
<td>
<% if @extranet.connected?(person) %>
<%= link_to 'Déconnecter',
disconnect_admin_communication_extranet_contacts_path(
extranet_id: @extranet.id,
objectId: person.id,
objectType: person.class
),
class: button_classes_danger,
method: :post %>
<% else %>
<%= link_to 'Connecter',
connect_admin_communication_extranet_contacts_path(
extranet_id: @extranet.id,
objectId: person.id,
objectType: person.class
),
class: button_classes,
method: :post %>
<% end %>
</td>
</tr>
<% end %>
</tbody>
</table>
<% end %>
<%= osuny_panel University::Organization.model_name.human(count: 2) do %>
<table class="<%= table_classes%>">
<tbody>
<% @organizations.each do |organization| %>
<tr>
<td><%= link_to organization, [:admin, organization] %></td>
<td>
<% if @extranet.connected?(organization) %>
<%= link_to 'Déconnecter',
disconnect_admin_communication_extranet_contacts_path(
extranet_id: @extranet.id,
objectId: organization.id,
objectType: organization.class
),
class: button_classes_danger,
method: :post %>
<% else %>
<%= link_to 'Connecter',
connect_admin_communication_extranet_contacts_path(
extranet_id: @extranet.id,
objectId: organization.id,
objectType: organization.class
),
class: button_classes,
method: :post %>
<% end %>
</td>
</tr>
<% end %>
</tbody>
</table>
<% end %>
<% end %>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment