Browse Source

changes in feedback Form

master
mohammedthaqi 3 years ago
parent
commit
435c321734
  1. 5
      src/main/java/com/metro/component/UserSessionInterceptor.java
  2. 116
      src/main/java/com/metro/feedback/controller/FeedbackAPIController.java
  3. 2
      src/main/java/com/metro/feedback/controller/FeedbackController.java
  4. 4
      src/main/resources/application.properties
  5. 234
      src/main/resources/templates/community/communityhall.html
  6. 618
      src/main/resources/templates/feedback/RequestForm.html

5
src/main/java/com/metro/component/UserSessionInterceptor.java

@ -16,14 +16,15 @@ public class UserSessionInterceptor implements HandlerInterceptor {
@Autowired
private UserSession userSession;
private static final List<String> EXCLUDED_URLS = Arrays.asList("/login", "/", "/api","/community","/feedback");
private static final List<String> EXCLUDED_URLS = Arrays.asList("/login", "/", "/api","/community","/support","/feedback");
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// Get the current request URL
String requestUrl = request.getRequestURI();
// Exclude static resources from the check
if (requestUrl.startsWith("/assets/") || requestUrl.startsWith("/css/") || requestUrl.startsWith("/js/") || requestUrl.startsWith("/images/") || requestUrl.startsWith("/api/") || requestUrl.startsWith("/community/") ||requestUrl.startsWith("/feedback/")) {
if (requestUrl.startsWith("/assets/") || requestUrl.startsWith("/css/") || requestUrl.startsWith("/js/") || requestUrl.startsWith("/images/")
|| requestUrl.startsWith("/api/") || requestUrl.startsWith("/community/") ||requestUrl.startsWith("/support/")||requestUrl.startsWith("/feedback/")) {
return true; // Allow the request to proceed without checking the login status
}

116
src/main/java/com/metro/feedback/controller/FeedbackAPIController.java

@ -0,0 +1,116 @@
package com.metro.feedback.controller;
import java.util.List;
import org.hibernate.mapping.Map;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
@RestController
@RequestMapping("/feedback/api")
public class FeedbackAPIController {
// @GetMapping("/user")
// public ResponseEntity<?> getUser(@RequestParam String mobile){
// System.out.println("1 croce ");
// RestTemplate rest =new RestTemplate();
//
// String s="https://erp.chennaicorporation.gov.in/pgr/external/mobileservice?serviceId=getProfileNew&serviceinput={Username:"+mobile+"}";
// System.out.println(s);
// Object forObject = rest.getForObject(s, Object.class);
// return ResponseEntity.ok(forObject);
// }
// @GetMapping("/deactive")
// public ResponseEntity<?> getDeactive(@RequestParam String mobile){
// RestTemplate rest =new RestTemplate();
//
// String s="https://erp.chennaicorporation.gov.in/pgr/external/mobileservice?serviceId=profileDeactivate&serviceinput={Username:"+mobile+"}";
// ResponseEntity<Map> forEntity = rest.getForEntity(s, Map.class);
// return ResponseEntity.ok(forEntity);
// }
@GetMapping("/user")
public ResponseEntity<?> getUser(@RequestParam String mobile) {
StringBuilder content = new StringBuilder();
try {
String urlString = "https://erp.chennaicorporation.gov.in/pgr/external/mobileservice?serviceId=getProfileNew&serviceinput={Username:" + mobile + "}";
URL url = new URL(urlString);
URLConnection urlConnection = url.openConnection();
try (BufferedReader in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()))) {
String inputLine;
while ((inputLine = in.readLine()) != null) {
content.append(inputLine);
}
}
} catch (IOException e) {
e.printStackTrace();
}
// Convert the content to a JSON object using Jackson
ObjectMapper objectMapper = new ObjectMapper();
try {
JsonNode jsonNode = objectMapper.readTree(content.toString());
if(jsonNode==null) {
return ResponseEntity.ok("");
}
return ResponseEntity.ok(jsonNode);
} catch (IOException e) {
e.printStackTrace();
return ResponseEntity.status(500).body("Error parsing JSON response");
}
}
@GetMapping("/deactive")
public ResponseEntity<?> getDeactive(@RequestParam String mobile){
StringBuilder content = new StringBuilder();
try {
String urlString = "https://erp.chennaicorporation.gov.in/pgr/external/mobileservice?serviceId=profileDeactivate&serviceinput={Username:"+mobile+"}";
URL url = new URL(urlString);
URLConnection urlConnection = url.openConnection();
try (BufferedReader in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()))) {
String inputLine;
while ((inputLine = in.readLine()) != null) {
content.append(inputLine);
}
}
} catch (IOException e) {
e.printStackTrace();
}
// Convert the content to a JSON object using Jackson
ObjectMapper objectMapper = new ObjectMapper();
try {
JsonNode jsonNode = objectMapper.readTree(content.toString());
return ResponseEntity.ok(jsonNode);
} catch (IOException e) {
e.printStackTrace();
return ResponseEntity.status(500).body("Error parsing JSON response");
}
}
}

2
src/main/java/com/metro/feedback/controller/FeedbackController.java

@ -3,7 +3,7 @@ package com.metro.feedback.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@RequestMapping("/feedback")
@RequestMapping("/support")
@Controller
public class FeedbackController {
@RequestMapping(value={"/",""})

4
src/main/resources/application.properties

@ -3,8 +3,8 @@ server.port=8068
# Database connection properties
spring.datasource.url=jdbc:mysql://localhost:3306/metro
spring.datasource.username=root
#spring.datasource.password=gccroot
spring.datasource.password=root
spring.datasource.password=gccroot
#spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# Connection pool properties

234
src/main/resources/templates/community/communityhall.html

@ -117,7 +117,6 @@
<div class="row mt-3">
<div class="col-12">
<label class="form-label">Select month and Year *</label>
@ -182,8 +181,8 @@
<b>
<font size="3+">1</font>
</b><br>
<input type="checkbox" id="morningHalf01" onclick="calcAmount(this)" name="chkbox2m30">&nbsp;&nbsp;&nbsp;
<input type="checkbox" id="eveningHalf01" name="chkbox2e30"><br>Mor&nbsp;&nbsp;&nbsp;Eve
<input type="checkbox" id="morningHalf01" name="chkbox2m30" class="checkbox">&nbsp;&nbsp;&nbsp;
<input type="checkbox" id="eveningHalf01" name="chkbox2e30"class="checkbox"><br>Mor&nbsp;&nbsp;&nbsp;Eve
</div>
</td>
@ -191,8 +190,8 @@
<div align="center">
<b>
<font size="3+">2</font>
</b><br><input type="checkbox" id="morningHalf02" name="chkbox2m30">&nbsp;&nbsp;&nbsp;<input
type="checkbox" id="eveningHalf02" name="chkbox2e30"><br>Mor&nbsp;&nbsp;&nbsp;Eve
</b><br><input type="checkbox" id="morningHalf02" name="chkbox2m30" class="checkbox">&nbsp;&nbsp;&nbsp;<input
type="checkbox" id="eveningHalf02" name="chkbox2e30" class="checkbox"><br>Mor&nbsp;&nbsp;&nbsp;Eve
</div>
</td>
@ -200,8 +199,8 @@
<div align="center">
<b>
<font size="3+">3</font>
</b><br><input type="checkbox" id="morningHalf03" name="chkbox3m30">&nbsp;&nbsp;&nbsp;<input
type="checkbox" id="eveningHalf03" name="chkbox3e30"><br>Mor&nbsp;&nbsp;&nbsp;Eve
</b><br><input type="checkbox" id="morningHalf03" name="chkbox3m30" class="checkbox">&nbsp;&nbsp;&nbsp;<input
type="checkbox" id="eveningHalf03" name="chkbox3e30" class="checkbox"><br>Mor&nbsp;&nbsp;&nbsp;Eve
</div>
</td>
</tr>
@ -210,8 +209,8 @@
<div align="center">
<b>
<font size="3+">4</font>
</b><br><input type="checkbox" id="morningHalf04" name="chkbox4m30">&nbsp;&nbsp;&nbsp;<input
type="checkbox" id="eveningHalf04" name="chkbox4e30"><br>Mor&nbsp;&nbsp;&nbsp;Eve
</b><br><input type="checkbox" id="morningHalf04" name="chkbox4m30" class="checkbox">&nbsp;&nbsp;&nbsp;<input
type="checkbox" id="eveningHalf04" name="chkbox4e30" class="checkbox"><br>Mor&nbsp;&nbsp;&nbsp;Eve
</div>
</td>
@ -219,8 +218,8 @@
<div align="center">
<b>
<font size="3+">5</font>
</b><br><input type="checkbox" id="morningHalf05" name="chkbox5m30">&nbsp;&nbsp;&nbsp;<input
type="checkbox" id="eveningHalf05" name="chkbox5e30"><br>Mor&nbsp;&nbsp;&nbsp;Eve
</b><br><input type="checkbox" id="morningHalf05" name="chkbox5m30" class="checkbox">&nbsp;&nbsp;&nbsp;<input
type="checkbox" id="eveningHalf05" name="chkbox5e30" ><br>Mor&nbsp;&nbsp;&nbsp;Eve
</div>
</td>
<td class="tableRow" width="20%">
@ -431,7 +430,7 @@
type="checkbox" id="eveningHalf28" name="chkbox28e30"><br>Mor&nbsp;&nbsp;&nbsp;Eve
</div>
</td>
<td class="tableRow" width="40%">
<td class="tableRow" width="40%" id="row29">
<div align="center">
<b>
<font size="3+">29</font>
@ -439,7 +438,7 @@
type="checkbox" id="eveningHalf29" name="chkbox29e30"><br>Mor&nbsp;&nbsp;&nbsp;Eve
</div>
</td>
<td class="tableRow" width="40%">
<td class="tableRow" width="40%" id="row30">
<div align="center">
<b>
<font size="3+">30</font>
@ -450,6 +449,17 @@
</tr>
<tr id="row31">
<td class="tableRow" width="40%">
<div align="center">
<b>
<font size="3+">31</font>
</b><br><input type="checkbox" id="morningHalf31" name="chkbox31m30">&nbsp;&nbsp;&nbsp;<input
type="checkbox" id="eveningHalf31" name="chkbox31e30"><br>Mor&nbsp;&nbsp;&nbsp;Eve
</div>
</td>
</tr>
@ -531,7 +541,7 @@
</tr>
<tr>
<td>RENTAL</td>
<td>:<input name="rental" type="text" class="bgListTextArea"
<td>:<input name="rental" type="text" id="rental" class="bgListTextArea"
size="12" readonly="true" fdprocessedid="2o3ddc" value="0">
</td>
</tr>
@ -599,36 +609,29 @@
<script>
function toggleDetails() {
var hallCheckbox = document.getElementById("hallCheckbox");
var communityHallSection = document.getElementById("TR_COMM");
if (hallCheckbox.checked) {
communityHallSection.style.display = "block";
} else {
communityHallSection.style.display = "none";
}
}
function chk_code() {
// var z = document.getElementById("zone").value;
var h =document.getElementById("hall").value;
var y =document.getElementById("sel_year").value;
var m =document.getElementById("month").value;
var ld=getDaysInMonth(2023, 11);
var fromdate = y+"-"
alert("status....call:"+h);
var len = m.length;
var ld=getDaysInMonth(y,m);
if(len<2){
m="0"+m;
}
var fromdate = y+"-"+m+"-01";
var todate = y+"-"+m+"-"+ld;
$.ajax({
url: '/community/api/getHallByMonthAndYear', // Replace with the actual URL to retrieve division data
method: 'GET',
data: {
hallId: 43,
fromDay: '2023-10-01' ,
toDay: '2023-10-28'},
hallId:h,
fromDay: fromdate ,
toDay: todate,
},
success: function (data) {
setCalendarStatus(data);
displayCheckboxes(ld);
},
error: function (error) {
}
@ -636,10 +639,9 @@
document.getElementById("DETAILS").style.display = "block";
}
var calendar;
function setCalendarStatus(data) {
//console.log(data);
calendar=data;
console.log(data);
// Create an object to store status information
var statusInformation = {};
@ -647,11 +649,17 @@
var currentDate = data[i].date;
var morningHalfValue = data[i].morningHalf;
var eveningHalfValue = data[i].eveningHalf;
//console.log(data[i].date);
//console.log(document.getElementById("morningHalf" + currentDate).value);
//Set the status for morningHalf
document.getElementById("morningHalf" + currentDate).checked = morningHalfValue === 1;
document.getElementById("eveningHalf" + currentDate).checked = eveningHalfValue === 1;
console.log(data[i].date);
// Set the status for morningHalf
var morningHalfCheckbox = document.getElementById("morningHalf" + currentDate);
morningHalfCheckbox.checked = morningHalfValue === 1;
morningHalfCheckbox.disabled = morningHalfValue === 1;
// Set the status for eveningHalf
var eveningHalfCheckbox = document.getElementById("eveningHalf" + currentDate);
eveningHalfCheckbox.checked = eveningHalfValue === 1;
eveningHalfCheckbox.disabled = eveningHalfValue === 1;
// Store the status information in the object
statusInformation[currentDate] = {
@ -660,10 +668,8 @@
};
}
// Now you can use statusInformation object for further processing
//console.log(statusInformation);
// console.log(statusInformation);
}
</script>
@ -699,7 +705,7 @@
function getdivision() {
function getdivision(zone) {
var z = document.getElementById("zone").value;
$.ajax({
url: '/community/api/getHall', // Replace with the actual URL to retrieve division data
@ -713,12 +719,14 @@
}
});
}
var hallIndex=0;
var hallInfo;
var hallIndex;
function setDivisionAndHall(data) {
var string = "";
hallInfo=data;
console.log(data);
string= string + "<option value=''>" + "</option>";
for (let i = 0; i < data.length; i++) {
string = string + "<option value=" + data[i].COMMUNITYHALLDIVID + ">" + data[i].COMMUNITYHALLDIVID + "</option>";
@ -726,6 +734,8 @@
document.getElementById("divs").innerHTML = string;
var hallName = "";
hallName= hallName + "<option value=''>" + "</option>";
for (let i = 0; i < data.length; i++) {
hallName = hallName + "<option value=" + data[i].COMMUNITYHALLCODE + ">" + data[i].COMMUNITYHALLPLACE + "</option>";
@ -761,6 +771,57 @@
}
}
}
var count = 0;
$(document).ready(function () {
var lastClickedIndex = null;
$(":checkbox").click(function () {
if (!$(this).is(':disabled')) {
var currentIndex = $(":checkbox:enabled").index(this);
if ($(this).prop("checked")) {
count++;
IncrementOrDecHallAmt();
} else {
count--;
IncrementOrDecHallAmt();
}
if (lastClickedIndex === null || isConsecutive(currentIndex, lastClickedIndex)) {
if ($(":checkbox:checked:enabled").length > 14) {
alert("You can only select checkboxes in sequence.");
$(this).prop("checked", false);
} else {
lastClickedIndex = currentIndex;
}
} else {
alert("Please select checkboxes in sequences of 14 Days.");
$(this).prop("checked", false);
}
}
});
function isConsecutive(currentIndex, lastClickedIndex) {
return Math.abs(currentIndex - lastClickedIndex) === 1;
}
function showRemoveConfirmation(currentIndex) {
if (confirm("Do you want to remove this checkbox and uncheck subsequent checkboxes?")) {
// Uncheck subsequent checkboxes
$(":checkbox:enabled:gt(" + currentIndex + "):checked").prop("checked", false);
// Enable previous checkboxes to be unchecked
$(":checkbox:enabled:lt(" + currentIndex + ")").prop("disabled", false);
} else {
// Revert the checkbox state to checked if the user cancels the removal
$(":checkbox:enabled:eq(" + currentIndex + ")").prop("checked", true);
}
}
});
function setHallAmount(i){
let fa =hallInfo[i].COMMUNITYHALLFULLDAYRATE;
let ha =hallInfo[i].COMMUNITYHALLHALFDAYRATE;
@ -773,6 +834,7 @@ function setHallAmount(i){
let eh =hallInfo[i].EB_HALF;
let cf =hallInfo[i].CLEAN_CHRG_FULL;
let ch =hallInfo[i].CLEAN_CHRG_HALF;
let r =hallInfo[i].COMMUNITYHALLHALFDAYRATE;
document.getElementById("fulldayamt").value=fa;
document.getElementById("halfdayamt").value=ha;
@ -785,36 +847,84 @@ function setHallAmount(i){
document.getElementById("eb_pa_half_amt").value=eh;
document.getElementById("eb_pa_full_serv").value=cf;
document.getElementById("eb_pa_halft_serv").value=ch;
document.getElementById("rental").value=0;
}
function setHall(data) {
var string = "";
function IncrementOrDecHallAmt() {
let l = hallInfo[hallIndex].COMMUNITYHALLFULLSURCHARGE;
let f = hallInfo[hallIndex].COMMUNITYHALLFULLDAYRATE;
let m = hallInfo[hallIndex].COMMUNITYHALLHALFDAYRATE;
let n = hallInfo[hallIndex].COMMUNITYHALLHALFSURCHARGE;
let r = hallInfo[hallIndex].COMMUNITYHALLFULLDAYRATE;
if(count>=0)
if(count%2==0){
document.getElementById("rental").value =[f * (count / 2)+f * (count / 2)]/2 // Set to 0 if count is 0 or odd
}
else if(count%2==1){
document.getElementById("rental").value =f*Math.floor(count/2)+m; // Set to 0 if count is 0 or odd
}
}
if (data.length == 0) {
alert("OOps!! \nThere Is No Community Hall In This Division")
/* if (count % 2 === 0 && count !== 0) {
document.getElementById("fulldayamt").value = f * (count / 2);
} else {
for (let i = 0; i < data.length; i++) {
string = string + "<option value=" + data[i].COMMUNITYHALLCODE + ">" + data[i].COMMUNITYHALLPLACE + "</option>";
document.getElementById("fulldayamt").value =[f * (count / 2)+f * (count / 2)]/2 // Set to 0 if count is 0 or odd
}
document.getElementById("hall").innerHTML = string;
document.getElementById("fulldaysurcharge").value = l * (count / 2);
document.getElementById("rental").value =[f * (count / 2)+f * (count / 2)]/2 // Set to 0 if count is 0 or odd
if (count % 2 === 0 && count !== 0) {
document.getElementById("halfdayamt").value =m * (count / 2);
} else {
document.getElementById("halfdayamt").value =[m * (count / 2)+ m * (count/2)]/2 ; // Set to 0 if count is 0 or odd
}
console.log(data);
document.getElementById("halfdaysurcharge").value = n * (count / 2);
*/
function getDaysInMonth(year, month) {
return new Date(year, month, 0).getDate();
}
function displayCheckboxes(ld) {
for (var i = 1; i <= 31; i++) {
var morningHalf31 = "morningHalf" + i;
var eveningHalf31 = "eveningHalf" + i;
var rowId = "row" + i;
// Check if the current day exceeds the last day of the month
if (i > ld) {
// If it does, hide the checkboxes
$("#" + morningHalf31).hide();
$("#" + eveningHalf31).hide();
} else {
// If it doesn't, show the checkboxes
$("#" + morningHalf31).show();
$("#" + eveningHalf31).show();
}
if (ld === 28) {
$("#row29").hide();
$("#row30").hide();
$("#row31").hide();
}
} else {
$("#row29").show();
$("#row30").show();
$("#row31").show();
var count=0;
function calcAmount(checked){
alert(checked.id);
fa=document.getElementById("fulldayamt").value;
ha=document.getElementById("halfdayamt").value;
fa=fa+hallInfo[hallIndex].COMMUNITYHALLHALFDAYRATE;
}
// Show or hide the 31st row based on whether the last day is 31
$("#row31").toggle(ld === 31);
}
}
</script>

618
src/main/resources/templates/feedback/RequestForm.html

@ -6,9 +6,9 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0" >
<title>GCC Grabage Collection Request</title>
<title>GCC Feedback</title>
<meta name="description" content="GCC Public Garbage collection request application">
<meta name="description" content="GCC Feedback request application">
<meta name="author" content="gcc">
<meta name="robots" content="noindex, nofollow">
@ -51,7 +51,7 @@
<div id="page-container" class="page-header-dark main-content-boxed">
<!-- Header -->
<header id="page-header">
<header id="page-header" style="background-color:#1e6a7f">
<!-- Header Content -->
<div class="content-header">
<!-- Left Section -->
@ -75,69 +75,9 @@
</div>
<!-- END Left Section -->
<!-- Right Section -->
<div>
<!-- User Dropdown -->
<div class="dropdown d-inline-block">
<button type="button" class="btn btn-alt-secondary" id="page-header-user-dropdown" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<i class="fa fa-bars"></i>
<i class="fa fa-angle-down opacity-50 ms-1"></i>
</button>
<div class="dropdown-menu dropdown-menu-lg dropdown-menu-end p-0" aria-labelledby="page-header-user-dropdown">
<div class="rounded-top fw-semibold text-white bg-image" style="background-image: url('assets/media/photos/photo20.jpg');">
<div class="p-3 bg-black-50 rounded-top">
<div class="d-flex align-items-center">
<img class="img-avatar img-avatar48 img-avatar-thumb" src="assets/media/avatars/avatar3.jpg" alt="">
<div class="ms-3">
<a class="text-white fw-semibold" href="">Mobile No</a>
<div class="fs-sm text-white-75" id="userNo"></div>
</div>
</div>
</div>
</div>
<div class="p-2">
<a class="dropdown-item d-flex justify-content-between align-items-center" href="javascript:getrequest()">
<div>
<i class="fa fa-fw fa-globe opacity-50 me-1"></i>
Request Status
</div>
<span class="badge rounded-pill bg-primary"></span>
</a>
<a class="dropdown-item d-flex justify-content-between align-items-center" href="/">
<div>
<i class="fa fa-fw fa-sync-alt opacity-50 me-1"></i>
Create New Request
</div>
</a>
<div role="separator" class="dropdown-divider"></div>
<div id="logout" >
<a class="dropdown-item d-flex align-items-center mb-0" href="javascript:logout();">
<i class="fa fa-fw fa-sign-out-alt text-danger me-1"></i>
Log Out
</a>
</div>
<div id="login">
<a class="dropdown-item d-flex align-items-center mb-0" href="javascript:showAndHide();">
<i class="fa fa-fw fa-sign-in-alt text-danger me-1"></i>
Log In
</a>
</div>
</div>
</div>
</div>
<!-- END User Dropdown -->
</div>
<!-- END Right Section -->
</div>
<!-- END Header Content -->
<!-- Header Search -->
<!-- END Header Search -->
<!-- Header Loader -->
<!-- Please check out the Loaders page under Components category to see examples of showing/hiding it -->
<div id="page-header-loader" class="overlay-header bg-sidebar-dark">
<div class="content-header">
@ -154,11 +94,13 @@
<main id="main-container">
<!-- Hero -->
<div class="bg-image" style="background-image: url('assets/media/photos/photo15@2x.jpg');">
<div class="bg-primary-dark-op">
<div class="bg-primary-dark-op" style="background-color:rgb(4 128 146 / 80%)!important">
<div class="content content-full">
<div class="py-3 text-center">
<h2 class="text-white mb-2">Government of Tamil Nadu</h2>
<h3 class="h4 fw-normal text-white-75 mb-0">தமிழ்நாடு அரசு பெருநகர சென்னை மாநகராட்சி</h3>
<br>
<h4 class="text-white mb-2">Namma Chennai Support</h4>
</div>
</div>
</div>
@ -167,13 +109,10 @@
<!-- Page Content -->
<div class="content">
<!-- Dummy content -->
<div class="row">
<!-- <a><button class="btn btn-primary btn-sm" onclick="getrequest()">My Request</button></a> -->
<div class="content" >
<div class="row" id="req" style="display: block;">
<div class="col-12">
<form action="#" id="garbageform" th:action="@{/request_save}" th:object="${request_save}" method="post" onsubmit="return login();" enctype="multipart/form-data">
<form action="" id="reqForm" onsubmit="return newUserCall();" >
<div class="block block-rounded">
<div class="block-header block-header-default">
<h3 class="block-title">New Request Form</h3>
@ -182,146 +121,121 @@
<div class="block-content">
<div class="row">
<div class="col-md-12 alert-light border-0">
<div class="col-md-6 alert-light border-0">
<div class="mb-3">
<label class="form-check-label" for="name">Name</label>
<input type="text" class="form-control" id="name" required="" name="name">
<input type="text" class="form-control" id="name" name="name" required>
</div>
</div>
<div class="col-md-6 alert-light border-0">
<div class="mb-3">
<label class="form-check-label" for="mobile">Mobile No</label>
<input type="text" class="form-control" id="mobile" minlength="10" maxlength="10" required="" name="mobile">
<input type="text" class="form-control" id="mobile" minlength="10" maxlength="10" name="mobile" required>
</div>
</div>
<div class="col-md-6 alert-light border-0">
<div class="mb-3">
<label class="form-check-label" for="email">Email ID</label>
<input type="text" class="form-control" id="email" required="" name="email">
</div>
<hr class="m-0">
<div class="block-content block-content-full text-end">
<button type="button" class="btn btn-de-secondary btn-sm" onclick="reset()">Reset</button>
<button type="submit" class="btn btn-primary btn-sm" >Submit</button>
</div>
<div class="col-md-12 alert-light border-0">
<div class="mb-3">
<label class="form-check-label" for="address">Address</label>
<textarea id="address" class="form-control" name="address" rows="3" required=""></textarea>
</div>
</form>
</div>
<div class="col-md-12 alert-light border-0">
<div class="mb-3">
<label class="form-check-label" for="landmark">Nearest Landmark</label>
<input type="text" class="form-control" id="landmark" required="" name="landmark">
</div>
</div>
</div>
<!-- -->
<div class="content" >
<div class="row" id="req1" style="display: none;">
<div class="col-12">
<form action="" id="reqForm1" onsubmit="return deactive();">
<div class="block block-rounded">
<div class="block-header block-header-default">
<h3 class="block-title">Request Details</h3>
</div>
<div class="block-content">
<div class="row">
<div class="col-md-6 alert-light border-0">
<div class="mb-3">
<label class="form-check-label" for="request_type">Select Request Type</label>
<select class="form-select" name="request_type" id="request_type">
<option value="">---Select Request Type---</option>
<option value="Residential">Residential</option>
<option value="Commercial">Commercial</option>
<option value="Regigious">Religious</option>
<option value="Industrial">Industrial</option>
<option value="Others">Others</option>
</select>
<label class="form-check-label" for="name">Name</label>
<input type="text" class="form-control" id="name1" name="name1" readonly>
</div>
</div>
<div class="col-md-6 alert-light border-0">
<div class="mb-3">
<label class="form-check-label" for="garbage_category">Select Garbage Type</label>
<select class="form-select" name="garbage_category" id="garbage_category">
<option value="">---Select Garbage Type---</option>
<option value="Plastic">Plastic</option>
<option value="Organic">Organic</option>
<option value="Paper">Paper</option>
<option value="Glass">Glass</option>
<option value="Metel">Metel</option>
<option value="E-Waste">E-Waste</option>
<option value="All">All</option>
<option value="Others">Others</option>
</select>
</div>
</div>
<div class="col-md-4 alert-light border-0">
<div class="mb-3">
<label class="form-check-label" for="zone">Select Zone</label>
<select class="form-select" name="zone" id="zone" required="" onchange="getDiv(this);">
<option value="">---Select Zone---</option>
</select>
<label class="form-check-label" for="mobile">Mobile No</label>
<input type="text" class="form-control" id="mobile1" minlength="10" maxlength="10" name="mobile1" readonly>
</div>
</div>
<div class="col-md-4 alert-light border-0">
<div class="col-md-6 alert-light border-0">
<div class="mb-3">
<label class="form-check-label" for="division">Select Division</label>
<select class="form-select" name="division" id="division" required="" onchange="getArea(this);">
<option value="">---Select Div---</option>
</select>
<label class="form-check-label" for="mobile">Email</label>
<input type="text" class="form-control" id="email" minlength="10" maxlength="10" name="mobile1" readonly>
</div>
</div>
<div class="col-md-4 alert-light border-0">
<div class="col-md-6 alert-light border-0">
<div class="mb-3">
<label class="form-check-label" for="area">Select Area</label>
<select class="form-select" name="area" id="area" onchange="getLocation(this);">
<option value="">---Select Area---</option>
</select>
<label class="form-check-label" for="mobile">Door No</label>/label>
<input type="text" class="form-control" id="doorno" minlength="10" maxlength="10" name="mobile1"readonly >
</div>
</div>
<div class="col-md-6 alert-light border-0">
<div class="mb-3">
<label class="form-check-label" for="locality">Select Location</label>
<select class="form-select" name="locality" id="locality" onchange="getStreet(this);">
<option value="">---Select Location---</option>
</select>
<label class="form-check-label" for="mobile">Area</label>
<input type="text" class="form-control" id="area" minlength="10" maxlength="10" name="mobile1" readonly>
</div>
</div>
<div class="col-md-6 alert-light border-0">
<div class="mb-3">
<label class="form-check-label" for="street">Select Street</label>
<select class="form-select" name="street" id="street">
<option value="">---Select Street---</option>
</select>
<label class="form-check-label" for="mobile">aadhar No</label>
<input type="text" class="form-control" id="aadhar" minlength="10" maxlength="10" name="mobile1"readonly >
</div>
</div>
<!--
<div class="col-md-3 alert-light border-0">
<div class="col-md-6 alert-light border-0">
<div class="mb-3">
<label class="form-check-label" for="assetLatitude">Latitude</label>
<input type="text" class="form-control" id="assetLatitude" name="assetLatitude">
<label class="form-check-label" for="mobile">pincode</label>
<input type="text" class="form-control" id="pincode" minlength="10" maxlength="10" name="mobile1" readonly>
</div>
</div>
<div class="col-md-3 alert-light border-0">
<div class="col-md-6 alert-light border-0">
<div class="mb-3">
<label class="form-check-label" for="assetLongitude">Longitude</label>
<input type="text" class="form-control" id="assetLongitude" name="assetLongitude">
<label class="form-check-label" for="mobile">property No</label>
<input type="text" class="form-control" id="property" minlength="10" maxlength="10" name="mobile1" readonly>
</div>
</div>
-->
<div class="col-md-12 alert-light border-0">
<div class="col-md-6 alert-light border-0">
<div class="mb-3">
<label class="form-check-label" for="garbageFile">Select Garbage Photo</label>
<input type="file" accept="image/*" class="form-control" name="garbagePhoto" id="garbageFile">
<label class="form-check-label" for="mobile">Street</label>
<input type="text" class="form-control" id="Street" minlength="10" maxlength="10" name="mobile1" readonly >
</div>
</div>
<div id="viewimg"></div>
<div class="col-md-6 alert-light border-0">
<div class="mb-3">
<label class="form-check-label" for="name">Remark</label>
<input type="text" class="form-control" id="Remark" name="Remark" required>
</div>
</div>
</div>
<hr class="m-0">
<div class="block-content block-content-full text-end">
<button type="button" class="btn btn-de-secondary btn-sm" data-bs-dismiss="modal">Close</button>
<button type="submit" class="btn btn-primary btn-sm">Save</button>
</div>
<button type="button" class="btn btn-de-secondary btn-sm" onclick="back()">Back</button>
<button type="submit" class="btn btn-danger btn-sm" >Deactive</button>
</div>
</form>
</div>
<!-- END Dummy content -->
</div>
<!-- END Page Content -->
</div>
<!-- -->
</main>
</div>
@ -342,385 +256,87 @@
<!-- END Footer -->
</div>
<!-- END Page Container -->
<div class="modal fade backdrop" id="getMobileNo" data-backdrop="static" tabindex="-1" role="dialog" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<form action="javascript:newUserCall();" >
<div class="block block-rounded block-themed block-transparent mb-0">
<div class="block-content">
<div class="mb-4">
<label class="form-label">Registed Mobile Number <span class="text-danger">*</span></label>
<input type="number" minlength="10" maxlength="10" class="form-control text-center" id="mobii" placeholder="Numbers Only" required />
</div>
</div>
<div class="block-content block-content-full text-end bg-body" id="mbutton">
<button type="button" class="btn btn-sm btn-alt-secondary" data-bs-dismiss="modal">Close</button>
<button type="submit" class="btn btn-sm btn-primary">Submit</button>
</div>
</div>
</form>
</div>
</div>
</div>
<!--end modal-->
<!-- PopUp Modal OTP Form -->
<div class="modal fade" id="otpForm" tabindex="-1" role="dialog" aria-labelledby="otpFormLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<form action="#" th:action="@{/otpForm}" th:object="${otpForm}" method="post" onsubmit="return verifyOtp();">
<div class="modal-header">
<h6 class="modal-title m-0" id="exampleModalDefaultLabel">OTP Login</h6>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div><!--end modal-header-->
<div class="modal-body">
<div class="row">
<div class="mb-3 text-center">
<img src="assets/media/images/mobileotp.png" width="50%" alt="Mobileotp">
</div>
<div class="mb-0 text-center">
<h4>OTP Verification</h4>
<p class="text-mute">Enter the OTP sent to <b class="text-info" id="mobilenotxt"></b></p>
<p class="text-danger" id="otperror"></p>
</div>
<div class="mb-3 text-center">
<div class="otp-input-box">
<input type="text" maxlength="1" class="otp-input" id="otp1" required/>
<input type="text" maxlength="1" class="otp-input" id="otp2" required/>
<input type="text" maxlength="1" class="otp-input" id="otp3" required/>
<input type="text" maxlength="1" class="otp-input" id="otp4" required/>
<input type="text" maxlength="1" class="otp-input" id="otp5" required/>
</div>
</div>
<div class="mb-3 text-center">
<div id="resend-container">
<p class="mb-0">Didn't receive OTP?</p>
<p class="mb-0 text-info" id="resendlink">Please wait..<span id="countdown">60</span>s</p>
</div>
</div>
</div><!--end row-->
</div><!--end modal-body-->
<div class="modal-footer">
<button type="button" class="btn btn-de-secondary btn-sm" data-bs-dismiss="modal">Close</button>
<button type="submit" class="btn btn-primary btn-sm">Verify OTP</button>
</div><!--end modal-footer-->
</form>
</div><!--end modal-content-->
</div><!--end modal-dialog-->
</div><!--end modal-->
<!--
Dashmix JS
Core libraries and functionality
webpack is putting everything together at assets/_js/main/app.js
-->
<script th:replace="fragments/script :: script"></script>
<script>
// ERP DATA CALL via API
//Getting Zone No
var x= localStorage.getItem("Garbage_App_user");
if(x!=null){
var hide = document.getElementById("login");
hide.style.display = "none";
document.getElementById("userNo").innerHTML=x;
}else{
var hide = document.getElementById("logout");
hide.style.display = "none";
}
function getrequest(){
if(x!=null){
window.location.href="complaintList?mobile="+x;
}
else{
$('#getMobileNo').modal({
backdrop: 'static',
keyboard: false
});
$('#getMobileNo').modal('show');
}
}
function newUserCall(){
var mob=$("#mobii").val();
localStorage.setItem("Garbage_App_user",mob);
window.location.href="complaintList?mobile="+mob;
}
function showAndHide(){
getrequest();
var hide =document.getElementById("logout");
hide.style.display = "block";
var hi =document.getElementById("login");
hi.style.display = "none";
}
function logout(){
localStorage.removeItem("Garbage_App_user");
var hide =document.getElementById("logout");
hide.style.display = "none";
location.reload();
}
//alert(x);
function getZoneNo() {
$.ajax({
type: "GET",
url: '/api/getZoneNo',
dataType: 'json',
success: function(bodyMessage) {
var tempJson = bodyMessage['ZoneDetailsResult'];
//alert("tempJson---:"+tempJson);
for (var i = 0; i < tempJson.length; i++) {
var tempJsonValue = tempJson[i]['ZoneId'];
//var tempJsonValue = tempJson[i]['ZoneName'].replace('N', '');
var tempJsonLabel = tempJson[i]['ZoneName'].replace('N', '');
$('#zone').append("<option value='" + tempJsonValue + "'>" + tempJsonLabel + "</option>");
}
}, error: function(e, ts, et)
{
// alert(ts)
}
});
}
//Getting Div
function getDiv($this) {
$('#division option:not(:first)').remove();
var zoneId = $this.value;
alert("zoneId---:"+zoneId);
$.ajax({
type: "GET",
url: '/api/getDiv',
data: {'zoneId':zoneId},
dataType: 'json',
success: function(bodyMessage) {
var tempJson = bodyMessage['DivisionDetailsResult'];
for (var i = 0; i < tempJson.length; i++) {
var tempJsonValue = tempJson[i]['DivisionName'].replace('N', '');
//var tempJsonValue = tempJson[i]['DivisionId'];
var tempJsonLabel = tempJson[i]['DivisionName'].replace('N', '');
$('#division').append("<option value='" + tempJsonValue + "'>" + tempJsonLabel + "</option>");
}
}, error: function(e, ts, et)
{
// alert(ts)
}
});
}
//Getting Area
function getArea($this) {
$('#area option:not(:first)').remove();
var divId = $this.value;
alert("DIVIDION---"+divId);
$.ajax({
type: "GET",
url: '/api/getArea',
data: {'divId':divId},
dataType: 'json',
success: function(bodyMessage) {
var tempJson = bodyMessage['AreaDetailsResult'];
for (var i = 0; i < tempJson.length; i++) {
var tempJsonValue = tempJson[i]['AreaId'];
var tempJsonLabel = tempJson[i]['AreaName'];
$('#area').append("<option value='" + tempJsonValue + "'>" + tempJsonLabel + "</option>");
}
}, error: function(e, ts, et)
{
// alert(ts)
}
});
}
//Getting Location
function getLocation($this) {
$('#locality option:not(:first)').remove();
var areaId = $this.value;
<script th:replace="fragments/script :: script"></script>
<script>
function reset(){
document.getElementById("reqForm").reset();
document.getElementById("reqForm1").reset();
}
function back(){
document.getElementById("req1").style.display="none";
document.getElementById("req").style.display="block";
}
function newUserCall(){
var mobile= document.getElementById('mobile').value;
$.ajax({
type: "GET",
url: '/api/getLocation',
data: {'areaId':areaId},
dataType: 'json',
success: function(bodyMessage) {
var tempJson = bodyMessage['LocationDetailsResult'];
for (var i = 0; i < tempJson.length; i++) {
var tempJsonValue = tempJson[i]['LocationId'];
var tempJsonLabel = tempJson[i]['LocationName'];
$('#locality').append("<option value='" + tempJsonValue + "'>" + tempJsonLabel + "</option>");
}
}, error: function(e, ts, et)
{
// alert(ts)
url: "/feedback/api/user",
data:{'mobile':mobile},
success: function(response) {
UserDetails(response) ;
}
});
}
//Getting Street
function getStreet($this) {
$('#street option:not(:first)').remove();
var locationId = $this.value;
return false;
$.ajax({
type: "GET",
url: '/api/getStreet',
data: {'locationId':locationId},
dataType: 'json',
success: function(bodyMessage) {
var tempJson = bodyMessage['StreetDetailsResult'];
for (var i = 0; i < tempJson.length; i++) {
var tempJsonValue = tempJson[i]['StreetId'];
var tempJsonLabel = tempJson[i]['StreetName'];
$('#street').append("<option value='" + tempJsonValue + "'>" + tempJsonLabel + "</option>");
}
}, error: function(e, ts, et)
{
// alert(ts)
}
});
}
}
function UserDetails(res) {
console.log(res);
if(res.Message=="Success"){
document.getElementById("name1").value=res.Profile[0].NAME;
document.getElementById("mobile1").value=res.Profile[0].MOBILE;
document.getElementById("email").value=res.Profile[0].EMAIL;
document.getElementById("doorno").value=res.Profile[0].DOORNO;
document.getElementById("area").value=res.Profile[0].AREA;
document.getElementById("aadhar").value=res.Profile[0].AADHAA_NO;
document.getElementById("pincode").value=res.Profile[0].PINCODE;
document.getElementById("property").value=res.Profile[0].PROPERTYTAXNO;
document.getElementById("Street").value=res.Profile[0].STREET;
document.getElementById("req").style.display="none";
document.getElementById("req1").style.display="block";
}else if(res.ResultStatus=="false"){
alert("No Data Found");
}
else{
alert("your Account is already Deactived ");
}
function login(){
if (confirm("We sending you OTP.\nPress yes If Mobile No Is Correct ! ")) {
var mob = $('#mobile').val();
// alert(mob+"---");
sendOTP();
$('#otpForm').modal({
backdrop: 'static',
keyboard: false
});
$('#otpForm').modal('show');
return false;
} else {
alert("Please help us.\nTo make City clean and green");
return false;
}
}
function sendOTP(){
var x = document.getElementById("mobile").value
var mobileNo = $("#mobile").val();
$("#mobile").val(mobileNo); // Set final mobile number after request otp
$("#mobilenotxt").html(mobileNo);
$('#newForm').modal('hide');
function deactive(){
var mobile= document.getElementById('mobile1').value;
if(confirm("Are you sure to Deactive the Account ?")){
$.ajax({
type: "GET",
url: '/api/sendOTP',
data: {'mobileNo':mobileNo,'purpose':'New User'},
dataType: 'json',
success: function(bodyMessage) {
if(bodyMessage!="Error"){
$('#otpForm').modal({
backdrop: 'static',
keyboard: false
});
$('#otpForm').modal('show');
// Resend OTP Link function /////////////////////
var resendTimeout;
var resendLink = $("#resend-link");
$("#resend-link").html('Please wait..<span id="countdown">60</span>s');
var countdown = $("#countdown");
// Function to start the countdown timer
function startCountdown() {
var timeleft = 60;
countdown.text(timeleft);
resendTimeout = setInterval(function () {
timeleft--;
countdown.text(timeleft);
if (timeleft <= 0) {
clearInterval(resendTimeout);
$("#resendlink").html('<a href="#" id="resend-link" class="text-info" onclick="return sendOTP();">Resend OTP</a>');
}
}, 1000);
}
startCountdown(); // Start Resend OTP count
/////////////////////////////////////////////////
}else{
alert("OTP Not Send!!!");
url: "/feedback/api/deactive",
data:{'mobile':mobile},
success: function(response) {
console.log(response)
alert("Successfully deactived") ;
window.location.reload();
}
}
});
return false;
}
//Verify OTP
function verifyOtp(){
// Get all the input fields with class `otp-input`
var otpInputs = $('.otp-input');
// Get the OTP value as a string
var otpValue = '';
otpInputs.each(function() {
otpValue += $(this).val();
});
//document.getElementById("saveFeedbackForm").submit();
$.ajax({
type: "GET",
url: '/api/verifyOTP',
data: {'otp':otpValue},
dataType: 'text',
success: function(bodyMessage) {
if(bodyMessage.trim() == "Success"){
console.log("OTP is Verified!!!");
localStorage.setItem("Garbage_App_user", $("#mobile").val());
document.getElementById("garbageform").submit();
} else {
$("#otperror").html("OTP is Incorrect!!!");
// do something here
}
},
error: function() {
console.log("Error");// Handle error here
else{
alert("We are here to help you.")
}
});
return false;
}
}
$(function(){
getZoneNo();
//callmodal(0);
});
</script>
</body>
</html>
Loading…
Cancel
Save