import { Seguridad, GetHeaderRequest, GetResponseBody, GetResponseBodyError } from './RutasConfig.jsx';
import axios from 'axios';


//////////////EMPRESA ///////////////
export const Empresa_lista_Request = async (pToken) => {
    try {
        const data = {};
        const result = await axios.post(Seguridad.Empresa_Lista, JSON.stringify(data), { headers: GetHeaderRequest(pToken) });
        return await GetResponseBody(result);
    } catch (error) {
        let pResult = {};
        pResult.status = 401;
        let _result = GetResponseBodyError(pResult);
        return _result;
    }
}

export const Empresa_Consulta_Request = async (pToken, EmpresaId) => {
    try {
        const data = { EmpresaId };
        const result = await axios.post(Seguridad.Empresa_Consulta, JSON.stringify(data), { headers: GetHeaderRequest(pToken) });
        return await GetResponseBody(result);
    } catch (error) {
        let pResult = {};
        pResult.status = 401;
        let _result = GetResponseBodyError(pResult);
        return _result;
    }
}

//////////////ORGANIGRAMA///////////
export const Organigrama_lista_Request = async (pToken, pEmpresa) => {
    try {
        const data = { EmpresaId: pEmpresa };
        const result = await axios.post(Seguridad.Organigrama_Lista, JSON.stringify(data), { headers: GetHeaderRequest(pToken) });
        return await GetResponseBody(result);
    } catch (error) {
        let pResult = {};
        pResult.status = 401;
        let _result = GetResponseBodyError(pResult);
        return _result;
    }
}

////////////SEG MODULO////////////////
export const Modulo_ListarModuloUsuario_Request = async (pToken, pUsuarioID, pTipoInterfaz, pTipoSist, pModuloID) => {
    try {
        const data = { pUsuarioID, pTipoInterfaz, pTipoSist, pModuloID }
        const result = await axios.post(Seguridad.Modulo_ListarModuloUsuario, JSON.stringify(data), { headers: GetHeaderRequest(pToken) });
        return await GetResponseBody(result);
    } catch (error) {
        let pResult = {};
        pResult.status = 401;
        let _result = GetResponseBodyError(pResult);
        return _result;
    }
}

////////////SEG MODULO FAVORITOS////////////////

export const SegModuloFavorito_Listar_Request = async (pToken, pEmpresa) => {
    try {
        const data = { pEmpresa }
        const result = await axios.post(Seguridad.SegModuloFavorito_Listar, JSON.stringify(data), { headers: GetHeaderRequest(pToken) });
        return await GetResponseBody(result);
    } catch (error) {
        let pResult = {};
        pResult.status = 401;
        let _result = GetResponseBodyError(pResult);
        return _result;
    }
}

export const SegModuloFavorito_Consulta_Request = async (pToken, pModulo_Id, pUsuario_Id) => {
    try {
        const data = { pModulo_Id, pUsuario_Id }
        const result = await axios.post(Seguridad.SegModuloFavorito_Consulta, JSON.stringify(data), { headers: GetHeaderRequest(pToken) });
        return await GetResponseBody(result);
    } catch (error) {
        let pResult = {};
        pResult.status = 401;
        let _result = GetResponseBodyError(pResult);
        return _result;
    }
}

export const SegModuloFavorito_Guardar_Request = async (pToken, pDatos) => {
    try {
        const data = { pDatos }
        const result = await axios.post(Seguridad.SegModuloFavorito_Guardar, JSON.stringify(data), { headers: GetHeaderRequest(pToken) });
        return await GetResponseBody(result);
    } catch (error) {
        let pResult = {};
        pResult.status = 401;
        let _result = GetResponseBodyError(pResult);
        return _result;
    }
}


export const SegModuloFavorito_Modificar_Request = async (pToken, pDatos) => {
    try {
        const data = { pDatos }
        const result = await axios.post(Seguridad.SegModuloFavorito_Modificar, JSON.stringify(data), { headers: GetHeaderRequest(pToken) });
        return await GetResponseBody(result);
    } catch (error) {
        let pResult = {};
        pResult.status = 401;
        let _result = GetResponseBodyError(pResult);
        return _result;
    }
}


export const SegModuloFavorito_Eliminar_Request = async (pToken, pModulo_Id, pUsuario_Id) => {
    try {
        const data = { pModulo_Id, pUsuario_Id }
        const result = await axios.post(Seguridad.SegModuloFavorito_Eliminar, JSON.stringify(data), { headers: GetHeaderRequest(pToken) });
        return await GetResponseBody(result);
    } catch (error) {
        let pResult = {};
        pResult.status = 401;
        let _result = GetResponseBodyError(pResult);
        return _result;
    }
}

////////////SEG SISTEMA////////////////

export const SegSistema_Listar_Request = async (pToken, pUsuarioID, pTipoInterfaz, pTipoSist, pModuloID) => {
    try {
        const data = { pUsuarioID, pTipoInterfaz, pTipoSist, pModuloID }
        const result = await axios.post(Seguridad.SegSistema_Listar, JSON.stringify(data), { headers: GetHeaderRequest(pToken) });
        return await GetResponseBody(result);
    } catch (error) {
        let pResult = {};
        pResult.status = 401;
        let _result = GetResponseBodyError(pResult);
        return _result;
    }
}

export const SegSistema_Consulta_Request = async (pToken, pId,) => {
    try {
        const data = { pId }
        const result = await axios.post(Seguridad.SegSistema_Consulta, JSON.stringify(data), { headers: GetHeaderRequest(pToken) });
        return await GetResponseBody(result);
    } catch (error) {
        let pResult = {};
        pResult.status = 401;
        let _result = GetResponseBodyError(pResult);
        return _result;
    }
}

export const SegSistema_Guardar_Request = async (pToken, pDatos) => {
    try {
        const data = { pDatos }
        const result = await axios.post(Seguridad.SegSistema_Guardar, JSON.stringify(data), { headers: GetHeaderRequest(pToken) });
        return await GetResponseBody(result);
    } catch (error) {
        let pResult = {};
        pResult.status = 401;
        let _result = GetResponseBodyError(pResult);
        return _result;
    }
}


export const SegSistema_Modificar_Request = async (pToken, pDatos) => {
    try {
        const data = { pDatos }
        const result = await axios.post(Seguridad.SegSistema_Modificar, JSON.stringify(data), { headers: GetHeaderRequest(pToken) });
        return await GetResponseBody(result);
    } catch (error) {
        let pResult = {};
        pResult.status = 401;
        let _result = GetResponseBodyError(pResult);
        return _result;
    }
}


export const SegSistema_Eliminar_Request = async (pToken, pId) => {
    try {
        const data = { pId }
        const result = await axios.post(Seguridad.SegSistema_Eliminar, JSON.stringify(data), { headers: GetHeaderRequest(pToken) });
        return await GetResponseBody(result);
    } catch (error) {
        let pResult = {};
        pResult.status = 401;
        let _result = GetResponseBodyError(pResult);
        return _result;
    }
}


////////////USUARIO//////////////////
export const InactivarBloquear_Usuario_Request = async (pToken, pEmpresa, pEmpleado,  pInactivar) => {
    try {
        const data = { pEmpresa,pEmpleado,  pInactivar };
        const result = await axios.post(Seguridad.InactivarBloquear_Usuario, JSON.stringify(data), { headers: GetHeaderRequest(pToken) });
        return await GetResponseBody(result);
    } catch (error) {
        let pResult = {};
        pResult.status = 401;
        let _result = GetResponseBodyError(pResult);
        return _result;
    }
}

////////////TIPO SISTEMA//////////////////
//export const Consultar_TipoSistema = async () => {
//    const result = await axios.get(Seguridad.Tipo_Sistema);
//    return await GetResponseBody(result);
//}

export const Consultar_TipoSistema = async () => {
    const result = await axios.get(Seguridad.Tipo_Sistema)
    return await GetResponseBody(result);
}

////////////ENCRIPTAR TOKEN//////////////////
export const Seg_Usuario_Encriptar_Llave_Request = async (pLlave, pToken) => {
    const data = { pLlave: pLlave };
    const result = await axios.post(Seguridad.Seg_Usuario_Encriptar_Llave, JSON.stringify(data), { headers: GetHeaderRequest(pToken) });
    return await GetResponseBody(result);
}