43 lines
1.2 KiB
Python
43 lines
1.2 KiB
Python
import graphene
|
|
from graphene import List
|
|
|
|
from backend.core.repositories import InvoiceRepository
|
|
from backend.graphql_api.types import InvoiceType
|
|
from backend.graphql_api.inputs import InvoiceFilterInput
|
|
|
|
|
|
class InvoiceQueries(graphene.ObjectType):
|
|
"""Invoice query operations"""
|
|
|
|
invoice = graphene.Field(
|
|
InvoiceType,
|
|
id=graphene.ID(required=True)
|
|
)
|
|
|
|
invoices = graphene.Field(
|
|
List(InvoiceType),
|
|
filter=InvoiceFilterInput()
|
|
)
|
|
|
|
def resolve_invoice(self, info, id):
|
|
return InvoiceRepository.get_by_id(id)
|
|
|
|
def resolve_invoices(self, info, filter=None):
|
|
if not filter:
|
|
return InvoiceRepository.get_all()
|
|
|
|
if filter.customer_id:
|
|
return InvoiceRepository.get_by_customer(filter.customer_id)
|
|
|
|
if filter.status:
|
|
return InvoiceRepository.get_by_status(filter.status)
|
|
|
|
return InvoiceRepository.filter_invoices(
|
|
customer_id=filter.customer_id,
|
|
status=filter.status,
|
|
date_from=filter.start_date,
|
|
date_to=filter.end_date,
|
|
account_id=None, # account_id is not in InvoiceFilterInput
|
|
project_id=None # project_id is not in InvoiceFilterInput
|
|
)
|