Browse Source

[producer] Gestion user identifiés

dev
Guillaume 3 years ago
parent
commit
6bd28738fd
2 changed files with 281 additions and 247 deletions
  1. +9
    -0
      producer/controllers/CreditController.php
  2. +272
    -247
      producer/controllers/SubscriptionController.php

+ 9
- 0
producer/controllers/CreditController.php View File

@@ -88,6 +88,11 @@ class CreditController extends ProducerBaseController
public function actionHistory($returnPayment = '')
{
$producer = $this->getProducer();

if(\Yii::$app->user->isGuest) {
return $this->redirect(Yii::$app->urlManagerFrontend->createAbsoluteUrl(['site/producer','id' => $producer->id])) ;
}

$searchModel = new CreditHistorySearch();
$searchModel->id_user = User::getCurrentId();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
@@ -117,6 +122,10 @@ class CreditController extends ProducerBaseController
{
$producer = $this->getProducer();

if(\Yii::$app->user->isGuest) {
return $this->redirect(Yii::$app->urlManagerFrontend->createAbsoluteUrl(['site/producer','id' => $producer->id])) ;
}

if ($producer->online_payment || $producer->option_stripe_mode_test) {

$creditForm = new CreditForm;

+ 272
- 247
producer/controllers/SubscriptionController.php View File

@@ -46,278 +46,303 @@ use common\models\Product;

class SubscriptionController extends ProducerBaseController
{
var $enableCsrfValidation = false;

public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'rules' => [
[
'allow' => true,
'roles' => ['@'],
]
],
var $enableCsrfValidation = false;

public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'rules' => [
[
'allow' => true,
'roles' => ['@'],
]
],
];
],
];
}

/**
* Liste les commandes récurrente du producteur.
*
* @return string
*/
public function actionIndex()
{
if(\Yii::$app->user->isGuest) {
$producer = $this->getProducer();
return $this->redirect(Yii::$app->urlManagerFrontend->createAbsoluteUrl(['site/producer','id' => $producer->id])) ;
}

/**
* Liste les commandes récurrente du producteur.
*
* @return string
*/
public function actionIndex()
{
$searchModel = new SubscriptionSearch;
$searchModel->id_user = User::getCurrentId();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);

return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider
]);
$searchModel = new SubscriptionSearch;
$searchModel->id_user = User::getCurrentId();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);

return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider
]);
}

public function actionAjaxProcess()
{
// form
$model = new SubscriptionForm;
$model->id_producer = GlobalParam::getCurrentProducerId();
$model->id_user = User::getCurrentId();

$posts = Yii::$app->request->post();

$idSubscription = (int)$posts['idSubscription'];
$isUpdate = false;
if ($idSubscription) {
$subscription = Subscription::findOne($idSubscription);
if ($subscription) {
$model->id = $idSubscription;
$isUpdate = true;
}
}

public function actionAjaxProcess()
{
// form
$model = new SubscriptionForm;
$model->id_producer = GlobalParam::getCurrentProducerId();
$model->id_user = User::getCurrentId();

$posts = Yii::$app->request->post();

$idSubscription = (int)$posts['idSubscription'];
$isUpdate = false;
if ($idSubscription) {
$subscription = Subscription::findOne($idSubscription);
if ($subscription) {
$model->id = $idSubscription;
$isUpdate = true;
}
}
if ($model->load($posts) && $model->validate()
&& $model->save()) {
$subscription = Subscription::searchOne([
'id' => $model->id
]);
$subscription->updateIncomingDistributions($isUpdate);

if ($isUpdate) {
Yii::$app->getSession()->setFlash('success', 'Abonnement modifié');
} else {
Yii::$app->getSession()->setFlash('success', 'Abonnement ajouté');
}
}
}

/**
* Crée une commande récurrente.
*
* @return string
*/
public function actionForm($id = 0)
{
if(\Yii::$app->user->isGuest) {
$producer = $this->getProducer();
return $this->redirect(Yii::$app->urlManagerFrontend->createAbsoluteUrl(['site/producer','id' => $producer->id])) ;
}

if ($model->load($posts) && $model->validate()
&& $model->save()) {
$subscription = Subscription::searchOne([
'id' => $model->id
]);
$subscription->updateIncomingDistributions($isUpdate);

if ($isUpdate) {
Yii::$app->getSession()->setFlash('success', 'Abonnement modifié');
} else {
Yii::$app->getSession()->setFlash('success', 'Abonnement ajouté');
}
}
return $this->render('form', [
'idSubscription' => (int)$id
]);
}

/**
* Modifie une commande récurrente.
*
* @param integer $id
* @return string
* @throws NotFoundHttpException
*/
public function actionUpdate($id)
{
if(\Yii::$app->user->isGuest) {
$producer = $this->getProducer();
return $this->redirect(Yii::$app->urlManagerFrontend->createAbsoluteUrl(['site/producer','id' => $producer->id])) ;
}

/**
* Crée une commande récurrente.
*
* @return string
*/
public function actionForm($id = 0)
{
return $this->render('form', [
'idSubscription' => (int)$id
]);
// form
$model = new SubscriptionForm;
$subscription = Subscription::findOne($id);
if ($subscription) {
$model->id = $id;
$model->id_producer = $subscription->id_producer;
$model->id_user = $subscription->id_user;
$model->username = $subscription->username;
$model->id_point_sale = $subscription->id_point_sale;
$model->date_begin = date('d/m/Y', strtotime($subscription->date_begin));
if (strlen($subscription->date_end)) {
$model->date_end = date('d/m/Y', strtotime($subscription->date_end));
}

$model->monday = $subscription->monday;
$model->tuesday = $subscription->tuesday;
$model->wednesday = $subscription->wednesday;
$model->thursday = $subscription->thursday;
$model->friday = $subscription->friday;
$model->saturday = $subscription->saturday;
$model->sunday = $subscription->sunday;
$model->auto_payment = $subscription->auto_payment;
$model->week_frequency = $subscription->week_frequency;

// produits
$arrayProductsSubscription = ProductSubscription::searchAll([
'id_subscription' => $model->id
]);

foreach ($arrayProductsSubscription as $productSubscription) {
$model->products['product_' . $productSubscription->id_product] = $productSubscription->quantity;
}
} else {
throw new NotFoundHttpException('L\'abonnement est introuvable.', 404);
}

/**
* Modifie une commande récurrente.
*
* @param integer $id
* @return string
* @throws NotFoundHttpException
*/
public function actionUpdate($id)
{
// form
$model = new SubscriptionForm;
$subscription = Subscription::findOne($id);
if ($subscription) {
$model->id = $id;
$model->id_producer = $subscription->id_producer;
$model->id_user = $subscription->id_user;
$model->username = $subscription->username;
$model->id_point_sale = $subscription->id_point_sale;
$model->date_begin = date('d/m/Y', strtotime($subscription->date_begin));
if (strlen($subscription->date_end)) {
$model->date_end = date('d/m/Y', strtotime($subscription->date_end));
}

$model->monday = $subscription->monday;
$model->tuesday = $subscription->tuesday;
$model->wednesday = $subscription->wednesday;
$model->thursday = $subscription->thursday;
$model->friday = $subscription->friday;
$model->saturday = $subscription->saturday;
$model->sunday = $subscription->sunday;
$model->auto_payment = $subscription->auto_payment;
$model->week_frequency = $subscription->week_frequency;

// produits
$arrayProductsSubscription = ProductSubscription::searchAll([
'id_subscription' => $model->id
]);

foreach ($arrayProductsSubscription as $productSubscription) {
$model->products['product_' . $productSubscription->id_product] = $productSubscription->quantity;
}
// produits
$productsArray = Product::searchAll();

if ($model->load(Yii::$app->request->post()) && $model->validate()) {
if (!strlen($model->date_end)) {
$model->date_end = null;
}
if ($model->save()) {
Yii::$app->getSession()->setFlash('success', 'Abonnement modifié');

$subscription = Subscription::findOne($model->id);
$matchedDistributionsArray = $subscription->searchMatchedIncomingDistributions();
if (count($matchedDistributionsArray)) {
return $this->redirect(
[
'subscription/update-distributions',
'idSubscription' => $subscription->id,
'update' => true
]
);
} else {
throw new NotFoundHttpException('L\'abonnement est introuvable.', 404);
}

// produits
$productsArray = Product::searchAll();

if ($model->load(Yii::$app->request->post()) && $model->validate()) {
if (!strlen($model->date_end)) {
$model->date_end = null;
}
if ($model->save()) {
Yii::$app->getSession()->setFlash('success', 'Abonnement modifié');

$subscription = Subscription::findOne($model->id);
$matchedDistributionsArray = $subscription->searchMatchedIncomingDistributions();
if (count($matchedDistributionsArray)) {
return $this->redirect(['subscription/update-distributions', 'idSubscription' => $subscription->id, 'update' => true]);
} else {
return $this->redirect(['subscription/index']);
}
}
return $this->redirect(['subscription/index']);
}

return $this->render('update', [
'model' => $model,
'productsArray' => $productsArray
]);
}
}

/**
* Supprime un abonnement
*
* @param integer $id
*/
public function actionDelete($id)
{
$subscription = Subscription::searchOne([
'id' => $id
]);
ProductSubscription::deleteAll(['id_subscription' => $id]);
$subscription->deleteOrdersIncomingDistributions();
$subscription->delete();
Yii::$app->getSession()->setFlash('success', 'Abonnement supprimé');
return $this->redirect(['subscription/index']);
return $this->render('update', [
'model' => $model,
'productsArray' => $productsArray
]);
}

/**
* Supprime un abonnement
*
* @param integer $id
*/
public function actionDelete($id)
{
if(\Yii::$app->user->isGuest) {
$producer = $this->getProducer();
return $this->redirect(Yii::$app->urlManagerFrontend->createAbsoluteUrl(['site/producer','id' => $producer->id])) ;
}

public function actionAjaxInfos($idSubscription = 0)
{
\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
$params = [];

$user = User::getCurrent() ;
$userProducer = UserProducer::searchOne([
'id_user' => User::getCurrentId()
]) ;
$pointSale = false ;

if ($idSubscription > 0) {
$arrayProductsSubscription = ProductSubscription::searchAll([
'id_subscription' => $idSubscription
]);

$subscription = Subscription::findOne($idSubscription) ;

if($subscription) {
if($subscription->id_point_sale) {
$pointSale = PointSale::findOne($subscription->id_point_sale) ;
}
}
$subscription = Subscription::searchOne([
'id' => $id
]);
ProductSubscription::deleteAll(['id_subscription' => $id]);
$subscription->deleteOrdersIncomingDistributions();
$subscription->delete();
Yii::$app->getSession()->setFlash('success', 'Abonnement supprimé');
return $this->redirect(['subscription/index']);
}

public function actionAjaxInfos($idSubscription = 0)
{
\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
$params = [];

$user = User::getCurrent();
$userProducer = UserProducer::searchOne([
'id_user' => User::getCurrentId()
]);
$pointSale = false;

if ($idSubscription > 0) {
$arrayProductsSubscription = ProductSubscription::searchAll([
'id_subscription' => $idSubscription
]);

$subscription = Subscription::findOne($idSubscription);

if ($subscription) {
if ($subscription->id_point_sale) {
$pointSale = PointSale::findOne($subscription->id_point_sale);
}
}
}

// Produits
$productsArray = Product::searchAll();
$indexProduct = 0;
foreach ($productsArray as &$product) {

$quantity = 0;
$coefficientUnit = Product::$unitsArray[$product->unit]['coefficient'];
if (isset($arrayProductsSubscription) && count($arrayProductsSubscription)) {
foreach ($arrayProductsSubscription as $productSubscription) {
if ($product->id == $productSubscription->id_product) {
$coefficientUnit = Product::$unitsArray[$productSubscription->product->unit]['coefficient'];
$quantity = $productSubscription->quantity * $coefficientUnit;
}
}
}

$product = array_merge(
$product->getAttributes(),
[
'index' => $indexProduct++,
'quantity_form' => $quantity,
'coefficient_unit' => $coefficientUnit,
'wording_unit' => Product::strUnit($product->unit, 'wording_unit', true),
'wording_short' => Product::strUnit($product->unit, 'wording_short'),
'price_with_tax' => $product->getPriceWithTax([
'user' => $user,
'user_producer' => $userProducer,
'point_sale' => $pointSale
]),
]
);
// Produits
$productsArray = Product::searchAll();
$indexProduct = 0;
foreach ($productsArray as &$product) {
$quantity = 0;
$coefficientUnit = Product::$unitsArray[$product->unit]['coefficient'];
if (isset($arrayProductsSubscription) && count($arrayProductsSubscription)) {
foreach ($arrayProductsSubscription as $productSubscription) {
if ($product->id == $productSubscription->id_product) {
$coefficientUnit = Product::$unitsArray[$productSubscription->product->unit]['coefficient'];
$quantity = $productSubscription->quantity * $coefficientUnit;
}
}
}

$product = array_merge(
$product->getAttributes(),
[
'index' => $indexProduct++,
'quantity_form' => $quantity,
'coefficient_unit' => $coefficientUnit,
'wording_unit' => Product::strUnit($product->unit, 'wording_unit', true),
'wording_short' => Product::strUnit($product->unit, 'wording_short'),
'price_with_tax' => $product->getPriceWithTax([
'user' => $user,
'user_producer' => $userProducer,
'point_sale' => $pointSale
]),
]
);
}

$params['products'] = $productsArray;
$params['products'] = $productsArray;

$pointsSaleArray = PointSale::searchAll();
foreach ($pointsSaleArray as &$pointSale) {
$pointSale = array_merge($pointSale->getAttributes(), [
'userPointSale' => ($pointSale->userPointSale ? $pointSale->userPointSale[0] : '')
]);
if ($pointSale['code'] && strlen($pointSale['code'])) {
$pointSale['code'] = '***';
}
}

$params['points_sale'] = $pointsSaleArray;
$pointsSaleArray = PointSale::searchAll();
foreach ($pointsSaleArray as &$pointSale) {
$pointSale = array_merge($pointSale->getAttributes(), [
'userPointSale' => ($pointSale->userPointSale ? $pointSale->userPointSale[0] : '')
]);
if ($pointSale['code'] && strlen($pointSale['code'])) {
$pointSale['code'] = '***';
}
}

if ($idSubscription > 0) {
$subscription = Subscription::searchOne([
'id' => $idSubscription
]);
$params['points_sale'] = $pointsSaleArray;

if (!$subscription || $subscription->id_user != User::getCurrentId()) {
throw new UserException('Abonnement introuvable');
} else {
$params = array_merge($params, $subscription->getAttributes());
}
}
if ($idSubscription > 0) {
$subscription = Subscription::searchOne([
'id' => $idSubscription
]);

return $params;
if (!$subscription || $subscription->id_user != User::getCurrentId()) {
throw new UserException('Abonnement introuvable');
} else {
$params = array_merge($params, $subscription->getAttributes());
}
}

/**
* Vérifie le code saisi pour un point de vente.
*
* @param integer $idPointSale
* @param string $code
* @return boolean
*/
public function actionAjaxValidateCodePointSale($idPointSale, $code)
{
\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;

$pointSale = PointSale::findOne($idPointSale);
if ($pointSale) {
if ($pointSale->validateCode($code)) {
return 1;
}
}
return 0;
return $params;
}

/**
* Vérifie le code saisi pour un point de vente.
*
* @param integer $idPointSale
* @param string $code
* @return boolean
*/
public function actionAjaxValidateCodePointSale($idPointSale, $code)
{
\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;

$pointSale = PointSale::findOne($idPointSale);
if ($pointSale) {
if ($pointSale->validateCode($code)) {
return 1;
}
}
return 0;
}
}

Loading…
Cancel
Save