<?php

namespace common\models;

use yii\base\Object;
use Yii;

/**
 * This is the model class for table "production_produit".
 *
 * @property integer $id
 * @property integer $id_production
 * @property integer $id_produit
 * @property integer $actif
 */
class ProductionProduit extends \yii\db\ActiveRecord {

    /**
     * @inheritdoc
     */
    public static function tableName() {
        return 'production_produit';
    }

    /**
     * @inheritdoc
     */
    public function rules() {
        return [
            [['id_production', 'id_produit', 'actif', 'quantite_max'], 'integer']
        ];
    }

    public function getProduit() {
        return $this->hasOne(Produit::className(), ['id' => 'id_produit']);
    }

    /**
     * @inheritdoc
     */
    public function attributeLabels() {
        return [
            'id' => 'ID',
            'id_production' => 'Id Production',
            'id_produit' => 'Id Produit',
            'actif' => 'Actif',
            'quantite_max' => 'Quantité max',
        ];
    }

    public static function findProduits($id_production) {

        $production_produits = ProductionProduit::find()
                ->with('produit')
                ->where(['id_production' => $id_production])
                ->all();

        $arr_production_produits = [];

        $commandes = Commande::find()
                ->with('commandeProduits', 'user')
                ->joinWith('production')
                ->where(['production.id' => $id_production])
                ->orderBy('date ASC')
                ->all();

        foreach ($production_produits as $pp) {
            if (isset($pp->produit)) {
                $arr_production_produits[$pp->id_produit] = [
                    'actif' => (int) $pp->actif,
                    'epuise' => (int) $pp->produit->epuise,
                    'vrac' => (int) $pp->produit->vrac,
                    'quantite_max' => $pp->quantite_max,
                    'quantite_commandee' => Commande::getQuantiteProduit($pp->id_produit, $commandes),
                    'quantite_restante' => $pp->quantite_max - Commande::getQuantiteProduit($pp->id_produit, $commandes)
                        ];
            }
        }

        return $arr_production_produits;
    }

}