import { api } from 'src/boot/axios';
import { notifyError } from 'src/helpers';
import { run } from '../helpers';

export async function tsCreateOne(ctx, payload) {
  return await api
    .post('/entidad_bancaria', payload)
    .then((response) => {
      return response.data;
    })
    .catch((err) => {
      notifyError(err);
      return null;
    });
}

export async function tsUpdateOne(ctx, payload) {
  return await api
    .put('/entidad_bancaria/' + payload.ENTIDAD_BANCARIA.ID_ENTIDAD_BANCARIA, payload)
    .then((response) => {
      return response.data;
    })
    .catch((err) => {
      notifyError(err);
      return null;
    });
}

export async function tsCreateOneAccount(ctx, payload) {
  return await api
    .post('/cuenta_bancaria', payload)
    .then((response) => {
      return response.data;
    })
    .catch((err) => {
      notifyError(err);
      return null;
    });
}

export async function tsUpdateOneAccount(ctx, payload) {
  return await api
    .put('/cuenta_bancaria/' + payload.CUENTA_BANCARIA.ID_CUENTA_BANCARIA, payload)
    .then((response) => {
      return response.data;
    })
    .catch((err) => {
      notifyError(err);
      return null;
    });
}

export async function tsUpdateOneAccountHolders(ctx, payload) {
  return await api
    .put('/cuenta_bancaria/' + payload.CUENTA_BANCARIA.ID_CUENTA_BANCARIA + '/contactos', payload)
    .then((response) => {
      return response.data;
    })
    .catch((err) => {
      notifyError(err);
      return null;
    });
}

export async function tsGetActiveOffices(ctx, params) {
  return await api
    .get('/oficinas_active', { params })
    .then((response) => {
      return response.data;
    })
    .catch((err) => {
      notifyError(err);
      return null;
    });
}

export async function tsGetActiveBanks(ctx, params) {
  return await api
    .get('/entidades_bancarias', { params })
    .then((response) => {
      return response.data;
    })
    .catch((err) => {
      notifyError(err);
      return null;
    });
}

export async function tsGetList(ctx, params) {
  ctx.commit('setLoading', true);
  return run(api.get('/entidades_bancarias/all', { params }))
    .then(({ items, count }) => {
      ctx.commit('setItems', items || []);
      return { items, count };
    })
    .finally(() => ctx.commit('setLoading', false));
}

export function tsGetOne(ctx, id) {
  const params = {};
  ctx.commit('setLoading', true);
  run(api.get(`/entidad_bancaria/${id}`, { params }))
    .then((data) => ctx.commit('setCurrentEntidadBancaria', data))
    .finally(() => ctx.commit('setLoading', false));
}
