Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
624 changes: 310 additions & 314 deletions functions/src/backoffice/business/index.ts

Large diffs are not rendered by default.

35 changes: 20 additions & 15 deletions functions/src/backoffice/database/getCircleBalance.ts
Original file line number Diff line number Diff line change
@@ -1,20 +1,25 @@
import axios from 'axios';

import { ICircleBalance } from '../types';
import { circlePayApi } from '../../settings';
import { externalRequestExecutor } from '../../util';
import { ErrorCodes } from '../../constants';
import { getCircleHeaders } from '../../circlepay/index';
import {ICircleBalance} from '../types';
import {circlePayApi} from '../../settings';
import {externalRequestExecutor} from '../../util';
import {ErrorCodes} from '../../constants';
import {getCircleHeaders} from '../../circlepay/index';


export const getCircleBalance = async() : Promise<any> => {
export const getCircleBalance = async (): Promise<any> => {
const headers = await getCircleHeaders();

return await externalRequestExecutor(async () => {
return await axios.get<ICircleBalance>(`${circlePayApi}/balances`, headers)
}, {
errorCode: ErrorCodes.CirclePayError,
userMessage: 'Call to CirclePay failed. Please try again later and if the issue persist contact us.'
});
}

return await externalRequestExecutor(
async () => {
return await axios.get<ICircleBalance>(
`${circlePayApi}/balances`,
headers,
);
},
{
errorCode: ErrorCodes.CirclePayError,
userMessage:
'Call to CirclePay failed. Please try again later and if the issue persist contact us.',
},
);
};
13 changes: 7 additions & 6 deletions functions/src/backoffice/database/getCommonBalance.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import { CommonCollection } from './index';
import {CommonCollection} from './index';

export async function getCommonBalance():Promise<any> {
const commonCollectionQuery: any = CommonCollection;
export async function getCommonBalance(): Promise<any> {
const commonCollectionQuery: any = CommonCollection;

return (await commonCollectionQuery.get()).docs
.map(common => common.data());
}
return (await commonCollectionQuery.get()).docs.map((common) =>
common.data(),
);
}
153 changes: 76 additions & 77 deletions functions/src/backoffice/database/getPayin.ts
Original file line number Diff line number Diff line change
@@ -1,79 +1,78 @@
import { PaymentsCollection, ProposalsCollection, CommonCollection, UsersCollection, SubscriptionsCollection } from './index';

export async function getPayin():Promise<any> {



const payments = (await PaymentsCollection
.orderBy("createdAt", "asc")
.where("status", "in", ['paid', 'confirmed'])
.get()
).docs.map(p => p.data());


let key = 0;
const payInCollection = {}

for (const property in payments) {

const payment = payments[property];

if(!payment.proposalId && !payment.subscriptionId) continue;


const proposalsQuery: any = ProposalsCollection;
proposalsQuery.orderBy("createdAt", "asc")

const subscriptionsQuery: any = SubscriptionsCollection;
subscriptionsQuery.orderBy("createdAt", "asc")

let proposal, subscription;
if(payment.proposalId){
// eslint-disable-next-line no-await-in-loop
proposal = (await proposalsQuery.doc(payment.proposalId).get())
}


const proposalData = proposal.data()

if(proposalData){
// eslint-disable-next-line no-await-in-loop
payInCollection[key] = { payment: payment, proposal: proposalData}

if(payment.subscriptionId){
// eslint-disable-next-line no-await-in-loop
subscription = (await subscriptionsQuery.doc(payment.subscriptionId).get())
const subscriptionData = subscription.data()
payInCollection[key] = { ...payInCollection[key], subscription: subscriptionData}

}


const commonQuery: any = CommonCollection;

//eslint-disable-next-line no-await-in-loop
const dao = await commonQuery.doc(proposalData.commonId).get()
const daoData = dao.data()
if(daoData){
payInCollection[key] = {...payInCollection[key], common: daoData}
}


const usersQuery: any = UsersCollection;
usersQuery.orderBy("createdAt", "asc")

//eslint-disable-next-line no-await-in-loop
const user = await (usersQuery.doc(proposalData.proposerId).get())

const userData = user.data()
if(userData){
payInCollection[key] = {...payInCollection[key], user: userData}
}


key++;
}
import {
PaymentsCollection,
ProposalsCollection,
CommonCollection,
UsersCollection,
SubscriptionsCollection,
} from './index';

export async function getPayin(): Promise<any> {
const payments = (
await PaymentsCollection.orderBy('createdAt', 'asc')
.where('status', 'in', ['paid', 'confirmed'])
.get()
).docs.map((p) => p.data());

let key = 0;
const payInCollection = {};

for (const property in payments) {
const payment = payments[property];

if (!payment.proposalId && !payment.subscriptionId) continue;

const proposalsQuery: any = ProposalsCollection;
proposalsQuery.orderBy('createdAt', 'asc');

const subscriptionsQuery: any = SubscriptionsCollection;
subscriptionsQuery.orderBy('createdAt', 'asc');

let proposal, subscription;
if (payment.proposalId) {
// eslint-disable-next-line no-await-in-loop
proposal = await proposalsQuery.doc(payment.proposalId).get();
}

const proposalData = proposal.data();

if (proposalData) {
// eslint-disable-next-line no-await-in-loop
payInCollection[key] = {payment: payment, proposal: proposalData};

if (payment.subscriptionId) {
// eslint-disable-next-line no-await-in-loop
subscription = await subscriptionsQuery
.doc(payment.subscriptionId)
.get();
const subscriptionData = subscription.data();
payInCollection[key] = {
...payInCollection[key],
subscription: subscriptionData,
};
}

const commonQuery: any = CommonCollection;

//eslint-disable-next-line no-await-in-loop
const dao = await commonQuery.doc(proposalData.commonId).get();
const daoData = dao.data();
if (daoData) {
payInCollection[key] = {...payInCollection[key], common: daoData};
}

const usersQuery: any = UsersCollection;
usersQuery.orderBy('createdAt', 'asc');

//eslint-disable-next-line no-await-in-loop
const user = await usersQuery.doc(proposalData.proposerId).get();

const userData = user.data();
if (userData) {
payInCollection[key] = {...payInCollection[key], user: userData};
}

key++;
}
return payInCollection
}
}
return payInCollection;
}
119 changes: 58 additions & 61 deletions functions/src/backoffice/database/getPayout.ts
Original file line number Diff line number Diff line change
@@ -1,63 +1,60 @@
import { ProposalsCollection, UsersCollection, CommonCollection, PayoutsCollection } from './index';

export async function getPayout():Promise<any> {

const proposals: any = (await ProposalsCollection
.orderBy("createdAt", "asc")
.get()
).docs.map(p => p.data());



const payOutCollection = {};
let key = 0;
for (const property in proposals) {

const proposal = proposals[property];

if(!proposal.fundingRequest) continue;
if(proposal.fundingRequest.amount === 0) continue;
if(proposal.state !== "passed") continue;
if(proposal.type !== "fundingRequest") continue;
if(!proposal.proposerId) continue;

payOutCollection[key] = { proposal: proposal}

const usersQuery: any = UsersCollection;

// eslint-disable-next-line no-await-in-loop
const user = await usersQuery.doc(proposal.proposerId).get()
const userData = user.data()
if(userData){
payOutCollection[key] = {...payOutCollection[key], user: userData}
}

const commonsQuery: any = CommonCollection;
//eslint-disable-next-line no-await-in-loop
const dao = await commonsQuery.doc(proposal.commonId).get()
const daoData = dao.data()
if(daoData){
payOutCollection[key] = {...payOutCollection[key], common: daoData}
}

const payoutsQuery: any = PayoutsCollection;
//eslint-disable-next-line no-await-in-loop
const payout = (await payoutsQuery
.where("proposalId", "==", proposal.id)
.get()).docs.map(p => p.data());

if(payout){
const payoutData = payout[0]
if(payoutData){
payOutCollection[key] = {...payOutCollection[key], payout: payoutData}
}
}



key++;
import {
ProposalsCollection,
UsersCollection,
CommonCollection,
PayoutsCollection,
} from './index';

export async function getPayout(): Promise<any> {
const proposals: any = (
await ProposalsCollection.orderBy('createdAt', 'asc').get()
).docs.map((p) => p.data());

const payOutCollection = {};
let key = 0;
for (const property in proposals) {
const proposal = proposals[property];

if (!proposal.fundingRequest) continue;
if (proposal.fundingRequest.amount === 0) continue;
if (proposal.state !== 'passed') continue;
if (proposal.type !== 'fundingRequest') continue;
if (!proposal.proposerId) continue;

payOutCollection[key] = {proposal: proposal};

const usersQuery: any = UsersCollection;

// eslint-disable-next-line no-await-in-loop
const user = await usersQuery.doc(proposal.proposerId).get();
const userData = user.data();
if (userData) {
payOutCollection[key] = {...payOutCollection[key], user: userData};
}


return payOutCollection
}
const commonsQuery: any = CommonCollection;
//eslint-disable-next-line no-await-in-loop
const dao = await commonsQuery.doc(proposal.commonId).get();
const daoData = dao.data();
if (daoData) {
payOutCollection[key] = {...payOutCollection[key], common: daoData};
}

const payoutsQuery: any = PayoutsCollection;
//eslint-disable-next-line no-await-in-loop
const payout = (
await payoutsQuery.where('proposalId', '==', proposal.id).get()
).docs.map((p) => p.data());

if (payout) {
const payoutData = payout[0];
if (payoutData) {
payOutCollection[key] = {...payOutCollection[key], payout: payoutData};
}
}

key++;
}

return payOutCollection;
}
Loading