92 lines
2.3 KiB
JavaScript
92 lines
2.3 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 { concatSeries } from "async";
|
|
|
|
import * as actionTypes from '../constants/actionTypes';
|
|
import * as currentState from '../reducers/initialState';
|
|
|
|
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 getCalendar = ({ dispatch, date_from, date_to }) =>
|
|
{
|
|
//console.log("getCalendar", date_from, date_to);
|
|
|
|
return new Promise((resolve, reject) =>
|
|
{
|
|
axios.post(`${ process.env.NEXT_PUBLIC_SELF_API_HOST }/api/calendar`, {},
|
|
{
|
|
withCredentials: true,
|
|
})
|
|
.then((response) =>
|
|
{
|
|
const periods = {};
|
|
|
|
concatSeries(response.data, (contract, callback) =>
|
|
{
|
|
let payments = [];
|
|
for(let i in contract.payments)
|
|
{
|
|
if(contract.payments[i].date !== null)
|
|
{
|
|
const mdate = moment(contract.payments[i].date, "DD-MM-YYYY");
|
|
periods[mdate.format('YYYYMM')] = mdate.format('YYYYMM');
|
|
|
|
payments.push({ ...contract.payments[i], ...{ contract: { number: contract.number, date: contract.date }, date: mdate.format("YYYY-MM-DD"), js_date: mdate.toDate() } });
|
|
}
|
|
}
|
|
|
|
let query = nSQL(payments)
|
|
.query("select")
|
|
.where([ [ "js_date", ">=", date_from ], "AND", [ "js_date", "<=", date_to ] ])
|
|
.orderBy("number", "asc")
|
|
.exec().then((rows) =>
|
|
{
|
|
callback(null, rows);
|
|
});
|
|
}, (error, result) =>
|
|
{
|
|
let calendar = [];
|
|
nSQL(result)
|
|
.query("select", ["date", "SUM(total_amount) AS total"])
|
|
.groupBy(["date ASC"])
|
|
.exec().then(async (grouped_rows) =>
|
|
{
|
|
for(let i in grouped_rows)
|
|
{
|
|
const payments = await nSQL(result).query("select").where([[ "date", "=", grouped_rows[i].date ]]).exec();
|
|
|
|
calendar.push({ ...grouped_rows[i], ...{ payments: payments }});
|
|
}
|
|
|
|
//console.log("TOTAL calendar", calendar);
|
|
|
|
dispatch({ type: actionTypes.CALENDAR, data: { payments: calendar, periods: periods } });
|
|
});
|
|
});
|
|
|
|
resolve();
|
|
})
|
|
.catch((error) =>
|
|
{
|
|
console.error(error);
|
|
reject();
|
|
});
|
|
});
|
|
} |