# Patron Project API Documentation

Bu doküman, **Patron** projesi kapsamında geliştirilen REST API endpoint'lerini ve kullanım detaylarını içerir.

**Base URL:** `https://patron.kodfabrikasi.net/AllServices/Services.php?do={SERVICE_NAME}`

---

## 🔐 Kimlik Doğrulama (Auth)

### `login`
Kullanıcı girişi yapar ve bir `token` döner.
- **Parametreler (POST):**
  - `email`: Kullanıcı e-posta adresi.
  - `password`: Kullanıcı şifresi.
- **Cevap:** Başarılı durumda `User` nesnesi ve `token` döner.

### `register` (Kamu)
Uygulama dışından yeni bir **Firma (Company)** ve **Yönetici (Admin)** kaydı oluşturur.
- **Parametreler (POST):**
  - `company_name`: Firmanın resmi adı (Yeni şirket hesabı oluşturulur).
  - `name`: Yönetici adı.
  - `email`: Yönetici e-postası.
  - `password`: Yönetici şifresi.
- **Cevap:** Başarılı durumda `UserId` döner.

### `addUser` (Özel)
Yönetici paneli içerisinden yeni bir **Ekip Üyesi** (exporter, operation, finance) ekler.
- **Parametreler (POST):**
  - `token`: İstek yapan yöneticinin token'ı.
  - `name`: Yeni kullanıcının adı.
  - `email`: Yeni kullanıcının e-postası.
  - `password`: Yeni kullanıcının şifresi.
  - `role`: `admin`, `exporter`, `operation`, `finance`.

---

## 👥 Müşteri Yönetimi (Customers)

### `getCustomers`
Müşterileri listeler. Rol bazlı filtreleme otomatik uygulanır.
- **Parametreler (POST):**
  - `token`: Oturum token'ı.

### `saveCustomer`
Müşteri ekler veya günceller.
- **Parametreler (POST):**
  - `token`: Oturum token'ı.
  - `id`: Güncelleme için ID (Yeni kayıt için 0).
  - `company_name`: Firma adı.
  - `country_id`: İlgili ülkenin ID'si.
  - `currency_id`: İlgili para birimi ID'si (Örn: USD için 1).
  - `payment_term_days`: Vade günü (Örn: 30).
  - `exporter_id`: Sorumlu ihracatçı ID.
  - `operation_id`: Sorumlu operasyoncu ID.

---

## 💵 Satış ve Tahsilat (Sales & Collections)

### `getSales`
Satışları listeler.
- **Parametreler (POST):**
  - `token`: Oturum token'ı.

### `saveSale`
Satış kaydeder.
- **Parametreler (POST):**
  - `token`: Oturum token'ı.
  - `id`: 0 (yeni) veya güncelleme için ID.
  - `customer_id`: Müşteri ID.
  - `sale_date`: Satış tarihi (YYYY-MM-DD).
  - `country_id`: İlgili ülkenin ID'si.
  - `amount`: Tutar.
  - `currency_id`: İlgili para birimi ID'si.
  - `due_date`: Vade tarihi (Boş bırakılırsa müşteri vadesine göre hesaplanır).

### `saveCollection`
Tahsilat kaydı yapar.
- **Parametreler (POST):**
  - `token`: Oturum token'ı (Admin veya Finans).
  - `sale_id`: Satış ID.
  - `amount`: Tahsil edilen tutar.
  - `date`: Tahsilat tarihi.

---

## 📊 Dashboard ve Raporlar

### `getDashboard`
Anasayfa özet verilerini döner (Trend, Dağılım, Gecikme Özetleri).
- **Parametreler (POST):**
  - `token`: Oturum token'ı.

### `getReport`
Detaylı rapor verilerini döner.
- **Parametreler (POST):**
  - `token`: Oturum token'ı.
  - `type`: `overdue` (Gecikenler), `country_sales` (Ülke bazlı), `monthly_trend`.

---

## 🛠 Yardımcı Servisler (Utilities)

### `getProfile`
Giriş yapmış kullanıcının kendi profil bilgilerini getirir.
- **Parametreler (POST):**
  - `token`: Oturum token'ı.

### `getCountries`
Sistemde kayıtlı ülkeleri listeler (Dropdown doldurmak için).
- **Parametreler (POST):**
  - `token`: Oturum token'ı.

### `getCurrencies`
Sistemde kayıtlı para birimlerini listeler (Dropdown doldurmak için).
- **Parametreler (POST):**
  - `token`: Oturum token'ı.

### `getUsers`
Sistemdeki kullanıcıları listeler (Dropdown doldurmak için).
- **Parametreler (POST):**
  - `token`: Oturum token'ı.
  - `role`: (Opsiyonel) `exporter` | `operation` vb.

### `deleteCustomer`
Müşteriyi arşivler (is_active = 0).
- **Parametreler (POST):**
  - `token`: Admin token'ı.
  - `id`: Müşteri ID.

### `deleteSale`
Satış kaydını siler.
- **Parametreler (POST):**
  - `token`: Admin veya İhracatçı token'ı.
  - `id`: Satış ID.

### `uploadFile`
Satışa dosya (PDF, Görsel vb.) yükler.
- **Parametreler (POST - Multipart):**
  - `token`: Oturum token'ı.
  - `sale_id`: Satış ID.
  - `file`: Dosya içeriği.
