class UserDevicesController < ApplicationController
  
  def create
    param! :app_type, String, required: true, in: UserDevice::app_types.keys
    param! :client_id, String, required: true
    param! :user_id, Integer, required: true

    _user_device_params = permit_user_device_params

    _user_device_params[:platform] ||= 'igetui'

    user_id = _user_device_params[:user_id]
    
    UserDevice.where(user_id: user_id).delete_all

    user_device = UserDevice.create!(_user_device_params)

    render json: { code: 0, message: "success", data: { user_device: user_device } }
  end

  def update_by_user_id
    param! :old_user_id, Integer, required: true
    param! :user_id, Integer, required: true
    param! :organization_id, Integer, required: true

    user_id = params[:user_id]
    old_user_id = params[:old_user_id]
    user_device = UserDevice.where(user_id: old_user_id).last
    if user_device.present?
      UserDevice.where(user_id: user_id).delete_all
      UserDevice.where(user_id: old_user_id).delete_all

      new_user_device = user_device.dup

      new_user_device.update(
        user_id: user_id,
        organization_id: params[:organization_id],
        created_at: Time.now,
        updated_at: Time.now
      )
    end

    render json: { code: 0, message: "success" }
  end

  def destroy_by_user_id
    param! :user_id, Integer, required: true

    user_id = params[:user_id]
    UserDevice.where(user_id: user_id).delete_all

    render json: { code: 0, message: "success" }
  end
  
  private
  
  def permit_user_device_params
    params.permit(:platform, :device_token, :client_id, :device_model, :device_platform,
                  :device_id, :device_version, :device_phone, :app_type, :user_id, :organization_id, :ip)
  end
  
end