users_controller.rb 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  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. if @user.save
  42. message = "Usuario #{@user.userid}"
  43. message +=
  44. if @user.usertype == 'SS'
  45. " con perfil SUPER ADMINISTRADOR creado."
  46. elsif @user.usertype == "A"
  47. " con perfil ADMINISTRADOR creado."
  48. else
  49. " creado y asignado al " + (@user.pointsale.present? ? "punto de venta #{@user.pointsale.name}" : "almacén #{@user.warehouse.name}")
  50. end
  51. @user.audit_comment = message
  52. format.html { redirect_to users_path, success: message }
  53. format.json { render :show, status: :created, location: @user }
  54. else
  55. set_usertypes
  56. format.html { render :new }
  57. format.json { render json: @user.errors, status: :unprocessable_entity }
  58. end
  59. end
  60. end
  61. def edit_password
  62. @user = current_user
  63. end
  64. def update_password
  65. @user = User.find(current_user.id)
  66. respond_to do |format|
  67. message = "La contraseña de " + @user.full_name + " fue modificada."
  68. @user.audit_comment = message
  69. if @user.update_with_password(user_params)
  70. # Sign in the user by passing validation in case their password changed
  71. sign_in @user, bypass: true
  72. format.html { redirect_to root_path, success: message }
  73. # format.json { render :show, status: :created, location: @user }
  74. else
  75. format.html { render :edit }
  76. format.json { render json: @user.errors, status: :unprocessable_entity }
  77. end
  78. end
  79. end
  80. def update_status
  81. user = User.find(params[:user_id])
  82. user.status =
  83. if user.active?
  84. "inactive"
  85. elsif user.inactive?
  86. "active"
  87. end
  88. respond_to do |format|
  89. message = "El usuario " + user.userid + " fue " + (user.active? ? "activado" : "desactivado") + "."
  90. user.audit_comment = message
  91. if user.save(validate: false)
  92. format.html { redirect_to users_path, warning: message }
  93. format.json { head :no_content }
  94. else
  95. format.html { redirect_to users_path }
  96. format.json { render json: user.errors, status: :unprocessable_entity }
  97. end
  98. end
  99. end
  100. def set_usertypes
  101. @options_for_select =
  102. if current_user.usertype == "SS"
  103. Rails.application.config.usertypes_for_super
  104. elsif current_user.usertype == "A"
  105. Rails.application.config.usertypes_for_admin
  106. else
  107. Rails.application.config.usertypes_for_manager
  108. end
  109. end
  110. private
  111. # Use callbacks to share common setup or constraints between actions.
  112. def set_user
  113. @user = User.find(params[:id])
  114. end
  115. def get_filters
  116. @current_page = params[:current_page].blank? ? 1 : params[:current_page]
  117. @filter = params[:filter]
  118. end
  119. def user_params
  120. params.require(:user).permit(:current_password, :password, :password_confirmation, :pointsale_id, :warehouse_id, :usertype, :userid, :first_name, :last_name, :email)
  121. end
  122. end