users_controller.rb 3.8 KB

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