from django.db import transaction

from core.utils.helper import filter_dict

from apps.vendor.models import Vendor, VendorType



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


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

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

    del details['type']

    vendor, created = Vendor.objects.update_or_create(id=id, defaults={**details})

    return vendor
