| Server IP : 172.67.216.113 / Your IP : 104.23.243.32 [ Web Server : Apache System : Linux cpanel01wh.bkk1.cloud.z.com 2.6.32-954.3.5.lve1.4.59.el6.x86_64 #1 SMP Thu Dec 6 05:11:00 EST 2018 x86_64 User : cp648411 ( 1354) PHP Version : 7.2.34 Disable Function : NONE Domains : 0 Domains MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home2/cp648411/public_html/ilawasia.onnud20.com/TimeSheet/ |
Upload File : |
<?php $path = '../'; ?>
<?php $page="Timesheet"; ?>
<?php $page_title="Timesheet"; ?>
<?php include("../include/class.php"); ?>
<?php require_once("../class/timesheetClass.php"); ?>
<?php $timesheet_db = new timesheetClass; ?>
<?php include($path."include/head.php"); ?>
<body id="page-top">
<!-- Page Wrapper -->
<div id="wrapper">
<!-- Sidebar -->
<?php include($path."themes/menu-left.php"); ?>
<!-- End of Sidebar -->
<!-- Content Wrapper -->
<div id="content-wrapper" class="d-flex flex-column">
<!-- Topbar -->
<?php include($path."themes/menu-top.php"); ?>
<!-- End of Topbar -->
<!-- Begin Page Content -->
<div class="container-fluid main-content">
<input type="hidden" id="page-menu-id" name="" value="#menu_case" />
<div class="d-sm-flex align-items-center justify-content-between mb-4">
<h1 class="h3 mb-0 text-gray-800">Case > Time Sheet</h1>
</div>
<input type="hidden" id="year" value="<?php echo @$_GET['Year']; ?>">
<input type="hidden" id="month" value="<?php echo @$_GET['Month']; ?>">
<form action="index.php" method="get" class="mb-3">
<div class="row">
<div class="col-md-1">
Year:
</div>
<?php
$year_fix = date("Y");
$year = date("Y");
$month = date("m");
if(@$_GET['Year']!=''){$year=@$_GET['Year'];}
if(@$_GET['Month']!=''){$month=@$_GET['Month'];}
//$sql_y = array('table'=>'ct_timesheet',"count"=> "DISTINCT YEAR(`TaskDate`) AS yy");
$sql_y = array('table'=>'ct_timesheet',"count"=> "MIN(YEAR(`TaskDate`)) AS yy");
$view_y = $view_db->view($sql_y);
//$request_y = $view_db->q_re($view_y);
$row_y = $view_db->q($view_y);
$cy = $year_fix - $row_y['yy'];
?>
<div class="col-md-2">
<select class="form-control" name="Year">
<?php for ($i=$row_y['yy']; $i <= $row_y['yy'] + $cy; $i++) { ?>
<option value="<?php echo $i; ?>" <?php echo ($year==$i)?"selected" : ""; ?>><?php echo $i; ?></option>
<?php } ?>
<option value="<?php echo $year_fix+1; ?>" <?php echo ($year_fix+1==$year)?"selected" : ""; ?> ><?php echo $year_fix+1; ?></option>
</select>
</div>
<div class="col-md-1">
Month:
</div>
<div class="col-md-2">
<select class="form-control" name="Month">
<?php for($i = 1; $i<=12;$i++){ // @for (int i = (DateTime.Now.Year - 1); i <= (DateTime.Now.Year + 1); i++){ ?>
<option value="<?php echo $i; ?>" <?php echo ($month==$i)?"selected" : ""; ?>>
<?php echo $util_class->m_th_re($i); ?>
</option>
<?php } ?>
</select>
</div>
<div class="col-md-2">
<button class="btn btn-success"><i class="fa fa-search"></i> Search</button>
</div>
</div>
</form>
<?php
echo "<pre>";
print_r($_SESSION);
echo "</pre>";
$data = $timesheet_db->Index($_SESSION['UserInfo'][0]['UserId'],$year,$month);
$datas = $timesheet_db->Index2($_SESSION['UserInfo'][0]['UserId'],$year,$month);
echo "<pre>";
print_r($datas);
echo "</pre>";
if(count($data)>0){
foreach ($data as $key => $value) {
$TaskDescription = $value['TaskDescription'];
$TaskDescription = str_replace("'", "’", $TaskDescription);
$TaskDescription = str_replace('"', "“", $TaskDescription);
$CustomerName = $value['CustomerName'];
$CustomerName = str_replace("'", "’", $CustomerName);
$CustomerName = str_replace('"', "“", $CustomerName);
if($key<count($data)){
$data_new[$key]['TimeSheetId'] = $value['TimeSheetId'];
$data_new[$key]['TaskDate'] = $value['TaskDate'];
$data_new[$key]['TaskDescription'] = trim($TaskDescription);
$data_new[$key]['Duration'] = $value['Duration'];
$data_new[$key]['CaseId'] = $value['CaseId'];
$data_new[$key]['CaseTimeSheetId'] = $value['CaseTimeSheetId'];
$data_new[$key]['CaseNumber'] = $value['CaseNumber'];
$data_new[$key]['CustomerCode'] = $value['CustomerCode'];
$data_new[$key]['CustomerName'] = trim($CustomerName);
}
}
}else{
$data_new = $data;
}
$data_new = json_encode($data_new, JSON_UNESCAPED_UNICODE);
?>
<div id="jsGrid"></div>
<link href="<?php echo $path; ?>Assets/Backend/vendor/bootstrap-datepicker/css/bootstrap-datepicker.min.css" rel="stylesheet" />
<script src="<?php echo $path; ?>Assets/Backend/vendor/bootstrap-datepicker/js/bootstrap-datepicker.min.js"></script>
<script src="<?php echo $path; ?>Assets/Backend/vendor/moment.js"></script>
<link href="<?php echo $path; ?>Assets/Backend/vendor/jsgrid/jsgrid.min.css" rel="stylesheet" />
<link href="<?php echo $path; ?>Assets/Backend/vendor/jsgrid/jsgrid-theme.min.css" rel="stylesheet" />
<script src="<?php echo $path; ?>Assets/Backend/vendor/jsgrid/jsgrid.min.js"></script>
<link href="<?php echo $path; ?>Assets/Backend/vendor/jquery-ui/jquery-ui.min.css" rel="stylesheet" />
<script src="<?php echo $path; ?>Assets/Backend/vendor/jquery-ui/jquery-ui.min.js"></script>
<script>
$(document).ready(function ($) {
var tsList = '<?php echo $data_new; ?>';
tsList = JSON.parse(tsList);
//tsList.forEach((element, index) => {
//var date2 = new Date(parseInt(element.TaskDate.replace("/Date(", "").replace(")/", ""), 10));
//var date = element.TaskDate.split(' ');
//date = date[0].split('-');
//date = formatDate(new Date(date[0], date[1]-1, date[2]));
//element.TaskDate = date;
//element.TaskDate2 = element.TaskDate;
//element.TaskDate = moment(date)._i;
//console.log(element);
//});
var count = tsList.length + 20;
for (var i = (tsList.length + 1); i <= count; i++) {
tsList.push({
"TimeSheetId": null,
"TaskDate": null,
"TaskDescription": "",
"Duration": null,
"CaseNumber": "",
"CustomerCode":""
});
}
var urlCreate = "Create.php";//"@Url.Action("Create")";
var urlUpdate = "Update.php"//"@Url.Action("Update")";
var urlDelete = "Delete.php";//"@Url.Action("Delete")";
var urlLoadCaseNumber = "LoadCaseAutoComplete.php"//"@Url.Action("LoadCaseAutoComplete", "CaseList")";
var urlLoadCustomer = "LoadCustomerAutoComplete.php"//"@Url.Action("LoadCustomerAutoComplete","Customer")";
function formatDate(date) {
return [
padTo2Digits(date.getDate()),
padTo2Digits(date.getMonth() + 1),
date.getFullYear(),
].join('/');
}
function padTo2Digits(num) {
return num.toString().padStart(2, '0');
}
var dateField = function (config) {
jsGrid.Field.call(this, config);
};
dateField.prototype = new jsGrid.Field({
sorter: function (date1, date2) {
return new Date(date1) - new Date(date2);
},
itemTemplate: function (value) {
if (value != null) {
return moment(value).format('DD/MM/YYYY');
} else {
return '';
}
},
insertTemplate: function (value) {
return this._insertPicker = $("<input>").datepicker({
format: 'dd/mm/yyyy',
todayHighlight: true
});
},
editTemplate: function (value) {
if (value != null) {
return this._editPicker = $("<input>").datepicker({
format: 'dd/mm/yyyy',
todayHighlight: true
}).datepicker("setDate", moment(value).format('DD/MM/YYYY'));
//.datepicker("setDate", value);
} else {
return this._editPicker = $("<input>").datepicker({
format: 'dd/mm/yyyy',
todayHighlight: true
});
}
},
insertValue: function () {
return moment(this._insertPicker.datepicker("getDate")).format('DD/MM/YYYY');
},
editValue: function () {
return moment(this._editPicker.datepicker("getDate")).format('DD/MM/YYYY');
}
});
function DecimalField(config) {
jsGrid.fields.number.call(this, config);
}
DecimalField.prototype = new jsGrid.fields.number({
filterValue: function () {
return this.filterControl.val()
? parseFloat(this.filterControl.val() || 0, 10)
: undefined;
},
insertValue: function () {
return this.insertControl.val()
? parseFloat(this.insertControl.val() || 0, 10)
: undefined;
},
editValue: function () {
return this.editControl.val()
? parseFloat(this.editControl.val() || 0, 10)
: undefined;
}
});
jsGrid.fields.decimal = jsGrid.DecimalField = DecimalField;
jsGrid.fields.dateField = dateField;
var caseNumberField = function (config) {
jsGrid.Field.call(this, config);
};
caseNumberField.prototype = new jsGrid.Field({
itemTemplate: function (value) {
return value ;
},
insertTemplate: function (value) {
return this._insertAuto = $("<input>").autocomplete({
source: function (request, response) {
$.getJSON(urlLoadCaseNumber, {
Keyword: value
}, response);
}
});
},
editTemplate: function (value) {
var input = $("<input>");
var autocomp = input.autocomplete({
source: function (request, response) {
$.getJSON(urlLoadCaseNumber, {
Keyword: input.val()
}, response);
},
select: function (event, ui) {
input.val(ui.item.CaseNumber);
return false;
}
}).val(value);
autocomp.autocomplete("instance")._renderItem = function (ul, item) {
return $("<li>").append(item.CaseNumber).appendTo(ul);
};
return this._editAuto = autocomp;
},
insertValue: function () {
return this._insertAuto.val();
},
editValue: function () {
return this._editAuto.val();
}
});
jsGrid.fields.caseNumberField = caseNumberField;
var selectedCustomerCode = "";
var customerField = function (config) {
jsGrid.Field.call(this, config);
};
customerField.prototype = new jsGrid.Field({
itemTemplate: function (value) {
return value;
},
insertTemplate: function (value) {
return this._insertAuto = $("<input>").autocomplete({
source: function (request, response) {
$.getJSON(urlLoadCustomer, {
Keyword: value
}, response);
}
});
},
editTemplate: function (value) {
var input = $("<input>");
var autocomp = input.autocomplete({
source: function (request, response) {
$.getJSON(urlLoadCustomer, {
Keyword: input.val()
}, response);
},
select: function (event, ui) {
input.val(ui.item.custCode + '-' + ui.item.custName);
selectedCustomerCode = ui.item.custCode;
return false;
}
}).val(value);
autocomp.autocomplete("instance")._renderItem = function (ul, item) {
return $("<li>").append(item.custCode + '-' + item.custName).appendTo(ul);
};
return this._editAuto = autocomp;
},
insertValue: function () {
return this._insertAuto.val();
},
editValue: function () {
return this._editAuto.val();
}
});
jsGrid.fields.customerField = customerField;
$("#jsGrid").jsGrid({
width: "100%",
inserting: false,
editing: true,
sorting: true,
paging: false,
data: tsList,
fields: [
{ name: "TimeSheetId", type: "number",visible:false},
{ name: "TaskDate", type: "dateField", validate: "required", width: 50 },
{ name: "TaskDescription", type: "text", validate: "required", width: 100 },
{ name: "Duration", title:"Duration (Hrs.)", type: "decimal", validate: "required", width: 50 },
{ name: "CaseNumber", type: "caseNumberField", width: 50 },
{ name: "CustomerName", type: "customerField", width: 50 },
{ name: "CustomerCode", type: "text", width: 50, visible:false },
{
type: "control", _createCancelEditButton: function () {
var $result = jsGrid.fields.control.prototype._createCancelEditButton.apply(this, arguments);
$result.on("click", function () { selectedCustomerCode = ""; });
return $result;
} }
],
onItemEditing: function (args) {
selectedCustomerCode = "";
},
onItemUpdating: function (args) {
var form = $('#__AjaxAntiForgeryForm');
var token = $('input[name="__RequestVerificationToken"]', form).val();
var params = {
__RequestVerificationToken: token,
};
params = Object.assign({}, params, args.item);
if (args.item.CustomerName != "" && selectedCustomerCode != "") {
params.CustomerCode = selectedCustomerCode;
} else if (args.item.CustomerName == "" && selectedCustomerCode == ""){
params.CustomerCode = "";
}
if (args.item.TimeSheetId == null) { //add new
$.ajax({
url: urlCreate,
data: params,
type: 'POST',
async: false,
success: function (result) {
var res = JSON.parse(result);
//console.log(res);
setTimeout(function () {
selectedCustomerCode = "";
tsList[args.itemIndex].TimeSheetId = res.Id;
tsList[args.itemIndex].TaskDate = res.TaskDate;
tsList[args.itemIndex].CustomerCode = res.CustomerCode;
tsList[args.itemIndex].CustomerName = res.CustomerName;
$("#jsGrid").jsGrid("refresh");
}, 500);
},
error: function (jqXHR, textStatus, errorThrown) {
if (jqXHR.status == 400) {
alert(jqXHR.responseJSON.Message);
args.cancel = true;
}
}
});
} else {
$.ajax({
url: urlUpdate,
data: params,
type: 'POST',
async: false,
success: function (result) {
var res = JSON.parse(result);
//console.log(res);
setTimeout(function () {
selectedCustomerCode = "";
tsList[args.itemIndex].CustomerCode = res.CustomerCode;
tsList[args.itemIndex].CustomerName = res.CustomerName;
tsList[args.itemIndex].TaskDate = res.TaskDate;
$("#jsGrid").jsGrid("refresh");
}, 500)
},
error: function (jqXHR, textStatus, errorThrown) {
if (jqXHR.status == 400) {
alert(jqXHR.responseJSON.Message);
args.cancel = true;
}
}
});
}
},
onItemDeleting: function (args) {
var form = $('#__AjaxAntiForgeryForm');
var token = $('input[name="__RequestVerificationToken"]', form).val();
var params = {
__RequestVerificationToken: token,
};
params = Object.assign({}, params, args.item);
$.ajax({
url: urlDelete,
data: params,
type: 'POST',
async: false,
success: function (result) {
$("#jsgrid").jsGrid("refresh");
},
error: function (jqXHR, textStatus, errorThrown) {
if (jqXHR.status == 400) {
alert(jqXHR.responseJSON.Message);
args.cancel = true;
}
}
});
}
});
});
</script>
</div>
<!-- End of Page Content -->
<!-- Footer -->
<footer class="sticky-footer bg-white">
<div class="container my-auto">
<div class="copyright text-center my-auto">
<span>Copyright © ILAW CO., LTD.</span>
</div>
</div>
</footer>
<!-- End of Footer -->
</div>
<!--End of Content Wrapper -->
</div>
<!-- End of Page Wrapper -->
<!-- Scroll to Top Button-->
<a class="scroll-to-top rounded" href="#page-top">
<i class="fas fa-angle-up"></i>
</a>
<?php include($path."include/footer_js.php"); ?>
</body>
</html>