/**
 * VAT Invoice Service
 * Service để quản lý hóa đơn VAT điện tử
 */

import apiClient from '@/infrastructure/apiClient';
import apiPath from '@/infrastructure/apiPath';

export default {
    /**
     * Tìm kiếm hóa đơn VAT với pagination, sorting và filtering
     * @param {Object} searchModel - Model chứa Pagination, Sort, Search
     * @returns {Promise<Object>} { Items, TotalRecord, NumberOfPages }
     */
    async search(searchModel) {
        try {
            const response = await apiClient.post(apiPath.vatInvoice.search, searchModel);
            return response.data;
        } catch (error) {
            console.error('Error searching VAT invoices:', error);
            throw error;
        }
    },

    /**
     * Đồng bộ thủ công hóa đơn VAT từ API Tổng cục Thuế
     * @param {Object} model - { FromDate, ToDate }
     * @param {DateTimeOffset} model.FromDate - Ngày bắt đầu (required)
     * @param {DateTimeOffset} model.ToDate - Ngày kết thúc (required)
     * @returns {Promise<Object>} { Result, Message }
     */
    async syncManual(model) {
        try {
            const response = await apiClient.post(apiPath.vatInvoice.syncManual, model);
            return response.data;
        } catch (error) {
            console.error('Error syncing VAT invoices:', error);
            throw error;
        }
    },

    /**
     * Lấy thông tin đồng bộ gần nhất
     * @returns {Promise<Object>} { HasSyncHistory, LastSyncTime, SyncDateRange, Status, ... }
     */
    async getLastSyncInfo() {
        try {
            const response = await apiClient.get(apiPath.vatInvoice.getLastSyncInfo);
            return response.data;
        } catch (error) {
            console.error('Error getting last sync info:', error);
            throw error;
        }
    },
};
