From 1c04916118f4396e8aca6097e59807f11103695f Mon Sep 17 00:00:00 2001
From: "de@itstall.de" <de@itstall.de>
Date: Tue, 13 Mar 2018 03:27:04 +0100
Subject: [PATCH] Print guest pilot registration

---
 application/config/autoload.php               |   4 +-
 application/controllers/admin/Guests.php      |  47 ++++-
 application/language/german/german_lang.php   |   8 +-
 application/models/admin/Guests_model.php     |  22 ++
 .../guests/guests_registration_print.php      |  47 +++++
 .../guests/guests_registration_print_do.php   | 189 ++++++++++++++++++
 application/views/admin/include/sidebar.php   |   1 +
 7 files changed, 313 insertions(+), 5 deletions(-)
 create mode 100644 application/views/admin/guests/guests_registration_print.php
 create mode 100644 application/views/admin/guests/guests_registration_print_do.php

diff --git a/application/config/autoload.php b/application/config/autoload.php
index f43e706..d7038c3 100644
--- a/application/config/autoload.php
+++ b/application/config/autoload.php
@@ -89,7 +89,7 @@ $autoload['drivers'] = array();
 |
 |	$autoload['helper'] = array('url', 'file');
 */
-$autoload['helper'] = array('url', 'file', 'security', 'data');
+$autoload['helper'] = array('url', 'file', 'security', 'data', 'language');
 
 /*
 | -------------------------------------------------------------------
@@ -117,7 +117,7 @@ $autoload['config'] = array();
 | "codeigniter_lang.php" would be referenced as array('codeigniter');
 |
 */
-$autoload['language'] = array();
+$autoload['language'] = array('german');
 
 /*
 | -------------------------------------------------------------------
diff --git a/application/controllers/admin/Guests.php b/application/controllers/admin/Guests.php
index 1644b24..4adc5e6 100644
--- a/application/controllers/admin/Guests.php
+++ b/application/controllers/admin/Guests.php
@@ -131,12 +131,55 @@
 		    $this->guests_model->visit_add($event, $this->input->post('guests_id'));
             redirect(base_url('admin/guests/visit_add/'.$event));
         }
-        public function bookings()
-        {
+        public function bookings() {
             $data['guests'] = $this->guests_model->bookings_get();
             $data['title'] = 'Gast Voranmeldungen';
             $data['view'] = 'admin/guests/guests_bookings';
             $this->load->view('admin/layout', $data);
         }
+        public function registration_print() {
+            if($this->input->post('submit')) {
+                $count_array = array('id' => '', 'name' => '', 'span' => '', 'weight' => '', 'engine' => '', 'ccm' => '', 'ps' => '', 'channel' => '', 'frequency_band' => '', 'information' => '');
+                $booking = $this->guests_model->booking_get($this->input->post('guest_id'));
+                $data['models'] = $booking['models'];
+                $data['guest'] = $booking['guest'];
+                if($booking['model_count'] < 3) {
+                    $count = 3 - $booking['model_count'];
+                    for(;$count > 0; $count--) { $data['models'][] = $count_array; }
+                }
+                if($booking['model_count'] > 3) {
+                    $temp_count = $booking['model_count'] - 3;
+                    $count = (intval(ceil($temp_count/4)) * 4) + 3 - $booking['model_count'];
+                    for(;$count > 0; $count--) { $data['models'][] = $count_array; }
+                }
+                $data['title'] = $this->lang->line('guests_registration_print_title');
+                $data['view'] = 'admin/guests/guests_registration_print_do';
+                $this->load->view('admin/layout', $data);
+            }
+            else {
+                $data['guests'] = $this->guests_model->bookings_get();
+                $data['title'] = $this->lang->line('guests_registration_print_title');
+                $data['view'] = 'admin/guests/guests_registration_print';
+                $this->load->view('admin/layout', $data);
+            }
+        }
+        public function registration_print_do($guest_id) {
+            $count_array = array('id' => '', 'name' => '', 'span' => '', 'weight' => '', 'engine' => '', 'ccm' => '', 'ps' => '', 'channel' => '', 'frequency_band' => '', 'information' => '');
+            $booking = $this->guests_model->booking_get($guest_id);
+            $data['models'] = $booking['models'];
+            $data['guest'] = $booking['guest'];
+            if($booking['model_count'] < 3) {
+                $count = 3 - $booking['model_count'];
+                for(;$count > 0; $count--) { $data['models'][] = $count_array; }
+            }
+            if($booking['model_count'] > 3) {
+                $temp_count = $booking['model_count'] - 3;
+                $count = (intval(ceil($temp_count/4)) * 4) + 3 - $booking['model_count'];
+                for(;$count > 0; $count--) { $data['models'][] = $count_array; }
+            }
+            $data['model_id'] = 1;
+            $data['title'] = '';
+            $this->load->view('admin/guests/guests_registration_print_do', $data);
+        }
 	}
 ?>
\ No newline at end of file
diff --git a/application/language/german/german_lang.php b/application/language/german/german_lang.php
index aa8cc8d..d5a7350 100644
--- a/application/language/german/german_lang.php
+++ b/application/language/german/german_lang.php
@@ -4,4 +4,10 @@
  * User: Dennis Eisold
  * Date: 08.03.2018
  * Time: 23:09
- */
\ No newline at end of file
+ */
+
+$lang['guests_registration_print_title'] = 'Anmeldebogen drucken';
+$lang['save'] = "Speichern";
+$lang['print'] = "Drucken";
+$lang['continue'] = "Weiter";
+$lang['choose_guest'] = "Gast auswählen";
\ No newline at end of file
diff --git a/application/models/admin/Guests_model.php b/application/models/admin/Guests_model.php
index 04a7edd..d121860 100644
--- a/application/models/admin/Guests_model.php
+++ b/application/models/admin/Guests_model.php
@@ -68,5 +68,27 @@
             $query = $this->db->get();
             return $result = $query->result_array();
         }
+        public function booking_get($booking_id) {
+            $this->db->select('guests_register.*');
+            $this->db->from('guests_register');
+            $this->db->where('guests_register.id', $booking_id);
+            $query = $this->db->get();
+            $booking['guest'] = $query->row_array();
+            $booking['models'] = $this->booking_models_get($booking_id);
+            $booking['model_count'] = $this->booking_models_get_count($booking_id);
+            return $booking;
+        }
+        public function booking_models_get_count($booking_id) {
+            $this->db->from('guests_register_models');
+            $this->db->where('guests_register_models.guest_register_id', $booking_id);
+            return $this->db->count_all_results();
+        }
+        public function booking_models_get($booking_id) {
+            $this->db->select('guests_register_models.*');
+            $this->db->from('guests_register_models');
+            $this->db->where('guests_register_models.guest_register_id', $booking_id);
+            $query = $this->db->get();
+            return $result = $query->result_array();
+        }
 	}
 ?>
\ No newline at end of file
diff --git a/application/views/admin/guests/guests_registration_print.php b/application/views/admin/guests/guests_registration_print.php
new file mode 100644
index 0000000..4529f74
--- /dev/null
+++ b/application/views/admin/guests/guests_registration_print.php
@@ -0,0 +1,47 @@
+<?php
+/**
+ * Copyright by IT Stall (www.itstall.de) 2018
+ * User: Dennis Eisold
+ * Date: 12.03.2018
+ */
+?>
+<section class="content">
+    <div class="row">
+        <div class="col-md-12">
+            <div class="box box-body with-border">
+                <div class="col-md-6">
+                    <h4><i class="fa fa-plus"></i> &nbsp;<?=$title?></h4>
+                </div>
+            </div>
+        </div>
+    </div>
+    <div class="row">
+        <div class="col-md-12">
+            <div class="box border-top-solid">
+                <div class="box-body my-form-body">
+                    <?php echo form_open(base_url('admin/guests/registration_print/'), 'class="form-horizontal"' )?>
+                    <div class="form-group">
+                        <label for="guest_id" class="col-sm-3 control-label"><?=lang('choose_guest')?></label>
+                        <div class="col-sm-4">
+                            <select name="guest_id" class="form-control">
+                                <?php foreach($guests as $guest): ?>
+                                    <option value="<?= $guest['id']; ?>"><?= $guest['firstname'].' '.$guest['lastname']; ?></option>
+                                <?php endforeach; ?>
+                            </select>
+                        </div>
+                    </div>
+                    <div class="form-group">
+                        <div class="col-md-7">
+                            <input type="submit" name="submit" value="<?=lang('continue')?>" class="btn btn-success pull-right">
+                        </div>
+                    </div>
+                    <?php echo form_close( ); ?>
+                </div>
+            </div>
+        </div>
+    </div>
+</section>
+
+<script>
+    $("#guests_registration_print").addClass('active');
+</script>
\ No newline at end of file
diff --git a/application/views/admin/guests/guests_registration_print_do.php b/application/views/admin/guests/guests_registration_print_do.php
new file mode 100644
index 0000000..91882f2
--- /dev/null
+++ b/application/views/admin/guests/guests_registration_print_do.php
@@ -0,0 +1,189 @@
+<?php
+/**
+ * Copyright by IT Stall (www.itstall.de) 2018
+ * User: Dennis Eisold
+ * Date: 12.03.2018
+ */
+?>
+
+<div class="row">
+    <div class="col-md-5">
+        <input type="button" onclick="printDiv('registration')" value="<?=lang('print')?>" class="btn btn-danger pull-right"><br/>
+        <br/>
+        <br/>
+    </div>
+    <div class="col-md-12">
+        <div id="registration">
+            <style type="text/css">
+                body,div,table,thead,tbody,tfoot,tr,th,td,p { font-family:"Arial"; font-size:x-small }
+                .userdata { font-size: 10pt; }
+                .guest_id { font-size: 40px; font-weight: bolder; }
+                .frequenzy_type { font-size: 20pt; }
+                .bt { border-top: 1px solid #000000; }
+                .bl { border-left: 1px solid #000000; }
+                .bb { border-bottom: 1px solid #000000; }
+                .br { border-right: 1px solid #000000; }
+                .pl10 { padding-left: 10px; }
+                td { padding-left: 5px; }
+            </style>
+            <table cellspacing="0" border="0">
+                <colgroup width="53"></colgroup>
+                <colgroup width="79"></colgroup>
+                <colgroup width="50"></colgroup>
+                <colgroup width="79"></colgroup>
+                <colgroup width="150"></colgroup>
+                <colgroup width="106"></colgroup>
+                <colgroup span="2" width="79"></colgroup>
+                <tr>
+                    <td colspan="8" height="40" align="center" valign="middle" bgcolor="#D9D9D9" style="border-top: 2px solid #000000; border-bottom: 2px solid #000000; border-left: 2px solid #000000; border-right: 2px solid #000000;"><h3>Anmeldung zum Flugtag MFG Condor Schweinfurt 2018</h3></td>
+                </tr>
+                <tr>
+                    <td height="15" align="left" valign="bottom"><br></td>
+                    <td align="left" valign="bottom"><br></td>
+                    <td align="left" valign="bottom"><br></td>
+                    <td align="left" valign="bottom"><br></td>
+                    <td align="left" valign="bottom"><br></td>
+                    <td align="left" valign="bottom"><br></td>
+                    <td align="left" valign="bottom"><br></td>
+                    <td align="left" valign="bottom"><br></td>
+                </tr>
+                <tr>
+                    <td colspan="3" height="10" align="left" valign="top" class="bt bl">Vorname</td>
+                    <td colspan="3" align="left" valign="top" class="bt bl">Nachname</td>
+                    <td colspan="2" align="left" valign="top" class="bt bl br">Laufende Nummer</td>
+                </tr>
+                <tr></tr>
+                <tr>
+                    <td colspan="3" height="20" align="left" valign="center" class="bl userdata"><?=$guest['firstname']?></td>
+                    <td colspan="3" align="left" valign="center" class="bl userdata"><?=$guest['lastname']?></td>
+                    <td colspan="2" rowspan="18" align="center" valign="middle" class="bb bl br guest_id"><?=$guest['guests_id']?></td>
+                </tr>
+                <tr></tr>
+                <tr>
+                    <td colspan="3" height="10" align="left" valign="top" class="bt bl">Straße</td>
+                    <td colspan="3" align="left" valign="top" class="bt bl">Geburtsdatum</td>
+                </tr>
+                <tr></tr>
+                <tr>
+                    <td colspan="3" height="20" align="left" valign="center" class="bb bl userdata"><?=$guest['street']?></td>
+                    <td colspan="3" align="left" valign="center" class="bb bl userdata"><?=date_to_german($guest['birthday'])?></td>
+                </tr>
+                <tr></tr>
+                <tr>
+                    <td colspan="2" height="10" align="left" valign="top" class="bl">PLZ</td>
+                    <td colspan="4" align="left" valign="top" class="bl">Ort</td>
+                </tr>
+                <tr></tr>
+                <tr>
+                    <td colspan="2" height="20" align="left" valign="center" class="bb bl userdata"><?=$guest['zip']?></td>
+                    <td colspan="4" align="left" valign="center" class="bb bl userdata"><?=$guest['town']?></td>
+                </tr>
+                <tr></tr>
+                <tr>
+                    <td colspan="4" height="10" align="left" valign="top" class="bl">Email</td>
+                    <td colspan="2" align="left" valign="top" class="bl">Telefon</td>
+                </tr>
+                <tr></tr>
+                <tr>
+                    <td colspan="4" height="20" align="left" valign="center" class="bb bl userdata"><?=$guest['email']?></td>
+                    <td colspan="2" align="left" valign="center" class="bb bl userdata"><?=$guest['phone']?></td>
+                </tr>
+                <tr></tr>
+                <tr>
+                    <td colspan="3" height="10" align="left" valign="top" class="bl">Verein</td>
+                    <td colspan="3" align="left" valign="top" class="bl">Versicherungsnummer</td>
+                </tr>
+                <tr></tr>
+                <tr>
+                    <td colspan="3" height="20" align="left" valign="center" class="bb bl userdata"><?=$guest['club']?></td>
+                    <td colspan="3" align="left" valign="center" class="bb bl userdata"><?=$guest['insurance_number']?></td>
+                </tr>
+                <tr></tr>
+                <tr>
+                    <td colspan="5" height="60" align="left" valign="center" class="bb bl pl10">Mit meiner Unterschrift bestätige ich, dass ich die geltende Flugordnung eingesehen<br>habe, sich mein Fluggerät in einwandfreiem Zustand befindet, ich im Besitz einer<br>gültigen Modell-Haftpflichtversicherung bin und dass keine gesundheitlichen oder<br>sonstigen Gründe einer Teilnahme am Flugbetrieb entgegenstehen.</td>
+                    <td colspan="3" align="left" valign="top" class="bb bl br">Unterschrift</td>
+                </tr>
+                <tr></tr>
+                <tr></tr>
+                <tr>
+                    <td colspan="8" height="20" align="center" valign="middle" class="bb bl br">Mit der vorliegenden Anmeldung wird für die Dauer der Veranstaltung eine kostenlose Tagesmitgliedschaft erworben.</td>
+                </tr>
+            </table>
+            <?php foreach($models as $model) { ?>
+                <table cellspacing="0" border="0">
+                    <colgroup width="53"></colgroup>
+                    <colgroup width="79"></colgroup>
+                    <colgroup width="50"></colgroup>
+                    <colgroup width="79"></colgroup>
+                    <colgroup width="150"></colgroup>
+                    <colgroup width="106"></colgroup>
+                    <colgroup span="2" width="79"></colgroup>
+                    <tr>
+                        <td height="15" align="left" valign="bottom"><br></td>
+                        <td align="left" valign="bottom"><br></td>
+                        <td align="left" valign="bottom"><br></td>
+                        <td align="left" valign="bottom"><br></td>
+                        <td align="left" valign="bottom"><br></td>
+                        <td align="left" valign="bottom"><br></td>
+                        <td align="left" valign="bottom"><br></td>
+                        <td align="left" valign="bottom"><br></td>
+                    </tr>
+                    <tr>
+                        <td colspan="2" height="10" align="left" valign="top" class="bt bl" bgcolor="#D9D9D9">Modell <?=$model['id']?></td>
+                        <td colspan="4" align="left" valign="top" class="bt bl">Modellname</td>
+                        <td colspan="2" align="left" valign="top" class="bt bl br">Kanal</td>
+                    </tr>
+                    <tr></tr>
+                    <tr>
+                        <td colspan="2" height="20" align="left" valign="center" class="bl userdata" bgcolor="#D9D9D9"></td>
+                        <td colspan="4" align="left" valign="center" class="bl userdata"><?=$model['name']?></td>
+                        <td colspan="2" rowspan="10" align="center" valign="middle" class="bb bl br guest_id"><?=$model['channel']?></td>
+                    </tr>
+                    <tr></tr>
+                    <tr>
+                        <td colspan="3" height="10" align="left" valign="top" class="bt bl">Spannweite</td>
+                        <td colspan="3" align="left" valign="top" class="bt bl">Gewicht (max 25kg)</td>
+                    </tr>
+                    <tr></tr>
+                    <tr>
+                        <td colspan="3" height="20" align="left" valign="center" class="bb bl userdata"><?=$model['span']?></td>
+                        <td colspan="3" align="left" valign="center" class="bb bl userdata"><?=$model['weight']?></td>
+                    </tr>
+                    <tr></tr>
+                    <tr>
+                        <td colspan="3" height="10" align="left" valign="top" class="bl">Motortyp</td>
+                        <td colspan="1" align="left" valign="top" class="bl">ccm</td>
+                        <td colspan="2" align="left" valign="top" class="bl">kW (PS)</td>
+                    </tr>
+                    <tr></tr>
+                    <tr>
+                        <td colspan="3" height="20" align="left" valign="center" class="bb bl userdata"><?=$model['engine']?></td>
+                        <td colspan="1" align="left" valign="center" class="bb bl userdata"><?=$model['ccm']?></td>
+                        <td colspan="2" align="left" valign="center" class="bb bl userdata"><?=$model['ps']?></td>
+                    </tr>
+                    <tr></tr>
+                    <tr>
+                        <td colspan="6" height="10" align="left" valign="top" class="bl">Weitere Infos zum Modell / Original und zur Flugvorführung</td>
+                        <td colspan="2" align="left" valign="top" class="bl br">Frequenzband (MHz/GHz)</td>
+                    </tr>
+                    <tr></tr>
+                    <tr>
+                        <td colspan="6" height="90" align="left" valign="middle" class="bb bl userdata"><?=$model['information']?></td>
+                        <td colspan="2" align="center" valign="middle" class="bb bl br frequenzy_type"><?=$model['frequency_band']?></td>
+                    </tr>
+                </table>
+            <?php } ?>
+        </div>
+    </div>
+</div>
+
+<script type="text/javascript">
+    function printDiv(divName) {
+        var printContents = document.getElementById(divName).innerHTML;
+        var originalContents = document.body.innerHTML;
+        document.body.innerHTML = printContents;
+        window.print();
+        document.body.innerHTML = originalContents;
+    }
+    $("#guests_registration_print").addClass('active');
+</script>
\ No newline at end of file
diff --git a/application/views/admin/include/sidebar.php b/application/views/admin/include/sidebar.php
index d68da55..160f6af 100644
--- a/application/views/admin/include/sidebar.php
+++ b/application/views/admin/include/sidebar.php
@@ -55,6 +55,7 @@ $cur_tab = $this->uri->segment(2)==''?'dashboard': $this->uri->segment(2);
                   <li id="guests_add" class=""><a href="<?= base_url('admin/guests/add'); ?>"><i class="fa fa-plus"></i> Gast hinzufügen</a></li>
                   <li id="guests_list" class=""><a href="<?= base_url('admin/guests'); ?>"><i class="fa fa-address-book"></i> Gäste anzeigen</a></li>
                   <li id="guests_bookings" class=""><a href="<?= base_url('admin/guests/bookings'); ?>"><i class="fa fa-hand-pointer"></i> Voranmeldungen</a></li>
+                  <li id="guests_registration_print" class=""><a href="<?= base_url('admin/guests/registration_print'); ?>"><i class="fa fa-print"></i> Anmeldung drucken</a></li>
                   <li id="guests_visit_add" class=""><a href="<?= base_url('admin/guests/visit_add'); ?>"><i class="fa fa-user-plus"></i> Besuch erfassen</a></li>
               </ul>
           </li>
-- 
GitLab