evoleasing-account/actions/eventsActions.js
2023-04-20 11:09:37 +03:00

182 lines
3.9 KiB
JavaScript

import axios from 'axios';
import { Cookies } from 'react-cookie';
import Router from 'next/router';
import moment from 'moment';
import { nSQL } from "@nano-sql/core";
import * as actionTypes from '../constants/actionTypes';
if(process.browser)
{
FormData.prototype.appendObject = function(obj, namespace)
{
let keyName;
for (var key in obj)
{
if (obj.hasOwnProperty(key))
{
keyName = [namespace, '[', key, ']'].join('');
this.append(keyName, obj[key]);
}
}
};
}
export const getEvents = ({ dispatch, type, contract }) =>
{
//console.log("ACTION", "getEvents()");
return new Promise((resolve, reject) =>
{
//console.log("global.store.getState()", global.store.getState());
if(global.store.getState().events.list === undefined)
{
axios.post(`${ process.env.NEXT_PUBLIC_SELF_API_HOST }/api/events`, {}, {
withCredentials: true,
})
.then((response) =>
{
//console.log("ACTION", "getEvents()", "response", response.data);
const events = response.data;
const filtered_events = [];
//console.log("ACTION", "getEvents()", "events", events);
dispatch({ type: actionTypes.EVENTS, data: { list: events, loaded: true } });
resolve();
})
.catch((error) =>
{
//console.log("error");
console.error(error);
reject();
});
}
else
{
resolve();
}
});
}
export const getFilteredEvents = ({ dispatch, search, contract }) =>
{
return new Promise((resolve, reject) =>
{
//console.log("getFilteredEvents");
const types = {
"additional": [ "osago_prolong", "kasko_prolong", "fingap_prolong" ],
"finance": [ "graph_change", "end_contract" ],
"fines": "fine_gibdd",
"pts": "return_pts",
};
if((search !== undefined || search !== null || search !== ""))
{
//console.log(global.store.getState().events);
const events = global.store.getState().events.list;
let query = nSQL(events)
.query("select");
/*
if(type !== undefined)
{
if(typeof types[ type ] === "string")
{
query.where([ [ "event_type", "=", types[ type ] ] ])
}
else
{
let array_of_queries = [];
for(let i in types[ type ])
{
array_of_queries.push([ "event_type", "=", types[ type ][ i ] ]);
if(parseInt(i, 10) < parseInt(types[ type ].length - 1))
{
//console.log(parseInt(i, 10), "<", types[ type ].length - 1);
array_of_queries.push("OR");
}
}
//console.log("array_of_queries", array_of_queries);
query.where(array_of_queries);
}
}
*/
if(search !== undefined && search !== null && search !== "")
{
query.where([ [ "contract_number", "LIKE", `%${ search }%` ], "OR", [ "add_info", "LIKE", `%${ search }%` ]]);
}
if(contract !== undefined && contract !== null && contract !== "")
{
query.where([ [ "contract_number", "=", contract ] ]);
}
query.exec().then((rows) =>
{
//console.log("rows");
//console.log(rows);
dispatch({ type: actionTypes.EVENTS_FILTERED, data: { filtered: rows } });
resolve();
});
}
else
{
dispatch({ type: actionTypes.EVENTS_FILTERED, data: { filtered: undefined } });
resolve();
}
});
}
export const getContractEvents = ({ dispatch, contract }) =>
{
//console.log("ACTION", "getContractEvents");
return new Promise((resolve, reject) =>
{
const events = global.store.getState().events.list;
//console.log("ACTION", "getContractEvents", "events", events);
let query = nSQL(events)
.query("select");
if(contract !== undefined && contract !== null && contract !== "")
{
query.where([ [ "contract_number", "=", contract ] ]);
}
query.exec().then((rows) =>
{
//console.log("rows");
//console.log(rows);
const events_list = {};
events_list[`${ contract }`] = rows;
dispatch({ type: actionTypes.CONTRACT_EVENTS, data: events_list });
resolve();
});
});
}