<?php
namespace SitecRESA\Datatype;
/**
 * prestation fournie par le prestataire d'activités
 *
 * @author Patrice Brun <patrice.brun@sitec.fr>
 *
 * @property-read int $id identifiant WS
 * @property-read string $libelle nom
 * @property-read string $description descrition
 * @property-read string $equipement equipement
 * @property-read string $equipementNonFournis equipement nonFournis
 * @property-read string $securite securite
 * @property-read string $conditionsParticulieres conditions particulieres
 * @property-read string $documentsObligatoires documents obligatoires
 * @property-read \SitecRESA\Datatype\PositionGPS $lieuActivite coordonnées GPS du lieux de l'activité
 * @property-read array $encadrants liste des encadrants
 * @property-read string $dureeActivite durée au format fr en jour,heure et minute
 * @property-read int $duree en minite
 * @property-read \SitecRESA\Datatype\Photo $photo première photo
 * @property Session          $dispoSessionsAvecRepartition disponible par rapport à une répartition
 * @property-read \SitecRESA\Datatype\AccesResolverList $galleriePhoto tableau de photos (SitecRESA\Datatype\Photo). (Accès WS)
 *
 */
class FichePrestationActivite extends DatatypeAbstract implements Fetchable {
    protected $_id;
    protected $_libelle;
    protected $_description;
    protected $_equipement;
    protected $_equipementNonFournis;
    protected $_securite;
    protected $_conditionsParticulieres;
    protected $_documentsObligatoires;
    protected $_lieuActivite;
    protected $_encadrants;
    protected $_dureeActivite;
    protected $_duree;
    protected $_photo;
    protected $_galleriePhoto;
    protected $_dispoSessionsAvecRepartition;
    /**
     * @var \SitecRESA\Datatype\AccesResolver
     */
    protected $_dispoSessions;

    /**
     * @var \SitecRESA\Datatype\AccesResolver
     */
    protected $_calendrierDispo;
    /**
     * permet d'obtenir les disponibilités de la prestation
     *
     * @param string $dateDebut format JJ/MM/AAAA
     * @param string $dateFin format JJ/MM/AAAA
     * @param \SitecRESA\Datatype\FichePrestataire $fichePrestataire
     * @return \SitecRESA\Datatype\AccesResolverList
     */
    public function disponibilites($dateDebut, $dateFin, FichePrestataire $fichePrestataire) {
        return $this->_dispoSessions->resolve(array("dateDebut" => $dateDebut,"dateFin" => $dateFin,"organisme" => $fichePrestataire->id));
    }
    /**
     *
     * @param \SitecRESA\WS\Client $apiClient
     * @param int $id
     * @return \SitecRESA\Datatype\FichePrestationActivite
     */
    static function fetch(\SitecRESA\WS\Client $apiClient, $id) {
        return $apiClient->produit("get",array("idRessource" => $id));
    }

    /**
     * obtenir uniquement les prestations dispo
     *
     * @param string  $dateArrivee
     * @param string  $dateDepart
     * @param boolean $avecTarif
     *
     * @return array liste de Sesssion
     */
    public function sessionsDisponiblesAvecRepartition ($dateArrivee,$dateDepart, $aAdulte = array(),$aEnfant = array()) {
        $i = 0;
        $aRepartition = array();
        foreach($aAdulte as $key=>$adulte){
            $aRepartition[$i][] = $adulte;
            $aRepartition[$i][] = $aEnfant[$key];
            $i++;
        }
        return $this->_dispoSessionsAvecRepartition->resolve(
            array(
                'dateFin' => $dateDepart,
                'dateDebut' => $dateArrivee,
                'avecTarif' => 1,
                'repartition' => json_encode($aRepartition)
            )
        );
    }

    /**
     * Permet d'obtenir les disponibilités sur plusieurs semaines d'une activité
     *
     * @param string $dateArrivee
     * @param string $dateDepart
     *
     * @return array
     */
    public function calendrierDispoActivite($dateArrivee,$dateDepart) {
        return $this->_calendrierDispo->resolve(array(
            'dateFin' => $dateDepart,
            'dateDebut' => $dateArrivee));
    }
}
