Initial commit from monorepo
This commit is contained in:
112
kyc_app/schemas/user_schema.py
Normal file
112
kyc_app/schemas/user_schema.py
Normal file
@@ -0,0 +1,112 @@
|
||||
import graphene
|
||||
from graphene_django import DjangoObjectType
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from ..models import KYCRequest, KYCRequestRussia
|
||||
from ..temporal import KycWorkflowClient
|
||||
|
||||
|
||||
class KYCRequestType(DjangoObjectType):
|
||||
class Meta:
|
||||
model = KYCRequest
|
||||
fields = '__all__'
|
||||
|
||||
country_data = graphene.JSONString()
|
||||
workflow_status = graphene.String()
|
||||
|
||||
def resolve_country_data(self, info):
|
||||
return self.get_country_data()
|
||||
|
||||
|
||||
class KYCRequestRussiaType(DjangoObjectType):
|
||||
class Meta:
|
||||
model = KYCRequestRussia
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class KYCRequestRussiaInput(graphene.InputObjectType):
|
||||
companyName = graphene.String(required=True)
|
||||
companyFullName = graphene.String(required=True)
|
||||
inn = graphene.String(required=True)
|
||||
kpp = graphene.String()
|
||||
ogrn = graphene.String()
|
||||
address = graphene.String(required=True)
|
||||
bankName = graphene.String(required=True)
|
||||
bik = graphene.String(required=True)
|
||||
correspondentAccount = graphene.String()
|
||||
contactPerson = graphene.String(required=True)
|
||||
contactEmail = graphene.String(required=True)
|
||||
contactPhone = graphene.String(required=True)
|
||||
|
||||
|
||||
class CreateKYCRequestRussia(graphene.Mutation):
|
||||
class Arguments:
|
||||
input = KYCRequestRussiaInput(required=True)
|
||||
|
||||
kyc_request = graphene.Field(KYCRequestType)
|
||||
success = graphene.Boolean()
|
||||
|
||||
def mutate(self, info, input):
|
||||
# Get user_id from JWT token
|
||||
user_id = getattr(info.context, 'user_id', None)
|
||||
if not user_id:
|
||||
raise Exception("Not authenticated")
|
||||
|
||||
# 1. Create Russia details
|
||||
russia_details = KYCRequestRussia.objects.create(
|
||||
company_name=input.companyName,
|
||||
company_full_name=input.companyFullName,
|
||||
inn=input.inn,
|
||||
kpp=input.kpp or '',
|
||||
ogrn=input.ogrn or '',
|
||||
address=input.address,
|
||||
bank_name=input.bankName,
|
||||
bik=input.bik,
|
||||
correspondent_account=input.correspondentAccount or '',
|
||||
)
|
||||
|
||||
# 2. Create main KYCRequest with reference to details
|
||||
kyc_request = KYCRequest.objects.create(
|
||||
user_id=user_id,
|
||||
team_name=input.companyName,
|
||||
country_code='RU',
|
||||
contact_person=input.contactPerson,
|
||||
contact_email=input.contactEmail,
|
||||
contact_phone=input.contactPhone,
|
||||
content_type=ContentType.objects.get_for_model(KYCRequestRussia),
|
||||
object_id=russia_details.id,
|
||||
)
|
||||
|
||||
# 3. Start Temporal workflow
|
||||
KycWorkflowClient.start(kyc_request)
|
||||
|
||||
return CreateKYCRequestRussia(kyc_request=kyc_request, success=True)
|
||||
|
||||
|
||||
class UserQuery(graphene.ObjectType):
|
||||
"""User schema - ID token authentication"""
|
||||
kyc_requests = graphene.List(KYCRequestType)
|
||||
kyc_request = graphene.Field(KYCRequestType, uuid=graphene.String(required=True))
|
||||
|
||||
def resolve_kyc_requests(self, info):
|
||||
# Filter by user_id from JWT token
|
||||
user_id = getattr(info.context, 'user_id', None)
|
||||
if not user_id:
|
||||
return []
|
||||
return KYCRequest.objects.filter(user_id=user_id)
|
||||
|
||||
def resolve_kyc_request(self, info, uuid):
|
||||
user_id = getattr(info.context, 'user_id', None)
|
||||
if not user_id:
|
||||
return None
|
||||
try:
|
||||
return KYCRequest.objects.get(uuid=uuid, user_id=user_id)
|
||||
except KYCRequest.DoesNotExist:
|
||||
return None
|
||||
|
||||
|
||||
class UserMutation(graphene.ObjectType):
|
||||
"""User mutations - ID token authentication"""
|
||||
create_kyc_request_russia = CreateKYCRequestRussia.Field()
|
||||
|
||||
|
||||
user_schema = graphene.Schema(query=UserQuery, mutation=UserMutation)
|
||||
Reference in New Issue
Block a user