UNPKG

@accounter/server

Version:
484 lines (482 loc) • 19.5 kB
import { GraphQLError } from 'graphql'; import { TagsProvider } from '../../tags/providers/tags.provider.js'; import { fetchBusiness, fetchTaxCategory } from '../helpers/admin-context.helper.js'; import { AdminContextProvider } from '../providers/admin-context.provider.js'; import type { AdminContextModule } from '../types.js'; export const adminContextResolvers: AdminContextModule.Resolvers = { Query: { adminContext: (_, __, { injector }) => injector .get(AdminContextProvider) .getVerifiedAdminContext() .then(res => { if (!res) { const message = 'Admin context not found'; console.error(message); throw new GraphQLError(message); } return res; }) .catch(e => { if (e instanceof GraphQLError) { throw e; } console.error(JSON.stringify(e, null, 2)); throw new GraphQLError(`Error fetching admin context`); }), }, Mutation: { updateAdminContext: (_, { context }, { injector }) => injector .get(AdminContextProvider) .updateAdminContext({ ...context, }) .then(res => { if (!res) { throw new GraphQLError(`Error updating admin context`); } return res; }) .catch(e => { if (e instanceof GraphQLError) { throw e; } console.error(JSON.stringify(e, null, 2)); throw new GraphQLError(`Error updating admin context`); }), }, AdminContextInfo: { id: dbAdminContext => dbAdminContext.ownerId, ownerId: dbAdminContext => dbAdminContext.ownerId, defaultLocalCurrency: dbAdminContext => dbAdminContext.defaultLocalCurrency, defaultForeignCurrency: dbAdminContext => dbAdminContext.defaultCryptoConversionFiatCurrency, defaultTaxCategory: async (dbAdminContext, _, { injector }) => fetchTaxCategory(injector, 'defaultTaxCategory', dbAdminContext.defaultTaxCategoryId), locality: dbAdminContext => dbAdminContext.locality, vatBusiness: async (dbAdminContext, _, { injector }) => fetchBusiness(injector, 'vatBusiness', dbAdminContext.authorities.vatBusinessId), inputVatTaxCategory: async (dbAdminContext, _, { injector }) => fetchTaxCategory( injector, 'inputVatTaxCategory', dbAdminContext.authorities.inputVatTaxCategoryId, ), outputVatTaxCategory: async (dbAdminContext, _, { injector }) => fetchTaxCategory( injector, 'outputVatTaxCategory', dbAdminContext.authorities.outputVatTaxCategoryId, ), propertyOutputVatTaxCategory: async (dbAdminContext, _, { injector }) => fetchTaxCategory( injector, 'propertyOutputVatTaxCategory', dbAdminContext.authorities.propertyOutputVatTaxCategoryId, ), taxBusiness: async (dbAdminContext, _, { injector }) => fetchBusiness(injector, 'taxBusiness', dbAdminContext.authorities.taxBusinessId), taxExpensesTaxCategory: async (dbAdminContext, _, { injector }) => fetchTaxCategory( injector, 'taxExpensesTaxCategory', dbAdminContext.authorities.taxExpensesTaxCategoryId, ), socialSecurityBusiness: async (dbAdminContext, _, { injector }) => fetchBusiness( injector, 'socialSecurityBusiness', dbAdminContext.authorities.socialSecurityBusinessId, ), exchangeRateTaxCategory: async (dbAdminContext, _, { injector }) => fetchTaxCategory( injector, 'exchangeRateTaxCategory', dbAdminContext.general.taxCategories.exchangeRateTaxCategoryId, ), incomeExchangeRateTaxCategory: async (dbAdminContext, _, { injector }) => fetchTaxCategory( injector, 'incomeExchangeRateTaxCategory', dbAdminContext.general.taxCategories.incomeExchangeRateTaxCategoryId, ), exchangeRateRevaluationTaxCategory: async (dbAdminContext, _, { injector }) => fetchTaxCategory( injector, 'exchangeRateRevaluationTaxCategory', dbAdminContext.general.taxCategories.exchangeRevaluationTaxCategoryId, ), feeTaxCategory: async (dbAdminContext, _, { injector }) => fetchTaxCategory( injector, 'feeTaxCategory', dbAdminContext.general.taxCategories.feeTaxCategoryId, ), generalFeeTaxCategory: async (dbAdminContext, _, { injector }) => fetchTaxCategory( injector, 'generalFeeTaxCategory', dbAdminContext.general.taxCategories.generalFeeTaxCategoryId, ), fineTaxCategory: async (dbAdminContext, _, { injector }) => fetchTaxCategory( injector, 'fineTaxCategory', dbAdminContext.general.taxCategories.fineTaxCategoryId, ), untaxableGiftsTaxCategory: async (dbAdminContext, _, { injector }) => fetchTaxCategory( injector, 'untaxableGiftsTaxCategory', dbAdminContext.general.taxCategories.untaxableGiftsTaxCategoryId, ), balanceCancellationTaxCategory: async (dbAdminContext, _, { injector }) => fetchTaxCategory( injector, 'balanceCancellationTaxCategory', dbAdminContext.general.taxCategories.balanceCancellationTaxCategoryId, ), developmentForeignTaxCategory: async (dbAdminContext, _, { injector }) => fetchTaxCategory( injector, 'developmentForeignTaxCategory', dbAdminContext.general.taxCategories.developmentForeignTaxCategoryId, ), developmentLocalTaxCategory: async (dbAdminContext, _, { injector }) => fetchTaxCategory( injector, 'developmentLocalTaxCategory', dbAdminContext.general.taxCategories.developmentLocalTaxCategoryId, ), accumulatedDepreciationTaxCategory: async (dbAdminContext, _, { injector }) => dbAdminContext.depreciation.accumulatedDepreciationTaxCategoryId ? fetchTaxCategory( injector, 'accumulatedDepreciationTaxCategory', dbAdminContext.depreciation.accumulatedDepreciationTaxCategoryId, ) : null, rndDepreciationExpensesTaxCategory: async (dbAdminContext, _, { injector }) => dbAdminContext.depreciation.rndDepreciationExpensesTaxCategoryId ? fetchTaxCategory( injector, 'rndDepreciationExpensesTaxCategory', dbAdminContext.depreciation.rndDepreciationExpensesTaxCategoryId, ) : null, gnmDepreciationExpensesTaxCategory: async (dbAdminContext, _, { injector }) => dbAdminContext.depreciation.gnmDepreciationExpensesTaxCategoryId ? fetchTaxCategory( injector, 'gnmDepreciationExpensesTaxCategory', dbAdminContext.depreciation.gnmDepreciationExpensesTaxCategoryId, ) : null, marketingDepreciationExpensesTaxCategory: async (dbAdminContext, _, { injector }) => dbAdminContext.depreciation.marketingDepreciationExpensesTaxCategoryId ? fetchTaxCategory( injector, 'marketingDepreciationExpensesTaxCategory', dbAdminContext.depreciation.marketingDepreciationExpensesTaxCategoryId, ) : null, bankDepositInterestIncomeTaxCategory: async (dbAdminContext, _, { injector }) => dbAdminContext.bankDeposits.bankDepositInterestIncomeTaxCategoryId ? fetchTaxCategory( injector, 'bankDepositInterestIncomeTaxCategory', dbAdminContext.bankDeposits.bankDepositInterestIncomeTaxCategoryId, ) : null, businessTripTaxCategory: async (dbAdminContext, _, { injector }) => dbAdminContext.businessTrips.businessTripTaxCategoryId ? fetchTaxCategory( injector, 'businessTripTaxCategory', dbAdminContext.businessTrips.businessTripTaxCategoryId, ) : null, businessTripTag: async (dbAdminContext, _, { injector }) => { if (!dbAdminContext.businessTrips.businessTripTagId) { return null; } return injector .get(TagsProvider) .getTagByIDLoader.load(dbAdminContext.businessTrips.businessTripTagId) .then(res => { if (!res) { throw new GraphQLError( `Business trip tag (with ID="${dbAdminContext.businessTrips.businessTripTagId}") not found`, ); } return res; }) .catch(e => { if (e instanceof GraphQLError) { throw e; } console.error(JSON.stringify(e, null, 2)); throw new GraphQLError(`Error fetching business trip tag`); }); }, expensesToPayTaxCategory: async (dbAdminContext, _, { injector }) => fetchTaxCategory( injector, 'expensesToPayTaxCategory', dbAdminContext.crossYear.expensesToPayTaxCategoryId, ), expensesInAdvanceTaxCategory: async (dbAdminContext, _, { injector }) => fetchTaxCategory( injector, 'expensesInAdvanceTaxCategory', dbAdminContext.crossYear.expensesInAdvanceTaxCategoryId, ), incomeToCollectTaxCategory: async (dbAdminContext, _, { injector }) => fetchTaxCategory( injector, 'incomeToCollectTaxCategory', dbAdminContext.crossYear.incomeToCollectTaxCategoryId, ), incomeInAdvanceTaxCategory: async (dbAdminContext, _, { injector }) => dbAdminContext.crossYear.incomeInAdvanceTaxCategoryId ? fetchTaxCategory( injector, 'incomeInAdvanceTaxCategory', dbAdminContext.crossYear.incomeInAdvanceTaxCategoryId, ) : null, zkufotExpensesTaxCategory: async (dbAdminContext, _, { injector }) => dbAdminContext.salaries.zkufotExpensesTaxCategoryId ? fetchTaxCategory( injector, 'zkufotExpensesTaxCategory', dbAdminContext.salaries.zkufotExpensesTaxCategoryId, ) : null, zkufotIncomeTaxCategory: async (dbAdminContext, _, { injector }) => dbAdminContext.salaries.zkufotIncomeTaxCategoryId ? fetchTaxCategory( injector, 'zkufotIncomeTaxCategory', dbAdminContext.salaries.zkufotIncomeTaxCategoryId, ) : null, socialSecurityExpensesTaxCategory: async (dbAdminContext, _, { injector }) => dbAdminContext.salaries.socialSecurityExpensesTaxCategoryId ? fetchTaxCategory( injector, 'socialSecurityExpensesTaxCategory', dbAdminContext.salaries.socialSecurityExpensesTaxCategoryId, ) : null, salaryExpensesTaxCategory: async (dbAdminContext, _, { injector }) => dbAdminContext.salaries.salaryExpensesTaxCategoryId ? fetchTaxCategory( injector, 'salaryExpensesTaxCategory', dbAdminContext.salaries.salaryExpensesTaxCategoryId, ) : null, trainingFundExpensesTaxCategory: async (dbAdminContext, _, { injector }) => dbAdminContext.salaries.trainingFundExpensesTaxCategoryId ? fetchTaxCategory( injector, 'trainingFundExpensesTaxCategory', dbAdminContext.salaries.trainingFundExpensesTaxCategoryId, ) : null, pensionFundExpensesTaxCategory: async (dbAdminContext, _, { injector }) => dbAdminContext.salaries.pensionExpensesTaxCategoryId ? fetchTaxCategory( injector, 'pensionFundExpensesTaxCategory', dbAdminContext.salaries.pensionExpensesTaxCategoryId, ) : null, compensationFundExpensesTaxCategory: async (dbAdminContext, _, { injector }) => dbAdminContext.salaries.compensationFundExpensesTaxCategoryId ? fetchTaxCategory( injector, 'compensationFundExpensesTaxCategory', dbAdminContext.salaries.compensationFundExpensesTaxCategoryId, ) : null, batchedEmployeesBusiness: async (dbAdminContext, _, { injector }) => dbAdminContext.salaries.batchedEmployeesBusinessId ? fetchBusiness( injector, 'batchedEmployeesBusiness', dbAdminContext.salaries.batchedEmployeesBusinessId, ) : null, batchedFundsBusiness: async (dbAdminContext, _, { injector }) => dbAdminContext.salaries.batchedFundsBusinessId ? fetchBusiness( injector, 'batchedFundsBusiness', dbAdminContext.salaries.batchedFundsBusinessId, ) : null, taxDeductionsBusiness: async (dbAdminContext, _, { injector }) => dbAdminContext.salaries.taxDeductionsBusinessId ? fetchBusiness( injector, 'taxDeductionsBusiness', dbAdminContext.salaries.taxDeductionsBusinessId, ) : null, recoveryReserveExpensesTaxCategory: async (dbAdminContext, _, { injector }) => dbAdminContext.salaries.recoveryReserveExpensesTaxCategoryId ? fetchTaxCategory( injector, 'recoveryReserveExpensesTaxCategory', dbAdminContext.salaries.recoveryReserveExpensesTaxCategoryId, ) : null, recoveryReserveTaxCategory: async (dbAdminContext, _, { injector }) => dbAdminContext.salaries.recoveryReserveTaxCategoryId ? fetchTaxCategory( injector, 'recoveryReserveTaxCategory', dbAdminContext.salaries.recoveryReserveTaxCategoryId, ) : null, vacationReserveExpensesTaxCategory: async (dbAdminContext, _, { injector }) => dbAdminContext.salaries.vacationReserveExpensesTaxCategoryId ? fetchTaxCategory( injector, 'vacationReserveExpensesTaxCategory', dbAdminContext.salaries.vacationReserveExpensesTaxCategoryId, ) : null, vacationReserveTaxCategory: async (dbAdminContext, _, { injector }) => dbAdminContext.salaries.vacationReserveTaxCategoryId ? fetchTaxCategory( injector, 'vacationReserveTaxCategory', dbAdminContext.salaries.vacationReserveTaxCategoryId, ) : null, poalimBusiness: async (dbAdminContext, _, { injector }) => dbAdminContext.financialAccounts.poalimBusinessId ? fetchBusiness( injector, 'poalimBusiness', dbAdminContext.financialAccounts.poalimBusinessId, ) : null, discountBusiness: async (dbAdminContext, _, { injector }) => dbAdminContext.financialAccounts.discountBusinessId ? fetchBusiness( injector, 'discountBusiness', dbAdminContext.financialAccounts.discountBusinessId, ) : null, otsarHahayalBusiness: async (dbAdminContext, _, { injector }) => dbAdminContext.financialAccounts.otsarHahayalBusinessId ? fetchBusiness( injector, 'otsarHahayalBusiness', dbAdminContext.financialAccounts.otsarHahayalBusinessId, ) : null, isracardBusiness: async (dbAdminContext, _, { injector }) => dbAdminContext.financialAccounts.isracardBusinessId ? fetchBusiness( injector, 'isracardBusiness', dbAdminContext.financialAccounts.isracardBusinessId, ) : null, amexBusiness: async (dbAdminContext, _, { injector }) => dbAdminContext.financialAccounts.amexBusinessId ? fetchBusiness(injector, 'amexBusiness', dbAdminContext.financialAccounts.amexBusinessId) : null, calBusiness: async (dbAdminContext, _, { injector }) => dbAdminContext.financialAccounts.calBusinessId ? fetchBusiness(injector, 'calBusiness', dbAdminContext.financialAccounts.calBusinessId) : null, otsarHahayalCreditCardBusiness: async (dbAdminContext, _, { injector }) => dbAdminContext.financialAccounts.otsarHahayalCreditCardBusinessId ? fetchBusiness( injector, 'otsarHahayalCreditCardBusiness', dbAdminContext.financialAccounts.otsarHahayalCreditCardBusinessId, ) : null, etanaBusiness: async (dbAdminContext, _, { injector }) => dbAdminContext.financialAccounts.etanaBusinessId ? fetchBusiness(injector, 'etanaBusiness', dbAdminContext.financialAccounts.etanaBusinessId) : null, krakenBusiness: async (dbAdminContext, _, { injector }) => dbAdminContext.financialAccounts.krakenBusinessId ? fetchBusiness( injector, 'krakenBusiness', dbAdminContext.financialAccounts.krakenBusinessId, ) : null, etherscanBusiness: async (dbAdminContext, _, { injector }) => dbAdminContext.financialAccounts.etherScanBusinessId ? fetchBusiness( injector, 'etherscanBusiness', dbAdminContext.financialAccounts.etherScanBusinessId, ) : null, swiftBusiness: async (dbAdminContext, _, { injector }) => dbAdminContext.financialAccounts.swiftBusinessId ? fetchBusiness(injector, 'swiftBusiness', dbAdminContext.financialAccounts.swiftBusinessId) : null, bankDepositBusiness: async (dbAdminContext, _, { injector }) => dbAdminContext.bankDeposits.bankDepositBusinessId ? fetchBusiness( injector, 'bankDepositBusiness', dbAdminContext.bankDeposits.bankDepositBusinessId, ) : null, dividendWithholdingTaxBusiness: async (dbAdminContext, _, { injector }) => dbAdminContext.dividends.dividendWithholdingTaxBusinessId ? fetchBusiness( injector, 'dividendWithholdingTaxBusiness', dbAdminContext.dividends.dividendWithholdingTaxBusinessId, ) : null, dividendTaxCategory: async (dbAdminContext, _, { injector }) => dbAdminContext.dividends.dividendTaxCategoryId ? fetchTaxCategory( injector, 'dividendTaxCategory', dbAdminContext.dividends.dividendTaxCategoryId, ) : null, salaryExcessExpensesTaxCategory: async (dbAdminContext, _, { injector }) => fetchTaxCategory( injector, 'salaryExcessExpensesTaxCategory', dbAdminContext.general.taxCategories.salaryExcessExpensesTaxCategoryId, ), ledgerLock: dbAdminContext => dbAdminContext.ledgerLock ?? null, dateEstablished: dbAdminContext => dbAdminContext.dateEstablished ?? null, initialAccounterYear: dbAdminContext => dbAdminContext.initialAccounterYear ?? null, foreignSecuritiesBusiness: async (dbAdminContext, _, { injector }) => dbAdminContext.foreignSecurities.foreignSecuritiesBusinessId ? fetchBusiness( injector, 'foreignSecuritiesBusiness', dbAdminContext.foreignSecurities.foreignSecuritiesBusinessId, ) : null, foreignSecuritiesFeesCategory: async (dbAdminContext, _, { injector }) => dbAdminContext.foreignSecurities.foreignSecuritiesFeesCategoryId ? fetchTaxCategory( injector, 'foreignSecuritiesFeesCategory', dbAdminContext.foreignSecurities.foreignSecuritiesFeesCategoryId, ) : null, }, };