From e199b278022b172b1d6c5f44e6c15e0ebc46323f Mon Sep 17 00:00:00 2001
From: "de@itstall.de" <de@itstall.de>
Date: Fri, 16 Feb 2018 17:25:35 +0100
Subject: [PATCH] started key management

---
 application/controllers/admin/Keys.php        |  66 ++++++++
 application/controllers/admin/Members.php     |   2 +
 application/helpers/data_helper.php           |   3 +-
 application/models/admin/Keys_model.php       |  31 ++++
 application/models/admin/Members_model.php    |   5 +-
 application/views/admin/include/sidebar.php   |  66 ++++----
 application/views/admin/keys/keys_add.php     | 142 ++++++++++++++++++
 application/views/admin/keys/keys_list.php    |  92 ++++++++++++
 .../views/admin/members/member_view.php       |  25 ++-
 9 files changed, 393 insertions(+), 39 deletions(-)
 create mode 100644 application/controllers/admin/Keys.php
 create mode 100644 application/models/admin/Keys_model.php
 create mode 100644 application/views/admin/keys/keys_add.php
 create mode 100644 application/views/admin/keys/keys_list.php

diff --git a/application/controllers/admin/Keys.php b/application/controllers/admin/Keys.php
new file mode 100644
index 0000000..2ed257c
--- /dev/null
+++ b/application/controllers/admin/Keys.php
@@ -0,0 +1,66 @@
+<?php
+defined('BASEPATH') OR exit('No direct script access allowed');
+
+class Keys extends MY_Controller {
+
+    public function __construct(){
+        parent::__construct();
+        $this->load->model('admin/keys_model', 'keys_model');
+    }
+    public function index(){
+        $data['all_keys'] = $this->keys_model->get_all_keys();
+        $data['title'] = 'Schlüssel Verwaltung';
+        $data['view'] = 'admin/keys/keys_list';
+        $this->load->view('admin/layout', $data);
+    }
+    public function add(){
+        if($this->input->post('submit')){
+            $this->form_validation->set_rules('group_name', 'Group', 'trim|min_length[3]|required');
+            if ($this->form_validation->run() == FALSE) {
+                $data['title'] = 'Add Group';
+                $data['view'] = 'admin/group/group_add';
+                $this->load->view('admin/layout', $data);
+            }
+            else{
+                $data = array(
+                    'group_name' => $this->input->post('group_name'),
+                );
+                $data = $this->security->xss_clean($data);
+                $result = $this->keys_model->add_group($data);
+                if($result){
+                    $this->session->set_flashdata('msg', 'Group is Added Successfully!');
+                    redirect(base_url('admin/group'));
+                }
+            }
+        }
+        else{
+            $data['title'] = 'Add Group';
+            $data['view'] = 'admin/group/group_add';
+            $this->load->view('admin/layout', $data);
+        }
+    }
+    public function edit($id=0){
+        if($this->input->post('submit')){
+            $data = array(
+                'group_name' => $this->input->post('group_name'),
+            );
+            $data = $this->security->xss_clean($data);
+            $result = $this->keys_model->edit_group($data, $id);
+            if($result){
+                $this->session->set_flashdata('msg', 'Group is Added Successfully!');
+                redirect(base_url('admin/group'));
+            }
+        }
+        else{
+            $data['title'] = 'Edit Group';
+            $data['view'] = 'admin/group/group_edit';
+            $this->load->view('admin/layout', $data);
+        }
+    }
+    public function del($id){
+        $this->db->delete('ci_user_groups', array('id' => $id));
+        $this->session->set_flashdata('msg', 'Record is Deleted Successfully!');
+        redirect(base_url('admin/group'));
+    }
+}
+?>
\ No newline at end of file
diff --git a/application/controllers/admin/Members.php b/application/controllers/admin/Members.php
index 97ec8b4..a5b7c77 100644
--- a/application/controllers/admin/Members.php
+++ b/application/controllers/admin/Members.php
@@ -22,9 +22,11 @@ class Members extends MY_Controller {
     }
 
     public function view($id) {
+        $this->load->model('admin/keys_model', 'keys_model');
         $data['user'] =  $this->members_model->get_user_by_id($id);
         $data['contact'] = $this->members_model->get_user_contacts_by_userid($id);
         $data['contact_types'] = $this->members_model->get_contact_types();
+        $data['club_keys'] = $this->keys_model->get_keys_by_userid($id);
         $data['title'] = 'View member';
         $data['view'] = 'admin/members/member_view';
         $this->load->view('admin/layout', $data);
diff --git a/application/helpers/data_helper.php b/application/helpers/data_helper.php
index d15a389..1111709 100644
--- a/application/helpers/data_helper.php
+++ b/application/helpers/data_helper.php
@@ -6,7 +6,8 @@
     	return $CI->db->get_where('ci_user_groups', array('id' => $id))->row_array()['group_name'];
     }
     function date_to_german($date) {
-        return date_format(date_create($date), 'd.m.Y');
+        if($date != '0000-00-00') { return date_format(date_create($date), 'd.m.Y'); }
+        else { return null; }
     }
     function date_to_default($date) {
         $temp_date = date_parse_from_format("d.m.Y", $date);
diff --git a/application/models/admin/Keys_model.php b/application/models/admin/Keys_model.php
new file mode 100644
index 0000000..66b0344
--- /dev/null
+++ b/application/models/admin/Keys_model.php
@@ -0,0 +1,31 @@
+<?php
+	class Keys_model extends CI_Model{
+
+		public function add_key($data){
+			$this->db->insert('club_keys', $data);
+			return true;
+		}
+
+		public function get_all_keys(){
+            $this->db->select('club_keys.*, members.firstname, members.lastname');
+            $this->db->from('club_keys');
+            $this->db->join('members', 'members.id=club_keys.member_id');
+            $query = $this->db->get();
+            return $result = $query->result_array();
+		}
+
+		public function edit_key($data, $id){
+			$this->db->where('id', $id);
+			$this->db->update('club_keys', $data);
+			return true;
+		}
+
+        public function get_keys_by_userid($id) {
+            $this->db->select('key_number');
+            $this->db->from('club_keys');
+            $this->db->where('member_id', $id);
+            $query = $this->db->get();
+            return $result = $query->result_array();
+        }
+	}
+?>
\ No newline at end of file
diff --git a/application/models/admin/Members_model.php b/application/models/admin/Members_model.php
index 21c5e19..491b532 100644
--- a/application/models/admin/Members_model.php
+++ b/application/models/admin/Members_model.php
@@ -6,9 +6,7 @@
 			$result = $query->row_array();
 			return $result['id'];
 		}
-		public function get_all_users(){
-			//$this->db->where('is_admin', 0);
-			//$query = $this->db->get('members');
+		public function get_all_users() {
             $this->db->select('members.*, member_types.member_type_name');
             $this->db->from('members');
             $this->db->join('member_types', 'member_types.id=members.member_type_id');
@@ -30,7 +28,6 @@
             $this->db->join('club_functions', 'club_functions.id=members.club_function_id');
             $this->db->join('member_types', 'member_types.id=members.member_type_id');
             $this->db->join('insurance_types', 'insurance_types.id=members.insurance_type_id');
-			//$this->db->join('contact AS co', 'co.member_id=members.id');
 			$query = $this->db->get();
 			return $result = $query->row_array();
 		}
diff --git a/application/views/admin/include/sidebar.php b/application/views/admin/include/sidebar.php
index a713a9d..afe927f 100644
--- a/application/views/admin/include/sidebar.php
+++ b/application/views/admin/include/sidebar.php
@@ -6,7 +6,7 @@ $cur_tab = $this->uri->segment(2)==''?'dashboard': $this->uri->segment(2);
 <aside class="main-sidebar">
 	<!-- sidebar: style can be found in sidebar.less -->
 	<section class="sidebar">
-	  <!-- search form -->
+	  <!-- search form
 	  <form action="#" method="get" class="sidebar-form">
 		<div class="input-group">
 		  <input type="text" name="q" class="form-control" placeholder="Suchen...">
@@ -15,35 +15,47 @@ $cur_tab = $this->uri->segment(2)==''?'dashboard': $this->uri->segment(2);
 				</button>
 			  </span>
 		</div>
-	  </form>
+	  </form>-->
 	  <!-- /.search form -->
 	  <!-- sidebar menu: : style can be found in sidebar.less -->
 	  <ul class="sidebar-menu">
-		<li id="users" class="treeview">
-			<a href="#">
-				<i class="fa fa-users"></i> <span>System Benutzer</span>
-				<span class="pull-right-container">
-					<i class="fa fa-angle-left pull-right"></i>
-				</span>
-			</a>
-			<ul class="treeview-menu">
-				<li id="add_user"><a href="<?= base_url('admin/users/add'); ?>"><i class="fa fa-circle-o"></i> Benutzer hinzufügen</a></li>
-				<li id="view_users" class=""><a href="<?= base_url('admin/users'); ?>"><i class="fa fa-circle-o"></i> Benutzer anzeigen</a></li>
-				<li id="user_group" class=""><a href="<?= base_url('admin/group'); ?>"><i class="fa fa-circle-o"></i> Benutzer Gruppen</a></li>
-			</ul>
-		</li>
-		<li id="members" class="treeview">
-			<a href="#">
-				<i class="fa fa-wheelchair"></i> <span>Mitglieder</span>
-				<span class="pull-right-container">
-					<i class="fa fa-angle-left pull-right"></i>
-				</span>
-			</a>
-			<ul class="treeview-menu">
-				<li id="add_user"><a href="<?= base_url('admin/members/add'); ?>"><i class="fa fa-circle-o"></i> Mitglied hinzufügen</a></li>
-				<li id="view_users" class=""><a href="<?= base_url('admin/members'); ?>"><i class="fa fa-circle-o"></i> Mitglieder anzeigen</a></li>
-			</ul>
-		</li>
+        <li id="users" class="treeview">
+            <a href="#">
+                <i class="fa fa-users"></i> <span>System Benutzer</span>
+                <span class="pull-right-container">
+                    <i class="fa fa-angle-left pull-right"></i>
+                </span>
+            </a>
+            <ul class="treeview-menu">
+                <li id="add_user"><a href="<?= base_url('admin/users/add'); ?>"><i class="fa fa-circle-o"></i> Benutzer hinzufügen</a></li>
+                <li id="view_users" class=""><a href="<?= base_url('admin/users'); ?>"><i class="fa fa-circle-o"></i> Benutzer anzeigen</a></li>
+                <li id="user_group" class=""><a href="<?= base_url('admin/group'); ?>"><i class="fa fa-circle-o"></i> Benutzer Gruppen</a></li>
+            </ul>
+        </li>
+        <li id="members" class="treeview">
+          <a href="#">
+              <i class="fa fa-wheelchair"></i> <span>Mitglieder</span>
+              <span class="pull-right-container">
+                <i class="fa fa-angle-left pull-right"></i>
+            </span>
+          </a>
+          <ul class="treeview-menu">
+              <li id="add_user"><a href="<?= base_url('admin/members/add'); ?>"><i class="fa fa-circle-o"></i> Mitglied hinzufügen</a></li>
+              <li id="view_users" class=""><a href="<?= base_url('admin/members'); ?>"><i class="fa fa-circle-o"></i> Mitglieder anzeigen</a></li>
+          </ul>
+        </li>
+        <li id="keys" class="treeview">
+          <a href="#">
+              <i class="fa fa-key"></i> <span>Schlüssel</span>
+              <span class="pull-right-container">
+                <i class="fa fa-angle-left pull-right"></i>
+            </span>
+          </a>
+          <ul class="treeview-menu">
+              <li id="add_key"><a href="<?= base_url('admin/keys/add'); ?>"><i class="fa fa-circle-o"></i> Schlüssel hinzufügen</a></li>
+              <li id="view_keys" class=""><a href="<?= base_url('admin/keys'); ?>"><i class="fa fa-circle-o"></i> Schlüssel anzeigen</a></li>
+          </ul>
+        </li>
 	</section>
 	<!-- /.sidebar -->
 </aside>
diff --git a/application/views/admin/keys/keys_add.php b/application/views/admin/keys/keys_add.php
new file mode 100644
index 0000000..3d8c313
--- /dev/null
+++ b/application/views/admin/keys/keys_add.php
@@ -0,0 +1,142 @@
+<script src="<?= base_url() ?>public/plugins/datepicker/bootstrap-datepicker.js"></script>
+<link rel="stylesheet" href="<?= base_url() ?>public/plugins/bootstrap-datepicker/css/datepicker.css">
+<script>
+    $('#datepicker').datepicker({})
+</script>
+
+<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;Mitglied hinzufügen</h4>
+        </div>
+      </div>
+    </div>
+  </div>
+  <div class="row">
+    <div class="col-md-12">
+      <div class="box border-top-solid">
+        <!-- /.box-header -->
+        <!-- form start -->
+        <div class="box-body my-form-body">
+            <?php echo form_open(base_url('admin/members/add'), 'class="form-horizontal"');  ?>
+              <div class="form-group">
+                <label for="firstname" class="col-sm-2 control-label">Vorname</label>
+
+                <div class="col-sm-9">
+                  <input type="text" name="firstname" class="form-control" id="firstname" placeholder="">
+                </div>
+              </div>
+
+              <div class="form-group">
+                <label for="lastname" class="col-sm-2 control-label">Nachname</label>
+
+                <div class="col-sm-9">
+                  <input type="text" name="lastname" class="form-control" id="lastname" placeholder="">
+                </div>
+              </div>
+
+              <div class="form-group">
+                <label for="street" class="col-sm-2 control-label">Straße</label>
+
+                <div class="col-sm-9">
+                  <input type="text" name="street" class="form-control" id="street" placeholder="">
+                </div>
+              </div>
+              <div class="form-group">
+                <label for="zip" class="col-sm-2 control-label">Postleitzahl</label>
+
+                <div class="col-sm-9">
+                  <input type="text" name="zip" class="form-control" id="zip" placeholder="">
+                </div>
+              </div>
+            <div class="form-group">
+                <label for="town" class="col-sm-2 control-label">Ort</label>
+
+                <div class="col-sm-9">
+                    <input type="text" name="town" class="form-control" id="town" placeholder="">
+                </div>
+            </div>
+            <div class="form-group">
+                <label for="birthday" class="col-sm-2 control-label">Geburtstag</label>
+
+                <div class="col-sm-9">
+                    <div class="input-group date">
+                        <div class="input-group-addon"><i class="fa fa-calendar"></i></div>
+                        <input type="text" class="form-control pull-right datepicker" id="datepicker" name="birthday" data-provide="datepicker" data-date-format="dd.mm.yyyy">
+                    </div>
+                </div>
+            </div>
+            <div class="form-group">
+                <label for="joined" class="col-sm-2 control-label">Eintritt</label>
+
+                <div class="col-sm-9">
+                    <div class="input-group date">
+                        <div class="input-group-addon"><i class="fa fa-calendar"></i></div>
+                        <input type="text" class="form-control pull-right datepicker" id="datepicker" name="joined" data-provide="datepicker" data-date-format="dd.mm.yyyy">
+                    </div>
+                </div>
+            </div>
+            <div class="form-group">
+                <label for="withdrawal" class="col-sm-2 control-label">Austritt</label>
+
+                <div class="col-sm-9">
+                    <div class="input-group date">
+                        <div class="input-group-addon"><i class="fa fa-calendar"></i></div>
+                        <input type="text" class="form-control pull-right datepicker" id="datepicker" name="withdrawal" data-provide="datepicker" data-date-format="dd.mm.yyyy">
+                    </div>
+                </div>
+            </div>
+            <div class="form-group">
+                <label for="insurance_type" class="col-sm-2 control-label">Versicherungs Typ</label>
+
+                <div class="col-sm-9">
+                    <select name="insurance_type_id" class="form-control">
+                        <?php foreach($insurance_types as $insurance_type): ?>
+                            <option value="<?= $insurance_type['id']; ?>"><?= $insurance_type['insurance_type_name']; ?></option>
+                        <?php endforeach; ?>
+                    </select>
+                </div>
+            </div>
+            <div class="form-group">
+                <label for="insurance_number" class="col-sm-2 control-label">Versicherungs Nummer</label>
+
+                <div class="col-sm-9">
+                    <input type="text" name="insurance_number" class="form-control" id="insurance_number" placeholder="">
+                </div>
+            </div>
+                <div class="form-group">
+                    <label for="role" class="col-sm-2 control-label">Amt im Verein</label>
+
+                    <div class="col-sm-9">
+                        <select name="club_function_id" class="form-control">
+                            <?php foreach($club_functions as $function): ?>
+                                <option value="<?= $function['id']; ?>"><?= $function['club_function_name']; ?></option>
+                            <?php endforeach; ?>
+                        </select>
+                    </div>
+                </div>
+                <div class="form-group">
+                    <label for="role" class="col-sm-2 control-label">Mitgliedschaft</label>
+
+                    <div class="col-sm-9">
+                        <select name="member_type_id" class="form-control">
+                            <?php foreach($member_types as $member_type): ?>
+                                <option value="<?= $member_type['id']; ?>"><?= $member_type['member_type_name']; ?></option>
+                            <?php endforeach; ?>
+                        </select>
+                    </div>
+                </div>
+              <div class="form-group">
+                <div class="col-md-11">
+                  <input type="submit" name="submit" value="Mitglied hinzufügen" class="btn btn-info pull-right">
+                </div>
+              </div>
+            <?php echo form_close( ); ?>
+          </div>
+          <!-- /.box-body -->
+      </div>
+    </div>
+  </div>
+</section>
\ No newline at end of file
diff --git a/application/views/admin/keys/keys_list.php b/application/views/admin/keys/keys_list.php
new file mode 100644
index 0000000..44e4fb1
--- /dev/null
+++ b/application/views/admin/keys/keys_list.php
@@ -0,0 +1,92 @@
+<link rel="stylesheet" href="<?= base_url() ?>public/plugins/datatables/dataTables.bootstrap.css">
+
+ <section class="content">
+  <div class="row">
+    <div class="col-md-12">
+      <div class="box box-body">
+        <div class="col-md-6">
+          <h4><i class="fa fa-wheelchair"></i> &nbsp;Mitglieder</h4>
+        </div>
+          <!--
+        <div class="col-md-6 text-right">
+          <div class="btn-group margin-bottom-20"> 
+            <a href="<?= base_url('admin/member/create_users_pdf'); ?>" class="btn btn-success">Export as PDF</a>
+            <a href="<?= base_url('admin/member/export_csv'); ?>" class="btn btn-success">Export as CSV</a>
+          </div>
+        </div>
+        -->
+      </div>
+    </div>
+  </div>
+   <div class="box border-top-solid">
+    <!-- /.box-header -->
+    <div class="box-body table-responsive">
+      <table id="example1" class="table table-bordered table-striped ">
+        <thead>
+        <tr>
+            <th>Nummer</th>
+            <th>Besitzer</th>
+            <th>Ausgabe Datum</th>
+            <th style="width: 100px;" class="text-right">Optionen</th>
+        </tr>
+        </thead>
+        <tbody>
+          <?php foreach($all_keys as $row): ?>
+          <tr>
+            <td><?= $row['key_number']; ?></td>
+            <td><?= $row['firstname'].' '.$row['lastname'];; ?></td>
+            <td><?= date_to_german($row['key_distribution']); ?></td>
+            <td class="text-right">
+				<a href="<?= base_url('admin/members/view/'.$row['member_id']); ?>" class="btn btn-danger btn-flat btn-xs"><i class="fa fa-edit"></i></a>
+			</td>
+		  </tr>
+          <?php endforeach; ?>
+        </tbody>
+       
+      </table>
+    </div>
+    <!-- /.box-body -->
+  </div>
+  <!-- /.box -->
+</section>  
+
+
+<!-- Modal -->
+<div id="confirm-delete" class="modal fade" role="dialog">
+  <div class="modal-dialog">
+    <!-- Modal content-->
+    <div class="modal-content">
+      <div class="modal-header">
+        <button type="button" class="close" data-dismiss="modal">&times;</button>
+        <h4 class="modal-title">Delete Dialog</h4>
+      </div>
+      <div class="modal-body">
+        <p>As you sure you want to delete.</p>
+      </div>
+      <div class="modal-footer">
+        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
+        <a class="btn btn-danger btn-ok">Yes</a>
+      </div>
+    </div>
+
+  </div>
+</div>
+
+
+<!-- DataTables -->
+<script src="<?= base_url() ?>public/plugins/datatables/jquery.dataTables.min.js"></script>
+<script src="<?= base_url() ?>public/plugins/datatables/dataTables.bootstrap.min.js"></script>
+<script>
+  $(function () {
+    $("#example1").DataTable();
+  });
+</script> 
+  <script type="text/javascript">
+      $('#confirm-delete').on('show.bs.modal', function(e) {
+      $(this).find('.btn-ok').attr('href', $(e.relatedTarget).data('href'));
+    });
+  </script>
+  
+<script>
+$("#view_users").addClass('active');
+</script>        
diff --git a/application/views/admin/members/member_view.php b/application/views/admin/members/member_view.php
index dab3cb3..2c06d64 100644
--- a/application/views/admin/members/member_view.php
+++ b/application/views/admin/members/member_view.php
@@ -70,16 +70,27 @@
                 <div class="box-body my-form-body">
                     <h3>Kontaktdaten <button type="button" class="btn btn-success btn-sm" data-toggle="modal" data-target="#contact_add">+</button></h3>
                     <?php foreach ($contact AS $condata) { ?>
-                    <div class="form-group">
-                        <div class="col-sm-4"><?= $condata['contact_type_name']; ?></div>
-                        <div class="col-sm-6">
-                            <button type="button" class="btn btn-info btn-sm" data-toggle="modal" data-target="#contact_edit" data-contactid="<?= $condata['id']?>" data-contactvalue="<?= $condata['value']?>" data-contact_type_id="<?= $condata['contact_type_id']?>"><i class="fa fa-edit"></i></button>
-                            <button type="button" class="btn btn-danger btn-sm" data-toggle="modal" data-target="#contact_delete" data-contactid="<?= $condata['id']?>"><i class="fa fa-trash"></i></button>
+                        <div class="form-group">
+                            <div class="col-sm-4"><?= $condata['contact_type_name']; ?></div>
+                            <div class="col-sm-6">
+                                <button type="button" class="btn btn-info btn-sm" data-toggle="modal" data-target="#contact_edit" data-contactid="<?= $condata['id']?>" data-contactvalue="<?= $condata['value']?>" data-contact_type_id="<?= $condata['contact_type_id']?>"><i class="fa fa-edit"></i></button>
+                                <button type="button" class="btn btn-danger btn-sm" data-toggle="modal" data-target="#contact_delete" data-contactid="<?= $condata['id']?>"><i class="fa fa-trash"></i></button>
                             <?= $condata['value']; ?></div>
-                    </div>
+                        </div>
                     <?php } ?>
                 </div>
-			</div>
+                <div class="box-body my-form-body">
+                    <h3>Schlüssel <button type="button" class="btn btn-success btn-sm" data-toggle="modal" data-target="#club_key_add">+</button></h3>
+                    <?php foreach ($club_keys AS $club_key) { ?>
+                        <div class="form-group">
+                            <div class="col-sm-4">Schlüsselnummer</div>
+                            <div class="col-sm-6">
+                                <?= $club_key['key_number']; ?> <button type="button" class="btn btn-danger btn-sm" data-toggle="modal" data-target="#key_delete" data-contactid="<?= $club_key['key_number']?>"><i class="fa fa-trash"></i></button>
+                            </div>
+                        </div>
+                    <?php } ?>
+                </div>
+            </div>
 		</div>
 	</div>  
 </section>
-- 
GitLab