Files
integreat/src/clj/auto_ap/routes/exports.clj
Bryce Covert 41bf4dbabb Fixes.
2019-02-07 18:05:42 -08:00

71 lines
4.0 KiB
Clojure

(ns auto-ap.routes.exports
(:require
[auto-ap.datomic.clients :as d-clients]
[auto-ap.datomic.vendors :as d-vendors]
[auto-ap.datomic.transactions :as d-transactions]
[auto-ap.utils :refer [by]]
[auto-ap.parse :as parse]
[auto-ap.graphql :as graphql]
[auto-ap.graphql.utils :refer [<-graphql ->graphql assert-admin]]
[auto-ap.routes.utils :refer [wrap-secure]]
[clj-time.coerce :refer [to-date]]
[ring.middleware.json :refer [wrap-json-response]]
[compojure.core :refer [GET POST context defroutes wrap-routes]]
[clojure.string :as str]
[venia.core :as venia]))
(defroutes routes
(wrap-routes
(wrap-routes
(context "/" []
(GET "/invoices/export" {:keys [query-params identity] :as request}
(assert-admin identity)
(let [query [[:all_invoices
{:client-code (query-params "client-code")
:original-id (query-params "original")}
[:id :total :outstanding-balance :invoice-number :date :status :original-id
[:payments [:amount [:payment [:check-number :memo [:bank_account [:id :name :number :bank-name :bank-code :code]]]]]]
[:vendor [:name :id [:primary_contact [:name]] [:address [:street1 :city :state :zip]]]]
[:expense_accounts [:amount :id :expense_account_id :location
[:expense_account [:id :name [:parent [:id :name]]]]]]
[:client [:name :id :code :locations]]]]]
invoices (graphql/query identity (venia/graphql-query {:venia/queries (->graphql query)}))]
(doto (list (:all-invoices (:data invoices))) clojure.pprint/pprint)))
(GET "/payments/export" {:keys [query-params identity]}
(assert-admin identity)
(let [query [[:all_payments
{:client-code (query-params "client-code")
:original-id (query-params "original")}
[:id :check-number :amount :memo :date :status :type :original-id
[:invoices [[:invoice [:id :original-id]] :amount]]
[:bank-account [:number :code :bank-name :bank-code :id]]
[:vendor [:name :id [:primary-contact [:name :email :phone]] :default-expense-account [:address [:street1 :city :state :zip]]]]
[:client [:id :name :code]]
]]]
payments (graphql/query identity (venia/graphql-query {:venia/queries (->graphql query)}))]
(list (:all-payments (:data payments)))))
(GET "/clients/export" {:keys [query-params identity]}
(assert-admin identity)
(map <-graphql (d-clients/get-all)))
(GET "/vendors/export" {:keys [query-params identity]}
(assert-admin identity)
(map <-graphql (d-vendors/get-graphql {})))
(GET "/transactions/export" {:keys [query-params identity]}
(assert-admin identity)
(let [[transactions] (d-transactions/get-graphql {:client-code (query-params "client-code")
#_#_:original-id (Integer/parseInt (query-params "original"))
:count Integer/MAX_VALUE})
]
(map (comp ->graphql (fn [i]
(-> i
(update :transaction/date to-date)
(update :transaction/post-date to-date))))
transactions))))
wrap-secure)
wrap-json-response))