evoleasing-account/actions/contractActions.js
2021-12-06 15:48:05 +03:00

287 lines
5.8 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';
import * as currentState from '../reducers/initialState';
import { eachSeries } from 'async';
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 getContract = ({ dispatch, number, }) =>
{
return new Promise((resolve, reject) =>
{
axios.post(`${ process.env.NEXT_PUBLIC_SELF_API_HOST }/api/contract`, {
number: number
},
{
withCredentials: true,
})
.then((response) =>
{
console.log("response.data");
console.log(response.data);
dispatch({ type: actionTypes.CONTRACT_PAYMENTS, data: { payments: response.data } });
resolve();
})
.catch((error) =>
{
console.error(error);
reject();
});
});
}
export const getContractInfo = ({ dispatch, number, }) =>
{
return new Promise((resolve, reject) =>
{
axios.post(`${ process.env.NEXT_PUBLIC_SELF_API_HOST }/api/contract/info`, {
number: number
},
{
withCredentials: true,
})
.then((response) =>
{
const info = { date: response.data.dl_date, car: response.data.car };
dispatch({ type: actionTypes.CONTRACT_INFO, data: info });
resolve(info);
})
.catch((error) =>
{
console.error(error);
reject();
});
});
}
export const getContractInsurance = ({ dispatch, number, }) =>
{
return new Promise((resolve, reject) =>
{
axios.post(`${ process.env.NEXT_PUBLIC_SELF_API_HOST }/api/contract/insurance`, {
number: number
},
{
withCredentials: true,
})
.then((response) =>
{
dispatch({ type: actionTypes.CONTRACT_INSURANCE, data: { insurance: response.data } });
resolve();
})
.catch((error) =>
{
console.error(error);
reject();
});
});
}
export const getContractHelpCard = ({ dispatch, number, }) =>
{
return new Promise((resolve, reject) =>
{
axios.post(`${ process.env.NEXT_PUBLIC_SELF_API_HOST }/api/contract/helpcard`, {
number: number
},
{
withCredentials: true,
})
.then((response) =>
{
dispatch({ type: actionTypes.CONTRACT_HELPCARD, data: { helpcard: response.data } });
resolve();
})
.catch((error) =>
{
console.error(error);
reject();
});
});
}
export const getContractRegistration = ({ dispatch, number, }) =>
{
return new Promise((resolve, reject) =>
{
axios.post(`${ process.env.NEXT_PUBLIC_SELF_API_HOST }/api/contract/registration`, {
number: number
},
{
withCredentials: true,
})
.then((response) =>
{
dispatch({ type: actionTypes.CONTRACT_REGISTRATION, data: { registration: response.data } });
resolve();
})
.catch((error) =>
{
console.error(error);
reject();
});
});
}
export const getContractTelematic = ({ dispatch, number, }) =>
{
return new Promise((resolve, reject) =>
{
axios.post(`${ process.env.NEXT_PUBLIC_SELF_API_HOST }/api/contract/telematic`, {
number: number
},
{
withCredentials: true,
})
.then((response) =>
{
dispatch({ type: actionTypes.CONTRACT_TELEMATIC, data: { telematic: response.data } });
resolve();
})
.catch((error) =>
{
console.error(error);
reject();
});
});
}
export const getContractAgreement = ({ dispatch, number, }) =>
{
return new Promise((resolve, reject) =>
{
axios.post(`${ process.env.NEXT_PUBLIC_SELF_API_HOST }/api/contract/agreement`, {
number: number
},
{
withCredentials: true,
})
.then((response) =>
{
dispatch({ type: actionTypes.CONTRACT_AGREEMENT, data: { agreement: response.data } });
resolve();
})
.catch((error) =>
{
console.error(error);
reject();
});
});
}
export const getContractDocuments = ({ dispatch, number, }) =>
{
return new Promise((resolve, reject) =>
{
axios.post(`${ process.env.NEXT_PUBLIC_SELF_API_HOST }/api/contract/documents`, {
number: number
},
{
withCredentials: true,
})
.then(async (response) =>
{
console.log("getDocuments", "response.data", response.data);
const documents = { upd: [], upd_avans: [], fines: [] };
await Promise.all([
new Promise((pr) =>
{
let query = nSQL(response.data.upd).query("select");
query = query.orderBy({ date: "desc" });
query.exec().then((rows) =>
{
documents.upd = rows;
pr();
});
}), new Promise((pr) =>
{
let query = nSQL(response.data.upd_avans).query("select");
query = query.orderBy({ date: "desc" });
query.exec().then((rows) =>
{
documents.upd_avans = rows;
pr();
});
}), new Promise((pr) =>
{
let query = nSQL(response.data.fines).query("select");
query = query.orderBy({ date: "desc" });
query.exec().then((rows) =>
{
documents.fines = rows;
pr();
});
})])
.then(() =>
{
console.log("documents");
console.log(documents);
dispatch({ type: actionTypes.CONTRACT_DOCUMENTS, data: { documents: documents } });
resolve();
});
})
.catch((error) =>
{
console.error(error);
reject();
});
});
}
export const getContractRules = ({ dispatch, date, }) =>
{
return new Promise((resolve, reject) =>
{
axios.post(`${ process.env.NEXT_PUBLIC_SELF_API_HOST }/api/contract/rules`, {
date: date
},
{
withCredentials: true,
})
.then(async (response) =>
{
console.log("getContractRules", "response.data", response.data);
dispatch({ type: actionTypes.CONTRACT_RULES, data: { rules: response.data.rules } });
resolve();
})
.catch((error) =>
{
console.error(error);
reject();
});
});
}