diff --git a/changelog.txt b/changelog.txt index a7a8848..64627c6 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,5 @@ +-0.0.71 + - add automatic warn email sending about ticket expiration -0.0.70 - add make ticket transfer unpaid - add ticket in cart is inactive diff --git a/common/components/WarnMailModel.php b/common/components/WarnMailModel.php new file mode 100644 index 0000000..419cb14 --- /dev/null +++ b/common/components/WarnMailModel.php @@ -0,0 +1,17 @@ + 'rocho02@gmail.com', 'infoEmail' => 'info@rocho-net.hu', 'user.passwordResetTokenExpire' => 3600, - 'version' => 'v0.0.70', + 'version' => 'v0.0.71', 'company' => 'movar',//gyor 'company_name' => "Freimann Kft.", 'product_visiblity' => 'account',// on reception which products to display. account or global @@ -41,6 +41,11 @@ return [ * Bérlet eladásnál módosítható e az ár * */ 'ticket_create_price_editable' => true, - + 'warn_ticket_expire_enabled' => false, + 'warn_ticket_expire_days' =>[ + [ + 'day' => 5, + ] + ], ]; diff --git a/common/mail/warn_expire.php b/common/mail/warn_expire.php new file mode 100644 index 0000000..a76922b --- /dev/null +++ b/common/mail/warn_expire.php @@ -0,0 +1,27 @@ +

Kedves customerName?>!

+

+ Az alábbi bérleted day?> nap múlva lejár: +

+ +

+Ha ismét egy ilyen bérletet szeretnél vásárolni, akkor legközelebb ne felejts el magaddal vinni ticketTypePriceBrutto?> Ft-ot amikor edzésre mész! +

+

+Üdvözlettel: +

+

+company ?> +

+

+Tájékoztatunk, hogy ezen levél a tagsági kártyádat +kezelő company ?> nyivlántartó rendszerének értesítő üzenete, +így nem minősül hírlevélnek, e-mail címedet a company ?> nyilvántartó rendszerének +adatbázisából a company ?> engedélyével értük el. +A megadott adatadat az adatvédelmi törvénynek (1992. évi LXIII. törvény) és a reklámtörvénynek (2008. évi XLVIII. törvény) megfelelően kezeljük. +

+ \ No newline at end of file diff --git a/common/models/Customer.php b/common/models/Customer.php index c029d65..92716ac 100644 --- a/common/models/Customer.php +++ b/common/models/Customer.php @@ -39,7 +39,9 @@ class Customer extends BaseFitnessActiveRecord const SEX_UNKNOWN = 0; const SEX_MAN = 10; const SEX_WOMAN = 20; + + public static $ENABLED = 1; public $photo_data; diff --git a/console/controllers/TicketController.php b/console/controllers/TicketController.php index 21e4dac..2cb3b7d 100644 --- a/console/controllers/TicketController.php +++ b/console/controllers/TicketController.php @@ -1,21 +1,100 @@ db; - $command = $connection->createCommand( Ticket::$SQL_UPDATE ); - $result = $command->execute(); - \Yii::info("Tickets updated: " . $result ); - echo "Tickets updated: " . $result ; + $command = $connection->createCommand ( Ticket::$SQL_UPDATE ); + $result = $command->execute (); + \Yii::info ( "Tickets updated: " . $result ); + echo "Tickets updated: " . $result; + } + + /** + * Automatikus email figyelmeztetés küldése vendégeknek, akiknek a beállított nap(ok) múlva + * lejár a bérlete + ;* + */ + public function actionWarnExpire() { + \Yii::info ( "Bérlet lejár figyelmeztetés küldése" ); + $warnEnabled = \Yii::$app->params ['warn_ticket_expire_enabled']; + $warnDays = \Yii::$app->params ['warn_ticket_expire_days']; + + if (! $warnEnabled) { + \Yii::info ( "Bérlet lejár figyelmeztetés küldése kikapcsolva" ); + return; + } + + if (! isset ( $warnDays ) || count ( $warnDays ) == 0) { + \Yii::info ( "Bérlet lejár figyelmeztetés küldése: nincsenek napok beállítva" ); + return; + } + + foreach ( $warnDays as $warnDayConfig ) { + $dayCount = $warnDayConfig ['day']; + + $query = new Query (); + $query->distinct ( true ); + $query->select ( [ + 'customer.email as customer_email', + 'customer.name as customer_name', + 'ticket_type.name as ticket_type_name', + 'ticket_type.price_brutto as ticket_type_price_brutto' + ] + ); + $query->from ( 'customer' ); + $query->innerJoin ( "ticket", "customer.id_customer_card = ticket.id_card " ); + $query->innerJoin ( "ticket_type", "ticket.id_ticket_type = ticket_type.id_ticket_type " ); + $query->andWhere ( [ + 'ticket.status' => Ticket::STATUS_ACTIVE , + 'customer.warn_mail_ticket_expire_enabled' => Customer::$ENABLED + ] ); + $query->andWhere ( [ + 'ticket.end' => new Expression ( 'DATE_ADD(CURDATE(),INTERVAL ' . $dayCount . ' DAY)' ) + ] ); + + $recepients = $query->all (); + + \Yii::info ( "Bérlet lejár figyelmeztetés küldése: " . $dayCount . " nap múlva " + . count ( $recepients ) . " vendég bérlete jár le." + ); + + + foreach ( $recepients as $recepient ) { + + $recepientEmail = $recepient['customer_email']; + + $model = new WarnMailModel( + [ + 'day' => $dayCount, + 'company' => Helper::getCompanyName(), + 'ticketTypeName' => $recepient['ticket_type_name'], + 'ticketTypePriceBrutto' => $recepient['ticket_type_price_brutto'], + 'customerName' => $recepient['customer_name'] + ] + ); + + $message = \Yii::$app->mailer->compose ( 'warn_expire', [ + 'model' => $model, + ] ); + + $message + ->setFrom ( "noreply@fitnessadmin.hu" ) + ->setTo ( $recepientEmail ) + ->setSubject ( "Értesítés - " . Helper::getCompanyName()." - Bérleted ".$dayCount." nap múlva lejár" ) + ->send (); + } + } } - } \ No newline at end of file diff --git a/console/migrations/m160511_062308_alter__table__customer__add__column__warn_mail_ticket_expire_enabled.php b/console/migrations/m160511_062308_alter__table__customer__add__column__warn_mail_ticket_expire_enabled.php new file mode 100644 index 0000000..eb8d919 --- /dev/null +++ b/console/migrations/m160511_062308_alter__table__customer__add__column__warn_mail_ticket_expire_enabled.php @@ -0,0 +1,30 @@ +addColumn("customer", "warn_mail_ticket_expire_enabled", "int default 1"); + } + + public function down() + { + echo "m160511_062308_alter__table__customer__add__column__warn_mail_ticket_expire_enabled cannot be reverted.\n"; + + return false; + } + + /* + // Use safeUp/safeDown to run migration code within a transaction + public function safeUp() + { + } + + public function safeDown() + { + } + */ +} diff --git a/frontend/controllers/CustomerController.php b/frontend/controllers/CustomerController.php index 5388d3b..b22054d 100644 --- a/frontend/controllers/CustomerController.php +++ b/frontend/controllers/CustomerController.php @@ -113,7 +113,7 @@ class CustomerController extends Controller $model->country = "Magyarország"; $model->id_user = Yii::$app->user->id; - + $model->warn_mail_ticket_expire_enabled = 1; $receptionForm = new ReceptionForm(); $receptionForm->number = $number; diff --git a/frontend/models/CustomerCreate.php b/frontend/models/CustomerCreate.php index 958f714..7447fc0 100644 --- a/frontend/models/CustomerCreate.php +++ b/frontend/models/CustomerCreate.php @@ -32,6 +32,7 @@ use common\components\Helper; * @property string $created_at * @property string $updated_at * @property string $cardNumber + * @property integer $warn_mail_ticket_expire_enabled */ class CustomerCreate extends \common\models\Customer { @@ -108,7 +109,7 @@ class CustomerCreate extends \common\models\Customer [['photo_data'] ,'safe'], [['birth_place'] ,'safe'], [['mother_name'] ,'safe'], - + [['warn_mail_ticket_expire_enabled'],'integer'] // [['email','phone'], 'validateEmailOrPhoneRequired' ], ]; } diff --git a/frontend/models/CustomerUpdate.php b/frontend/models/CustomerUpdate.php index 32d6418..35e821e 100644 --- a/frontend/models/CustomerUpdate.php +++ b/frontend/models/CustomerUpdate.php @@ -118,6 +118,7 @@ class CustomerUpdate extends \common\models\Customer [['photo_data'] ,'safe'], [['birth_place'] ,'safe'], [['mother_name'] ,'safe'], + [['warn_mail_ticket_expire_enabled'],'integer'] ]; } diff --git a/frontend/views/customer/_form_create.php b/frontend/views/customer/_form_create.php index c00a7e2..5d5f2b8 100644 --- a/frontend/views/customer/_form_create.php +++ b/frontend/views/customer/_form_create.php @@ -142,8 +142,12 @@ use kartik\widgets\DatePicker; - field($model, 'address')->textInput(['maxlength' => true]) ?> +
+
+ field($model, 'warn_mail_ticket_expire_enabled')->checkbox([ 'label'=> "Kér értesítést bérlet lejáratáról"]) ?> +
+
isNewRecord ? Yii::t('common/customer', 'Create') : Yii::t('common/customer', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> diff --git a/frontend/views/customer/_form_update.php b/frontend/views/customer/_form_update.php index 26612df..114a2ea 100644 --- a/frontend/views/customer/_form_update.php +++ b/frontend/views/customer/_form_update.php @@ -133,11 +133,18 @@ use yii\base\Widget;
- + field($model, 'address')->textInput(['maxlength' => true]) ?> +
+
+ field($model, 'warn_mail_ticket_expire_enabled')->checkbox([ 'label'=> "Kér értesítést bérlet lejáratáról"]) ?> +
+
+ +
isNewRecord ? Yii::t('common/customer', 'Create') : Yii::t('common/customer', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>