<?php
/**
 * Bu dosya "gcargo_" prefixli sınıf fonksiyonları barındırır.
 *
 * @package GurmeHub
 */

/**
 * Vue.js renderlarını ekrana getirmek için kullanılır.
 *
 * @return GCARGO_Vue
 */
function gcargo_vue() {
	return new GCARGO_Vue();
}

/**
 * Yönetici menü ve bar için kullanılır.
 *
 * @return GCARGO_Admin
 */
function gcargo_admin() {
	return new GCARGO_Admin();
}

/**
 * Api Key yönetim sınıfı.
 *
 * @return GCARGO_Api_Key
 */
function gcargo_api_key() {
	return new GCARGO_Api_Key();
}

/**
 * WooCommerce sipariş durumu yönetim sınıfı.
 *
 * @return GCARGO_WC_Order_Status_Settings
 */
function gcargo_wc_order_status_settings() {
	return new GCARGO_WC_Order_Status_Settings();
}

/**
 * WooCommerce diğer ayarlar sınıfı.
 *
 * @return GCARGO_Other_Settings
 */
function gcargo_other_settings() {
	return new GCARGO_Other_Settings();
}

/**
 * GCARGO Zamanlanmış görevler sınıfı.
 *
 * @return GCARGO_Schedule
 */
function gcargo_schedule() {
	return new GCARGO_Schedule();
}


/**
 * Sipariş Otomatik Barkod Ayar Sınıfı
 *
 * @return GCARGO_Auto_Shipment_Settings
 */
function gcargo_auto_shipment_settings() {
	return new GCARGO_Auto_Shipment_Settings();
}

/**
 * Sipariş Otomatik Barkod Sınıfı
 *
 * @return GCARGO_Auto_Shipment
 */
function gcargo_auto_shipment() {
	return new GCARGO_Auto_Shipment();
}

/**
 * HTTP istek sınıfı
 *
 * @return GCARGO_Http_Client
 */
function gcargo_http_client() {
	return new GCARGO_Http_Client();
}

/**
 * Log sınıfı
 *
 * @param string $file_name Log dosyası adı.
 *
 * @return GCARGO_Logger
 */
function gcargo_logger( $file_name ) {
	return new GCARGO_Logger( $file_name );
}

/**
 * Meta box sınıfı.
 *
 * @return GCARGO_Meta_Boxes
 */
function gcargo_meta_boxes() {
	return new GCARGO_Meta_Boxes();
}

/**
 * Gönderici bilgileri sınıfı
 *
 * @return GCARGO_Warehouses_Resource
 */
function gcargo_warehouses_resource() {
	return new GCARGO_Warehouses_Resource();
}

/**
 * Kargo hesapları sınıfı
 *
 * @return GCARGO_Cargo_Integrations_Resource
 */
function gcargo_cargo_integrations_resource() {
	return new GCARGO_Cargo_Integrations_Resource();
}

/**
 * Gönderiler sınıfı
 *
 * @return GCARGO_Shipments_Resource
 */
function gcargo_shipments_resource() {
	return new GCARGO_Shipments_Resource();
}
/**
 * İadeler sınıfı
 *
 * @return GCARGO_Returneds_Resource
 */
function gcargo_returneds_resource() {
	return new GCARGO_Returneds_Resource();
}

/**
 * Statik veri tutan sınıf
 *
 * @return GCARGO_Data_Handler
 */
function gcargo_data_handler() {
	return new GCARGO_Data_Handler();
}

/**
 * Api istek methodlarını tutan sınıf
 *
 * @return GCARGO_Api_Requests
 */
function gcargo_api_requests() {
	return new GCARGO_Api_Requests();
}

/**
 * Sipariş alanlarını eşleştiren sınıf.
 *
 * @param string|int $order_id Sipariş no.
 * @param array|null $warehouses Depolar.
 * @param array|null $cargo_integrations Kargo entegrasyonları.
 * @param array|null $shipment_setting Varsayılan ayarlar.
 * @return GCARGO_Shipment_Map_WC_Order
 */
function gcargo_shipment_map_wc_order( $order_id, $warehouses = null, $cargo_integrations = null, $shipment_setting = null ) {
	return new GCARGO_Shipment_Map_WC_Order( $order_id, $warehouses, $cargo_integrations, $shipment_setting );
}

/**
 * Toplu işlemleri yönetim sınıfı.
 */
function gcargo_bulk_actions() {
	return new GCARGO_Bulk_Actions();
}

/**
 * Admin bildirimleri yönetim sınıfı.
 */
function gcargo_admin_notices() {
	return new GCARGO_Admin_Notices();
}

/**
 * Gönderinin verisini tutan fonksiyon
 *
 * @param int|bool $id Gönderi id.
 * @return GCARGO_Shipment
 *
 * @SuppressWarnings(PHPMD.BooleanArgumentFlag)
 */
function gcargo_shipment( $id = false ) {
	return new GCARGO_Shipment( $id );
}

/**
 * Gönderi verileri listelemek için kullanılır.
 *
 * @return GCARGO_Shipments
 */
function gcargo_shipments() {
	return new GCARGO_Shipments();
}

/**
 * Gönderi tablosu
 *
 * @return GCARGO_Shipments_Table
 */
function gcargo_shipments_table() {
	return new GCARGO_Shipments_Table();
}

/**
 * İade gönderi tablosu
 *
 * @return GCARGO_Returneds_Table
 */
function gcargo_returneds_table() {
	return new GCARGO_Returneds_Table();
}

/**
 * İade gönderi verileri listelemek için kullanılır.
 *
 * @return GCARGO_Returneds
 */
function gcargo_returneds() {
	return new GCARGO_Returneds();
}

/**
 * İade gönderi verisini tutan fonksiyon
 *
 * @param int|bool $id Gönderi id.
 * @return GCARGO_Returned
 *
 * @SuppressWarnings(PHPMD.BooleanArgumentFlag)
 */
function gcargo_returned( $id = false ) {
	return new GCARGO_Returned( $id );
}

/**
 * İade gönderi verilerini eşleştiren sınıf.
 *
 * @param string|int $order_id Sipariş no.
 * @return GCARGO_Returned_Map_WC_Order
 */
function gcargo_returned_map_wc_order( $order_id ) {
	return new GCARGO_Returned_Map_WC_Order( $order_id );
}

/**
 * WC durumları organize eden sınıf.
 *
 * @return GCARGO_WC_Status_Manager
 */
function gcargo_wc_status_manager() {
	return new GCARGO_WC_Status_Manager();
}

/**
 * SAAS konum ayarları sınıfı
 *
 * @return GCARGO_SAAS_Warehouses_Settings
 */
function gcargo_saas_warehouses_settings() {
	return new GCARGO_SAAS_Warehouses_Settings();
}

/**
 * SAAS kargo entegrasyonları ayarları sınıfı
 *
 * @return GCARGO_SAAS_Cargo_Integrations_Settings
 */
function gcargo_saas_cargo_integrations_settings() {
	return new GCARGO_SAAS_Cargo_Integrations_Settings();
}

/**
 * SAAS gönderi ayarları sınıfı
 *
 * @return GCARGO_SAAS_Shipment_Settings
 */
function gcargo_saas_shipment_settings() {
	return new GCARGO_SAAS_Shipment_Settings();
}

/**
 * SAAS iade ayarları sınıfı
 *
 * @return GCARGO_SAAS_Returned_Settings
 */
function gcargo_saas_returned_settings() {
	return new GCARGO_SAAS_Returned_Settings();
}

/**
 * Gate ayarları sınıfı.
 *
 * @return GCARGO_Gate_Settings
 */
function gcargo_gate_settings() {
	return new GCARGO_Gate_Settings();
}

/**
 * Paket ayarları sınıfı.
 *
 * @return GCARGO_Package_Settings
 */
function gcargo_package_settings() {
	return new GCARGO_Package_Settings();
}
