diff --git a/app/controllers/management/users_controller.rb b/app/controllers/management/users_controller.rb index 48cd23d8bdb6d3567279befb67c382aa209a7f0d..6522fd5a3b9cb5a8b29b34e8124ab720990aa010 100644 --- a/app/controllers/management/users_controller.rb +++ b/app/controllers/management/users_controller.rb @@ -3,10 +3,7 @@ class Management::UsersController < ManagementController before_action :set_roles, only: [:new, :edit] def index - #trocar por chamada ao repositorio - @users = User.all - - + @users = user_repository.all end # GET /users/1 @@ -26,10 +23,8 @@ class Management::UsersController < ManagementController # POST /users # POST /users.json def create - @user = User.new(user_params) - #trocar por chamada ao repositorio - @user.roles.ids = Role.all.ids + @user.roles.ids = role_repository.all.ids respond_to do |format| if user_repository.save @user @@ -65,10 +60,14 @@ class Management::UsersController < ManagementController def change_roles @user.roles = [] - #trocar por chamada ao repositório - @user.roles << Role.find_by_id(params[:role_id]) + @user.roles << role_repository.find_by_id(params[:role_id]) + respond_to do |format| - format.html {redirect_to :back, notice: "Usuário #{@user.name} definido como #{@user.roles[0].name}"} + if user_repository.save @user + format.html {redirect_to :back, notice: "Usuário #{@user.name} definido como #{@user.roles[0].name}"} + else + format.html {redirect_to :back, notice: "Erro na atribuição!"} + end end end @@ -85,7 +84,7 @@ class Management::UsersController < ManagementController end def set_roles - @roles = Role.all + @roles = role_repository.all end end diff --git a/app/repositories/active_record/role_repository.rb b/app/repositories/active_record/role_repository.rb new file mode 100644 index 0000000000000000000000000000000000000000..b2ad728282520446253f027d12ed622c1c31e193 --- /dev/null +++ b/app/repositories/active_record/role_repository.rb @@ -0,0 +1,19 @@ +class ActiveRecord::RoleRepository + + def save(role) + role.save + end + + def save!(role) + role.save! + end + + def method_missing(method_name, *arguments, &block) + Role.send(method_name, *arguments, &block) + end + + def respond_to?(method_name, include_private = false) + Role.respond_to?(method_name) || super + end + +end diff --git a/app/repositories/orient_db/user_repository.rb b/app/repositories/orient_db/user_repository.rb index 7a904ba1cb44a3d9391054b95662d31878103d9a..6fa51a2e45a37e9e5ef5f3612dc610e6004b1fe5 100644 --- a/app/repositories/orient_db/user_repository.rb +++ b/app/repositories/orient_db/user_repository.rb @@ -31,6 +31,11 @@ module OrientDb (result.count > 0) end + def all + result = connection.query sprintf("SELECT FROM USER") + + end + private def odb_class diff --git a/app/repositories/repositories_proxy.rb b/app/repositories/repositories_proxy.rb index 05477b70d2bb68b2d87b9d81bf8d55d02e7c5c48..3a878e891b086460681811471f3526e6abce6930 100644 --- a/app/repositories/repositories_proxy.rb +++ b/app/repositories/repositories_proxy.rb @@ -38,6 +38,10 @@ module RepositoriesProxy application_repository.for(:user) end + def role_repository + application_repository.for(:role) + end + private def application_repository diff --git a/config/initializers/repositories/repositories.rb b/config/initializers/repositories/repositories.rb index f7d3c35d3a535fbda79aab1fc23ca0e80bc2451b..f4fd53115a5580798d350894171ba471161185ce 100644 --- a/config/initializers/repositories/repositories.rb +++ b/config/initializers/repositories/repositories.rb @@ -30,6 +30,7 @@ Repository::Environments.create :development do |repository| repository.register :collection, OrientDb::CollectionRepository.new(OrientDb::Client.instance) repository.register :carousel, ActiveRecord::CarouselRepository.new repository.register :complaint, OrientDb::ComplaintRepository.new(OrientDb::Client.instance) + repository.register :role, ActiveRecord::RoleRepository.new end Repository::Environments.create :test do |repository| @@ -41,6 +42,7 @@ Repository::Environments.create :test do |repository| repository.register :subject, OrientDb::SubjectRepository.new(OrientDb::Client.instance) repository.register :attribute, OrientDb::AttributeRepository.new(OrientDb::Client.instance) repository.register :collection, OrientDb::CollectionRepository.new(OrientDb::Client.instance) + repository.register :role, ActiveRecord::RoleRepository.new end Repository::Environments.create :production do |repository| @@ -52,4 +54,5 @@ Repository::Environments.create :production do |repository| repository.register :subject, OrientDb::SubjectRepository.new(OrientDb::Client.instance) repository.register :attribute, OrientDb::AttributeRepository.new(OrientDb::Client.instance) repository.register :collection, OrientDb::CollectionRepository.new(OrientDb::Client.instance) + repository.register :role, ActiveRecord::RoleRepository.new end