diff --git a/app/controllers/repp/v1/domains_controller.rb b/app/controllers/repp/v1/domains_controller.rb index a63f40402..3d0ba8c56 100644 --- a/app/controllers/repp/v1/domains_controller.rb +++ b/app/controllers/repp/v1/domains_controller.rb @@ -35,7 +35,7 @@ module Repp param :ipv6, Array, desc: 'Array of IPv4 addresses' end param :admin_domain_contacts_attributes, Array, required: false, desc: 'Admin domain contacts codes' - param :admin_domain_contacts_attributes, Array, required: false, desc: 'Tech domain contacts codes' + param :tech_domain_contacts_attributes, Array, required: false, desc: 'Tech domain contacts codes' param :dnskeys_attributes, Array, required: false, desc: 'DNSSEC keys for domain' do param :flags, String, required: true, desc: 'Flag of DNSSEC key' param :protocol, String, required: true, desc: 'Protocol of DNSSEC key' @@ -143,6 +143,8 @@ module Repp end def forward_registrar_id + return unless params[:domain] + params[:domain][:registrar_id] = current_user.registrar.id end diff --git a/app/controllers/repp/v1/registrar/notifications_controller.rb b/app/controllers/repp/v1/registrar/notifications_controller.rb new file mode 100644 index 000000000..0f6808710 --- /dev/null +++ b/app/controllers/repp/v1/registrar/notifications_controller.rb @@ -0,0 +1,48 @@ +module Repp + module V1 + module Registrar + class NotificationsController < BaseController + before_action :set_notification, only: [:update] + + api :GET, '/repp/v1/registrar/notifications' + desc 'Get the latest unread poll message' + def index + @notification = current_user.unread_notifications.order('created_at DESC').take + render_success(data: nil) and return unless @notification + + data = @notification.as_json(only: [:id, :text, :attached_obj_id, + :attached_obj_type]) + + render_success(data: data) + end + + api :GET, '/repp/v1/registrar/notifications/:notification_id' + desc 'Get a specific poll message' + def show + @notification = current_user.registrar.notifications.find(params[:id]) + data = @notification.as_json(only: [:id, :text, :attached_obj_id, + :attached_obj_type]) + + render_success(data: data) + end + + api :PUT, '/repp/v1/registrar/notifications' + desc 'Mark poll message as read' + param :notification, Hash, required: true do + param :read, [true], required: true, desc: "Set as true to mark as read" + end + def update + handle_errors(@notification) and return unless @notification.mark_as_read + + render_success(data: { notification_id: @notification.id, read: true }) + end + + private + + def set_notification + @notification = current_user.unread_notifications.find(params[:id]) + end + end + end + end +end diff --git a/config/routes.rb b/config/routes.rb index 0bd0da82e..10a6f2b6e 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -53,6 +53,7 @@ Rails.application.routes.draw do resources :auctions, only: %i[index] resources :retained_domains, only: %i[index] namespace :registrar do + resources :notifications, only: [:index, :show, :update] resources :nameservers do collection do put '/', to: 'nameservers#update'