pasosdeJesus/msip

View on GitHub
app/javascript/controllers/sindocaut_controller.js

Summary

Maintainability
A
1 hr
Test Coverage
import { Controller } from "@hotwired/stimulus"
// Llena automaticamente número de documento del tipo de doc. SIN DOCUMENTO
// con un número que corresponde a la identificación de la persona
// en el sistema o uno que empieza igual y termina en letras en caso de que
// ya se esté usando el mismo

export default class extends Controller {
  // Conecta con data-controller="msip--sindocaut"
  // En el campo para el tipo de documento agregar
  // data-action='change->msip--sindocaut#cambia_tdocumento
  // En el campo con la id de la persona agregar
  // data-msip--sindocaut-target='id'
  // Y en el campo con el número de documento agregar
  // data-msip--sindocaut-target='numerodocumento'

  static targets = [ 
    "numerodocumento", 
    "id" 
  ]

  initialize() {
    console.log('inicializa controlador sindocaut')
  }

  connect() {
    console.log('conectado controlador sindocaut')
  }

  cambia_tdocumento(e) {
    var purl = window.puntomontaje;
    if (purl == "/") {
      purl = "";
    }

    console.log("numerodocumento ahora es", this.numerodocumentoTarget.value)
    if (e.target.value == '11' && 
      this.numerodocumentoTarget.value == '') { // SIN DOCUMENTO
      // Obtiene último indice pensando en formularios anidados
      // como familiar dentro de persona
      let bindice = this.idTarget.id.match(
        new RegExp("attributes_([0-9]+)_persona", "g")
      );
      if (bindice == null) {
        bindice = ["attributes_0_persona"];
      }
      let indice = bindice.at(-1).substr(11, bindice.at(-1).length-19)
      window.Rails.ajax({
        type: 'GET',
        url: purl + '/personas/identificacionsd?persona_id=' + 
          this.idTarget.value + '&indice=' + indice,
        data: null,
        success: (resp, estado, xhr) => {
          this.numerodocumentoTarget.value = resp;
        },
        error: (req, estado, xhr) => {
          window.alert('No pudo consultar identificación.')
        }
      })
    }
    window.Rails.ajax({
      type: 'GET',
      url: purl + '/admin/tdocumentos/' + e.target.value + '.json',
      data: null,
      success: (resp, estado, xhr) => {
        this.numerodocumentoTarget.setAttribute('data-bs-toggle', 'tooltip')
        this.numerodocumentoTarget.setAttribute('data-bs-original-title', 
          resp.ayuda)
        this.numerodocumentoTarget.setAttribute('title', resp.ayuda)
      },
      error: (req, estado, xhr) => {
        window.alert('No pudo consultar tipo de documento ' + e.target.value)
      }
    })
  }



}