87 lines
3.7 KiB
PHP
87 lines
3.7 KiB
PHP
<script>
|
|
class MovimientosHandler {
|
|
props
|
|
constructor({urls, loadingHandler, resultsHandler}) {
|
|
this.props = {
|
|
urls,
|
|
loadingHandler,
|
|
resultsHandler
|
|
}
|
|
}
|
|
get() {
|
|
return {
|
|
movimientos: ({sociedades_ruts, mes}) => {
|
|
this.props.loadingHandler.show()
|
|
const method = 'post'
|
|
const body = new FormData()
|
|
sociedades_ruts.forEach(sociedad_rut => {
|
|
body.append('sociedades_ruts[]', sociedad_rut)
|
|
})
|
|
body.set('mes', [mes.getFullYear(), mes.getMonth() + 1, mes.getDate()].join('-'))
|
|
return APIClient.fetch(this.props.urls.get, {method, body}).then(response => {
|
|
if (!response) {
|
|
throw new Error('No se pudo obtener los movimientos')
|
|
}
|
|
return response.json().then(json => {
|
|
this.movimientos = json.movimientos
|
|
this.props.resultsHandler.props.movimientos = json.movimientos
|
|
this.props.resultsHandler.parse().movimientos()
|
|
return json.movimientos
|
|
})
|
|
}).catch(error => {
|
|
console.error(error)
|
|
}).finally(() => {
|
|
this.props.loadingHandler.hide()
|
|
})
|
|
}
|
|
}
|
|
}
|
|
edit() {
|
|
return {
|
|
movimiento: (data) => {
|
|
data.set('digito', Rut.digitoVerificador(data.get('rut')))
|
|
const method = 'post'
|
|
return APIClient.fetch(this.props.urls.edit, {method, body: data}).then(response => {
|
|
if (!response) {
|
|
throw new Error('No se pudo editar el movimiento')
|
|
}
|
|
return response.json().then(json => {
|
|
this.props.resultsHandler.props.movimientos = this.props.resultsHandler.props.movimientos.map(movimiento => {
|
|
if (movimiento.id === json.movimiento.id) {
|
|
movimiento.detalles = json.movimiento.detalles
|
|
}
|
|
return movimiento
|
|
})
|
|
this.props.resultsHandler.parse().movimientos()
|
|
})
|
|
})
|
|
}
|
|
}
|
|
}
|
|
remove() {
|
|
return {
|
|
movimiento: id => {
|
|
const method = 'delete'
|
|
const url = this.props.urls.remove.replace(/\/$/, '') + '/' + id
|
|
return APIClient.fetch(url, {method}).then(response => {
|
|
if (!response) {
|
|
throw new Error('No se pudo eliminar el movimiento')
|
|
}
|
|
return response.json().then(json => {
|
|
this.props.resultsHandler.props.movimientos = this.props.resultsHandler.props.movimientos.filter(movimiento => movimiento.id !== id)
|
|
this.props.resultsHandler.parse().movimientos()
|
|
})
|
|
})
|
|
}
|
|
}
|
|
}
|
|
find() {
|
|
return {
|
|
id: id => {
|
|
return this.props.resultsHandler.props.movimientos.find(movimiento => movimiento.id === id)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</script>
|