from django.db import transaction

from core.utils.helper import filter_dict

from apps.consultant.models import ConsultantType, Consultant



@transaction.atomic
def save_consultant_type(type):
    return ConsultantType.objects.get_or_create(name=type)[0]


@transaction.atomic
def save_consultant(data, id=None):
    details = filter_dict(data, ['name', 'type', 'phone_no', 'created_by', 'email', 'note'])

    if not details['type'].isnumeric():
        details['type_id'] = save_consultant_type(details['type']).id

    del details['type']

    consultant, created = Consultant.objects.update_or_create(id=id, defaults={**details})

    return consultant
