Sha256: 47d8537f61a75859f3c5bc4cb240090eb400cbfe0644acc1817f3317259a3903

Contents?: true

Size: 1.51 KB

Versions: 3

Compression:

Stored size: 1.51 KB

Contents

# frozen_string_literal: true

module Decidim
  module ParticipatoryDocuments
    module Admin
      class AnnotationsController < Admin::ApplicationController
        layout false

        rescue_from ActiveRecord::RecordNotFound do |_exception|
          render json: { error: I18n.t("decidim.errors.not_found.content_doesnt_exist") }, status: :not_found
        end

        def destroy
          enforce_permission_to :create, :document_annotations
          @form = form(Decidim::ParticipatoryDocuments::Admin::AnnotationForm).from_model(annotation)

          Admin::DestroyAnnotation.call(@form, document) do
            on(:ok) do
              render(json: {}, status: :accepted) && return
            end

            on(:invalid) do
              render(json: {}, status: :unprocessable_entity) && return
            end
          end
        end

        def create
          enforce_permission_to :create, :document_annotations
          @form = form(Decidim::ParticipatoryDocuments::Admin::AnnotationForm).from_params(params)

          Admin::UpdateOrCreateAnnotation.call(@form, document) do
            on(:ok) do |annotation|
              render(json: { data: annotation.serialize }, status: :created) && return
            end

            on(:invalid) do
              render(json: @form.errors, status: :unprocessable_entity) && return
            end
          end
        end

        private

        def annotation
          @annotation ||= document.annotations.find(params[:id])
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
decidim-participatory_documents-0.2.2 app/controllers/decidim/participatory_documents/admin/annotations_controller.rb
decidim-participatory_documents-0.2.1 app/controllers/decidim/participatory_documents/admin/annotations_controller.rb
decidim-participatory_documents-0.2.0 app/controllers/decidim/participatory_documents/admin/annotations_controller.rb