You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1913 lines
85 KiB
1913 lines
85 KiB
package com.gcc.communityHall.controller;
|
|
|
|
|
|
|
|
import java.io.File;
|
|
import java.io.FileOutputStream;
|
|
import java.io.IOException;
|
|
import java.time.LocalDate;
|
|
import java.time.LocalDateTime;
|
|
import java.time.format.DateTimeFormatter;
|
|
import java.util.ArrayList;
|
|
import java.util.Arrays;
|
|
import java.util.Date;
|
|
import java.util.Enumeration;
|
|
import java.util.HashMap;
|
|
import java.util.HashSet;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.Optional;
|
|
import java.util.Random;
|
|
import java.util.stream.Collector;
|
|
import java.util.stream.Collectors;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.http.HttpEntity;
|
|
import org.springframework.http.HttpHeaders;
|
|
import org.springframework.http.HttpMethod;
|
|
import org.springframework.http.HttpStatus;
|
|
import org.springframework.http.ResponseEntity;
|
|
import org.springframework.ui.Model;
|
|
import org.springframework.validation.annotation.Validated;
|
|
import org.springframework.web.bind.annotation.GetMapping;
|
|
import org.springframework.web.bind.annotation.ModelAttribute;
|
|
import org.springframework.web.bind.annotation.PathVariable;
|
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
import org.springframework.web.client.RestTemplate;
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
import org.springframework.web.multipart.MultipartHttpServletRequest;
|
|
import org.thymeleaf.context.Context;
|
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
import com.gcc.communityHall.dto.BookingDetailsDTO;
|
|
import com.gcc.communityHall.dto.EmployeeDetails;
|
|
import com.gcc.communityHall.dto.EmployeeDetailsResponse;
|
|
import com.gcc.communityHall.dto.ErrorResponseDto;
|
|
import com.gcc.communityHall.dto.FamilyPensionerDetails;
|
|
import com.gcc.communityHall.dto.FamilyPensionerDetailsResponse;
|
|
import com.gcc.communityHall.dto.PensionerDetails;
|
|
import com.gcc.communityHall.dto.PensionerDetailsResponse;
|
|
import com.gcc.communityHall.entity.BookingCalendar;
|
|
import com.gcc.communityHall.entity.BookingDetails;
|
|
import com.gcc.communityHall.entity.Counsellordetails;
|
|
import com.gcc.communityHall.entity.CounterDetails;
|
|
import com.gcc.communityHall.entity.CounterRefundList;
|
|
import com.gcc.communityHall.entity.FloorDetails;
|
|
import com.gcc.communityHall.entity.HallDetails;
|
|
import com.gcc.communityHall.entity.RefundTransaction;
|
|
import com.gcc.communityHall.entity.SmsSender;
|
|
import com.gcc.communityHall.entity.UserHistory;
|
|
import com.gcc.communityHall.entity.Users;
|
|
import com.gcc.communityHall.entity.BookingDetails.BookingStatus;
|
|
import com.gcc.communityHall.entity.BookingDetails.RefundStatus;
|
|
import com.gcc.communityHall.entity.BookingHistory;
|
|
import com.gcc.communityHall.entity.Users.userStatus;
|
|
import com.gcc.communityHall.entity.Users.userType;
|
|
import com.gcc.communityHall.exception.SlotOccupiedException;
|
|
import com.gcc.communityHall.others.AppConfig;
|
|
import com.gcc.communityHall.others.UserSession;
|
|
import com.gcc.communityHall.paymentService.entity.RefundResponse;
|
|
import com.gcc.communityHall.paymentService.entity.TransactionResponse;
|
|
import com.gcc.communityHall.paymentService.refund.DTO.TransactionRefundResponse;
|
|
import com.gcc.communityHall.paymentService.repository.TransRefundResRepository;
|
|
import com.gcc.communityHall.paymentService.service.PaymentGatewayServiceImpl;
|
|
import com.gcc.communityHall.repository.BookingCalendarRepository;
|
|
import com.gcc.communityHall.repository.BookingDetailsRepository;
|
|
import com.gcc.communityHall.repository.BookingHistoryRepository;
|
|
import com.gcc.communityHall.repository.CounsellorDetailsRepository;
|
|
import com.gcc.communityHall.repository.FloorDetailsRepository;
|
|
import com.gcc.communityHall.repository.HallDetailsRepository;
|
|
import com.gcc.communityHall.repository.RefundTransactionRepository;
|
|
import com.gcc.communityHall.repository.SmsSenderRepository;
|
|
import com.gcc.communityHall.repository.UsersRepository;
|
|
import com.gcc.communityHall.service.BookingService;
|
|
import com.gcc.communityHall.service.CalendarService;
|
|
import com.gcc.communityHall.service.CounterService;
|
|
import com.gcc.communityHall.service.HallDetailService;
|
|
import com.gcc.communityHall.service.UserService;
|
|
import com.gcc.communityHall.service.Impl.WhatsappMsgServiceImpl;
|
|
|
|
import io.swagger.v3.oas.annotations.Operation;
|
|
import io.swagger.v3.oas.annotations.media.Content;
|
|
import io.swagger.v3.oas.annotations.media.Schema;
|
|
import io.swagger.v3.oas.annotations.responses.ApiResponse;
|
|
import io.swagger.v3.oas.annotations.responses.ApiResponses;
|
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
import jakarta.servlet.http.HttpServletRequest;
|
|
import jakarta.servlet.http.HttpSession;
|
|
import lombok.AllArgsConstructor;
|
|
import static org.hibernate.query.sqm.tree.SqmNode.log;
|
|
import org.springframework.web.bind.annotation.GetMapping;
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
import org.springframework.core.io.ClassPathResource;
|
|
import org.springframework.util.StreamUtils;
|
|
|
|
import java.io.IOException;
|
|
import java.nio.charset.StandardCharsets;
|
|
|
|
|
|
@Tag(
|
|
name = "CRUD REST APIs for User in CommunityHall",
|
|
description = "CRUD REST APIs in CommunityHall to CREATE, UPDATE, FETCH AND DELETE Booking details"
|
|
)
|
|
@RestController
|
|
@RequestMapping("/communityhall/user/api")
|
|
@AllArgsConstructor
|
|
@Validated
|
|
public class UserAPIController {
|
|
@Autowired
|
|
private HallDetailsRepository hallDetailsRepository;
|
|
@Autowired
|
|
private AppConfig appConfig;
|
|
@Autowired
|
|
private UserSession userSession;
|
|
@Autowired
|
|
private SmsSenderRepository smsSenderRepository;
|
|
@Autowired
|
|
private BookingCalendarRepository bookingCalendarRepository;
|
|
@Autowired
|
|
private UserService userservice;
|
|
|
|
@Autowired
|
|
private BookingService bookingService;
|
|
|
|
@Autowired
|
|
private UserService userService;
|
|
|
|
@Autowired
|
|
private CounterService counterservice;
|
|
|
|
@Autowired
|
|
private BookingDetailsRepository bookingDetailsRepository;
|
|
|
|
@Autowired
|
|
private BookingHistoryRepository bookingHistoryRepository;
|
|
|
|
@Autowired
|
|
private CounterService counterService;
|
|
|
|
@Autowired
|
|
private UserService userServices;
|
|
|
|
@Autowired
|
|
private HallDetailService hallDetailService;
|
|
|
|
@Autowired
|
|
private CalendarService calendarService;
|
|
|
|
@Autowired
|
|
private UsersRepository usersRepository;
|
|
|
|
private final String uploadDirectory;
|
|
|
|
@Autowired
|
|
private WhatsappMsgServiceImpl whatsappMsgServiceImpl;
|
|
|
|
@Autowired
|
|
private PaymentGatewayServiceImpl PaymentGatewayServiceImpl;
|
|
|
|
@Autowired
|
|
private TransRefundResRepository transRefundResRepository;
|
|
|
|
@Autowired
|
|
public UserAPIController(@Value("${file.upload.directory}") String uploadDirectory) {
|
|
this.uploadDirectory = uploadDirectory;
|
|
}
|
|
|
|
@Operation(
|
|
summary = "Retrieving the HallDetails by HallId REST API",
|
|
description = "REST API to Retrieving the HallDetails by HallId"
|
|
)
|
|
@ApiResponses({
|
|
@ApiResponse(
|
|
responseCode = "200",
|
|
description = "HTTP Status UPDATED"
|
|
),
|
|
@ApiResponse(
|
|
responseCode = "500",
|
|
description = "HTTP Status Internal Server Error",
|
|
content = @Content(
|
|
schema = @Schema(implementation = ErrorResponseDto.class)
|
|
)
|
|
)
|
|
}
|
|
)
|
|
//retrieving Hall Details by HallId
|
|
@GetMapping("/gethalldetails/{hallId}")
|
|
public ResponseEntity<HallDetails> getHallDetails(@PathVariable int hallId) {
|
|
Optional<HallDetails> hallDetails = hallDetailsRepository.findById(hallId);
|
|
return hallDetails.map(ResponseEntity::ok)
|
|
.orElseGet(() -> ResponseEntity.status(404).body(null));
|
|
}
|
|
|
|
@Operation(
|
|
summary = "Retrieving the Hallnames only REST API",
|
|
description = "REST API to Retrieving the Hallnames only"
|
|
)
|
|
|
|
|
|
@GetMapping("/gethallnames")
|
|
public ResponseEntity<List<HallDetails>> getHallNames() {
|
|
List<HallDetails> hallDetailsList = hallDetailsRepository.findActiveHalls();
|
|
List<HallDetails> hallDataList = new ArrayList<>();
|
|
for (HallDetails hallDetails : hallDetailsList) {
|
|
HallDetails hallData = new HallDetails();
|
|
hallData.setHallId(hallDetails.getHallId());
|
|
hallData.setHallName(hallDetails.getHallName());
|
|
hallDataList.add(hallData);
|
|
}
|
|
return ResponseEntity.ok(hallDataList); // Return ResponseEntity with list of HallData objects containing only id and hallname
|
|
}
|
|
|
|
|
|
@Operation(
|
|
summary = "Send OTP REST API",
|
|
description = "REST API For Sending OTP to user"
|
|
)
|
|
//SendOTP
|
|
@GetMapping(value = "/sendOTP")
|
|
public String sendOtp(HttpServletRequest request, @RequestParam Long mobileNo,@RequestParam String purpose) {
|
|
|
|
Long MobileNo=mobileNo;
|
|
//System.out.println(purpose);
|
|
//System.out.print("\n MobileNo---:"+mobileNo);
|
|
Random rand = new Random();
|
|
int otp = rand.nextInt(90000) + 10000;
|
|
// int otp = 11111;
|
|
System.out.print("\n otp---:"+otp);
|
|
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd-MMM-yyyy%20HH:mm");
|
|
LocalDateTime now = LocalDateTime.now();
|
|
//System.out.println(dtf.format(now));
|
|
String key="pfTEYN6H";
|
|
String generatedToken = "Welcome to GCC! Your OTP for GCC Community Centre is "+otp;
|
|
String urlString = "https://tmegov.onex-aura.com/api/sms?key=pfTEYN6H&to="+mobileNo+"&from=GCCCRP&body=Welcome to GCC! Your OTP for GCC Community Centre booking is "+otp+"&entityid=1401572690000011081&templateid=1407172346444550398";
|
|
System.out.println(urlString);
|
|
System.out.println("\n urlString---: "+urlString);
|
|
String bodyMessage = ""+otp;
|
|
try {
|
|
RestTemplate restTemplate = new RestTemplate();
|
|
String Response = restTemplate.getForObject(urlString, String.class);
|
|
bodyMessage=Response;
|
|
SmsSender sms = new SmsSender();
|
|
sms.setPhone(MobileNo);
|
|
sms.setCdate(new Date());
|
|
sms.setBodyMsg(bodyMessage);
|
|
sms.setPurpose(purpose);
|
|
smsSenderRepository.save(sms);
|
|
|
|
String whatsappMsg="https://media.smsgupshup.com/GatewayAPI/rest?userid=2000233507&password=h2YjFNcJ&send_to="+MobileNo+"&v=1.1&format=json&msg_type=TEXT&method=SENDMESSAGE&msg=Welcome+to+GCC%21+%0A%0AYour+OTP+for+GCC+Community+Centre+is+"+otp+"+.";
|
|
String sendMsg = whatsappMsgServiceImpl.sendMsg(whatsappMsg);
|
|
System.out.println("sendwhatsuprepsosne===="+sendMsg);
|
|
} catch (Exception e) {
|
|
// System.out.print("ERROR in Sending---: "+e);
|
|
bodyMessage = "Error";
|
|
}
|
|
|
|
HttpSession session = request.getSession();
|
|
session.setAttribute("otp", otp);
|
|
return bodyMessage;
|
|
}
|
|
|
|
@Operation(
|
|
summary = "Vetify OTP REST API",
|
|
description = "REST API For verifying OTP"
|
|
)
|
|
//VerifyOTP
|
|
@GetMapping(value = "/verifyOTP")
|
|
public String verifyOtp(HttpServletRequest request, @RequestParam String otp,@RequestParam long mobileNo) {
|
|
HttpSession session = request.getSession();
|
|
try {
|
|
Integer session_otp = (Integer) session.getAttribute("otp");
|
|
System.out.println("session_otp---:" + session_otp);
|
|
Integer entered_otp = Integer.parseInt(otp);
|
|
|
|
if (session_otp != null && session_otp.equals(entered_otp)) {
|
|
System.out.println("Entered OTP Correct user API");
|
|
Users user = userservice.findByMobileno(mobileNo);
|
|
if(user!=null) {
|
|
userSession.setMobileno(user.getMobileNo());
|
|
//userSession.setUserType(user.getUserType());
|
|
userSession.setDispayName(user.getName());
|
|
userSession.setUserId(user.getUserId());
|
|
String userType = user.getUsertype().toString();
|
|
userSession.setUserType(userType);
|
|
}
|
|
session.setAttribute("verifiedotp", "success");
|
|
return "Success";
|
|
|
|
} else {
|
|
System.out.println("Incorrect OTP. Please enter correct OTPs.");
|
|
session.setAttribute("user","");
|
|
session.setAttribute("mobileNo", "");
|
|
session.setAttribute("id","");
|
|
session.setAttribute("verifiedotp", "error");
|
|
return "Error";
|
|
}
|
|
} catch (NumberFormatException e) {
|
|
//System.out.println("Invalid OTP format: " + otp);
|
|
return "Error";
|
|
} catch (Exception e) {
|
|
// System.out.println("Error verifying OTP: " + e.getMessage());
|
|
return "Error";
|
|
}
|
|
}
|
|
@GetMapping(value = "/verifyofficialOTP")
|
|
public String verifyOtp(HttpServletRequest request, @RequestParam String otp) {
|
|
HttpSession session = request.getSession();
|
|
try {
|
|
Integer session_otp = (Integer) session.getAttribute("otp");
|
|
// System.out.println("session_otp---:" + session_otp);
|
|
Integer entered_otp = Integer.parseInt(otp);
|
|
|
|
if (session_otp != null && session_otp.equals(entered_otp)) {
|
|
//System.out.println("Entered OTP Correct");
|
|
session.setAttribute("verifiedotp", "success");
|
|
return "Success";
|
|
} else {
|
|
// System.out.println("Incorrect OTP. Please enter correct OTPs.");
|
|
session.setAttribute("verifiedotp", "error");
|
|
return "Error";
|
|
}
|
|
} catch (NumberFormatException e) {
|
|
// System.out.println("Invalid OTP format: " + otp);
|
|
return "Error";
|
|
} catch (Exception e) {
|
|
//System.out.println("Error verifying OTP: " + e.getMessage());
|
|
return "Error";
|
|
}
|
|
}
|
|
|
|
@Operation(
|
|
summary = "User Mobileno Validation REST API",
|
|
description = "REST API For Validating User with Mobileno"
|
|
)
|
|
//Validating User with the mobileno
|
|
@GetMapping(value = "/checkMobileExits")
|
|
public String checkMobileExits(@RequestParam long mobileno) {
|
|
try {
|
|
Users form = userservice.findByMobileno(mobileno);
|
|
if (form != null) {
|
|
return "success";
|
|
} else {
|
|
return "error";
|
|
}
|
|
} catch (NumberFormatException e) {
|
|
// Handle the case where the phone number cannot be parsed as a Long
|
|
return "error";
|
|
} catch (Exception e) {
|
|
// Handle any other unexpected exceptions
|
|
return "error";
|
|
|
|
}
|
|
}
|
|
|
|
@Operation(
|
|
summary = "Cousellor Mobileno Validation REST API",
|
|
description = "REST API For Validating the Counsellor Mobileno"
|
|
)
|
|
//Counsellor Mobile no Validation
|
|
@GetMapping(value = "/checkCounsellorMobileExits")
|
|
public ResponseEntity<String> checkCounsellorMobileExits(@RequestParam long mobileno) {
|
|
// Find the counsellor by the provided mobile number
|
|
Counsellordetails counsellor = userservice.findByMobile(mobileno); // This checks both mobileNo1 and mobileNo2 in the counsellor table
|
|
if (counsellor == null) {
|
|
return ResponseEntity.status(HttpStatus.NOT_FOUND).body("Counsellor Mobile Number Not Found");
|
|
}
|
|
|
|
// Check if mobileNo1 or mobileNo2 of the counsellor is already used in the Users table
|
|
boolean isMobile1Used = usersRepository.existsByMobileNo(counsellor.getMobile1());
|
|
boolean isMobile2Used = usersRepository.existsByMobileNo(counsellor.getMobile2());
|
|
|
|
if (isMobile1Used || isMobile2Used) {
|
|
return ResponseEntity.status(HttpStatus.CONFLICT).body("One of the counsellor's mobile numbers is already used.");
|
|
}
|
|
|
|
// If no conflict, return success with the counsellor's name
|
|
return ResponseEntity.ok(counsellor.getName());
|
|
}
|
|
|
|
|
|
|
|
@GetMapping("/checkEmployee")
|
|
public Map<String, Boolean> checkEmployee(@RequestParam String id) {
|
|
boolean isRegistered = usersRepository.existsByGovernmentId(id);
|
|
Map<String, Boolean> response = new HashMap<>();
|
|
response.put("isRegistered", isRegistered);
|
|
return response;
|
|
}
|
|
|
|
|
|
@Operation(
|
|
summary = "Retriving the zone REST API",
|
|
description = "REST API to Retriev the zone for displaying in Frontend"
|
|
)
|
|
//retrieving the zone
|
|
@GetMapping(value = "/getZone")
|
|
public List<Map<String, Object>> getZone() {
|
|
return hallDetailsRepository.getZoneAndDivision();
|
|
}
|
|
|
|
@Operation(
|
|
summary = "Zones by Hall REST API",
|
|
description = "REST API to Retrieve the zone by Hall for displaying in GccBlocking page"
|
|
)
|
|
//retrieving the zones by hall
|
|
@GetMapping(value = "/hallsbyzone")
|
|
public List<Map<String, Object>> getHallsByZone(@RequestParam(required = false) String zones) {
|
|
if (zones == null || zones.isEmpty()) {
|
|
return hallDetailsRepository.getAllHalls();
|
|
} else {
|
|
List<String> zoneList = Arrays.asList(zones.split(","));
|
|
return hallDetailsRepository.getHallsByZones(zoneList);
|
|
}
|
|
}
|
|
|
|
@Operation(
|
|
summary = "Past Data from the booking Calendar Hall REST API",
|
|
description = "REST API to Retrieve the Pat Data from booking calendar"
|
|
)
|
|
//Getting the Past Data from the Calendar
|
|
@GetMapping("/getPastData")
|
|
public List<BookingCalendar> getPastData(@RequestParam("hall_id") int hall_id){
|
|
List<BookingCalendar> data = new ArrayList();
|
|
data = bookingService.getPastData(hall_id);
|
|
if(data!=null) {
|
|
return data;
|
|
}
|
|
return data;
|
|
}
|
|
|
|
@Operation(
|
|
summary = "Pensioner Details ERP REST API",
|
|
description = "REST API to retrieving the Pensioner Details From ERP"
|
|
)
|
|
//retrieving the Pensioner Details From ERP
|
|
@GetMapping("/PensionerDetail")
|
|
public PensionerDetailsResponse getPensionerDetails(@RequestParam("pensionerId") String pensionerId) {
|
|
//System.out.println(pensionerId);
|
|
RestTemplate restTemplate = new RestTemplate();
|
|
String url = "https://erp.chennaicorporation.gov.in/pgr/external/mobileservice?serviceId=getPensionerDetailsList&pensionerId="+pensionerId;
|
|
|
|
|
|
ResponseEntity<String> responseEntity = restTemplate.getForEntity(url, String.class);
|
|
|
|
// Extract the JSON string from the response body
|
|
String jsonString = responseEntity.getBody();
|
|
|
|
// Extract the Java object from the response body
|
|
ObjectMapper objectMapper = new ObjectMapper();
|
|
try {
|
|
PensionerDetailsResponse pensionerResponse = objectMapper.readValue(jsonString, PensionerDetailsResponse.class);
|
|
|
|
// Now you can access the pensionerResponse object as usual
|
|
// e.g., pensionerResponse.getPensioners() to get the list of pensioners
|
|
return pensionerResponse;
|
|
|
|
} catch (Exception e) {
|
|
|
|
e.printStackTrace();
|
|
return null;
|
|
}
|
|
//return null;
|
|
|
|
}
|
|
|
|
@Operation(
|
|
summary = "Employee Details ERP REST API",
|
|
description = "REST API to retrieving the Employee Details From ERP"
|
|
)
|
|
@GetMapping("/EmployeeDetails")
|
|
public EmployeeDetailsResponse getEmployeeDetails(@RequestParam("employeeId") Long employeeId) {
|
|
//System.out.println("Employee ID:"+employeeId);
|
|
RestTemplate restTemplate = new RestTemplate();
|
|
String url = "https://erp.chennaicorporation.gov.in/pgr/external/mobileservice?serviceId=getEmployeeDetail&EmployeeID="+employeeId;
|
|
|
|
|
|
ResponseEntity<String> responseEntity = restTemplate.getForEntity(url, String.class);
|
|
|
|
// Extract the JSON string from the response body
|
|
String jsonString = responseEntity.getBody();
|
|
|
|
// Extract the Java object from the response body
|
|
ObjectMapper objectMapper = new ObjectMapper();
|
|
try {
|
|
EmployeeDetailsResponse employeeResponse = objectMapper.readValue(jsonString, EmployeeDetailsResponse.class);
|
|
|
|
// Now you can access the pensionerResponse object as usual
|
|
// e.g., pensionerResponse.getPensioners() to get the list of pensioners
|
|
return employeeResponse;
|
|
|
|
} catch (Exception e) {
|
|
|
|
e.printStackTrace();
|
|
return null;
|
|
}
|
|
//return null;
|
|
|
|
}
|
|
|
|
@Operation(
|
|
summary = "FamilyPensioner Details ERP REST API",
|
|
description = "REST API to retrieving the FamilyPensioner Details From ERP"
|
|
)
|
|
//retrieving the FamilyPensionerDetails Details From ERP
|
|
@GetMapping("/FamilyPensionerDetail")
|
|
public FamilyPensionerDetailsResponse getFamilyPensionerDetails(@RequestParam("id") Long id) {
|
|
RestTemplate restTemplate = new RestTemplate();
|
|
String url = "https://erp.chennaicorporation.gov.in/pgr/external/mobileservice?serviceId=getFamPensionerDetailsList&familPensionId="+id;
|
|
|
|
|
|
ResponseEntity<String> responseEntity = restTemplate.getForEntity(url, String.class);
|
|
|
|
// Extract the JSON string from the response body
|
|
String jsonString = responseEntity.getBody();
|
|
|
|
// Extract the Java object from the response body
|
|
ObjectMapper objectMapper = new ObjectMapper();
|
|
try {
|
|
FamilyPensionerDetailsResponse familyPensionerDetailsResponse = objectMapper.readValue(jsonString, FamilyPensionerDetailsResponse.class);
|
|
|
|
// Now you can access the pensionerResponse object as usual
|
|
// e.g., pensionerResponse.getPensioners() to get the list of pensioners
|
|
return familyPensionerDetailsResponse;
|
|
|
|
} catch (Exception e) {
|
|
|
|
e.printStackTrace();
|
|
return null;
|
|
}
|
|
}
|
|
|
|
@Operation(
|
|
summary = "Hall Details coordinates REST API",
|
|
description = "REST API to retrieving the Hall Details coordinates for Map"
|
|
)
|
|
//retrieving the All Hall Details coordinates
|
|
@GetMapping("/getallhallcoordinates")
|
|
public List<Map<String, Object>> getAllHallCoordinates() {
|
|
List<HallDetails> allHallDetails = hallDetailsRepository.findActiveHalls();
|
|
return allHallDetails.stream().map(this::extractRequiredDetails).collect(Collectors.toList());
|
|
}
|
|
|
|
private Map<String, Object> extractRequiredDetails(HallDetails hallDetails) {
|
|
Map<String, Object> details = new HashMap<>();
|
|
|
|
details.put("latitude", hallDetails.getLatitude());
|
|
details.put("longitude", hallDetails.getLongitude());
|
|
details.put("hallId", String.valueOf(hallDetails.getHallId()));
|
|
details.put("hallName", hallDetails.getHallName());
|
|
details.put("seatingCapacity",String.valueOf(hallDetails.getSeatingCapacity()) );
|
|
details.put("parkingCapacity", hallDetails.getParkingCapacity());
|
|
details.put("hallImage", hallDetails.getHallImagesList());
|
|
details.put("fullDayRent", hallDetails.getFullDayRent());
|
|
details.put("halfDayRent", hallDetails.getHalfDayRent());
|
|
details.put("depositAmount", hallDetails.getDepositAmount());
|
|
details.put("area", hallDetails.getArea());
|
|
details.put("street", hallDetails.getStreet());
|
|
details.put("landMark", hallDetails.getLandMark());
|
|
details.put("doorNo", hallDetails.getDoorNo());
|
|
details.put("hallArea", hallDetails.getHallArea());
|
|
return details;
|
|
}
|
|
|
|
@Operation(
|
|
summary = "Booking Limitation Details ERP REST API",
|
|
description = "REST API to check the Booking Limitation & UserStatus pending"
|
|
)
|
|
//Booking Limitation & UserStatus pending
|
|
@GetMapping("/bookingLimit")
|
|
public String CheckbookingLimitation(Model model) {
|
|
int userId = userSession.getUserId();
|
|
Users userById = userService.getUserById(userId);
|
|
if(userById!=null && userById.getUserstatus()==Users.userStatus.PENDING) {
|
|
return "pending";
|
|
}
|
|
if (userById != null && userById.getUserstatus() == Users.userStatus.REJECTED) {
|
|
return "rejected";
|
|
}
|
|
int checkUserBookingLimitation = bookingService.checkUserBookinglimitation(userId);
|
|
// System.out.println("checkUserBookingLimitation="+checkUserBookingLimitation);
|
|
if (checkUserBookingLimitation < 2) {
|
|
// System.out.println("checkUserBookingLimitationss="+checkUserBookingLimitation);
|
|
return "success";
|
|
}
|
|
return "failure";
|
|
}
|
|
|
|
@Operation(
|
|
summary = "Counter Booikng Limit REST API",
|
|
description = "REST API to check the Counter Booking Limitation"
|
|
)
|
|
@GetMapping("/counterbookinglimit")
|
|
public String checkCounterBookingLimitation(@RequestParam long mobileNo) {
|
|
Users user = userService.getUserDetailsByMobileNo(mobileNo);
|
|
|
|
if (user == null) {
|
|
// System.err.println("User not found for mobile number: " + mobileNo);
|
|
return "checkmobilenoexists"; // You can return a different status or handle it accordingly
|
|
}
|
|
int userId = user.getUserId();
|
|
int checkUserBookingLimitation = bookingService.checkUserBookinglimitation(userId);
|
|
|
|
if (checkUserBookingLimitation >= 2) {
|
|
// System.err.println("bookinglimitreached");
|
|
return "bookinglimitreached";
|
|
}
|
|
if (user != null && !user.isActive()) {
|
|
return "deactive";
|
|
}
|
|
|
|
return "checkmobilenoexists";
|
|
}
|
|
|
|
@Operation(
|
|
summary = "User Status Pending REST API",
|
|
description = "REST API to check User Status is Pending and not allow user to login"
|
|
)
|
|
//UserStatus pending
|
|
@GetMapping("/checkuserstatus")
|
|
public String checkUserStatus(@RequestParam long mobileNo) {
|
|
Users user = userService.getUserDetailsByMobileNo(mobileNo); // Assuming you have a method to retrieve a user by mobile number
|
|
if (user != null && user.getUserstatus() == Users.userStatus.PENDING) {
|
|
return "pending";
|
|
}
|
|
if (user != null && !user.isActive()) {
|
|
return "deactive";
|
|
}
|
|
return "checkmobileexist";
|
|
}
|
|
|
|
@Operation(
|
|
summary = "Username and Mobileno from userSession REST API",
|
|
description = "REST API to get the Username and Mobileno from userSession"
|
|
)
|
|
//Getting Username and Mobileno from userSession
|
|
@GetMapping("/getUsername")
|
|
public ResponseEntity<Map<String, Object>> checkUsername() {
|
|
Map<String, Object> userDetails = new HashMap<>();
|
|
userDetails.put("displayName", userSession.getDispayName());
|
|
userDetails.put("mobileNo", userSession.getMobileno());
|
|
userDetails.put("userType", userSession.getUserType());
|
|
|
|
return ResponseEntity.ok(userDetails);
|
|
}
|
|
|
|
@GetMapping(value = "/getZonehalls")
|
|
public List<Map<String, Object>> getZonehalls() {
|
|
return hallDetailsRepository.getZonesAndDivisions();
|
|
}
|
|
|
|
@Operation(
|
|
summary = "ZONES from ERP REST API",
|
|
description = "REST API to get the zones from ERP"
|
|
)
|
|
// Rest Api From ERP for getting Zones
|
|
@GetMapping(value = "/getZoneNo")
|
|
public String getZoneNo() {
|
|
|
|
String urlString = appConfig.getErpUrl()+"serviceId=getZones";
|
|
ResponseEntity<String> response = null;
|
|
RestTemplate restTemplate = new RestTemplate();
|
|
String bodyMessage = "";
|
|
HttpHeaders headers = new HttpHeaders();
|
|
try {
|
|
HttpEntity<String> postData = new HttpEntity<String>(headers);
|
|
response = restTemplate.exchange(urlString, HttpMethod.POST, postData, String.class);
|
|
bodyMessage = response.getBody();
|
|
//System.out.println("BodyMessage" + bodyMessage);
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
//System.out.print("\n ERROR---: " + e);
|
|
bodyMessage = "Error";
|
|
}
|
|
return bodyMessage;
|
|
}
|
|
|
|
@Operation(
|
|
summary = "DIVISIONS from ERP REST API",
|
|
description = "REST API to get the divisions from ERP"
|
|
)
|
|
// Rest Api From ERP for getting Divisions
|
|
@GetMapping(value = "/getDiv")
|
|
public String getDiv(@RequestParam String zoneId) {
|
|
String urlString = appConfig.getErpUrl()+"serviceId=getWards&Zoneid="+zoneId+"";
|
|
ResponseEntity<String> response = null;
|
|
RestTemplate restTemplate = new RestTemplate();
|
|
String bodyMessage = "";
|
|
HttpHeaders headers = new HttpHeaders();
|
|
try {
|
|
HttpEntity<String> postData = new HttpEntity<String>(headers);
|
|
response = restTemplate.exchange(urlString, HttpMethod.POST, postData, String.class);
|
|
bodyMessage = response.getBody();
|
|
//System.out.println("bodyMessage" + bodyMessage);
|
|
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
//System.out.print("\n ERROR---: " + e);
|
|
bodyMessage = "Error";
|
|
}
|
|
return bodyMessage;
|
|
}
|
|
|
|
@Operation(
|
|
summary = "HAlls By Division ERP REST API",
|
|
description = "REST API to get the HAlls by Divisions"
|
|
)
|
|
//retrieving the Halls By Division
|
|
@GetMapping("/hallsbydivision")
|
|
public List<HallDetails> getHallsByDivision(@RequestParam("division") String division) {
|
|
return hallDetailsRepository.findByDivision(division);
|
|
}
|
|
|
|
@Operation(
|
|
summary = "HAlls By zone ERP REST API",
|
|
description = "REST API to get the HAlls by zone"
|
|
)
|
|
@GetMapping("/findhallsbyzone")
|
|
public List<HallDetails> getHallsByzone(@RequestParam("zone") String zone) {
|
|
return hallDetailsRepository.findByZone(zone);
|
|
}
|
|
|
|
@Operation(
|
|
summary = "Booking Details By bookingId ERP REST API",
|
|
description = "REST API to get the Booking Details based on BookingId"
|
|
)
|
|
//retrieving the Booking Details based on BookingId
|
|
@GetMapping("/viewAllBookingDetails")
|
|
public ResponseEntity<?> getUserDetailsByBookingId(@RequestParam("bookingId") int bookingId) {
|
|
BookingDetails bookingDetails = bookingService.getBookingsById(bookingId);
|
|
if (bookingDetails != null) {
|
|
return ResponseEntity.ok(bookingDetails);
|
|
} else {
|
|
return ResponseEntity.notFound().build();
|
|
}
|
|
}
|
|
|
|
@Operation(
|
|
summary = "New Registration in Counter REST API",
|
|
description = "REST API for New Registration in Counter"
|
|
)
|
|
//New Registration in Counter
|
|
@PostMapping("/newcounterregistrationform")
|
|
public ResponseEntity<?> showRegistrationForm(
|
|
@ModelAttribute Users counterform,
|
|
@RequestParam(value = "userPhoto", required = false) MultipartFile userPhoto) {
|
|
|
|
try {
|
|
if (userPhoto != null && !userPhoto.isEmpty()) {
|
|
counterform.setUserPhoto(userPhoto); // Set the photo if it exists
|
|
}
|
|
|
|
Users user = userService.user(counterform);
|
|
userSession.setMobileno(user.getMobileNo());
|
|
userSession.setDispayName(user.getName());
|
|
userSession.setUserId(user.getUserId());
|
|
userSession.setUserType(user.getUsertype().toString());
|
|
|
|
// Return the userId in the response
|
|
Map<String, Object> response = new HashMap<>();
|
|
response.put("userId", user.getUserId());
|
|
response.put("mobileNo", user.getMobileNo());
|
|
response.put("name", user.getName());
|
|
response.put("usertype", user.getUsertype());
|
|
response.put("message", "Registration successful");
|
|
|
|
return ResponseEntity.ok(response);
|
|
} catch (Exception e) {
|
|
// Log the exception and return an appropriate error response
|
|
e.printStackTrace();
|
|
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error registering user");
|
|
}
|
|
}
|
|
|
|
|
|
@Operation(
|
|
summary = "Counter User Details REST API",
|
|
description = "REST API to get the User Details by Mobileno for counter"
|
|
)
|
|
//retrieving the User Details by Mobileno for Counter
|
|
@GetMapping("/getUserDetails")
|
|
public ResponseEntity<?> getUserDetailsByMobileNo(@RequestParam("mobileNo") long mobileNo) {
|
|
try {
|
|
// Call service method to retrieve user details by mobile number
|
|
Users userDetails = userService.getUserDetailsByMobileNo(mobileNo);
|
|
if (userDetails != null) {
|
|
return ResponseEntity.ok(userDetails);
|
|
} else {
|
|
return ResponseEntity.status(HttpStatus.NOT_FOUND).body("User not found");
|
|
}
|
|
} catch (Exception e) {
|
|
// Log the exception and return an appropriate error response
|
|
e.printStackTrace();
|
|
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error retrieving user details");
|
|
}
|
|
}
|
|
|
|
@Operation(
|
|
summary = "DD Image by CounterID REST API",
|
|
description = "REST API to get the DD Image by counterId"
|
|
)
|
|
//retrieving the Dd Image by counterId
|
|
@GetMapping("/getImageByDdId")
|
|
public ResponseEntity<CounterDetails> getImageByDdId(@RequestParam int counterId) {
|
|
CounterDetails counterDetails = counterservice.getDdImageById(counterId);
|
|
if (counterDetails != null) {
|
|
//System.out.println("CounterDetails found: " + counterDetails.getDdphoto());
|
|
return ResponseEntity.ok(counterDetails);
|
|
} else {
|
|
//System.out.println("CounterDetails not found for ID: " + counterId);
|
|
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null);
|
|
}
|
|
}
|
|
|
|
@Operation(
|
|
summary = "Counter Booking Cancellation by Letter and Reason REST API",
|
|
description = "REST API save the counter Booking Cancellation Letter and reason"
|
|
)
|
|
//Saving the counter Booking Cancellation Letter and reason
|
|
@PostMapping("/saveCancellation")
|
|
public ResponseEntity<CounterRefundList> saveCancellation(
|
|
@RequestParam("counterId") int counterId,
|
|
@RequestParam("uploadLetter") MultipartFile uploadLetter,
|
|
@RequestParam("reason") String reason) throws IOException {
|
|
|
|
//System.out.println("Received counterId: " + counterId);
|
|
//System.out.println("Received file: " + uploadLetter.getOriginalFilename());
|
|
|
|
// Fetch booking details using counterId
|
|
List<BookingDetails> bookingList = bookingDetailsRepository.findByCounterId(counterId);
|
|
|
|
if (bookingList.isEmpty()) {
|
|
//System.out.println("No bookings found for counterId: " + counterId);
|
|
}
|
|
|
|
for (BookingDetails booking : bookingList) {
|
|
booking.setBookingStatus(BookingStatus.CANCELED);
|
|
bookingDetailsRepository.save(booking);
|
|
|
|
List<BookingCalendar> bookingCalendarList = bookingCalendarRepository.getCancellingdata1(String.valueOf(booking.getBookingId()));
|
|
|
|
for (BookingCalendar calendar : bookingCalendarList) {
|
|
boolean isUpdated = false;
|
|
|
|
if (String.valueOf(booking.getBookingId()).equals(calendar.getBookingId_1())) {
|
|
calendar.setBookingId_1(null);
|
|
isUpdated = true;
|
|
}
|
|
if (String.valueOf(booking.getBookingId()).equals(calendar.getBookingId_2())) {
|
|
calendar.setBookingId_2(null);
|
|
isUpdated = true;
|
|
}
|
|
if (calendar.isMorningSlot()) {
|
|
calendar.setMorningSlot(false);
|
|
isUpdated = true;
|
|
}
|
|
if (calendar.isEveningSlot()) {
|
|
calendar.setEveningSlot(false);
|
|
isUpdated = true;
|
|
}
|
|
if (isUpdated) {
|
|
calendar.setIs_delete(true);
|
|
bookingCalendarRepository.save(calendar);
|
|
}
|
|
}
|
|
}
|
|
CounterRefundList counterRefundList = counterservice.saveCancellation(counterId, uploadLetter, reason);
|
|
|
|
return ResponseEntity.ok(counterRefundList);
|
|
}
|
|
|
|
|
|
@Operation(
|
|
summary = "Counter Booking Details by CounterId REST API",
|
|
description = "REST API to get the Counter Details by CounterId"
|
|
)
|
|
//retrieving Counter Booking Details by counterId
|
|
@GetMapping("/counterdetails")
|
|
public List<BookingDetails> getUserDetailsbycounterId(@RequestParam("counterId") int counterId) {
|
|
List<BookingDetails> counterRefundList = bookingDetailsRepository.getCounterDetailsbycounterId(counterId);
|
|
return counterRefundList;
|
|
}
|
|
|
|
|
|
// @GetMapping("/getUser")
|
|
// public ResponseEntity<?> getUserByID(@RequestParam int userId){
|
|
// if(userId == 0) {
|
|
// userId=userSession.getUserId();
|
|
// }
|
|
// return ResponseEntity.ok(userService.getUserById(userId));
|
|
// }
|
|
|
|
@Operation(
|
|
summary = "Updating the User Details Mobileno Validation REST API",
|
|
description = "REST API to Update the User Details if the User status is Rejected"
|
|
)
|
|
//Updating the Rejected user details
|
|
@PostMapping("/updateUserDetails")
|
|
public String updateUserDetails(
|
|
@RequestParam("userId") int userId,
|
|
@RequestParam(value = "name", required = false) String name,
|
|
@RequestParam(value = "doorNo", required = false) String doorNo,
|
|
@RequestParam(value = "area", required = false) String area,
|
|
@RequestParam(value = "location", required = false) String location,
|
|
@RequestParam(value = "usertype", required = false) String userType,
|
|
@RequestParam(value="pinCode", required = false) int pinCode,
|
|
@RequestParam(value="email", required = false) String email,
|
|
@RequestParam(value = "profilephoto", required = false) MultipartFile profilephoto) {
|
|
|
|
Users userDetails = new Users();
|
|
userDetails.setUserId(userId);
|
|
userDetails.setName(name);
|
|
userDetails.setDoorNo(doorNo);
|
|
userDetails.setArea(area);
|
|
userDetails.setLocation(location);
|
|
userDetails.setUserstatus(userStatus.PENDING);
|
|
userDetails.setPinCode(pinCode);
|
|
userDetails.setEmail(email);
|
|
if (userType != null) {
|
|
userDetails.setUsertype(Users.userType.valueOf(userType));
|
|
}
|
|
|
|
// Handle profile photo
|
|
if (profilephoto != null && !profilephoto.isEmpty()) {
|
|
//System.out.println("Profile photo uploaded: " + profilephoto.getOriginalFilename());
|
|
String fileName = userId + "_" + profilephoto.getOriginalFilename();
|
|
String filePath = "/images/userPhoto/" + fileName;
|
|
File file = new File(uploadDirectory + "/userPhoto/" + fileName);
|
|
|
|
try {
|
|
try (FileOutputStream fos = new FileOutputStream(file)) {
|
|
fos.write(profilephoto.getBytes());
|
|
}
|
|
|
|
userDetails.setProfilephoto(filePath);
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
return "failed";
|
|
}
|
|
} else {
|
|
// If no new profile photo is uploaded, retain the existing one
|
|
Users existingUser = usersRepository.findById(userId).orElse(null);
|
|
if (existingUser != null) {
|
|
userDetails.setProfilephoto(existingUser.getProfilephoto());
|
|
}
|
|
}
|
|
|
|
return userServices.updateUserDetails(userDetails);
|
|
|
|
}
|
|
|
|
@Operation(
|
|
summary = "Counter User Details REST API",
|
|
description = "REST API to Get the User Details for Counter"
|
|
)
|
|
//Retrive user details for counter
|
|
@GetMapping("/getuserforcounter")
|
|
public ResponseEntity<?> getCounterUserById(@RequestParam int userId){
|
|
if(userId == 0) {
|
|
userId = userSession.getUserId();
|
|
// System.out.println("User ID retrieved from session: " + userId);
|
|
} else {
|
|
//System.out.println("User ID provided as parameter: " + userId);
|
|
}
|
|
|
|
Users user = userService.getUserById(userId);
|
|
if(user == null) {
|
|
return ResponseEntity.status(HttpStatus.NOT_FOUND).body("User not found");
|
|
}
|
|
return ResponseEntity.ok(user);
|
|
}
|
|
|
|
@Operation(
|
|
summary = "User Details REST API",
|
|
description = "REST API to Get the User Details"
|
|
)
|
|
//retrieving User Details
|
|
@GetMapping("/getUser")
|
|
public ResponseEntity<?> getUserByID(@RequestParam int userId) {
|
|
if (userId == 0) {
|
|
userId = userSession.getUserId();
|
|
}
|
|
Users user = userService.getUserById(userId);
|
|
Map<String, Object> response = new HashMap<>();
|
|
response.put("userId",user.getUserId());
|
|
response.put("name", user.getName());
|
|
response.put("email", user.getEmail());
|
|
response.put("mobileNo", user.getMobileNo());
|
|
response.put("doorNo", user.getDoorNo());
|
|
response.put("area", user.getArea());
|
|
response.put("location", user.getLocation());
|
|
response.put("pinCode", user.getPinCode());
|
|
response.put("userstatus", user.getUserstatus());
|
|
response.put("profilephoto", user.getProfilephoto());
|
|
response.put("usertype", user.getUsertype());
|
|
|
|
if ("REJECTED".equalsIgnoreCase(user.getUserstatus().name())) {
|
|
List<UserHistory> histories = user.getUserHistories();
|
|
String rejectionReason = histories.stream()
|
|
.filter(history -> history.getComments() != null)
|
|
.map(UserHistory::getComments)
|
|
.findFirst()
|
|
.orElse("No reason provided");
|
|
response.put("rejectionReason", rejectionReason);
|
|
}
|
|
|
|
//System.out.println("Response: " + response); // Log the response
|
|
return ResponseEntity.ok(response);
|
|
}
|
|
|
|
@Operation(
|
|
summary = "Saving the Booking Details REST API",
|
|
description = "REST API to Save the Booking Details"
|
|
)
|
|
//APi for Saving the Booking Details
|
|
@PostMapping(path = "/saveTheRequest2", consumes = { "multipart/form-data" })
|
|
public ResponseEntity<?> saveTheBookingDetails2(HttpServletRequest request) {
|
|
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
|
|
Map<String,Object> bookingDetails = splitFormData(multipartRequest);
|
|
Map<String, Object> saveBookingDetails = bookingService.saveBookingDetails(bookingDetails);
|
|
return ResponseEntity.ok(saveBookingDetails);
|
|
}
|
|
|
|
public Map<String,Object> splitFormData(MultipartHttpServletRequest multipartRequest){
|
|
Map<String, Object> formData = new HashMap<>();
|
|
|
|
// Iterate through the request parameters
|
|
Enumeration<String> parameterNames = multipartRequest.getParameterNames();
|
|
while (parameterNames.hasMoreElements()) {
|
|
String paramName = parameterNames.nextElement();
|
|
String paramValues = multipartRequest.getParameter(paramName);
|
|
formData.put(paramName, paramValues);
|
|
}
|
|
|
|
// Iterate through the request parts (files)
|
|
try {
|
|
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
|
|
for (Map.Entry<String, MultipartFile> entry : fileMap.entrySet()) {
|
|
MultipartFile file = entry.getValue();
|
|
if (!file.isEmpty()) {
|
|
formData.put(entry.getKey(), file);
|
|
}
|
|
}
|
|
} catch (Exception e) {
|
|
e.printStackTrace(); // Handle the exception according to your needs
|
|
}
|
|
return formData;
|
|
}
|
|
|
|
@Operation(
|
|
summary = "Retrieving the Booking Details by BookingId REST API",
|
|
description = "REST API to get the Booking Details by Booking Id"
|
|
)
|
|
//retrieving the Booking Details BY Booking ID
|
|
@GetMapping("/getBooking")
|
|
public ResponseEntity<?> getBookingByID(@RequestParam int bookingId){
|
|
return ResponseEntity.ok(bookingService.getBookingsById(bookingId));
|
|
}
|
|
|
|
@Operation(
|
|
summary = "User Booking Cancelling by BookingId REST API",
|
|
description = "REST API to Cancel the Booking by BookingId by User"
|
|
)
|
|
//Booking Cancelling by BookingId
|
|
//Booking Cancelling by BookingId
|
|
@GetMapping("/cancelBookingbyId")
|
|
public ResponseEntity<?> cancelBooking(@RequestParam int bookingId,
|
|
@RequestParam BookingDetails.BookingStatus status,
|
|
@RequestParam String comments) {
|
|
log.info("Received request to cancel booking with ID: {}");
|
|
log.info("Status: {}, Comments: {}");
|
|
Optional<BookingDetails> bookings=bookingDetailsRepository.findById(bookingId);
|
|
BookingDetails bookingDetails=bookings.get();
|
|
try {
|
|
BookingDetails cancelledBooking = bookingService.updateCancelledBookingStatus(bookingId, status, comments);
|
|
|
|
String cancelledbookingsms="Your booking ID "+bookingId+" on "+bookingDetails.getStartDate()+" has been cancelled successfully. The deposit amount will be refunded to your account within 3 to 15 days. Thanks for using the GCC Community Hall Booking System.";
|
|
String cancelledurlString ="https://tmegov.onex-aura.com/api/sms?key=pfTEYN6H&to="+bookingDetails.getUsers().getMobileNo()+"&from=GCCCRP&body="+cancelledbookingsms+"&entityid=1401572690000011081&templateid=1407172346829376988";
|
|
String cancelledwhatsupmsg = "https://media.smsgupshup.com/GatewayAPI/rest?userid=2000233507&password=h2YjFNcJ&send_to="+bookingDetails.getUsers().getMobileNo()+"&v=1.1&format=json&msg_type=TEXT&method=SENDMESSAGE&msg=Your+booking+with+ID+"+bookingId+"+on+"+bookingDetails.getStartDate()+"+has+been+cancelled+successfully.+%0AThe+deposit+amount+will+be+refunded+to+your+account+within+3+to+15+days.";
|
|
whatsappMsgServiceImpl.sendMsg(cancelledwhatsupmsg);
|
|
whatsappMsgServiceImpl.sendSMS(cancelledurlString);
|
|
Optional<BookingDetails> book=bookingDetailsRepository.findById(bookingDetails.getBookingId());
|
|
BookingDetails booking=book.get();
|
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
String formattedDate = LocalDateTime.now().format(formatter);
|
|
booking.setUpdatedDate(formattedDate);
|
|
bookingDetailsRepository.save(booking);
|
|
log.info("Booking cancelled successfully");
|
|
return ResponseEntity.ok(cancelledBooking);
|
|
} catch (Exception e) {
|
|
log.error("Error cancelling booking", e);
|
|
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
|
|
.body("Error cancelling booking: " + e.getMessage());
|
|
}
|
|
}
|
|
|
|
@Operation(
|
|
summary = "Family Pensioner Details from ERP REST API",
|
|
description = "REST API to check the Family Pensioner Details From ERP"
|
|
)
|
|
//checking Family pensioner Details
|
|
@GetMapping("/FamilyPensionerDetails")
|
|
@ResponseBody // Ensure Spring treats the returned object as the response body
|
|
public Map<String, Object> getFamilyPensionerDetails(HttpServletRequest request, @RequestParam("id") Long id) {
|
|
String purpose = "Checking Pensioner";
|
|
RestTemplate restTemplate = new RestTemplate();
|
|
String url = "https://erp.chennaicorporation.gov.in/pgr/external/mobileservice?serviceId=getFamPensionerDetailsList&familPensionId="
|
|
+ id;
|
|
|
|
ResponseEntity<String> responseEntity = restTemplate.getForEntity(url, String.class);
|
|
|
|
// Extract the JSON string from the response body
|
|
String jsonString = responseEntity.getBody();
|
|
|
|
// Extract the Java object from the response body
|
|
ObjectMapper objectMapper = new ObjectMapper();
|
|
Map<String, Object> responseMap = new HashMap<>();
|
|
|
|
try {
|
|
FamilyPensionerDetailsResponse familyPensionerDetailsResponse = objectMapper.readValue(jsonString,
|
|
FamilyPensionerDetailsResponse.class);
|
|
|
|
if (familyPensionerDetailsResponse != null) {
|
|
List<FamilyPensionerDetails> familyPensionerDetails = familyPensionerDetailsResponse
|
|
.getFamilyPensionerDetails();
|
|
|
|
if (familyPensionerDetails != null && !familyPensionerDetails.isEmpty()) {
|
|
//Long mobileNo = Long.parseLong(familyPensionerDetailsResponse.getFamilyPensionerDetails().get(0).getMobile_no());
|
|
|
|
Long mobileNo = 8220798937l;
|
|
//System.out.println("step 1");
|
|
responseMap.put("mobileNo", mobileNo);
|
|
}
|
|
}
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
|
|
return responseMap;
|
|
}
|
|
|
|
@Operation(
|
|
summary = "GCC Employee Details ERP REST API",
|
|
description = "REST API to retrieving the GCC Employee Details From ERP"
|
|
)
|
|
@GetMapping("/gccemployee")
|
|
@ResponseBody // Ensure Spring treats the returned object as the response body
|
|
public Map<String, Object> getGccEmployee(HttpServletRequest request, @RequestParam("id") Long id) {
|
|
String purpose = "Checking GccEmployee";
|
|
RestTemplate restTemplate = new RestTemplate();
|
|
String url = "https://erp.chennaicorporation.gov.in/pgr/external/mobileservice?serviceId=getEmployeeDetail&EmployeeID="
|
|
+ id;
|
|
|
|
ResponseEntity<String> responseEntity = restTemplate.getForEntity(url, String.class);
|
|
|
|
// Extract the JSON string from the response body
|
|
String jsonString = responseEntity.getBody();
|
|
|
|
// Extract the Java object from the response body
|
|
ObjectMapper objectMapper = new ObjectMapper();
|
|
Map<String, Object> responseMap = new HashMap<>();
|
|
|
|
try {
|
|
EmployeeDetailsResponse employeeDetailsResponse = objectMapper.readValue(jsonString,
|
|
EmployeeDetailsResponse.class);
|
|
|
|
if (employeeDetailsResponse != null) {
|
|
List<EmployeeDetails> employeeDetails = employeeDetailsResponse
|
|
.getEmployeeDetailsResult();
|
|
|
|
if (employeeDetails != null && !employeeDetails.isEmpty()) {
|
|
//Long mobileNo = Long.parseLong(familyPensionerDetailsResponse.getFamilyPensionerDetails().get(0).getMobile_no());
|
|
|
|
//Long mobileNo = 8220798933l;
|
|
//System.out.println("step 1");
|
|
responseMap.put("EmployeeDetailsResult", employeeDetails );
|
|
}else {
|
|
responseMap.put("EmployeeDetailsResult", null );
|
|
}
|
|
}
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
|
|
return responseMap;
|
|
}
|
|
|
|
@Operation(
|
|
summary = "Pensioner Details ERP REST API",
|
|
description = "REST API to retrieving the Pensioner Details From ERP"
|
|
)
|
|
//checking pensioner Details
|
|
@GetMapping("/PensionerDetails")
|
|
@ResponseBody
|
|
public Map<String, Object> getPensionerDetails(HttpServletRequest request, @RequestParam("id") Long id) {
|
|
String purpose = "Checking Employee";
|
|
RestTemplate restTemplate = new RestTemplate();
|
|
String url = "https://erp.chennaicorporation.gov.in/pgr/external/mobileservice?serviceId=getPensionerDetailsList&pensionerId=" + id;
|
|
|
|
ResponseEntity<String> responseEntity = restTemplate.getForEntity(url, String.class);
|
|
|
|
// Extract the JSON string from the response body
|
|
String jsonString = responseEntity.getBody();
|
|
|
|
// Extract the Java object from the response body
|
|
ObjectMapper objectMapper = new ObjectMapper();
|
|
Map<String, Object> responseMap = new HashMap<>();
|
|
|
|
try {
|
|
PensionerDetailsResponse pensionerDetailsResponse = objectMapper.readValue(jsonString, PensionerDetailsResponse.class);
|
|
|
|
if (pensionerDetailsResponse != null) {
|
|
List<PensionerDetails> pensionerDetails = pensionerDetailsResponse.getEmployees();
|
|
|
|
if (pensionerDetails != null && !pensionerDetails.isEmpty()) {
|
|
Long mobileNo = Long.parseLong(pensionerDetailsResponse.getEmployees().get(0).getMobile_no());
|
|
// Long mobileNo = 9874561230l;
|
|
// System.out.println("step 2");
|
|
responseMap.put("mobileNo", mobileNo);
|
|
return responseMap;
|
|
} else {
|
|
responseMap.put("error", "No pensioner details found for the given ID");
|
|
return responseMap;
|
|
}
|
|
}
|
|
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
responseMap.put("error", "An error occurred while processing the request");
|
|
}
|
|
|
|
return responseMap;
|
|
}
|
|
|
|
@Operation(
|
|
summary = "Saving Counter Details ERP REST API",
|
|
description = "REST API to save the Counter Details"
|
|
)
|
|
//Saving the Counter Details
|
|
@PostMapping(path = "/counter-booking", consumes = { "multipart/form-data" })
|
|
public ResponseEntity<?> saveCounterBookingDetails(HttpServletRequest request) {
|
|
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
|
|
Map<String,Object> bookingDetails = splitFormData(multipartRequest);
|
|
Map<String, Object> saveCounterBooking = counterService.saveCounterBooking(bookingDetails);
|
|
return ResponseEntity.ok(saveCounterBooking);
|
|
}
|
|
@GetMapping("/checkAvail")
|
|
public List<HallDetails> checkAvail(@RequestParam("fromDate") String fromDate,
|
|
@RequestParam("toDate") String toDate,
|
|
@RequestParam("starting") String starting,
|
|
@RequestParam("ending") String ending,
|
|
@RequestParam(name = "hallId",required = false) String hallId){
|
|
List<BookingCalendar> data = new ArrayList<>();
|
|
HashSet<Integer> removeHallId = new HashSet<Integer>();
|
|
int hallIdd=0;
|
|
if(hallId != null && !hallId.equals("")){
|
|
hallIdd = Integer.parseInt(hallId);
|
|
}
|
|
if(!fromDate.equals(toDate) && (starting.equals(ending) || starting.equals("evening") && ending.equals("morning"))){
|
|
Map<String,String> mp =incrementAndDecrementAndDaysCount(fromDate,toDate);
|
|
long noOfDays= Long.parseLong(mp.get("NoOfDays").toString());
|
|
if(noOfDays>2){
|
|
data = calendarService.getCalendarByDateAndHallIdAndSlot(mp.get("fromDate"),mp.get("toDate"),starting,ending,hallIdd);
|
|
for(int i=0;i<data.size();i++){
|
|
removeHallId.add(data.get(i).getHallId());
|
|
}
|
|
}
|
|
}
|
|
|
|
data=calendarService.getCalendarByDateAndHallIdAndSlot(fromDate,toDate,starting,ending,hallIdd);
|
|
//System.out.println("data size :-"+data.size());
|
|
|
|
if(starting!=null && ending != null ) {
|
|
boolean checkAvail =false;
|
|
int checkHallId=0;
|
|
for(int i=0;i<data.size();i++) {
|
|
|
|
if((starting.equals("evening") || ending.equals("morning")) && fromDate.equals(data.get(i).getBdate().toString()) && toDate.equals(fromDate)) {
|
|
if(data.get(i).isEveningSlot()==false) {
|
|
continue;
|
|
}
|
|
else if(data.get(i).isMorningSlot()==false) {
|
|
continue;
|
|
}
|
|
} else if ((starting.equals(ending) || starting.equals("evening") && ending.equals("morning")) && !toDate.equals(fromDate)) {
|
|
if(checkHallId==0 || checkHallId != data.get(i).getHallId()){
|
|
checkHallId = data.get(i).getHallId();
|
|
checkAvail=false;
|
|
}
|
|
|
|
if(starting.equals("morning") && ending.equals("morning") ) {
|
|
if(fromDate.equals(data.get(i).getBdate().toString()) && data.get(i).isMorningSlot()==false){
|
|
if(checkHallId == data.get(i).getHallId()){
|
|
|
|
continue;
|
|
}
|
|
}
|
|
else if(toDate.equals(data.get(i).getBdate().toString()) && data.get(i).isMorningSlot()==false){
|
|
if(checkHallId == data.get(i).getHallId() && checkAvail==false){
|
|
checkHallId=data.get(i).getHallId();
|
|
continue;
|
|
}
|
|
}
|
|
}else if(starting.equals("evening") && ending.equals("morning") ) {
|
|
|
|
if(fromDate.equals(data.get(i).getBdate().toString()) && data.get(i).isEveningSlot()==false){
|
|
if(checkHallId == data.get(i).getHallId()){
|
|
continue;
|
|
}
|
|
}
|
|
|
|
else if(toDate.equals(data.get(i).getBdate().toString()) && data.get(i).isMorningSlot()==false){
|
|
if(checkHallId == data.get(i).getHallId() && checkAvail==false){
|
|
checkHallId=data.get(i).getHallId();
|
|
continue;
|
|
}
|
|
}
|
|
}else if(starting.equals("evening") && ending.equals("evening") ) {
|
|
if(fromDate.equals(data.get(i).getBdate().toString()) && data.get(i).isEveningSlot()==false){
|
|
if(checkHallId == data.get(i).getHallId()){
|
|
continue;
|
|
}
|
|
}
|
|
else if(toDate.equals(data.get(i).getBdate().toString()) && data.get(i).isEveningSlot()==false){
|
|
if(checkHallId == data.get(i).getHallId() && checkAvail==false){
|
|
checkHallId=data.get(i).getHallId();
|
|
continue;
|
|
}
|
|
}
|
|
}
|
|
else{
|
|
if(checkHallId == data.get(i).getHallId()) {
|
|
checkAvail = true;
|
|
}
|
|
}
|
|
}
|
|
//System.out.println(data.get(i).getHallId());
|
|
removeHallId.add(data.get(i).getHallId());
|
|
}
|
|
}
|
|
List<HallDetails> removeHallByid = new ArrayList<>();
|
|
if(hallIdd!=0){
|
|
if(hallIdd!=data.get(0).getHallId()){
|
|
HallDetails hallDetails = hallDetailService.getHallById(hallIdd);
|
|
removeHallByid.add(hallDetails);
|
|
}
|
|
|
|
}else {
|
|
removeHallByid = hallDetailService.removeHallById(removeHallId);
|
|
}
|
|
return removeHallByid;
|
|
}
|
|
|
|
Map<String,String> incrementAndDecrementAndDaysCount(String fromdate, String todate){
|
|
Map mp = new HashMap<>();
|
|
LocalDate increasement = LocalDate.parse(fromdate);
|
|
LocalDate decrement = LocalDate.parse(todate);
|
|
|
|
LocalDate outputDateFrom =increasement;
|
|
LocalDate outputDateToday = decrement;
|
|
|
|
long daysDifference = increasement.until(decrement).getDays();
|
|
daysDifference = Math.abs(daysDifference);
|
|
|
|
if(fromdate!=todate) {
|
|
outputDateFrom = increasement.plusDays(1);
|
|
outputDateToday = decrement.minusDays(1);
|
|
}
|
|
|
|
mp.put("fromDate", outputDateFrom.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
|
mp.put("toDate",outputDateToday.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
|
mp.put("NoOfDays",daysDifference+"");
|
|
return mp;
|
|
}
|
|
|
|
@GetMapping("/getuserDetailsbymobileno")
|
|
public Users getuserDetailsbymobileno(@RequestParam long mobileNo) {
|
|
return userservice.getUserDetailsByMobileNo(mobileNo);
|
|
|
|
}
|
|
|
|
//Reschedule
|
|
@PostMapping("/reschedule-dates")
|
|
public ResponseEntity<String> updateBookingDates(
|
|
@RequestParam int bookingId,
|
|
@RequestParam String startDate,
|
|
@RequestParam String endDate) {
|
|
try {
|
|
Optional<String> updateResult = bookingService.updateBookingDatesAndCalendar(bookingId, startDate, endDate);
|
|
if (updateResult.isPresent()) {
|
|
if (updateResult.get().equals("Booking dates updated successfully.")) {
|
|
return new ResponseEntity<>(updateResult.get(), HttpStatus.OK);
|
|
} else {
|
|
// Any other message is treated as an error
|
|
return new ResponseEntity<>(updateResult.get(), HttpStatus.BAD_REQUEST);
|
|
}
|
|
} else {
|
|
return new ResponseEntity<>("Booking not found", HttpStatus.NOT_FOUND);
|
|
}
|
|
} catch (SlotOccupiedException e) {
|
|
// Return a bad request status with the exception message
|
|
return new ResponseEntity<>(e.getMessage(), HttpStatus.BAD_REQUEST);
|
|
}
|
|
}
|
|
|
|
@GetMapping("/trackBooking")
|
|
public List<Map<String, Object>> getTrackingDetails(@RequestParam int bookingId) {
|
|
Optional<BookingDetails> booking = bookingDetailsRepository.findById(bookingId);
|
|
List<Map<String, Object>> trackingDetails = new ArrayList<>();
|
|
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss");
|
|
|
|
if (booking.isPresent()) {
|
|
BookingDetails bookingDetails = booking.get();
|
|
|
|
// Payment Success
|
|
if (bookingDetails.getPayments() != null) {
|
|
Map<String, Object> paymentDetail = new HashMap<>();
|
|
paymentDetail.put("status", "PAYMENT_SUCCESS");
|
|
paymentDetail.put("description", "Payment Success");
|
|
paymentDetail.put("dateTime", bookingDetails.getPayments().getCdate()); // Assuming Cdate is the created date
|
|
trackingDetails.add(paymentDetail);
|
|
}
|
|
|
|
// Booking Approved
|
|
if (bookingDetails.getBookingStatus() == BookingStatus.APPROVED) {
|
|
Map<String, Object> bookingApprovedDetail = new HashMap<>();
|
|
bookingApprovedDetail.put("status", "APPROVED");
|
|
bookingApprovedDetail.put("description", "Booking Approved");
|
|
bookingApprovedDetail.put("dateTime", bookingDetails.getBookingDate()); // Assuming BookingDate is correct
|
|
trackingDetails.add(bookingApprovedDetail);
|
|
}
|
|
|
|
// Event Completed
|
|
LocalDateTime endDate = null;
|
|
try {
|
|
// Try parsing as LocalDateTime first
|
|
try {
|
|
endDate = LocalDateTime.parse(bookingDetails.getEndDate(), dateTimeFormatter);
|
|
} catch (Exception e) {
|
|
// If parsing fails, try parsing as LocalDate
|
|
LocalDate endDateOnly = LocalDate.parse(bookingDetails.getEndDate(), dateFormatter);
|
|
endDate = endDateOnly.atStartOfDay(); // Convert LocalDate to LocalDateTime at start of the day
|
|
}
|
|
} catch (Exception e) {
|
|
// Handle parsing exception
|
|
e.printStackTrace();
|
|
}
|
|
|
|
if (endDate != null && bookingDetails.getBookingStatus() == BookingStatus.APPROVED &&
|
|
endDate.isBefore(LocalDateTime.now().plusDays(1))) { // Compare endDate with current date
|
|
Map<String, Object> eventCompletedDetail = new HashMap<>();
|
|
eventCompletedDetail.put("status", "EVENT_COMPLETED");
|
|
eventCompletedDetail.put("description", "Event Completed");
|
|
eventCompletedDetail.put("dateTime", bookingDetails.getEndDate());
|
|
trackingDetails.add(eventCompletedDetail);
|
|
}
|
|
|
|
// Settlement Raising
|
|
if (bookingDetails.getSettlement() != null && bookingDetails.getRefundStatus() == RefundStatus.WAITING) {
|
|
Map<String, Object> settlementRaisingDetail = new HashMap<>();
|
|
settlementRaisingDetail.put("status", "SETTLEMENT_RAISING");
|
|
settlementRaisingDetail.put("description", "Settlement Raising");
|
|
settlementRaisingDetail.put("dateTime", bookingDetails.getSettlement().getUpdatedDate() );
|
|
trackingDetails.add(settlementRaisingDetail);
|
|
}
|
|
|
|
// Refund Completed
|
|
if (bookingDetails.getBookingStatus() == BookingStatus.COMPLETED
|
|
&& bookingDetails.getRefundStatus() == BookingDetails.RefundStatus.COMPLETED) {
|
|
Map<String, Object> refundCompletedDetail = new HashMap<>();
|
|
refundCompletedDetail.put("status", "COMPLETED");
|
|
refundCompletedDetail.put("description", "Refund Completed");
|
|
refundCompletedDetail.put("dateTime", bookingDetails.getUpdatedDate());
|
|
trackingDetails.add(refundCompletedDetail);
|
|
}
|
|
|
|
|
|
if (bookingDetails.getBookingStatus() == BookingStatus.CANCELED){
|
|
Map<String ,Object> bookingCanceledDetail = new HashMap<>();
|
|
bookingCanceledDetail.put("status","CANCELED");
|
|
bookingCanceledDetail.put("description", "Booking Cancelled");
|
|
bookingCanceledDetail.put("dateTime", bookingDetails.getUpdatedDate()); // Assuming BookingDate is correct
|
|
trackingDetails.add(bookingCanceledDetail);
|
|
}
|
|
|
|
|
|
if (bookingDetails.getBookingStatus() == BookingStatus.CANCELED
|
|
&& bookingDetails.getRefundStatus() == RefundStatus.WAITING){
|
|
Map<String ,Object> canceledRaisingDetail = new HashMap<>();
|
|
canceledRaisingDetail.put("status","SETTLEMENT_RAISING");
|
|
canceledRaisingDetail.put("description", "Settlement Raising");
|
|
canceledRaisingDetail.put("dateTime", bookingDetails.getUpdatedDate()); // Assuming BookingDate is correct
|
|
trackingDetails.add(canceledRaisingDetail);
|
|
}
|
|
|
|
if (bookingDetails.getBookingStatus() == BookingStatus.CANCELED
|
|
&& bookingDetails.getRefundStatus() == BookingDetails.RefundStatus.COMPLETED){
|
|
Map<String, Object> cancelRefundCompletedDetail = new HashMap<>();
|
|
cancelRefundCompletedDetail.put("status", "COMPLETED");
|
|
cancelRefundCompletedDetail.put("description", "Refund Completed");
|
|
cancelRefundCompletedDetail.put("dateTime", bookingDetails.getUpdatedDate());
|
|
trackingDetails.add(cancelRefundCompletedDetail);
|
|
}
|
|
|
|
if (bookingDetails.getBookingStatus() == BookingStatus.REJECTED){
|
|
Map<String ,Object> bookingRejectedDetail = new HashMap<>();
|
|
bookingRejectedDetail.put("status","REJECTED");
|
|
bookingRejectedDetail.put("description", "Booking Rejected");
|
|
bookingRejectedDetail.put("dateTime", bookingDetails.getUpdatedDate()); // Assuming BookingDate is correct
|
|
trackingDetails.add(bookingRejectedDetail);
|
|
}
|
|
|
|
|
|
if (bookingDetails.getBookingStatus() == BookingStatus.REJECTED
|
|
&& bookingDetails.getRefundStatus() == RefundStatus.WAITING){
|
|
Map<String ,Object> rejectedRaisingDetail = new HashMap<>();
|
|
rejectedRaisingDetail.put("status","SETTLEMENT_RAISING");
|
|
rejectedRaisingDetail.put("description", "Settlement Raising");
|
|
rejectedRaisingDetail.put("dateTime", bookingDetails.getUpdatedDate()); // Assuming BookingDate is correct
|
|
trackingDetails.add(rejectedRaisingDetail);
|
|
}
|
|
|
|
if (bookingDetails.getBookingStatus() == BookingStatus.REJECTED
|
|
&& bookingDetails.getRefundStatus() == BookingDetails.RefundStatus.COMPLETED){
|
|
Map<String, Object> rejectedRefundCompletedDetail = new HashMap<>();
|
|
rejectedRefundCompletedDetail.put("status", "COMPLETED");
|
|
rejectedRefundCompletedDetail.put("description", "Refund Completed");
|
|
rejectedRefundCompletedDetail.put("dateTime", bookingDetails.getUpdatedDate());
|
|
trackingDetails.add(rejectedRefundCompletedDetail);
|
|
}
|
|
|
|
|
|
|
|
if (bookingDetails.getBookingStatus() == BookingStatus.GCC_BLOCKED){
|
|
Map<String ,Object> gccBlockedDetail = new HashMap<>();
|
|
gccBlockedDetail.put("status","GCC_BLOCKED");
|
|
gccBlockedDetail.put("description", "GCC Blocked");
|
|
gccBlockedDetail.put("dateTime", bookingDetails.getUpdatedDate());
|
|
trackingDetails.add(gccBlockedDetail);
|
|
}
|
|
}
|
|
return trackingDetails;
|
|
}
|
|
|
|
|
|
@GetMapping("/confirmstatebooking")
|
|
public String Confirmstatebookig(@RequestParam int bookingId ) {
|
|
String response=bookingService.confirmStateBooking(bookingId);
|
|
return response;
|
|
}
|
|
|
|
@PostMapping("/uploaddocs")
|
|
public ResponseEntity<String> uploadDocs(@RequestParam("nocFile") MultipartFile file,
|
|
@RequestParam("bookingssId") int bookingId) {
|
|
try {
|
|
bookingService.uploadNOCFile(file, bookingId);
|
|
return ResponseEntity.ok("File uploaded and saved successfully");
|
|
} catch (Exception e) {
|
|
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("File upload failed: " + e.getMessage());
|
|
}
|
|
}
|
|
/*@GetMapping("/calculatehallamount")
|
|
public ResponseEntity<Map<String, Object>> getHallDetailsConcession(
|
|
@RequestParam int numDays,
|
|
@RequestParam(value = "startPeriod", required = false) String startPeriod,
|
|
@RequestParam(value = "endPeriod", required = false) String endPeriod,
|
|
@RequestParam(value = "reasonforBooking", required = false) String reasonforBooking,
|
|
@RequestParam int hallId) {
|
|
|
|
Optional<HallDetails> hallDetailsOpt = hallDetailsRepository.findById(hallId);
|
|
|
|
if (!hallDetailsOpt.isPresent()) {
|
|
return ResponseEntity.status(404).body(null); // Handle not found
|
|
}
|
|
|
|
HallDetails hallDetails = hallDetailsOpt.get();
|
|
boolean isSGE = hallDetails.isSGE();
|
|
boolean isCGE = hallDetails.isCGE();
|
|
|
|
double fullDayAmount = hallDetails.getFullDayRent();
|
|
double halfDayAmount = hallDetails.getHalfDayRent();
|
|
double depositAmount = hallDetails.getDepositAmount();
|
|
double gstRate = hallDetails.getGst();
|
|
|
|
Map<String, Object> response = new HashMap<>();
|
|
|
|
double amount = calculateAmount(numDays, startPeriod, endPeriod, fullDayAmount, halfDayAmount);
|
|
double totalDepositAmount = depositAmount * numDays;
|
|
double totalAmount;
|
|
double discountAmount = 0.0;
|
|
response.put("reasonforBooking", reasonforBooking);
|
|
|
|
if (!isSGE) {
|
|
totalAmount = amount + (amount * gstRate / 100) + totalDepositAmount;
|
|
response.put("discount", 0);
|
|
response.put("amount", amount);
|
|
response.put("totalAmount", totalAmount);
|
|
response.put("depositAmount", totalDepositAmount);
|
|
double gstValue =gstRate * amount / 100.0;
|
|
response.put("gst", gstValue);
|
|
response.put("discountAmount", amount);
|
|
} else {
|
|
if ("SGE".equals(reasonforBooking)) {
|
|
double cleaningCharges = hallDetails.getHallDetailsConcession().get(0).getFullDayCleaningcharges();
|
|
double pasystem=hallDetails.getHallDetailsConcession().get(0).getFulldayPAsystem();
|
|
double ebCharges=hallDetails.getHallDetailsConcession().get(0).getFulldayEBcharges();
|
|
double halfcleaningCharges = hallDetails.getHallDetailsConcession().get(0).getHalfDayCleaningcharges();
|
|
double halfpasystem=hallDetails.getHallDetailsConcession().get(0).getHalfdayPAsystem();
|
|
double halfebCharges=hallDetails.getHallDetailsConcession().get(0).getHalfdayEBcharges();
|
|
double fulladditionalCharges = cleaningCharges+pasystem+ebCharges;
|
|
double halfadditionalCharges = halfcleaningCharges+halfpasystem+halfebCharges;
|
|
double fulldayhallAmount=hallDetails.getHallDetailsConcession().get(0).getFulldayhallamount();
|
|
double halfdayhallAmount=hallDetails.getHallDetailsConcession().get(0).getHalfdayhallamount();
|
|
double additionalCharges=calculateAmount(numDays, startPeriod, endPeriod, fulladditionalCharges, halfadditionalCharges);
|
|
totalAmount = additionalCharges + totalDepositAmount + (additionalCharges * gstRate / 100.0);
|
|
discountAmount = (fulldayhallAmount * hallDetails.getSGEdiscount()) / 100.0;
|
|
response.put("startperiod", startPeriod);
|
|
response.put("endPeriod", endPeriod);
|
|
response.put("fulldayhallAmount", fulldayhallAmount);
|
|
response.put("halfdayhallAmount", halfdayhallAmount);
|
|
response.put("discount", hallDetails.getSGEdiscount());
|
|
response.put("rentAmount", 0);
|
|
response.put("additionalCharges", additionalCharges);
|
|
response.put("netAmount", additionalCharges);
|
|
response.put("gst", gstRate * additionalCharges / 100);
|
|
response.put("depositAmount", totalDepositAmount);
|
|
response.put("totalAmount", totalAmount);
|
|
response.put("discountAmount", discountAmount);
|
|
} else if ("CGE".equals(reasonforBooking)) {
|
|
response.put("discount", hallDetails.getCGEdiscount());
|
|
discountAmount = (amount * hallDetails.getCGEdiscount()) / 100.0;
|
|
totalAmount = discountAmount + totalDepositAmount + (discountAmount * gstRate / 100);
|
|
response.put("amount", amount);
|
|
response.put("totalAmount", totalAmount);
|
|
response.put("depositAmount", totalDepositAmount);
|
|
double gstValue = gstRate * discountAmount / 100;
|
|
response.put("gst", gstValue);
|
|
response.put("discountAmount", discountAmount);
|
|
} else {
|
|
totalAmount = amount + (amount * gstRate / 100) + totalDepositAmount;
|
|
response.put("discount", 0);
|
|
response.put("amount", amount);
|
|
response.put("totalAmount", totalAmount);
|
|
response.put("depositAmount", totalDepositAmount);
|
|
double gstValue =gstRate * amount / 100.0;
|
|
response.put("gst", gstValue);
|
|
response.put("discountAmount", amount);
|
|
}
|
|
}
|
|
|
|
return ResponseEntity.ok(response);
|
|
}
|
|
public double calculateAmount(double numDays, String startPeriod, String endPeriod, double fullDayAmount, double halfDayAmount) {
|
|
double amount = 0;
|
|
|
|
// If there is only one day
|
|
if (numDays == 1) {
|
|
if ("1".equals(startPeriod) && "2".equals(endPeriod)) {
|
|
amount = fullDayAmount;
|
|
} else if ("1".equals(startPeriod) && "1".equals(endPeriod)) {
|
|
amount = halfDayAmount;
|
|
} else if ("2".equals(startPeriod) && "2".equals(endPeriod)) {
|
|
amount = halfDayAmount;
|
|
}else {
|
|
amount=numDays;
|
|
}
|
|
} else {
|
|
// For multiple days
|
|
if ("1".equals(startPeriod) && "2".equals(endPeriod)) {
|
|
amount = fullDayAmount * numDays;
|
|
} else if ("1".equals(startPeriod) && "1".equals(endPeriod)) {
|
|
amount = fullDayAmount * (numDays - 1) + halfDayAmount;
|
|
} else if ("2".equals(startPeriod) && "2".equals(endPeriod)) {
|
|
amount = fullDayAmount * (numDays - 1) + halfDayAmount;
|
|
} else if ("2".equals(startPeriod) && "1".equals(endPeriod)) {
|
|
amount = fullDayAmount * (numDays - 2) + halfDayAmount * 2;
|
|
}else {
|
|
amount=numDays;
|
|
}
|
|
}
|
|
|
|
return amount;
|
|
}*/
|
|
|
|
@GetMapping("/calculatehallamount")
|
|
public ResponseEntity<Map<String, Object>> getHallDetailsConcession(
|
|
@RequestParam int numDays,
|
|
@RequestParam(value = "startPeriod", required = false) String startPeriod,
|
|
@RequestParam(value = "endPeriod", required = false) String endPeriod,
|
|
@RequestParam(value = "reasonforBooking", required = false) String reasonforBooking,
|
|
@RequestParam int hallId) {
|
|
|
|
Optional<HallDetails> hallDetailsOpt = hallDetailsRepository.findById(hallId);
|
|
|
|
if (!hallDetailsOpt.isPresent()) {
|
|
return ResponseEntity.status(404).body(null); // Handle not found
|
|
}
|
|
|
|
HallDetails hallDetails = hallDetailsOpt.get();
|
|
boolean isSGE = hallDetails.isSGE();
|
|
boolean isCGE = hallDetails.isCGE();
|
|
|
|
double fullDayAmount = hallDetails.getFullDayRent();
|
|
double halfDayAmount = hallDetails.getHalfDayRent();
|
|
double depositAmount = hallDetails.getDepositAmount();
|
|
double gstRate = hallDetails.getGst();
|
|
|
|
Map<String, Object> response = new HashMap<>();
|
|
|
|
double amount = calculateAmount(numDays, startPeriod, endPeriod, fullDayAmount, halfDayAmount);
|
|
double totalDepositAmount = calculateDepositAmount(numDays, startPeriod, endPeriod, depositAmount);
|
|
double totalAmount;
|
|
double discountAmount = 0.0;
|
|
response.put("reasonforBooking", reasonforBooking);
|
|
|
|
if (!isSGE) {
|
|
totalAmount = amount + (amount * gstRate / 100) + totalDepositAmount;
|
|
response.put("discount", 0);
|
|
response.put("amount", amount);
|
|
response.put("totalAmount", totalAmount);
|
|
response.put("depositAmount", totalDepositAmount);
|
|
double gstValue =gstRate * amount / 100.0;
|
|
response.put("gst", gstValue);
|
|
response.put("discountAmount", amount);
|
|
} else {
|
|
if ("SGE".equals(reasonforBooking)) {
|
|
double cleaningCharges = hallDetails.getHallDetailsConcession().get(0).getFullDayCleaningcharges();
|
|
double pasystem=hallDetails.getHallDetailsConcession().get(0).getFulldayPAsystem();
|
|
double ebCharges=hallDetails.getHallDetailsConcession().get(0).getFulldayEBcharges();
|
|
double halfcleaningCharges = hallDetails.getHallDetailsConcession().get(0).getHalfDayCleaningcharges();
|
|
double halfpasystem=hallDetails.getHallDetailsConcession().get(0).getHalfdayPAsystem();
|
|
double halfebCharges=hallDetails.getHallDetailsConcession().get(0).getHalfdayEBcharges();
|
|
double fulladditionalCharges = cleaningCharges+pasystem+ebCharges;
|
|
double halfadditionalCharges = halfcleaningCharges+halfpasystem+halfebCharges;
|
|
double fulldayhallAmount=hallDetails.getHallDetailsConcession().get(0).getFulldayhallamount();
|
|
double halfdayhallAmount=hallDetails.getHallDetailsConcession().get(0).getHalfdayhallamount();
|
|
double additionalCharges=calculateAmount(numDays, startPeriod, endPeriod, fulladditionalCharges, halfadditionalCharges);
|
|
totalAmount = additionalCharges + totalDepositAmount + (additionalCharges * gstRate / 100.0);
|
|
discountAmount = (fulldayhallAmount * hallDetails.getSGEdiscount()) / 100.0;
|
|
response.put("startperiod", startPeriod);
|
|
response.put("endPeriod", endPeriod);
|
|
response.put("fulldayhallAmount", fulldayhallAmount);
|
|
response.put("halfdayhallAmount", halfdayhallAmount);
|
|
response.put("discount", hallDetails.getSGEdiscount());
|
|
response.put("rentAmount", 0);
|
|
response.put("additionalCharges", additionalCharges);
|
|
response.put("netAmount", additionalCharges);
|
|
response.put("gst", gstRate * additionalCharges / 100);
|
|
response.put("depositAmount", totalDepositAmount);
|
|
response.put("totalAmount", totalAmount);
|
|
response.put("discountAmount", discountAmount);
|
|
} else if ("CGE".equals(reasonforBooking)) {
|
|
double cleaningCharges = hallDetails.getHallDetailsConcession().get(0).getFullDayCleaningcharges();
|
|
double pasystem=hallDetails.getHallDetailsConcession().get(0).getFulldayPAsystem();
|
|
double ebCharges=hallDetails.getHallDetailsConcession().get(0).getFulldayEBcharges();
|
|
double halfcleaningCharges = hallDetails.getHallDetailsConcession().get(0).getHalfDayCleaningcharges();
|
|
double halfpasystem=hallDetails.getHallDetailsConcession().get(0).getHalfdayPAsystem();
|
|
double halfebCharges=hallDetails.getHallDetailsConcession().get(0).getHalfdayEBcharges();
|
|
double fulladditionalCharges = cleaningCharges+pasystem+ebCharges;
|
|
double halfadditionalCharges = halfcleaningCharges+halfpasystem+halfebCharges;
|
|
double additionalCharges=calculateAmount(numDays, startPeriod, endPeriod, fulladditionalCharges, halfadditionalCharges);
|
|
double rentAmount = (amount * hallDetails.getCGEdiscount()) / 100.0;
|
|
double netAmount = rentAmount + additionalCharges;
|
|
double gst = ((additionalCharges+rentAmount) * gstRate / 100.0);
|
|
totalAmount = Math.floor((netAmount + gst + totalDepositAmount) * 100) / 100.0 ;
|
|
response.put("startperiod", startPeriod);
|
|
response.put("endPeriod", endPeriod);
|
|
response.put("fulldayhallAmount", fullDayAmount);
|
|
response.put("halfdayhallAmount", halfDayAmount);
|
|
response.put("discount", hallDetails.getCGEdiscount());
|
|
response.put("rentAmount", rentAmount);
|
|
response.put("additionalCharges", additionalCharges);
|
|
response.put("netAmount", netAmount);
|
|
response.put("gst", gst);
|
|
response.put("depositAmount", totalDepositAmount);
|
|
response.put("totalAmount", totalAmount);
|
|
response.put("discountAmount", discountAmount);
|
|
} else {
|
|
double gstValue =(gstRate * amount) / 100.0;
|
|
totalAmount = Math.ceil((amount + gstValue + totalDepositAmount) * 100) / 100;
|
|
response.put("discount", 0);
|
|
response.put("amount", amount);
|
|
response.put("totalAmount", totalAmount);
|
|
response.put("depositAmount", totalDepositAmount);
|
|
response.put("gst", gstValue);
|
|
response.put("discountAmount", amount);
|
|
}
|
|
}
|
|
|
|
return ResponseEntity.ok(response);
|
|
}
|
|
public double calculateAmount(double numDays, String startPeriod, String endPeriod, double fullDayAmount, double halfDayAmount) {
|
|
double amount = 0;
|
|
|
|
// If there is only one day
|
|
if (numDays == 1) {
|
|
if ("1".equals(startPeriod) && "2".equals(endPeriod)) {
|
|
amount = fullDayAmount;
|
|
} else if ("1".equals(startPeriod) && "1".equals(endPeriod)) {
|
|
amount = halfDayAmount;
|
|
} else if ("2".equals(startPeriod) && "2".equals(endPeriod)) {
|
|
amount = halfDayAmount;
|
|
}else {
|
|
amount=numDays;
|
|
}
|
|
} else {
|
|
// For multiple days
|
|
if ("1".equals(startPeriod) && "2".equals(endPeriod)) {
|
|
amount = fullDayAmount * numDays;
|
|
} else if ("1".equals(startPeriod) && "1".equals(endPeriod)) {
|
|
amount = fullDayAmount * (numDays - 1) + halfDayAmount;
|
|
} else if ("2".equals(startPeriod) && "2".equals(endPeriod)) {
|
|
amount = fullDayAmount * (numDays - 1) + halfDayAmount;
|
|
} else if ("2".equals(startPeriod) && "1".equals(endPeriod)) {
|
|
amount = fullDayAmount * (numDays - 2) + halfDayAmount * 2;
|
|
}else {
|
|
amount=numDays;
|
|
}
|
|
}
|
|
|
|
return amount;
|
|
}
|
|
|
|
@GetMapping("/getTransactionDetails")
|
|
public Map<String, Object> getTransactionDetails(@RequestParam String userId) {
|
|
// Fetch all transaction details for the user
|
|
List<TransactionResponse> transactions = PaymentGatewayServiceImpl.getTransactionResponseByuserId(userId);
|
|
|
|
Map<String, Object> response = new HashMap<>();
|
|
response.put("transactions", transactions);
|
|
|
|
// Fetch all refund details for the user in a single query
|
|
List<RefundResponse> refundDetails = transRefundResRepository.getRefundResponseByuserId(userId);
|
|
|
|
response.put("refundDetails", refundDetails);
|
|
|
|
System.out.println("Response: " + response);
|
|
|
|
return response;
|
|
}
|
|
|
|
|
|
@GetMapping("/collectionpendingacknowledgementsss")
|
|
public BookingDetails viewCollectionpendingAck(Model model,int bookingId){
|
|
BookingDetails bookingsDetails = bookingService.getBookingsById(bookingId);
|
|
model.addAttribute("bookingsDetails",bookingsDetails); // Add single BookingDetails object
|
|
model.addAttribute("userName",userSession.getDispayName());
|
|
return bookingsDetails;
|
|
}
|
|
|
|
@GetMapping("/checkQueue")
|
|
public ResponseEntity<List<BookingDetails>> checkQueue(
|
|
@RequestParam String bookingDate,
|
|
@RequestParam Long hallId) {
|
|
try {
|
|
List<BookingDetails> bookings = bookingService.getBookingsByDateAndHall(bookingDate, hallId);
|
|
return ResponseEntity.ok(bookings);
|
|
} catch (Exception e) {
|
|
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
|
|
}
|
|
}
|
|
|
|
public double calculateDepositAmount(double numDays, String startPeriod, String endPeriod, double depositAmount) {
|
|
double damount = 0;
|
|
|
|
// If there is only one day
|
|
if (numDays == 1) {
|
|
if ("1".equals(startPeriod) && "2".equals(endPeriod)) {
|
|
damount = depositAmount;
|
|
} else if ("1".equals(startPeriod) && "1".equals(endPeriod)) {
|
|
damount = depositAmount;
|
|
} else if ("2".equals(startPeriod) && "2".equals(endPeriod)) {
|
|
damount = depositAmount;
|
|
} else {
|
|
damount = numDays;
|
|
}
|
|
} else {
|
|
// For multiple days
|
|
if ("1".equals(startPeriod) && "2".equals(endPeriod)) {
|
|
damount = depositAmount * numDays;
|
|
} else if ("1".equals(startPeriod) && "1".equals(endPeriod)) {
|
|
damount = depositAmount * (numDays - 1) + depositAmount;
|
|
} else if ("2".equals(startPeriod) && "2".equals(endPeriod)) {
|
|
damount = depositAmount * (numDays - 1) + depositAmount;
|
|
} else if ("2".equals(startPeriod) && "1".equals(endPeriod)) {
|
|
damount = depositAmount * (numDays - 2) + depositAmount;
|
|
} else {
|
|
damount = numDays;
|
|
}
|
|
}
|
|
|
|
return damount;
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|