Current File : /home/getxxhzo/app.genicards.com/app/Models/NfcOrders.php
<?php

namespace App\Models;

use Spatie\MediaLibrary\HasMedia;
use Illuminate\Database\Eloquent\Model;
use Spatie\MediaLibrary\InteractsWithMedia;
use Illuminate\Database\Eloquent\Relations\HasOne;
use Illuminate\Database\Eloquent\Factories\HasFactory;

class NfcOrders extends Model implements HasMedia
{
    use HasFactory, InteractsWithMedia;

    const LOGO_PATH = 'nfc_order_logo';

    const STRIPE = 1;

    const PAYPAL = 2;

    const RAZOR_PAY = 3;

    const MANUALLY = 4;

    const PAYSTACK = 5;

    const PHONEPE = 6;

    const FLUTTERWAVE = 7;

    const PENDING = 0;

    const SUCCESS = 1;

    const FAIL = 2;

    const READY_TO_SHIP = 1;

    const SHIPPED = 2;

    const DELIVERED = 3;

    const CANCEL = 4;

    const PAYMENT_TYPE_ARR = [
        self::STRIPE => 'stripe',
        self::PAYPAL => 'paypal',
        self::RAZOR_PAY => 'razorpay',
        self::MANUALLY => 'manually',
        self::PHONEPE => 'phonepe',
        self::PAYSTACK => 'paystack',
        self::FLUTTERWAVE => 'flutterwave',
    ];

    const ORDER_STATUS_ARR = [
        self::PENDING => 'Pending',
        self::READY_TO_SHIP => 'Ready To Ship',
        self::SHIPPED => 'Shipped',
        self::DELIVERED => 'Delivered',
        self::CANCEL => 'Cancelled',
    ];

    const PAYMENT_STATUS_ARR = [
        self::PENDING => 'pending',
        self::SUCCESS => 'paid',
        self::FAIL => 'failed',
    ];

    protected $with = ['media'];

    public static $rules = [
        'card_type' => 'required|integer',
        'company_name' => 'required|string',
        'name' => 'required|string',
        'email' => 'required|email',
        'phone' => 'required|integer',
        'designation' => 'required|string',
        'address' => 'required|string',
        'logo' => 'required|mimes:jpg,jpeg,png',
        'vcard_id' => 'required|integer',
    ];

    protected $fillable = [
        'card_type',
        'name',
        'designation',
        'phone',
        'region_code',
        'email',
        'address',
        'order_status',
        'quantity',
        'user_id',
        'company_name',
        'vcard_id',
    ];

    public function nfcCard()
    {
        return $this->belongsTo(Nfc::class, 'card_type', 'id');
    }

    public function vcard()
    {
        return $this->belongsTo(Vcard::class);
    }

    public function user()
    {
        return $this->belongsTo(User::class);
    }

    public function nfcTransaction()
    {
        return $this->hasOne(NfcOrderTransaction::class, 'nfc_order_id', 'id');
    }
    public function nfcPaymentType()
    {
        return $this->hasOne(NfcOrderTransaction::class, 'type', 'id');
    }
}