Bron qilish uchun API

Yii Basic template asosida yaratilgan RESTful API bo'lib, turli veb-saytlar uchun bron qilishlarni boshqaradi. Bu API ro'yxatdan o'tgan veb-saytlarga bron qilish bo'yicha CRUD operatsiyalarini bajarishga va vaqt oraliqlarining to'qnashuvini oldini olishga imkon beradi.

Imkoniyatlar

  • Veb-sayt ro'yxatdan o'tkazish va autentifikatsiya
  • Bron qilishni boshqarish (CRUD operatsiyalari)
  • Avtomatik vaqt oralig'i tekshiruvi
  • Veb-saytning bron qilish statistikasi
  • Sahifalashni qo'llab-quvvatlashi
  • RESTful arxitektura asosida

Autentifikatsiya

Barcha API endpointlari Bearer token autentifikatsiyasini talab qiladi:

  1. Ro'yxatdan o'tish endpointi orqali veb-saytingizni ro'yxatdan o'tkazing
  2. Olingan tokeni Authorization: Bearer <token> sarlavhasi orqali so'rovlarga qo'shing

API Endpointlar

Veb-saytni ro'yxatdan o'tkazish

POST https://bookings.bekhruzbek.uz/v1/websites/register
{
    "name": "Veb-saytingiz nomi",
    "email": "contact@yourwebsite.com"
}

Bron qilish

POST https://bookings.bekhruzbek.uz/v1/bookings
{
    "service_name": "Premium Xizmat",
    "customer_name": "Javlon Aliyev",
    "customer_contact": "998908887766",
    "booking_date": "2024-10-30",
    "start_time": "12:00",
    "end_time": "12:30",
    "duration_minutes": "30"
}

Veb-sayt statistikasi

GET https://bookings.bekhruzbek.uz/v1/bookings/statistics

Javob formati:

{
    "status": "success",
    "data": {
        "totalBookings": {
            "count": 3,
            "percentage": 100
        },
        "mostSellingTime": {
            "hour": 14,
            "count": 2,
            "percentage": 66.67
        },
        "mostSellingDay": {
            "day": "Chorshanba",
            "count": 1,
            "percentage": 33.33
        },
        "mostSellingDuration": {
            "durationMinutes": 30,
            "count": 3,
            "percentage": 100
        },
        "mostSellingService": {
            "serviceName": "Premium Xizmat",
            "count": 2,
            "percentage": 66.67
        },
        "returnClients": {
            "count": 1,
            "details": [
                {
                    "customerContact": "998908887766",
                    "customerName": "Javlon Aliyev",
                    "bookings": 3
                }
            ]
        }
    }
}

Boshqa Endpointlar

Endpoint Metod Tavsif
/v1/bookings/{id} GET Bitta bron qilishni olish
/v1/bookings/{id} PUT Bron qilishni yangilash
/v1/bookings/{id} DELETE Bron qilishni o'chirish

Biznes Qoidalar

  • Vaqt oralig'i tekshiruvi:
    • Har bir vaqt oralig'i bir kunda bir veb-sayt uchun faqat bir marta bron qilinishi mumkin
    • Bir xil veb-sayt uchun bir kunda ustma-ust tushadigan bron qilishlarga ruxsat berilmaydi
  • Autentifikatsiya:
    • Veb-sayt ro'yxatdan o'tkazishdan tashqari barcha endpointlar Bearer token talab qiladi
    • Veb-sayt ID si autentifikatsiya tokeni asosida avtomatik tayinlanadi

O'rnatish

  1. Yangi Yii Basic loyiha yarating:
    composer create-project --prefer-dist yiisoft/yii2-app-basic booking-api
  2. Repozitoriyani remote sifatida qo'shing va pull qiling:
    git remote add origin https://github.com/bekhruzcodes/bookings.git
    git pull origin main
  3. Quyidagi fayllarni muhitingizga moslab sozlang:
    • config/db.php
    • config/web.php
    • config/console.php
    • config/params.php
  4. Migratsiyalarni ishga tushiring:
    php yii migrate