Files
crmApi/apps/lead/services.py
T
2024-01-22 13:01:42 +03:30

147 lines
5.7 KiB
Python

from apps.lead.models import Lead as LeadModel,\
LeadType as LeadTypeModel, LeadStep as LeadStepModel, LeadSource as LeadSourceModel, LeadComment as LeadCommentModel
from apps.shop.models import ProductType as ProductTypeModel
from utils.get_user_workspace import get_user_workspace
from utils.get_cuser_role import get_cuser_role
from utils.validations import ObjectValidationById
from apps.customer.models import Customer as CustomerModel
from apps.workspace.models import City as CityModel
from rest_framework import exceptions
def create_new_lead(request, title: str, customer_id: str, desc: str, product_type_id: int,
lead_type_id: int, lead_source_id: int, city_id: int, lead_step_id: int) -> LeadModel:
try:
sys_ws = get_user_workspace(request=request)
cuser_role = get_cuser_role(request=request)
customer = ObjectValidationById(object_model=CustomerModel, request=request).is_valid(int(customer_id))
lead_type = ObjectValidationById(object_model=LeadTypeModel, request=request).is_valid(lead_type_id)
lead_step = ObjectValidationById(object_model=LeadStepModel, request=request).is_valid(lead_step_id)
lead_source = ObjectValidationById(object_model=LeadSourceModel, request=request).is_valid(lead_source_id)
product_type = ObjectValidationById(object_model=ProductTypeModel, request=request).is_valid(product_type_id)
city = ObjectValidationById(object_model=CityModel, request=request).is_valid(city_id)
new_lead = LeadModel()
new_lead.title = title
new_lead.customer = customer
new_lead.desc = desc
new_lead.type = lead_type
new_lead.step = lead_step
new_lead.source = lead_source
new_lead.product_type = product_type
new_lead.city = city
new_lead.sys_ws = sys_ws
new_lead.cuser_role = cuser_role
new_lead.save()
return new_lead
except Exception as exp:
print("error creae lead")
message = f'Error Create New Lead: {exp}'
raise exceptions.ValidationError({'error': message})
def update_lead(request, lead_id: int, title: str, customer_id: str, desc: str, product_type_id: int,
lead_type_id: int, lead_source_id: int, city_id: int, lead_step_id: int) -> LeadModel:
try:
sys_ws = get_user_workspace(request=request)
cuser_role = get_cuser_role(request=request)
customer = ObjectValidationById(object_model=CustomerModel, request=request).is_valid(int(customer_id))
lead_type = ObjectValidationById(object_model=LeadTypeModel, request=request).is_valid(lead_type_id)
lead_step = ObjectValidationById(object_model=LeadStepModel, request=request).is_valid(lead_step_id)
lead_source = ObjectValidationById(object_model=LeadSourceModel, request=request).is_valid(lead_source_id)
product_type = ObjectValidationById(object_model=ProductTypeModel, request=request).is_valid(product_type_id)
city = ObjectValidationById(object_model=CityModel, request=request).is_valid(city_id)
lead = LeadModel.objects.get(id=lead_id, sys_ws=sys_ws, cuser_role=cuser_role)
lead.title = title
lead.customer = customer
lead.desc = desc
lead.type = lead_type
lead.step = lead_step
lead.source = lead_source
lead.product_type = product_type
lead.city = city
lead.save()
return lead
except Exception as exp:
message = f'Error Update Lead: {exp}'
raise exceptions.ValidationError({'error': message})
def update_lead_status(request, lead_id: int, status: str) -> LeadModel:
try:
sys_ws = get_user_workspace(request=request)
cuser_role = get_cuser_role(request=request)
lead = LeadModel.objects.get(id=lead_id, sys_ws=sys_ws, cuser_role=cuser_role)
lead.status = status
lead.save()
return lead
except Exception as exp:
message = f'Error Update Lead Status: {exp}'
raise exceptions.ValidationError({'error': message})
def update_lead_comment(request, lead_comment_id: int, desc: str) -> LeadModel:
try:
sys_ws = get_user_workspace(request=request)
cuser_role = get_cuser_role(request=request)
lead_comment = LeadCommentModel.objects.get(id=lead_comment_id, sys_ws=sys_ws, cuser_role=cuser_role)
lead_comment.desc = desc
lead_comment.save()
return lead_comment
except Exception as exp:
message = f'Error Update Lead_comment: {exp}'
raise exceptions.ValidationError({'error': message})
def create_lead_comment(request, lead_id, desc: str) -> LeadCommentModel:
try:
sys_ws = get_user_workspace(request=request)
cuser_role = get_cuser_role(request=request)
lead_comment = LeadCommentModel()
lead_comment.lead = LeadModel.objects.get(id=lead_id, sys_ws=sys_ws, cuser_role=cuser_role)
lead_comment.sys_ws = sys_ws
lead_comment.cuser_role = cuser_role
lead_comment.desc = desc
lead_comment.save()
return lead_comment
except Exception as exp:
message = f'Error Create Lead comment: {exp}'
raise exceptions.ValidationError({'error': message})
def delete_lead_comment(request, lead_comment_id: int) -> LeadModel:
try:
sys_ws = get_user_workspace(request=request)
cuser_role = get_cuser_role(request=request)
lead_comment = LeadCommentModel.objects.get(id=lead_comment_id, sys_ws=sys_ws, cuser_role=cuser_role)
lead_comment.delete()
return lead_comment
except Exception as exp:
message = f'Error Delete Lead_comment: {exp}'
raise exceptions.ValidationError({'error': message})