from connection.odoo import models, db, uid, password
class OdooService:
    
    @staticmethod
    def search(model, query):
        data = models.execute_kw(
            db, uid, password,
            model, 'search', query
        )
        if data:
            return data
        else:
            return []
        
        return
    
    @staticmethod
    def readAll(model, query, context=None):
        if context is None:
            context = {}

        data = models.execute_kw(
            db, uid, password,
            model, 'read',
            [query],
            {'context': context}
        )

        return data if data else []

    
    @staticmethod
    def readFields(model, query, fields_list):
        data = models.execute_kw(
            db, uid, password,
            model, 'read', [query], {'fields': fields_list}
        )
        if data:
            return data
        else:
            return []
        
        return
    
    @staticmethod
    def update(model, odoo_id, fields_dict):
        data = models.execute_kw(
            db, uid, password,
            model, 'write', [[odoo_id],fields_dict]
        )
        if data:
            return data
        else:
            return []
        
        return
    
    @staticmethod
    def update_coupon_codes_in_ticket(odoo_id, key, value):
        fileds = {
            key: value
        }
    
        OdooService.update('event.registration', odoo_id, fileds)
        print(f"Odoo Ticket {odoo_id} updated with {fileds}")
        
        return "Coupon Created"
    
    @staticmethod
    def create(model,field_dict):
        models.execute_kw(
            db, uid, password,
            model,'create',[field_dict]
        )
        return "Created"