• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Platoniq / decidim-module-time_tracker / #61

27 Oct 2025 03:21PM UTC coverage: 59.122% (-20.7%) from 79.854%
#61

push

web-flow
Upgrade js dependencies to 0.30 (#126)

956 of 1617 relevant lines covered (59.12%)

186.93 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

35.0
/app/controllers/decidim/time_tracker/admin/tasks_controller.rb
1
# frozen_string_literal: true
2

3
module Decidim
1✔
4
  module TimeTracker
1✔
5
    module Admin
1✔
6
      class TasksController < Admin::ApplicationController
1✔
7
        include Decidim::TimeTracker::ApplicationHelper
1✔
8
        helper_method :tasks, :current_task, :assignations, :tasks_label, :activities_label, :assignations_label
1✔
9

10
        delegate :tasks, to: :time_tracker
1✔
11

12
        def index
1✔
13
          @tasks = tasks
280✔
14
        end
15

16
        def new
1✔
17
          enforce_permission_to :create, :task
×
18

19
          @form = form(TaskForm).instance
×
20
        end
21

22
        def edit
1✔
23
          enforce_permission_to :update, :task, task: current_task
×
24
          @form = form(TaskForm).from_model(current_task, endpoint: current_task)
×
25
        end
26

27
        def create
1✔
28
          enforce_permission_to :create, :task
×
29

30
          @form = form(TaskForm).from_params(params)
×
31

32
          CreateTask.call(@form) do
×
33
            on(:ok) do
×
34
              flash[:notice] = I18n.t("tasks.create.success", scope: "decidim.time_tracker.admin")
×
35
              redirect_to EngineRouter.admin_proxy(current_component).tasks_path
×
36
            end
37

38
            on(:invalid) do
×
39
              flash.now[:alert] = I18n.t("tasks.create.error", scope: "decidim.time_tracker.admin")
×
40
              render :new
×
41
            end
42
          end
43
        end
44

45
        def update
1✔
46
          enforce_permission_to :update, :task, task: current_task
×
47

48
          form = form(TaskForm).from_params(params, task: current_task)
×
49

50
          UpdateTask.call(current_task, form, current_user) do
×
51
            on(:ok) do
×
52
              flash[:notice] = I18n.t("tasks.update.success", scope: "decidim.time_tracker.admin")
×
53
              redirect_to EngineRouter.admin_proxy(current_component).edit_task_path(current_task)
×
54
            end
55

56
            on(:invalid) do
×
57
              flash.now[:alert] = I18n.t("tasks.update.error", scope: "decidim.time_tracker.admin")
×
58
              render :edit
×
59
            end
60
          end
61
        end
62

63
        def destroy
1✔
64
          enforce_permission_to :destroy, :task, task: current_task
×
65

66
          DestroyTask.call(current_task, current_user) do
×
67
            on(:ok) do
×
68
              flash[:notice] = I18n.t("tasks.destroy.success", scope: "decidim.time_tracker.admin")
×
69
              redirect_to EngineRouter.admin_proxy(current_component).tasks_path
×
70
            end
71
          end
72
        end
73

74
        def accept_all_pending_assignations
1✔
75
          return redirect_to(tasks_path) if assignations.blank?
×
76

77
          ok_count = invalid_count = 0
×
78
          assignations.each do |assignation|
×
79
            UpdateAssignation.call(assignation, current_user, :accepted) do
×
80
              on(:ok) do
×
81
                ok_count += 1
×
82
              end
83

84
              on(:invalid) do
×
85
                invalid_count += 1
×
86
              end
87
            end
88
          end
89

90
          flash[:notice] = I18n.t("tasks.assignations.bulk_ok", scope: "decidim.time_tracker.admin", count: ok_count) if ok_count.positive?
×
91
          flash[:alert] = I18n.t("tasks.assignations.bulk_invalid", scope: "decidim.time_tracker.admin", count: invalid_count) if invalid_count.positive?
×
92

93
          redirect_to(tasks_path)
×
94
        end
95

96
        private
1✔
97

98
        def tasks
1✔
99
          time_tracker.tasks
560✔
100
        end
101

102
        def assignations
1✔
103
          time_tracker.assignations.pending
280✔
104
        end
105

106
        def current_task
1✔
107
          @current_task ||= Task.find(params[:id])
×
108
        end
109
      end
110
    end
111
  end
112
end
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc