from apps.lead.models import Lead as LeadModel, LeadType as LeadTypeModel,\ LeadSource as LeadSourceModel, LeadStep as LeadStepModel from apps.shop.models import ProductType as ProductTypeModel from apps.workspace.models import City as CityModel from utils.get_user_workspace import get_user_workspace_uuid from utils.get_cuser_role import get_cuser_role_uuid from rest_framework import exceptions def list_leads(request) -> LeadModel: try: workspace_uuid = get_user_workspace_uuid(request) cuser_role_uuid = get_cuser_role_uuid(request) leads = LeadModel.objects.filter(sys_ws__uuid=workspace_uuid, cuser_role__uuid=cuser_role_uuid).order_by('-created_at') return leads except Exception as exp: message = f'Error Fetching List Leads: {exp}' raise exceptions.ValidationError({'error': message}) def retrieve_lead(request, id: int) -> LeadModel: try: workspace_uuid = get_user_workspace_uuid(request) cuser_role_uuid = get_cuser_role_uuid(request) lead = LeadModel.objects.get(id=id, sys_ws__uuid=workspace_uuid, cuser_role__uuid=cuser_role_uuid) return lead except Exception as exp: message = f'Error retrieve Leads: {exp}' raise exceptions.ValidationError({'error': message}) def retrieve_summary_lead(request) -> LeadModel: try: workspace_uuid = get_user_workspace_uuid(request) cuser_role_uuid = get_cuser_role_uuid(request) mozakere = LeadModel.objects.filter(step_id=2, status__in=('UN', ''), sys_ws__uuid=workspace_uuid, cuser_role__uuid=cuser_role_uuid)[:20] pish = LeadModel.objects.filter(step_id=3, status__in=('UN', ''), sys_ws__uuid=workspace_uuid, cuser_role__uuid=cuser_role_uuid)[:20] kharid = LeadModel.objects.filter(step_id=4, status__in=('UN', ''), sys_ws__uuid=workspace_uuid, cuser_role__uuid=cuser_role_uuid)[:20] leads = { 'mozakere': mozakere, 'pishfactor': pish, 'kharid': kharid, } return leads except Exception as exp: message = f'Error retrieve summary Leads: {exp}' raise exceptions.ValidationError({'error': message}) def fields_new_lead_form(request): workspace_uuid = get_user_workspace_uuid(request) lead_type = LeadTypeModel.objects.filter(sys_ws__uuid=workspace_uuid) product_types = ProductTypeModel.objects.filter(sys_ws__uuid=workspace_uuid) lead_source = LeadSourceModel.objects.filter(sys_ws__uuid=workspace_uuid) lead_step = LeadStepModel.objects.filter(sys_ws__uuid=workspace_uuid) shahr = CityModel.objects.filter() data = { 'product_types': product_types, 'lead_types': lead_type, 'lead_source': lead_source, 'lead_steps': lead_step, 'shahr': shahr, } return data