Я использовал следующие таблицы для управления полученными письмами и действиями, предпринятыми письмами учреждения
letter_branch
+-----------+-------------+
| branch_id | branch_name |
+-----------+-------------+
| 1 | Admin |
| 2 | Accounts |
| 3 | Engineering |
| 4 | Health |
+-----------+-------------+
letter_letter
+-----------+-------------+--------+----------------+
| letter_id | description | branch | current_status |
+-----------+-------------+--------+----------------+
| 1 | A | 1 | Pending |
| 2 | B | 4 | Pending |
| 3 | C | 2 | Start |
| 4 | D | 4 | Pending |
| 5 | E | 3 | Start |
| 6 | F | 2 | Finish |
+-----------+-------------+--------+----------------+
letter_action_taken
+------------------------+--------+---------------------+
| letter_action_taken_id | ref_no | action_taken_status |
+------------------------+--------+---------------------+
| 100 | 3 | 1 |
| 101 | 5 | 1 |
| 102 | 6 | 2 |
+------------------------+--------+---------------------+
02) Система, надлежащим образом выполняющая детали полученных писем, против предпринятых действий для каждого письма. (letter_action_taken.ref_no = letter_letter.letter_id)
03) Я использовал следующий метод в codeigniter для просмотра полученных писем и предпринятых действий с помощью «Datatables»
public function getactionTaken($id=null)
{
$this->load->library('datatables');
$this->datatables
->select("letter_letter.letter_id, letter_action.action_name as action, letter_action_taken.forward as forward,
letter_action_taken.a_date as action_date, letter_action_taken.file_no as file_no, letter_action_taken.action_taken_status")
->from('letter_action_taken')
->join('letter_letter','letter_letter.letter_id=letter_action_taken.ref_no')
->join('letter_action','letter_action.action_id=letter_action_taken.action','left')
->where("letter_action_taken.status=1 AND letter_action_taken.ref_no=$id" )
->unset_column("letter_letter.letter_id");
$this->datatables->add_column("Actions", $action, "letter_letter.letter_id");
$branch = $this->session->userdata('branch_id');
if ($branch && $branch !=5)
$this->datatables->where('letter_letter.branch', $branch);
$this->db->order_by('a_date', 'DESC');
echo $this->datatables->generate();
}
И использовал следующий HTML / JavaScript / Bootstrap
<style>
.group {
background: #575757 !important;
color: #FFFFFF;
}
.table > tbody > tr > th, .table > tbody > tr > td{
font-size: 13px;
}
</style>
<script type="text/javascript">
$(document).on('change', '#action', function () {
var val = $(this).val();
if(val == 1 || val == 6){
$('#ref-col').hide();
}
else{
$('#ref-col').show();
}
});
$(document).ready(function () {
$('#ref-col').hide();
$(document).ready(function () {
var oTable = $('#ExData').dataTable({
"aaSorting": [[0, "asc"]],
"aLengthMenu": [[10, 25, 50, 100, -1], [10, 25, 50, 100, "ALL"]],
"iDisplayLength": 10,
'bProcessing': true, 'bServerSide': true,
'sAjaxSource': '<?= base_url() . "Letter/getactionTaken" ?>',
'fnServerData': function (sSource, aoData, fnCallback) {
aoData.push({
"name": "type",
"value": "1 "
});
$.ajax({'dataType': 'json', 'type': 'POST', 'url': sSource, 'data': aoData, 'success': fnCallback});
},
'fnRowCallback': function (nRow, aData, iDisplayIndex) {
},
"aoColumns": [{'sName': 'action'}, {'sName': 'forward'}, {'sName': 'action_date'}, {'sName': 'file_no'},
{"class":"text-center","mRender":st}, null],
"fnFooterCallback": function (nRow, aaData, iStart, iEnd, aiDisplay) {
}
});
});
});
</script>
<div class="box box-info">
<div class="box box-info collapsed-box">
<div class="box-header with-border">
<h3 class="box-title">Adding of Actions</h3>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" style="font-size: 16px;" data-widget="collapse"><i
class="fa fa-plus"></i>
</button>
</div>
<!-- /.box-tools -->
</div>
<!-- /.box-header -->
<div class="box-body" style="display: block">
<form action="" method="post">
<div class="row">
<div class="col-md-3">
<div class="form-group"><label>Action</label><font
style="font-size: 14px; color: #AA0000">*</font>
<select name="action" id="action" class="form-control select2">
<option value="">Select Action</option>
<?php
if (!empty($act)) {
foreach ($act as $row) {
?>
<option value="<?= $row->action_id ?>"><?= $row->action_name ?></option>
<?php
}
}
?>
</select>
</div>
</div>
<div class="col-md-3" id="ref-col">
<div class="form-group"><label>Forwarded Committee / Officer / Report</label><font
style="font-size: 14px; color: #AA0000"></font>
<input type="text" name="forward" id="forward" class="form-control"
value="<?= set_value('forward') ?>">
</div>
</div>
<div class="col-md-3">
<div class="form-group"><label>Date of Action </label>
<input type="text" name="a_date" id="a_date" readonly
class="form-control datepicker">
</div>
</div>
<div class="col-md-3">
<div class="form-group" id="file_no"><label>File No</label>
<input type="text" name="file_no" id="file_no" class="number form-control" >
</div>
</div>
<div class="col-md-3">
<div class="form-group"><label>Action Taken Status</label><font
style="font-size: 14px; color: #AA0000">*</font>
<select class="form-control" name="action_taken_status">
<option value="">Select Action Taken Status</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
</div>
</div>
</div>
<!--table-->
<div class="row">
<div class="col-md-4">
<div class="form-group">
<input type="submit" value="Add Action" class="btn btn-primary btn-lg">
</div>
</div>
</div>
</form>
<!--end of table-->
</div>
</div>
<!-- /.box-body -->
<div class="box-body">
<div class="table-responsive">
<table id="ExData" cellpadding="0" cellspacing="0" border="0"
class="table table-bordered table-condensed table-hover table-striped reports-table">
<thead id="th">
<tr class="info">
<th>Action</th>
<th>Forwarded Committee / Officer / Report</th>
<th>Date of Action</th>
<th>File No</th>
<th>Action Status</th>
<th class="text-center">Action</th>
</tr>
</thead>
<tbody>
<tr>
<td colspan="7" class="dataTables_empty">Loading Data from Server</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<script src="https://cdn.datatables.net/1.10.13/js/jquery.dataTables.min.js"></script>
<script type="text/javascript">
function st(x) {
if(x == '1') {
return '<div class="text-center"><span class="label label-warning">' + 'Actions On-Going' + '</span></div>';
}else if(x == '2') {
return '<div class="text-center"><span class="label label-success">' + 'Actions Completed' + '</span></div>';
}else if(x == '3') {
return '<div class="text-center"><span class="label label-info">' + 'Not Relevant' + '</span></div>';
}else{
return '<div class="text-center"><span class="label label-danger">' + 'Actions Pending' + '</span></div>';
}
}
</script>
<script src="https://cdn.datatables.net/1.10.13/js/jquery.dataTables.min.js"></script>
<script src="//cdn.datatables.net/plug-ins/1.10.13/api/sum().js"></script>
04) Используя приведенный выше код, система показывает все действия, предпринятые для всех букв, которые смешаны вместе. Что-то идет не так.
Но мне нужно получить действия, предпринятые для писем отдельно.
Например: - Необходимо показать первую запись таблицы letter_action_taken, которые взяты для letter_id, 3
05) Не могу понять, что я делаю не так. Кто-нибудь может присутствовать на этом и помочь мне исправить эту ошибку?
Я думаю, что необходимо изменить следующую строку в методе.
-> где ("letter_action_taken.status = 1 AND letter_action_taken.ref_no = $ id")