| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- class UsersController < ApplicationController
- ##--- Breadcrum_rails
- add_breadcrumb I18n.t("breadcrumbs." + controller_name), :users_path
- add_breadcrumb "Cambio de contraseña", :pwdchange_path, only: :update_password
- add_breadcrumb "Nuevo Usuario", :new_user_path, only: :new
- add_breadcrumb "Editar usuario", :edit_user_path, only: :edit
- before_action :set_user, only: [:edit, :update]
- before_action :get_filters, only: [:index, :show, :edit, :new]
- def index
- @users = User.includes(:pointsale, :warehouse).vigentes
- if current_user.usertype != "SS"
- @users = @users.where.not(usertype: "SS")
- @users = @users.where(pointsale_id: current_user.pointsale_id) if current_user.usertype != "A"
- end
- end
- def new
- @user = User.new
- set_usertypes
- end
- def edit
- set_usertypes
- end
- def update
- respond_to do |format|
- @user.skip_validations_when_edit = true
- message = "Usuario #{@user.userid} ha sido modificado."
- @user.audit_comment = message
- if @user.update(user_params)
- format.html { redirect_to users_path, success: message }
- format.json { render :show, status: :ok, location: @user }
- else
- set_usertypes
- format.html { render :edit }
- format.json { render json: @user.errors, status: :unprocessable_entity }
- end
- end
- end
- def create
- @user = User.new(user_params)
- respond_to do |format|
- if @user.save
- message = "Usuario #{@user.userid}"
- message +=
- if @user.usertype == 'SS'
- " con perfil SUPER ADMINISTRADOR creado."
- elsif @user.usertype == "A"
- " con perfil ADMINISTRADOR creado."
- else
- " creado y asignado al " + (@user.pointsale.present? ? "punto de venta #{@user.pointsale.name}" : "almacén #{@user.warehouse.name}")
- end
- @user.audit_comment = message
- format.html { redirect_to users_path, success: message }
- format.json { render :show, status: :created, location: @user }
- else
- set_usertypes
- format.html { render :new }
- format.json { render json: @user.errors, status: :unprocessable_entity }
- end
- end
- end
- def edit_password
- @user = current_user
- end
- def update_password
- @user = User.find(current_user.id)
- respond_to do |format|
- message = "La contraseña de " + @user.full_name + " fue modificada."
- @user.audit_comment = message
- if @user.update_with_password(user_params)
- # Sign in the user by passing validation in case their password changed
- sign_in @user, bypass: true
- format.html { redirect_to root_path, success: message }
- # format.json { render :show, status: :created, location: @user }
- else
- format.html { render :edit }
- format.json { render json: @user.errors, status: :unprocessable_entity }
- end
- end
- end
- def update_status
- user = User.find(params[:user_id])
- user.status =
- if user.active?
- "inactive"
- elsif user.inactive?
- "active"
- end
- respond_to do |format|
- message = "El usuario " + user.userid + " fue " + (user.active? ? "activado" : "desactivado") + "."
- user.audit_comment = message
- if user.save(validate: false)
- format.html { redirect_to users_path, warning: message }
- format.json { head :no_content }
- else
- format.html { redirect_to users_path }
- format.json { render json: user.errors, status: :unprocessable_entity }
- end
- end
- end
- def set_usertypes
- @options_for_select =
- if current_user.usertype == "SS"
- Rails.application.config.usertypes_for_super
- elsif current_user.usertype == "A"
- Rails.application.config.usertypes_for_admin
- else
- Rails.application.config.usertypes_for_manager
- end
- end
- private
- # Use callbacks to share common setup or constraints between actions.
- def set_user
- @user = User.find(params[:id])
- end
- def get_filters
- @current_page = params[:current_page].blank? ? 1 : params[:current_page]
- @filter = params[:filter]
- end
- def user_params
- params.require(:user).permit(:current_password, :password, :password_confirmation, :pointsale_id, :warehouse_id, :usertype, :userid, :first_name, :last_name, :email)
- end
- end
|