# Conflicts: # common/models/Developpement.php # common/models/DeveloppementPriorite.php # console/migrations/m171226_200642_tables_developpement.phpprodstable
<?php | |||||
namespace backend\controllers; | |||||
use Yii; | |||||
use common\models\User; | |||||
use common\models\Developpement; | |||||
use common\models\DeveloppementPriorite; | |||||
use yii\data\ActiveDataProvider; | |||||
use yii\web\Controller; | |||||
use yii\web\NotFoundHttpException; | |||||
use yii\filters\VerbFilter; | |||||
use yii\filters\AccessControl; | |||||
/** | |||||
* DeveloppementController implements the CRUD actions for Developpement model. | |||||
*/ | |||||
class DeveloppementController extends Controller { | |||||
/** | |||||
* @inheritdoc | |||||
*/ | |||||
public function behaviors() | |||||
{ | |||||
return [ | |||||
'access' => [ | |||||
'class' => AccessControl::className(), | |||||
'rules' => [ | |||||
[ | |||||
'allow' => true, | |||||
'roles' => ['@'], | |||||
'matchCallback' => function ($rule, $action) { | |||||
return Yii::$app->user->identity->status == USER::STATUS_ADMIN | |||||
|| Yii::$app->user->identity->status == USER::STATUS_BOULANGER; | |||||
} | |||||
] | |||||
], | |||||
], | |||||
]; | |||||
} | |||||
/** | |||||
* Lists all Developpement models. | |||||
* @return mixed | |||||
*/ | |||||
public function actionIndex() { | |||||
$dataProvider = new ActiveDataProvider([ | |||||
'query' => Developpement::find()->with(['developpementPriorite','developpementPrioriteCurrentEtablissement']), | |||||
]); | |||||
return $this->render('index', [ | |||||
'dataProvider' => $dataProvider, | |||||
]); | |||||
} | |||||
/** | |||||
* Creates a new Developpement model. | |||||
* If creation is successful, the browser will be redirected to the 'view' page. | |||||
* @return mixed | |||||
*/ | |||||
public function actionCreate() { | |||||
$model = new Developpement(); | |||||
if ($model->load(Yii::$app->request->post())) { | |||||
$model->date = date('Y-m-d H:i:s') ; | |||||
$model->setDateLivraison() ; | |||||
if($model->save()) { | |||||
Yii::$app->getSession()->setFlash('success','Développement ajouté') ; | |||||
return $this->redirect(['index']); | |||||
} | |||||
} else { | |||||
return $this->render('create', [ | |||||
'model' => $model, | |||||
]); | |||||
} | |||||
} | |||||
/** | |||||
* Updates an existing Developpement model. | |||||
* If update is successful, the browser will be redirected to the 'view' page. | |||||
* @param integer $id | |||||
* @return mixed | |||||
*/ | |||||
public function actionUpdate($id) { | |||||
$model = $this->findModel($id); | |||||
if ($model->load(Yii::$app->request->post())) { | |||||
$model->setDateLivraison() ; | |||||
if($model->save()) { | |||||
Yii::$app->getSession()->setFlash('success','Développement modifié') ; | |||||
return $this->redirect(['index']); | |||||
} | |||||
} else { | |||||
return $this->render('update', [ | |||||
'model' => $model, | |||||
]); | |||||
} | |||||
} | |||||
/** | |||||
* Deletes an existing Developpement model. | |||||
* If deletion is successful, the browser will be redirected to the 'index' page. | |||||
* @param integer $id | |||||
* @return mixed | |||||
*/ | |||||
public function actionDelete($id) { | |||||
$this->findModel($id)->delete(); | |||||
Yii::$app->getSession()->setFlash('success','Développement supprimé') ; | |||||
return $this->redirect(['index']); | |||||
} | |||||
public function actionPriorite($id_developpement, $priorite = null) { | |||||
$developpement_priorite = DeveloppementPriorite::find() | |||||
->where(['id_developpement' => $id_developpement, 'id_etablissement' => Yii::$app->user->identity->id_etablissement]) | |||||
->one() ; | |||||
if(in_array($priorite, | |||||
[DeveloppementPriorite::PRIORITE_HAUTE, | |||||
DeveloppementPriorite::PRIORITE_NORMALE, | |||||
DeveloppementPriorite::PRIORITE_BASSE])) { | |||||
if($developpement_priorite) { | |||||
$developpement_priorite->priorite = $priorite ; | |||||
$developpement_priorite->id_etablissement = Yii::$app->user->identity->id_etablissement ; | |||||
} | |||||
else { | |||||
$developpement_priorite = new DeveloppementPriorite ; | |||||
$developpement_priorite->id_developpement = $id_developpement ; | |||||
$developpement_priorite->priorite = $priorite ; | |||||
$developpement_priorite->id_etablissement = Yii::$app->user->identity->id_etablissement ; | |||||
} | |||||
$developpement_priorite->save() ; | |||||
} | |||||
else { | |||||
if($developpement_priorite) { | |||||
$developpement_priorite->delete() ; | |||||
} | |||||
} | |||||
$this->redirect(['index']) ; | |||||
} | |||||
/** | |||||
* Finds the Developpement model based on its primary key value. | |||||
* If the model is not found, a 404 HTTP exception will be thrown. | |||||
* @param integer $id | |||||
* @return Developpement the loaded model | |||||
* @throws NotFoundHttpException if the model cannot be found | |||||
*/ | |||||
protected function findModel($id) { | |||||
if (($model = Developpement::findOne($id)) !== null) { | |||||
return $model; | |||||
} else { | |||||
throw new NotFoundHttpException('The requested page does not exist.'); | |||||
} | |||||
} | |||||
} |
<?php | |||||
use yii\helpers\Html; | |||||
use yii\widgets\ActiveForm; | |||||
use common\models\Developpement ; | |||||
/* @var $this yii\web\View */ | |||||
/* @var $model common\models\Developpement */ | |||||
/* @var $form yii\widgets\ActiveForm */ | |||||
?> | |||||
<div class="developpement-form"> | |||||
<?php $form = ActiveForm::begin(); ?> | |||||
<?= $form->field($model, 'type')->dropDownList([ | |||||
Developpement::TYPE_EVOLUTION => 'Évolution', | |||||
Developpement::TYPE_BUG => 'Anomalie', | |||||
]) ?> | |||||
<?= $form->field($model, 'statut')->dropDownList([ | |||||
Developpement::STATUT_OPEN => 'Ouvert', | |||||
Developpement::STATUT_CLOSED => 'Fermé', | |||||
]) ?> | |||||
<?= $form->field($model, 'objet')->textInput(['maxlength' => true]) ?> | |||||
<?= $form->field($model, 'description')->textarea(['rows' => 6]) ?> | |||||
<?= $form->field($model, 'estimation_temps')->textInput() ?> | |||||
<?= $form->field($model, 'avancement')->textInput() ?> | |||||
<?= $form->field($model, 'date_livraison')->textInput() ?> | |||||
<div class="form-group"> | |||||
<?= Html::submitButton($model->isNewRecord ? 'Ajouter' : 'Modifier', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> | |||||
</div> | |||||
<?php ActiveForm::end(); ?> | |||||
</div> |
<?php | |||||
use yii\helpers\Html; | |||||
/* @var $this yii\web\View */ | |||||
/* @var $model common\models\Developpement */ | |||||
$this->title = 'Ajouter un développement'; | |||||
$this->params['breadcrumbs'][] = ['label' => 'Développement', 'url' => ['index']]; | |||||
$this->params['breadcrumbs'][] = $this->title; | |||||
?> | |||||
<div class="developpement-create"> | |||||
<h1><?= Html::encode($this->title) ?></h1> | |||||
<?= $this->render('_form', [ | |||||
'model' => $model, | |||||
]) ?> | |||||
</div> |
<?php | |||||
use yii\helpers\Html; | |||||
use yii\grid\GridView; | |||||
use common\models\Developpement; | |||||
use common\models\DeveloppementPriorite; | |||||
use common\models\User; | |||||
use common\helpers\Url; | |||||
/* @var $this yii\web\View */ | |||||
/* @var $dataProvider yii\data\ActiveDataProvider */ | |||||
$this->title = 'Développement'; | |||||
$this->params['breadcrumbs'][] = $this->title; | |||||
?> | |||||
<div class="developpement-index"> | |||||
<h1><?= Html::encode($this->title) ?> <?= Html::a('Ajouter', ['create'], ['class' => 'btn btn-success']) ?></h1> | |||||
<div class="well"> | |||||
Cette page liste les besoins recencés auprès des producteurs utilisant la plateforme. N'hésitez pas à me <a href="<?= Url::frontend('site/contact') ?>">contacter</a> pour la faire évoluer. Les remontées de bugs sont également bienvenues.<br /> | |||||
Afin d'orienter de manière pertinente le développement de la plateforme, je vous invite à définir la priorité des évolutions qui vous intéressent. | |||||
</div> | |||||
<?php | |||||
foreach (Yii::$app->session->getAllFlashes() as $key => $message) { | |||||
echo '<div class="alert alert-' . $key . '">' . $message . '</div>'; | |||||
} | |||||
?> | |||||
<?php | |||||
$columns = [ | |||||
[ | |||||
'header' => '#', | |||||
'value' => function($model) { | |||||
return '#'.$model->id ; | |||||
} | |||||
], | |||||
[ | |||||
'attribute' => 'type', | |||||
'header' => 'Type', | |||||
'format' => 'raw', | |||||
'value' => function($model) { | |||||
if($model->type == Developpement::TYPE_EVOLUTION) { | |||||
return '<span class="label label-success">Évolution</span>' ; | |||||
} | |||||
else { | |||||
return '<span class="label label-danger">Anomalie</span>' ; | |||||
} | |||||
} | |||||
], | |||||
[ 'attribute' => 'sujet', | |||||
'format' => 'raw', | |||||
'value' => function($model) { | |||||
$html = '<strong>'.Html::encode($model->objet).'</strong>' ; | |||||
if(strlen($model->description)) | |||||
$html .= '<br />'.Html::encode($model->description) ; | |||||
return $html ; | |||||
}], | |||||
[ 'attribute' => 'estimation_temps', | |||||
'header' => 'Estimation', | |||||
'format' => 'raw', | |||||
'value' => function($model) { | |||||
return intval($model->estimation_temps).' h' ; | |||||
}], | |||||
[ 'attribute' => 'avancement', | |||||
'format' => 'raw', | |||||
'value' => function($model) { | |||||
if($model->avancement) | |||||
return '<div class="progress"> | |||||
<div class="progress-bar progress-bar-warning" role="progressbar" aria-valuenow="'.intval($model->avancement).'" aria-valuemin="0" aria-valuemax="100" style="width: '.intval($model->avancement).'%;"> | |||||
<span class="sr-only">'.intval($model->avancement).'% effectué</span> | |||||
</div> | |||||
</div> ' ; | |||||
else | |||||
return '' ; | |||||
}], | |||||
[ 'attribute' => 'date_livraison', | |||||
'format' => 'raw', | |||||
'value' => function($model) { | |||||
if(strlen($model->date_livraison)) | |||||
return date('d/m/Y',strtotime($model->date_livraison)) ; | |||||
else | |||||
return '' ; | |||||
}], | |||||
] ; | |||||
if(Yii::$app->user->identity->status == USER::STATUS_ADMIN | |||||
|| Yii::$app->user->identity->status == USER::STATUS_BOULANGER) { | |||||
$columns[] = [ | |||||
'header' => 'Priorité', | |||||
'format' => 'raw', | |||||
'value' => function($model) { | |||||
$current_priorite = (isset($model->developpementPrioriteCurrentEtablissement)) ? $model->developpementPrioriteCurrentEtablissement->getStrPriorite() : 'Non' ; | |||||
$style_bouton = (isset($model->developpementPrioriteCurrentEtablissement)) ? $model->developpementPrioriteCurrentEtablissement->getClassCssStyleBouton() : 'default' ; | |||||
$html = '<div class="btn-group btn-group-priorite"> | |||||
<button type="button" class="btn btn-priorite btn-sm btn-'.$style_bouton.' dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> | |||||
'.$current_priorite.' <span class="caret"></span> | |||||
</button> | |||||
<ul class="dropdown-menu"> | |||||
<li><a href="'.Yii::$app->urlManager->createUrl(['developpement/priorite','id_developpement'=>$model->id]).'">Non</a></li> | |||||
<li><a href="'.Yii::$app->urlManager->createUrl(['developpement/priorite','id_developpement'=>$model->id, 'priorite' => DeveloppementPriorite::PRIORITE_BASSE]).'">Basse</a></li> | |||||
<li><a href="'.Yii::$app->urlManager->createUrl(['developpement/priorite','id_developpement'=>$model->id, 'priorite' => DeveloppementPriorite::PRIORITE_NORMALE]).'">Normale</a></li> | |||||
<li><a href="'.Yii::$app->urlManager->createUrl(['developpement/priorite','id_developpement'=>$model->id, 'priorite' => DeveloppementPriorite::PRIORITE_HAUTE]).'">Haute</a></li> | |||||
</ul> | |||||
</div><br />' ; | |||||
if(isset($model->developpementPriorite) && count($model->developpementPriorite)) { | |||||
foreach($model->developpementPriorite as $developpement_priorite) { | |||||
if($developpement_priorite->id_etablissement != Yii::$app->user->identity->id_etablissement) | |||||
$html .= '<div class="label label-priorite label-sm label-'.$developpement_priorite->getClassCssStyleBouton().'">'.Html::encode($developpement_priorite->etablissement->nom).'</div> ' ; | |||||
} | |||||
} | |||||
return $html ; | |||||
} | |||||
] ; | |||||
} | |||||
if(Yii::$app->user->identity->status == USER::STATUS_ADMIN) { | |||||
$columns[] = [ | |||||
'class' => 'yii\grid\ActionColumn', | |||||
'template' => '{update}', | |||||
'headerOptions' => ['class' => 'actions'], | |||||
'buttons' => [ | |||||
'update' => function ($url, $model) { | |||||
return '<div class="btn-group"> | |||||
<a href="'.$url.'" class="btn btn-default"><span class="glyphicon glyphicon-pencil"></span> Modifier</a> | |||||
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> | |||||
<span class="caret"></span> | |||||
<span class="sr-only">Toggle Dropdown</span> | |||||
</button> | |||||
<ul class="dropdown-menu"> | |||||
<li><a href="'.Yii::$app->urlManager->createUrl(['developpement/delete','id' => $model->id]).'" class=""><span class="glyphicon glyphicon-trash"></span> Supprimer</a></li> | |||||
</ul> | |||||
</div>' ; | |||||
}, | |||||
], | |||||
] ; | |||||
} | |||||
?> | |||||
<?= | |||||
GridView::widget([ | |||||
'id' => 'tab-developpements', | |||||
'dataProvider' => $dataProvider, | |||||
'columns' => $columns | |||||
]); | |||||
?> | |||||
</div> |
<?php | |||||
use yii\helpers\Html; | |||||
/* @var $this yii\web\View */ | |||||
/* @var $model common\models\Developpement */ | |||||
$this->title = 'Modifier un développement'; | |||||
$this->params['breadcrumbs'][] = ['label' => 'Développement', 'url' => ['index']]; | |||||
$this->params['breadcrumbs'][] = ['label' => '#'.$model->id, 'url' => ['update', 'id' => $model->id]]; | |||||
$this->params['breadcrumbs'][] = 'Modifier'; | |||||
?> | |||||
<div class="developpement-update"> | |||||
<h1><?= Html::encode($this->title) ?></h1> | |||||
<?= $this->render('_form', [ | |||||
'model' => $model, | |||||
]) ?> | |||||
</div> |
<?php | <?php | ||||
use backend\assets\AppAsset; | use backend\assets\AppAsset; | ||||
use yii\helpers\Html; | use yii\helpers\Html; | ||||
use yii\bootstrap\Nav; | use yii\bootstrap\Nav; | ||||
use yii\bootstrap\NavBar; | use yii\bootstrap\NavBar; | ||||
use yii\widgets\Breadcrumbs; | use yii\widgets\Breadcrumbs; | ||||
use common\models\Etablissement ; | |||||
use common\models\User ; | |||||
use common\models\Etablissement; | |||||
use common\models\User; | |||||
use yii\widgets\ActiveForm; | use yii\widgets\ActiveForm; | ||||
use yii\helpers\ArrayHelper ; | |||||
use common\helpers\Url ; | |||||
use yii\helpers\ArrayHelper; | |||||
use common\helpers\Url; | |||||
/* @var $this \yii\web\View */ | /* @var $this \yii\web\View */ | ||||
/* @var $content string */ | /* @var $content string */ | ||||
<?php $this->beginPage() ?> | <?php $this->beginPage() ?> | ||||
<!DOCTYPE html> | <!DOCTYPE html> | ||||
<html lang="<?= Yii::$app->language ?>"> | <html lang="<?= Yii::$app->language ?>"> | ||||
<head> | |||||
<meta charset="<?= Yii::$app->charset ?>"> | |||||
<meta name="viewport" content="width=device-width, initial-scale=1"> | |||||
<link rel="icon" type="image/png" href="<?php echo Yii::$app->urlManager->getBaseUrl(); ?>/img/favicon3.png" /> | |||||
<?= Html::csrfMetaTags() ?> | |||||
<title><?= Html::encode($this->title) ?> - La boîte à pain</title> | |||||
<?php $this->head() ?> | |||||
</head> | |||||
<body> | |||||
<?php $this->beginBody() ?> | |||||
<div class="wrap"> | |||||
<?php | |||||
<head> | |||||
<meta charset="<?= Yii::$app->charset ?>"> | |||||
<meta name="viewport" content="width=device-width, initial-scale=1"> | |||||
<link rel="icon" type="image/png" href="<?php echo Yii::$app->urlManager->getBaseUrl(); ?>/img/favicon3.png" /> | |||||
<?= Html::csrfMetaTags() ?> | |||||
<title><?= Html::encode($this->title) ?> - La boîte à pain</title> | |||||
<?php $this->head() ?> | |||||
</head> | |||||
<body> | |||||
<?php $this->beginBody() ?> | |||||
<div class="wrap"> | |||||
<?php | |||||
NavBar::begin([ | NavBar::begin([ | ||||
'brandLabel' => '<img class="logo" src="'.Yii::$app->urlManager->getBaseUrl().'/img/laboulange3.png" />', | |||||
'brandLabel' => '<img class="logo" src="' . Yii::$app->urlManager->getBaseUrl() . '/img/laboulange3.png" />', | |||||
'brandUrl' => Yii::$app->homeUrl, | 'brandUrl' => Yii::$app->homeUrl, | ||||
'innerContainerOptions' => ['class'=>'container-fluid'], | |||||
'innerContainerOptions' => ['class' => 'container-fluid'], | |||||
'options' => [ | 'options' => [ | ||||
'class' => 'navbar-inverse navbar-fixed-top nav-header', | 'class' => 'navbar-inverse navbar-fixed-top nav-header', | ||||
], | ], | ||||
]); | ]); | ||||
$menuItems = [ | $menuItems = [ | ||||
[ | [ | ||||
'label' => '<span class="glyphicon glyphicon-home"></span> Tableau de bord', | |||||
'url' => ['/site/index'], | |||||
'visible'=> !Yii::$app->user->isGuest | |||||
'label' => '<span class="glyphicon glyphicon-home"></span> Tableau de bord', | |||||
'url' => ['/site/index'], | |||||
'visible' => !Yii::$app->user->isGuest | |||||
], | ], | ||||
[ | |||||
'label' => '<span class="glyphicon glyphicon-calendar"></span> Commandes', | |||||
'url' => ['/commande/index'], | |||||
'visible'=> !Yii::$app->user->isGuest, | |||||
[ | |||||
'label' => '<span class="glyphicon glyphicon-calendar"></span> Commandes', | |||||
'url' => ['/commande/index'], | |||||
'visible' => !Yii::$app->user->isGuest, | |||||
'items' => [ | 'items' => [ | ||||
[ | [ | ||||
'label' => '<span class="glyphicon glyphicon-calendar"></span> Toutes les commandes', | 'label' => '<span class="glyphicon glyphicon-calendar"></span> Toutes les commandes', | ||||
] | ] | ||||
], | ], | ||||
[ | [ | ||||
'label' => '<span class="glyphicon glyphicon-grain"></span> Produits', | |||||
'url' => ['/produit/index'], | |||||
'visible'=> !Yii::$app->user->isGuest | |||||
'label' => '<span class="glyphicon glyphicon-grain"></span> Produits', | |||||
'url' => ['/produit/index'], | |||||
'visible' => !Yii::$app->user->isGuest | |||||
], | ], | ||||
[ | [ | ||||
'label' => '<span class="glyphicon glyphicon-map-marker"></span> Points de vente', | |||||
'url' => ['/point-vente/index'], | |||||
'visible'=> !Yii::$app->user->isGuest | |||||
'label' => '<span class="glyphicon glyphicon-map-marker"></span> Points de vente', | |||||
'url' => ['/point-vente/index'], | |||||
'visible' => !Yii::$app->user->isGuest | |||||
], | ], | ||||
[ | [ | ||||
'label' => '<span class="glyphicon glyphicon-user"></span> Clients', | |||||
'url' => ['/user/index'], | |||||
'visible'=> !Yii::$app->user->isGuest | |||||
'label' => '<span class="glyphicon glyphicon-user"></span> Clients', | |||||
'url' => ['/user/index'], | |||||
'visible' => !Yii::$app->user->isGuest | |||||
], | ], | ||||
[ | [ | ||||
'label' => '<span class="glyphicon glyphicon-plus"></span>', | 'label' => '<span class="glyphicon glyphicon-plus"></span>', | ||||
'url' => ['/etablissement/update'], | |||||
'visible'=> !Yii::$app->user->isGuest, | |||||
'url' => ['/etablissement/update'], | |||||
'visible' => !Yii::$app->user->isGuest, | |||||
'items' => [ | 'items' => [ | ||||
[ | [ | ||||
'label' => '<span class="glyphicon glyphicon-cog"></span> Paramètres', | |||||
'url' => ['/etablissement/update'], | |||||
'visible'=> !Yii::$app->user->isGuest | |||||
'label' => '<span class="glyphicon glyphicon-cog"></span> Paramètres', | |||||
'url' => ['/etablissement/update'], | |||||
'visible' => !Yii::$app->user->isGuest | |||||
], | ], | ||||
[ | [ | ||||
'label' => '<span class="glyphicon glyphicon-bullhorn"></span> Communiquer', | |||||
'url' => ['/communiquer/index'], | |||||
'visible'=> !Yii::$app->user->isGuest | |||||
'label' => '<span class="glyphicon glyphicon-bullhorn"></span> Communiquer', | |||||
'url' => ['/communiquer/index'], | |||||
'visible' => !Yii::$app->user->isGuest | |||||
], | ], | ||||
[ | [ | ||||
'label' => '<span class="glyphicon glyphicon-euro"></span> Facturation', | 'label' => '<span class="glyphicon glyphicon-euro"></span> Facturation', | ||||
'url' => ['/etablissement/facturation'], | 'url' => ['/etablissement/facturation'], | ||||
'visible'=> !Yii::$app->user->isGuest, | |||||
'visible' => !Yii::$app->user->isGuest, | |||||
], | ], | ||||
[ | [ | ||||
'label' => '<span class="glyphicon glyphicon-stats"></span> Statistiques', | 'label' => '<span class="glyphicon glyphicon-stats"></span> Statistiques', | ||||
'url' => ['/stats/index'], | 'url' => ['/stats/index'], | ||||
'visible'=> !Yii::$app->user->isGuest, | |||||
] | |||||
'visible' => !Yii::$app->user->isGuest, | |||||
], | |||||
[ | |||||
'label' => '<span class="glyphicon glyphicon-wrench"></span> Développement', | |||||
'url' => ['/developpement/index'], | |||||
'visible' => !Yii::$app->user->isGuest | |||||
], | |||||
], | ], | ||||
] | ] | ||||
]; | ]; | ||||
if (Yii::$app->user->isGuest) { | if (Yii::$app->user->isGuest) { | ||||
$menuItems[] = ['label' => 'Connexion', 'url' => ['/site/login']]; | $menuItems[] = ['label' => 'Connexion', 'url' => ['/site/login']]; | ||||
} else { | } else { | ||||
if(Yii::$app->user->identity->status == USER::STATUS_ADMIN) | |||||
{ | |||||
if (Yii::$app->user->identity->status == USER::STATUS_ADMIN) { | |||||
$menuItems[] = [ | $menuItems[] = [ | ||||
'label' => '<span class="glyphicon glyphicon-asterisk"></span>', | |||||
'label' => '<span class="glyphicon glyphicon-asterisk"></span>', | |||||
'url' => '#', | 'url' => '#', | ||||
'items' => [ | 'items' => [ | ||||
[ | [ | ||||
'label' => '<span class="glyphicon glyphicon-th-list"></span> Producteurs', | 'label' => '<span class="glyphicon glyphicon-th-list"></span> Producteurs', | ||||
'url' => ['etablissement-admin/index'], | 'url' => ['etablissement-admin/index'], | ||||
'visible'=> !Yii::$app->user->isGuest, | |||||
'visible' => !Yii::$app->user->isGuest, | |||||
], | ], | ||||
[ | [ | ||||
'label' => '<span class="glyphicon glyphicon-euro"></span> Facturation', | 'label' => '<span class="glyphicon glyphicon-euro"></span> Facturation', | ||||
'url' => ['etablissement-admin/facturation'], | 'url' => ['etablissement-admin/facturation'], | ||||
'visible'=> !Yii::$app->user->isGuest, | |||||
'visible' => !Yii::$app->user->isGuest, | |||||
], | ], | ||||
] | ] | ||||
] ; | |||||
]; | |||||
} | } | ||||
$menuItems[] = [ | $menuItems[] = [ | ||||
'label' => '<span class="glyphicon glyphicon-off"></span>', | 'label' => '<span class="glyphicon glyphicon-off"></span>', | ||||
'url' => ['/site/logout'], | 'url' => ['/site/logout'], | ||||
'linkOptions' => ['data-method' => 'post','title' => 'Déconnexion'] | |||||
'linkOptions' => ['data-method' => 'post', 'title' => 'Déconnexion'] | |||||
]; | ]; | ||||
$menuItems[] = [ | $menuItems[] = [ | ||||
'label' => '<span class="retour-site">Retour sur le site</span>', | 'label' => '<span class="retour-site">Retour sur le site</span>', | ||||
'url' => Url::frontend(), | 'url' => Url::frontend(), | ||||
'encodeLabels' => false | 'encodeLabels' => false | ||||
]); | ]); | ||||
NavBar::end(); | NavBar::end(); | ||||
?> | |||||
<div class="container-fluid container-body"> | |||||
<?php if(YII_ENV == 'dev' || YII_ENV == 'demo'): ?> | |||||
<div id="env-dev"><?php if(YII_ENV == 'dev'): ?>Dév.<?php elseif(YII_ENV == 'demo'): ?>Démo<?php endif; ?></div> | |||||
<?php endif; ?> | |||||
<?php if(!Yii::$app->user->isGuest): ?> | |||||
<div class="nom-boulange"> | |||||
<?php if(Yii::$app->user->identity->status == User::STATUS_BOULANGER): ?> | |||||
<span><?= Html::encode(Yii::$app->user->identity->getNomMagasin()) ; ?></span> | |||||
<?php elseif(Yii::$app->user->identity->status == User::STATUS_ADMIN): ?> | |||||
<?php $form = ActiveForm::begin(['id' => 'select-etablissement']) ; ?> | |||||
<?= Html::dropDownList('select_etablissement', Yii::$app->user->identity->id_etablissement, ArrayHelper::map(Etablissement::find()->orderBy('nom ASC')->all(), 'id', function($model, $defaultValue) { | |||||
return $model->nom ; | |||||
})) ; ?> | |||||
<?php ActiveForm::end(); ?> | |||||
<?php endif; ?> | |||||
<?php | |||||
$etablissement = Etablissement::findOne(Yii::$app->user->identity->id_etablissement) ; | |||||
if(!$etablissement->actif): | |||||
?> | |||||
<span class="label label-danger" data-toggle="tooltip" data-placement="bottom" data-original-title="Activez votre établissement quand vous le souhaitez afin de la rendre visible à vos clients."> | |||||
<?= Html::a('Hors-ligne',['etablissement/update']); ?> | |||||
</span> | |||||
?> | |||||
<div class="container-fluid container-body"> | |||||
<?php if (YII_ENV == 'dev' || YII_ENV == 'demo'): ?> | |||||
<div id="env-dev"><?php if (YII_ENV == 'dev'): ?>Dév.<?php elseif (YII_ENV == 'demo'): ?>Démo<?php endif; ?></div> | |||||
<?php endif; ?> | |||||
<?php if (!Yii::$app->user->isGuest): ?> | |||||
<div class="nom-boulange"> | |||||
<?php if (Yii::$app->user->identity->status == User::STATUS_BOULANGER): ?> | |||||
<span><?= Html::encode(Yii::$app->user->identity->getNomMagasin()); ?></span> | |||||
<?php elseif (Yii::$app->user->identity->status == User::STATUS_ADMIN): ?> | |||||
<?php $form = ActiveForm::begin(['id' => 'select-etablissement']); ?> | |||||
<?= | |||||
Html::dropDownList('select_etablissement', Yii::$app->user->identity->id_etablissement, ArrayHelper::map(Etablissement::find()->orderBy('nom ASC')->all(), 'id', function($model, $defaultValue) { | |||||
return $model->nom; | |||||
})); | |||||
?> | |||||
<?php ActiveForm::end(); ?> | |||||
<?php endif; ?> | |||||
<?php | |||||
$etablissement = Etablissement::findOne(Yii::$app->user->identity->id_etablissement); | |||||
if (!$etablissement->actif): | |||||
?> | |||||
<span class="label label-danger" data-toggle="tooltip" data-placement="bottom" data-original-title="Activez votre établissement quand vous le souhaitez afin de la rendre visible à vos clients."> | |||||
<?= Html::a('Hors-ligne', ['etablissement/update']); ?> | |||||
</span> | |||||
<?php endif; ?> | |||||
<div class="clr"></div> | |||||
<?php $etat_paiement_etablissement = Yii::$app->user->identity->etatPaiementEtablissement(); ?> | |||||
<?php if ($etat_paiement_etablissement == 'essai'): ?> | |||||
<span id="etat-paiement-etablissement">Période d'essai gratuite | |||||
<span class="strong"><?php echo Yii::$app->user->identity->periodeEssai(); ?> jours</span> <a class="btn btn-success" href="<?php echo Yii::$app->urlManager->createUrl(['paiement/index']) ?>">S'abonner</a> | |||||
</span> | |||||
<?php elseif ($etat_paiement_etablissement == Etablissement::PAIEMENT_ESSAI_TERMINE || $etat_paiement_etablissement == Etablissement::PAIEMENT_RETARD): ?> | |||||
<span id="etat-paiement-etablissement"> | |||||
<span class="strong"> | |||||
<?php if ($etat_paiement_etablissement == Etablissement::PAIEMENT_ESSAI_TERMINE): ?>Période d'essai gratuite terminée | |||||
<?php elseif ($etat_paiement_etablissement == Etablissement::PAIEMENT_RETARD): ?>Retard de paiement | |||||
<?php endif; ?> | |||||
</span> | |||||
</span> | |||||
<?php endif; ?> | |||||
</div> | |||||
<?php endif; ?> | <?php endif; ?> | ||||
<div class="clr"></div> | |||||
<?php $etat_paiement_etablissement = Yii::$app->user->identity->etatPaiementEtablissement(); ?> | |||||
<?php if($etat_paiement_etablissement == 'essai'): ?> | |||||
<span id="etat-paiement-etablissement">Période d'essai gratuite | |||||
<span class="strong"><?php echo Yii::$app->user->identity->periodeEssai(); ?> jours</span> <a class="btn btn-success" href="<?php echo Yii::$app->urlManager->createUrl(['paiement/index']) ?>">S'abonner</a> | |||||
</span> | |||||
<?php elseif($etat_paiement_etablissement == Etablissement::PAIEMENT_ESSAI_TERMINE || $etat_paiement_etablissement == Etablissement::PAIEMENT_RETARD): ?> | |||||
<span id="etat-paiement-etablissement"> | |||||
<span class="strong"> | |||||
<?php if($etat_paiement_etablissement == Etablissement::PAIEMENT_ESSAI_TERMINE): ?>Période d'essai gratuite terminée | |||||
<?php elseif($etat_paiement_etablissement == Etablissement::PAIEMENT_RETARD): ?>Retard de paiement | |||||
<?php endif; ?> | |||||
</span> | |||||
</span> | |||||
<?php if (YII_ENV == 'demo'): ?> | |||||
<div id="block-demo"> | |||||
<div class="container-fluid"> | |||||
<span class="glyphicon glyphicon-eye-open"></span> <strong>Espace de démonstration</strong> : | |||||
Testez la plateforme sans avoir à vous inscrire. Les données sont réinitialisées quotidiennement • <?= Html::a('Retour', Url::env('prod', 'frontend')) ?> | |||||
</div> | |||||
</div> | |||||
<?php endif; ?> | <?php endif; ?> | ||||
<?= | |||||
Breadcrumbs::widget([ | |||||
'links' => isset($this->params['breadcrumbs']) ? $this->params['breadcrumbs'] : [], | |||||
]) | |||||
?> | |||||
<?= $content ?> | |||||
</div> | </div> | ||||
<?php endif; ?> | |||||
<?php if(YII_ENV == 'demo'): ?> | |||||
<div id="block-demo"> | |||||
<div class="container-fluid"> | |||||
<span class="glyphicon glyphicon-eye-open"></span> <strong>Espace de démonstration</strong> : | |||||
Testez la plateforme sans avoir à vous inscrire. Les données sont réinitialisées quotidiennement • <?= Html::a('Retour', Url::env('prod', 'frontend')) ?> | |||||
</div> | |||||
</div> | |||||
<?php endif; ?> | |||||
<?= Breadcrumbs::widget([ | |||||
'links' => isset($this->params['breadcrumbs']) ? $this->params['breadcrumbs'] : [], | |||||
]) ?> | |||||
<?= $content ?> | |||||
</div> | </div> | ||||
</div> | |||||
<div id="alerts-fixed"></div> | |||||
<footer class="footer"> | |||||
<div class="container-fluid"> | |||||
<p class="pull-left"> | |||||
<a href="<?php echo Url::frontend('site/contact') ; ?>">Contact</a> • | |||||
<a href="<?php echo Url::frontend('site/mentions') ; ?>">Mentions légales</a> • | |||||
<a href="<?php echo Url::frontend('site/cgv') ; ?>">CGS</a> | |||||
</p> | |||||
<p class="pull-right"><?= Yii::powered() ?></p> | |||||
</div> | |||||
</footer> | |||||
<?php $this->endBody() ?> | |||||
<!-- analytics --> | |||||
<script> | |||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ | |||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), | |||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) | |||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); | |||||
ga('create', 'UA-86917043-1', 'auto'); | |||||
ga('send', 'pageview'); | |||||
</script> | |||||
</body> | |||||
<div id="alerts-fixed"></div> | |||||
<footer class="footer"> | |||||
<div class="container-fluid"> | |||||
<p class="pull-left"> | |||||
<a href="<?php echo Url::frontend('site/contact'); ?>">Contact</a> • | |||||
<a href="<?php echo Url::frontend('site/mentions'); ?>">Mentions légales</a> • | |||||
<a href="<?php echo Url::frontend('site/cgv'); ?>">CGS</a> | |||||
</p> | |||||
<p class="pull-right"><?= Yii::powered() ?></p> | |||||
</div> | |||||
</footer> | |||||
<?php $this->endBody() ?> | |||||
<!-- analytics --> | |||||
<script> | |||||
(function (i, s, o, g, r, a, m) { | |||||
i['GoogleAnalyticsObject'] = r; | |||||
i[r] = i[r] || function () { | |||||
(i[r].q = i[r].q || []).push(arguments) | |||||
}, i[r].l = 1 * new Date(); | |||||
a = s.createElement(o), | |||||
m = s.getElementsByTagName(o)[0]; | |||||
a.async = 1; | |||||
a.src = g; | |||||
m.parentNode.insertBefore(a, m) | |||||
})(window, document, 'script', 'https://www.google-analytics.com/analytics.js', 'ga'); | |||||
ga('create', 'UA-86917043-1', 'auto'); | |||||
ga('send', 'pageview'); | |||||
</script> | |||||
</body> | |||||
</html> | </html> | ||||
<?php $this->endPage() ?> | <?php $this->endPage() ?> |
padding: 10px; | padding: 10px; | ||||
text-align: center; | text-align: center; | ||||
} | } | ||||
/* line 1230, ../sass/screen.scss */ | |||||
.developpement-index #tab-developpements .btn-group-priorite { | |||||
width: 100%; | |||||
margin-bottom: 5px; | |||||
} | |||||
/* line 1234, ../sass/screen.scss */ | |||||
.developpement-index #tab-developpements .btn-group-priorite .btn-priorite { | |||||
display: block; | |||||
float: none; | |||||
width: 100%; | |||||
} | |||||
/* line 1241, ../sass/screen.scss */ | |||||
.developpement-index #tab-developpements .label-priorite { | |||||
display: block; | |||||
width: 100%; | |||||
margin-bottom: 2px; | |||||
padding: 5px 8px; | |||||
} |
padding: 10px ; | padding: 10px ; | ||||
text-align: center ; | text-align: center ; | ||||
} | } | ||||
} | |||||
.developpement-index { | |||||
#tab-developpements { | |||||
.btn-group-priorite { | |||||
width: 100% ; | |||||
margin-bottom: 5px ; | |||||
.btn-priorite { | |||||
display: block ; | |||||
float: none ; | |||||
width: 100% ; | |||||
} | |||||
} | |||||
.label-priorite { | |||||
display: block ; | |||||
width: 100% ; | |||||
margin-bottom: 2px ; | |||||
padding: 5px 8px ; | |||||
} | |||||
} | |||||
} | } |
<?php | <?php | ||||
namespace app\models; | |||||
namespace common\models; | |||||
use Yii; | use Yii; | ||||
use common\models\DeveloppementPriorite ; | |||||
/** | /** | ||||
* This is the model class for table "developpement". | * This is the model class for table "developpement". | ||||
*/ | */ | ||||
class Developpement extends \yii\db\ActiveRecord { | class Developpement extends \yii\db\ActiveRecord { | ||||
const STATUT_OPEN = 'open' ; | |||||
const STATUT_CLOSED = 'closed' ; | |||||
const TYPE_EVOLUTION = 'evolution' ; | |||||
const TYPE_BUG = 'bug' ; | |||||
/** | /** | ||||
* @inheritdoc | * @inheritdoc | ||||
*/ | */ | ||||
*/ | */ | ||||
public function rules() { | public function rules() { | ||||
return [ | return [ | ||||
[['id', 'objet', 'date'], 'required'], | |||||
[['objet', 'date'], 'required'], | |||||
[['id', 'avancement'], 'integer'], | [['id', 'avancement'], 'integer'], | ||||
[['description'], 'string'], | [['description'], 'string'], | ||||
[['date'], 'safe'], | |||||
[['date','date_livraison'], 'safe'], | |||||
[['estimation_temps'], 'number'], | [['estimation_temps'], 'number'], | ||||
[['objet', 'statut'], 'string', 'max' => 255], | |||||
[['objet', 'statut','type'], 'string', 'max' => 255], | |||||
]; | ]; | ||||
} | } | ||||
public function getDeveloppementPriorite() { | |||||
return $this->hasMany(DeveloppementPriorite::className(), ['id_developpement' => 'id'])->with('etablissement') ; | |||||
} | |||||
public function getDeveloppementPrioriteCurrentEtablissement() { | |||||
return $this->hasOne(DeveloppementPriorite::className(), ['id_developpement' => 'id'])->where(['id_etablissement'=>Yii::$app->user->identity->id_etablissement])->with('etablissement') ; | |||||
} | |||||
/** | /** | ||||
* @inheritdoc | * @inheritdoc | ||||
public function attributeLabels() { | public function attributeLabels() { | ||||
return [ | return [ | ||||
'id' => 'ID', | 'id' => 'ID', | ||||
'objet' => 'Objet', | |||||
'objet' => 'Sujet', | |||||
'description' => 'Description', | 'description' => 'Description', | ||||
'date' => 'Date', | 'date' => 'Date', | ||||
'avancement' => 'Avancement', | 'avancement' => 'Avancement', | ||||
'statut' => 'Statut', | 'statut' => 'Statut', | ||||
'estimation_temps' => 'Estimation temps', | 'estimation_temps' => 'Estimation temps', | ||||
'type' => 'Type', | |||||
'date_livraison' => 'Date de livraison' | |||||
]; | ]; | ||||
} | } | ||||
public function setDateLivraison($date = '') { | |||||
if(strlen($date)) | |||||
$this->date_livraison = $date ; | |||||
if(strlen($this->date_livraison)) | |||||
$this->date_livraison = date('Y-m-d',strtotime($this->date_livraison)) ; | |||||
} | |||||
} | } |
<?php | <?php | ||||
namespace app\models; | |||||
namespace common\models; | |||||
use Yii; | use Yii; | ||||
use common\models\Etablissement ; | |||||
/** | /** | ||||
* This is the model class for table "developpement_priorite". | * This is the model class for table "developpement_priorite". | ||||
*/ | */ | ||||
class DeveloppementPriorite extends \yii\db\ActiveRecord { | class DeveloppementPriorite extends \yii\db\ActiveRecord { | ||||
const PRIORITE_HAUTE = 'haute' ; | |||||
const PRIORITE_NORMALE = 'normale' ; | |||||
const PRIORITE_BASSE = 'basse' ; | |||||
/** | /** | ||||
* @inheritdoc | * @inheritdoc | ||||
*/ | */ | ||||
*/ | */ | ||||
public function rules() { | public function rules() { | ||||
return [ | return [ | ||||
[['id_user', 'id_developpement'], 'required'], | |||||
[['id_user', 'id_developpement'], 'integer'], | |||||
[['id_etablissement', 'id_developpement'], 'required'], | |||||
[['id_etablissement', 'id_developpement'], 'integer'], | |||||
[['priorite'], 'string'], | |||||
]; | ]; | ||||
} | } | ||||
public function getEtablissement() { | |||||
return $this->hasOne(Etablissement::className(), ['id' => 'id_etablissement']) ; | |||||
} | |||||
/** | /** | ||||
* @inheritdoc | * @inheritdoc | ||||
*/ | */ | ||||
public function attributeLabels() { | public function attributeLabels() { | ||||
return [ | return [ | ||||
'id_user' => 'Id User', | |||||
'id_developpement' => 'Id Developpement', | |||||
'id_etablissement' => 'Établissement', | |||||
'id_developpement' => 'Développement', | |||||
'priorite' => 'Priorité' | |||||
]; | ]; | ||||
} | } | ||||
public function getStrPriorite() | |||||
{ | |||||
switch($this->priorite) | |||||
{ | |||||
case self::PRIORITE_BASSE : return 'Basse' ; break ; | |||||
case self::PRIORITE_NORMALE : return 'Normale' ; break ; | |||||
case self::PRIORITE_HAUTE : return 'Haute' ; break ; | |||||
default: return 'Non définie' ; break ; | |||||
} | |||||
} | |||||
public function getClassCssStyleBouton() { | |||||
$style_bouton = 'default' ; | |||||
if($this->priorite == DeveloppementPriorite::PRIORITE_BASSE) | |||||
$style_bouton = 'info' ; | |||||
elseif($this->priorite == DeveloppementPriorite::PRIORITE_NORMALE) | |||||
$style_bouton = 'warning' ; | |||||
elseif($this->priorite == DeveloppementPriorite::PRIORITE_HAUTE) | |||||
$style_bouton = 'danger' ; | |||||
return $style_bouton ; | |||||
} | |||||
} | } |
public function up() { | public function up() { | ||||
$this->createTable('developpement', [ | $this->createTable('developpement', [ | ||||
'id' => Schema::TYPE_INTEGER . ' NOT NULL', | |||||
'id' => 'pk', | |||||
'objet' => Schema::TYPE_STRING . ' NOT NULL', | 'objet' => Schema::TYPE_STRING . ' NOT NULL', | ||||
'description' => Schema::TYPE_TEXT, | 'description' => Schema::TYPE_TEXT, | ||||
'date' => Schema::TYPE_DATE . ' NOT NULL', | |||||
'date' => Schema::TYPE_DATETIME . ' NOT NULL', | |||||
'avancement' => Schema::TYPE_INTEGER . ' DEFAULT 0', | 'avancement' => Schema::TYPE_INTEGER . ' DEFAULT 0', | ||||
'statut' => Schema::TYPE_STRING . ' DEFAULT \'open\'', | 'statut' => Schema::TYPE_STRING . ' DEFAULT \'open\'', | ||||
'type' => Schema::TYPE_STRING . ' DEFAULT \'evolution\'', | |||||
'estimation_temps' => Schema::TYPE_FLOAT, | 'estimation_temps' => Schema::TYPE_FLOAT, | ||||
'date_livraison' => Schema::TYPE_DATE | |||||
]); | ]); | ||||
$this->createTable('developpement_priorite', [ | $this->createTable('developpement_priorite', [ | ||||
'id_user' => Schema::TYPE_INTEGER . ' NOT NULL', | |||||
'id_etablissement' => Schema::TYPE_INTEGER . ' NOT NULL', | |||||
'id_developpement' => Schema::TYPE_INTEGER . ' NOT NULL', | 'id_developpement' => Schema::TYPE_INTEGER . ' NOT NULL', | ||||
'PRIMARY KEY (`id_user`, `id_developpement`)' | |||||
]); | ]); | ||||
} | } | ||||
<?php | |||||
use yii\db\Migration; | |||||
use yii\db\Schema; | |||||
use common\models\DeveloppementPriorite ; | |||||
class m171227_090138_champs_priorite_developpement extends Migration { | |||||
public function up() { | |||||
$this->addColumn('developpement_priorite','priorite',Schema::TYPE_STRING.' DEFAULT \''.DeveloppementPriorite::PRIORITE_NORMALE.'\''); | |||||
} | |||||
public function down() { | |||||
$this->dropColumn('developpement_priorite','priorite'); | |||||
} | |||||
} |