Files
sgeUpdated/sge-frontend/src/redux/actions/mainDataTables/index.js
2025-08-19 07:16:17 +03:00

841 lines
20 KiB
JavaScript

import ApplicationService from "../../../services/ApplicationService";
export const getVMEmissionSummary = (datacenterId) => {
return async (dispatch) => {
try {
const response = await ApplicationService.http()
.post(
"/graphql",
{
query: `
query GetVMEmissions($datacenterId: ID) {
vmEmissionSummary(datacenterId: $datacenterId) {
vmId
vmName
vmPower
vmStatus
totalEmission
createdDate
physicalMachine
cloudSystem
dataCenter
co2
ch4
n2o
reportGeneratedTime
}
}
`,
variables: {
datacenterId: datacenterId
}
},
{
headers: {
Authorization: "Bearer " + localStorage.getItem("accessToken"),
},
}
);
if (response.data.errors) {
console.error("GraphQL Errors:", response.data.errors);
throw new Error(response.data.errors[0]?.message || "GraphQL Error");
}
const vmEmissionSummary = response.data.data.vmEmissionSummary;
dispatch({
type: "GET_VM_EMISSION_SUMMARY",
payload: {
vmEmissionSummary,
},
});
} catch (error) {
console.error("API Error:", error);
throw error;
}
};
};
export const getMainDataTables = (data) => {
return async (dispatch) => {
ApplicationService.http()
.post(
"/graphql",
{
query: `
{
mainDataTables(
criteria:{
year:"${data?.filterOptions?.year?.value}"
deleted:false,
city:"${data?.filterOptions.city}",
district:"${data?.filterOptions.district}",
neighborhood:"${data?.filterOptions.neighborhood}",
}
) {
year
sector {
id
tag
}
subSector{
id
tag
}
activitySubUnit{
id
tag
}
totalEmission
emissionScope{
tag
}
emissionSource{
id
tag
}
}
}
`,
},
{
headers: {
Authorization: "Bearer " + localStorage.getItem("accessToken"),
},
}
)
.then((response) => {
const mainDataTables = response.data.data.mainDataTables;
dispatch({
type: "GET_MAIN_TABLES",
payload: {
mainDataTables,
},
});
});
};
};
export const getMainDataTablesWithPaginate = (data) => {
return async (dispatch) => {
try {
const response = await ApplicationService.http()
.post(
"/graphql",
{
query: `
{
paginateMainDataTables(
pagination: { page: 0, rowsPerPage: 100 }
criteria: { deleted: false, hasVm: true }
sortBy: [{ field: "createdDate", direction: DESC }]
) {
content {
id
year
sector {
id
tag
}
subSector {
id
tag
}
activitySubUnit {
id
tag
}
emissionSource {
id
tag
}
emissionScope {
id
tag
}
co2
ch4
n2o
totalEmission
createdDate
vm {
id
vmName
state
power
calcOn
hostingPm
host
flavorName
tag
config {
id
cpu
ram
disk
}
}
}
pageInfo {
totalElements
totalPages
pageNumber
pageSize
}
}
}
`
},
{
headers: {
Authorization: "Bearer " + localStorage.getItem("accessToken"),
},
}
);
if (response.data.errors) {
console.error("GraphQL Errors:", response.data.errors);
throw new Error(response.data.errors[0]?.message || "GraphQL Error");
}
const mainDataTablesWithPaginate = response.data.data.paginateMainDataTables;
// Log the response for debugging
console.log("API Response:", response.data);
dispatch({
type: "GET_MAIN_TABLES_WITH_PAGINATE",
payload: {
mainDataTablesWithPaginate,
},
});
} catch (error) {
console.error("API Error:", error);
throw error;
}
};
};
export const addDataInput = (data) => async (dispatch) => {
try {
const dataToJSON = JSON.stringify(data);
const deleteQuotesFromKey = dataToJSON.replace(/"([^(")"]+)":/g, "$1:");
const response = await ApplicationService.http().post(
"/graphql",
{
query: `
mutation {
createMainDataTable(input: ${deleteQuotesFromKey}) {
id
createdDate
co2
ch4
n2o
totalEmission
deleted
}
}
`,
},
{
headers: {
Authorization: "Bearer " + localStorage.getItem("accessToken"),
},
}
);
if (response.data.errors) {
const errorMessage = response.data.errors[0].extensions.ErrorCode;
throw errorMessage;
} else {
dispatch({
type: "ADD_DATA_INPUT",
payload: {
dataInput: response.data.data.createMainDataTable,
},
});
}
} catch (error) {
console.log("Network error:", error);
throw error;
}
};
export const createSolidWasteMainDataTable = (data) => async (dispatch) => {
try {
const dataToJSON = JSON.stringify(data);
const deleteQuotesFromKey = dataToJSON.replace(/"([^(")"]+)":/g, "$1:");
const response = await ApplicationService.http().post(
"/graphql",
{
query: `
mutation {
createSolidWasteMainDataTable(input: ${deleteQuotesFromKey}) {
id
createdDate
co2
ch4
n2o
totalEmission
deleted
}
}
`,
},
{
headers: {
Authorization: "Bearer " + localStorage.getItem("accessToken"),
},
}
);
if (response.data.errors) {
const errorMessage = response.data.errors[0].extensions.ErrorCode;
throw errorMessage;
} else {
dispatch({
type: "ADD_SOLID_WASTE",
payload: {
dataInput: response.data.data.createSolidWasteMainDataTable,
},
});
}
} catch (error) {
console.log("Network error:", error);
throw error;
}
};
export const createWasteMainDataTable = (data) => async (dispatch) => {
try {
const dataToJSON = JSON.stringify(data);
const deleteQuotesFromKey = dataToJSON.replace(/"([^(")"]+)":/g, "$1:");
const response = await ApplicationService.http().post(
"/graphql",
{
query: `
mutation {
createWasteMainDataTable(input: ${deleteQuotesFromKey}) {
id
createdDate
co2
ch4
n2o
totalEmission
deleted
}
}
`,
},
{
headers: {
Authorization: "Bearer " + localStorage.getItem("accessToken"),
},
}
);
if (response.data.errors) {
const errorMessage = response.data.errors[0].extensions.ErrorCode;
throw errorMessage;
} else {
dispatch({
type: "ADD_WASTE",
payload: {
dataInput: response.data.data.createWasteMainDataTable,
},
});
}
} catch (error) {
console.log("Network error:", error);
throw error;
}
};
export const updateDataInput = (data) => async (dispatch) => {
try {
let deleteIdFromData = { ...data };
delete deleteIdFromData.id;
const dataToJSON = JSON.stringify(deleteIdFromData);
const deleteQuotesFromKey = dataToJSON.replace(/"([^(")"]+)":/g, "$1:");
const response = await ApplicationService.http().post(
"/graphql",
{
query: `
mutation {
updateMainDataTable(id: "${data.id}",input: ${deleteQuotesFromKey}) {
id
createdDate
year
month
city {
id
name
}
district {
id
name
city {
id
name
}
}
neighborhood {
id
name
district {
id
name
city {
id
name
}
}
}
sector {
id
tag
}
subSector {
id
tag
}
emissionSource {
id
tag
}
activitySubUnit {
id
tag
}
consuptionUnit {
id
tag
description
}
emissionScope {
id
tag
}
gpcReference
solidWasteSupplement{
domestic
frec
garden
industrial
mcfType{
id
typeName
value
}
methaneCaptureRate
paper
textile
tree
}
consuptionAmount
co2
ch4
n2o
totalEmission
deleted
scopeCheck
}
}
`,
},
{
headers: {
Authorization: "Bearer " + localStorage.getItem("accessToken"),
},
}
);
if (response.data.errors) {
const errorMessage = response.data.errors[0].extensions.ErrorCode;
throw errorMessage;
} else {
dispatch({
type: "UPDATE_DATA_INPUT",
payload: {
dataInput: response.data.data.updateMainDataTable,
},
});
}
} catch (error) {
console.log("Network error:", error);
throw error;
}
};
export const updateSolidWasteMainDataTable = (data) => async (dispatch) => {
try {
let deleteIdFromData = { ...data };
delete deleteIdFromData.id;
const dataToJSON = JSON.stringify(deleteIdFromData);
const deleteQuotesFromKey = dataToJSON.replace(/"([^(")"]+)":/g, "$1:");
const response = await ApplicationService.http().post(
"/graphql",
{
query: `
mutation {
updateSolidWasteMainDataTable(id: "${data.id}",input: ${deleteQuotesFromKey}) {
id
createdDate
year
month
city {
id
name
}
district {
id
name
city {
id
name
}
}
neighborhood {
id
name
district {
id
name
city {
id
name
}
}
}
sector {
id
tag
}
subSector {
id
tag
}
emissionSource {
id
tag
}
activitySubUnit {
id
tag
}
consuptionUnit {
id
tag
description
}
emissionScope {
id
tag
}
gpcReference
solidWasteSupplement{
domestic
frec
garden
industrial
mcfType{
id
typeName
value
}
methaneCaptureRate
paper
textile
tree
}
consuptionAmount
co2
ch4
n2o
totalEmission
deleted
scopeCheck
}
}
`,
},
{
headers: {
Authorization: "Bearer " + localStorage.getItem("accessToken"),
},
}
);
if (response.data.errors) {
const errorMessage = response.data.errors[0].extensions.ErrorCode;
throw errorMessage;
} else {
dispatch({
type: "UPDATE_SOLID_WASTE",
payload: {
dataInput: response.data.data.updateSolidWasteMainDataTable,
},
});
}
} catch (error) {
//console.log("Network error:", error);
throw error;
}
};
export const updateWasteMainDataTable = (data) => async (dispatch) => {
try {
let deleteIdFromData = { ...data };
delete deleteIdFromData.id;
const dataToJSON = JSON.stringify(deleteIdFromData);
const deleteQuotesFromKey = dataToJSON.replace(/"([^(")"]+)":/g, "$1:");
const response = await ApplicationService.http().post(
"/graphql",
{
query: `
mutation {
updateWasteMainDataTable(id: "${data.id}",input: ${deleteQuotesFromKey}) {
id
createdDate
year
month
city {
id
name
}
district {
id
name
city {
id
name
}
}
neighborhood {
id
name
district {
id
name
city {
id
name
}
}
}
sector {
id
tag
}
subSector {
id
tag
}
emissionSource {
id
tag
}
activitySubUnit {
id
tag
}
consuptionUnit {
id
tag
description
}
emissionScope {
id
tag
}
gpcReference
weightType
personCount
proteinAmount
burnOrOpenBurn
consuptionAmount
co2
ch4
n2o
totalEmission
deleted
scopeCheck
}
}
`,
},
{
headers: {
Authorization: "Bearer " + localStorage.getItem("accessToken"),
},
}
);
if (response.data.errors) {
const errorMessage = response.data.errors[0].extensions.ErrorCode;
throw errorMessage;
} else {
dispatch({
type: "UPDATE_WASTE",
payload: {
dataInput: response.data.data.updateWasteMainDataTable,
},
});
}
} catch (error) {
//console.log("Network error:", error);
throw error;
}
};
export const deleteDataInput = (dataId) => {
return async (dispatch) => {
ApplicationService.http()
.post(
"/graphql",
{
query: `mutation {
deleteMainDataTable(id:"${dataId}")
}
`,
},
{
headers: {
Authorization: "Bearer " + localStorage.getItem("accessToken"),
},
}
)
.then(() => {
dispatch({
type: "DELETE_DATA_INPUT",
payload: {
id: dataId,
},
});
})
.catch((error) => {
console.log("error", error);
});
};
};
export const getMainDataTablesByVMs = (data) => {
return async (dispatch) => {
const { filterOptions } = data;
try {
const response = await ApplicationService.http()
.post(
"/graphql",
{
query: `
{
mainDataTables(
criteria: {
year: "${filterOptions?.year?.value}"
deleted: false
}
) {
year
sector { id tag }
subSector{ id tag }
activitySubUnit{ id tag }
totalEmission
emissionScope{ tag }
emissionSource{ id tag }
vm { id name status power }
}
}
`,
},
{
headers: {
Authorization: "Bearer " + localStorage.getItem("accessToken"),
},
}
);
const allMainDataTables = response.data.data.mainDataTables || [];
dispatch({
type: "GET_MAIN_TABLES",
payload: {
mainDataTables: allMainDataTables,
},
});
} catch (error) {
console.error("Error fetching main data tables:", error);
dispatch({
type: "GET_MAIN_TABLES",
payload: {
mainDataTables: [],
},
});
}
};
};
export const testMainDataTables = () => {
return async (dispatch) => {
try {
console.log('testMainDataTables: Testing basic mainDataTables query');
const response = await ApplicationService.http()
.post(
"/graphql",
{
query: `
{
mainDataTables(
criteria: {
deleted: false
}
) {
id
year
totalEmission
vm {
id
name
status
power
}
}
}
`,
},
{
headers: {
Authorization: "Bearer " + localStorage.getItem("accessToken"),
},
}
);
console.log('testMainDataTables: Response:', response.data);
if (response.data.errors) {
console.error('testMainDataTables: GraphQL Errors:', response.data.errors);
}
const allData = response.data.data.mainDataTables || [];
console.log('testMainDataTables: All mainDataTables:', allData);
console.log('testMainDataTables: Count:', allData.length);
// Check which records have VM data
const recordsWithVM = allData.filter(record => record.vm);
console.log('testMainDataTables: Records with VM:', recordsWithVM);
console.log('testMainDataTables: Records with VM count:', recordsWithVM.length);
dispatch({
type: "GET_MAIN_TABLES",
payload: {
mainDataTables: allData,
},
});
} catch (error) {
console.error("testMainDataTables: Error:", error);
}
};
};