Chargement ajax à la demande des points de vente favoris des utilisateurs au lieu de tout charger en une seule fois.dev
// utilisateurs | // utilisateurs | ||||
$usersArray = User::findBy()->all() ; | $usersArray = User::findBy()->all() ; | ||||
foreach($usersArray as &$user) { | |||||
$userObject = User::findOne(['id' => $user['user_id']]) ; | |||||
$favoritePointSale = $userObject->getFavoritePointSale() ; | |||||
if($favoritePointSale) { | |||||
$user['id_point_sale_favorite'] = $favoritePointSale->id ; | |||||
} | |||||
} | |||||
$json['users'] = $usersArray ; | $json['users'] = $usersArray ; | ||||
return $json ; | return $json ; | ||||
} | } | ||||
public function actionAjaxPointSaleFavorite($idUser) | |||||
{ | |||||
\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; | |||||
$user = User::findOne(['id' => $idUser]) ; | |||||
$favoritePointSale = $user->getFavoritePointSale() ; | |||||
$idFavoritePointSale = 0 ; | |||||
if($favoritePointSale) { | |||||
$idFavoritePointSale = $favoritePointSale->id ; | |||||
} | |||||
return [ | |||||
'id_favorite_point_sale' => $idFavoritePointSale | |||||
] ; | |||||
} | |||||
/** | /** | ||||
* Génére un PDF récapitulatif des des commandes d'un producteur pour une | * Génére un PDF récapitulatif des des commandes d'un producteur pour une | ||||
* date donnée (Méthode appelable via CRON) | * date donnée (Méthode appelable via CRON) |
</label> | </label> | ||||
<select class="form-control" v-model="order.id_user"> | <select class="form-control" v-model="order.id_user"> | ||||
<option value="0">--</option> | <option value="0">--</option> | ||||
<option v-for="user in users" :value="user.id_user" @click="userChange" :data-id-point-sale-favorite="user.id_point_sale_favorite">{{ user.lastname +' '+ user.name }}</option> | |||||
<option v-for="user in users" :value="user.id_user" @click="userChange">{{ user.lastname +' '+ user.name }}</option> | |||||
</select> | </select> | ||||
<input v-model="order.username" type="text" class="form-control" placeholder="Ou saisissez ici le nom de l'utilisateur" /> | <input v-model="order.username" type="text" class="form-control" placeholder="Ou saisissez ici le nom de l'utilisateur" /> | ||||
</div> | </div> |
} | } | ||||
}, | }, | ||||
userChange: function(event) { | userChange: function(event) { | ||||
var idPointSaleFavorite = event.currentTarget.getAttribute('data-id-point-sale-favorite') ; | |||||
this.order.id_point_sale = idPointSaleFavorite ; | |||||
var app = this ; | |||||
axios.get(UrlManager.getBaseUrlAbsolute()+"distribution/ajax-point-sale-favorite",{params: { | |||||
idUser: app.order.id_user, | |||||
}}) | |||||
.then(function(response) { | |||||
app.order.id_point_sale = response.data.id_favorite_point_sale ; | |||||
}) ; | |||||
} | } | ||||
} | } | ||||
}) ; | }) ; |