Skip to content

Commit

Permalink
add messagaeble rendering and include in show message
Browse files Browse the repository at this point in the history
  • Loading branch information
bedrock-adam committed Sep 30, 2024
1 parent ca1c9c0 commit d16934e
Show file tree
Hide file tree
Showing 5 changed files with 69 additions and 47 deletions.
13 changes: 5 additions & 8 deletions app/models/event.rb
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
class Event
attr_accessor :id
attr_accessor :id, :type

def self.find(id)
new(
id: id,
name: 'Stubbed Event',
description: 'This is a stubbed event for testing purposes.',
type: 'Accountify::Contact::CreatedEvent',
created_at: Time.now.utc,
header: {
'user' => { 'id' => 1, 'name' => 'Alice', 'email' => '[email protected]' },
Expand All @@ -19,10 +18,9 @@ def self.find(id)
)
end

def initialize(id:, name:, description:, created_at:, header:, body:)
def initialize(id:, type:, created_at:, header:, body:)
@id = id
@name = name
@description = description
@type = type
@created_at = created_at
@header = header
@body = body
Expand All @@ -31,8 +29,7 @@ def initialize(id:, name:, description:, created_at:, header:, body:)
def attributes
{
'id' => @id,
'name' => @name,
'description' => @description,
'type' => @type,
'created_at' => @created_at,
'header' => @header,
'body' => @body
Expand Down
52 changes: 28 additions & 24 deletions lib/outboxer/web.rb
Original file line number Diff line number Diff line change
Expand Up @@ -443,11 +443,38 @@ def normalise_query_string(status: Messages::LIST_STATUS_DEFAULT,

message = Message.find_by_id(id: params[:id])

messageable_class = Object.const_get(message[:messageable_type])
messageable = messageable_class.find(message[:messageable_id])

erb :message, locals: {
denormalised_query_params: denormalised_query_params,
normalised_query_params: normalised_query_params,
messages_metrics: messages_metrics,
message: message
message: message,
messageable: messageable
}
end

get '/message/:id/messageable' do
denormalised_query_params = denormalise_query_params(
status: params[:status],
sort: params[:sort],
order: params[:order],
page: params[:page],
per_page: params[:per_page],
time_zone: params[:time_zone])

message = Message.find_by_id(id: params[:id])
messages_metrics = Messages.metrics

messageable_class = Object.const_get(message[:messageable_type])
messageable = messageable_class.find(message[:messageable_id])

erb :messageable, locals: {
message: message,
messageable: messageable,
messages_metrics: messages_metrics,
denormalised_query_params: denormalised_query_params
}
end

Expand Down Expand Up @@ -498,28 +525,5 @@ def normalise_query_string(status: Messages::LIST_STATUS_DEFAULT,

redirect to("/messages#{normalised_query_string}")
end

get '/message/:id/messageable' do
denormalised_query_params = denormalise_query_params(
status: params[:status],
sort: params[:sort],
order: params[:order],
page: params[:page],
per_page: params[:per_page],
time_zone: params[:time_zone])

message = Message.find_by_id(id: params[:id])
messages_metrics = Messages.metrics

messageable_class = Object.const_get("#{message[:messageable_type]}")
messageable = messageable_class.find(message[:messageable_id])

erb :messageable, locals: {
message: message,
messageable: messageable,
messages_metrics: messages_metrics,
denormalised_query_params: denormalised_query_params
}
end
end
end
43 changes: 30 additions & 13 deletions lib/outboxer/web/views/message.erb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<div class="container my-4">
<div class="container my-4"<div class="container my-4">
<div class="card">
<div class="card-header d-flex justify-content-between align-items-center">
<h3 class="mb-0">Message <%= message[:id] %></h3>
Expand All @@ -14,9 +14,8 @@
</button>
</form>
<!-- Delete Form -->
<form action="<%= outboxer_path("/message/#{message[:id]}/delete") %>" method="post" style="display: inline;
<form action="<%= outboxer_path("/message/#{message[:id]}/delete") %>" method="post" style="display: inline;"
onsubmit="return confirm('Are you sure you want to delete this message?');">

<% normalised_query_params.each do |key, param| %>
<input type="hidden" name="<%= key %>" value="<%= param %>">
<% end %>
Expand All @@ -33,33 +32,51 @@
<th scope="row">Id</th>
<td><%= message[:id] %></td>
</tr>
<tr>
<th scope="row">Messageable Type</th>
<td><%= message[:messageable_type] %></td>
</tr>
<tr>
<th scope="row">Messageable Id</th>
<td><%= message[:messageable_id] %></td>
</tr>
<tr>
<th scope="row">Status</th>
<td><%= message[:status] %></td>
</tr>
<tr>
<th scope="row">Created At</th>
<td><%= message[:created_at] %></td>
<td><%= message[:created_at].in_time_zone(denormalised_query_params[:time_zone]) %></td>
</tr>
<tr>
<th scope="row">Updated At</th>
<td><%= message[:updated_at] %></td>
<td><%= message[:updated_at].in_time_zone(denormalised_query_params[:time_zone]) %></td>
</tr>
<tr>
<th scope="row">Updated By</th>
<td><%= message[:updated_by] %></td>
</tr>
<tr>
<th scope="row">Messageable</th>
<td>
<%= message[:messageable_type] %>::<%= message[:messageable_id] %><br/><br/>

<div class="nested-table-wrapper mt-2">
<table class="table table-bordered">
<tbody>
<% messageable.attributes.each do |key, value| %>
<tr>
<th scope="row" class="w-25"><%= key.humanize %></th>
<td>
<% if value.is_a?(Hash) || value.is_a?(Array) %>
<pre class="mb-0"><%= JSON.pretty_generate(value) %></pre>
<% else %>
<%= value %>
<% end %>
</td>
</tr>
<% end %>
</tbody>
</table>
</div>
</td>
</tr>
</tbody>
</table>

<!-- Exceptions Accordion -->
<div class="accordion" id="exceptionsAccordion">
<% message[:exceptions].each_with_index do |exception, index| %>
<div class="accordion-item">
Expand Down
2 changes: 1 addition & 1 deletion lib/outboxer/web/views/messageable.erb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<div class="container mt-4"<div class="container my-4">
<div class="container my-4">
<div class="card">
<div class="card-header d-flex justify-content-between align-items-center">
<h3 class="mb-0"><%= messageable.class.name %> <%= messageable.id %></h3>
Expand Down
6 changes: 5 additions & 1 deletion lib/outboxer/web/views/messages.erb
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,11 @@
</a>
</td>
<td><%= message[:status] %></td>
<td><%= message[:messageable_type] %>::<%= message[:messageable_id] %></td>
<td>
<a href="<%= outboxer_path("/message/#{message[:id]}/messageable#{normalised_query_string}") %>" class="custom-link">
<%= message[:messageable_type] %>::<%= message[:messageable_id] %>
</a>
</td>
<td>
<%= message[:created_at] %>
</td>
Expand Down

0 comments on commit d16934e

Please sign in to comment.