users_controller.rb 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. class UsersController < ApplicationController
  2. ##--- Breadcrum_rails
  3. add_breadcrumb I18n.t("breadcrumbs." + controller_name), :users_path
  4. add_breadcrumb "Cambio de contraseña", :pwdchange_path, only: :update_password
  5. add_breadcrumb "Nuevo Usuario", :new_user_path, only: :new
  6. add_breadcrumb "Editar usuario", :edit_user_path, only: :edit
  7. before_action :set_user, only: [:edit, :update]
  8. before_action :get_filters, only: [:index, :show, :edit, :new]
  9. def index
  10. @users = User.includes(:pointsale, :warehouse).vigentes
  11. if current_user.usertype != "SS"
  12. @users = @users.where.not(usertype: "SS")
  13. @users = @users.where(pointsale_id: current_user.pointsale_id) if current_user.usertype != "A"
  14. end
  15. end
  16. def new
  17. @user = User.new
  18. set_usertypes
  19. end
  20. def edit
  21. set_usertypes
  22. end
  23. def update
  24. respond_to do |format|
  25. @user.skip_validations_when_edit = true
  26. message = "Usuario #{@user.userid} ha sido modificado."
  27. @user.audit_comment = message
  28. if @user.update(user_params)
  29. format.html { redirect_to users_path, success: message }
  30. format.json { render :show, status: :ok, location: @user }
  31. else
  32. set_usertypes
  33. format.html { render :edit }
  34. format.json { render json: @user.errors, status: :unprocessable_entity }
  35. end
  36. end
  37. end
  38. def create
  39. @user = User.new(user_params)
  40. respond_to do |format|
  41. message = "Usuario #{@user.userid}"
  42. if @user.usertype == 'SS'
  43. message += " con perfil SUPER ADMINISTRADOR creado."
  44. elsif @user.usertype == "A"
  45. message += " con perfil ADMINISTRADOR creado."
  46. else
  47. message += " creado y asignado al " + (@user.pointsale.present? ? "punto de venta #{@user.pointsale.name}" : "almacén #{@user.warehouse.name}")
  48. end
  49. @user.audit_comment = message
  50. if @user.save
  51. format.html { redirect_to users_path, success: message }
  52. format.json { render :show, status: :created, location: @user }
  53. else
  54. set_usertypes
  55. format.html { render :new }
  56. format.json { render json: @user.errors, status: :unprocessable_entity }
  57. end
  58. end
  59. end
  60. def edit_password
  61. @user = current_user
  62. end
  63. def update_password
  64. @user = User.find(current_user.id)
  65. respond_to do |format|
  66. message = "La contraseña de " + @user.full_name + " fue modificada."
  67. @user.audit_comment = message
  68. if @user.update_with_password(user_params)
  69. # Sign in the user by passing validation in case their password changed
  70. sign_in @user, bypass: true
  71. format.html { redirect_to root_path, success: message }
  72. # format.json { render :show, status: :created, location: @user }
  73. else
  74. format.html { render :edit }
  75. format.json { render json: @user.errors, status: :unprocessable_entity }
  76. end
  77. end
  78. end
  79. def update_status
  80. user = User.find(params[:user_id])
  81. user.status =
  82. if user.active?
  83. "inactive"
  84. elsif user.inactive?
  85. "active"
  86. end
  87. respond_to do |format|
  88. message = "El usuario " + user.userid + " fue " + (user.active? ? "activado" : "desactivado") + "."
  89. user.audit_comment = message
  90. if user.save(validate: false)
  91. format.html { redirect_to users_path, warning: message }
  92. format.json { head :no_content }
  93. else
  94. format.html { redirect_to users_path }
  95. format.json { render json: user.errors, status: :unprocessable_entity }
  96. end
  97. end
  98. end
  99. def set_usertypes
  100. @options_for_select =
  101. if current_user.usertype == "SS"
  102. Rails.application.config.usertypes_for_super
  103. elsif current_user.usertype == "A"
  104. Rails.application.config.usertypes_for_admin
  105. else
  106. Rails.application.config.usertypes_for_manager
  107. end
  108. end
  109. private
  110. # Use callbacks to share common setup or constraints between actions.
  111. def set_user
  112. @user = User.find(params[:id])
  113. end
  114. def get_filters
  115. @current_page = params[:current_page].blank? ? 1 : params[:current_page]
  116. @filter = params[:filter]
  117. end
  118. def user_params
  119. params.require(:user).permit(:current_password, :password, :password_confirmation, :pointsale_id, :warehouse_id, :usertype, :userid, :first_name, :last_name, :email)
  120. end
  121. end