from django.db import transaction

from core.utils.helper import filter_dict

from apps.contractor.models import Contractor, ContractorType



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


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

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

    del details['type']

    contractor, created = Contractor.objects.update_or_create(id=id, defaults={**details})

    return contractor
