<script>
    class EventHandler {
        props
        constructor({movimientosHandler, modalHandler}) {
            this.props = {
                movimientosHandler,
                modalHandler
            }
        }
        get() {
            return {
                movimientos: submitEvent => {
                    submitEvent.preventDefault()
                    submitEvent.data.handler.props.movimientosHandler.get().movimientos({
                        sociedades_ruts: $(submitEvent.data.sociedades_id).dropdown('get values'),
                        mes: $(submitEvent.data.mes_id).calendar('get date')
                    }).then(() => {
                        app.handlers.table.draw().table(app.handlers.results.props.parsed)
                    })
                    return false
                }
            }
        }
        edit() {
            return {
                movimiento: clickEvent => {
                    const id = $(clickEvent.currentTarget).data('id')
                    const index = $(clickEvent.currentTarget).data('index')
                    const movimiento = this.props.movimientosHandler.find().id(id)
                    clickEvent.data.handler.props.modalHandler.show({movimiento, index})
                },
                modal: submitEvent => {
                    submitEvent.preventDefault()
                    const form = submitEvent.currentTarget
                    const data = new FormData(form)
                    app.handlers.movimientos.edit().movimiento(data).then(() => {
                        app.handlers.table.draw().table(app.handlers.results.props.parsed)
                    })
                    return false
                }
            }
        }
        remove() {
            return {
                movimiento: clickEvent => {
                    const id = $(clickEvent.currentTarget).data('id')
                    app.handlers.movimientos.remove().movimiento(id).then(() => {
                        app.handlers.table.draw().table(app.handlers.results.props.parsed)
                    })
                }
            }
        }
    }
</script>
