from apps.shop.models import Order as OrderModel from apps.customer.models import CustomerResponsible as CustomerResponsibleModel from apps.cuser.models import CuserRole as CuserRoleModel from rest_framework import exceptions from utils.custom_permissions import workspace_admin_up from apps.customer.models import Customer as CustomerModel def retrieve_order(cuser_role_uuid: str, order_id: int, workspace_uuid: str) -> OrderModel: try: cuser_role = CuserRoleModel.objects.select_related('role_type').get role_type = cuser_role.role_type if role_type.role_name_en == 'workspace_customer': customer = CustomerModel.objects.get(cuser_role=cuser_role) order_obj = OrderModel.objects.get(id=order_id, sys_ws__uuid=workspace_uuid, customer=customer) return order_obj if role_type.role_name_en in ('workspace_owner', 'workspace_operator', 'workspace_admin'): order_obj = OrderModel.objects.get(id=order_id, sys_ws__uuid=workspace_uuid) return order_obj except Exception as exp: message = f'Error Retrieve Order: {exp}' raise exceptions.ValidationError({'error': message}) def list_order(cuser_role_uuid: str, workspace_uuid: str) -> OrderModel: try: cuser_role = CuserRoleModel.objects.select_related('role_type').get(uuid=cuser_role_uuid) role_type = cuser_role.role_type if role_type.role_name_en == 'workspace_customer': customer = CustomerModel.objects.get(cuser_role=cuser_role) orders_obj = OrderModel.objects.filter(sys_ws__uuid=workspace_uuid, customer=customer).order_by('-created_at') return orders_obj if role_type.role_name_en in ('workspace_owner', 'workspace_operator', 'workspace_admin'): orders_obj = OrderModel.objects.filter(sys_ws__uuid=workspace_uuid).order_by('-created_at') return orders_obj except Exception as exp: message = f'Error Fetching List Order: {exp}' raise exceptions.ValidationError({'error': message})