Browse Source

implemented report page

master
AJITHKUMAR12 2 months ago
parent
commit
5b2792ae81
  1. 9
      entertainmenttax/src/main/java/com/gcc/entertainmenttax/configuration/DataSourceConfig.java
  2. 12
      entertainmenttax/src/main/java/com/gcc/entertainmenttax/controller/Apicontroller.java
  3. 7
      entertainmenttax/src/main/java/com/gcc/entertainmenttax/controller/Maincontroller.java
  4. 43
      entertainmenttax/src/main/java/com/gcc/entertainmenttax/service/Entertainmentservice.java
  5. 2
      entertainmenttax/src/main/resources/application.properties
  6. 7
      entertainmenttax/src/main/resources/templates/modules/form.html
  7. 736
      entertainmenttax/src/main/resources/templates/modules/report.html

9
entertainmenttax/src/main/java/com/gcc/entertainmenttax/configuration/DataSourceConfig.java

@ -19,12 +19,11 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
@EnableTransactionManagement
public class DataSourceConfig {
private static String host = "localhost:3306";
private static String dbpassword = "root";
// private static String host = "localhost:3306";
// private static String dbpassword = "root";
// private static String host =
// "gcc-facial-db-instance-1.cf48eqcciziq.ap-south-1.rds.amazonaws.com:3306";
// private static String dbpassword = "gcc-facial-password";
private static String host = "gcc-facial-db-instance-1.cf48eqcciziq.ap-south-1.rds.amazonaws.com:3306";
private static String dbpassword = "gcc-facial-password";
public static class MyDataSourceConfig {
@Primary

12
entertainmenttax/src/main/java/com/gcc/entertainmenttax/controller/Apicontroller.java

@ -124,6 +124,8 @@ public class Apicontroller {
@RequestParam(required = false) String gstno,
@RequestParam(required = false) String panno,
@RequestParam Integer programCheck,
@RequestParam(required = false) String website_url,
@RequestParam(required = false) String personName,
@RequestParam(required = false) String designation,
@RequestParam(required = false) Long personContactno) {
@ -141,8 +143,16 @@ public class Apicontroller {
programCheck,
personName,
designation,
personContactno);
personContactno, website_url);
}
@GetMapping("/report")
public List<Map<String, Object>> getReport(
@RequestParam String fromDate,
@RequestParam String toDate) {
return entertainmentTaxService.getReport(fromDate, toDate);
}
}

7
entertainmenttax/src/main/java/com/gcc/entertainmenttax/controller/Maincontroller.java

@ -8,9 +8,14 @@ import org.springframework.web.bind.annotation.RequestMapping;
@Controller("entertainmenttaxMainController")
public class Maincontroller {
@GetMapping(value = { "", "/", "/register" })
@GetMapping("/register")
public String homepage() {
return "modules/form";
}
@GetMapping("/report")
public String report() {
return "modules/report";
}
}

43
entertainmenttax/src/main/java/com/gcc/entertainmenttax/service/Entertainmentservice.java

@ -72,7 +72,7 @@ public class Entertainmentservice {
Integer programCheck,
String personName,
String designation,
Long personContactno) {
Long personContactno, String website_url) {
Map<String, Object> map = new HashMap<>();
@ -82,8 +82,8 @@ public class Entertainmentservice {
+ "venue,concertby,organizer_name,address,mailid,"
+ "contactno,program_date,gstno,panno,"
+ "program_check,person_name,Designation,"
+ "person_contactno)"
+ " VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?)";
+ "person_contactno,website_url)"
+ " VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
KeyHolder keyHolder = new GeneratedKeyHolder();
@ -111,6 +111,8 @@ public class Entertainmentservice {
} else {
ps.setNull(13, Types.BIGINT);
}
;
ps.setString(14, website_url);
return ps;
@ -295,4 +297,39 @@ public class Entertainmentservice {
}
public List<Map<String, Object>> getReport(
String fromDate,
String toDate) {
String sql = "SELECT "
+ "entertainment_id, "
+ "venue, "
+ "concertby, "
+ "organizer_name, "
+ "address, "
+ "mailid, "
+ "contactno, "
+ "cdate, "
+ "program_date, "
+ "gstno, "
+ "panno, "
+ "program_check, "
+ "person_name, "
+ "Designation, "
+ "person_contactno, "
+ "ref_id, "
+ "website_url "
+ "FROM register "
+ "WHERE DATE(cdate) BETWEEN ? AND ? "
+ "ORDER BY cdate ";
// System.out.println("From Date : " + fromDate);
// System.out.println("To Date : " + toDate);
return jdbcTemplate.queryForList(
sql,
fromDate,
toDate);
}
}

2
entertainmenttax/src/main/resources/application.properties

@ -1 +1 @@
spring.profiles.active=dev
spring.profiles.active=prod

7
entertainmenttax/src/main/resources/templates/modules/form.html

@ -288,10 +288,10 @@
<input type="date" id="fromDate" name="programDate" class="form-control" required>
</div>
<div class="col-md-6">
<label for="website_url" class="form-label">website_url </label>
<label for="website_url" class="form-label">Website Url </label>
<input type="text" class="form-control" id="website_url" name="website_url"
placeholder="Enter website_url">
placeholder="Enter website url">
</div>
@ -921,7 +921,8 @@
programCheck: $("#program_check").is(":checked") ? 1 : 0,
personName: $("#person_name").val(),
designation: $("#designation").val(),
personContactno: $("#person_contactno").val()
personContactno: $("#person_contactno").val(),
website_url: $("#website_url").val()
},
success: function (response) {

736
entertainmenttax/src/main/resources/templates/modules/report.html

@ -0,0 +1,736 @@
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Entertainment Tax Registration Report</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<base th:href="${baseURL}" />
<link rel="stylesheet" th:href="@{assets/node_modules/bootstrap/dist/css/bootstrap.min.css}">
<link rel="stylesheet" href="https://cdn.datatables.net/1.13.8/css/dataTables.bootstrap4.min.css">
<link rel="stylesheet" href="https://cdn.datatables.net/buttons/2.4.2/css/buttons.bootstrap4.min.css">
<link rel="stylesheet" th:href="@{assets/node_modules/sweetalert2/sweetalert2.min.css}">
<style>
body {
background-color: #ebf1fa;
}
.header {
background-color: #1d495a;
padding: 10px 20px;
color: white;
}
.header .logo img {
height: 60px;
}
.center-text {
text-align: center;
font-size: 24px;
}
#entertainmentTaxReport td:nth-child(6) {
min-width: 250px;
max-width: 300px;
}
.report-header {
background-color: #1d495a;
color: white;
padding: 12px 15px;
border-radius: 4px;
margin-bottom: 20px;
}
.report-header h5 {
margin: 0;
color: white;
}
label {
font-weight: 600;
font-size: small;
}
.required {
color: red;
}
.filter-card {
padding: 20px;
margin-bottom: 20px;
}
.table-card {
padding: 20px;
}
#entertainmentTaxReport th {
white-space: nowrap;
text-align: center;
vertical-align: middle;
}
#entertainmentTaxReport td {
vertical-align: middle;
}
.dataTables_wrapper {
width: 100%;
}
.dt-buttons {
margin-bottom: 10px;
}
</style>
</head>
<body>
<header>
<div class="header d-flex justify-content-between align-items-center">
<div class="logo">
<img src="https://gccservices.in/gcc/assets/images/logo.png" alt="Logo">
</div>
<div class="center-text">
GREATER CHENNAI CORPORATION
</div>
<div></div>
</div>
</header>
<main class="container-fluid mt-4">
<div class="card shadow">
<div class="card-body">
<!-- Report Header -->
<div class="report-header">
<h5>
ENTERTAINMENT TAX REGISTRATION REPORT
</h5>
</div>
<!-- Filters -->
<div class="card filter-card">
<div class="row">
<div class="col-md-4">
<label for="fromDate">
From Date <span class="required">*</span>
</label>
<input type="date" id="fromDate" class="form-control">
</div>
<div class="col-md-4">
<label for="toDate">
To Date <span class="required">*</span>
</label>
<input type="date" id="toDate" class="form-control">
</div>
<div class="col-md-4" style="margin-top:30px;">
<button type="button" class="btn btn-primary" id="searchBtn">
Search
</button>
<button type="button" class="btn btn-secondary" id="resetBtn">
Reset
</button>
</div>
</div>
</div>
<!-- Report Table -->
<div class="card table-card">
<div class="table-responsive">
<table id="entertainmentTaxReport" class="table table-bordered table-striped table-hover"
style="width:100%">
<thead>
<tr>
<th>S.No</th>
<th>Reference ID</th>
<th>Venue</th>
<th>Concert By</th>
<th>Organizer Name</th>
<th>Address</th>
<th>Email ID</th>
<th>Contact<br> Number</th>
<th>Registration<br> Date</th>
<th>Programme<br> Date</th>
<th> Website Url</th>
<th>GST Number</th>
<th>PAN Number</th>
<th>Organization located <br>Other Than Chennai</th>
<th>Authorized<br> Person Name</th>
<th>Designation</th>
<th>Authorized<br> Person Contact</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
</div>
</div>
</main>
<script th:src="@{assets/node_modules/jquery/dist/jquery.min.js}">
</script>
<script th:src="@{assets/node_modules/bootstrap/dist/js/bootstrap.min.js}">
</script>
<script th:src="@{assets/node_modules/sweetalert2/sweetalert2.min.js}">
</script>
<!-- DataTables -->
<script src="https://cdn.datatables.net/1.13.8/js/jquery.dataTables.min.js">
</script>
<script src="https://cdn.datatables.net/1.13.8/js/dataTables.bootstrap4.min.js">
</script>
<!-- DataTables Buttons -->
<script src="https://cdn.datatables.net/buttons/2.4.2/js/dataTables.buttons.min.js">
</script>
<script src="https://cdn.datatables.net/buttons/2.4.2/js/buttons.bootstrap4.min.js">
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js">
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.2.7/pdfmake.min.js">
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.2.7/vfs_fonts.js">
</script>
<script src="https://cdn.datatables.net/buttons/2.4.2/js/buttons.html5.min.js">
</script>
<script src="https://cdn.datatables.net/buttons/2.4.2/js/buttons.print.min.js">
</script>
<script>
let reportTable = null;
$(document).ready(function () {
let today = new Date().toISOString().split("T")[0];
$("#fromDate").attr("max", today);
$("#toDate").attr("max", today);
$("#fromDate").val(today);
$("#toDate").val(today);
$("#fromDate").on("change", function () {
let fromDate = $(this).val();
// To Date cannot be before From Date
$("#toDate").attr("min", fromDate);
// To Date cannot be after today
$("#toDate").attr("max", today);
// Clear To Date if it is outside the valid range
let toDate = $("#toDate").val();
if (toDate && (toDate < fromDate || toDate > today)) {
$("#toDate").val("");
}
});
/*
* Search
*/
$("#searchBtn").click(function () {
let fromDate = $("#fromDate").val();
let toDate = $("#toDate").val();
if (fromDate === "") {
Swal.fire(
"Warning",
"Please select From Date",
"warning"
);
return;
}
if (toDate === "") {
Swal.fire(
"Warning",
"Please select To Date",
"warning"
);
return;
}
if (fromDate > toDate) {
Swal.fire(
"Warning",
"From Date cannot be greater than To Date",
"warning"
);
return;
}
loadEntertainmentTaxReport(true);
});
/*
* Reset
*/
$("#resetBtn").click(function () {
$("#fromDate").val(today);
$("#toDate").val(today);
$("#toDate").attr("min", today);
loadEntertainmentTaxReport();
});
/*
* Initial load
*/
loadEntertainmentTaxReport();
});
function loadEntertainmentTaxReport(isUserAction = false) {
let fromDate = $("#fromDate").val();
let toDate = $("#toDate").val();
if (isUserAction) {
if (!fromDate && !toDate) {
Swal.fire({
icon: "warning",
title: "Validation",
text: "Please select From Date and To Date."
});
return;
}
if (fromDate && !toDate) {
Swal.fire({
icon: "warning",
title: "Validation",
text: "Please select To Date."
});
return;
}
if (!fromDate && toDate) {
Swal.fire({
icon: "warning",
title: "Validation",
text: "Please select From Date."
});
return;
}
if (fromDate > toDate) {
Swal.fire({
icon: "warning",
title: "Validation",
text: "From Date cannot be greater than To Date."
});
return;
}
}
$('#pageLoader').show();
$.ajax({
url: "/entertainmenttax/api/report",
type: "GET",
data: {
fromDate: fromDate,
toDate: toDate
},
success: function (response) {
// console.log(response);
$('#pageLoader').hide();
// Destroy existing DataTable
if ($.fn.DataTable.isDataTable('#entertainmentTaxReport')) {
$('#entertainmentTaxReport').DataTable().destroy();
}
// Clear old rows
$('#entertainmentTaxReport tbody').empty();
// Create DataTable again
reportTable = $('#entertainmentTaxReport').DataTable({
destroy: true,
data: response,
processing: true,
columns: [
{
data: null,
render: function (data, type, row, meta) {
return meta.row + 1;
}
},
{
data: "ref_id",
defaultContent: "-"
},
{
data: "venue",
defaultContent: "-"
},
{
data: "concertby",
defaultContent: "-"
},
{
data: "organizer_name",
defaultContent: "-"
},
{
data: "address",
defaultContent: "-"
},
{
data: "mailid",
defaultContent: "-"
},
{
data: "contactno",
defaultContent: "-"
},
{
data: "cdate",
defaultContent: "-",
render: function (data) {
return formatDate(data);
}
},
{
data: "program_date",
defaultContent: "-",
render: function (data) {
return formatDate(data);
}
},
{
data: "website_url",
defaultContent: "-",
render: function (data) {
if (!data) {
return "-";
}
let url = data.trim();
if (!/^https?:\/\//i.test(url)) {
url = "https://" + url;
}
return '<a href="' + url +
'" target="_blank" rel="noopener noreferrer">' +
data +
'</a>';
}
},
{
data: "gstno",
defaultContent: "-"
},
{
data: "panno",
defaultContent: "-"
},
{
data: "program_check",
render: function (data) {
return data == 1 ? "Yes" : "No";
}
},
{
data: "person_name",
render: function (data) {
return data && data.trim() !== "" ? data : "-";
}
},
{
data: "Designation",
render: function (data) {
return data && data.trim() !== "" ? data : "-";
}
},
{
data: "person_contactno",
render: function (data) {
return data && data.toString().trim() !== "" ? data : "-";
}
}
],
columnDefs: [
{
orderable: false,
targets: [0]
}
],
dom:
'<"row"<"col-md-6"B><"col-md-6"f>>' +
'<"row"<"col-md-12"tr>>' +
'<"row"<"col-md-5"i><"col-md-7"p>>',
buttons: [
{
extend: "excelHtml5",
title: "Entertainment Tax Registration Report"
},
{
extend: "pdfHtml5",
title: "Entertainment Tax Registration Report",
orientation: "landscape",
pageSize: "A3",
exportOptions: {
columns: ':visible'
},
customize: function (doc) {
doc.pageMargins = [15, 30, 15, 30];
doc.defaultStyle.fontSize = 6;
doc.styles.tableHeader.fontSize = 6;
doc.styles.tableHeader.bold = true;
// Find the report table
let table = doc.content.find(function (item) {
return item.table;
});
if (table) {
table.table.widths = [
25, // S.No
75, // Reference ID
45, // Venue
45, // Concert By
65, // Organizer Name
80, // Address
95, // Email ID
60, // Contact Number
55, // Registration Date
55, // Programme Date
80, // website_url
70, // GST Number
70, // PAN Number
45, // Other Than Chennai
70, // Authorized Person Name
60, // Designation
70 // Authorized Person Contact
];
}
}
}
],
pageLength: 10,
lengthMenu: [
[10, 25, 50, 100, -1],
[10, 25, 50, 100, "All"]
],
order: [],
scrollX: true,
autoWidth: false
});
},
error: function () {
$('#pageLoader').hide();
Swal.fire({
icon: "error",
title: "Error",
text: "Unable to load Entertainment Tax Report."
});
}
});
}
function formatDate(dateStr) {
if (!dateStr) return "-";
// Already formatted (dd-mm-yyyy)
if (/^\d{2}-\d{2}-\d{4}$/.test(dateStr)) {
return dateStr;
}
// Remove time if present
dateStr = dateStr.split("T")[0];
const parts = dateStr.split("-");
if (parts.length !== 3) {
return dateStr;
}
const [y, m, d] = parts;
return `${d}-${m}-${y}`;
}
</script>
</body>
</html>
Loading…
Cancel
Save