Skip to content

Commit

Permalink
Changes based on PR.
Browse files Browse the repository at this point in the history
  • Loading branch information
xpavle00 committed Sep 1, 2024
1 parent 8eacb90 commit 1d32da8
Show file tree
Hide file tree
Showing 12 changed files with 180 additions and 156 deletions.
18 changes: 18 additions & 0 deletions app/assets/javascripts/application.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,4 +50,22 @@ $(document).on("turbolinks:load", function () {
.classList.add("active-topic__hidden");
});
}

var changeNotificationDateLink = document.querySelector("#change-notification-date-link");
if (changeNotificationDateLink) {
changeNotificationDateLink.addEventListener("click", function (e) {
e.preventDefault();
$("#change-notification-date").removeClass("sdn-appear-link-hide");
$("#deadline-notifications-info").addClass("sdn-appear-link-hide");
});
}

var changeNotificationDateClose = document.querySelector("#change-notification-date-close");
if (changeNotificationDateClose) {
changeNotificationDateClose.addEventListener("click", function (e) {
e.preventDefault();
$("#change-notification-date").addClass("sdn-appear-link-hide");
$("#deadline-notifications-info").removeClass("sdn-appear-link-hide");
});
}
});
54 changes: 54 additions & 0 deletions app/controllers/deadline_notifications_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
class DeadlineNotificationsController < ApplicationController
before_action :set_journey_and_step
def subscribe_to_deadline_notification
notification_date = params[:notification_date] ? Date.parse(params[:notification_date]) : nil
notification_date ||= Date.new(params[:year].to_i, params[:month].to_i, params[:day].to_i)

@user_journey = UserJourney.order(id: :desc).find_by(user: current_user, journey: @journey)
@user_step = @user_journey.user_steps.find_by(step: @current_step)

@user_step.update(to_be_notified_at: notification_date)
respond_to do |format|
format.html do
redirect_to [@journey, @current_step]
end
format.js do
render 'deadline_notifications_updated'
end
end

rescue Date::Error => e
respond_to do |format|
format.html do
redirect_to [@journey, @current_step]
end
format.js do
render 'deadline_notifications_update_error'
end
end
end

def unsubscribe_deadline_notification
@user_journey = UserJourney.order(id: :desc).find_by(user: current_user, journey: @journey)
@user_step = @user_journey.user_steps.find_by(step: @current_step)

@user_step.update(to_be_notified_at: nil)

respond_to do |format|
format.html do
redirect_to [@journey, @current_step]
end
format.js do
render 'deadline_notifications_updated'
end
end

end

private

def set_journey_and_step
@journey = Journey.published.find_by!(slug: params[:journey_id])
@current_step = @journey.steps.find_by!(slug: params[:id])
end
end
54 changes: 1 addition & 53 deletions app/controllers/steps_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ def update

@current_step = @journey.steps.find_by(slug: params[:id])
@user_step = @user_journey.user_steps.find_or_initialize_by(step: @current_step)
@user_step.update_status(new_status: params['status'])
@user_step.update(status: params['status'], submitted_at: params['status'] == 'waiting' ? Date.today : nil)

respond_to do |format|
format.html do
Expand All @@ -41,58 +41,6 @@ def start
redirect_to step.app_url
end

def subscribe_to_deadline_notification
@journey = Journey.published.find_by!(slug: params[:journey_id])
@current_step = @journey.steps.find_by!(slug: params[:id])

notification_date = params[:notification_date] ? Date.parse(params[:notification_date]) : nil
notification_date ||= Date.new(params[:year].to_i, params[:month].to_i, params[:day].to_i)

@user_journey = UserJourney.order(id: :desc).find_by(user: current_user, journey: @journey)
@user_step = @user_journey.user_steps.find_by(step: @current_step)

@user_step.update(to_be_notified_at: notification_date)

respond_to do |format|
format.html do
redirect_to [@journey, @current_step]
end
format.js do
render 'step_subscription_updated'
end
end

rescue Date::Error => e
respond_to do |format|
format.html do
redirect_to [@journey, @current_step]
end
format.js do
render 'step_subscription_update_error'
end
end
end

def unsubscribe_deadline_notification
@journey = Journey.published.find_by!(slug: params[:journey_id])
@current_step = @journey.steps.find_by!(slug: params[:id])

@user_journey = UserJourney.order(id: :desc).find_by(user: current_user, journey: @journey)
@user_step = @user_journey.user_steps.find_by(step: @current_step)

@user_step.update(to_be_notified_at: nil)

respond_to do |format|
format.html do
redirect_to [@journey, @current_step]
end
format.js do
render 'step_subscription_updated'
end
end

end

private def redirect_inactive_eu_application
return if Apps::EpVoteApp::ApplicationForm.active?
redirect_to apps_ep_vote_app_application_forms_path if params[:journey_id] == "volby-do-eu-parlamentu"
Expand Down
2 changes: 1 addition & 1 deletion app/models/step.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ class Step < ApplicationRecord
validates :slug, presence: true, uniqueness: true
validates :description, presence: true
validates :is_waiting_step, inclusion: { in: [true, false] }
validates :waiting_time, :numericality => { :greater_than_or_equal_to => 0 }
validates :waiting_time, :numericality => { greater_than_or_equal_to: 0 }

# FIXME: fill in position from id!

Expand Down
4 changes: 0 additions & 4 deletions app/models/user_step.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,6 @@ def refresh_status
end
end

def update_status(new_status:)
update(status: new_status, submitted_at: new_status == 'waiting' ? Date.today : nil)
end

def remaining_time
step.waiting_time - (Date.today - submitted_at).to_i
end
Expand Down
Original file line number Diff line number Diff line change
@@ -1,29 +1,24 @@
<div id="step_subscription">
<% if current_user_step.submitted_at %>
<p>
Teraz treba počkať na rozhodnutie. Ostáva <%= current_user_step.remaining_time %> z
pôvodných <%= t('components.deadline.remaining_days', count: @current_step.waiting_time) %>.
</p>
<% end %>
<div id="subsciption_info">
<% if current_user_step.to_be_notified_at %>
<p>
Budeme vás o tom notifikovať e-mailom <%= current_user_step.to_be_notified_at.strftime('%d.%m.%Y') %>.
O vypršaní lehoty vám zašleme notifikáciu e-mailom dňa <%= current_user_step.to_be_notified_at.strftime('%d.%m.%Y') %>.
<a id="change-notification-date-link" href="#">Zmeniť dátum</a>
</p>
<%= form_tag unsubscribe_deadline_notification_journey_step_path(@current_step.journey, @current_step), remote: true, authenticity_token: true, method: :delete do %>
<%= hidden_field_tag :current_user_step_id, current_user_step.id %>
<%= submit_tag 'Zrušiť naplánovanú notifikáciu.', class: 'govuk-button' %>
<%= submit_tag 'Zrušiť notifikáciu', class: 'govuk-button govuk-button--warning' %>
<% end %>
<% else
current_user_step.submitted_at %>
<p>
Pošleme Vám na e-mail notifikáciu keď sa bude lehota blížiť?
Vychádza to na <%= current_user_step.expected_resolution_date.strftime('%d.%m.%Y') %>
Ak si želáte môžeme vám poslať notifikáciu dňa <%= current_user_step.expected_resolution_date.strftime('%d.%m.%Y') %>.
<a id="change-notification-date-link" href="#">Zmeniť dátum</a>
</p>

<%= form_tag subscribe_to_deadline_notification_journey_step_path(@current_step.journey, @current_step), remote: true, authenticity_token: true do %>
<%= hidden_field_tag :current_user_step_id, current_user_step.id %>
<%= hidden_field_tag :notification_date, current_user_step.expected_resolution_date %>
<%= submit_tag 'Áno, toto chcem.', class: 'govuk-button' %>
<%= submit_tag 'Zapnúť notifikáciu', class: 'govuk-button' %>
<% end %>
<% end %>
</div>
36 changes: 36 additions & 0 deletions app/views/deadline_notifications/_subscription_settings.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
<div id="deadline-notifications-info">
<%= render 'deadline_notifications/subscription_info', current_user_step: current_user_step %>
</div>
<div id="change-notification-date" class="sdn-appear-link-hide">
<%= form_tag subscribe_to_deadline_notification_journey_step_path(@current_step.journey, @current_step) , remote: true, authenticity_token: true do %>
<div class="govuk-form-group">
<div class="govuk-grid-column-two-thirds" style="padding: 0">
Zmeniť dátum notifikácie
</div>
<div class="govuk-grid-column-one-third" style="text-align:right">
<a href="#" id="change-notification-date-close">Zatvoriť</a>
</div>
<span id="dob-error" class="govuk-error-message sdn-appear-link-hide">
<span class="govuk-visually-hidden">Chyba:</span> Zadali ste neplatný dátum
</span>
<div class="govuk-date-input" id="dob">
<div class="govuk-date-input__item">
<div class="govuk-form-group">
<%= label_tag 'dob-day', 'Deň', class: "govuk-label govuk-date-input__label" %>
<%= number_field_tag 'day', current_user_step.expected_resolution_date.day, required: true, min: 1, max: 31, class: 'govuk-input govuk-date-input__input govuk-input--width-2', id: 'dob-day' %></div>
</div>
<div class="govuk-date-input__item">
<div class="govuk-form-group">
<%= label_tag 'dob-month', 'Mesiac', class: "govuk-label govuk-date-input__label" %>
<%= number_field_tag 'month', current_user_step.expected_resolution_date.month, required: true, min: 1, max: 12, class: 'govuk-input govuk-date-input__input govuk-input--width-2', id: 'dob-month' %></div>
</div>
<div class="govuk-date-input__item">
<div class="govuk-form-group">
<%= label_tag 'dob-year', 'Rok', class: "govuk-label govuk-date-input__label" %>
<%= number_field_tag 'year', current_user_step.expected_resolution_date.year, required: true, min: 2023, class: 'govuk-input govuk-date-input__input govuk-input--width-2', id: 'dob-year' %></div>
</div>
</div>
</div>
<%= submit_tag 'Zmeniť dátum a zapnúť notifikáciu', class: 'govuk-button' %>
<% end %>
</div>
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
$('#step_subscription').replaceWith('<%= j render "step_subscription", current_user_step: @user_step %>');
$('#next-steps-info').removeClass('sdn-appear-link-hide')
$('#subsciption_info').replaceWith('<%= j render "deadline_notifications/subscription_info", current_user_step: @user_step %>');
$('#deadline-notifications-info').removeClass('sdn-appear-link-hide')
$('#change-notification-date').addClass('sdn-appear-link-hide')
$('#change-notification-date').find('.govuk-form-group').removeClass('govuk-form-group--error')
$('#change-notification-date').find('#dob-error').addClass('sdn-appear-link-hide')
80 changes: 0 additions & 80 deletions app/views/steps/_step_footer_logged_in.html.erb

This file was deleted.

59 changes: 57 additions & 2 deletions app/views/steps/_todo_list_logged_in.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,62 @@
<% end %>

<% if @current_step %>
<%= render 'step_footer_logged_in', current_user_step: current_user_step %>
<% end %>
<div class="sdn-todo-list-main-action">
<% if current_user_step.done? %>
<div class="govuk-body-s sdn-todo-list-main-action__info">
<h2 class="govuk-heading-s">Vybavené!</h2>
Ak sa chcete vrátiť späť, môžete tento krok návodu <%= link_to 'označiť ako nevybavený', journey_step_path(@journey, @current_step, status: 'not_started'), method: :patch, remote: true %>.
</div>
<% elsif current_user_step.waiting? %>
<div class="govuk-body-s sdn-todo-list-main-action__info">
<h2 class="govuk-heading-s">Podané</h2>
<% if current_user_step.submitted_at %>
<p>
Čakacia lehota na vybavenie je <%= t('components.deadline.remaining_days', count: @current_step.waiting_time) %>.
Ostáva <%= t('components.deadline.remaining_days', count: current_user_step.remaining_time) %>.
</p>
<% end %>

Po úspešnom vybavení, keď dostanete pozitívnu odpoveď, označte
úlohu za vybavenú.
</div>

<div class="sdn-todo-list-main-action-buttons-wrapper">
<div class="sdn-todo-list-main-action-buttons">
<%= link_to 'Označiť ako vybavené', journey_step_path(@journey, @current_step, status: 'done'), class: 'govuk-button', method: :patch, remote: true %>
</div>
</div>
<br/>
<details class="govuk-details" data-module="govuk-details">
<summary class="govuk-details__summary">
<span class="govuk-details__summary-text">
Notifikácia e-mailom
</span>
</summary>
<div class="govuk-details__text">
<%= render 'deadline_notifications/subscription_settings', current_user_step: current_user_step %>
</div>
</details>
<% else %>
<% if @current_step.tasks.any? && @current_step.has_app? %>
<div class="govuk-body-s sdn-todo-list-main-action__info">
Po splnení všetkých povinností môžete podať elektronickú žiadosť a potom označiť tento krok ako podaný.
</div>
<% end %>
<div class="sdn-todo-list-main-action-buttons-wrapper">
<div class="sdn-todo-list-main-action-buttons">
<% if @current_step.has_app? %>
<%= link_to @current_step.app_link_text.presence || 'Požiadať elektronicky', start_journey_step_path(@journey, @current_step), target: '_blank', class: 'govuk-button govuk-button--start', draggable: false %>
<% end %>
<% if @current_step.is_waiting_step? %>
<%= link_to 'Označiť ako podané', journey_step_path(@journey, @current_step, status: 'waiting'), class: 'govuk-button', method: :patch, remote: true %>
<% else %>
<%= link_to 'Označiť ako vybavené', journey_step_path(@journey, @current_step, status: 'done'), class: 'govuk-button', method: :patch, remote: true %>
<% end %>
</div>
</div>
<% end %>
</div>
<% end %>
</div>
<% end %>
Loading

0 comments on commit 1d32da8

Please sign in to comment.