let lote, ficha



let paginaActual = localStorage.getItem('paginaActual')
switch (paginaActual) {
  case 'detalleLoteDocente':
    if (localStorage.getItem('lote')) {
      if (localStorage.getItem('detalleFichaLote')) {
        lote = getLocal('lote')
        ficha = getLocal('detalleFichaLote')
      } else {
        window.location.href = 'lotesFicha.jsp'
      }
    } else {
      window.location.href = 'lotesFicha.jsp'
    }
    break;
  case 'detalleConsultaLotesGeneral':
    if (localStorage.getItem('loteGeneral')) {
      if (localStorage.getItem('detalleFichaLote')) {
        lote = getLocal('loteGeneral')
        ficha = getLocal('detalleFichaLote')
      } else {
        window.location.href = 'lotesFicha.jsp'
      }
    } else {
      window.location.href = 'lotesFicha.jsp'
    }
    break;
  default:
    window.location.href = 'main.jsp'

}


const getNode = node => document.querySelector(node)
const getNodeAll = nodeList => document.querySelectorAll(nodeList)
const helpers = {
  printCosto(obj) {
    return `<div class="col-md-3">
              <div class="form-group">
                <label class="display-block text-uppercase text-semibold">${obj.tipoCosto}</label>
                <span style="font-weight: bold; font-size: 16px;" class="label border-left-primary label-striped text-light fix-label text-semibold">S/. ${obj.costo}</span>
              </div>
            </div>`
  }
}
let DOMFichaComponents = {
  print(ficha) {
    this.datosPersonales(ficha)
    this.datosFamiliares(ficha.cargafamiliar)
    this.formacionAcademica(ficha.formacionacademica)
    this.experienciaLaboral(ficha.experiencialaboral)
    this.datosAdministrativos(ficha.datosAdministrativos)
    this.costosPersonal(ficha.datosAdministrativos)
  },
  datosPersonales(obj) {
    getNode('#lblTipoDocumento').innerHTML = obj.tipoDocumentoDescripcionCorta
    getNode('#lblNumeroDocumento').innerHTML = obj.numeroDocumento
    getNode('#lblNumeroRUC').innerHTML = obj.ruc
    getNode('#lblApellidoPaterno').innerHTML = obj.apellidoPaterno
    getNode('#lblApellidoMaterno').innerHTML = obj.apellidoMaterno
    getNode('#lblNombre').innerHTML = obj.nombre
    getNode('#lblSexo').innerHTML = obj.sexo
    getNode('#lblEstadoCivil').innerHTML = obj.estadoCivil
    getNode('#lblFechaNacimiento').innerHTML = obj.fechaNacimiento
    getNode('#lblNacionalidad').innerHTML = obj.pais
    getNode('#lblDepartamentoNacimiento').innerHTML = obj.nombreDepartamentoNacimiento
    getNode('#lblProvinciaNacimiento').innerHTML = obj.nombreProvinciaNacimiento
    getNode('#lblDistritoNacimiento').innerHTML = obj.nombreDistritoNacimiento
    getNode('#lblDireccionDocumento').innerHTML = obj.direccionDocumento
    getNode('#lblTelefonoFijo').innerHTML = obj.telefonoFijo
    getNode('#lblTelefonoMovil').innerHTML = obj.telefonoMovil
    getNode('#lblCorreoElectronico').innerHTML = obj.correo
    getNode('#lblDepartamentoResidencia').innerHTML = obj.nombreDepartamentoResidencia
    getNode('#lblProvinciaResidencia').innerHTML = obj.nombreProvinciaResidencia
    getNode('#lblDistritoResidencia').innerHTML = obj.nombreDistritoResidencia
    getNode('#lblDireccionResidencia').innerHTML = obj.direccionResidencia
    getNode('#lblFondoPension').innerHTML = obj.fondoPensionDescripcionCorta
    getNode('#latitudResidencia').innerHTML = obj.latitud
    getNode('#longitudResidencia').innerHTML = obj.longitud
    getNode('#lblCantidadDocumentos').innerHTML = obj.expediente.length
    getNode('#lblEnlaceAlfresco').innerHTML = obj.enlaceAlfresco
    getNode('#lblFoto').setAttribute('src', `http:\\\\${window.location.hostname}/img/${obj.foto}`)
  },
  datosFamiliares(obj) {
    let item = 1
    let tblFamiliar = new SimpleTable({
      element: 'tblFamiliar', //id from the table
      data: obj,
      no_data_text: 'No tiene registros',
      columns: [
        {
          data: () => item++
        },
        {
          data: data => `${data.apellidoPaterno} ${data.apellidoMaterno}, ${data.nombre}`
        },
        {
          data: 'nombreParentesco'
        },
        {
          data: 'fechaNacimiento'
        },
        {
          data: 'edad'
        },
        {
          data: data => data.sexo === 'F' ? 'FEMENINO' : 'MASCULINO'
        },
        {
          data: 'nombreTipoDocumentoDescripcionCorta'
        },
        {
          data: 'numeroDocumento'
        },
        {
          data: 'telefono'
        }
      ]
    })
    tblFamiliar.createBody()
  },
  formacionAcademica(obj) {
    let item = 1
    let tblFormacionAcademica = new SimpleTable({
      element: 'tblFormacionAcademica', //id from the table
      data: obj,
      no_data_text: 'No tiene registros',
      columns: [
        {
          data: () => item++
        },
        {
          data: 'nivelEstudio'
        },
        {
          data: 'estadoEstudio'
        },
        {
          data: 'nombreCentroEstudios'
        },
        {
          data: 'sectorInstitucion'
        },
        {
          data: 'nombreCarreraProfesional'
        },
        {
          data: 'fechaInicio'
        },
        {
          data: data => data.fechaFin === '' ? '-' : data.fechaFin
        }
      ]
    })
    tblFormacionAcademica.createBody()
  },
  experienciaLaboral(obj) {
    let item = 1
    let tblExperienciaLaboral = new SimpleTable({
      element: 'tblExperienciaLaboral', //id from the table
      data: obj,
      no_data_text: 'No tiene registros',
      columns: [{
          data: () => item++
        },
        {
          data: 'nombreEmpresa'
        },
        {
          data: 'nombreCargo'
        },
        {
          data: 'fechaInicio'
        },
        {
          data: 'fechaFin'
        },
        {
          data: 'telefono'
        }
      ]
    })
    tblExperienciaLaboral.createBody()
  },
  datosAdministrativos(obj) {
    getNode('#lblFechaIngreso').innerHTML = obj.fechaIngreso
    getNode('#lblFechaTermino').innerHTML = obj.fechaTermino
    getNode('#lblSede').innerHTML = obj.sede
    getNode('#lblArea').innerHTML = obj.area
    getNode('#lblCargo').innerHTML = obj.cargo
    getNode('#lblTipoPago').innerHTML = obj.tipoPago
    getNode('#lblTituloTabla').innerHTML = `Costo de ${lote.tipoLote === 'A' ? 'ADMINISTRATIVO' : 'DOCENTE'}`
    getNode('#lblObservacion').innerHTML = obj.observacion
  },
  costosPersonal(obj) {
    if (lote.tipoLote === 'A') {
      let escalafon = helpers.printCosto({tipoCosto: 'ESCALAFON', costo: obj.sueldoEscalafon})
      let mensualPropuesto = helpers.printCosto({tipoCosto: 'MENSUAL PROPUESTO', costo: obj.sueldoMensual})
      getNode('#divContenidoCostos').innerHTML = escalafon + mensualPropuesto
    } else {
      let costoa = helpers.printCosto({tipoCosto: 'COSTO A', costo: obj.costoa})
      let costob = helpers.printCosto({tipoCosto: 'COSTO B', costo: obj.costob})
      let costoc = helpers.printCosto({tipoCosto: 'COSTO C', costo: obj.costoc})
      let costoMensual = helpers.printCosto({tipoCosto: 'COSTO MENSUAL', costo: obj.costoMensual})
      switch (obj.tipoPago) {
        case "ADMINISTRATIVO":
          getNode('#divContenidoCostos').innerHTML = costoa + costob + costoc + costoMensual
          break;
        case "HORAS":
          getNode('#divContenidoCostos').innerHTML = costoa + costob + costoc
          break;
        case "MENSUAL":
          getNode('#divContenidoCostos').innerHTML = costoMensual
          break;
        default:
          errorMessage("error de tipo de pago")
      }
    }
  }
}


DOMFichaComponents.print(ficha)






function setearMapa() {
//  console.log(json.latitud)
//  console.log(json.longitud)
//  

  myLatLng = {
    lat: parseFloat(ficha.latitud),
    lng: parseFloat(ficha.longitud)
  }

  let map = new google.maps.Map($('#mapResidencia')[0], {
    center: myLatLng,
    zoom: 18,
    disableDefaultUI: false,
    draggable: true
  })

  getMarker(myLatLng, map)

}
function getMarker(myLatLng, map) {
  let marker = new google.maps.Marker({
    position: myLatLng,
    map: map,
    draggable: false,
    animation: google.maps.Animation.DROP,
    anchorPoint: new google.maps.Point(0, -29)
  })
  let infowindow = new google.maps.InfoWindow()

  getAddress(myLatLng, infowindow, map, marker)
}
function getAddress(latlng, infowindow, map, marker) {
  let geocoder = new google.maps.Geocoder

  geocoder.geocode({'location': latlng}, function (result, status) {
    if (status === 'OK') {
      infowindow.setContent(
        '<div>' +
        '<b class="text-uppercase">' + result[0].address_components[1].long_name + '</b> <br/>' +
        '<span class="text-muted">' + result[0].formatted_address + '</span> <br/>' +
        '</div>'
        )
      infowindow.open(map, marker)

    } else {
      load("Cargando mapa")
      setTimeout(() => unload(), 2000)
    }
  })

}
$(document).ready(() => {
  setearMapa()
})