users_controller.rb 4.2 KB

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