Check your existing record that you want to use. Design a database table for that and use Gii to create model, search model, views and controllers. Arrange data, add columns and import to database. Make sure it has a column from user table (foreign key) such as user_id.
Create a php view file where you will combine html and add parameters in php.
<?php $this->beginBody() ?> <title>Mailing Fee Bill</title> </head> <body> <?php $totalamount = 0; foreach ($stu as $amt){ $totalamount += $amt['total']; } ?> Dear <?php echo $stu[0]->studentFirstName.' '.$stu[0]->studentLastName.' :'; ?><br/><br/> Our records indicate that payment in your account is overdue in the amount of <b> PHP <?= $totalamount?> </b>. If the amount has already been paid, please disregard this notice. <br/><br/><br/> <?php echo '<table style="padding: 10px;text-align: left; border: 1px solid black;">'; ?> <?php foreach ($stu as $student){ echo '<tr style="border-bottom: 5px solid black;"><td><h4> School Year: '.$student->acadYear.' - '.$student->semester.'</h4><td></tr>'; echo '<tr> <td style="padding: 10px;text-align: left;">Date</td> <td style="padding: 10px;text-align: left;">Type of Exam</td> <td style="padding: 10px;text-align: left;">Inbound</td> <td style="padding: 15px;text-align: left;">Outbound</td> <td style="padding: 15px;text-align: left;">Total</td> </tr>'; echo '<tr> <td style="padding: 10px;text-align: left;">'.$student->date.'</td>'; echo '<td style="padding: 10px;text-align: left;">'.$student->examType.'</td>'; echo '<td style="padding: 10px;text-align: left;">'.$student->inbound.'</td>'; echo '<td style="padding: 10px;text-align: left;">'.$student->outbound.'</td>'; echo '</tr> <tr> <td style="padding: 10px;text-align: left;">'.$student->dateFinal.'</td>'; echo '<td style="padding: 10px;text-align: left;">Final Exam</td> <td style="padding: 10px;text-align: left;">'.$student->inboundFinal.'</td>'; echo '<td style="padding: 10px;text-align: left;">'.$student->outboundFinal.'</td>'; echo '<td style="padding: 10px;text-align: left;">'.$student->total.'</td>'; echo '</tr> <tr></tr> <tr> <td style="padding: 10px;text-align: left;"></td> <td style="padding: 10px;text-align: left;"></td> <td style="padding: 10px;text-align: left;"></td> <td style="padding: 10px;text-align: left;"></td>'; echo '</tr>'; ;} echo '</table>'; echo '<br/><br/><h2> TOTAL AMOUNT: PHP '.$totalamount.'</h2> <br/>If there is a problem regarding the enclosed bill, please contact us. You may send us an email at osa.system.2018@gmail.com. <br/> <br/>Thank you very much!<br/><br/><br/>'; ?>
<?php $this->endBody() ?> </body> </html> <?php $this->endPage() ?>
Add a send function to the controller. Call the models and use find for specifying conditions. Call Yii mailer and pass the view php path and model you searched.
public function actionSend($id){ $stu = Mailingfeerecord::find() ->where(['studentuser_user_id'=>$id, 'status'=>'unpaid']) ->all(); $students= User::findOne($id); Yii::$app->mailer ->compose(['html' => '@app/views/mail/mailingfee-bill'], ['stu'=>$stu]) ->setFrom('osa.system.2018@gmail.com') ->setTo($students->email) ->setSubject('Mailing Fee Bill from OSA System') ->send(); return $this->goHome(); }
Add this as action column to your $gridcolumn. For now, use a download glyphicon for the send email icon.
[ 'class' => 'kartik\grid\ActionColumn', 'template' => '{send} {view} {update} {delete}', 'buttons' => [ 'send' => function ($url, $model) { return Html::a( '<span class="glyphicon glyphicon-arrow-down"></span>', ['mailingfeerecord/send', 'id' => $model->studentuser_user_id], [ 'title' => 'Send bill as email', 'data-pjax' => '0', 'data-confirm' => 'Are you sure you want to send bill to this user?', ]); }, ], ],
Here’s a preview of the interface.
Here’s a screenshot of the email sent to user.
0 Comments