module SuperAdmin
  class UsersController < ApplicationController

    after_action :verify_authorized

    def edit
      user = User.find(params[:id])
      if user.present?
        authorize user
        languages = Language.sorted_by_abbreviation
        orgs = Org.order("name")
        identifier_schemes = IdentifierScheme.where(active: true).order(:name)

        render 'super_admin/users/edit',
               locals: { user: user,
                         languages: languages,
                         orgs: orgs,
                         identifier_schemes: identifier_schemes,
                         default_org: user.org }
      else
        redirect_to admin_index_users_path, alert: _('User not found.')
      end
    end

    def update
      user = User.find(params[:id])
      if user.present?
        authorize user
        topic = _('%{username}\'s profile') % { username: user.name(false) }
        if user.update_attributes(user_params)
          redirect_to edit_super_admin_user_path(user),
                      notice: _('Successfully updated %{username}') % { username: topic }
        else
          redirect_to edit_super_admin_user_path(user),
                      alert: _('Unable to update %{username}') % { username: topic }
        end
      else
        redirect_to edit_super_admin_user_path(user), alert: _('User not found.')
      end
    end

    private
      def user_params
        params.require(:user).permit(:email, :firstname, :surname, :org_id, :language_id, :other_organisation)
      end
  end
end