diff --git a/pom.xml b/pom.xml index 6804ce2..e00c343 100644 --- a/pom.xml +++ b/pom.xml @@ -10,10 +10,10 @@ com.gcc - rdo_login + flagpoles_services 0.0.1-SNAPSHOT - rdo_login - Project for Allocating polling persons + flagpoles_services + Project for Flagpoles Services diff --git a/src/main/java/com/gcc/swm_services/SwmApplication.java b/src/main/java/com/gcc/flagpoles_services/FlagpolesApplication.java similarity index 59% rename from src/main/java/com/gcc/swm_services/SwmApplication.java rename to src/main/java/com/gcc/flagpoles_services/FlagpolesApplication.java index e983cf3..b064766 100644 --- a/src/main/java/com/gcc/swm_services/SwmApplication.java +++ b/src/main/java/com/gcc/flagpoles_services/FlagpolesApplication.java @@ -1,13 +1,13 @@ -package com.gcc.swm_services; +package com.gcc.flagpoles_services; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication -public class SwmApplication { +public class FlagpolesApplication { public static void main(String[] args) { - SpringApplication.run(SwmApplication.class, args); + SpringApplication.run(FlagpolesApplication.class, args); } } diff --git a/src/main/java/com/gcc/swm_services/configuration/AppConfig.java b/src/main/java/com/gcc/flagpoles_services/configuration/AppConfig.java similarity index 53% rename from src/main/java/com/gcc/swm_services/configuration/AppConfig.java rename to src/main/java/com/gcc/flagpoles_services/configuration/AppConfig.java index 9eb5b8d..f74793d 100644 --- a/src/main/java/com/gcc/swm_services/configuration/AppConfig.java +++ b/src/main/java/com/gcc/flagpoles_services/configuration/AppConfig.java @@ -1,4 +1,4 @@ -package com.gcc.swm_services.configuration; +package com.gcc.flagpoles_services.configuration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -12,4 +12,14 @@ public class AppConfig { return new RestTemplate(); } + public String otpUrl = "https://tmegov.onex-aura.com/api/sms?"; + + public String getOtpUrl() { + return otpUrl; + } + + public void setOtpUrl(String otpUrl) { + this.otpUrl = otpUrl; + } + } diff --git a/src/main/java/com/gcc/swm_services/configuration/DataSourceConfig.java b/src/main/java/com/gcc/flagpoles_services/configuration/DataSourceConfig.java similarity index 80% rename from src/main/java/com/gcc/swm_services/configuration/DataSourceConfig.java rename to src/main/java/com/gcc/flagpoles_services/configuration/DataSourceConfig.java index f0de302..07469c8 100644 --- a/src/main/java/com/gcc/swm_services/configuration/DataSourceConfig.java +++ b/src/main/java/com/gcc/flagpoles_services/configuration/DataSourceConfig.java @@ -1,4 +1,4 @@ -package com.gcc.swm_services.configuration; +package com.gcc.flagpoles_services.configuration; import org.hibernate.jpa.HibernatePersistenceProvider; import org.springframework.beans.factory.annotation.Qualifier; @@ -23,18 +23,17 @@ import java.util.Properties; public class DataSourceConfig { // local - private static String host = "localhost:3306"; - private static String dbpassword = "root"; + // private static String host = "localhost:3306"; + // private static String dbpassword = "root"; // AWS - // private static String host = - // "gcc-facial-db-instance-1.cf48eqcciziq.ap-south-1.rds.amazonaws.com:3306"; - // private static String dbpassword = "gcc-facial-password"; + private static String host = "gcc-facial-db-instance-1.cf48eqcciziq.ap-south-1.rds.amazonaws.com:3306"; + private static String dbpassword = "gcc-facial-password"; @Configuration @EnableTransactionManagement @EnableJpaRepositories(entityManagerFactoryRef = "appEntityManagerFactory", transactionManagerRef = "appTransactionManager", basePackages = { - "com.gcc.swm_services.repository" }) + "com.gcc.flagpoles_services.repository" }) public static class MysqlAppDataSourceConfig { @Primary @@ -42,7 +41,7 @@ public class DataSourceConfig { public DataSource mysqlAppDataSource() { DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); - dataSource.setUrl("jdbc:mysql://" + host + "/gcc_swm_services_apps"); + dataSource.setUrl("jdbc:mysql://" + host + "/gcc_flagpoles_services_apps"); dataSource.setUsername("root"); dataSource.setPassword(dbpassword); return dataSource; @@ -61,7 +60,7 @@ public class DataSourceConfig { @Qualifier("mysqlAppDataSource") DataSource dataSource) { LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean(); entityManagerFactoryBean.setDataSource(dataSource); - entityManagerFactoryBean.setPackagesToScan("com.gcc.swm_services.entity"); + entityManagerFactoryBean.setPackagesToScan("com.gcc.flagpoles_services.entity"); entityManagerFactoryBean.setPersistenceProviderClass(HibernatePersistenceProvider.class); Properties properties = new Properties(); properties.setProperty("hibernate.hbm2ddl.auto", "update"); @@ -79,11 +78,11 @@ public class DataSourceConfig { } //////////////////////////// (For GCC Election) //////////////////////// - @Bean(name = "mysqlSwmDataSource") - public DataSource mysqlSwmDataSource() { + @Bean(name = "mysqlFlagPoleManagerSystemDataSource") + public DataSource mysqlFlagPoleManagerSystemDataSource() { DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); - dataSource.setUrl("jdbc:mysql://" + host + "/gcc_swm_facilities"); + dataSource.setUrl("jdbc:mysql://" + host + "/gcc_flag_pole"); dataSource.setUsername("root"); dataSource.setPassword(dbpassword); return dataSource; diff --git a/src/main/java/com/gcc/swm_services/configuration/JacksonConfiguration.java b/src/main/java/com/gcc/flagpoles_services/configuration/JacksonConfiguration.java similarity index 94% rename from src/main/java/com/gcc/swm_services/configuration/JacksonConfiguration.java rename to src/main/java/com/gcc/flagpoles_services/configuration/JacksonConfiguration.java index 1c2a36f..af8e427 100644 --- a/src/main/java/com/gcc/swm_services/configuration/JacksonConfiguration.java +++ b/src/main/java/com/gcc/flagpoles_services/configuration/JacksonConfiguration.java @@ -1,4 +1,4 @@ -package com.gcc.swm_services.configuration; +package com.gcc.flagpoles_services.configuration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/src/main/java/com/gcc/swm_services/configuration/SecurityConfig.java b/src/main/java/com/gcc/flagpoles_services/configuration/SecurityConfig.java similarity index 77% rename from src/main/java/com/gcc/swm_services/configuration/SecurityConfig.java rename to src/main/java/com/gcc/flagpoles_services/configuration/SecurityConfig.java index 37ad948..de09282 100644 --- a/src/main/java/com/gcc/swm_services/configuration/SecurityConfig.java +++ b/src/main/java/com/gcc/flagpoles_services/configuration/SecurityConfig.java @@ -1,4 +1,4 @@ -package com.gcc.swm_services.configuration; +package com.gcc.flagpoles_services.configuration; import javax.persistence.Basic; @@ -12,7 +12,7 @@ import org.springframework.security.config.annotation.web.configuration.WebSecur import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; -import com.gcc.swm_services.service.CustomUserDetailsService; +import com.gcc.flagpoles_services.service.CustomUserDetailsService; @Configuration @EnableWebSecurity @@ -28,8 +28,9 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override public void configure(WebSecurity web) throws Exception { web.ignoring() - .antMatchers("/static/**", "/assets/**", "/api/**", "/images/**", "/swm/static/**", - "/swm/assets/**", "/swm/api/**", "/swm/images/**", "/swm/files/**", "/.well-known/**", + .antMatchers("/static/**", "/assets/**", "/api/**", "/images/**", "/flagpoles/static/**", + "/flagpoles/assets/**", "/flagpoles/api/**", "/flagpoles/images/**", "/flagpoles/files/**", + "/.well-known/**", "/favicon.ico", "/static/**", "/css/**", @@ -53,20 +54,20 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { .cors().and() // Enable CORS .csrf().disable() // Disable CSRF protection for simplicity (Enable if needed) .authorizeRequests() - .antMatchers("/swm/error").permitAll() - .antMatchers("/swm/login").permitAll() // Add the login URL - .antMatchers("/swm/admin/**").hasRole("ADMIN") // Add the admin URLs - .antMatchers("/swm/**").hasAnyRole("ADMIN", "USER") // Add other URLs + .antMatchers("/flagpoles/error").permitAll() + .antMatchers("/flagpoles/login").permitAll() // Add the login URL + .antMatchers("/flagpoles/admin/**").hasRole("ADMIN") // Add the admin URLs + .antMatchers("/flagpoles/**").hasAnyRole("ADMIN", "USER") // Add other URLs // .anyRequest().authenticated() .and() .formLogin() - .loginPage("/swm/login") // Customize the login page URL - .defaultSuccessUrl("/swm") // Include the success URL + .loginPage("/flagpoles/login") // Customize the login page URL + .defaultSuccessUrl("/flagpoles") // Include the success URL .permitAll() .and() .logout() - .logoutUrl("/swm/logout") // Include the logout URL - .logoutSuccessUrl("/swm/login") // Include the success logout URL + .logoutUrl("/flagpoles/logout") // Include the logout URL + .logoutSuccessUrl("/flagpoles/login") // Include the success logout URL .permitAll() .and() .sessionManagement() diff --git a/src/main/java/com/gcc/swm_services/configuration/ThymeleafConfig.java b/src/main/java/com/gcc/flagpoles_services/configuration/ThymeleafConfig.java similarity index 95% rename from src/main/java/com/gcc/swm_services/configuration/ThymeleafConfig.java rename to src/main/java/com/gcc/flagpoles_services/configuration/ThymeleafConfig.java index 7b1a2f1..214c015 100644 --- a/src/main/java/com/gcc/swm_services/configuration/ThymeleafConfig.java +++ b/src/main/java/com/gcc/flagpoles_services/configuration/ThymeleafConfig.java @@ -1,4 +1,4 @@ -package com.gcc.swm_services.configuration; +package com.gcc.flagpoles_services.configuration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/src/main/java/com/gcc/swm_services/configuration/WebMvcConfig.java b/src/main/java/com/gcc/flagpoles_services/configuration/WebMvcConfig.java similarity index 83% rename from src/main/java/com/gcc/swm_services/configuration/WebMvcConfig.java rename to src/main/java/com/gcc/flagpoles_services/configuration/WebMvcConfig.java index 57c5229..d22caee 100644 --- a/src/main/java/com/gcc/swm_services/configuration/WebMvcConfig.java +++ b/src/main/java/com/gcc/flagpoles_services/configuration/WebMvcConfig.java @@ -1,4 +1,4 @@ -package com.gcc.swm_services.configuration; +package com.gcc.flagpoles_services.configuration; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -8,14 +8,14 @@ import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; -import com.gcc.swm_services.repository.AppModuleAccessRepository; -import com.gcc.swm_services.repository.AppModuleRepository; -import com.gcc.swm_services.repository.MenuItemAccessRepository; -import com.gcc.swm_services.repository.MenuItemRepository; -import com.gcc.swm_services.repository.SubMenuItemAccessRepository; -import com.gcc.swm_services.repository.SubMenuItemRepository; +import com.gcc.flagpoles_services.repository.AppModuleAccessRepository; +import com.gcc.flagpoles_services.repository.AppModuleRepository; +import com.gcc.flagpoles_services.repository.MenuItemAccessRepository; +import com.gcc.flagpoles_services.repository.MenuItemRepository; +import com.gcc.flagpoles_services.repository.SubMenuItemAccessRepository; +import com.gcc.flagpoles_services.repository.SubMenuItemRepository; -import com.gcc.swm_services.interceptor.AppInterceptor; +import com.gcc.flagpoles_services.interceptor.AppInterceptor; @Configuration public class WebMvcConfig implements WebMvcConfigurer { diff --git a/src/main/java/com/gcc/swm_services/controller/APIController.java b/src/main/java/com/gcc/flagpoles_services/controller/APIController.java similarity index 93% rename from src/main/java/com/gcc/swm_services/controller/APIController.java rename to src/main/java/com/gcc/flagpoles_services/controller/APIController.java index 7e15962..0b3c80a 100644 --- a/src/main/java/com/gcc/swm_services/controller/APIController.java +++ b/src/main/java/com/gcc/flagpoles_services/controller/APIController.java @@ -1,4 +1,4 @@ -package com.gcc.swm_services.controller; +package com.gcc.flagpoles_services.controller; import java.util.Base64; import java.util.List; @@ -17,27 +17,27 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import com.gcc.swm_services.entity.AppModuleAccessEntity; -import com.gcc.swm_services.entity.AppModuleEntity; -import com.gcc.swm_services.entity.AppUserEntity; -import com.gcc.swm_services.entity.MenuItemAccessEntity; -import com.gcc.swm_services.entity.MenuItemEntity; -import com.gcc.swm_services.entity.SubMenuItemAccessEntity; -import com.gcc.swm_services.entity.SubMenuItemEntity; -import com.gcc.swm_services.entity.UserActivityLog; -import com.gcc.swm_services.repository.AppModuleAccessRepository; -import com.gcc.swm_services.repository.AppModuleRepository; -import com.gcc.swm_services.repository.AppUserRepository; -import com.gcc.swm_services.repository.MenuItemAccessRepository; -import com.gcc.swm_services.repository.MenuItemRepository; -import com.gcc.swm_services.repository.SubMenuItemAccessRepository; -import com.gcc.swm_services.repository.SubMenuItemRepository; -import com.gcc.swm_services.repository.UserActivityLogRepository; -import com.gcc.swm_services.service.LoginUserInfo; +import com.gcc.flagpoles_services.entity.AppModuleAccessEntity; +import com.gcc.flagpoles_services.entity.AppModuleEntity; +import com.gcc.flagpoles_services.entity.AppUserEntity; +import com.gcc.flagpoles_services.entity.MenuItemAccessEntity; +import com.gcc.flagpoles_services.entity.MenuItemEntity; +import com.gcc.flagpoles_services.entity.SubMenuItemAccessEntity; +import com.gcc.flagpoles_services.entity.SubMenuItemEntity; +import com.gcc.flagpoles_services.entity.UserActivityLog; +import com.gcc.flagpoles_services.repository.AppModuleAccessRepository; +import com.gcc.flagpoles_services.repository.AppModuleRepository; +import com.gcc.flagpoles_services.repository.AppUserRepository; +import com.gcc.flagpoles_services.repository.MenuItemAccessRepository; +import com.gcc.flagpoles_services.repository.MenuItemRepository; +import com.gcc.flagpoles_services.repository.SubMenuItemAccessRepository; +import com.gcc.flagpoles_services.repository.SubMenuItemRepository; +import com.gcc.flagpoles_services.repository.UserActivityLogRepository; +import com.gcc.flagpoles_services.service.LoginUserInfo; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; -@RequestMapping("/swm/api") +@RequestMapping("/flagpoles/api") @RestController public class APIController { @@ -296,7 +296,7 @@ public class APIController { + " \n" + "

" + appUserEntity.getUserid().getName() + "

\n" - + "

Front End Developer

\n" + + "

Officer

\n" + " \n" + " " + "
\n" @@ -335,7 +335,7 @@ public class APIController { + " \n" + "

" + appUserEntity.getUserid().getName() + "

\n" - + "

Front End Developer

\n" + + "

Officer

\n" + "

" + userIp + "

\n" + " \n" + " " diff --git a/src/main/java/com/gcc/swm_services/controller/AdminController.java b/src/main/java/com/gcc/flagpoles_services/controller/AdminController.java similarity index 86% rename from src/main/java/com/gcc/swm_services/controller/AdminController.java rename to src/main/java/com/gcc/flagpoles_services/controller/AdminController.java index 5012fa5..e14c461 100644 --- a/src/main/java/com/gcc/swm_services/controller/AdminController.java +++ b/src/main/java/com/gcc/flagpoles_services/controller/AdminController.java @@ -1,4 +1,4 @@ -package com.gcc.swm_services.controller; +package com.gcc.flagpoles_services.controller; import java.util.List; @@ -8,20 +8,20 @@ import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; -import com.gcc.swm_services.entity.AppModuleEntity; -import com.gcc.swm_services.entity.AppUserEntity; -import com.gcc.swm_services.entity.AppUserGroupEntity; -import com.gcc.swm_services.entity.MenuItemEntity; -import com.gcc.swm_services.entity.SubMenuItemEntity; -import com.gcc.swm_services.repository.AppModuleRepository; -import com.gcc.swm_services.repository.AppUserGroupRepository; -import com.gcc.swm_services.repository.AppUserRepository; -import com.gcc.swm_services.repository.MenuItemRepository; -import com.gcc.swm_services.repository.SubMenuItemRepository; -import com.gcc.swm_services.service.LoginUserInfo; - -@RequestMapping("/swm/admin") -@Controller("swmAdminController") +import com.gcc.flagpoles_services.entity.AppModuleEntity; +import com.gcc.flagpoles_services.entity.AppUserEntity; +import com.gcc.flagpoles_services.entity.AppUserGroupEntity; +import com.gcc.flagpoles_services.entity.MenuItemEntity; +import com.gcc.flagpoles_services.entity.SubMenuItemEntity; +import com.gcc.flagpoles_services.repository.AppModuleRepository; +import com.gcc.flagpoles_services.repository.AppUserGroupRepository; +import com.gcc.flagpoles_services.repository.AppUserRepository; +import com.gcc.flagpoles_services.repository.MenuItemRepository; +import com.gcc.flagpoles_services.repository.SubMenuItemRepository; +import com.gcc.flagpoles_services.service.LoginUserInfo; + +@RequestMapping("/flagpoles/admin") +@Controller("flagpolesAdminController") public class AdminController { private final AppUserRepository appUserRepository; diff --git a/src/main/java/com/gcc/swm_services/controller/CustomErrorController.java b/src/main/java/com/gcc/flagpoles_services/controller/CustomErrorController.java similarity index 98% rename from src/main/java/com/gcc/swm_services/controller/CustomErrorController.java rename to src/main/java/com/gcc/flagpoles_services/controller/CustomErrorController.java index bffcd61..eb385ee 100644 --- a/src/main/java/com/gcc/swm_services/controller/CustomErrorController.java +++ b/src/main/java/com/gcc/flagpoles_services/controller/CustomErrorController.java @@ -1,4 +1,4 @@ -package com.gcc.swm_services.controller; +package com.gcc.flagpoles_services.controller; import java.util.HashMap; import java.util.Map; @@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; -import com.gcc.swm_services.modeldata.ErrorResponse; +import com.gcc.flagpoles_services.modeldata.ErrorResponse; @Controller public class CustomErrorController implements ErrorController { diff --git a/src/main/java/com/gcc/swm_services/controller/DateTimeUtil.java b/src/main/java/com/gcc/flagpoles_services/controller/DateTimeUtil.java similarity index 96% rename from src/main/java/com/gcc/swm_services/controller/DateTimeUtil.java rename to src/main/java/com/gcc/flagpoles_services/controller/DateTimeUtil.java index 6f2ce9c..48dd414 100644 --- a/src/main/java/com/gcc/swm_services/controller/DateTimeUtil.java +++ b/src/main/java/com/gcc/flagpoles_services/controller/DateTimeUtil.java @@ -1,4 +1,4 @@ -package com.gcc.swm_services.controller; +package com.gcc.flagpoles_services.controller; import org.springframework.stereotype.Service; import java.time.LocalDateTime; diff --git a/src/main/java/com/gcc/swm_services/controller/FileController.java b/src/main/java/com/gcc/flagpoles_services/controller/FileController.java similarity index 94% rename from src/main/java/com/gcc/swm_services/controller/FileController.java rename to src/main/java/com/gcc/flagpoles_services/controller/FileController.java index 8f78a7a..27bb9f2 100644 --- a/src/main/java/com/gcc/swm_services/controller/FileController.java +++ b/src/main/java/com/gcc/flagpoles_services/controller/FileController.java @@ -1,4 +1,4 @@ -package com.gcc.swm_services.controller; +package com.gcc.flagpoles_services.controller; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.Resource; @@ -22,13 +22,13 @@ public class FileController { @Value("${file.upload.directory}") private String uploadDirectory; - @GetMapping("/swm/files/{directoryPath}/**") + @GetMapping("/flagpoles/files/{directoryPath}/**") public ResponseEntity serveFile(@PathVariable String directoryPath, HttpServletRequest request) { String fullPath = (String) request.getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE); System.out.println(fullPath.toString() + "\n" + directoryPath.length() + "\n directoryPath:" + directoryPath); // String relativePath = fullPath.substring(directoryPath.length() + 1); // // Adding 1 for the trailing '/' - String relativePath = fullPath.replace("/swm/files", ""); + String relativePath = fullPath.replace("/flagpoles/files", ""); String filePath = uploadDirectory + "/" + relativePath; Path path = Paths.get(filePath).normalize(); System.out.println(path.toString()); diff --git a/src/main/java/com/gcc/swm_services/controller/MainController.java b/src/main/java/com/gcc/flagpoles_services/controller/MainController.java similarity index 87% rename from src/main/java/com/gcc/swm_services/controller/MainController.java rename to src/main/java/com/gcc/flagpoles_services/controller/MainController.java index 4708907..b60014a 100644 --- a/src/main/java/com/gcc/swm_services/controller/MainController.java +++ b/src/main/java/com/gcc/flagpoles_services/controller/MainController.java @@ -1,4 +1,4 @@ -package com.gcc.swm_services.controller; +package com.gcc.flagpoles_services.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -6,9 +6,9 @@ import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; -import com.gcc.swm_services.service.LoginUserInfo; +import com.gcc.flagpoles_services.service.LoginUserInfo; -@RequestMapping("/swm") +@RequestMapping("/flagpoles") @Controller("MainController") public class MainController { diff --git a/src/main/java/com/gcc/swm_services/controller/MenuController.java b/src/main/java/com/gcc/flagpoles_services/controller/MenuController.java similarity index 84% rename from src/main/java/com/gcc/swm_services/controller/MenuController.java rename to src/main/java/com/gcc/flagpoles_services/controller/MenuController.java index 713957b..a67565d 100644 --- a/src/main/java/com/gcc/swm_services/controller/MenuController.java +++ b/src/main/java/com/gcc/flagpoles_services/controller/MenuController.java @@ -1,4 +1,4 @@ -package com.gcc.swm_services.controller; +package com.gcc.flagpoles_services.controller; import java.util.List; @@ -6,19 +6,19 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ModelAttribute; -import com.gcc.swm_services.entity.AppModuleAccessEntity; -import com.gcc.swm_services.entity.AppModuleEntity; -import com.gcc.swm_services.entity.MenuItemAccessEntity; -import com.gcc.swm_services.entity.MenuItemEntity; -import com.gcc.swm_services.entity.SubMenuItemAccessEntity; -import com.gcc.swm_services.entity.SubMenuItemEntity; -import com.gcc.swm_services.repository.AppModuleAccessRepository; -import com.gcc.swm_services.repository.AppModuleRepository; -import com.gcc.swm_services.repository.MenuItemAccessRepository; -import com.gcc.swm_services.repository.MenuItemRepository; -import com.gcc.swm_services.repository.SubMenuItemAccessRepository; -import com.gcc.swm_services.repository.SubMenuItemRepository; -import com.gcc.swm_services.service.LoginUserInfo; +import com.gcc.flagpoles_services.entity.AppModuleAccessEntity; +import com.gcc.flagpoles_services.entity.AppModuleEntity; +import com.gcc.flagpoles_services.entity.MenuItemAccessEntity; +import com.gcc.flagpoles_services.entity.MenuItemEntity; +import com.gcc.flagpoles_services.entity.SubMenuItemAccessEntity; +import com.gcc.flagpoles_services.entity.SubMenuItemEntity; +import com.gcc.flagpoles_services.repository.AppModuleAccessRepository; +import com.gcc.flagpoles_services.repository.AppModuleRepository; +import com.gcc.flagpoles_services.repository.MenuItemAccessRepository; +import com.gcc.flagpoles_services.repository.MenuItemRepository; +import com.gcc.flagpoles_services.repository.SubMenuItemAccessRepository; +import com.gcc.flagpoles_services.repository.SubMenuItemRepository; +import com.gcc.flagpoles_services.service.LoginUserInfo; @ControllerAdvice public class MenuController { @@ -72,7 +72,7 @@ public class MenuController { } String menuHTML = ""; - menuHTML = ""; + menuHTML = ""; for (AppModuleEntity moduleName : getAppModuleEntities) { menuHTML = menuHTML + "
" + subMenuItem.getName() + ""; } else { - subSubMenuHTML = subSubMenuHTML + "" + subMenuItem.getName() + ""; } @@ -151,7 +151,7 @@ public class MenuController { + "\" class=\"menu-item\"" + target + ">" + subMenuItem.getName() + ""; } else { - subSubMenuHTML = subSubMenuHTML + "" + subMenuItem.getName() + ""; } @@ -169,7 +169,7 @@ public class MenuController { } else { if (menuItem.getOrderby() > 0) { - subMenuHTML = subMenuHTML + "" + menuItem.getName() + ""; } diff --git a/src/main/java/com/gcc/swm_services/controller/login.java b/src/main/java/com/gcc/flagpoles_services/controller/login.java similarity index 72% rename from src/main/java/com/gcc/swm_services/controller/login.java rename to src/main/java/com/gcc/flagpoles_services/controller/login.java index 67ec929..b391296 100644 --- a/src/main/java/com/gcc/swm_services/controller/login.java +++ b/src/main/java/com/gcc/flagpoles_services/controller/login.java @@ -1,12 +1,12 @@ -package com.gcc.swm_services.controller; +package com.gcc.flagpoles_services.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; -@RequestMapping("/swm") -@Controller("swmLoginController") +@RequestMapping("/flagpoles") +@Controller("flagpolesLoginController") public class login { @GetMapping("/login") diff --git a/src/main/java/com/gcc/swm_services/entity/AppModuleAccessEntity.java b/src/main/java/com/gcc/flagpoles_services/entity/AppModuleAccessEntity.java similarity index 98% rename from src/main/java/com/gcc/swm_services/entity/AppModuleAccessEntity.java rename to src/main/java/com/gcc/flagpoles_services/entity/AppModuleAccessEntity.java index fa27e9c..587cf70 100644 --- a/src/main/java/com/gcc/swm_services/entity/AppModuleAccessEntity.java +++ b/src/main/java/com/gcc/flagpoles_services/entity/AppModuleAccessEntity.java @@ -1,4 +1,4 @@ -package com.gcc.swm_services.entity; +package com.gcc.flagpoles_services.entity; import javax.persistence.Column; import javax.persistence.Entity; diff --git a/src/main/java/com/gcc/swm_services/entity/AppModuleEntity.java b/src/main/java/com/gcc/flagpoles_services/entity/AppModuleEntity.java similarity index 98% rename from src/main/java/com/gcc/swm_services/entity/AppModuleEntity.java rename to src/main/java/com/gcc/flagpoles_services/entity/AppModuleEntity.java index 3ff7aaf..76b1036 100644 --- a/src/main/java/com/gcc/swm_services/entity/AppModuleEntity.java +++ b/src/main/java/com/gcc/flagpoles_services/entity/AppModuleEntity.java @@ -1,4 +1,4 @@ -package com.gcc.swm_services.entity; +package com.gcc.flagpoles_services.entity; import javax.persistence.Column; import javax.persistence.Entity; diff --git a/src/main/java/com/gcc/swm_services/entity/AppUserEntity.java b/src/main/java/com/gcc/flagpoles_services/entity/AppUserEntity.java similarity index 98% rename from src/main/java/com/gcc/swm_services/entity/AppUserEntity.java rename to src/main/java/com/gcc/flagpoles_services/entity/AppUserEntity.java index da2146d..56b65ed 100644 --- a/src/main/java/com/gcc/swm_services/entity/AppUserEntity.java +++ b/src/main/java/com/gcc/flagpoles_services/entity/AppUserEntity.java @@ -1,4 +1,4 @@ -package com.gcc.swm_services.entity; +package com.gcc.flagpoles_services.entity; import javax.persistence.Column; import javax.persistence.Entity; diff --git a/src/main/java/com/gcc/swm_services/entity/AppUserGroupEntity.java b/src/main/java/com/gcc/flagpoles_services/entity/AppUserGroupEntity.java similarity index 97% rename from src/main/java/com/gcc/swm_services/entity/AppUserGroupEntity.java rename to src/main/java/com/gcc/flagpoles_services/entity/AppUserGroupEntity.java index 1e1309d..aa2ef32 100644 --- a/src/main/java/com/gcc/swm_services/entity/AppUserGroupEntity.java +++ b/src/main/java/com/gcc/flagpoles_services/entity/AppUserGroupEntity.java @@ -1,4 +1,4 @@ -package com.gcc.swm_services.entity; +package com.gcc.flagpoles_services.entity; import javax.persistence.Column; import javax.persistence.Entity; diff --git a/src/main/java/com/gcc/swm_services/entity/MenuItemAccessEntity.java b/src/main/java/com/gcc/flagpoles_services/entity/MenuItemAccessEntity.java similarity index 98% rename from src/main/java/com/gcc/swm_services/entity/MenuItemAccessEntity.java rename to src/main/java/com/gcc/flagpoles_services/entity/MenuItemAccessEntity.java index 05ad0e4..8cb919d 100644 --- a/src/main/java/com/gcc/swm_services/entity/MenuItemAccessEntity.java +++ b/src/main/java/com/gcc/flagpoles_services/entity/MenuItemAccessEntity.java @@ -1,4 +1,4 @@ -package com.gcc.swm_services.entity; +package com.gcc.flagpoles_services.entity; import javax.persistence.Column; import javax.persistence.Entity; diff --git a/src/main/java/com/gcc/swm_services/entity/MenuItemEntity.java b/src/main/java/com/gcc/flagpoles_services/entity/MenuItemEntity.java similarity index 98% rename from src/main/java/com/gcc/swm_services/entity/MenuItemEntity.java rename to src/main/java/com/gcc/flagpoles_services/entity/MenuItemEntity.java index 446413d..4ba55cd 100644 --- a/src/main/java/com/gcc/swm_services/entity/MenuItemEntity.java +++ b/src/main/java/com/gcc/flagpoles_services/entity/MenuItemEntity.java @@ -1,4 +1,4 @@ -package com.gcc.swm_services.entity; +package com.gcc.flagpoles_services.entity; import javax.persistence.Column; import javax.persistence.Entity; diff --git a/src/main/java/com/gcc/swm_services/entity/SubMenuItemAccessEntity.java b/src/main/java/com/gcc/flagpoles_services/entity/SubMenuItemAccessEntity.java similarity index 98% rename from src/main/java/com/gcc/swm_services/entity/SubMenuItemAccessEntity.java rename to src/main/java/com/gcc/flagpoles_services/entity/SubMenuItemAccessEntity.java index ebe8e59..e94b69a 100644 --- a/src/main/java/com/gcc/swm_services/entity/SubMenuItemAccessEntity.java +++ b/src/main/java/com/gcc/flagpoles_services/entity/SubMenuItemAccessEntity.java @@ -1,4 +1,4 @@ -package com.gcc.swm_services.entity; +package com.gcc.flagpoles_services.entity; import javax.persistence.Column; import javax.persistence.Entity; diff --git a/src/main/java/com/gcc/swm_services/entity/SubMenuItemEntity.java b/src/main/java/com/gcc/flagpoles_services/entity/SubMenuItemEntity.java similarity index 98% rename from src/main/java/com/gcc/swm_services/entity/SubMenuItemEntity.java rename to src/main/java/com/gcc/flagpoles_services/entity/SubMenuItemEntity.java index a569131..6887c8c 100644 --- a/src/main/java/com/gcc/swm_services/entity/SubMenuItemEntity.java +++ b/src/main/java/com/gcc/flagpoles_services/entity/SubMenuItemEntity.java @@ -1,4 +1,4 @@ -package com.gcc.swm_services.entity; +package com.gcc.flagpoles_services.entity; import javax.persistence.Column; import javax.persistence.Entity; diff --git a/src/main/java/com/gcc/swm_services/entity/UserActivityLog.java b/src/main/java/com/gcc/flagpoles_services/entity/UserActivityLog.java similarity index 95% rename from src/main/java/com/gcc/swm_services/entity/UserActivityLog.java rename to src/main/java/com/gcc/flagpoles_services/entity/UserActivityLog.java index c2d0308..fa90c52 100644 --- a/src/main/java/com/gcc/swm_services/entity/UserActivityLog.java +++ b/src/main/java/com/gcc/flagpoles_services/entity/UserActivityLog.java @@ -1,4 +1,4 @@ -package com.gcc.swm_services.entity; +package com.gcc.flagpoles_services.entity; import java.time.LocalDateTime; import javax.persistence.Entity; diff --git a/src/main/java/com/gcc/swm_services/entity/UserInfoEntity.java b/src/main/java/com/gcc/flagpoles_services/entity/UserInfoEntity.java similarity index 97% rename from src/main/java/com/gcc/swm_services/entity/UserInfoEntity.java rename to src/main/java/com/gcc/flagpoles_services/entity/UserInfoEntity.java index aedfe70..ce686d5 100644 --- a/src/main/java/com/gcc/swm_services/entity/UserInfoEntity.java +++ b/src/main/java/com/gcc/flagpoles_services/entity/UserInfoEntity.java @@ -1,4 +1,4 @@ -package com.gcc.swm_services.entity; +package com.gcc.flagpoles_services.entity; import javax.persistence.Column; import javax.persistence.Entity; diff --git a/src/main/java/com/gcc/flagpoles_services/flagpoles/controller/FlagPoleApiController.java b/src/main/java/com/gcc/flagpoles_services/flagpoles/controller/FlagPoleApiController.java new file mode 100644 index 0000000..c813574 --- /dev/null +++ b/src/main/java/com/gcc/flagpoles_services/flagpoles/controller/FlagPoleApiController.java @@ -0,0 +1,425 @@ +package com.gcc.flagpoles_services.flagpoles.controller; + +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +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.RestController; +import org.springframework.web.client.RestTemplate; + +import com.gcc.flagpoles_services.configuration.AppConfig; +import com.gcc.flagpoles_services.flagpoles.service.FlagpoleSMSService; +import com.gcc.flagpoles_services.flagpoles.service.RdoService; + +@RestController +@RequestMapping("/flagpoles/api/flagpoleregistration") +public class FlagPoleApiController { + + @Autowired + private RdoService rdoService; + + @Autowired + private FlagpoleSMSService flagpoleSMSService; + + private final RestTemplate restTemplate; + private final AppConfig appConfig; + + @Autowired + public FlagPoleApiController(RestTemplate restTemplate, AppConfig appConfig) { + this.restTemplate = restTemplate; + this.appConfig = appConfig; + } + + // new + // @GetMapping("/getAllDetails") + // public ResponseEntity getAllRequestDetails( + // @RequestParam String userLogin, + // @RequestParam(required = false) String startDate, + // @RequestParam(required = false) String endDate) { + + // try { + // List> result = + // rdoService.getAllRequestDetailsByUserLogin( + // userLogin, startDate, endDate); + + // // 🔥 Attach HISTORY per refid + // for (Map record : result) { + // String refid = (String) record.get("refid"); + + // // List> history = + // // rdoService.getRequestHistoryByRefId(refid); + // List> history = + // rdoService.getOfficerFeedbackHistoryByRefId(refid, + // userLogin); + + // record.put("history", history); + // } + + // return ResponseEntity.ok( + // Map.of( + // "status", "success", + // "count", result.size(), + // "data", result)); + + // } catch (Exception e) { + // e.printStackTrace(); + // return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) + // .body(Map.of( + // "status", "error", + // "message", "Failed to fetch data", + // "error", e.getMessage())); + // } + // } + + // @GetMapping("/getAllDetails") + // public ResponseEntity getAllRequestDetails( + // @RequestParam String gccUserId, + // @RequestParam(required = false) String startDate, + // @RequestParam(required = false) String endDate) { + + // try { + + // // 🔥 Resolve username ONCE (backend trust) + // String username = rdoService.getUsernameByUserId(gccUserId); + // if (username == null) { + // throw new RuntimeException("Invalid gccUserId : " + gccUserId); + // } + + // List> result = + // rdoService.getAllRequestDetailsByUserLogin( + // gccUserId, startDate, endDate); + + // // 🔥 Attach HISTORY per refid (dept-wise) + // for (Map record : result) { + // String refid = (String) record.get("refid"); + + // List> history = + // rdoService.getOfficerFeedbackHistoryByRefId( + // refid, username); + + // record.put("history", history); + // } + + // return ResponseEntity.ok( + // Map.of( + // "status", "success", + // "count", result.size(), + // "data", result)); + + // } catch (Exception e) { + // e.printStackTrace(); + // return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) + // .body(Map.of( + // "status", "error", + // "message", "Failed to fetch data", + // "error", e.getMessage())); + // } + // } + + @GetMapping("/getAllDetails") + public ResponseEntity getAllRequestDetails( + @RequestParam String gccUserId, + @RequestParam(required = false) String startDate, + @RequestParam(required = false) String endDate) { + + try { + + /* 🔥 Normalize input (username OR id → gccuserid) */ + gccUserId = rdoService.resolveGccUserId(gccUserId); + + List> result = rdoService.getAllRequestDetailsByUserLogin(gccUserId, + startDate, endDate); + + /* 🔥 Attach HISTORY per refid */ + for (Map record : result) { + + String refid = (String) record.get("refid"); + + List> history = rdoService.getOfficerFeedbackHistoryByRefId(refid, + gccUserId); + + record.put("history", history); + } + + return ResponseEntity.ok( + Map.of( + "status", "success", + "count", result.size(), + "data", result)); + + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) + .body(Map.of( + "status", "error", + "message", "Failed to fetch data", + "error", e.getMessage())); + } + } + + // old + // @PostMapping("/rdo/updateDecision") + // public ResponseEntity updateRdoDecision( + // @RequestParam String refid, + // @RequestParam String status, + // @RequestParam String remarks, + // @RequestParam String approvedBy) { + + // int count = rdoService.updateRdoDecision(refid, status, remarks, approvedBy); + + // if (count > 0) { + // return ResponseEntity.ok(Map.of( + // "status", "SUCCESS", + // "message", "Decision updated successfully")); + // } else { + // return ResponseEntity.badRequest().body(Map.of( + // "status", "FAILED", + // "message", "Unable to update decision")); + // } + // } + + // @PostMapping("/rdo/updateDecision") + // public ResponseEntity updateRdoDecision( + // @RequestParam String refid, + // @RequestParam String status, + // @RequestParam String remarks, + // @RequestParam String gccUserId) { + + // try { + + // /* 🔥 Normalize username OR id → gccuserid */ + // gccUserId = rdoService.resolveGccUserId(gccUserId); + + // int count = rdoService.updateRdoDecision( + // refid, status, remarks, gccUserId); + + // if (count > 0) { + // return ResponseEntity.ok(Map.of( + // "status", "SUCCESS", + // "message", "Decision updated successfully")); + // } else { + // return ResponseEntity.badRequest().body(Map.of( + // "status", "FAILED", + // "message", "Unable to update decision")); + // } + + // } catch (Exception e) { + // e.printStackTrace(); + // return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) + // .body(Map.of( + // "status", "ERROR", + // "message", e.getMessage())); + // } + // } + + @PostMapping("/officer/updateDecision") + public ResponseEntity updateOfficerDecision( + @RequestParam String refid, + @RequestParam String status, + @RequestParam String remarks, + @RequestParam String gccUserId, + @RequestParam String username) { + + try { + + /* 🔥 Normalize username OR id → gccuserid */ + gccUserId = rdoService.resolveGccUserId(gccUserId); + + int count = rdoService.updateOfficerDecision( + refid, + status, + remarks, + gccUserId, + username); + + if (count > 0) { + return ResponseEntity.ok(Map.of( + "status", "SUCCESS", + "message", "Decision updated successfully")); + } else { + return ResponseEntity.badRequest().body(Map.of( + "status", "FAILED", + "message", "Unable to update decision")); + } + + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) + .body(Map.of( + "status", "ERROR", + "message", e.getMessage())); + } + } + + // old + // @GetMapping("/getApprovedAndRejectedDetails") + // public ResponseEntity getApprovedRequestDetails( + // @RequestParam String userLogin, + // @RequestParam(required = false) String startDate, + // @RequestParam(required = false) String endDate, + // @RequestParam(required = false) String status) { + + // try { + // List> result = + // rdoService.getRdoApprovedRequestDetailsByUserLogin( + // userLogin, startDate, endDate, status); + + // return ResponseEntity.ok( + // Map.of( + // "status", "success", + // "count", result.size(), + // "data", result)); + + // } catch (Exception e) { + // e.printStackTrace(); + // return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) + // .body( + // Map.of( + // "status", "error", + // "message", "Failed to fetch data", + // "error", e.getMessage())); + // } + // } + + // new + // @GetMapping("/getApprovedAndRejectedDetails") + // public ResponseEntity getApprovedRequestDetails( + // @RequestParam String userLogin, + // @RequestParam(required = false) String startDate, + // @RequestParam(required = false) String endDate, + // @RequestParam(required = false) String status) { + + // try { + // List> result = + // rdoService.getRdoApprovedRequestDetailsByUserLogin( + // userLogin, startDate, endDate, status); + + // // 🔥 Attach HISTORY per refid + // for (Map record : result) { + // String refid = (String) record.get("refid"); + + // List> history = + // rdoService.getRequestHistoryByRefId(refid); + + // record.put("history", history); + // } + + // return ResponseEntity.ok( + // Map.of( + // "status", "success", + // "count", result.size(), + // "data", result)); + + // } catch (Exception e) { + // e.printStackTrace(); + // return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) + // .body(Map.of( + // "status", "error", + // "message", "Failed to fetch data", + // "error", e.getMessage())); + // } + // } + + // @GetMapping("/getApprovedAndRejectedDetails") + // public ResponseEntity getApprovedRequestDetails( + // @RequestParam String userLogin, + // @RequestParam(required = false) String startDate, + // @RequestParam(required = false) String endDate) { + + // try { + // List> result = + // rdoService.getRdoApprovedRequestDetailsByUserLogin( + // userLogin, startDate, endDate, null); + + // for (Map record : result) { + // String refid = (String) record.get("refid"); + + // // 🔥 NEW: officer feedback history + // List> history = + // rdoService.getOfficerFeedbackHistoryByRefId(refid, + // userLogin); + + // record.put("history", history); + // } + + // return ResponseEntity.ok(Map.of( + // "status", "success", + // "count", result.size(), + // "data", result)); + + // } catch (Exception e) { + // e.printStackTrace(); + // return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) + // .body(Map.of( + // "status", "error", + // "message", "Failed to fetch data", + // "error", e.getMessage())); + // } + // } + + @GetMapping("/getApprovedAndRejectedDetails") + public ResponseEntity getApprovedRequestDetails( + @RequestParam String gccUserId, + @RequestParam(required = false) String startDate, + @RequestParam(required = false) String endDate) { + + try { + + /* 🔥 Normalize username OR id → gccuserid */ + gccUserId = rdoService.resolveGccUserId(gccUserId); + + /* 🔥 Fetch approved & rejected records */ + List> result = rdoService.getRdoApprovedRequestDetailsByUserLogin( + gccUserId, startDate, endDate, null); + + /* 🔥 Attach officer feedback history per refid */ + for (Map record : result) { + + String refid = (String) record.get("refid"); + + List> history = rdoService.getOfficerFeedbackHistoryByRefId(refid, + gccUserId); + + record.put("history", history); + } + + return ResponseEntity.ok(Map.of( + "status", "success", + "count", result.size(), + "data", result)); + + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) + .body(Map.of( + "status", "error", + "message", "Failed to fetch approved/rejected data", + "error", e.getMessage())); + } + } + + @GetMapping("/sendApprovedMessage") + public String sendApprovedMessage(@RequestParam String mobileNo, + @RequestParam String refid) { + + return flagpoleSMSService.userrequestApprovedsms(mobileNo, refid); + } + + @GetMapping("/sendRejectMessage") + public String sendRejectMessage(@RequestParam String mobileNo, @RequestParam String refid) { + return flagpoleSMSService.userrequestRejectedsms(mobileNo, refid); + } + + @GetMapping("/sendUnauthorizedMessage") + public String sendUnauthorizedMessage(@RequestParam String mobileNo, @RequestParam String location, + @RequestParam String fineAmount, @RequestParam String refid) { + return flagpoleSMSService.unauthorizedFlagPoleSms(mobileNo, location, fineAmount, refid); + } + +} diff --git a/src/main/java/com/gcc/flagpoles_services/flagpoles/controller/MainController.java b/src/main/java/com/gcc/flagpoles_services/flagpoles/controller/MainController.java new file mode 100644 index 0000000..b52886b --- /dev/null +++ b/src/main/java/com/gcc/flagpoles_services/flagpoles/controller/MainController.java @@ -0,0 +1,53 @@ +package com.gcc.flagpoles_services.flagpoles.controller; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; + +import com.gcc.flagpoles_services.service.LoginUserInfo; + +@RequestMapping("/flagpoles/list") +@Controller("flagpolesController") +public class MainController { + + @GetMapping("/requestlist") + public String home(Model model) { + + String LoginUserId = LoginUserInfo.getLoginUserId(); + model.addAttribute("LoginUserId", LoginUserId); + + String officer_name = LoginUserInfo.getCurrentUserDetails().getUsername(); + model.addAttribute("officer_name", officer_name); + + String UserRole = LoginUserInfo.getUserRole(); // rdo_north / rdo_central + model.addAttribute("UserRole", UserRole); + + return "modules/flagpole/requestlist"; + } + + @GetMapping("/approvedandrejectedlist") + public String batches(Model model) { + String LoginUserId = LoginUserInfo.getLoginUserId(); + model.addAttribute("LoginUserId", LoginUserId); + String officer_name = LoginUserInfo.getCurrentUserDetails().getUsername(); + model.addAttribute("officer_name", officer_name); + + String UserRole = LoginUserInfo.getUserRole(); + model.addAttribute("UserRole", UserRole); + return "modules/flagpole/approvedandrejectedlist"; + } + + @GetMapping("/reports") + public String dataentry(Model model) { + String LoginUserId = LoginUserInfo.getLoginUserId(); + model.addAttribute("LoginUserId", LoginUserId); + + String officer_name = LoginUserInfo.getCurrentUserDetails().getUsername(); + model.addAttribute("officer_name", officer_name); + + String UserRole = LoginUserInfo.getUserRole(); + model.addAttribute("UserRole", UserRole); + return "modules/flagpole/reports"; + } +} diff --git a/src/main/java/com/gcc/flagpoles_services/flagpoles/service/FlagpoleSMSService.java b/src/main/java/com/gcc/flagpoles_services/flagpoles/service/FlagpoleSMSService.java new file mode 100644 index 0000000..7b88954 --- /dev/null +++ b/src/main/java/com/gcc/flagpoles_services/flagpoles/service/FlagpoleSMSService.java @@ -0,0 +1,248 @@ +package com.gcc.flagpoles_services.flagpoles.service; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.URL; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.gcc.flagpoles_services.configuration.AppConfig; +import com.gcc.flagpoles_services.flagpoles.util.MessageUtility; + +@Service +public class FlagpoleSMSService { + + @Autowired + private AppConfig appConfig; + + @Autowired + private MessageUtility messageUtility; + + private final String key = "pfTEYN6H"; + + public String sendBookingSuccesssms(String mobileNo, String requestId) { + + String message = "Your Flag Pole permission request has been submitted successfully. " + + "Request ID: " + requestId + + ". You will be notified once the status is updated. By GCC"; + + // Encode message and fix colon issue (gateway not decoding %3A) + String encodedMsg = URLEncoder.encode(message, StandardCharsets.UTF_8) + .replace("%3A", ":"); + + String urlString = appConfig.getOtpUrl() + + "from=GCCCRP" + + "&key=" + key + + "&sender=GCCCRP" + + "&to=" + mobileNo + + "&body=" + encodedMsg + + "&entityid=1401572690000011081" + + "&templateid=1407176959297472163"; + + System.out.println("SMS URL:- " + urlString); + + String response = messageUtility.sendSMS(urlString); + System.out.println("SMS RESPONSE:- " + response); + + return response; + } + + public String userrequestApprovedsms(String mobileNo, String requestId) { + + String message = "Your Flag Pole permission request has been approved. " + + "Request ID: " + requestId + + ". Please proceed as per the permitted guidelines. By GCC"; + + // Encode message and fix colon issue (gateway not decoding %3A) + String encodedMsg = URLEncoder.encode(message, StandardCharsets.UTF_8) + .replace("%3A", ":"); + + String urlString = appConfig.getOtpUrl() + + "from=GCCCRP" + + "&key=" + key + + "&sender=GCCCRP" + + "&to=" + mobileNo + + "&body=" + encodedMsg + + "&entityid=1401572690000011081" + + "&templateid=1407176959304753543"; + + System.out.println("SMS URL:- " + urlString); + + String response = messageUtility.sendSMS(urlString); + System.out.println("SMS RESPONSE:- " + response); + + return response; + } + + // public String userrequestRejectedsms(String mobileNo, String requestId) { + + // String message = "Your Flag Pole permission request has been rejected. " + // + "Request ID: " + requestId + ". " + // + "Review the details in the portal + // https://gccservices.in/flagpolesregistration/status\n" + // + "By GCC"; + + // // ONLY encode. Do NOT replace %3A + // String encodedMsg = URLEncoder.encode(message, StandardCharsets.UTF_8); + + // String urlString = appConfig.getOtpUrl() + // + "from=GCCCRP" + // + "&key=" + key + // + "&sender=GCCCRP" + // + "&to=" + mobileNo + // + "&body=" + encodedMsg + // + "&entityid=1401572690000011081" + // + "&templateid=1407176959315374790"; + + // System.out.println("SMS URL:- " + urlString); + + // String response = messageUtility.sendSMS(urlString); + // System.out.println("SMS RESPONSE:- " + response); + + // return response; + // } + + public String userrequestRejectedsms(String mobileNo, String requestId) { + + try { + + String url = "https://gccservices.in/flagpolesregistration/status"; + + String message = "Your Flag Pole permission request has been rejected. Request ID: " + requestId + + ". Review the details in the portal " + url + "\r\nBy GCC"; + + String encodedMsg = URLEncoder.encode(message, StandardCharsets.UTF_8); + + String urlString = appConfig.getOtpUrl() + + "from=GCCCRP" + + "&key=" + key + + "&sender=GCCCRP" + + "&to=" + mobileNo + + "&body=" + encodedMsg + + "&entityid=1401572690000011081" + + "&templateid=1407176959315374790"; + + System.out.println("FINAL SMS URL:- " + urlString); + + URL apiUrl = new URL(urlString); + HttpURLConnection conn = (HttpURLConnection) apiUrl.openConnection(); + conn.setRequestMethod("GET"); + conn.setConnectTimeout(15000); + conn.setReadTimeout(15000); + + BufferedReader in = new BufferedReader( + new InputStreamReader(conn.getInputStream())); + String inputLine; + StringBuilder content = new StringBuilder(); + + while ((inputLine = in.readLine()) != null) { + content.append(inputLine); + } + + in.close(); + conn.disconnect(); + + System.out.println("DIRECT SMS RESPONSE:- " + content.toString()); + + return content.toString(); + + } catch (Exception e) { + e.printStackTrace(); + return "FAILED"; + } + } + + // public String unauthorizedFlagPoleSms(String mobileNo, + // String location, + // String fineAmount, + // String requestId) { + + // String message = "An unauthorized flag pole installation was found at " + + // location + ". " + // + "Fine amount: Rs. " + fineAmount + // + " to be paid at + // https://gccservices.in/flagpolesregistration/paymentform?requestId=" + // + requestId + " to avoid further action.\n" + // + "By GCC"; + + // // Encode full message + // String encodedMsg = URLEncoder.encode(message, StandardCharsets.UTF_8); + + // String urlString = appConfig.getOtpUrl() + // + "from=GCCCRP" + // + "&key=" + key + // + "&sender=GCCCRP" + // + "&to=" + mobileNo + // + "&body=" + encodedMsg + // + "&entityid=1401572690000011081" + // + "&templateid=1407176959335259899"; // replace with actual template id + + // System.out.println("SMS URL:- " + urlString); + + // String response = messageUtility.sendSMS(urlString); + // System.out.println("SMS RESPONSE:- " + response); + + // return response; + // } + + public String unauthorizedFlagPoleSms(String mobileNo, + String location, + String fineAmount, + String requestId) { + + try { + + String paymentUrl = "https://gccservices.in/flagpolesregistration/paymentform?requestId=" + + requestId; + + String message = "An unauthorized flag pole installation was found at " + location + ". " + + "Fine amount: Rs. " + fineAmount + + " to be paid at " + paymentUrl + + " to avoid further action.\r\n" + + "By GCC"; + + String encodedMsg = URLEncoder.encode(message, StandardCharsets.UTF_8); + + String urlString = appConfig.getOtpUrl() + + "from=GCCCRP" + + "&key=" + key + + "&sender=GCCCRP" + + "&to=" + mobileNo + + "&body=" + encodedMsg + + "&entityid=1401572690000011081" + + "&templateid=1407176959335259899"; + + System.out.println("FINAL SMS URL:- " + urlString); + + URL apiUrl = new URL(urlString); + HttpURLConnection conn = (HttpURLConnection) apiUrl.openConnection(); + conn.setRequestMethod("GET"); + conn.setConnectTimeout(15000); + conn.setReadTimeout(15000); + + BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); + String inputLine; + StringBuilder content = new StringBuilder(); + + while ((inputLine = in.readLine()) != null) { + content.append(inputLine); + } + + in.close(); + conn.disconnect(); + + System.out.println("DIRECT SMS RESPONSE:- " + content.toString()); + + return content.toString(); + + } catch (Exception e) { + e.printStackTrace(); + return "FAILED"; + } + } + +} diff --git a/src/main/java/com/gcc/flagpoles_services/flagpoles/service/RdoService.java b/src/main/java/com/gcc/flagpoles_services/flagpoles/service/RdoService.java new file mode 100644 index 0000000..9fd958b --- /dev/null +++ b/src/main/java/com/gcc/flagpoles_services/flagpoles/service/RdoService.java @@ -0,0 +1,1356 @@ +package com.gcc.flagpoles_services.flagpoles.service; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import javax.sql.DataSource; +import javax.transaction.Transactional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; + +@Service +public class RdoService { + + private JdbcTemplate mysqlAppJdbcTemplate; + + // @Autowired + // private WhatsappServiceFlagPole whatsappService; + + @Autowired + private FlagpoleSMSService smsService; + + @Autowired + public void setMysqlAppJdbcTemplate( + @Qualifier("mysqlAppDataSource") DataSource dataSource) { + this.mysqlAppJdbcTemplate = new JdbcTemplate(dataSource); + } + + private JdbcTemplate mysqlFlagPoleJdbcTemplate; + + @Autowired + public void setMysqlFlagPoleJdbcTemplate( + @Qualifier("mysqlFlagPoleManagerSystemDataSource") DataSource dataSource) { + this.mysqlFlagPoleJdbcTemplate = new JdbcTemplate(dataSource); + } + + public Long getAppUserIdByGccUserId(String gccUserId) { + + String sql = """ + SELECT id + FROM appusers + WHERE userid = ? + AND isactive = 1 + AND isdelete = 0 + LIMIT 1 + """; + + List list = mysqlAppJdbcTemplate.queryForList(sql, Long.class, gccUserId); + + return list.isEmpty() ? null : list.get(0); + } + + public Long getAppUserIdByUsername(String username) { + + String sql = """ + SELECT id + FROM appusers + WHERE username = ? + """; + + return mysqlAppJdbcTemplate.queryForObject(sql, Long.class, username); + } + + public String getDepartmentNameByUsername(String username) { + + String sql = """ + SELECT department_name + FROM department_login + WHERE user_name = ? + AND is_active = 1 + AND is_delete = 0 + """; + + List list = mysqlFlagPoleJdbcTemplate.queryForList(sql, String.class, username); + return list.isEmpty() ? null : list.get(0); + } + + public Integer getDepartmentIdByUsername(String username) { + + String sql = """ + SELECT dpid + FROM department_login + WHERE user_name = ? + AND is_active = 1 + AND is_delete = 0 + """; + + List list = mysqlFlagPoleJdbcTemplate.queryForList(sql, Integer.class, username); + return list.isEmpty() ? null : list.get(0); + } + + // public List> getOfficerFeedbackHistoryByRefId( + // String refid, + // String username) { + + // Integer deptId = getDepartmentIdByUsername(username); + // String departmentName = getDepartmentNameByUsername(username); + // boolean isRdo = isRdoDepartment(departmentName); + + // StringBuilder sql = new StringBuilder(""" + // SELECT + // ofb.refid, + // dl.department_name, + // ofb.status, + // ofb.remarks, + // ofb.cby, + // DATE_FORMAT(ofb.cdate, '%d-%m-%Y %h:%i %p') AS action_date + // FROM officer_feedback ofb + // JOIN department_login dl + // ON ofb.dept_id = dl.dpid + // WHERE ofb.refid = ? + // AND ofb.is_active = 1 + // AND ofb.is_delete = 0 + // """); + + // List params = new ArrayList<>(); + // params.add(refid); + + // // 🔥 NON-RDO → show ONLY own department history + // if (!isRdo) { + // sql.append(" AND ofb.dept_id = ? "); + // params.add(deptId); + // } + + // sql.append(" ORDER BY ofb.cdate ASC "); + + // return mysqlFlagPoleJdbcTemplate.queryForList(sql.toString(), + // params.toArray()); + // } + + private boolean hasValue(String s) { + return s != null && !s.trim().isEmpty(); + } + + // old + public List> getOfficerFeedbackHistoryByRefId( + String refid, + String gccUserId) { + + /* 🔥 Resolve appuser_id from gccuserid (gcc_apps) */ + Long appUserId = getAppUserIdByGccUserId(gccUserId); + if (appUserId == null) { + throw new RuntimeException("Invalid gccUserId: " + gccUserId); + } + + /* 🔥 Resolve department id (gcc_flag_pole) */ + Integer deptId = getDepartmentIdByUserId(gccUserId); + + /* 🔥 Resolve access (gcc_apps) */ + List> access = getUserAccess(appUserId); + + String zone = null; + String zoneArray = null; + String wardArray = null; + + boolean isRdo = false; + boolean isZonalOfficer = false; + + if (!access.isEmpty()) { + + Map row = access.get(0); + + zone = row.get("zone") != null ? row.get("zone").toString() : null; + // zoneArray = row.get("zonearray") != null ? row.get("zonearray").toString() : + // null; + // wardArray = row.get("wardarray") != null ? row.get("wardarray").toString() : + // null; + + /* ✅ RDO → zonearray + wardarray */ + // if (hasValue(zoneArray) && hasValue(wardArray)) { + // isRdo = true; + // } + + /* ✅ Zonal Officer → zone 01–15 */ + if (hasValue(zone) && zone.matches("^(0[1-9]|1[0-5])$")) { + isZonalOfficer = true; + } + } + + StringBuilder sql = new StringBuilder(""" + SELECT + ofb.refid, + dl.department_name, + ofb.status, + ofb.remarks, + ofb.cby, + DATE_FORMAT(ofb.cdate, '%d-%m-%Y %h:%i %p') AS action_date + FROM officer_feedback ofb + JOIN department_login dl + ON ofb.dept_id = dl.dpid + WHERE ofb.refid = ? + AND ofb.is_active = 1 + AND ofb.is_delete = 0 + """); + + List params = new ArrayList<>(); + params.add(refid); + + /* 🔥 Only NON-RDO & NON-ZONAL are restricted */ + if (!isRdo && !isZonalOfficer) { + sql.append(" AND ofb.dept_id = ? "); + params.add(deptId); + } + + sql.append(" ORDER BY ofb.cdate ASC "); + + return mysqlFlagPoleJdbcTemplate.queryForList(sql.toString(), + params.toArray()); + } + + // to show for all departments + // public List> getOfficerFeedbackHistoryByRefId( + // String refid, + // String gccUserId) { + + // /* 🔥 Just validate gccUserId exists */ + // Long appUserId = getAppUserIdByGccUserId(gccUserId); + // if (appUserId == null) { + // throw new RuntimeException("Invalid gccUserId: " + gccUserId); + // } + + // String sql = """ + // SELECT + // ofb.refid, + // dl.department_name, + // ofb.status, + // ofb.remarks, + // ofb.cby, + // DATE_FORMAT(ofb.cdate, '%d-%m-%Y %h:%i %p') AS action_date + // FROM officer_feedback ofb + // JOIN department_login dl + // ON ofb.dept_id = dl.dpid + // WHERE ofb.refid = ? + // AND ofb.is_active = 1 + // AND ofb.is_delete = 0 + // ORDER BY ofb.cdate ASC + // """; + + // return mysqlFlagPoleJdbcTemplate.queryForList(sql, refid); + // } + + // public int insertOfficerFeedback( + // String refId, + // Integer deptId, + // String status, + // String remarks, + // String createdBy) { + + // String sql = """ + // INSERT INTO officer_feedback + // ( + // refid, + // dept_id, + // status, + // remarks, + // cby, + // cdate, + // is_active, + // is_delete + // ) + // VALUES (?, ?, ?, ?, ?, NOW(), 1, 0) + // """; + + // return mysqlFlagPoleJdbcTemplate.update( + // sql, + // refId, + // deptId, + // status, + // remarks, + // createdBy); + // } + + public int insertOfficerFeedback( + String refId, + Integer deptId, + Integer gccUserId, // login user id + String status, + String remarks, + String username // display username + ) { + + String sql = """ + INSERT INTO officer_feedback + ( + refid, + dept_id, + gcc_user_id, + status, + remarks, + cby, + cdate, + is_active, + is_delete + ) + VALUES (?, ?, ?, ?, ?, ?, NOW(), 1, 0) + """; + + return mysqlFlagPoleJdbcTemplate.update( + sql, + refId, + deptId, + gccUserId, + status, + remarks, + username); + } + + // + // public List> getUserAccess(String userLogin) { + + // String sql = """ + // SELECT lmu.zonearray, lmu.wardarray + // FROM login_mapping_user lmu + // JOIN appusers au ON au.id = lmu.appuser_id + // WHERE au.username = ? + // """; + + // return mysqlAppJdbcTemplate.queryForList(sql, userLogin); + // } + + public List> getUserAccess(Long appUserId) { + + String sql = """ + SELECT lmu.zone,lmu.ward,lmu.zonearray, lmu.wardarray + FROM login_mapping_user lmu + WHERE lmu.appuser_id = ? + """; + + return mysqlAppJdbcTemplate.queryForList(sql, appUserId); + } + + public String resolveGccUserId(String input) { + + // already numeric + if (input.matches("\\d+")) { + return input; + } + + // username → userid + String sql = """ + SELECT userid + FROM appusers + WHERE username = ? + AND isactive = 1 + AND isdelete = 0 + LIMIT 1 + """; + + List list = mysqlAppJdbcTemplate.queryForList(sql, Integer.class, input); + + if (list.isEmpty()) { + throw new RuntimeException("Invalid login user: " + input); + } + + return String.valueOf(list.get(0)); + } + + public String getDepartmentNameByUserId(String gccUserId) { + + String sql = """ + SELECT department_name + FROM department_login + WHERE gcc_user_id = ? + AND is_active = 1 + AND is_delete = 0 + """; + + List list = mysqlFlagPoleJdbcTemplate.queryForList(sql, String.class, gccUserId); + + return list.isEmpty() ? null : list.get(0); + } + + public Integer getDepartmentIdByUserId(String gccUserId) { + + String sql = """ + SELECT dpid + FROM department_login + WHERE gcc_user_id = ? + AND is_active = 1 + AND is_delete = 0 + """; + + List list = mysqlFlagPoleJdbcTemplate.queryForList(sql, Integer.class, gccUserId); + + return list.isEmpty() ? null : list.get(0); + } + + public String getUsernameByUserId(String gccUserId) { + + String sql = """ + SELECT user_name + FROM department_login + WHERE gcc_user_id = ? + AND is_active = 1 + AND is_delete = 0 + """; + + List list = mysqlFlagPoleJdbcTemplate.queryForList(sql, String.class, gccUserId); + + return list.isEmpty() ? null : list.get(0); + } + + public List> getAllRequestDetailsByUserLogin( + String gccUserId, + String startDate, + String endDate) { + + /* 🔥 Resolve appuser_id */ + Long appUserId = getAppUserIdByGccUserId(gccUserId); + if (appUserId == null) { + throw new RuntimeException("Invalid gccUserId: " + gccUserId); + } + + /* 🔥 Resolve department id */ + Integer deptId = getDepartmentIdByUserId(gccUserId); + if (deptId == null) { + throw new RuntimeException("Department mapping missing for gccUserId: " + gccUserId); + } + + /* 🔥 Resolve access */ + List> access = getUserAccess(appUserId); + + String zone = null; + String zoneArray = null; + String wardArray = null; + + boolean isRdo = false; + boolean isZonalOfficer = false; + + if (!access.isEmpty()) { + + zone = (String) access.get(0).get("zone"); + zoneArray = (String) access.get(0).get("zonearray"); + wardArray = (String) access.get(0).get("wardarray"); + + // RDO → zonearray + wardarray + if (hasValue(zoneArray) && hasValue(wardArray)) { + isRdo = true; + } + // Zonal → single zone + else if (hasValue(zone)) { + isZonalOfficer = true; + } + } + + StringBuilder sql = new StringBuilder(""" + SELECT + urd.id, + urd.refid, + urd.applicant_name, + urd.mobile_number, + urd.applicant_address, + urd.event_desc, + urd.cdate, + urd.event_date, + urd.ae_status, + urd.rdo_status, + urd.final_status, + urd.no_of_days, + + sd.street_name, + sd.zone, + sd.ward, + sd.no_of_poles, + sd.height, + sd.street_cost, + + fm.flag_material_name AS flag_material, + pm.pole_material_name AS pole_material, + + urd.total_cost, + et.event_name + + FROM user_request_details urd + LEFT JOIN street_details sd + ON urd.refid = sd.refid + AND sd.is_active = 1 + AND sd.is_delete = 0 + LEFT JOIN event_type et ON urd.event_id = et.id + LEFT JOIN flag_material fm ON sd.flag_material_id = fm.id + LEFT JOIN pole_material pm ON sd.pole_material_id = pm.id + WHERE 1 = 1 + """); + + List params = new ArrayList<>(); + + /* 🔥 1. REMOVE RDO-FINALIZED */ + // sql.append(" AND (urd.rdo_status IS NULL OR urd.rdo_status = '') "); + sql.append(" AND (urd.final_status IS NULL OR urd.final_status = '') "); + + /* 🔥 2. REMOVE ALREADY DECIDED BY SAME DEPT */ + sql.append(""" + AND urd.refid NOT IN ( + SELECT ofb.refid + FROM officer_feedback ofb + WHERE ofb.dept_id = ? + AND ofb.status IN ('APPROVED','REJECTED') + AND ofb.is_active = 1 + AND ofb.is_delete = 0 + ) + """); + params.add(deptId); + + /* 🔥 3a. RDO → multi zone + ward */ + if (isRdo) { + sql.append(" AND FIND_IN_SET(sd.zone, ?) "); + sql.append(" AND FIND_IN_SET(sd.ward, ?) "); + params.add(zoneArray); + params.add(wardArray); + } + + /* 🔥 3b. ZONAL → single zone */ + else if (isZonalOfficer) { + sql.append(" AND sd.zone = ? "); + params.add(zone); + } + + /* 🔹 DATE FILTER */ + if (hasValue(startDate) && hasValue(endDate)) { + + sql.append(" AND DATE(urd.event_date) BETWEEN ? AND ? "); + params.add(startDate); + params.add(endDate); + + } else if (hasValue(startDate)) { + + sql.append(" AND DATE(urd.event_date) = ? "); + params.add(startDate); + } + + sql.append(""" + ORDER BY urd.event_date ASC, + urd.cdate ASC, + urd.refid ASC, + sd.id ASC + """); + + List> rows = mysqlFlagPoleJdbcTemplate.queryForList(sql.toString(), params.toArray()); + + /* 🔥 GROUP BY REFID */ + Map> resultMap = new LinkedHashMap<>(); + + for (Map row : rows) { + + String refid = (String) row.get("refid"); + + Map request = resultMap.computeIfAbsent(refid, k -> { + Map map = new LinkedHashMap<>(); + map.put("refid", row.get("refid")); + map.put("applicant_name", row.get("applicant_name")); + map.put("mobile_number", row.get("mobile_number")); + map.put("applicant_address", row.get("applicant_address")); + map.put("event_desc", row.get("event_desc")); + map.put("event_date", row.get("event_date")); + map.put("cdate", row.get("cdate")); + map.put("ae_status", row.get("ae_status")); + map.put("rdo_status", row.get("rdo_status")); + map.put("final_status", row.get("final_status")); + map.put("no_of_days", row.get("no_of_days")); + map.put("event_name", row.get("event_name")); + map.put("total_cost", row.get("total_cost")); + map.put("streets", new ArrayList<>()); + return map; + }); + + Map street = new LinkedHashMap<>(); + street.put("street_name", row.get("street_name")); + street.put("zone", row.get("zone")); + street.put("ward", row.get("ward")); + street.put("no_of_poles", row.get("no_of_poles")); + street.put("height", row.get("height")); + street.put("street_cost", row.get("street_cost")); + street.put("flag_material", row.get("flag_material")); + street.put("pole_material", row.get("pole_material")); + + ((List>) request.get("streets")).add(street); + } + + return new ArrayList<>(resultMap.values()); + } + + // old with rdo and zonal officer final + // @Transactional + // public int updateOfficerDecision( + // String refId, + // String status, + // String remarks, + // String gccUserId, + // String username) { + + // /* 🔹 Resolve appuser_id */ + // Long appUserId = getAppUserIdByGccUserId(gccUserId); + // if (appUserId == null) { + // throw new RuntimeException("Invalid gccUserId"); + // } + + // /* 🔹 Resolve department */ + // Integer deptId = getDepartmentIdByUserId(gccUserId); + // if (deptId == null) { + // throw new RuntimeException("User not mapped to department"); + // } + + // /* 🔹 Access */ + // List> access = getUserAccess(appUserId); + + // String zone = null; + // String zoneArray = null; + // String wardArray = null; + + // boolean isRdo = false; + // boolean isZonalOfficer = false; + + // if (!access.isEmpty()) { + + // Map row = access.get(0); + + // zone = row.get("zone") != null ? row.get("zone").toString() : null; + // zoneArray = row.get("zonearray") != null ? row.get("zonearray").toString() : + // null; + // wardArray = row.get("wardarray") != null ? row.get("wardarray").toString() : + // null; + + // /* ✅ RDO → zonearray + wardarray */ + // if (hasValue(zoneArray) && hasValue(wardArray)) { + // isRdo = true; + // } + + // /* ✅ Zonal Officer → zone 01–15 */ + // if (hasValue(zone) && zone.matches("^(0[1-9]|1[0-5])$")) { + // isZonalOfficer = true; + // } + // } + + // /* + // * ===================================================== + // * 🔹 INSERT FEEDBACK (ALL USERS) + // * ===================================================== + // */ + + // insertOfficerFeedback( + // refId, + // deptId, + // Integer.valueOf(gccUserId), + // status, + // remarks, + // username); + + // /* + // * ===================================================== + // * 🔹 RDO FLOW + // * ===================================================== + // */ + + // if (isRdo) { + + // String historySql = """ + // INSERT INTO user_request_details_history + // ( + // refid, applicant_name, mobile_number, applicant_address, + // event_id, event_date, no_of_days, total_poles, total_cost, + // ae_status, rdo_status, rdo_remarks, + // approved_by, approved_date, + // payment_status, refund_status, booking_status, cdate + // ) + // SELECT + // refid, applicant_name, mobile_number, applicant_address, + // event_id, event_date, no_of_days, total_poles, total_cost, + // ae_status, ?, ?, ?, NOW(), + // payment_status, refund_status, booking_status, NOW() + // FROM user_request_details + // WHERE refid = ? + // """; + + // mysqlFlagPoleJdbcTemplate.update(historySql, status, remarks, gccUserId, + // refId); + + // String updateSql = """ + // UPDATE user_request_details + // SET + // rdo_status = ?, + // rdo_remarks = ?, + // approved_by = ?, + // rdo_updated_date = NOW() + // WHERE refid = ? + // """; + + // return mysqlFlagPoleJdbcTemplate.update(updateSql, status, remarks, + // gccUserId, refId); + // } + + // /* + // * ===================================================== + // * 🔹 ZONAL OFFICER FLOW (FINAL) + // * ===================================================== + // */ + + // if (isZonalOfficer) { + + // String historySql = """ + // INSERT INTO user_request_details_history + // ( + // refid, applicant_name, mobile_number, applicant_address, + // event_id, event_date, no_of_days, total_poles, total_cost, + // ae_status, rdo_status, rdo_remarks, + // final_status, final_remarks, final_approved_by, final_approved_date, + // payment_status, refund_status, booking_status, cdate + // ) + // SELECT + // refid, applicant_name, mobile_number, applicant_address, + // event_id, event_date, no_of_days, total_poles, total_cost, + // ae_status, rdo_status, rdo_remarks, + // ?, ?, ?, NOW(), + // payment_status, refund_status, booking_status, NOW() + // FROM user_request_details + // WHERE refid = ? + // """; + + // mysqlFlagPoleJdbcTemplate.update(historySql, status, remarks, gccUserId, + // refId); + + // String updateSql = """ + // UPDATE user_request_details + // SET + // final_status = ?, + // final_remarks = ?, + // final_approved_by = ?, + // final_approved_date = NOW() + // WHERE refid = ? + // """; + + // return mysqlFlagPoleJdbcTemplate.update(updateSql, status, remarks, + // gccUserId, refId); + // } + + // /* + // * ===================================================== + // * 🔹 OTHER DEPARTMENTS → FEEDBACK ONLY + // * ===================================================== + // */ + + // return 1; + // } + + private boolean isFinalAuthorityForZone(String gccUserId, String refId) { + + Integer count = mysqlFlagPoleJdbcTemplate.queryForObject(""" + SELECT COUNT(*) + FROM department_login d + JOIN street_details s ON s.refid = ? + WHERE d.gcc_user_id = ? + AND d.final_authority = 1 + AND d.is_active = 1 + AND d.is_delete = 0 + """, Integer.class, refId, gccUserId); + + return count != null && count > 0; + } + + @Transactional + public int updateOfficerDecision( + String refId, + String status, + String remarks, + String gccUserId, + String username) { + + /* 🔹 Resolve appuser_id */ + Long appUserId = getAppUserIdByGccUserId(gccUserId); + if (appUserId == null) { + throw new RuntimeException("Invalid gccUserId"); + } + + /* 🔹 Resolve department */ + Integer deptId = getDepartmentIdByUserId(gccUserId); + if (deptId == null) { + throw new RuntimeException("User not mapped to department"); + } + + /* 🔹 Access (zone / ward used for mapping + RDO detection) */ + List> access = getUserAccess(appUserId); + + String zone = null; + String zoneArray = null; + String wardArray = null; + + boolean isRdo = false; + + if (!access.isEmpty()) { + + Map row = access.get(0); + + zone = row.get("zone") != null ? row.get("zone").toString() : null; + zoneArray = row.get("zonearray") != null ? row.get("zonearray").toString() : null; + wardArray = row.get("wardarray") != null ? row.get("wardarray").toString() : null; + + // RDO identified by zone + ward arrays + if (hasValue(zoneArray) && hasValue(wardArray)) { + isRdo = true; + } + } + + /* 🔹 Final Authority must match BOTH: zone + final_authority flag */ + boolean isFinalAuthority = isFinalAuthorityForZone(gccUserId, refId); + + /* + * ===================================================== + * 🔐 Check if already FINALIZED + * ===================================================== + */ + + String finalStatus = mysqlFlagPoleJdbcTemplate.queryForObject( + "SELECT final_status FROM user_request_details WHERE refid = ?", + String.class, + refId); + + if (finalStatus != null && !finalStatus.isBlank() && !isFinalAuthority) { + throw new RuntimeException("Request already finalized by Final Authority"); + } + + /* + * ===================================================== + * 🔹 INSERT FEEDBACK (ALL USERS) + * ===================================================== + */ + + insertOfficerFeedback( + refId, + deptId, + Integer.valueOf(gccUserId), + status, + remarks, + username); + + /* + * ===================================================== + * 🔹 FINAL AUTHORITY FLOW (ZONE + FLAG) + * ===================================================== + */ + + if (isFinalAuthority) { + + String historySql = """ + INSERT INTO user_request_details_history + ( + refid, applicant_name, mobile_number, applicant_address, + event_id, event_date, no_of_days, total_poles, total_cost, + ae_status, rdo_status, rdo_remarks, + final_status, final_remarks, final_approved_by, final_approved_date, + payment_status, refund_status, booking_status, cdate + ) + SELECT + refid, applicant_name, mobile_number, applicant_address, + event_id, event_date, no_of_days, total_poles, total_cost, + ae_status, rdo_status, rdo_remarks, + ?, ?, ?, NOW(), + payment_status, refund_status, booking_status, NOW() + FROM user_request_details + WHERE refid = ? + """; + + mysqlFlagPoleJdbcTemplate.update(historySql, status, remarks, gccUserId, refId); + + String updateSql = """ + UPDATE user_request_details + SET + final_status = ?, + final_remarks = ?, + final_approved_by = ?, + final_approved_date = NOW() + WHERE refid = ? + """; + + int updated = mysqlFlagPoleJdbcTemplate.update(updateSql, status, remarks, gccUserId, refId); + + // ================= SEND SMS AFTER FINAL DECISION ================= + + if ("APPROVED".equalsIgnoreCase(status)) { + + try { + + String mobileNo = mysqlFlagPoleJdbcTemplate.queryForObject(""" + SELECT mobile_number + FROM user_request_details + WHERE refid = ? + """, String.class, refId); + + if (mobileNo != null && !mobileNo.isBlank()) { + smsService.userrequestApprovedsms(mobileNo, refId); + } + + } catch (Exception e) { + System.err.println("Approved SMS failed for requestId: " + refId); + e.printStackTrace(); + } + } + + if ("REJECTED".equalsIgnoreCase(status)) { + + try { + + String mobileNo = mysqlFlagPoleJdbcTemplate.queryForObject(""" + SELECT mobile_number + FROM user_request_details + WHERE refid = ? + """, String.class, refId); + + if (mobileNo != null && !mobileNo.isBlank()) { + smsService.userrequestRejectedsms(mobileNo, refId); + } + + } catch (Exception e) { + System.err.println("Rejected SMS failed for requestId: " + refId); + e.printStackTrace(); + } + } + + return updated; + } + + /* + * ===================================================== + * RDO FLOW (INTERMEDIATE ONLY) + * ===================================================== + */ + + if (isRdo) { + + String historySql = """ + INSERT INTO user_request_details_history + ( + refid, applicant_name, mobile_number, applicant_address, + event_id, event_date, no_of_days, total_poles, total_cost, + ae_status, rdo_status, rdo_remarks, + approved_by, approved_date, + payment_status, refund_status, booking_status, cdate + ) + SELECT + refid, applicant_name, mobile_number, applicant_address, + event_id, event_date, no_of_days, total_poles, total_cost, + ae_status, ?, ?, ?, NOW(), + payment_status, refund_status, booking_status, NOW() + FROM user_request_details + WHERE refid = ? + """; + + mysqlFlagPoleJdbcTemplate.update(historySql, status, remarks, gccUserId, refId); + + String updateSql = """ + UPDATE user_request_details + SET + rdo_status = ?, + rdo_remarks = ?, + approved_by = ?, + rdo_updated_date = NOW() + WHERE refid = ? + """; + + return mysqlFlagPoleJdbcTemplate.update(updateSql, status, remarks, gccUserId, refId); + } + + return 1; + } + + // @Transactional + // public int updateOfficerDecision( + // String refId, + // String status, + // String remarks, + // String gccUserId, + // String username) { + + // /* 🔹 Resolve appuser_id */ + // Long appUserId = getAppUserIdByGccUserId(gccUserId); + // if (appUserId == null) { + // throw new RuntimeException("Invalid gccUserId"); + // } + + // /* 🔹 Resolve department */ + // Integer deptId = getDepartmentIdByUserId(gccUserId); + // if (deptId == null) { + // throw new RuntimeException("User not mapped to department"); + // } + + // /* 🔹 Access */ + // List> access = getUserAccess(appUserId); + + // String zone = null; + // String zoneArray = null; + // String wardArray = null; + + // boolean isRdo = false; + // boolean isZonalOfficer = false; + + // if (!access.isEmpty()) { + + // Map row = access.get(0); + + // zone = row.get("zone") != null ? row.get("zone").toString() : null; + // zoneArray = row.get("zonearray") != null ? row.get("zonearray").toString() : + // null; + // wardArray = row.get("wardarray") != null ? row.get("wardarray").toString() : + // null; + + // if (hasValue(zoneArray) && hasValue(wardArray)) { + // isRdo = true; + // } + + // if (hasValue(zone) && zone.matches("^(0[1-9]|1[0-5])$")) { + // isZonalOfficer = true; + // } + // } + + // /* + // * ===================================================== + // * 🔐 Check if already FINALIZED + // * ===================================================== + // */ + + // String finalStatus = mysqlFlagPoleJdbcTemplate.queryForObject( + // "SELECT final_status FROM user_request_details WHERE refid = ?", + // String.class, + // refId); + + // if (finalStatus != null && !finalStatus.isBlank() && !isZonalOfficer) { + // throw new RuntimeException("Request already finalized by Zonal Officer"); + // } + + // /* + // * ===================================================== + // * 🔹 INSERT FEEDBACK (ALL USERS) + // * ===================================================== + // */ + + // insertOfficerFeedback( + // refId, + // deptId, + // Integer.valueOf(gccUserId), + // status, + // remarks, + // username); + + // /* + // * ===================================================== + // * 🔹 ZONAL OFFICER FLOW (ONLY FINAL AUTHORITY) + // * ===================================================== + // */ + + // if (isZonalOfficer) { + + // String historySql = """ + // INSERT INTO user_request_details_history + // ( + // refid, applicant_name, mobile_number, applicant_address, + // event_id, event_date, no_of_days, total_poles, total_cost, + // ae_status, rdo_status, rdo_remarks, + // final_status, final_remarks, final_approved_by, final_approved_date, + // payment_status, refund_status, booking_status, cdate + // ) + // SELECT + // refid, applicant_name, mobile_number, applicant_address, + // event_id, event_date, no_of_days, total_poles, total_cost, + // ae_status, rdo_status, rdo_remarks, + // ?, ?, ?, NOW(), + // payment_status, refund_status, booking_status, NOW() + // FROM user_request_details + // WHERE refid = ? + // """; + + // mysqlFlagPoleJdbcTemplate.update(historySql, status, remarks, gccUserId, + // refId); + + // String updateSql = """ + // UPDATE user_request_details + // SET + // final_status = ?, + // final_remarks = ?, + // final_approved_by = ?, + // final_approved_date = NOW() + // WHERE refid = ? + // """; + + // // return mysqlFlagPoleJdbcTemplate.update(updateSql, status, remarks, + // // gccUserId, refId); + + // int updated = mysqlFlagPoleJdbcTemplate.update(updateSql, status, remarks, + // gccUserId, refId); + + // // ================= SEND SMS AFTER FINAL APPROVAL ================= + // if ("APPROVED".equalsIgnoreCase(status)) { + + // try { + + // String mobileNo = mysqlFlagPoleJdbcTemplate.queryForObject(""" + // SELECT mobile_number + // FROM user_request_details + // WHERE refid = ? + // """, String.class, refId); + + // if (mobileNo != null && !mobileNo.isBlank()) { + // smsService.userrequestApprovedsms(mobileNo, refId); + // } + + // } catch (Exception e) { + // System.err.println("Approved SMS failed for requestId: " + refId); + // e.printStackTrace(); + // } + // } + + // if ("REJECTED".equalsIgnoreCase(status)) { + + // try { + // System.out.println("Rejected RefID = " + refId); + + // String mobileNo = mysqlFlagPoleJdbcTemplate.queryForObject(""" + // SELECT mobile_number + // FROM user_request_details + // WHERE refid = ? + // """, String.class, refId); + + // if (mobileNo != null && !mobileNo.isBlank()) { + // System.out.println("Rejected Mob Num = " + mobileNo); + // smsService.userrequestRejectedsms(mobileNo, refId); + // } + + // } catch (Exception e) { + // System.err.println("Approved SMS failed for requestId: " + refId); + // e.printStackTrace(); + // } + // } + // // ================================================================ + + // return updated; + + // } + + // /* + // * ===================================================== + // * RDO FLOW (ONLY RDO FIELDS) + // * ===================================================== + // */ + + // if (isRdo) { + + // String historySql = """ + // INSERT INTO user_request_details_history + // ( + // refid, applicant_name, mobile_number, applicant_address, + // event_id, event_date, no_of_days, total_poles, total_cost, + // ae_status, rdo_status, rdo_remarks, + // approved_by, approved_date, + // payment_status, refund_status, booking_status, cdate + // ) + // SELECT + // refid, applicant_name, mobile_number, applicant_address, + // event_id, event_date, no_of_days, total_poles, total_cost, + // ae_status, ?, ?, ?, NOW(), + // payment_status, refund_status, booking_status, NOW() + // FROM user_request_details + // WHERE refid = ? + // """; + + // mysqlFlagPoleJdbcTemplate.update(historySql, status, remarks, gccUserId, + // refId); + + // String updateSql = """ + // UPDATE user_request_details + // SET + // rdo_status = ?, + // rdo_remarks = ?, + // approved_by = ?, + // rdo_updated_date = NOW() + // WHERE refid = ? + // """; + + // return mysqlFlagPoleJdbcTemplate.update(updateSql, status, remarks, + // gccUserId, refId); + // } + + // return 1; + // } + + public List> getRdoApprovedRequestDetailsByUserLogin( + String gccUserId, + String startDate, + String endDate, + String status) { + + /* 🔥 Resolve appuser_id */ + Long appUserId = getAppUserIdByGccUserId(gccUserId); + if (appUserId == null) { + throw new RuntimeException("Invalid gccUserId: " + gccUserId); + } + + /* 🔥 Resolve department */ + Integer deptId = getDepartmentIdByUserId(gccUserId); + if (deptId == null) { + throw new RuntimeException("Department mapping missing for gccUserId: " + gccUserId); + } + + /* 🔥 Resolve access */ + List> access = getUserAccess(appUserId); + + String zone = null; + String zoneArray = null; + String wardArray = null; + + boolean isRdo = false; + boolean isZonalOfficer = false; + + if (!access.isEmpty()) { + zone = (String) access.get(0).get("zone"); + zoneArray = (String) access.get(0).get("zonearray"); + wardArray = (String) access.get(0).get("wardarray"); + + if (hasValue(zoneArray) && hasValue(wardArray)) { + isRdo = true; + } else if (hasValue(zone)) { + isZonalOfficer = true; + } + } + + StringBuilder sql = new StringBuilder(""" + SELECT + urd.id, + urd.refid, + urd.applicant_name, + urd.mobile_number, + urd.applicant_address, + urd.event_desc, + urd.cdate, + urd.event_date, + urd.ae_status, + urd.rdo_status, + urd.rdo_remarks, + urd.no_of_days, + + sd.street_name, + sd.zone, + sd.ward, + sd.no_of_poles, + sd.street_cost, + sd.height, + + fm.flag_material_name AS flag_material, + pm.pole_material_name AS pole_material, + + urd.total_cost, + et.event_name, + + ofb.status AS officer_status, + ofb.remarks AS officer_remarks + + FROM officer_feedback ofb + JOIN user_request_details urd + ON urd.refid = ofb.refid + LEFT JOIN street_details sd + ON urd.refid = sd.refid + AND sd.is_active = 1 + AND sd.is_delete = 0 + LEFT JOIN event_type et ON urd.event_id = et.id + LEFT JOIN flag_material fm ON sd.flag_material_id = fm.id + LEFT JOIN pole_material pm ON sd.pole_material_id = pm.id + WHERE ofb.dept_id = ? + AND ofb.status IN ('APPROVED','REJECTED') + AND ofb.is_active = 1 + AND ofb.is_delete = 0 + """); + + List params = new ArrayList<>(); + params.add(deptId); + + /* 🔹 Optional status */ + if (hasValue(status)) { + sql.append(" AND ofb.status = ? "); + params.add(status); + } + + /* 🔹 RDO → zone + ward */ + if (isRdo) { + sql.append(" AND FIND_IN_SET(sd.zone, ?) "); + sql.append(" AND FIND_IN_SET(sd.ward, ?) "); + params.add(zoneArray); + params.add(wardArray); + } + /* 🔹 Zonal → only zone */ + else if (isZonalOfficer) { + sql.append(" AND sd.zone = ? "); + params.add(zone); + } + + /* 🔹 Date */ + if (hasValue(startDate) && hasValue(endDate)) { + + sql.append(" AND DATE(urd.event_date) BETWEEN ? AND ? "); + params.add(startDate); + params.add(endDate); + + } else if (hasValue(startDate)) { + + sql.append(" AND DATE(urd.event_date) = ? "); + params.add(startDate); + } + + sql.append(" ORDER BY ofb.cdate DESC, urd.refid, sd.id "); + + List> rows = mysqlFlagPoleJdbcTemplate.queryForList(sql.toString(), params.toArray()); + + /* 🔥 GROUP BY REFID */ + Map> resultMap = new LinkedHashMap<>(); + + for (Map row : rows) { + + String refid = (String) row.get("refid"); + + Map request = resultMap.computeIfAbsent(refid, k -> { + Map map = new LinkedHashMap<>(); + map.put("refid", row.get("refid")); + map.put("applicant_name", row.get("applicant_name")); + map.put("mobile_number", row.get("mobile_number")); + map.put("applicant_address", row.get("applicant_address")); + map.put("event_desc", row.get("event_desc")); + map.put("cdate", row.get("cdate")); + map.put("event_date", row.get("event_date")); + map.put("ae_status", row.get("ae_status")); + map.put("rdo_status", row.get("rdo_status")); + map.put("rdo_remarks", row.get("rdo_remarks")); + map.put("no_of_days", row.get("no_of_days")); + map.put("event_name", row.get("event_name")); + map.put("total_cost", row.get("total_cost")); + map.put("officer_status", row.get("officer_status")); + map.put("officer_remarks", row.get("officer_remarks")); + map.put("streets", new ArrayList<>()); + return map; + }); + + Map street = new LinkedHashMap<>(); + street.put("street_name", row.get("street_name")); + street.put("zone", row.get("zone")); + street.put("ward", row.get("ward")); + street.put("no_of_poles", row.get("no_of_poles")); + street.put("height", row.get("height")); + street.put("street_cost", row.get("street_cost")); + street.put("flag_material", row.get("flag_material")); + street.put("pole_material", row.get("pole_material")); + + ((List>) request.get("streets")).add(street); + } + + return new ArrayList<>(resultMap.values()); + } + +} diff --git a/src/main/java/com/gcc/flagpoles_services/flagpoles/util/MessageUtility.java b/src/main/java/com/gcc/flagpoles_services/flagpoles/util/MessageUtility.java new file mode 100644 index 0000000..8f0d52d --- /dev/null +++ b/src/main/java/com/gcc/flagpoles_services/flagpoles/util/MessageUtility.java @@ -0,0 +1,41 @@ +package com.gcc.flagpoles_services.flagpoles.util; + +import java.net.HttpURLConnection; +import java.net.URL; + +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +@Service +public class MessageUtility { + + public String sendMsg(String msgUrl) { + System.out.println("Whatsapp URL :-" + msgUrl); + + String response = ""; + try { + HttpURLConnection connection = null; + + URL url = new URL(msgUrl); + connection = (HttpURLConnection) url.openConnection(); + connection.setRequestMethod("GET"); + + int responseCode = connection.getResponseCode(); + response = responseCode + ""; + System.out.println("Response Code: " + responseCode); + + } catch (Exception e) { + e.printStackTrace(); + } + + return response; + } + + public String sendSMS(String SMS_Url) { + // System.out.println("SMS URL:- " + SMS_Url); + RestTemplate restTemplate = new RestTemplate(); + String response = restTemplate.getForObject(SMS_Url, String.class); + return response; + } + +} diff --git a/src/main/java/com/gcc/swm_services/interceptor/AppInterceptor.java b/src/main/java/com/gcc/flagpoles_services/interceptor/AppInterceptor.java similarity index 91% rename from src/main/java/com/gcc/swm_services/interceptor/AppInterceptor.java rename to src/main/java/com/gcc/flagpoles_services/interceptor/AppInterceptor.java index da83a1e..3285c81 100644 --- a/src/main/java/com/gcc/swm_services/interceptor/AppInterceptor.java +++ b/src/main/java/com/gcc/flagpoles_services/interceptor/AppInterceptor.java @@ -1,4 +1,4 @@ -package com.gcc.swm_services.interceptor; +package com.gcc.flagpoles_services.interceptor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.env.Environment; @@ -10,19 +10,19 @@ import org.springframework.security.web.util.matcher.RequestMatcher; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; -import com.gcc.swm_services.entity.AppModuleAccessEntity; -import com.gcc.swm_services.entity.AppModuleEntity; -import com.gcc.swm_services.entity.MenuItemAccessEntity; -import com.gcc.swm_services.entity.MenuItemEntity; -import com.gcc.swm_services.entity.SubMenuItemAccessEntity; -import com.gcc.swm_services.entity.SubMenuItemEntity; -import com.gcc.swm_services.repository.AppModuleAccessRepository; -import com.gcc.swm_services.repository.AppModuleRepository; -import com.gcc.swm_services.repository.MenuItemAccessRepository; -import com.gcc.swm_services.repository.MenuItemRepository; -import com.gcc.swm_services.repository.SubMenuItemAccessRepository; -import com.gcc.swm_services.repository.SubMenuItemRepository; -import com.gcc.swm_services.service.LoginUserInfo; +import com.gcc.flagpoles_services.entity.AppModuleAccessEntity; +import com.gcc.flagpoles_services.entity.AppModuleEntity; +import com.gcc.flagpoles_services.entity.MenuItemAccessEntity; +import com.gcc.flagpoles_services.entity.MenuItemEntity; +import com.gcc.flagpoles_services.entity.SubMenuItemAccessEntity; +import com.gcc.flagpoles_services.entity.SubMenuItemEntity; +import com.gcc.flagpoles_services.repository.AppModuleAccessRepository; +import com.gcc.flagpoles_services.repository.AppModuleRepository; +import com.gcc.flagpoles_services.repository.MenuItemAccessRepository; +import com.gcc.flagpoles_services.repository.MenuItemRepository; +import com.gcc.flagpoles_services.repository.SubMenuItemAccessRepository; +import com.gcc.flagpoles_services.repository.SubMenuItemRepository; +import com.gcc.flagpoles_services.service.LoginUserInfo; import java.util.List; @@ -70,12 +70,12 @@ public class AppInterceptor implements HandlerInterceptor { } private boolean isLoginPage(HttpServletRequest request) { - RequestMatcher loginPageMatcher = new AntPathRequestMatcher("/swm/login"); + RequestMatcher loginPageMatcher = new AntPathRequestMatcher("/flagpoles/login"); return loginPageMatcher.matches(request); } private boolean isErrorPage(HttpServletRequest request) { - RequestMatcher errorPageMatcher = new AntPathRequestMatcher("/swm/error"); + RequestMatcher errorPageMatcher = new AntPathRequestMatcher("/flagpoles/error"); return errorPageMatcher.matches(request); } @@ -270,8 +270,8 @@ public class AppInterceptor implements HandlerInterceptor { } public static String removeStartingString(String input) { - if (input.startsWith("swm")) { - return removeLeadingSlash(input.substring(3)); + if (input.startsWith("flagpoles")) { + return removeLeadingSlash(input.substring(9)); } return input; } diff --git a/src/main/java/com/gcc/swm_services/modeldata/ErrorResponse.java b/src/main/java/com/gcc/flagpoles_services/modeldata/ErrorResponse.java similarity index 95% rename from src/main/java/com/gcc/swm_services/modeldata/ErrorResponse.java rename to src/main/java/com/gcc/flagpoles_services/modeldata/ErrorResponse.java index 3f7366d..48bb9b0 100644 --- a/src/main/java/com/gcc/swm_services/modeldata/ErrorResponse.java +++ b/src/main/java/com/gcc/flagpoles_services/modeldata/ErrorResponse.java @@ -1,4 +1,4 @@ -package com.gcc.swm_services.modeldata; +package com.gcc.flagpoles_services.modeldata; public class ErrorResponse { diff --git a/src/main/java/com/gcc/swm_services/repository/AppModuleAccessRepository.java b/src/main/java/com/gcc/flagpoles_services/repository/AppModuleAccessRepository.java similarity index 94% rename from src/main/java/com/gcc/swm_services/repository/AppModuleAccessRepository.java rename to src/main/java/com/gcc/flagpoles_services/repository/AppModuleAccessRepository.java index cb66907..784ad59 100644 --- a/src/main/java/com/gcc/swm_services/repository/AppModuleAccessRepository.java +++ b/src/main/java/com/gcc/flagpoles_services/repository/AppModuleAccessRepository.java @@ -1,4 +1,4 @@ -package com.gcc.swm_services.repository; +package com.gcc.flagpoles_services.repository; import java.util.List; @@ -10,7 +10,7 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; -import com.gcc.swm_services.entity.AppModuleAccessEntity; +import com.gcc.flagpoles_services.entity.AppModuleAccessEntity; @Repository @Transactional diff --git a/src/main/java/com/gcc/swm_services/repository/AppModuleRepository.java b/src/main/java/com/gcc/flagpoles_services/repository/AppModuleRepository.java similarity index 90% rename from src/main/java/com/gcc/swm_services/repository/AppModuleRepository.java rename to src/main/java/com/gcc/flagpoles_services/repository/AppModuleRepository.java index 774122d..e1c561e 100644 --- a/src/main/java/com/gcc/swm_services/repository/AppModuleRepository.java +++ b/src/main/java/com/gcc/flagpoles_services/repository/AppModuleRepository.java @@ -1,4 +1,4 @@ -package com.gcc.swm_services.repository; +package com.gcc.flagpoles_services.repository; import java.util.List; @@ -6,7 +6,7 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; -import com.gcc.swm_services.entity.AppModuleEntity; +import com.gcc.flagpoles_services.entity.AppModuleEntity; import javax.transaction.Transactional; diff --git a/src/main/java/com/gcc/swm_services/repository/AppUserGroupRepository.java b/src/main/java/com/gcc/flagpoles_services/repository/AppUserGroupRepository.java similarity index 80% rename from src/main/java/com/gcc/swm_services/repository/AppUserGroupRepository.java rename to src/main/java/com/gcc/flagpoles_services/repository/AppUserGroupRepository.java index 76f5460..c1e4ebe 100644 --- a/src/main/java/com/gcc/swm_services/repository/AppUserGroupRepository.java +++ b/src/main/java/com/gcc/flagpoles_services/repository/AppUserGroupRepository.java @@ -1,10 +1,10 @@ -package com.gcc.swm_services.repository; +package com.gcc.flagpoles_services.repository; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; -import com.gcc.swm_services.entity.AppUserGroupEntity; +import com.gcc.flagpoles_services.entity.AppUserGroupEntity; import javax.transaction.Transactional; diff --git a/src/main/java/com/gcc/swm_services/repository/AppUserRepository.java b/src/main/java/com/gcc/flagpoles_services/repository/AppUserRepository.java similarity index 87% rename from src/main/java/com/gcc/swm_services/repository/AppUserRepository.java rename to src/main/java/com/gcc/flagpoles_services/repository/AppUserRepository.java index 7a08f55..fd51809 100644 --- a/src/main/java/com/gcc/swm_services/repository/AppUserRepository.java +++ b/src/main/java/com/gcc/flagpoles_services/repository/AppUserRepository.java @@ -1,4 +1,4 @@ -package com.gcc.swm_services.repository; +package com.gcc.flagpoles_services.repository; import java.util.List; @@ -6,7 +6,7 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; -import com.gcc.swm_services.entity.AppUserEntity; +import com.gcc.flagpoles_services.entity.AppUserEntity; import javax.transaction.Transactional; diff --git a/src/main/java/com/gcc/swm_services/repository/MenuItemAccessRepository.java b/src/main/java/com/gcc/flagpoles_services/repository/MenuItemAccessRepository.java similarity index 95% rename from src/main/java/com/gcc/swm_services/repository/MenuItemAccessRepository.java rename to src/main/java/com/gcc/flagpoles_services/repository/MenuItemAccessRepository.java index 08cd332..7fdea96 100644 --- a/src/main/java/com/gcc/swm_services/repository/MenuItemAccessRepository.java +++ b/src/main/java/com/gcc/flagpoles_services/repository/MenuItemAccessRepository.java @@ -1,4 +1,4 @@ -package com.gcc.swm_services.repository; +package com.gcc.flagpoles_services.repository; import java.util.List; @@ -8,7 +8,7 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; -import com.gcc.swm_services.entity.MenuItemAccessEntity; +import com.gcc.flagpoles_services.entity.MenuItemAccessEntity; import javax.transaction.Transactional; diff --git a/src/main/java/com/gcc/swm_services/repository/MenuItemRepository.java b/src/main/java/com/gcc/flagpoles_services/repository/MenuItemRepository.java similarity index 92% rename from src/main/java/com/gcc/swm_services/repository/MenuItemRepository.java rename to src/main/java/com/gcc/flagpoles_services/repository/MenuItemRepository.java index e209991..86ec027 100644 --- a/src/main/java/com/gcc/swm_services/repository/MenuItemRepository.java +++ b/src/main/java/com/gcc/flagpoles_services/repository/MenuItemRepository.java @@ -1,4 +1,4 @@ -package com.gcc.swm_services.repository; +package com.gcc.flagpoles_services.repository; import java.util.List; @@ -7,7 +7,7 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; -import com.gcc.swm_services.entity.MenuItemEntity; +import com.gcc.flagpoles_services.entity.MenuItemEntity; import javax.transaction.Transactional; diff --git a/src/main/java/com/gcc/swm_services/repository/SubMenuItemAccessRepository.java b/src/main/java/com/gcc/flagpoles_services/repository/SubMenuItemAccessRepository.java similarity index 96% rename from src/main/java/com/gcc/swm_services/repository/SubMenuItemAccessRepository.java rename to src/main/java/com/gcc/flagpoles_services/repository/SubMenuItemAccessRepository.java index 8056d42..c8dc178 100644 --- a/src/main/java/com/gcc/swm_services/repository/SubMenuItemAccessRepository.java +++ b/src/main/java/com/gcc/flagpoles_services/repository/SubMenuItemAccessRepository.java @@ -1,4 +1,4 @@ -package com.gcc.swm_services.repository; +package com.gcc.flagpoles_services.repository; import java.util.List; @@ -8,7 +8,7 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; -import com.gcc.swm_services.entity.SubMenuItemAccessEntity; +import com.gcc.flagpoles_services.entity.SubMenuItemAccessEntity; import javax.transaction.Transactional; diff --git a/src/main/java/com/gcc/swm_services/repository/SubMenuItemRepository.java b/src/main/java/com/gcc/flagpoles_services/repository/SubMenuItemRepository.java similarity index 93% rename from src/main/java/com/gcc/swm_services/repository/SubMenuItemRepository.java rename to src/main/java/com/gcc/flagpoles_services/repository/SubMenuItemRepository.java index 3365604..4b02c6f 100644 --- a/src/main/java/com/gcc/swm_services/repository/SubMenuItemRepository.java +++ b/src/main/java/com/gcc/flagpoles_services/repository/SubMenuItemRepository.java @@ -1,4 +1,4 @@ -package com.gcc.swm_services.repository; +package com.gcc.flagpoles_services.repository; import java.util.List; @@ -7,7 +7,7 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; -import com.gcc.swm_services.entity.SubMenuItemEntity; +import com.gcc.flagpoles_services.entity.SubMenuItemEntity; import javax.transaction.Transactional; diff --git a/src/main/java/com/gcc/swm_services/repository/UserActivityLogRepository.java b/src/main/java/com/gcc/flagpoles_services/repository/UserActivityLogRepository.java similarity index 77% rename from src/main/java/com/gcc/swm_services/repository/UserActivityLogRepository.java rename to src/main/java/com/gcc/flagpoles_services/repository/UserActivityLogRepository.java index 52f10d5..f5758d5 100644 --- a/src/main/java/com/gcc/swm_services/repository/UserActivityLogRepository.java +++ b/src/main/java/com/gcc/flagpoles_services/repository/UserActivityLogRepository.java @@ -1,11 +1,11 @@ -package com.gcc.swm_services.repository; +package com.gcc.flagpoles_services.repository; import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; -import com.gcc.swm_services.entity.UserActivityLog; +import com.gcc.flagpoles_services.entity.UserActivityLog; import javax.transaction.Transactional; diff --git a/src/main/java/com/gcc/swm_services/repository/UserInfoRepository.java b/src/main/java/com/gcc/flagpoles_services/repository/UserInfoRepository.java similarity index 86% rename from src/main/java/com/gcc/swm_services/repository/UserInfoRepository.java rename to src/main/java/com/gcc/flagpoles_services/repository/UserInfoRepository.java index e7f129c..76c79e7 100644 --- a/src/main/java/com/gcc/swm_services/repository/UserInfoRepository.java +++ b/src/main/java/com/gcc/flagpoles_services/repository/UserInfoRepository.java @@ -1,4 +1,4 @@ -package com.gcc.swm_services.repository; +package com.gcc.flagpoles_services.repository; import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; diff --git a/src/main/java/com/gcc/swm_services/service/Base64Util.java b/src/main/java/com/gcc/flagpoles_services/service/Base64Util.java similarity index 95% rename from src/main/java/com/gcc/swm_services/service/Base64Util.java rename to src/main/java/com/gcc/flagpoles_services/service/Base64Util.java index 8db5396..60943be 100644 --- a/src/main/java/com/gcc/swm_services/service/Base64Util.java +++ b/src/main/java/com/gcc/flagpoles_services/service/Base64Util.java @@ -1,4 +1,4 @@ -package com.gcc.swm_services.service; +package com.gcc.flagpoles_services.service; import java.util.Base64; diff --git a/src/main/java/com/gcc/swm_services/service/CustomUserDetails.java b/src/main/java/com/gcc/flagpoles_services/service/CustomUserDetails.java similarity index 98% rename from src/main/java/com/gcc/swm_services/service/CustomUserDetails.java rename to src/main/java/com/gcc/flagpoles_services/service/CustomUserDetails.java index 11466c4..910476c 100644 --- a/src/main/java/com/gcc/swm_services/service/CustomUserDetails.java +++ b/src/main/java/com/gcc/flagpoles_services/service/CustomUserDetails.java @@ -1,4 +1,4 @@ -package com.gcc.swm_services.service; +package com.gcc.flagpoles_services.service; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; diff --git a/src/main/java/com/gcc/swm_services/service/CustomUserDetailsService.java b/src/main/java/com/gcc/flagpoles_services/service/CustomUserDetailsService.java similarity index 95% rename from src/main/java/com/gcc/swm_services/service/CustomUserDetailsService.java rename to src/main/java/com/gcc/flagpoles_services/service/CustomUserDetailsService.java index 82b6f9a..99d2503 100644 --- a/src/main/java/com/gcc/swm_services/service/CustomUserDetailsService.java +++ b/src/main/java/com/gcc/flagpoles_services/service/CustomUserDetailsService.java @@ -1,4 +1,4 @@ -package com.gcc.swm_services.service; +package com.gcc.flagpoles_services.service; import java.util.ArrayList; import java.util.List; @@ -12,8 +12,8 @@ import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.stereotype.Service; -import com.gcc.swm_services.entity.AppUserEntity; -import com.gcc.swm_services.repository.AppUserRepository; +import com.gcc.flagpoles_services.entity.AppUserEntity; +import com.gcc.flagpoles_services.repository.AppUserRepository; @Service public class CustomUserDetailsService implements UserDetailsService { diff --git a/src/main/java/com/gcc/swm_services/service/LoginUserInfo.java b/src/main/java/com/gcc/flagpoles_services/service/LoginUserInfo.java similarity index 99% rename from src/main/java/com/gcc/swm_services/service/LoginUserInfo.java rename to src/main/java/com/gcc/flagpoles_services/service/LoginUserInfo.java index 2c2706c..880a025 100644 --- a/src/main/java/com/gcc/swm_services/service/LoginUserInfo.java +++ b/src/main/java/com/gcc/flagpoles_services/service/LoginUserInfo.java @@ -1,4 +1,4 @@ -package com.gcc.swm_services.service; +package com.gcc.flagpoles_services.service; import java.time.LocalDate; import java.time.temporal.ChronoUnit; diff --git a/src/main/java/com/gcc/swm_services/service/UserActivityService.java b/src/main/java/com/gcc/flagpoles_services/service/UserActivityService.java similarity index 82% rename from src/main/java/com/gcc/swm_services/service/UserActivityService.java rename to src/main/java/com/gcc/flagpoles_services/service/UserActivityService.java index add5f42..7d25116 100644 --- a/src/main/java/com/gcc/swm_services/service/UserActivityService.java +++ b/src/main/java/com/gcc/flagpoles_services/service/UserActivityService.java @@ -1,10 +1,10 @@ -package com.gcc.swm_services.service; +package com.gcc.flagpoles_services.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import com.gcc.swm_services.entity.UserActivityLog; -import com.gcc.swm_services.repository.UserActivityLogRepository; +import com.gcc.flagpoles_services.entity.UserActivityLog; +import com.gcc.flagpoles_services.repository.UserActivityLogRepository; import java.time.LocalDateTime; diff --git a/src/main/java/com/gcc/swm_services/service/UserActivityTimelineService.java b/src/main/java/com/gcc/flagpoles_services/service/UserActivityTimelineService.java similarity index 77% rename from src/main/java/com/gcc/swm_services/service/UserActivityTimelineService.java rename to src/main/java/com/gcc/flagpoles_services/service/UserActivityTimelineService.java index fa90080..5382d7a 100644 --- a/src/main/java/com/gcc/swm_services/service/UserActivityTimelineService.java +++ b/src/main/java/com/gcc/flagpoles_services/service/UserActivityTimelineService.java @@ -1,10 +1,10 @@ -package com.gcc.swm_services.service; +package com.gcc.flagpoles_services.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import com.gcc.swm_services.entity.UserActivityLog; -import com.gcc.swm_services.repository.UserActivityLogRepository; +import com.gcc.flagpoles_services.entity.UserActivityLog; +import com.gcc.flagpoles_services.repository.UserActivityLogRepository; import java.util.List; diff --git a/src/main/java/com/gcc/swm_services/swm/controller/AdminController.java b/src/main/java/com/gcc/swm_services/swm/controller/AdminController.java deleted file mode 100644 index f83ddf7..0000000 --- a/src/main/java/com/gcc/swm_services/swm/controller/AdminController.java +++ /dev/null @@ -1,163 +0,0 @@ -package com.gcc.swm_services.swm.controller; - -import org.springframework.stereotype.Controller; -import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; - -import com.gcc.swm_services.service.LoginUserInfo; - -@Controller("AdminswmController") -@RequestMapping("/swm/adminfacilities") -public class AdminController { - @GetMapping("/mcc") - public String mcc(Model model) { - String LoginUserId = LoginUserInfo.getLoginUserId(); - model.addAttribute("LoginUserId", LoginUserId); - - String officer_name = LoginUserInfo.getCurrentUserDetails().getUsername(); - model.addAttribute("officer_name", officer_name); - - String UserRole = LoginUserInfo.getUserRole(); // rdo_north / rdo_central - model.addAttribute("UserRole", UserRole); - int facilityTypeId = 1; // Plastic Baling Centre - model.addAttribute("facilityTypeId", facilityTypeId); - return "modules/swm/mcc"; - } - - @GetMapping("/windrow") - public String windrow(Model model) { - String LoginUserId = LoginUserInfo.getLoginUserId(); - model.addAttribute("LoginUserId", LoginUserId); - - String officer_name = LoginUserInfo.getCurrentUserDetails().getUsername(); - model.addAttribute("officer_name", officer_name); - - String UserRole = LoginUserInfo.getUserRole(); // rdo_north / rdo_central - model.addAttribute("UserRole", UserRole); - int facilityTypeId = 2; // Plastic Baling Centre - model.addAttribute("facilityTypeId", facilityTypeId); - return "modules/swm/windrow"; - } - - @GetMapping("/biocng") - public String biocng(Model model) { - String LoginUserId = LoginUserInfo.getLoginUserId(); - model.addAttribute("LoginUserId", LoginUserId); - - String officer_name = LoginUserInfo.getCurrentUserDetails().getUsername(); - model.addAttribute("officer_name", officer_name); - - String UserRole = LoginUserInfo.getUserRole(); // rdo_north / rdo_central - model.addAttribute("UserRole", UserRole); - int facilityTypeId = 3; // Plastic Baling Centre - model.addAttribute("facilityTypeId", facilityTypeId); - return "modules/swm/biocng"; - } - - @GetMapping("/biogas") - public String biogas(Model model) { - String LoginUserId = LoginUserInfo.getLoginUserId(); - model.addAttribute("LoginUserId", LoginUserId); - - String officer_name = LoginUserInfo.getCurrentUserDetails().getUsername(); - model.addAttribute("officer_name", officer_name); - - String UserRole = LoginUserInfo.getUserRole(); // rdo_north / rdo_central - model.addAttribute("UserRole", UserRole); - int facilityTypeId = 4; // Plastic Baling Centre - model.addAttribute("facilityTypeId", facilityTypeId); - return "modules/swm/biogas"; - } - - @GetMapping("/gwtcwaste") - public String gwtcwaste(Model model) { - String LoginUserId = LoginUserInfo.getLoginUserId(); - model.addAttribute("LoginUserId", LoginUserId); - - String officer_name = LoginUserInfo.getCurrentUserDetails().getUsername(); - model.addAttribute("officer_name", officer_name); - - String UserRole = LoginUserInfo.getUserRole(); // rdo_north / rdo_central - model.addAttribute("UserRole", UserRole); - int facilityTypeId = 5; // Plastic Baling Centre - model.addAttribute("facilityTypeId", facilityTypeId); - return "modules/swm/gwtcwaste"; - } - - @GetMapping("/mrf") - public String mrf(Model model) { - String LoginUserId = LoginUserInfo.getLoginUserId(); - model.addAttribute("LoginUserId", LoginUserId); - - String officer_name = LoginUserInfo.getCurrentUserDetails().getUsername(); - model.addAttribute("officer_name", officer_name); - - String UserRole = LoginUserInfo.getUserRole(); // rdo_north / rdo_central - model.addAttribute("UserRole", UserRole); - int facilityTypeId = 6; // Plastic Baling Centre - model.addAttribute("facilityTypeId", facilityTypeId); - return "modules/swm/mrf"; - } - - @GetMapping("/incinerator") - public String incinerator(Model model) { - String LoginUserId = LoginUserInfo.getLoginUserId(); - model.addAttribute("LoginUserId", LoginUserId); - - String officer_name = LoginUserInfo.getCurrentUserDetails().getUsername(); - model.addAttribute("officer_name", officer_name); - - String UserRole = LoginUserInfo.getUserRole(); // rdo_north / rdo_central - model.addAttribute("UserRole", UserRole); - int facilityTypeId = 7; // Plastic Baling Centre - model.addAttribute("facilityTypeId", facilityTypeId); - return "modules/swm/incinerator"; - } - - @GetMapping("/plastingbaling") - public String plastingbaling(Model model) { - String LoginUserId = LoginUserInfo.getLoginUserId(); - model.addAttribute("LoginUserId", LoginUserId); - - int facilityTypeId = 8; // Plastic Baling Centre - model.addAttribute("facilityTypeId", facilityTypeId); - String officer_name = LoginUserInfo.getCurrentUserDetails().getUsername(); - model.addAttribute("officer_name", officer_name); - - String UserRole = LoginUserInfo.getUserRole(); // rdo_north / rdo_central - model.addAttribute("UserRole", UserRole); - return "modules/swm/plastingbaling"; - } - - @GetMapping("/cdwaste") - public String cdwaste(Model model) { - String LoginUserId = LoginUserInfo.getLoginUserId(); - model.addAttribute("LoginUserId", LoginUserId); - - String officer_name = LoginUserInfo.getCurrentUserDetails().getUsername(); - model.addAttribute("officer_name", officer_name); - - String UserRole = LoginUserInfo.getUserRole(); // rdo_north / rdo_central - model.addAttribute("UserRole", UserRole); - int facilityTypeId = 9; // Plastic Baling Centre - model.addAttribute("facilityTypeId", facilityTypeId); - return "modules/swm/cdwaste"; - } - - @GetMapping("/reports") - public String reports(Model model) { - String LoginUserId = LoginUserInfo.getLoginUserId(); - model.addAttribute("LoginUserId", LoginUserId); - - String officer_name = LoginUserInfo.getCurrentUserDetails().getUsername(); - model.addAttribute("officer_name", officer_name); - - String UserRole = LoginUserInfo.getUserRole(); // rdo_north / rdo_central - model.addAttribute("UserRole", UserRole); - int facilityTypeId = 9; // Plastic Baling Centre - model.addAttribute("facilityTypeId", facilityTypeId); - return "modules/swm/reports"; - } - -} diff --git a/src/main/java/com/gcc/swm_services/swm/controller/DropDownApiController.java b/src/main/java/com/gcc/swm_services/swm/controller/DropDownApiController.java deleted file mode 100644 index dfc0af0..0000000 --- a/src/main/java/com/gcc/swm_services/swm/controller/DropDownApiController.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.gcc.swm_services.swm.controller; - -import java.util.Collections; -import java.util.List; - -import java.util.Map; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -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 com.gcc.swm_services.swm.service.DropDownService; - -@RestController -@RequestMapping("/swm/api/dropdown") -public class DropDownApiController { - - @Autowired - private DropDownService dropDownService; - - @GetMapping("/getfacilitiestypelist") - public List> getFacilitiesTypeList() { - return dropDownService.getFacilitiesTypeList(); - } - - @GetMapping("/getzoneslist") - public List> getZonesList() { - return dropDownService.getZonesList(); - } - -} diff --git a/src/main/java/com/gcc/swm_services/swm/controller/MainController.java b/src/main/java/com/gcc/swm_services/swm/controller/MainController.java deleted file mode 100644 index 8cf3cac..0000000 --- a/src/main/java/com/gcc/swm_services/swm/controller/MainController.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.gcc.swm_services.swm.controller; - -import javax.servlet.http.HttpSession; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; - -import com.gcc.swm_services.service.LoginUserInfo; -import com.gcc.swm_services.swm.service.AddDetailsService; - -@Controller("swmController") -@RequestMapping("/swm/facilities") -public class MainController { - - @Autowired - private AddDetailsService addDetailsService; - - @GetMapping("/adddetails") - public String home(Model model, HttpSession session) { - - String loginUserId = LoginUserInfo.getLoginUserId(); // String - String officerName = LoginUserInfo.getCurrentUserDetails().getUsername(); - String userRole = LoginUserInfo.getUserRole(); - - // store in session - session.setAttribute("gcc_user_id", loginUserId); - session.setAttribute("username", officerName); - - // 🔑 derive facility type - int gccUserId = Integer.parseInt(loginUserId); - int dpid = addDetailsService.getDpidByGccUserId(gccUserId); - - // DIRECT MAPPING (as fixed earlier) - int facilityTypeId = dpid; - - // 🔑 THIS WAS MISSING - boolean isTwoWeightFacility = (facilityTypeId == 5); - boolean isWeightTypeFacility = (facilityTypeId == 5 || facilityTypeId == 9); - - // add to model - model.addAttribute("LoginUserId", loginUserId); - model.addAttribute("officer_name", officerName); - model.addAttribute("UserRole", userRole); - model.addAttribute("facilityTypeId", facilityTypeId); - model.addAttribute("isTwoWeightFacility", isTwoWeightFacility); - model.addAttribute("isWeightTypeFacility", isWeightTypeFacility); - - return "modules/swm/requestlist"; - } - - @GetMapping("/approvelist") - public String batches() { - return "modules/swm/approvelist"; - } - - @GetMapping("/reports") - public String dataentry(Model model) { - String LoginUserId = LoginUserInfo.getLoginUserId(); - model.addAttribute("LoginUserId", LoginUserId); - - String officer_name = LoginUserInfo.getCurrentUserDetails().getUsername(); - model.addAttribute("officer_name", officer_name); - - String UserRole = LoginUserInfo.getUserRole(); // rdo_north / rdo_central - model.addAttribute("UserRole", UserRole); - return "modules/swm/eachreport"; - } -} diff --git a/src/main/java/com/gcc/swm_services/swm/controller/SwmAdminApiController.java b/src/main/java/com/gcc/swm_services/swm/controller/SwmAdminApiController.java deleted file mode 100644 index 0f9ac2a..0000000 --- a/src/main/java/com/gcc/swm_services/swm/controller/SwmAdminApiController.java +++ /dev/null @@ -1,145 +0,0 @@ -package com.gcc.swm_services.swm.controller; - -import java.time.LocalDate; -import java.util.Map; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.format.annotation.DateTimeFormat; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.GetMapping; -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.RestController; - -import com.gcc.swm_services.service.LoginUserInfo; -import com.gcc.swm_services.swm.service.AddDetailsService; - -@RestController -@RequestMapping("/swm/api/admin") -public class SwmAdminApiController { - - @Autowired - private AddDetailsService addDetailsService; - - @PostMapping("/addfacility") - public ResponseEntity addFacilityForAdmin( - - @RequestParam int facilityTypeId, - @RequestParam int zoneId, - @RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate reqDate, - @RequestParam Double weight, - @RequestParam(required = false) Double weight1, - @RequestParam(required = false) String weightType, - @RequestParam String createdBy) { - - try { - // 🔴 Validation - if (facilityTypeId < 1 || facilityTypeId > 9) { - throw new IllegalArgumentException("Invalid facility type"); - } - - if (zoneId <= 0) { - throw new IllegalArgumentException("Invalid zone"); - } - - if (reqDate == null) { - throw new IllegalArgumentException("Request date is required"); - } - - if (weight == null) { - throw new IllegalArgumentException("Weight is required"); - } - - if (facilityTypeId == 5) { - if (weight < 0) { - throw new IllegalArgumentException("Weight cannot be negative"); - } - } else { - if (weight <= 0) { - throw new IllegalArgumentException("Weight must be greater than zero"); - } - } - - // 🔴 Facility type 5 → TWO weights + weightType - if (facilityTypeId == 5) { - if (weight1 == null) { - throw new IllegalArgumentException( - "Second weight is required for GW & TC Waste facility"); - } - if (weightType == null || weightType.isBlank()) { - throw new IllegalArgumentException( - "Weight type (KDG / PDG) is required"); - } - } - - if (facilityTypeId == 9) { - - if (weightType == null || weightType.isBlank()) { - throw new IllegalArgumentException( - "Weight type (KDG / PDG) is required"); - } - } - - // 🔐 Admin username for audit - // String createdBy = LoginUserInfo.getCurrentUserDetails().getUsername(); - - // 🔵 SAVE - addDetailsService.addFacility( - facilityTypeId, - zoneId, - reqDate, - createdBy, - weight, - weight1, - weightType); - - return ResponseEntity.ok( - Map.of("status", "SUCCESS", "message", "Added successfully")); - - } catch (IllegalArgumentException ex) { - return ResponseEntity.badRequest().body( - Map.of("status", "ERROR", "message", ex.getMessage())); - } catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body( - Map.of("status", "ERROR", "message", "Internal server error")); - } - } - - @GetMapping("/reports") - public ResponseEntity getZoneTargetPercentage( - @RequestParam String fromDate, - @RequestParam String toDate) { - - if (fromDate == null || toDate == null || - fromDate.isBlank() || toDate.isBlank()) { - - return ResponseEntity.badRequest().body( - Map.of("status", "ERROR", "message", "Date range is required")); - } - - return ResponseEntity.ok( - Map.of( - "status", "SUCCESS", - "data", addDetailsService.getZoneTargetPercentage(fromDate, toDate))); - } - - @GetMapping("/singledayreports") - public ResponseEntity getZoneTargetPercentagePerDay( - @RequestParam String Date) { - - if (Date == null || Date.isBlank()) { - - return ResponseEntity.badRequest().body( - Map.of("status", "ERROR", "message", "Date range is required")); - } - - return ResponseEntity.ok( - Map.of( - "status", "SUCCESS", - "data", addDetailsService.getZoneTargetPercentageForOneDay(Date))); - } - -} diff --git a/src/main/java/com/gcc/swm_services/swm/controller/SwmApiController.java b/src/main/java/com/gcc/swm_services/swm/controller/SwmApiController.java deleted file mode 100644 index 389b32d..0000000 --- a/src/main/java/com/gcc/swm_services/swm/controller/SwmApiController.java +++ /dev/null @@ -1,202 +0,0 @@ -package com.gcc.swm_services.swm.controller; - -import java.time.LocalDate; -import java.util.List; -import java.util.Map; - -import javax.servlet.http.HttpSession; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.format.annotation.DateTimeFormat; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.security.authentication.AnonymousAuthenticationToken; -import org.springframework.security.core.Authentication; -import org.springframework.security.core.context.SecurityContextHolder; -import org.springframework.web.bind.annotation.GetMapping; -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.RestController; - -import com.gcc.swm_services.service.LoginUserInfo; -import com.gcc.swm_services.swm.service.AddDetailsService; - -@RestController -@RequestMapping("/swm/api/facilities") -public class SwmApiController { - - @Autowired - private AddDetailsService addDetailsService; - - // @PostMapping("/addfacility") - // public ResponseEntity addFacility( - - // @RequestParam int zoneId, - // @RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate - // reqDate, - // @RequestParam Double weight, - // @RequestParam(required = false) Double weight1, - // HttpSession session) { - - // try { - // // 🔴 Validation - // if (zoneId <= 0) { - // throw new IllegalArgumentException("Invalid zone"); - // } - - // if (reqDate == null) { - // throw new IllegalArgumentException("Request date is required"); - // } - - // if (weight == null || weight <= 0) { - // throw new IllegalArgumentException("Weight must be greater than zero"); - // } - - // // 🔐 GET LOGIN DATA FROM SESSION (CORRECT WAY) - // Object gccUserIdObj = session.getAttribute("gcc_user_id"); - // Object usernameObj = session.getAttribute("username"); - - // if (gccUserIdObj == null || usernameObj == null) { - // throw new IllegalStateException("User session expired. Please login again."); - // } - - // int gccUserId = Integer.parseInt(gccUserIdObj.toString()); - // String username = usernameObj.toString(); - - // // 🔐 DB MAPPING - // int dpid = addDetailsService.getDpidByGccUserId(gccUserId); - // int facilityTypeId = addDetailsService.getFacilityTypeIdByDpid(dpid); - - // if (facilityTypeId == 5 && (weight1 == null || weight1 <= 0)) { - // throw new IllegalArgumentException( - // "Second weight is required for GW & TC Waste facility"); - // } - - // addDetailsService.addFacility( - // facilityTypeId, - // zoneId, - // reqDate, - // username, - // weight, - // weight1); - - // return ResponseEntity.ok( - // Map.of("status", "SUCCESS", "message", "Facility added successfully")); - - // } catch (IllegalArgumentException | IllegalStateException ex) { - // return ResponseEntity.badRequest().body( - // Map.of("status", "ERROR", "message", ex.getMessage())); - // } catch (Exception ex) { - // ex.printStackTrace(); - // return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body( - // Map.of("status", "ERROR", "message", "Internal server error")); - // } - // } - - @PostMapping("/addfacility") - public ResponseEntity addFacility( - @RequestParam int zoneId, - @RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate reqDate, - @RequestParam Double weight, - @RequestParam(required = false) Double weight1, - @RequestParam(required = false) String weightType, // ✅ ADDED - HttpSession session) { - - try { - - // 🔐 Session values - Object gccUserIdObj = session.getAttribute("gcc_user_id"); - Object usernameObj = session.getAttribute("username"); - int gccUserId = Integer.parseInt(gccUserIdObj.toString()); - String username = usernameObj.toString(); - - // 🔐 gcc_user_id → dpid → facilityTypeId - int dpid = addDetailsService.getDpidByGccUserId(gccUserId); - int facilityTypeId = dpid; - // 🔴 Validation - if (zoneId <= 0) { - throw new IllegalArgumentException("Invalid zone"); - } - - if (reqDate == null) { - throw new IllegalArgumentException("Request date is required"); - } - - if (weight == null) { - throw new IllegalArgumentException("Weight is required"); - } - - if (facilityTypeId == 5) { - if (weight < 0) { - throw new IllegalArgumentException("Weight cannot be negative"); - } - } else { - if (weight <= 0) { - throw new IllegalArgumentException("Weight must be greater than zero"); - } - } - - if (gccUserIdObj == null || usernameObj == null) { - throw new IllegalStateException("User session expired. Please login again."); - } - - // 🔴 Facility type 5 → TWO weights + weightType - if (facilityTypeId == 5) { - if (weight1 == null) { - throw new IllegalArgumentException( - "Second weight is required for GW & TC Waste facility"); - } - if (weightType == null || weightType.isBlank()) { - throw new IllegalArgumentException( - "Location (KDG / PDG) is required"); - } - } - - if (facilityTypeId == 9) { - - if (weightType == null || weightType.isBlank()) { - throw new IllegalArgumentException( - "Location (KDG / PDG) is required"); - } - } - - // 🔵 SAVE - addDetailsService.addFacility( - facilityTypeId, - zoneId, - reqDate, - username, - weight, - weight1, - weightType // ✅ PASSED - ); - - return ResponseEntity.ok( - Map.of("status", "SUCCESS", "message", "Added successfully")); - - } catch (IllegalArgumentException | IllegalStateException ex) { - return ResponseEntity.badRequest().body( - Map.of("status", "ERROR", "message", ex.getMessage())); - } catch (Exception ex) { - ex.printStackTrace(); - return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body( - Map.of("status", "ERROR", "message", "Internal server error")); - } - } - - @GetMapping("/reports") - public ResponseEntity getZoneWiseByLogin( - @RequestParam String username, - @RequestParam String fromDate, - @RequestParam String toDate) { - - List> data = addDetailsService.getZoneWiseFacilityByLogin( - username, fromDate, toDate); - - return ResponseEntity.ok(Map.of( - "status", "SUCCESS", - "data", data)); - } - -} diff --git a/src/main/java/com/gcc/swm_services/swm/service/AddDetailsService.java b/src/main/java/com/gcc/swm_services/swm/service/AddDetailsService.java deleted file mode 100644 index 68965e3..0000000 --- a/src/main/java/com/gcc/swm_services/swm/service/AddDetailsService.java +++ /dev/null @@ -1,510 +0,0 @@ -package com.gcc.swm_services.swm.service; - -import java.sql.Timestamp; -import java.time.LocalDate; -import java.util.List; -import java.util.Map; - -import javax.sql.DataSource; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.jdbc.core.JdbcTemplate; -import org.springframework.stereotype.Service; - -@Service -public class AddDetailsService { - - @Autowired - private JdbcTemplate jdbcTemplate; - - @Autowired - public void setDataSourcemysql(@Qualifier("mysqlSwmDataSource") DataSource dataSource) { - this.jdbcTemplate = new JdbcTemplate(dataSource); - } - - // // ---------------- SAVE ---------------- - // public void addFacility( - // int facilityTypeId, - // int zoneId, - // LocalDate reqDate, - // String createdBy, - // Double weight, - // Double weight1) { - - // String sql = """ - // INSERT INTO facilities_weight_details - // (ft_id, zone_id, req_date, cby, weight, weight_1) - // VALUES (?, ?, ?, ?, ?, ?) - // """; - - // Timestamp reqTimestamp = Timestamp.valueOf(reqDate.atStartOfDay()); - - // Double dbWeight1 = (facilityTypeId == 5) ? weight1 : null; - - // jdbcTemplate.update( - // sql, - // facilityTypeId, - // zoneId, - // reqTimestamp, - // createdBy, - // weight, - // dbWeight1); - // } - - // public void addFacility( - // int facilityTypeId, - // int zoneId, - // LocalDate reqDate, - // String createdBy, - // Double weight, - // Double weight1, - // String weightType) { - - // String sql = """ - // INSERT INTO facilities_weight_details - // (ft_id, zone_id, req_date, cby, weight, weight_1, weight_type) - // VALUES (?, ?, ?, ?, ?, ?, ?) - // """; - - // Timestamp reqTimestamp = Timestamp.valueOf(reqDate.atStartOfDay()); - - // Double dbWeight1 = (facilityTypeId == 5) ? weight1 : null; - // // ✅ weight_type allowed for GW & TC (5) AND PBC / C&D (9) - // String dbWeightType = (facilityTypeId == 5 || facilityTypeId == 9) - // ? weightType - // : null; - - // jdbcTemplate.update( - // sql, - // facilityTypeId, - // zoneId, - // reqTimestamp, - // createdBy, - // weight, - // dbWeight1, - // dbWeightType); - // } - - private Integer getExistingRecordId( - int facilityTypeId, - int zoneId, - LocalDate reqDate) { - - String sql = """ - SELECT fid - FROM facilities_weight_details - WHERE ft_id = ? - AND zone_id = ? - AND DATE(req_date) = ? - AND is_delete = 0 - LIMIT 1 - """; - - List ids = jdbcTemplate.query( - sql, - ps -> { - ps.setInt(1, facilityTypeId); - ps.setInt(2, zoneId); - ps.setDate(3, java.sql.Date.valueOf(reqDate)); - }, - (rs, rowNum) -> rs.getInt("fid")); - - return ids.isEmpty() ? null : ids.get(0); - } - - public void addFacility( - int facilityTypeId, - int zoneId, - LocalDate reqDate, - String officerName, - Double weight, - Double weight1, - String weightType) { - - Timestamp reqTimestamp = Timestamp.valueOf(reqDate.atStartOfDay()); - - Double dbWeight1 = (facilityTypeId == 5) ? weight1 : null; - String dbWeightType = (facilityTypeId == 5 || facilityTypeId == 9) - ? weightType - : null; - - Integer existingId = getExistingRecordId( - facilityTypeId, zoneId, reqDate); - - if (existingId == null) { - // 🟢 INSERT - String insertSql = """ - INSERT INTO facilities_weight_details - (ft_id, zone_id, req_date, weight, weight_1, weight_type, - cby, cdate, is_active, is_delete) - VALUES (?, ?, ?, ?, ?, ?, ?, NOW(), 1, 0) - """; - - jdbcTemplate.update( - insertSql, - facilityTypeId, - zoneId, - reqTimestamp, - weight, - dbWeight1, - dbWeightType, - officerName); - - } else { - // 🔵 UPDATE - String updateSql = """ - UPDATE facilities_weight_details - SET weight = ?, - weight_1 = ?, - weight_type = ?, - updated_by = ?, - updated_date = NOW() - WHERE fid = ? - """; - - jdbcTemplate.update( - updateSql, - weight, - dbWeight1, - dbWeightType, - officerName, - existingId); - } - } - - // ---------------- DPID ---------------- - public int getDpidByGccUserId(int gccUserId) { - - String sql = """ - SELECT dpid - FROM department_login - WHERE gcc_user_id = ? - AND is_active = 1 - AND is_delete = 0 - """; - - List list = jdbcTemplate.queryForList(sql, Integer.class, gccUserId); - - if (list.isEmpty()) { - throw new IllegalArgumentException( - "Department not mapped for user id: " + gccUserId); - } - - return list.get(0); - } - - // ---------------- FACILITY TYPE ---------------- - public int getFacilityTypeIdByDpid(int dpid) { - - String sql = """ - SELECT ft.ft_id - FROM department_login dl - JOIN facilities_type ft - ON LOWER(REPLACE(REPLACE(dl.department_name,'swm_',''),'_',' ')) - LIKE CONCAT('%', LOWER(ft.facilities_name), '%') - WHERE dl.dpid = ? - AND dl.is_active = 1 - AND dl.is_delete = 0 - AND ft.is_active = 1 - AND ft.is_delete = 0 - """; - - List list = jdbcTemplate.queryForList(sql, Integer.class, dpid); - - if (list.isEmpty()) { - throw new IllegalArgumentException( - "Facility type not mapped for department id: " + dpid); - } - - return list.get(0); - } - - public List> getZoneTargetPercentage( - String fromDate, String toDate) { - - String sql = """ - SELECT - t.zone, - t.facility, - t.target, - COALESCE(a.achieved, 0) AS achieved, - ROUND( - CASE - WHEN t.target = 0 AND COALESCE(a.achieved, 0) > 0 THEN 100 - WHEN t.target = 0 THEN 0 - ELSE LEAST((COALESCE(a.achieved, 0) / t.target) * 100, 100) - END, - 2 - ) AS percentage - FROM ( - SELECT zone, 1 AS ft_id, 'MCC' AS facility, mcc AS target - FROM zonewise_target WHERE is_active = 1 AND is_delete = 0 - - UNION ALL - SELECT zone, 2, 'Windrow', windrow FROM zonewise_target - WHERE is_active = 1 AND is_delete = 0 - - UNION ALL - SELECT zone, 3, 'Bio-CNG', bio_cng FROM zonewise_target - WHERE is_active = 1 AND is_delete = 0 - - UNION ALL - SELECT zone, 4, 'Bio-GAS', bio_gas FROM zonewise_target - WHERE is_active = 1 AND is_delete = 0 - - UNION ALL - SELECT zone, 5, 'GW & TC Waste', gw_tc_waste FROM zonewise_target - WHERE is_active = 1 AND is_delete = 0 - - UNION ALL - SELECT zone, 6, 'MRF OR RRC', mrf_mrr FROM zonewise_target - WHERE is_active = 1 AND is_delete = 0 - - UNION ALL - SELECT zone, 7, 'Incinerator', incinerator FROM zonewise_target - WHERE is_active = 1 AND is_delete = 0 - - UNION ALL - SELECT zone, 8, 'Plasting Baling Centre', plasting_baling_centre - FROM zonewise_target WHERE is_active = 1 AND is_delete = 0 - ) t - LEFT JOIN ( - SELECT - fwd.zone_id AS zone, - fwd.ft_id, - SUM( - CASE - WHEN fwd.ft_id = 5 - THEN COALESCE(fwd.weight, 0) - + COALESCE(fwd.weight_1, 0) - ELSE - COALESCE(fwd.weight, 0) - END - ) AS achieved - FROM facilities_weight_details fwd - WHERE fwd.is_active = 1 - AND fwd.is_delete = 0 - AND DATE(fwd.req_date) BETWEEN ? AND ? - GROUP BY fwd.zone_id, fwd.ft_id - ) a - ON a.zone = t.zone - AND a.ft_id = t.ft_id - ORDER BY t.zone, t.facility - """; - - return jdbcTemplate.queryForList(sql, fromDate, toDate); - } - - public List> getZoneTargetPercentageForOneDay(String date) { - String sql = """ - SELECT - t.zone, - t.facility, - t.target, - COALESCE(a.achieved, 0) AS achieved, - ROUND( - CASE - WHEN t.target = 0 AND COALESCE(a.achieved, 0) > 0 THEN 100 - WHEN t.target = 0 THEN 0 - ELSE LEAST((COALESCE(a.achieved, 0) / t.target) * 100, 100) - END, - 2 - ) AS percentage - FROM ( - SELECT zone, 1 AS ft_id, 'MCC' AS facility, mcc AS target FROM zonewise_target WHERE is_active = 1 AND is_delete = 0 - UNION ALL SELECT zone, 2, 'Windrow', windrow FROM zonewise_target WHERE is_active = 1 AND is_delete = 0 - UNION ALL SELECT zone, 3, 'Bio-CNG', bio_cng FROM zonewise_target WHERE is_active = 1 AND is_delete = 0 - UNION ALL SELECT zone, 4, 'Bio-GAS', bio_gas FROM zonewise_target WHERE is_active = 1 AND is_delete = 0 - UNION ALL SELECT zone, 5, 'GW & TC Waste', gw_tc_waste FROM zonewise_target WHERE is_active = 1 AND is_delete = 0 - UNION ALL SELECT zone, 6, 'MRF OR RRC', mrf_mrr FROM zonewise_target WHERE is_active = 1 AND is_delete = 0 - UNION ALL SELECT zone, 7, 'Incinerator', incinerator FROM zonewise_target WHERE is_active = 1 AND is_delete = 0 - UNION ALL SELECT zone, 8, 'Plasting Baling Centre', plasting_baling_centre FROM zonewise_target WHERE is_active = 1 AND is_delete = 0 - ) t - LEFT JOIN ( - SELECT - fwd.zone_id AS zone, - fwd.ft_id, - SUM( - CASE - WHEN fwd.ft_id = 5 - THEN COALESCE(fwd.weight, 0) + COALESCE(fwd.weight_1, 0) - ELSE COALESCE(fwd.weight, 0) - END - ) AS achieved - FROM facilities_weight_details fwd - WHERE fwd.is_active = 1 - AND fwd.is_delete = 0 - AND DATE(fwd.req_date) = ? -- **single‑date filter** - GROUP BY fwd.zone_id, fwd.ft_id - ) a - ON a.zone = t.zone - AND a.ft_id = t.ft_id - ORDER BY t.zone, t.facility - """; - // Only one parameter (the date) is bound now. - return jdbcTemplate.queryForList(sql, date); - } - - // public List> getZoneWiseFacilityByLogin( - // String username, - // String fromDate, - // String toDate) { - - // String sql = """ - // SELECT - // t.zone, - // t.facility, - // t.target, - // COALESCE(a.achieved, 0) AS achieved, - // ROUND( - // CASE - // WHEN t.target = 0 AND COALESCE(a.achieved, 0) > 0 THEN 100 - // WHEN t.target = 0 AND COALESCE(a.achieved, 0) = 0 THEN 0 - // ELSE LEAST((COALESCE(a.achieved, 0) / t.target) * 100, 100) - // END, 2 - // ) AS percentage - // FROM ( - // /* 🔹 TARGET – ONLY FACILITY FROM LOGIN */ - // SELECT - // zt.zone, - // ft.facilities_name AS facility, - // CASE ft.ft_id - // WHEN 1 THEN zt.mcc - // WHEN 2 THEN zt.windrow - // WHEN 3 THEN zt.bio_cng - // WHEN 4 THEN zt.bio_gas - // WHEN 5 THEN zt.gw_tc_waste - // WHEN 6 THEN zt.mrf_mrr - // WHEN 7 THEN zt.incinerator - // WHEN 8 THEN zt.plasting_baling_centre - // ELSE 0 - // END AS target - - // FROM department_login dl - // JOIN facilities_type ft ON ft.ft_id = dl.dpid - // JOIN zonewise_target zt ON zt.is_active = 1 AND zt.is_delete = 0 - // WHERE dl.user_name = ? - // ) t - // LEFT JOIN ( - // /* 🔹 ACHIEVED – SAME FT_ID + LOGIN */ - // SELECT - // fwd.zone_id AS zone, - // ft.facilities_name AS facility, - // SUM(COALESCE(fwd.weight, 0) + COALESCE(fwd.weight_1, 0)) AS achieved - // FROM facilities_weight_details fwd - // JOIN facilities_type ft ON ft.ft_id = fwd.ft_id - // WHERE fwd.is_active = 1 - // AND fwd.is_delete = 0 - // AND fwd.cby = ? - // AND DATE(fwd.req_date) BETWEEN ? AND ? - // GROUP BY fwd.zone_id, ft.facilities_name - // ) a - // ON a.zone = t.zone AND a.facility = t.facility - // ORDER BY t.zone - // """; - - // return jdbcTemplate.queryForList( - // sql, - // username, - // username, - // fromDate, - // toDate); - // } - - private String normalizeDate(String date) { - - if (date == null || date.isBlank()) { - return date; - } - - // If browser format yyyy-MM-dd → convert to dd-MM-yyyy - if (date.matches("\\d{4}-\\d{2}-\\d{2}")) { - String[] p = date.split("-"); - return p[2] + "-" + p[1] + "-" + p[0]; - } - - // Already dd-MM-yyyy - return date; - } - - public List> getZoneWiseFacilityByLogin( - String username, - String fromDate, - String toDate) { - - // 🔥 Normalize date format (supports yyyy-MM-dd and dd-MM-yyyy) - fromDate = normalizeDate(fromDate); - toDate = normalizeDate(toDate); - - String sql = """ - SELECT - t.zone, - t.facility, - t.target, - COALESCE(a.achieved, 0) AS achieved, - ROUND( - CASE - WHEN t.target = 0 AND COALESCE(a.achieved, 0) > 0 THEN 100 - WHEN t.target = 0 AND COALESCE(a.achieved, 0) = 0 THEN 0 - ELSE LEAST((COALESCE(a.achieved, 0) / t.target) * 100, 100) - END, 2 - ) AS percentage - FROM ( - /* TARGET */ - SELECT - zt.zone, - ft.ft_id, - ft.facilities_name AS facility, - CASE ft.ft_id - WHEN 1 THEN zt.mcc - WHEN 2 THEN zt.windrow - WHEN 3 THEN zt.bio_cng - WHEN 4 THEN zt.bio_gas - WHEN 5 THEN zt.gw_tc_waste - WHEN 6 THEN zt.mrf_mrr - WHEN 7 THEN zt.incinerator - WHEN 8 THEN zt.plasting_baling_centre - ELSE 0 - END AS target - FROM department_login dl - JOIN facilities_type ft ON ft.ft_id = dl.dpid - JOIN zonewise_target zt - ON zt.is_active = 1 - AND zt.is_delete = 0 - WHERE TRIM(dl.user_name) = ? - ) t - LEFT JOIN ( - /* ACHIEVED */ - SELECT - fwd.zone_id AS zone, - fwd.ft_id, - SUM(COALESCE(fwd.weight, 0) + COALESCE(fwd.weight_1, 0)) AS achieved - FROM facilities_weight_details fwd - WHERE fwd.is_active = 1 - AND fwd.is_delete = 0 - AND TRIM(fwd.cby) = ? - AND fwd.req_date >= STR_TO_DATE(CONCAT(?, ' 00:00:00'), '%d-%m-%Y %H:%i:%s') - AND fwd.req_date <= STR_TO_DATE(CONCAT(?, ' 23:59:59'), '%d-%m-%Y %H:%i:%s') - AND fwd.ft_id = ( - SELECT dpid - FROM department_login - WHERE TRIM(user_name) = ? - ) - GROUP BY fwd.zone_id, fwd.ft_id - ) a - ON a.zone = t.zone - AND a.ft_id = t.ft_id - ORDER BY t.zone - """; - - return jdbcTemplate.queryForList( - sql, - username, - username, - fromDate, - toDate, - username); - } - -} diff --git a/src/main/java/com/gcc/swm_services/swm/service/DropDownService.java b/src/main/java/com/gcc/swm_services/swm/service/DropDownService.java deleted file mode 100644 index 5e40e51..0000000 --- a/src/main/java/com/gcc/swm_services/swm/service/DropDownService.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.gcc.swm_services.swm.service; - -import java.util.List; -import java.util.Map; - -import javax.sql.DataSource; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.jdbc.core.JdbcTemplate; -import org.springframework.stereotype.Service; -import org.springframework.web.client.RestTemplate; - -import com.fasterxml.jackson.databind.ObjectMapper; - -@Service -public class DropDownService { - - @Autowired - private JdbcTemplate jdbcTemplate; - - @Autowired - public void setDataSourcemysql(@Qualifier("mysqlSwmDataSource") DataSource dataSource) { - this.jdbcTemplate = new JdbcTemplate(dataSource); - } - - public List> getFacilitiesTypeList() { - String sql = " SELECT * FROM facilities_type where is_active = '1' and is_delete ='0' "; - return jdbcTemplate.queryForList(sql); - } - - public List> getZonesList() { - String sql = " SELECT * FROM zones where is_active = '1' and is_delete ='0' "; - return jdbcTemplate.queryForList(sql); - } - -} diff --git a/src/main/resources/application-dev.properties b/src/main/resources/application-dev.properties index 65511b6..27c5409 100644 --- a/src/main/resources/application-dev.properties +++ b/src/main/resources/application-dev.properties @@ -1,5 +1,5 @@ assets.base-url=/assets/ -fileBaseUrl=http://localhost:8060 +fileBaseUrl=http://localhost:8061 #fileBaseUrl = D:/Projects/Election_Project/election_v1/gcc_election_uploads \ No newline at end of file diff --git a/src/main/resources/application-prod.properties b/src/main/resources/application-prod.properties index 051b60c..84a87c5 100644 --- a/src/main/resources/application-prod.properties +++ b/src/main/resources/application-prod.properties @@ -1,3 +1,3 @@ -assets.base-url=/swm/assets/ +assets.base-url=/flagpoles/assets/ -fileBaseUrl=https://gccservices.in/files \ No newline at end of file +fileBaseUrl=https://gccservices.in/flagpoles \ No newline at end of file diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 66d69e0..25041cb 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -2,7 +2,7 @@ spring.profiles.active=dev #spring.profiles.active=prod # Spring properties -spring.application.name=swm_login +spring.application.name=flagpoles_login spring.datasource.hikari.connection-timeout=30000 @@ -15,7 +15,7 @@ spring.servlet.multipart.max-file-size=20MB spring.servlet.multipart.max-request-size=20MB # HTTP Server -server.port = 8060 +server.port = 8061 #server.servlet.context-path=/gccoffice server.error.include-stacktrace= on_param # Hibernate logging diff --git a/src/main/resources/templates/error-403.html b/src/main/resources/templates/error-403.html index b004416..f797194 100644 --- a/src/main/resources/templates/error-403.html +++ b/src/main/resources/templates/error-403.html @@ -1,57 +1,63 @@ + - - -
-
-
-
-
-
- -
-
-
-
-
- Greater Chennai Corporation -
-

Greater Chennai Corporation

- -
-
-

- 403 Error -

-

- 403 - Access Denied -

-

- Oops, You don`t have permission to access this page. -

- - Back - -
-
- -
-
-
+
+
+
+
+
+
+ +
+
+
+
+
+ Greater Chennai Corporation
+

Greater Chennai Corporation + Flagpoles Officer Login +

+ +
+
+

+ 403 Error +

+

+ 403 - Access Denied +

+

+ Oops, You don`t have permission to access this page. +

+ + Back + +
+
+ +
- - - - - +
+
+
+ + + + + + \ No newline at end of file diff --git a/src/main/resources/templates/fragments/modules/base/footer.html b/src/main/resources/templates/fragments/modules/base/footer.html index f963c43..0da3e21 100644 --- a/src/main/resources/templates/fragments/modules/base/footer.html +++ b/src/main/resources/templates/fragments/modules/base/footer.html @@ -1,5 +1,5 @@