From 5b0224f0aca99dd717762ba516c1a485d70fdef2 Mon Sep 17 00:00:00 2001 From: risadmin_prod Date: Mon, 20 Oct 2025 05:47:24 +0000 Subject: [PATCH] base_project --- .../authsec_springboot/.gitignore | 1 + .../authsec_springboot/backend/.classpath | 57 + .../authsec_springboot/backend/.factorypath | 235 + .../authsec_springboot/backend/.project | 28 + .../org.eclipse.core.resources.prefs | 4 + .../.settings/org.eclipse.jdt.apt.core.prefs | 4 + .../.settings/org.eclipse.jdt.core.prefs | 10 + .../.settings/org.eclipse.m2e.core.prefs | 4 + .../org.springframework.ide.eclipse.prefs | 2 + .../backend/.swagger-codegen-ignore | 23 + .../Files/600dpi (1)_1750161677278.png | Bin 0 -> 1475888 bytes .../authsec_springboot/backend/dump.sql | 508 + .../backend/hs_err_pid6816.log | 857 + .../backend/logs/ExceptionLogs/Error.log | 201 + .../backend/logs/SYSADMIN1673073474.log | 0 .../backend/logs/sysadmin1686312560.log | 1 + .../authsec_springboot/backend/pom.xml | 427 + .../Controllers/AccesstypeController.java | 66 + .../Controllers/AgyanaController.java | 30 + .../Controllers/AraniController.java | 51 + .../TokenFreeAccesstypeController.java | 68 + .../Accesstype_back/Entity/Accesstype.java | 19 + .../Accesstype_back/Entity/Agyana.java | 27 + .../realnet/Accesstype_back/Entity/Arani.java | 22 + .../Repository/AccesstypeRepository.java | 13 + .../Repository/AgyanaRepository.java | 11 + .../Repository/AraniRepository.java | 11 + .../Services/AccesstypeService.java | 49 + .../Services/AraniService.java | 44 + .../Api/Controllers/BillingSequentialApi.java | 304 + .../ServiceOrderApiController.java | 403 + .../ApprovalHistory_Controller.java | 67 + .../Controllers/ApprovalQueue_Controller.java | 89 + .../realnet/Billing/Dto/ApprovalNote_SO.java | 27 + .../realnet/Billing/Dto/ApprovalQueue_SO.java | 44 + .../Billing/Dto/BillingPeriodsResponse.java | 32 + .../realnet/Billing/Dto/ServiceOrderDto.java | 22 + .../Billing/Dto/ServiceWithDiscount.java | 48 + .../Billing/Entitys/ApprovalHistory_t.java | 26 + .../Billing/Entitys/BillingPeriods_t.java | 26 + .../Billing/Entitys/CustomerRates_t.java | 32 + .../BillingJobServiceController.java | 325 + .../Billing/Job/Entity/BillingJobEntity.java | 25 + .../Job/Repository/BillingJobRepository.java | 16 + .../Job/Service/BillingJobService.java | 23 + .../ApprovalHistory_Repository.java | 11 + .../Repositorys/ApprovalQueue_Repository.java | 13 + .../ApprovalReturnHistory_Repo.java | 9 + .../Services/ApprovalHistory_Service.java | 135 + .../Services/ApprovalQueueService.java | 31 + .../Builders/Entity/Builder_entity_t.java | 21 + .../Builders/Repos/BuilderRepository.java | 15 + .../Builders/Services/BuilderService.java | 583 + .../Builders/Services/SqlDumpExecutor.java | 130 + .../Controllers/BulkUpload_Controller.java | 43 + .../Controllers/DataImportController.java | 1038 ++ .../Controllers/MappingRuleController.java | 124 + .../Controllers/MasterImportController.java | 600 + .../BulkUpload/Entity/BulkUpload_t.java | 21 + .../BulkUpload/Entity/MappingRule.java | 24 + .../Repository/BulkUpload_Repository.java | 21 + .../Repository/MappingRuleRepository.java | 11 + .../Services/BulkUpload_Service.java | 40 + .../Services/MappingRuleService.java | 43 + .../Services/EmailNotificationService.java | 180 + .../Config/Databaseconfig.java | 40 + .../Service/SurevaultService.java | 115 + .../Dashboard1/Controller/Dashboard2.java | 30 + .../Controller/Dashbord1Controller.java | 110 + .../Dashboard1/Entity/Dashbord1_Line.java | 45 + .../Dashboard1/Entity/Dashbord_Header.java | 63 + .../Entity/dashbord_Who_collumn.java | 46 + .../Repository/Dashboard_lineRepository.java | 20 + .../Repository/HeaderRepository.java | 35 + .../Dashboard1/Service/HeaderService.java | 99 + .../Controllers/ChartBuilder.java | 967 + .../DashboardSchedule_Controller.java | 47 + .../Dashboard_builder_Controller.java | 55 + .../Controllers/EmailGenerate.java | 385 + .../Controllers/PdfController.java | 31 + .../Controllers/PdfService.java | 284 + .../Entity/DashboardSchedule_t.java | 28 + .../Entity/Dashboard_builder_t.java | 20 + .../DashboardSchedule_Repository.java | 23 + .../Dashboard_builder_Repository.java | 14 + .../Services/DashboardSchedule_Service.java | 47 + .../Services/Dashboard_builder_Service.java | 37 + .../Services/EmailGenerateService.java | 126 + .../Controllers/Data_lakeController.java | 124 + .../DataLake/Controllers/XmlApiExample.java | 57 + .../tokenFree_Data_lakeController.java | 115 + .../realnet/DataLake/Entity/BatchData.java | 26 + .../realnet/DataLake/Entity/Data_lake.java | 51 + .../Repository/BatchDataRepository.java | 24 + .../Repository/Data_lakeRepository.java | 21 + .../DataLake/Services/Data_lakeService.java | 428 + .../Controllers/AngularHtmlCode.java | 62 + .../Controllers/FabricIcardController.java | 47 + .../FabricIcard/Controllers/LayoutPdf.java | 312 + .../MyImageReplacedElementFactory.java | 40 + .../Controllers/PageController.java | 28 + .../FabricIcard/Controllers/TestCode.java | 108 + .../FabricIcard/Entity/FabricIcard.java | 35 + .../FabricIcard/Entity/PageSource.java | 19 + .../Repository/FabricIcardRepository.java | 12 + .../Repository/PageSourceRepository.java | 10 + .../Services/FabricIcardService.java | 41 + .../Services/LayoutPdfService.java | 282 + .../FabricIcardLinesController.java | 78 + .../Controllers/JsonKeysController.java | 117 + .../FabricIcardLines/Entity/Dummyfabric.java | 19 + .../Entity/FabricIcardLines.java | 41 + .../FabricIcardLinesRepository.java | 15 + .../Services/FabricIcardLinesService.java | 109 + .../Controllers/UploadeddocsController.java | 194 + .../FileUpload/Entity/Uploadeddocs.java | 25 + .../Repository/UploadFileRepository.java | 17 + .../Services/FileuploadService.java | 66 + .../Services/UploadedFileService.java | 43 + .../FileUpload/controller/Filecontroller.java | 54 + .../FileUpload/helper/Fileupload_helper.java | 81 + .../FromExtensionJson_Controller.java | 95 + .../Entity/FromExtensionJson_t.java | 20 + .../FromExtensionJson_Repository.java | 23 + .../Services/FromExtensionJson_Service.java | 39 + .../Gaurav_testing_Controller.java | 68 + .../Entity/Gaurav_testing_t.java | 27 + .../Repository/Gaurav_testing_Repository.java | 13 + .../Services/Gaurav_testing_Service.java | 59 + .../Controllers/Modules_tController.java | 46 + .../Modules_t_back/Entity/Modules_t.java | 24 + .../Repository/Modules_tRepository.java | 13 + .../Services/Modules_tService.java | 42 + .../Component/WhoColumnAspect.java | 122 + .../Component/WhoColumnInterceptor.java | 62 + .../Services/TimezoneService.java | 28 + .../MultiTimeZone/config/HibernateConfig.java | 24 + .../Controller/NotController.java | 32 + .../Notification/Entity/NotEntity.java | 21 + .../Notification/Repository/NotRepo.java | 18 + .../Services/NotificationEntityService.java | 41 + .../OpenAi/Controller/OpenAiController.java | 30 + .../com/realnet/OpenAi/Models/openAi.java | 10 + .../OpenAi/Services/OpenAiServices.java | 44 + .../com/realnet/Payment/Paytm/AppConfig.java | 7 + .../Payment/Paytm/PaytmPageController.java | 19 + .../realnet/Payment/Paytm/PaytmPayment.java | 104 + .../Payment/Razorpay/RazorpayController.java | 89 + .../realnet/Payment/Razorpay/RazorpayDTO.java | 27 + .../Payment/Razorpay/RazorpayRepo.java | 9 + .../src/main/java/com/realnet/RealNetApp.java | 31 + .../Controllers/FileConverterController.java | 229 + .../Controllers/Rpt_builder_Controller.java | 46 + .../Rpt_builder/Entity/Rpt_builder_t.java | 24 + .../Repository/Rpt_builder_Repository.java | 11 + .../Services/Rpt_builder_Service.java | 43 + .../Controllers/ReportHtmlController.java | 86 + .../Controllers/RpDownloadController.java | 184 + .../Controllers/Rpt_builder2_Controller.java | 46 + .../Rpt_builder2/Entity/Rpt_builder2_t.java | 37 + .../Repository/Rpt_builder2_Repository.java | 11 + .../Services/Rpt_builder2_Service.java | 49 + .../Rpt_builder2_lines_Controller.java | 128 + .../Entity/Rpt_builder2_lines_t.java | 31 + .../Rpt_builder2_lines_Repository.java | 15 + .../Services/Rpt_builder2_lines_Service.java | 37 + .../Controller/SequenceController.java | 182 + .../SequenceGenerator/Entity/Sequence.java | 78 + .../Service/SequenceService.java | 118 + .../SequenceGenerator/repo/SeqRepo.java | 15 + .../Controller/SureController.java | 73 + .../Controller/Sure_Postman_Api.java | 140 + .../SureConnect/Entities/Sure_Connect.java | 30 + .../Repository/SureRepository.java | 16 + .../SureConnect/Service/SureService.java | 61 + .../realnet/WhoColumn/Entity/Extension.java | 34 + .../realnet/WhoColumn/Entity/Who_column.java | 46 + .../WhoColumn/Services/WhoColumnService.java | 48 + .../Controller/DDController.java | 107 + .../Controller/SecTeamController.java | 87 + .../SecWorkSpaceUSerController.java | 170 + .../Sec_team_members_Controller.java | 60 + .../Controller/WorkspaceController.java | 92 + .../realnet/Workspaceuser/Entity/DDTable.java | 10 + .../Workspaceuser/Entity/SecUsedDd.java | 13 + .../Entity/Sec_team_members.java | 25 + .../Workspaceuser/Entity/Sec_teams.java | 31 + .../Workspaceuser/Entity/Sec_workspace.java | 32 + .../Entity/Sec_workspace_users.java | 40 + .../Repository/SecWorkspaceUserRepo.java | 25 + .../Repository/Sec_team_MemberRepository.java | 20 + .../Repository/Sec_teams_Repository.java | 18 + .../Repository/WorkspaceRepository.java | 22 + .../Service/SecTeam_MemberService.java | 50 + .../Service/Sec_teamService.java | 50 + .../Service/WorkspaceService.java | 52 + .../Api_registery_headerController.java | 75 + .../Api_registery_lineController.java | 82 + .../Controllers/GeneratetokenController.java | 51 + .../Entity/Api_registery_header.java | 26 + .../Entity/Api_registery_line.java | 30 + .../api_registery/Entity/Token_registery.java | 29 + .../Api_registery_headerRepository.java | 13 + .../Api_registery_lineRepository.java | 17 + .../Token_registery_Repository.java | 17 + .../Services/Api_registery_headerService.java | 59 + .../Services/Api_registery_lineService.java | 67 + .../Services/GeneratetokenService.java | 122 + .../java/com/realnet/config/AppConfig.java | 39 + .../java/com/realnet/config/CorsFilter.java | 56 + .../java/com/realnet/config/EmailService.java | 136 + .../com/realnet/config/HttpLoggingFilter.java | 505 + .../java/com/realnet/config/JWTConstant.java | 22 + .../config/JwtAuthenticationEntryPoint.java | 37 + .../config/JwtAuthenticationFilter.java | 173 + .../realnet/config/MessageSourceConfig.java | 32 + .../realnet/config/MyCommandLineRunner.java | 49 + .../com/realnet/config/SecurityConfig.java | 165 + .../com/realnet/config/SwaggerConfig.java | 134 + .../com/realnet/config/TokenProvider.java | 133 + .../realnet/config/sqlite/SQLiteDialect.java | 35 + .../sqlite/SQLiteIdentityColumnSupport.java | 22 + .../com/realnet/config/sqlite/SQLiteUtil.java | 15 + .../Controllers/DashboardController.java | 63 + .../Entity/Dashboard.java | 32 + .../Repository/DashboardRepository.java | 13 + .../Services/DashboardService.java | 54 + .../Event_ManagementController.java | 100 + .../Entity/Event_Management.java | 40 + .../Event_ManagementRepository.java | 13 + .../Services/Event_ManagementService.java | 88 + .../exceptions/GlobalExceptionHandler.java | 69 + .../exceptions/InvalidUserDataException.java | 12 + .../realnet/exceptions/OperationResponse.java | 19 + .../exceptions/ResourceNotFoundException.java | 14 + .../realnet/exceptions/StorageException.java | 18 + .../fnd/controller/MainController.java | 17 + .../Rn_DynamicTransactionController.java | 119 + .../controller/Rn_ExtensionController.java | 155 + .../controller/Rn_Forms_Setup_Controller.java | 114 + .../Rn_Function_Register_Controller.java | 105 + .../controller/Rn_Main_Menu_Controller.java | 121 + .../controller/Rn_Menu_Group_Controller.java | 203 + .../Rn_Menu_Group_Line_Controller.java | 57 + .../Rn_Menu_Register_Controller.java | 125 + .../fnd/controller1/LoadMenuController.java | 288 + .../fnd/controller1/MenuController.java | 407 + .../fnd/controller1/QueryController.java | 85 + .../fnd/controller1/TokenFreeController.java | 43 + .../com/realnet/fnd/entity/DropDownDTO.java | 35 + .../java/com/realnet/fnd/entity/Error.java | 41 + .../com/realnet/fnd/entity/ErrorPojo.java | 38 + .../com/realnet/fnd/entity/ModuleCopyDTO.java | 12 + .../com/realnet/fnd/entity/Modulemini.java | 8 + .../com/realnet/fnd/entity/ProjectMini.java | 7 + .../realnet/fnd/entity/Rn_AuditEntity.java | 82 + .../fnd/entity/Rn_Dynamic_Transaction.java | 435 + .../com/realnet/fnd/entity/Rn_Ext_Fields.java | 157 + .../fnd/entity/Rn_ExtensionEntity.java | 183 + .../com/realnet/fnd/entity/Rn_FlexEntity.java | 72 + .../fnd/entity/Rn_Forms_Component_Setup.java | 124 + .../realnet/fnd/entity/Rn_Forms_Setup.java | 102 + .../fnd/entity/Rn_Function_Register.java | 111 + .../realnet/fnd/entity/Rn_Instance_Type.java | 37 + .../realnet/fnd/entity/Rn_Lookup_Values.java | 201 + .../com/realnet/fnd/entity/Rn_Main_Menu.java | 108 + .../fnd/entity/Rn_Menu_Group_Header.java | 265 + .../fnd/entity/Rn_Menu_Group_Line.java | 137 + .../realnet/fnd/entity/Rn_Menu_Register.java | 109 + .../com/realnet/fnd/entity/Rn_Sub_Menu.java | 98 + .../fnd/entity/Rn_Who_AccId_Column.java | 81 + .../realnet/fnd/entity/Rn_Who_Columns.java | 65 + .../com/realnet/fnd/entity/SingleSerise.java | 16 + .../java/com/realnet/fnd/entity/Success.java | 41 + .../com/realnet/fnd/entity/SuccessPojo.java | 36 + .../java/com/realnet/fnd/entity/Version.java | 32 + .../realnet/fnd/entity/WireFrameCopyDTO.java | 18 + .../realnet/fnd/entity/projectCopyDTO.java | 12 + .../realnet/fnd/entity1/ExtensionModel.java | 47 + .../realnet/fnd/entity1/GrpMenuAccess.java | 90 + .../entity1/GrpMenuAccesscompositeKey.java | 25 + .../com/realnet/fnd/entity1/MIXMENUN.java | 33 + .../java/com/realnet/fnd/entity1/MenuDet.java | 68 + .../java/com/realnet/fnd/entity1/MixMenu.java | 37 + .../com/realnet/fnd/entity1/MixMenuNew.java | 17 + .../java/com/realnet/fnd/entity1/Query.java | 28 + .../com/realnet/fnd/entity1/menudet_who.java | 46 + .../fnd/repository/ExtFieldRepository.java | 17 + .../fnd/repository/LookUpRepository.java | 19 + .../fnd/repository/RnGroupLineRepository.java | 14 + .../Rn_DynamicTransactionRepository.java | 30 + .../repository/Rn_Forms_Setup_Repository.java | 24 + .../Rn_Function_Register_Repository.java | 22 + .../repository/Rn_InstanceTypeRepository.java | 11 + .../fnd/repository/Rn_LookUpRepository.java | 30 + .../repository/Rn_Main_Menu_Repository.java | 21 + .../repository/Rn_Menu_Group_Repository.java | 17 + .../Rn_Menu_Register_Repository.java | 21 + .../repository1/GrpMenuAccessRepository.java | 90 + .../fnd/repository1/MenuDetRepository.java | 272 + .../fnd/repository1/QueryRepository.java | 10 + .../realnet/fnd/response/CustomResponse.java | 15 + .../realnet/fnd/response/EntityResponse.java | 15 + .../fnd/response/OperationResponse.java | 19 + .../realnet/fnd/response/PageResponse.java | 53 + .../Rn_DynamicTransactionResponse.java | 16 + .../fnd/response/Rn_Forms_SetupResponse.java | 16 + .../Rn_Function_Register_Response.java | 16 + .../fnd/response/Rn_Main_Menu_Response.java | 16 + .../fnd/response/Rn_Menu_Group_Response.java | 16 + .../response/Rn_Menu_Register_Response.java | 16 + .../response/SingleDataSeriseResponse.java | 16 + .../realnet/fnd/service/ExtFieldService.java | 26 + .../fnd/service/ExtFieldServiceImpl.java | 260 + .../fnd/service/FileStorageService.java | 136 + .../fnd/service/RnGroupMenuLineServiec.java | 19 + .../service/RnGroupMenuLineServiecImpl.java | 49 + .../service/Rn_DynamicTransactionService.java | 26 + .../Rn_DynamicTransactionServiceImpl.java | 105 + .../fnd/service/Rn_Forms_Setup_Service.java | 29 + .../service/Rn_Forms_Setup_ServiceImpl.java | 302 + .../service/Rn_Function_Register_Service.java | 21 + .../Rn_Function_Register_ServiceImpl.java | 81 + .../fnd/service/Rn_Main_Menu_Service.java | 25 + .../fnd/service/Rn_Main_Menu_ServiceImpl.java | 79 + .../fnd/service/Rn_Menu_Group_Service.java | 29 + .../service/Rn_Menu_Group_ServiceImpl.java | 86 + .../fnd/service/Rn_Menu_Register_Service.java | 19 + .../service/Rn_Menu_Register_ServiceImpl.java | 82 + .../service1/GrpMenuAccessServiceImpl.java | 25 + .../fnd/service1/MenuDetServiceImpl.java | 33 + .../fnd/service1/SecmenuDetailService.java | 135 + .../java/com/realnet/helper/CnsHelper.java | 222 + .../java/com/realnet/logging/LogEntity.java | 31 + .../com/realnet/logging/LogExecutionTime.java | 12 + .../com/realnet/logging/LoggingAspect.java | 145 + .../java/com/realnet/logging/NoLogging.java | 11 + .../realnet/logging/SecurityNoLogging.java | 11 + .../logging1/ExceptionLoggingController.java | 92 + .../PatternLayoutWithUserContext.java | 12 + .../realnet/logging1/SessionConverter.java | 18 + .../com/realnet/logging1/UserConverter.java | 18 + .../controller/AppUserLogController.java | 183 + .../controller/AppUserLogController2.java | 75 + .../realnet/logging1/entity/AppUserLog.java | 46 + .../repository/AppUserLogginRepository.java | 16 + .../logging1/service/LoggingService.java | 125 + .../realnet/rb/Controller/RbController.java | 73 + .../Rn_report_builder_Controller.java | 860 + .../Controller/servicereportcontroller.java | 72 + .../com/realnet/rb/entity/RnTableListDto.java | 37 + .../com/realnet/rb/entity/Rn_Rb_Adhoc.java | 77 + .../realnet/rb/entity/Rn_Rb_Date_String.java | 98 + .../realnet/rb/entity/Rn_Rb_Std_Param.java | 102 + .../realnet/rb/entity/Rn_Rb_Where_Param.java | 120 + .../com/realnet/rb/entity/Rn_rb_Column.java | 108 + .../com/realnet/rb/entity/Rn_rb_Tables.java | 77 + .../com/realnet/rb/entity/Rn_reportDTO.java | 14 + .../realnet/rb/entity/Rn_report_builder.java | 98 + .../realnet/rb/repository/RnTableDtoRepo.java | 17 + .../rb/repository/Rn_column_Repository.java | 22 + .../rb/repository/Rn_rb_adhoc_repository.java | 11 + .../Rn_rb_date_param_repository.java | 11 + .../rb/repository/Rn_rb_std_repository.java | 11 + .../Rn_rb_where_param_repository.java | 19 + .../Rn_report_builder_repository.java | 36 + .../rb/repository/Rn_tables_Repository.java | 21 + .../realnet/rb/response/MasterResponse.java | 15 + .../rb/response/Rn_adhocParamResponse.java | 19 + .../com/realnet/rb/response/Rn_columnDTO.java | 13 + .../rb/response/Rn_columnResponse.java | 19 + .../rb/response/Rn_dateParamResponse.java | 20 + .../response/Rn_report_builder_response.java | 17 + .../rb/response/Rn_stdParamResponse.java | 19 + .../realnet/rb/response/Rn_tableResponse.java | 19 + .../rb/response/Rn_whereParamResponse.java | 20 + .../rb/service/Rn_rb_adhoc_param_service.java | 10 + .../Rn_rb_adhoc_param_serviceImpl.java | 23 + .../rb/service/Rn_rb_column_service.java | 12 + .../rb/service/Rn_rb_column_serviceImpl.java | 31 + .../rb/service/Rn_rb_date_param_service.java | 10 + .../service/Rn_rb_date_param_serviceImpl.java | 24 + .../rb/service/Rn_rb_std_param_service.java | 10 + .../service/Rn_rb_std_param_serviceImpl.java | 24 + .../rb/service/Rn_rb_tables_service.java | 36 + .../rb/service/Rn_rb_tables_serviceImpl.java | 346 + .../rb/service/Rn_rb_where_param_service.java | 12 + .../Rn_rb_where_param_serviceImpl.java | 25 + .../rb/service/Rn_report_builder_service.java | 33 + .../Rn_report_builder_serviceIpml.java | 386 + .../realm/Controllers/RealmController.java | 75 + .../java/com/realnet/realm/Entity/Realm.java | 32 + .../realm/Repository/RealmRepository.java | 17 + .../realnet/realm/Services/RealmService.java | 67 + .../Controller/Report_buildercontroller.java | 144 + .../Entity/ReportQueryDataDTO.java | 14 + .../report_builder/Entity/Rp_Line.java | 40 + .../report_builder/Entity/Rp_Who_collumn.java | 46 + .../report_builder/Entity/Rp_builder.java | 69 + .../Repository/ReportRepository.java | 25 + .../Repository/Rp_lineRepository.java | 13 + .../Service/Report_builderService.java | 81 + .../session/Repository/TokenRepository.java | 16 + .../Service/TokenBlacklistService.java | 69 + .../session/controller/SessionController.java | 528 + .../com/realnet/session/entity/AboutWork.java | 32 + .../realnet/session/entity/SessionItem.java | 18 + .../com/realnet/session/entity/Token.java | 25 + .../realnet/session/entity/VersionModel.java | 11 + .../session/response/SessionResponse.java | 15 + .../sqlworkbech/Controller/SqlController.java | 74 + .../realnet/sqlworkbech/Entity/SqlModel.java | 29 + .../sqlworkbech/Repository/SqlRepository.java | 13 + .../Controller/StarCoderController.java | 22 + .../startCoder/Services/StarCoderService.java | 27 + .../Stepper_table_configController.java | 103 + .../Stepper_workflowController.java | 90 + .../Entity/Stepper_table_config.java | 30 + .../Entity/Stepper_workflow.java | 33 + .../Stepper_table_configRepository.java | 30 + .../Stepper_workflowRepository.java | 21 + .../Services/Stepper_table_configService.java | 90 + .../Services/Stepper_workflowService.java | 76 + .../controller/SysParamController.java | 218 + .../sysparameter/entity/SysParamEntity.java | 118 + .../sysparameter/entity/SysParamUpload.java | 46 + .../repository/SysParamRepository.java | 11 + .../repository/SysparamUploadRepo.java | 16 + .../response/SysParamResponse.java | 18 + .../sysparameter/service/SysParamService.java | 28 + .../service/SysParamServiceImpl.java | 175 + .../template/controller/Controller.java | 258 + .../controller/DynamicTemplateController.java | 332 + .../template/controller/ExcelController.java | 319 + .../controller/HtmlToPngController.java | 150 + .../controller/ImageUploadController.java | 111 + .../controller/ImportDataRequest.java | 25 + .../realnet/template/entity/ImageUpload.java | 34 + .../template/entity/TemplateFileUpload.java | 36 + .../template/repository/ImageUploadRepo.java | 11 + .../template/repository/TemplatedataRepo.java | 19 + .../realnet/template/service/CSVService.java | 58 + .../service/DynamicTemplateService.java | 105 + .../template/service/ExcelDataService.java | 96 + .../template/service/FileUploadService.java | 104 + .../template/service/ImageUploadService.java | 41 + .../java/com/realnet/userDTO/CompanyDto.java | 15 + .../main/java/com/realnet/userDTO/Email.java | 94 + .../com/realnet/userDTO/EmailRequest.java | 8 + .../main/java/com/realnet/userDTO/Login.java | 13 + .../java/com/realnet/userDTO/LoginUser.java | 37 + .../realnet/userDTO/PasswordResetRequest.java | 9 + .../java/com/realnet/userDTO/Provider.java | 5 + .../realnet/userDTO/Rn_Who_AccId_Column.java | 76 + .../com/realnet/userDTO/Rn_Who_Columns.java | 60 + .../main/java/com/realnet/userDTO/Role.java | 59 + .../com/realnet/userDTO/RoleUpdateDto.java | 36 + .../com/realnet/userDTO/Sys_Accounts.java | 23 + .../main/java/com/realnet/userDTO/User.java | 98 + .../java/com/realnet/userDTO/UserDto.java | 26 + .../com/realnet/userDTO/UserProfileDTO.java | 21 + .../controller/UserListController.java | 175 + .../realnet/userlist/entity/UserImage.java | 89 + .../com/realnet/userlist/entity/UserList.java | 411 + .../repository/UserImageRepository.java | 17 + .../repository/UserListRepository.java | 9 + .../userlist/service/UserListService.java | 20 + .../service/impl/UserListServiceImpl.java | 49 + .../users/controller/RoleController.java | 138 + .../users/controller/UserController.java | 432 + .../users/controller1/AppUserController.java | 366 + .../controller1/AppUserGrpController.java | 88 + .../controller1/AppuserSessionController.java | 61 + .../PositonAndDepartmentController.java | 53 + .../controller1/SysAccountController.java | 80 + .../controller1/WorkSpaceController1.java | 121 + .../com/realnet/users/entity/CompanyDto.java | 15 + .../users/entity/CustomUserDetails.java | 77 + .../java/com/realnet/users/entity/ERole.java | 14 + .../java/com/realnet/users/entity/Email.java | 89 + .../realnet/users/entity/EmailRequest.java | 8 + .../realnet/users/entity/GenericResponse.java | 20 + .../java/com/realnet/users/entity/Login.java | 15 + .../com/realnet/users/entity/LoginUser.java | 18 + .../users/entity/PasswordResetRequest.java | 16 + .../users/entity/PasswordResetToken.java | 52 + .../java/com/realnet/users/entity/Role.java | 98 + .../realnet/users/entity/RoleUpdateDto.java | 36 + .../realnet/users/entity/Sys_Accounts.java | 54 + .../com/realnet/users/entity/UserDto.java | 27 + .../realnet/users/entity/UserProfileDTO.java | 21 + .../com/realnet/users/entity1/AppUser.java | 172 + .../users/entity1/AppUserDepartment.java | 39 + .../com/realnet/users/entity1/AppUserDto.java | 25 + .../users/entity1/AppUserLoginHist.java | 42 + .../users/entity1/AppUserPasswlog.java | 45 + .../entity1/AppUserPasswlogCompositeKey.java | 27 + .../users/entity1/AppUserPosition.java | 31 + .../users/entity1/AppUserPrinciple.java | 105 + .../realnet/users/entity1/AppUserRole.java | 67 + .../users/entity1/AppUserSessions.java | 51 + .../entity1/AppUserSessionsCompositeKey.java | 26 + .../users/entity1/AppUser_who_column.java | 52 + .../realnet/users/entity1/Registration.java | 35 + .../com/realnet/users/entity1/SignUp.java | 24 + .../users/repository/AboutWorkRepo.java | 19 + .../realnet/users/repository/CompanyRepo.java | 10 + .../realnet/users/repository/RoleRepo.java | 15 + .../users/repository/SysAccountRepo.java | 13 + .../realnet/users/repository/UserRepo.java | 47 + .../AppUserDepartmentRepository.java | 11 + .../AppUserPositionRepository.java | 11 + .../users/repository1/AppUserRepository.java | 72 + .../repository1/AppUserRoleRepository.java | 11 + .../AppUserSessionsRepository.java | 20 + .../repository1/passwordTokenRepository.java | 23 + .../users/response/MessageResponse.java | 17 + .../users/response/ServiceResponse.java | 29 + .../com/realnet/users/response/UserItem.java | 12 + .../realnet/users/response/UserResponse.java | 15 + .../users/service/AboutServiceImple.java | 132 + .../users/service/AboutWorkService.java | 23 + .../realnet/users/service/CompanyService.java | 21 + .../users/service/CompanyServiceImpl.java | 98 + .../realnet/users/service/RoleService.java | 29 + .../users/service/RoleServiceImpl.java | 173 + .../realnet/users/service/UserService.java | 94 + .../service1/AppUserRoleServiceImpl.java | 44 + .../users/service1/AppUserService.java | 85 + .../users/service1/AppUserServiceImpl.java | 709 + .../service1/AppUserSessionsServiceImpl.java | 23 + .../PositionAndDepartmentServiceImpl.java | 37 + .../users/service1/SysAccountService.java | 95 + .../main/java/com/realnet/utils/Constant.java | 283 + .../java/com/realnet/utils/Port_Constant.java | 113 + .../com/realnet/utils/WireFrameConstant.java | 54 + .../resources/MyprojectUI_view.properties | 0 .../src/main/resources/application.properties | 105 + .../backend/src/main/resources/banner_txt.txt | 11 + .../backend/src/main/resources/data.sql | 2023 +++ .../backend/src/main/resources/logback.xml | 108 + .../src/main/resources/messages.properties | 5 + .../backend/src/main/resources/note.txt | 57 + .../backend/src/main/resources/schema.sql | 303 + .../backend/target/app-1.0.0.jar.original | Bin 0 -> 601816 bytes .../target/classes/META-INF/MANIFEST.MF | 6 + .../maven/com.realnet/app/pom.properties | 7 + .../META-INF/maven/com.realnet/app/pom.xml | 415 + .../classes/MyprojectUI_view.properties | 0 .../target/classes/application.properties | 100 + .../backend/target/classes/banner_txt.txt | 11 + .../Controllers/AccesstypeController.class | Bin 0 -> 3142 bytes .../Controllers/AgyanaController.class | Bin 0 -> 1315 bytes .../Controllers/AraniController.class | Bin 0 -> 2456 bytes .../TokenFreeAccesstypeController.class | Bin 0 -> 3089 bytes .../Accesstype_back/Entity/Accesstype.class | Bin 0 -> 3240 bytes .../Accesstype_back/Entity/Agyana.class | Bin 0 -> 3761 bytes .../Accesstype_back/Entity/Arani.class | Bin 0 -> 3238 bytes .../Repository/AccesstypeRepository.class | Bin 0 -> 468 bytes .../Repository/AgyanaRepository.class | Bin 0 -> 456 bytes .../Repository/AraniRepository.class | Bin 0 -> 453 bytes .../Services/AccesstypeService.class | Bin 0 -> 2222 bytes .../Services/AraniService.class | Bin 0 -> 2216 bytes .../ApprovalHistory_Controller.class | Bin 0 -> 2598 bytes .../ApprovalQueue_Controller.class | Bin 0 -> 5286 bytes .../realnet/Billing/Dto/ApprovalNote_SO.class | Bin 0 -> 4753 bytes .../Billing/Dto/ApprovalQueue_SO.class | Bin 0 -> 7459 bytes .../Billing/Dto/BillingPeriodsResponse.class | Bin 0 -> 2502 bytes .../realnet/Billing/Dto/ServiceOrderDto.class | Bin 0 -> 7357 bytes .../Billing/Dto/ServiceWithDiscount.class | Bin 0 -> 10918 bytes .../Billing/Entitys/ApprovalHistory_t.class | Bin 0 -> 4864 bytes .../Billing/Entitys/BillingPeriods_t.class | Bin 0 -> 3864 bytes .../Billing/Entitys/CustomerRates_t.class | Bin 0 -> 7476 bytes .../Billing/Job/Entity/BillingJobEntity.class | Bin 0 -> 4541 bytes .../Job/Repository/BillingJobRepository.class | Bin 0 -> 753 bytes .../ApprovalHistory_Repository.class | Bin 0 -> 473 bytes .../ApprovalQueue_Repository.class | Bin 0 -> 656 bytes .../ApprovalReturnHistory_Repo.class | Bin 0 -> 467 bytes .../Services/ApprovalHistory_Service.class | Bin 0 -> 2443 bytes .../Services/ApprovalQueueService.class | Bin 0 -> 1855 bytes .../Builders/Entity/Builder_entity_t.class | Bin 0 -> 2859 bytes .../Builders/Repos/BuilderRepository.class | Bin 0 -> 790 bytes .../Builders/Services/BuilderService.class | Bin 0 -> 42862 bytes .../Controllers/BulkUpload_Controller.class | Bin 0 -> 2551 bytes .../Controllers/DataImportController$1.class | Bin 0 -> 1000 bytes .../Controllers/DataImportController$2.class | Bin 0 -> 965 bytes .../Controllers/DataImportController$3.class | Bin 0 -> 940 bytes .../Controllers/DataImportController.class | Bin 0 -> 35763 bytes .../Controllers/MappingRuleController.class | Bin 0 -> 5709 bytes .../Controllers/MasterImportController.class | Bin 0 -> 27169 bytes .../BulkUpload/Entity/BulkUpload_t.class | Bin 0 -> 4206 bytes .../BulkUpload/Entity/MappingRule.class | Bin 0 -> 4223 bytes .../Repository/BulkUpload_Repository.class | Bin 0 -> 741 bytes .../Repository/MappingRuleRepository.class | Bin 0 -> 461 bytes .../Services/BulkUpload_Service.class | Bin 0 -> 2327 bytes .../Services/MappingRuleService.class | Bin 0 -> 2325 bytes .../Service/SurevaultService.class | Bin 0 -> 4899 bytes .../Controller/Dashbord1Controller.class | Bin 0 -> 4817 bytes .../Dashboard1/Entity/Dashbord1_Line.class | Bin 0 -> 3834 bytes .../Dashboard1/Entity/Dashbord_Header.class | Bin 0 -> 8774 bytes .../Entity/dashbord_Who_collumn.class | Bin 0 -> 4471 bytes .../Repository/Dashboard_lineRepository.class | Bin 0 -> 987 bytes .../Repository/HeaderRepository.class | Bin 0 -> 1209 bytes .../Dashboard1/Service/HeaderService.class | Bin 0 -> 3383 bytes .../Controllers/ChartBuilder.class | Bin 0 -> 16369 bytes .../DashboardSchedule_Controller.class | Bin 0 -> 2740 bytes .../Dashboard_builder_Controller.class | Bin 0 -> 2855 bytes .../Entity/DashboardSchedule_t.class | Bin 0 -> 7829 bytes .../Entity/Dashboard_builder_t.class | Bin 0 -> 2465 bytes .../DashboardSchedule_Repository.class | Bin 0 -> 816 bytes .../Dashboard_builder_Repository.class | Bin 0 -> 497 bytes .../Services/DashboardSchedule_Service.class | Bin 0 -> 2791 bytes .../Services/Dashboard_builder_Service.class | Bin 0 -> 2310 bytes .../Controllers/AngularHtmlCode.class | Bin 0 -> 1489 bytes .../Controllers/FabricIcardController.class | Bin 0 -> 2557 bytes .../FabricIcard/Controllers/LayoutPdf.class | Bin 0 -> 10684 bytes .../Controllers/PageController.class | Bin 0 -> 1446 bytes .../FabricIcard/Entity/FabricIcard.class | Bin 0 -> 4789 bytes .../FabricIcard/Entity/PageSource.class | Bin 0 -> 2396 bytes .../Repository/FabricIcardRepository.class | Bin 0 -> 463 bytes .../Repository/PageSourceRepository.class | Bin 0 -> 460 bytes .../Services/FabricIcardService.class | Bin 0 -> 2305 bytes .../Services/LayoutPdfService.class | Bin 0 -> 9010 bytes .../FabricIcardLinesController.class | Bin 0 -> 4035 bytes .../Controllers/JsonKeysController.class | Bin 0 -> 5812 bytes .../FabricIcardLines/Entity/Dummyfabric.class | Bin 0 -> 2120 bytes .../Entity/FabricIcardLines.class | Bin 0 -> 6241 bytes .../FabricIcardLinesRepository.class | Bin 0 -> 784 bytes .../Services/FabricIcardLinesService.class | Bin 0 -> 5180 bytes .../Controllers/UploadeddocsController.class | Bin 0 -> 11058 bytes .../FileUpload/Entity/Uploadeddocs.class | Bin 0 -> 3970 bytes .../Repository/UploadFileRepository.class | Bin 0 -> 883 bytes .../Services/FileuploadService.class | Bin 0 -> 3145 bytes .../Services/UploadedFileService.class | Bin 0 -> 2528 bytes .../FileUpload/helper/Fileupload_helper.class | Bin 0 -> 2666 bytes .../FromExtensionJson_Controller.class | Bin 0 -> 4734 bytes .../Entity/FromExtensionJson_t.class | Bin 0 -> 3427 bytes .../FromExtensionJson_Repository.class | Bin 0 -> 1052 bytes .../Services/FromExtensionJson_Service.class | Bin 0 -> 2430 bytes .../Gaurav_testing_Controller.class | Bin 0 -> 3064 bytes .../Entity/Gaurav_testing_t.class | Bin 0 -> 4500 bytes .../Gaurav_testing_Repository.class | Bin 0 -> 574 bytes .../Services/Gaurav_testing_Service.class | Bin 0 -> 2901 bytes .../Controllers/Modules_tController.class | Bin 0 -> 2572 bytes .../Modules_t_back/Entity/Modules_t.class | Bin 0 -> 3927 bytes .../Repository/Modules_tRepository.class | Bin 0 -> 463 bytes .../Services/Modules_tService.class | Bin 0 -> 2425 bytes .../Component/WhoColumnAspect.class | Bin 0 -> 3315 bytes .../Services/TimezoneService.class | Bin 0 -> 1293 bytes .../Controller/NotController.class | Bin 0 -> 1186 bytes .../Notification/Entity/NotEntity.class | Bin 0 -> 3297 bytes .../Notification/Repository/NotRepo.class | Bin 0 -> 710 bytes .../Services/NotificationEntityService.class | Bin 0 -> 2650 bytes .../OpenAi/Controller/OpenAiController.class | Bin 0 -> 1708 bytes .../com/realnet/OpenAi/Models/openAi.class | Bin 0 -> 1598 bytes .../OpenAi/Services/OpenAiServices.class | Bin 0 -> 2649 bytes .../com/realnet/Payment/Paytm/AppConfig.class | Bin 0 -> 472 bytes .../realnet/Payment/Paytm/PaytmPayment.class | Bin 0 -> 4953 bytes .../Payment/Razorpay/RazorpayController.class | Bin 0 -> 6153 bytes .../RazorpayDTO$RazorpayDTOBuilder.class | Bin 0 -> 1798 bytes .../Payment/Razorpay/RazorpayDTO.class | Bin 0 -> 3300 bytes .../Payment/Razorpay/RazorpayRepo.class | Bin 0 -> 566 bytes .../classes/com/realnet/RealNetApp.class | Bin 0 -> 1528 bytes .../Controllers/FileConverterController.class | Bin 0 -> 9618 bytes .../Controllers/Rpt_builder_Controller.class | Bin 0 -> 2578 bytes .../Rpt_builder/Entity/Rpt_builder_t.class | Bin 0 -> 5070 bytes .../Repository/Rpt_builder_Repository.class | Bin 0 -> 467 bytes .../Services/Rpt_builder_Service.class | Bin 0 -> 2565 bytes .../Controllers/ReportHtmlController.class | Bin 0 -> 3427 bytes .../Controllers/RpDownloadController.class | Bin 0 -> 9591 bytes .../Controllers/Rpt_builder2_Controller.class | Bin 0 -> 2605 bytes .../Rpt_builder2/Entity/Rpt_builder2_t.class | Bin 0 -> 5050 bytes .../Repository/Rpt_builder2_Repository.class | Bin 0 -> 472 bytes .../Services/Rpt_builder2_Service.class | Bin 0 -> 2350 bytes .../Rpt_builder2_lines_Controller.class | Bin 0 -> 7737 bytes .../Entity/Rpt_builder2_lines_t.class | Bin 0 -> 3687 bytes .../Rpt_builder2_lines_Repository.class | Bin 0 -> 814 bytes .../Services/Rpt_builder2_lines_Service.class | Bin 0 -> 2381 bytes .../Controller/SequenceController.class | Bin 0 -> 6240 bytes .../SequenceGenerator/Entity/Sequence.class | Bin 0 -> 7115 bytes .../Service/SequenceService.class | Bin 0 -> 2915 bytes .../SequenceGenerator/repo/SeqRepo.class | Bin 0 -> 695 bytes .../realnet/WhoColumn/Entity/Extension.class | Bin 0 -> 8562 bytes .../realnet/WhoColumn/Entity/Who_column.class | Bin 0 -> 4429 bytes .../WhoColumn/Services/WhoColumnService.class | Bin 0 -> 2424 bytes .../Api_registery_headerController.class | Bin 0 -> 3927 bytes .../Api_registery_lineController.class | Bin 0 -> 4293 bytes .../Controllers/GeneratetokenController.class | Bin 0 -> 2061 bytes .../Entity/Api_registery_header.class | Bin 0 -> 2548 bytes .../Entity/Api_registery_line.class | Bin 0 -> 3479 bytes .../Entity/Token_registery.class | Bin 0 -> 3013 bytes .../Api_registery_headerRepository.class | Bin 0 -> 494 bytes .../Api_registery_lineRepository.class | Bin 0 -> 852 bytes .../Token_registery_Repository.class | Bin 0 -> 839 bytes .../Api_registery_headerService.class | Bin 0 -> 3032 bytes .../Services/Api_registery_lineService.class | Bin 0 -> 3605 bytes .../Services/GeneratetokenService.class | Bin 0 -> 5718 bytes .../com/realnet/config/AppConfig.class | Bin 0 -> 1769 bytes .../com/realnet/config/CorsFilter.class | Bin 0 -> 2206 bytes .../com/realnet/config/EmailService.class | Bin 0 -> 6417 bytes .../com/realnet/config/JWTConstant.class | Bin 0 -> 1193 bytes .../config/JwtAuthenticationEntryPoint.class | Bin 0 -> 1361 bytes .../config/JwtAuthenticationFilter.class | Bin 0 -> 8191 bytes .../realnet/config/MessageSourceConfig.class | Bin 0 -> 1423 bytes .../realnet/config/MyCommandLineRunner.class | Bin 0 -> 2026 bytes .../com/realnet/config/SecurityConfig.class | Bin 0 -> 14056 bytes .../com/realnet/config/SwaggerConfig$1.class | Bin 0 -> 1483 bytes .../com/realnet/config/SwaggerConfig.class | Bin 0 -> 5684 bytes .../com/realnet/config/TokenProvider.class | Bin 0 -> 7799 bytes .../Controllers/DashboardController.class | Bin 0 -> 3064 bytes .../Entity/Dashboard.class | Bin 0 -> 3387 bytes .../Repository/DashboardRepository.class | Bin 0 -> 488 bytes .../Services/DashboardService.class | Bin 0 -> 2407 bytes .../Event_ManagementController.class | Bin 0 -> 4128 bytes .../Entity/Event_Management.class | Bin 0 -> 5357 bytes .../Event_ManagementRepository.class | Bin 0 -> 491 bytes .../Services/Event_ManagementService.class | Bin 0 -> 3067 bytes .../exceptions/GlobalExceptionHandler.class | Bin 0 -> 3373 bytes .../exceptions/InvalidUserDataException.class | Bin 0 -> 511 bytes ...OperationResponse$ResponseStatusEnum.class | Bin 0 -> 1482 bytes .../exceptions/OperationResponse.class | Bin 0 -> 2685 bytes .../ResourceNotFoundException.class | Bin 0 -> 676 bytes .../realnet/exceptions/StorageException.class | Bin 0 -> 842 bytes .../fnd/controller/MainController.class | Bin 0 -> 654 bytes .../Rn_DynamicTransactionController.class | Bin 0 -> 6857 bytes .../controller/Rn_ExtensionController.class | Bin 0 -> 7870 bytes .../Rn_Forms_Setup_Controller.class | Bin 0 -> 6509 bytes .../Rn_Function_Register_Controller.class | Bin 0 -> 6074 bytes .../controller/Rn_Main_Menu_Controller.class | Bin 0 -> 6382 bytes .../controller/Rn_Menu_Group_Controller.class | Bin 0 -> 10860 bytes .../Rn_Menu_Group_Line_Controller.class | Bin 0 -> 2805 bytes .../Rn_Menu_Register_Controller.class | Bin 0 -> 6598 bytes .../fnd/controller1/LoadMenuController.class | Bin 0 -> 10186 bytes .../fnd/controller1/MenuController.class | Bin 0 -> 15038 bytes .../fnd/controller1/QueryController.class | Bin 0 -> 4409 bytes .../fnd/controller1/TokenFreeController.class | Bin 0 -> 2282 bytes .../com/realnet/fnd/entity/DropDownDTO.class | Bin 0 -> 1238 bytes .../com/realnet/fnd/entity/Error.class | Bin 0 -> 1287 bytes .../com/realnet/fnd/entity/ErrorPojo.class | Bin 0 -> 1307 bytes .../realnet/fnd/entity/ModuleCopyDTO.class | Bin 0 -> 2337 bytes .../com/realnet/fnd/entity/Modulemini.class | Bin 0 -> 188 bytes .../com/realnet/fnd/entity/ProjectMini.class | Bin 0 -> 191 bytes .../realnet/fnd/entity/Rn_AuditEntity.class | Bin 0 -> 2278 bytes .../fnd/entity/Rn_Dynamic_Transaction.class | Bin 0 -> 9769 bytes .../realnet/fnd/entity/Rn_Ext_Fields.class | Bin 0 -> 5172 bytes .../fnd/entity/Rn_ExtensionEntity.class | Bin 0 -> 4595 bytes .../realnet/fnd/entity/Rn_FlexEntity.class | Bin 0 -> 1906 bytes .../fnd/entity/Rn_Forms_Component_Setup.class | Bin 0 -> 3279 bytes .../realnet/fnd/entity/Rn_Forms_Setup.class | Bin 0 -> 3007 bytes .../fnd/entity/Rn_Function_Register.class | Bin 0 -> 2898 bytes .../realnet/fnd/entity/Rn_Instance_Type.class | Bin 0 -> 1298 bytes .../realnet/fnd/entity/Rn_Lookup_Values.class | Bin 0 -> 3127 bytes .../com/realnet/fnd/entity/Rn_Main_Menu.class | Bin 0 -> 3257 bytes .../fnd/entity/Rn_Menu_Group_Header.class | Bin 0 -> 4757 bytes .../fnd/entity/Rn_Menu_Group_Line.class | Bin 0 -> 3313 bytes .../realnet/fnd/entity/Rn_Menu_Register.class | Bin 0 -> 2897 bytes .../com/realnet/fnd/entity/Rn_Sub_Menu.class | Bin 0 -> 2721 bytes .../fnd/entity/Rn_Who_AccId_Column.class | Bin 0 -> 2262 bytes .../realnet/fnd/entity/Rn_Who_Columns.class | Bin 0 -> 2009 bytes .../com/realnet/fnd/entity/SingleSerise.class | Bin 0 -> 2263 bytes .../com/realnet/fnd/entity/Success.class | Bin 0 -> 1293 bytes .../com/realnet/fnd/entity/SuccessPojo.class | Bin 0 -> 1327 bytes .../com/realnet/fnd/entity/Version.class | Bin 0 -> 1461 bytes .../realnet/fnd/entity/WireFrameCopyDTO.class | Bin 0 -> 2633 bytes .../realnet/fnd/entity/projectCopyDTO.class | Bin 0 -> 2528 bytes .../realnet/fnd/entity1/ExtensionModel.class | Bin 0 -> 11033 bytes .../realnet/fnd/entity1/GrpMenuAccess.class | Bin 0 -> 9777 bytes .../entity1/GrpMenuAccesscompositeKey.class | Bin 0 -> 2484 bytes .../com/realnet/fnd/entity1/MIXMENUN.class | Bin 0 -> 7316 bytes .../com/realnet/fnd/entity1/MenuDet.class | Bin 0 -> 4847 bytes .../com/realnet/fnd/entity1/MixMenu.class | Bin 0 -> 7741 bytes .../com/realnet/fnd/entity1/MixMenuNew.class | Bin 0 -> 426 bytes .../com/realnet/fnd/entity1/Query.class | Bin 0 -> 2941 bytes .../com/realnet/fnd/entity1/menudet_who.class | Bin 0 -> 2850 bytes .../fnd/repository/ExtFieldRepository.class | Bin 0 -> 1017 bytes .../fnd/repository/LookUpRepository.class | Bin 0 -> 848 bytes .../repository/RnGroupLineRepository.class | Bin 0 -> 371 bytes .../Rn_DynamicTransactionRepository.class | Bin 0 -> 1199 bytes .../Rn_Forms_Setup_Repository.class | Bin 0 -> 879 bytes .../Rn_Function_Register_Repository.class | Bin 0 -> 1162 bytes .../Rn_InstanceTypeRepository.class | Bin 0 -> 463 bytes .../fnd/repository/Rn_LookUpRepository.class | Bin 0 -> 1313 bytes .../repository/Rn_Main_Menu_Repository.class | Bin 0 -> 1169 bytes .../repository/Rn_Menu_Group_Repository.class | Bin 0 -> 462 bytes .../Rn_Menu_Register_Repository.class | Bin 0 -> 1193 bytes .../repository1/GrpMenuAccessRepository.class | Bin 0 -> 4671 bytes .../fnd/repository1/MenuDetRepository.class | Bin 0 -> 10425 bytes .../fnd/repository1/QueryRepository.class | Bin 0 -> 431 bytes .../realnet/fnd/response/CustomResponse.class | Bin 0 -> 2088 bytes .../realnet/fnd/response/EntityResponse.class | Bin 0 -> 1629 bytes ...OperationResponse$ResponseStatusEnum.class | Bin 0 -> 1496 bytes .../fnd/response/OperationResponse.class | Bin 0 -> 2697 bytes .../realnet/fnd/response/PageResponse.class | Bin 0 -> 3875 bytes .../Rn_DynamicTransactionResponse.class | Bin 0 -> 2232 bytes .../fnd/response/Rn_Forms_SetupResponse.class | Bin 0 -> 2180 bytes .../Rn_Function_Register_Response.class | Bin 0 -> 2226 bytes .../fnd/response/Rn_Main_Menu_Response.class | Bin 0 -> 2170 bytes .../fnd/response/Rn_Menu_Group_Response.class | Bin 0 -> 2198 bytes .../response/Rn_Menu_Register_Response.class | Bin 0 -> 2198 bytes .../response/SingleDataSeriseResponse.class | Bin 0 -> 2066 bytes .../realnet/fnd/service/ExtFieldService.class | Bin 0 -> 966 bytes .../fnd/service/ExtFieldServiceImpl.class | Bin 0 -> 6818 bytes .../fnd/service/FileStorageService.class | Bin 0 -> 4008 bytes .../fnd/service/RnGroupMenuLineServiec.class | Bin 0 -> 551 bytes .../service/RnGroupMenuLineServiecImpl.class | Bin 0 -> 2045 bytes .../Rn_DynamicTransactionService.class | Bin 0 -> 1137 bytes .../Rn_DynamicTransactionServiceImpl.class | Bin 0 -> 6717 bytes .../fnd/service/Rn_Forms_Setup_Service.class | Bin 0 -> 1251 bytes .../service/Rn_Forms_Setup_ServiceImpl.class | Bin 0 -> 13075 bytes .../Rn_Function_Register_Service.class | Bin 0 -> 1096 bytes .../Rn_Function_Register_ServiceImpl.class | Bin 0 -> 4866 bytes .../fnd/service/Rn_Main_Menu_Service.class | Bin 0 -> 1063 bytes .../service/Rn_Main_Menu_ServiceImpl.class | Bin 0 -> 4981 bytes .../fnd/service/Rn_Menu_Group_Service.class | Bin 0 -> 985 bytes .../service/Rn_Menu_Group_ServiceImpl.class | Bin 0 -> 4480 bytes .../service/Rn_Menu_Register_Service.class | Bin 0 -> 1092 bytes .../Rn_Menu_Register_ServiceImpl.class | Bin 0 -> 5124 bytes .../service1/GrpMenuAccessServiceImpl.class | Bin 0 -> 1444 bytes .../fnd/service1/MenuDetServiceImpl.class | Bin 0 -> 1944 bytes .../fnd/service1/SecmenuDetailService.class | Bin 0 -> 5892 bytes .../com/realnet/logging/LogEntity.class | Bin 0 -> 3811 bytes .../realnet/logging/LogExecutionTime.class | Bin 0 -> 405 bytes .../com/realnet/logging/LoggingAspect.class | Bin 0 -> 6044 bytes .../com/realnet/logging/NoLogging.class | Bin 0 -> 391 bytes .../realnet/logging/SecurityNoLogging.class | Bin 0 -> 405 bytes .../PatternLayoutWithUserContext.class | Bin 0 -> 799 bytes .../realnet/logging1/SessionConverter.class | Bin 0 -> 1152 bytes .../com/realnet/logging1/UserConverter.class | Bin 0 -> 1262 bytes .../controller/AppUserLogController$1.class | Bin 0 -> 1089 bytes .../controller/AppUserLogController$2.class | Bin 0 -> 1089 bytes .../controller/AppUserLogController$3.class | Bin 0 -> 1099 bytes .../controller/AppUserLogController$4.class | Bin 0 -> 1089 bytes .../controller/AppUserLogController$5.class | Bin 0 -> 1089 bytes .../controller/AppUserLogController$6.class | Bin 0 -> 1082 bytes .../controller/AppUserLogController.class | Bin 0 -> 6319 bytes .../controller/AppUserLogController2.class | Bin 0 -> 4277 bytes .../realnet/logging1/entity/AppUserLog.class | Bin 0 -> 6761 bytes .../repository/AppUserLogginRepository.class | Bin 0 -> 654 bytes .../logging1/service/LoggingService.class | Bin 0 -> 6104 bytes .../realnet/rb/Controller/RbController.class | Bin 0 -> 3233 bytes .../Rn_report_builder_Controller.class | Bin 0 -> 37016 bytes .../Controller/servicereportcontroller.class | Bin 0 -> 4238 bytes .../realnet/rb/entity/RnTableListDto.class | Bin 0 -> 1071 bytes .../com/realnet/rb/entity/Rn_Rb_Adhoc.class | Bin 0 -> 1940 bytes .../realnet/rb/entity/Rn_Rb_Date_String.class | Bin 0 -> 2040 bytes .../realnet/rb/entity/Rn_Rb_Std_Param.class | Bin 0 -> 2193 bytes .../realnet/rb/entity/Rn_Rb_Where_Param.class | Bin 0 -> 3093 bytes .../com/realnet/rb/entity/Rn_rb_Column.class | Bin 0 -> 2407 bytes .../com/realnet/rb/entity/Rn_rb_Tables.class | Bin 0 -> 1688 bytes .../com/realnet/rb/entity/Rn_reportDTO.class | Bin 0 -> 3026 bytes .../realnet/rb/entity/Rn_report_builder.class | Bin 0 -> 10724 bytes .../rb/repository/RnTableDtoRepo.class | Bin 0 -> 437 bytes .../rb/repository/Rn_column_Repository.class | Bin 0 -> 996 bytes .../repository/Rn_rb_adhoc_repository.class | Bin 0 -> 450 bytes .../Rn_rb_date_param_repository.class | Bin 0 -> 466 bytes .../rb/repository/Rn_rb_std_repository.class | Bin 0 -> 450 bytes .../Rn_rb_where_param_repository.class | Bin 0 -> 887 bytes .../Rn_report_builder_repository.class | Bin 0 -> 2038 bytes .../rb/repository/Rn_tables_Repository.class | Bin 0 -> 857 bytes .../realnet/rb/response/MasterResponse.class | Bin 0 -> 2083 bytes .../rb/response/Rn_adhocParamResponse.class | Bin 0 -> 2119 bytes .../realnet/rb/response/Rn_columnDTO.class | Bin 0 -> 1916 bytes .../rb/response/Rn_columnResponse.class | Bin 0 -> 2106 bytes .../rb/response/Rn_dateParamResponse.class | Bin 0 -> 2133 bytes .../response/Rn_report_builder_response.class | Bin 0 -> 2200 bytes .../rb/response/Rn_stdParamResponse.class | Bin 0 -> 2123 bytes .../rb/response/Rn_tableResponse.class | Bin 0 -> 2102 bytes .../rb/response/Rn_whereParamResponse.class | Bin 0 -> 2137 bytes .../service/Rn_rb_adhoc_param_service.class | Bin 0 -> 379 bytes .../Rn_rb_adhoc_param_serviceImpl.class | Bin 0 -> 1224 bytes .../rb/service/Rn_rb_column_service.class | Bin 0 -> 506 bytes .../rb/service/Rn_rb_column_serviceImpl.class | Bin 0 -> 1524 bytes .../rb/service/Rn_rb_date_param_service.class | Bin 0 -> 389 bytes .../Rn_rb_date_param_serviceImpl.class | Bin 0 -> 1248 bytes .../rb/service/Rn_rb_std_param_service.class | Bin 0 -> 383 bytes .../service/Rn_rb_std_param_serviceImpl.class | Bin 0 -> 1224 bytes .../rb/service/Rn_rb_tables_service.class | Bin 0 -> 1516 bytes .../rb/service/Rn_rb_tables_serviceImpl.class | Bin 0 -> 14102 bytes .../service/Rn_rb_where_param_service.class | Bin 0 -> 391 bytes .../Rn_rb_where_param_serviceImpl.class | Bin 0 -> 1254 bytes .../service/Rn_report_builder_service.class | Bin 0 -> 1624 bytes .../Rn_report_builder_serviceIpml.class | Bin 0 -> 13630 bytes .../realm/Controllers/RealmController.class | Bin 0 -> 3545 bytes .../com/realnet/realm/Entity/Realm.class | Bin 0 -> 4437 bytes .../realm/Repository/RealmRepository.class | Bin 0 -> 757 bytes .../realnet/realm/Services/RealmService.class | Bin 0 -> 3068 bytes .../Controller/Report_buildercontroller.class | Bin 0 -> 6221 bytes .../Entity/ReportQueryDataDTO.class | Bin 0 -> 2965 bytes .../report_builder/Entity/Rp_Line.class | Bin 0 -> 3743 bytes .../Entity/Rp_Who_collumn.class | Bin 0 -> 4455 bytes .../report_builder/Entity/Rp_builder.class | Bin 0 -> 7244 bytes .../Repository/ReportRepository.class | Bin 0 -> 1163 bytes .../Repository/Rp_lineRepository.class | Bin 0 -> 557 bytes .../Service/Report_builderService.class | Bin 0 -> 3877 bytes .../session/Repository/TokenRepository.class | Bin 0 -> 650 bytes .../Service/TokenBlacklistService.class | Bin 0 -> 4134 bytes .../controller/SessionController.class | Bin 0 -> 21671 bytes .../realnet/session/entity/AboutWork.class | Bin 0 -> 5732 bytes .../realnet/session/entity/SessionItem.class | Bin 0 -> 4755 bytes .../com/realnet/session/entity/Token.class | Bin 0 -> 3810 bytes .../realnet/session/entity/VersionModel.class | Bin 0 -> 3114 bytes .../session/response/SessionResponse.class | Bin 0 -> 1966 bytes .../Controller/SqlController.class | Bin 0 -> 3781 bytes .../realnet/sqlworkbech/Entity/SqlModel.class | Bin 0 -> 5641 bytes .../Repository/SqlRepository.class | Bin 0 -> 444 bytes .../Controller/StarCoderController.class | Bin 0 -> 1129 bytes .../Services/StarCoderService.class | Bin 0 -> 2058 bytes .../controller/SysParamController.class | Bin 0 -> 12164 bytes .../sysparameter/entity/SysParamEntity.class | Bin 0 -> 13036 bytes .../sysparameter/entity/SysParamUpload.class | Bin 0 -> 5625 bytes .../repository/SysParamRepository.class | Bin 0 -> 465 bytes .../repository/SysparamUploadRepo.class | Bin 0 -> 802 bytes .../response/SysParamResponse.class | Bin 0 -> 2243 bytes .../service/SysParamService.class | Bin 0 -> 1172 bytes .../service/SysParamServiceImpl.class | Bin 0 -> 9124 bytes .../DynamicTemplateController.class | Bin 0 -> 17588 bytes .../template/controller/ExcelController.class | Bin 0 -> 10488 bytes .../controller/HtmlToPngController.class | Bin 0 -> 3459 bytes .../controller/ImageUploadController.class | Bin 0 -> 5239 bytes .../controller/ImportDataRequest.class | Bin 0 -> 1185 bytes .../realnet/template/entity/ImageUpload.class | Bin 0 -> 4079 bytes .../template/entity/TemplateFileUpload.class | Bin 0 -> 7990 bytes .../template/repository/ImageUploadRepo.class | Bin 0 -> 445 bytes .../repository/TemplatedataRepo.class | Bin 0 -> 965 bytes .../realnet/template/service/CSVService.class | Bin 0 -> 3523 bytes .../service/DynamicTemplateService.class | Bin 0 -> 3268 bytes .../template/service/FileUploadService.class | Bin 0 -> 4922 bytes .../template/service/ImageUploadService.class | Bin 0 -> 1972 bytes .../com/realnet/userDTO/CompanyDto.class | Bin 0 -> 3127 bytes .../classes/com/realnet/userDTO/Email.class | Bin 0 -> 2063 bytes .../com/realnet/userDTO/EmailRequest.class | Bin 0 -> 1603 bytes .../classes/com/realnet/userDTO/Login.class | Bin 0 -> 2079 bytes .../com/realnet/userDTO/LoginUser.class | Bin 0 -> 780 bytes .../userDTO/PasswordResetRequest.class | Bin 0 -> 2151 bytes .../com/realnet/userDTO/Provider.class | Bin 0 -> 1090 bytes .../realnet/userDTO/Rn_Who_AccId_Column.class | Bin 0 -> 2256 bytes .../com/realnet/userDTO/Rn_Who_Columns.class | Bin 0 -> 2003 bytes .../classes/com/realnet/userDTO/Role.class | Bin 0 -> 1917 bytes .../com/realnet/userDTO/RoleUpdateDto.class | Bin 0 -> 1143 bytes .../com/realnet/userDTO/Sys_Accounts.class | Bin 0 -> 3825 bytes .../classes/com/realnet/userDTO/User.class | Bin 0 -> 19578 bytes .../classes/com/realnet/userDTO/UserDto.class | Bin 0 -> 5762 bytes .../com/realnet/userDTO/UserProfileDTO.class | Bin 0 -> 3544 bytes .../controller/UserListController.class | Bin 0 -> 7439 bytes .../realnet/userlist/entity/UserImage.class | Bin 0 -> 1993 bytes .../realnet/userlist/entity/UserList.class | Bin 0 -> 9267 bytes .../repository/UserImageRepository.class | Bin 0 -> 661 bytes .../repository/UserListRepository.class | Bin 0 -> 362 bytes .../userlist/service/UserListService.class | Bin 0 -> 593 bytes .../service/impl/UserListServiceImpl.class | Bin 0 -> 2320 bytes .../users/controller/RoleController.class | Bin 0 -> 4594 bytes .../users/controller/UserController.class | Bin 0 -> 12780 bytes .../users/controller1/AppUserController.class | Bin 0 -> 15316 bytes .../controller1/AppUserGrpController.class | Bin 0 -> 4443 bytes .../AppuserSessionController.class | Bin 0 -> 2828 bytes .../PositonAndDepartmentController.class | Bin 0 -> 3108 bytes .../controller1/SysAccountController.class | Bin 0 -> 3354 bytes .../com/realnet/users/entity/CompanyDto.class | Bin 0 -> 3137 bytes .../com/realnet/users/entity/ERole.class | Bin 0 -> 1548 bytes .../com/realnet/users/entity/Email.class | Bin 0 -> 1910 bytes .../realnet/users/entity/EmailRequest.class | Bin 0 -> 1613 bytes .../users/entity/GenericResponse.class | Bin 0 -> 632 bytes .../com/realnet/users/entity/Login.class | Bin 0 -> 2238 bytes .../com/realnet/users/entity/LoginUser.class | Bin 0 -> 2054 bytes .../users/entity/PasswordResetRequest.class | Bin 0 -> 4601 bytes .../users/entity/PasswordResetToken.class | Bin 0 -> 3900 bytes .../com/realnet/users/entity/Role.class | Bin 0 -> 3905 bytes .../realnet/users/entity/RoleUpdateDto.class | Bin 0 -> 1384 bytes .../realnet/users/entity/Sys_Accounts.class | Bin 0 -> 6981 bytes .../com/realnet/users/entity/UserDto.class | Bin 0 -> 5787 bytes .../realnet/users/entity/UserProfileDTO.class | Bin 0 -> 3554 bytes .../com/realnet/users/entity1/AppUser.class | Bin 0 -> 22388 bytes .../users/entity1/AppUserDepartment.class | Bin 0 -> 3770 bytes .../realnet/users/entity1/AppUserDto.class | Bin 0 -> 8549 bytes .../users/entity1/AppUserLoginHist.class | Bin 0 -> 4293 bytes .../users/entity1/AppUserPasswlog.class | Bin 0 -> 5031 bytes .../entity1/AppUserPasswlogCompositeKey.class | Bin 0 -> 3082 bytes .../users/entity1/AppUserPosition.class | Bin 0 -> 3211 bytes .../users/entity1/AppUserPrinciple.class | Bin 0 -> 2279 bytes .../realnet/users/entity1/AppUserRole.class | Bin 0 -> 5374 bytes .../users/entity1/AppUserSessions.class | Bin 0 -> 6007 bytes .../entity1/AppUserSessionsCompositeKey.class | Bin 0 -> 3008 bytes .../users/entity1/AppUser_who_column.class | Bin 0 -> 3256 bytes .../realnet/users/entity1/Registration.class | Bin 0 -> 7528 bytes .../com/realnet/users/entity1/SignUp.class | Bin 0 -> 3861 bytes .../users/repository/AboutWorkRepo.class | Bin 0 -> 435 bytes .../users/repository/CompanyRepo.class | Bin 0 -> 481 bytes .../realnet/users/repository/RoleRepo.class | Bin 0 -> 688 bytes .../users/repository/SysAccountRepo.class | Bin 0 -> 560 bytes .../AppUserDepartmentRepository.class | Bin 0 -> 473 bytes .../AppUserPositionRepository.class | Bin 0 -> 467 bytes .../users/repository1/AppUserRepository.class | Bin 0 -> 3636 bytes .../repository1/AppUserRoleRepository.class | Bin 0 -> 453 bytes .../AppUserSessionsRepository.class | Bin 0 -> 1015 bytes .../repository1/passwordTokenRepository.class | Bin 0 -> 799 bytes .../users/response/MessageResponse.class | Bin 0 -> 647 bytes .../users/response/ServiceResponse.class | Bin 0 -> 911 bytes .../com/realnet/users/response/UserItem.class | Bin 0 -> 3091 bytes .../realnet/users/response/UserResponse.class | Bin 0 -> 1941 bytes .../users/service/AboutServiceImple.class | Bin 0 -> 4598 bytes .../users/service/AboutWorkService.class | Bin 0 -> 597 bytes .../users/service/CompanyService.class | Bin 0 -> 617 bytes .../realnet/users/service/RoleService.class | Bin 0 -> 1390 bytes .../users/service/RoleServiceImpl.class | Bin 0 -> 8463 bytes .../service1/AppUserRoleServiceImpl.class | Bin 0 -> 2639 bytes .../users/service1/AppUserService.class | Bin 0 -> 1796 bytes .../users/service1/AppUserServiceImpl.class | Bin 0 -> 23353 bytes .../service1/AppUserSessionsServiceImpl.class | Bin 0 -> 1265 bytes .../PositionAndDepartmentServiceImpl.class | Bin 0 -> 1994 bytes .../users/service1/SysAccountService.class | Bin 0 -> 1879 bytes .../classes/com/realnet/utils/Constant.class | Bin 0 -> 11691 bytes .../com/realnet/utils/Port_Constant.class | Bin 0 -> 810 bytes .../utils/WireFrameConstant$FormType.class | Bin 0 -> 1405 bytes .../com/realnet/utils/WireFrameConstant.class | Bin 0 -> 1621 bytes .../backend/target/classes/data.sql | 2023 +++ .../backend/target/classes/logback.xml | 108 + .../target/classes/messages.properties | 5 + .../backend/target/classes/note.txt | 57 + .../backend/target/classes/schema.sql | 303 + .../target/maven-archiver/pom.properties | 3 + .../compile/default-compile/createdFiles.lst | 337 + .../compile/default-compile/inputFiles.lst | 345 + .../backend/target/sonar/.sonar_lock | 0 .../backend/target/sonar/report-task.txt | 6 + .../authsec_springboot/backend/test.txt | 1 + .../authsec_springboot/backend/test.xml | 1 + .../angular-clarity-master/.editorconfig | 16 + .../.github/workflows/blank.yml | 17 + .../angular-clarity-master/.gitignore | 42 + .../.sureai/.directory_structure.md | 60 + .../.sureai/.io8coder_breakdown.md | 68 + .../.sureai/.io8coder_plan.md | 59 + .../.sureai/analysis_document.md | 63 + .../.sureai/architecture_document.md | 138 + .../.sureai/prd_document.md | 62 + .../.sureai/project_plan.md | 73 + .../.sureai/requirements_document.md | 95 + .../.sureai/sprint_plan.md | 81 + .../.sureai/tech_stack_document.md | 39 + .../.vscode/settings.json | 2 + .../frontend/angular-clarity-master/README.md | 52 + .../angular-clarity-master/README.txt | 202 + .../angular-clarity-master/SECURITY.md | 21 + .../angular-clarity-master/angular.json | 134 + .../angular-clarity-master/browserslist | 12 + .../e2e/protractor.conf.js | 32 + .../e2e/src/app.e2e-spec.ts | 23 + .../angular-clarity-master/e2e/src/app.po.ts | 11 + .../angular-clarity-master/e2e/tsconfig.json | 13 + .../angular-clarity-master/karma.conf.js | 32 + .../angular-clarity-master/package-lock.json | 14862 ++++++++++++++++ .../angular-clarity-master/package.json | 89 + .../src/app/app-config.ts | 42 + .../src/app/app-routing.module.ts | 14 + .../src/app/app.component.html | 3 + .../src/app/app.component.scss | 0 .../src/app/app.component.spec.ts | 35 + .../src/app/app.component.ts | 18 + .../src/app/app.module.ts | 130 + .../src/app/global.model.ts | 169 + .../src/app/models/admin/role.ts | 4 + .../src/app/models/admin/systemparameter.ts | 30 + .../src/app/models/admin/user.ts | 14 + .../src/app/models/admin/userdepartment.ts | 12 + .../src/app/models/admin/usergrpma.ts | 10 + .../src/app/models/admin/usermaintaince.ts | 38 + .../src/app/models/admin/userposition.ts | 9 + .../app/models/builder/ActiveTechnology.ts | 4 + .../src/app/models/builder/AdhocParam.ts | 13 + .../src/app/models/builder/Audit.ts | 9 + .../app/models/builder/Bcf_TechnologyStack.ts | 9 + .../src/app/models/builder/ColumnList.ts | 4 + .../src/app/models/builder/DateParam.ts | 11 + .../src/app/models/builder/FileData.ts | 10 + .../src/app/models/builder/FileDetails.ts | 4 + .../src/app/models/builder/Module_Setup.ts | 14 + .../src/app/models/builder/Project_setup.ts | 22 + .../src/app/models/builder/RbColumns.ts | 12 + .../src/app/models/builder/RbTables.ts | 7 + .../src/app/models/builder/ReportBuilder.ts | 8 + .../app/models/builder/ReportBuilderQuery.ts | 4 + .../builder/Rn_Cff_ActionBuilder_Header.ts | 14 + .../builder/Rn_Cff_ActionBuilder_Line.ts | 18 + .../src/app/models/builder/Rn_Fb_Header.ts | 22 + .../src/app/models/builder/Rn_Fb_Lines.ts | 49 + .../src/app/models/builder/Rn_Main_Menu.ts | 17 + .../src/app/models/builder/Rn_Sub_Menu.ts | 16 + .../src/app/models/builder/StdParam.ts | 12 + .../src/app/models/builder/WhereParam.ts | 14 + .../src/app/models/builder/WireFrame.ts | 29 + .../src/app/models/builder/dashboard.ts | 114 + .../src/app/models/builder/gitfile.ts | 9 + .../src/app/models/builder/rptBuilder.ts | 14 + .../src/app/models/builder/suregit.ts | 9 + .../src/app/models/builder/surename.ts | 9 + .../src/app/models/builder/surestar.ts | 9 + .../src/app/models/builder/webpagebuilder.ts | 55 + .../models/fnd/Bcf_Exception_Rule_Library .ts | 10 + .../src/app/models/fnd/Bcf_Extractor.ts | 17 + .../app/models/fnd/Bcf_Extractor_Params.ts | 20 + .../src/app/models/fnd/Bcf_Rule_Library.ts | 16 + .../src/app/models/fnd/BiDashHeader.ts | 13 + .../src/app/models/fnd/BiDashLine.ts | 17 + .../src/app/models/fnd/BiWidget.ts | 10 + .../src/app/models/fnd/DynamicForm.ts | 37 + .../src/app/models/fnd/ExtensionField.ts | 47 + .../src/app/models/fnd/Mapping.ts | 4 + .../models/fnd/Rn_Forms_Component_Setup.ts | 12 + .../src/app/models/fnd/Rn_Forms_Setup.ts | 11 + .../src/app/models/fnd/RuleCopy.ts | 20 + .../src/app/models/fnd/Studentadd.ts | 10 + .../src/app/models/fnd/TableList.ts | 4 + .../src/app/models/fnd/ValidationError.ts | 4 + .../src/app/models/fnd/apiregisteryline.ts | 10 + .../src/app/models/fnd/book.ts | 10 + .../src/app/models/fnd/department.ts | 10 + .../src/app/models/fnd/health_checkup.ts | 10 + .../src/app/models/fnd/play.ts | 9 + .../src/app/models/fnd/table-setup.ts | 4 + .../src/app/models/fnd/university.ts | 11 + .../login/about-work/about-work.component.css | 45 + .../about-work/about-work.component.css.map | 1 + .../about-work/about-work.component.html | 261 + .../about-work/about-work.component.scss | 122 + .../about-work/about-work.component.spec.ts | 25 + .../login/about-work/about-work.component.ts | 301 + .../login/about-work/customer.service.ts | 152 + .../login/addguest/addguest.component.html | 137 + .../login/addguest/addguest.component.scss | 86 + .../login/addguest/addguest.component.spec.ts | 25 + .../login/addguest/addguest.component.ts | 68 + .../emailverification.component.css | 95 + .../emailverification.component.css.map | 1 + .../emailverification.component.html | 123 + .../emailverification.component.scss | 153 + .../emailverification.component.spec.ts | 25 + .../emailverification.component.ts | 236 + .../forgotpassword.component.html | 38 + .../forgotpassword.component.scss | 75 + .../forgotpassword.component.spec.ts | 25 + .../forgotpassword.component.ts | 67 + .../forgotresetpassword.component.html | 50 + .../forgotresetpassword.component.scss | 83 + .../forgotresetpassword.component.spec.ts | 25 + .../forgotresetpassword.component.ts | 103 + .../forgotresetpassword1.component.html | 142 + .../forgotresetpassword1.component.scss | 86 + .../forgotresetpassword1.component.spec.ts | 25 + .../forgotresetpassword1.component.ts | 71 + .../login-page/login-page.component.html | 146 + .../login-page/login-page.component.scss | 23 + .../login-page/login-page.component.spec.ts | 25 + .../login/login-page/login-page.component.ts | 108 + .../login/login-page/login_environment.ts | 15 + .../app/modules/login/login-routing.module.ts | 27 + .../src/app/modules/login/login.module.ts | 30 + .../src/app/modules/logo/logo.component.html | 26 + .../src/app/modules/logo/logo.component.scss | 0 .../src/app/modules/logo/logo.component.ts | 17 + .../Stepper_workflow.component.html | 405 + .../Stepper_workflow.component.scss | 78 + .../Stepper_workflow.component.ts | 259 + .../Stepper_workflow.service.ts | 39 + .../Stepper_workflow_cardvariable.ts | 4 + .../modules/main/BuilderComponents/test.html | 20 + .../modules/main/about/about.component.html | 13 + .../modules/main/about/about.component.scss | 15 + .../main/about/about.component.spec.ts | 25 + .../app/modules/main/about/about.component.ts | 14 + .../main/admin/about/about.component.html | 18 + .../main/admin/about/about.component.scss | 0 .../main/admin/about/about.component.spec.ts | 25 + .../main/admin/about/about.component.ts | 19 + .../accesstype/accesstype.component.html | 204 + .../accesstype/accesstype.component.scss | 62 + .../accesstype/accesstype.component.spec.ts | 25 + .../admin/accesstype/accesstype.component.ts | 189 + .../documentmaster.component.html | 128 + .../documentmaster.component.scss | 1 + .../documentmaster.component.spec.ts | 25 + .../documentmaster.component.ts | 30 + .../documentreference.component.html | 180 + .../documentreference.component.scss | 1 + .../documentreference.component.spec.ts | 25 + .../documentreference.component.ts | 30 + .../documentstructure.component.html | 56 + .../documentstructure.component.scss | 0 .../documentstructure.component.spec.ts | 25 + .../documentstructure.component.ts | 15 + .../all/all-menu-group.component.html | 1057 ++ .../all/all-menu-group.component.scss | 65 + .../all/all-menu-group.component.ts | 506 + .../edit/edit-menu-group.component.html | 99 + .../edit/edit-menu-group.component.ts | 97 + .../menu-group/edit/edit-menu-group.scss | 51 + .../menu-group/menu-group.component.html | 1 + .../menu-group/menu-group.component.scss | 0 .../admin/menu-group/menu-group.component.ts | 16 + .../readonly-menu-group.component.html | 94 + .../readonly-menu-group.component.ts | 44 + .../read-only/readonly-menu-group.scss | 23 + .../add-menur/add-menur.component.html | 1 + .../add-menur/add-menur.component.scss | 0 .../add-menur/add-menur.component.spec.ts | 25 + .../add-menur/add-menur.component.ts | 15 + .../all-menur/all-menur.component.html | 203 + .../all-menur/all-menur.component.scss | 14 + .../all-menur/all-menur.component.spec.ts | 25 + .../all-menur/all-menur.component.ts | 187 + .../edit-menur/edit-menur.component.html | 1 + .../edit-menur/edit-menur.component.scss | 0 .../edit-menur/edit-menur.component.spec.ts | 25 + .../edit-menur/edit-menur.component.ts | 15 + .../menu-register.component.html | 1 + .../menu-register.component.scss | 0 .../menu-register.component.spec.ts | 25 + .../menu-register/menu-register.component.ts | 15 + .../readonly-menur.component.html | 1 + .../readonly-menur.component.scss | 0 .../readonly-menur.component.spec.ts | 25 + .../readonly-menur.component.ts | 15 + .../menuaccesscontrol.component.html | 279 + .../menuaccesscontrol.component.scss | 99 + .../menuaccesscontrol.component.spec.ts | 25 + .../menuaccesscontrol.component.ts | 246 + .../menumaintance.component.html | 441 + .../menumaintance.component.scss | 62 + .../menumaintance.component.spec.ts | 25 + .../menumaintance/menumaintance.component.ts | 216 + .../main/admin/modules/modules.component.html | 146 + .../main/admin/modules/modules.component.scss | 62 + .../admin/modules/modules.component.spec.ts | 25 + .../main/admin/modules/modules.component.ts | 121 + .../myworkspace/myworkspace.component.css | 85 + .../myworkspace/myworkspace.component.css.map | 1 + .../myworkspace/myworkspace.component.html | 309 + .../myworkspace/myworkspace.component.scss | 94 + .../myworkspace/myworkspace.component.spec.ts | 25 + .../myworkspace/myworkspace.component.ts | 206 + .../admin/myworkspace/myworkspace.service.ts | 115 + .../password-reset.component.html | 43 + .../password-reset.component.scss | 83 + .../password-reset.component.spec.ts | 25 + .../password-reset.component.ts | 109 + .../profile-setting.component.html | 266 + .../profile-setting.component.scss | 10 + .../profile-setting.component.spec.ts | 25 + .../profile-setting.component.ts | 223 + .../sessionlogger.component.html | 99 + .../sessionlogger.component.scss | 4 + .../sessionlogger.component.spec.ts | 25 + .../sessionlogger/sessionlogger.component.ts | 69 + .../main/admin/submenu/submenu.component.html | 250 + .../main/admin/submenu/submenu.component.scss | 62 + .../admin/submenu/submenu.component.spec.ts | 25 + .../main/admin/submenu/submenu.component.ts | 148 + .../systemparameters.component.html | 665 + .../systemparameters.component.scss | 86 + .../systemparameters.component.spec.ts | 25 + .../systemparameters.component.ts | 114 + .../user-registration.component.html | 42 + .../user-registration.component.scss | 143 + .../user-registration.component.spec.ts | 25 + .../user-registration.component.ts | 93 + .../main/admin/user/user.component.html | 606 + .../main/admin/user/user.component.scss | 40 + .../main/admin/user/user.component.spec.ts | 25 + .../modules/main/admin/user/user.component.ts | 369 + .../usergrpmaintenance.component.html | 224 + .../usergrpmaintenance.component.scss | 8 + .../usergrpmaintenance.component.spec.ts | 25 + .../usergrpmaintenance.component.ts | 203 + .../usermaintance.component.html | 124 + .../usermaintance.component.scss | 4 + .../usermaintance.component.spec.ts | 25 + .../usermaintance/usermaintance.component.ts | 158 + .../usermaintanceadd.component.html | 319 + .../usermaintanceadd.component.scss | 8 + .../usermaintanceadd.component.spec.ts | 25 + .../usermaintanceadd.component.ts | 198 + .../usermaintanceedit.component.html | 348 + .../usermaintanceedit.component.scss | 1 + .../usermaintanceedit.component.spec.ts | 25 + .../usermaintanceedit.component.ts | 133 + .../addnewdash/addnewdash.component.html | 40 + .../addnewdash/addnewdash.component.scss | 81 + .../addnewdash/addnewdash.component.spec.ts | 21 + .../addnewdash/addnewdash.component.ts | 125 + .../allnewdash/allnewdash.component.html | 145 + .../allnewdash/allnewdash.component.scss | 83 + .../allnewdash/allnewdash.component.spec.ts | 21 + .../allnewdash/allnewdash.component.ts | 124 + .../dashboardnew/dashboardnew.component.html | 1 + .../dashboardnew/dashboardnew.component.scss | 0 .../dashboardnew.component.spec.ts | 21 + .../dashboardnew/dashboardnew.component.ts | 10 + .../editformnewdash.component.html | 54 + .../editformnewdash.component.scss | 81 + .../editformnewdash.component.spec.ts | 21 + .../editformnewdash.component.ts | 93 + .../editnewdash/editnewdash.component.html | 198 + .../editnewdash/editnewdash.component.scss | 51 + .../editnewdash/editnewdash.component.spec.ts | 21 + .../editnewdash/editnewdash.component.ts | 617 + .../gadgets/bar-chart/bar-chart.component.css | 1 + .../bar-chart/bar-chart.component.css.map | 1 + .../bar-chart/bar-chart.component.html | 9 + .../bar-chart/bar-chart.component.scss | 0 .../bar-chart/bar-chart.component.spec.ts | 25 + .../gadgets/bar-chart/bar-chart.component.ts | 33 + .../bubble-chart/bubble-chart.component.css | 1 + .../bubble-chart.component.css.map | 1 + .../bubble-chart/bubble-chart.component.html | 9 + .../bubble-chart/bubble-chart.component.scss | 0 .../bubble-chart.component.spec.ts | 25 + .../bubble-chart/bubble-chart.component.ts | 98 + .../doughnut-chart.component.css | 1 + .../doughnut-chart.component.css.map | 1 + .../doughnut-chart.component.html | 8 + .../doughnut-chart.component.scss | 0 .../doughnut-chart.component.spec.ts | 25 + .../doughnut-chart.component.ts | 30 + .../dynamic-chart/dynamic-chart.component.css | 1 + .../dynamic-chart.component.css.map | 1 + .../dynamic-chart.component.html | 10 + .../dynamic-chart.component.scss | 0 .../dynamic-chart.component.spec.ts | 25 + .../dynamic-chart/dynamic-chart.component.ts | 70 + .../financial-chart.component.css | 1 + .../financial-chart.component.css.map | 1 + .../financial-chart.component.html | 1 + .../financial-chart.component.scss | 0 .../financial-chart.component.spec.ts | 25 + .../financial-chart.component.ts | 15 + .../gadgets/grid-view/grid-view.component.css | 72 + .../grid-view/grid-view.component.css.map | 1 + .../grid-view/grid-view.component.html | 69 + .../grid-view/grid-view.component.scss | 12 + .../grid-view/grid-view.component.spec.ts | 25 + .../gadgets/grid-view/grid-view.component.ts | 54 + .../line-chart/line-chart.component.css | 1 + .../line-chart/line-chart.component.css.map | 1 + .../line-chart/line-chart.component.html | 12 + .../line-chart/line-chart.component.scss | 0 .../line-chart/line-chart.component.spec.ts | 25 + .../line-chart/line-chart.component.ts | 71 + .../gadgets/pie-chart/pie-chart.component.css | 1 + .../pie-chart/pie-chart.component.css.map | 1 + .../pie-chart/pie-chart.component.html | 9 + .../pie-chart/pie-chart.component.scss | 0 .../pie-chart/pie-chart.component.spec.ts | 25 + .../gadgets/pie-chart/pie-chart.component.ts | 27 + .../polar-chart/polar-chart.component.css | 1 + .../polar-chart/polar-chart.component.css.map | 1 + .../polar-chart/polar-chart.component.html | 10 + .../polar-chart/polar-chart.component.scss | 0 .../polar-chart/polar-chart.component.spec.ts | 25 + .../polar-chart/polar-chart.component.ts | 37 + .../radar-chart/radar-chart.component.css | 1 + .../radar-chart/radar-chart.component.css.map | 1 + .../radar-chart/radar-chart.component.html | 8 + .../radar-chart/radar-chart.component.scss | 0 .../radar-chart/radar-chart.component.spec.ts | 25 + .../radar-chart/radar-chart.component.ts | 39 + .../scatter-chart/scatter-chart.component.css | 1 + .../scatter-chart.component.css.map | 1 + .../scatter-chart.component.html | 8 + .../scatter-chart.component.scss | 0 .../scatter-chart.component.spec.ts | 25 + .../scatter-chart/scatter-chart.component.ts | 77 + .../to-do-chart/to-do-chart.component.css | 1 + .../to-do-chart/to-do-chart.component.css.map | 1 + .../to-do-chart/to-do-chart.component.html | 27 + .../to-do-chart/to-do-chart.component.scss | 0 .../to-do-chart/to-do-chart.component.spec.ts | 25 + .../to-do-chart/to-do-chart.component.ts | 27 + .../schedule/schedule.component.html | 1 + .../schedule/schedule.component.scss | 0 .../schedule/schedule.component.spec.ts | 21 + .../schedule/schedule.component.ts | 10 + .../dashboardrunner.component.html | 1 + .../dashboardrunner.component.scss | 0 .../dashboardrunner.component.spec.ts | 25 + .../dashboardrunner.component.ts | 15 + .../dashrunnerall/dashrunnerall.component.css | 90 + .../dashrunnerall.component.css.map | 1 + .../dashrunnerall.component.html | 117 + .../dashrunnerall.component.scss | 93 + .../dashrunnerall.component.spec.ts | 25 + .../dashrunnerall/dashrunnerall.component.ts | 125 + .../bar-runner/bar-runner.component.html | 38 + .../bar-runner/bar-runner.component.scss | 102 + .../bar-runner/bar-runner.component.spec.ts | 25 + .../bar-runner/bar-runner.component.ts | 101 + .../bubble-runner.component.html | 11 + .../bubble-runner.component.scss | 0 .../bubble-runner.component.spec.ts | 25 + .../bubble-runner/bubble-runner.component.ts | 140 + .../dashrunnerline/dashrunner.service.spec.ts | 16 + .../dashrunnerline/dashrunner.service.ts | 212 + .../dashrunnerline.component.html | 40 + .../dashrunnerline.component.scss | 49 + .../dashrunnerline.component.spec.ts | 25 + .../dashrunnerline.component.ts | 291 + .../doughnut-runner.component.html | 10 + .../doughnut-runner.component.scss | 76 + .../doughnut-runner.component.spec.ts | 25 + .../doughnut-runner.component.ts | 99 + .../grid-runner/grid-runner.component.html | 54 + .../grid-runner/grid-runner.component.scss | 12 + .../grid-runner/grid-runner.component.spec.ts | 25 + .../grid-runner/grid-runner.component.ts | 111 + .../line-runner/line-runner.component.html | 14 + .../line-runner/line-runner.component.scss | 76 + .../line-runner/line-runner.component.spec.ts | 25 + .../line-runner/line-runner.component.ts | 169 + .../pie-runner/pie-runner.component.html | 11 + .../pie-runner/pie-runner.component.scss | 0 .../pie-runner/pie-runner.component.spec.ts | 25 + .../pie-runner/pie-runner.component.ts | 92 + .../polar-runner/polar-runner.component.html | 10 + .../polar-runner/polar-runner.component.scss | 0 .../polar-runner.component.spec.ts | 25 + .../polar-runner/polar-runner.component.ts | 93 + .../radar-runner/radar-runner.component.html | 10 + .../radar-runner/radar-runner.component.scss | 0 .../radar-runner.component.spec.ts | 25 + .../radar-runner/radar-runner.component.ts | 102 + .../scatter-runner.component.html | 12 + .../scatter-runner.component.scss | 0 .../scatter-runner.component.spec.ts | 25 + .../scatter-runner.component.ts | 121 + .../todo-runner/todo-runner.component.html | 30 + .../todo-runner/todo-runner.component.scss | 0 .../todo-runner/todo-runner.component.spec.ts | 25 + .../todo-runner/todo-runner.component.ts | 103 + .../fileUpload/FileUploadList.component.ts | 23 + .../file-upload-list.component.html | 46 + .../report-build/report-build.component.css | 1 + .../report-build.component.css.map | 1 + .../report-build/report-build.component.html | 1 + .../report-build/report-build.component.scss | 0 .../report-build.component.spec.ts | 25 + .../report-build/report-build.component.ts | 14 + .../reportbuildadd.component.css | 75 + .../reportbuildadd.component.css.map | 1 + .../reportbuildadd.component.html | 48 + .../reportbuildadd.component.scss | 80 + .../reportbuildadd.component.spec.ts | 25 + .../reportbuildadd.component.ts | 60 + .../reportbuildall.component.css | 90 + .../reportbuildall.component.css.map | 1 + .../reportbuildall.component.html | 112 + .../reportbuildall.component.scss | 83 + .../reportbuildall.component.spec.ts | 25 + .../reportbuildall.component.ts | 92 + .../reportbuildedit.component.css | 56 + .../reportbuildedit.component.css.map | 1 + .../reportbuildedit.component.html | 66 + .../reportbuildedit.component.scss | 58 + .../reportbuildedit.component.spec.ts | 25 + .../reportbuildedit.component.ts | 144 + .../reportbuildquery.component.css | 146 + .../reportbuildquery.component.css.map | 1 + .../reportbuildquery.component.html | 670 + .../reportbuildquery.component.scss | 161 + .../reportbuildquery.component.spec.ts | 25 + .../reportbuildquery.component.ts | 660 + .../report-build2.component.html | 1 + .../report-build2.component.scss | 0 .../report-build2.component.spec.ts | 25 + .../report-build2/report-build2.component.ts | 15 + .../report-build2add.component.html | 79 + .../report-build2add.component.scss | 80 + .../report-build2add.component.spec.ts | 25 + .../report-build2add.component.ts | 71 + .../report-build2all.component.html | 102 + .../report-build2all.component.scss | 83 + .../report-build2all.component.spec.ts | 25 + .../report-build2all.component.ts | 91 + .../report-build2edit.component.html | 95 + .../report-build2edit.component.scss | 58 + .../report-build2edit.component.spec.ts | 25 + .../report-build2edit.component.ts | 159 + .../report-runner/report-runner.component.css | 1 + .../report-runner.component.css.map | 1 + .../report-runner.component.html | 1 + .../report-runner.component.scss | 0 .../report-runner.component.spec.ts | 25 + .../report-runner/report-runner.component.ts | 15 + .../reportrunnerall.component.css | 90 + .../reportrunnerall.component.css.map | 1 + .../reportrunnerall.component.html | 109 + .../reportrunnerall.component.scss | 93 + .../reportrunnerall.component.spec.ts | 25 + .../reportrunnerall.component.ts | 90 + .../reportrunneredit.component.css | 76 + .../reportrunneredit.component.css.map | 1 + .../reportrunneredit.component.html | 266 + .../reportrunneredit.component.scss | 80 + .../reportrunneredit.component.spec.ts | 25 + .../reportrunneredit.component.ts | 611 + .../reportrunneredit2.component.html | 305 + .../reportrunneredit2.component.scss | 81 + .../reportrunneredit2.component.spec.ts | 25 + .../reportrunneredit2.component.ts | 831 + .../setupicon/setupicon.component.html | 148 + .../setupicon/setupicon.component.scss | 47 + .../setupicon/setupicon.component.spec.ts | 21 + .../builder/setupicon/setupicon.component.ts | 97 + .../bulkimport/bulkimport.component.html | 1 + .../bulkimport/bulkimport.component.scss | 0 .../bulkimport/bulkimport.component.spec.ts | 25 + .../bulkimport/bulkimport.component.ts | 15 + .../bulkimportadd.component.html | 183 + .../bulkimportadd.component.scss | 81 + .../bulkimportadd.component.spec.ts | 25 + .../bulkimportadd/bulkimportadd.component.ts | 236 + .../bulkimportall.component.html | 81 + .../bulkimportall.component.scss | 4 + .../bulkimportall.component.spec.ts | 25 + .../bulkimportall/bulkimportall.component.ts | 87 + .../bulkimportedit.component.html | 116 + .../bulkimportedit.component.scss | 81 + .../bulkimportedit.component.spec.ts | 25 + .../bulkimportedit.component.ts | 200 + .../bulkimporteditline.component.html | 73 + .../bulkimporteditline.component.scss | 51 + .../bulkimporteditline.component.spec.ts | 25 + .../bulkimporteditline.component.ts | 172 + .../bulkimportline.component.html | 73 + .../bulkimportline.component.scss | 51 + .../bulkimportline.component.spec.ts | 25 + .../bulkimportline.component.ts | 175 + .../datamanagement.component.html | 176 + .../datamanagement.component.scss | 84 + .../datamanagement.component.spec.ts | 25 + .../datamanagement.component.ts | 188 + .../datamananementworkflow.component.html | 497 + .../datamananementworkflow.component.scss | 110 + .../datamananementworkflow.component.spec.ts | 25 + .../datamananementworkflow.component.ts | 555 + .../mappingrule/mappingrule.component.html | 1 + .../mappingrule/mappingrule.component.scss | 0 .../mappingrule/mappingrule.component.spec.ts | 25 + .../mappingrule/mappingrule.component.ts | 15 + .../mappingruleadd.component.html | 149 + .../mappingruleadd.component.scss | 81 + .../mappingruleadd.component.spec.ts | 25 + .../mappingruleadd.component.ts | 249 + .../mappingruleall.component.html | 85 + .../mappingruleall.component.scss | 4 + .../mappingruleall.component.spec.ts | 25 + .../mappingruleall.component.ts | 85 + .../mappingruleedit.component.html | 100 + .../mappingruleedit.component.scss | 81 + .../mappingruleedit.component.spec.ts | 25 + .../mappingruleedit.component.ts | 161 + .../Token_registery.component.html | 354 + .../Token_registery.component.scss | 85 + .../Token_registery.component.ts | 251 + .../Token_registery.service.ts | 38 + .../Token_registery_cardvariable.ts | 4 + .../fnd/apiregistery/ApiRegistery.service.ts | 46 + .../Apiregisteryline.component.html | 382 + .../Apiregisteryline.component.scss | 78 + .../Apiregisteryline.component.ts | 230 + .../Apiregisteryline.service.ts | 38 + .../Apiregisteryline_cardvariable.ts | 4 + .../addapiregistery.component.html | 1 + .../addapiregistery.component.scss | 0 .../addapiregistery.component.spec.ts | 21 + .../addapiregistery.component.ts | 10 + .../allapiregistery.component.html | 172 + .../allapiregistery.component.scss | 5 + .../allapiregistery.component.spec.ts | 21 + .../allapiregistery.component.ts | 299 + .../apiregistery/apiregistery.component.html | 1 + .../apiregistery/apiregistery.component.scss | 0 .../apiregistery.component.spec.ts | 21 + .../apiregistery/apiregistery.component.ts | 214 + .../editapiregistery.component.html | 1 + .../editapiregistery.component.scss | 0 .../editapiregistery.component.spec.ts | 21 + .../editapiregistery.component.ts | 10 + .../fnd/dashboard/dashboard.component.html | 375 + .../fnd/dashboard/dashboard.component.scss | 73 + .../fnd/dashboard/dashboard.component.spec.ts | 25 + .../main/fnd/dashboard/dashboard.component.ts | 106 + .../addextension/addextension.component.css | 39 + .../addextension.component.css.map | 1 + .../addextension/addextension.component.html | 52 + .../addextension/addextension.component.scss | 39 + .../addextension.component.spec.ts | 25 + .../addextension/addextension.component.ts | 94 + .../allextension/allextension.component.css | 64 + .../allextension.component.css.map | 1 + .../allextension/allextension.component.html | 101 + .../allextension/allextension.component.scss | 5 + .../allextension.component.spec.ts | 25 + .../allextension/allextension.component.ts | 204 + .../editextension/editextension.component.css | 39 + .../editextension.component.css.map | 1 + .../editextension.component.html | 40 + .../editextension.component.scss | 39 + .../editextension.component.spec.ts | 25 + .../editextension/editextension.component.ts | 71 + .../fnd/extension/extension.component.css | 1 + .../fnd/extension/extension.component.css.map | 1 + .../fnd/extension/extension.component.html | 1 + .../fnd/extension/extension.component.scss | 0 .../fnd/extension/extension.component.spec.ts | 25 + .../main/fnd/extension/extension.component.ts | 15 + .../fnd/main-page/main-page.component.html | 3 + .../fnd/main-page/main-page.component.scss | 0 .../fnd/main-page/main-page.component.spec.ts | 25 + .../main/fnd/main-page/main-page.component.ts | 15 + .../sequencegenarator.component.html | 243 + .../sequencegenarator.component.scss | 72 + .../sequencegenarator.component.spec.ts | 25 + .../sequencegenarator.component.ts | 190 + .../modules/main/layout/layout.component.html | 232 + .../modules/main/layout/layout.component.scss | 104 + .../main/layout/layout.component.spec.ts | 25 + .../modules/main/layout/layout.component.ts | 309 + .../main/main-page/main-page.component.html | 3 + .../main/main-page/main-page.component.scss | 0 .../main-page/main-page.component.spec.ts | 25 + .../main/main-page/main-page.component.ts | 15 + .../app/modules/main/main-routing.module.ts | 287 + .../src/app/modules/main/main.module.ts | 211 + .../page-not-found.component.html | 5 + .../page-not-found.component.scss | 11 + .../page-not-found.component.spec.ts | 25 + .../page-not-found.component.ts | 15 + .../src/app/modules/main/superadmin.zip | Bin 0 -> 32277 bytes .../main/superadmin/query/query.component.css | 146 + .../superadmin/query/query.component.css.map | 1 + .../superadmin/query/query.component.html | 637 + .../superadmin/query/query.component.scss | 161 + .../superadmin/query/query.component.spec.ts | 25 + .../main/superadmin/query/query.component.ts | 536 + .../queryadd/queryadd.component.css | 75 + .../queryadd/queryadd.component.css.map | 1 + .../queryadd/queryadd.component.html | 130 + .../queryadd/queryadd.component.scss | 80 + .../queryadd/queryadd.component.spec.ts | 25 + .../superadmin/queryadd/queryadd.component.ts | 92 + .../queryedit/queryedit.component.css | 75 + .../queryedit/queryedit.component.css.map | 1 + .../queryedit/queryedit.component.html | 127 + .../queryedit/queryedit.component.scss | 80 + .../queryedit/queryedit.component.spec.ts | 25 + .../queryedit/queryedit.component.ts | 67 + .../src/app/pipes/helpers.module.ts | 31 + .../src/app/pipes/remove-commas.pipe.ts | 8 + .../src/app/pipes/sanitize.pipe.ts | 10 + .../src/app/pipes/search-filter.pipe.ts | 58 + .../src/app/pipes/thai-date-abbr.pipe.ts | 20 + .../src/app/pipes/thai-date-full.pipe.ts | 20 + .../src/app/pipes/thai-date.pipe.ts | 17 + .../src/app/pipes/time-pipe.pipe.ts | 36 + .../app/services/admin/accesstype.service.ts | 64 + .../app/services/admin/auditreport.service.ts | 38 + .../admin/connector-mapping.service.ts | 37 + .../admin/deploymentprofile.service.ts | 47 + .../services/admin/health-checkup.service.ts | 74 + .../app/services/admin/logconfig.service.ts | 28 + .../app/services/admin/menu-group.service.ts | 76 + .../services/admin/menu-register.service.ts | 33 + .../services/admin/menumaintance.service.ts | 69 + .../app/services/admin/myworkspace.service.ts | 98 + .../services/admin/outgoingwebhook.service.ts | 51 + .../services/admin/sessionlogger.service.ts | 17 + .../services/admin/sure-connector.service.ts | 25 + .../admin/sure-opsscriptmaster.service.ts | 86 + .../src/app/services/admin/sureapi.service.ts | 23 + .../app/services/admin/sureconnect.service.ts | 35 + .../services/admin/sysparameter.service.ts | 33 + .../app/services/admin/university.service.ts | 44 + .../app/services/admin/user-list.service.ts | 33 + .../services/admin/user-profile.service.ts | 120 + .../admin/user-registration.service.ts | 290 + .../admin/usergrpmaintaince.service.ts | 46 + .../services/admin/usermaintance.service.ts | 42 + .../src/app/services/alert.service.ts | 70 + .../src/app/services/alerts.service.ts | 39 + .../src/app/services/api/addemails.service.ts | 26 + .../app/services/api/api-request.service.ts | 172 + .../app/services/api/audittrail.service.ts | 30 + .../app/services/api/billingdemo.service.ts | 17 + .../app/services/api/department.service.ts | 48 + .../app/services/api/diputesemo.service.ts | 17 + .../app/services/api/forgotpass.service.ts | 44 + .../src/app/services/api/helper.ts | 5 + .../src/app/services/api/itemdemo.service.ts | 16 + .../src/app/services/api/login.service.ts | 113 + .../app/services/api/query-runner.service.ts | 20 + .../app/services/api/realnet-menu.service.ts | 43 + .../services/api/report-builder.service.ts | 287 + .../src/app/services/api/sequence.service.ts | 30 + .../app/services/api/table-setup.service.ts | 29 + .../src/app/services/api/translate.service.ts | 19 + .../src/app/services/auth_guard.service.ts | 40 + .../additionalcontainer.service.spec.ts | 16 + .../builder/additionalcontainer.service.ts | 75 + .../builder/dashboard.service.spec.ts | 16 + .../app/services/builder/dashboard.service.ts | 116 + .../builder/dashboard3.service.spec.ts | 16 + .../services/builder/dashboard3.service.ts | 308 + .../src/app/services/builder/icon.service.ts | 63 + .../services/builder/modulesetup.service.ts | 172 + .../builder/project-setup.service.spec.ts | 16 + .../services/builder/project-setup.service.ts | 237 + .../builder/technology-stack.service.ts | 80 + .../builder/wireframe-line.service.ts | 60 + .../app/services/builder/wireframe.service.ts | 273 + .../src/app/services/csv.service.ts | 136 + .../src/app/services/excel.service.ts | 30 + .../src/app/services/fnd/alerts.service.ts | 68 + .../app/services/fnd/bulkimport.service.ts | 160 + .../fnd/code-extraction.service.spec.ts | 16 + .../services/fnd/code-extraction.service.ts | 184 + .../src/app/services/fnd/dataflow.service.ts | 123 + .../services/fnd/datamanagement.service.ts | 111 + .../src/app/services/fnd/datastore.service.ts | 109 + .../exception-rule-library.service.spec.ts | 16 + .../fnd/exception-rule-library.service.ts | 42 + .../src/app/services/fnd/extension.service.ts | 78 + .../services/fnd/rule-library.service.spec.ts | 16 + .../app/services/fnd/rule-library.service.ts | 87 + .../fnd/workflow-data.service.spec.ts | 16 + .../app/services/fnd/workflow-data.service.ts | 63 + .../src/app/services/jwt.interceptor.ts | 22 + .../src/app/services/main.service.spec.ts | 12 + .../src/app/services/main.service.ts | 36 + .../src/app/services/notification.service.ts | 36 + .../src/app/services/user-info.service.ts | 122 + .../src/assets/.gitkeep | 0 .../assets/fonts/THSarabun Bold Italic.ttf | Bin 0 -> 117644 bytes .../src/assets/fonts/THSarabun Bold.ttf | Bin 0 -> 118964 bytes .../src/assets/fonts/THSarabun BoldItalic.ttf | Bin 0 -> 102916 bytes .../src/assets/fonts/THSarabun Italic.ttf | Bin 0 -> 104352 bytes .../src/assets/fonts/THSarabun.ttf | Bin 0 -> 99980 bytes .../src/assets/i18n/en.json | 375 + .../src/assets/i18n/hi.json | 224 + .../images/2021-12-24_1662642503238.png | Bin 0 -> 753683 bytes .../src/assets/images/403.webp | Bin 0 -> 81216 bytes .../src/assets/images/Header.png | Bin 0 -> 3512 bytes .../src/assets/images/HeaderLines.png | Bin 0 -> 4539 bytes .../src/assets/images/MultipleLines.png | Bin 0 -> 4751 bytes .../src/assets/images/OnlyLines.png | Bin 0 -> 4194 bytes .../images/Web-Page-Background-Color.jpg | Bin 0 -> 22549 bytes .../src/assets/images/copyfromPrj.png | Bin 0 -> 17363 bytes .../src/assets/images/copytemplate.png | Bin 0 -> 17937 bytes .../src/assets/images/database.png | Bin 0 -> 19576 bytes .../src/assets/images/fromscratch.png | Bin 0 -> 21230 bytes .../src/assets/images/git.png | Bin 0 -> 1184 bytes .../src/assets/images/icon/cradiant.png | Bin 0 -> 7636 bytes .../src/assets/images/icon/logo.ico | Bin 0 -> 5430 bytes .../src/assets/images/icon/micrologo.png | Bin 0 -> 3603 bytes .../src/assets/images/icon/sitelogo.png | Bin 0 -> 34912 bytes .../src/assets/images/images.png | Bin 0 -> 5911 bytes .../src/assets/images/logo.svg | 28 + .../src/assets/images/micro logo.png | Bin 0 -> 3603 bytes .../src/assets/images/new.png | Bin 0 -> 156249 bytes .../src/assets/images/profile-icon.png | Bin 0 -> 2534 bytes .../src/assets/images/profile1.jpg | Bin 0 -> 10118 bytes .../src/assets/images/profile3.jpg | Bin 0 -> 7979 bytes .../src/assets/images/qr-code.png | Bin 0 -> 40397 bytes .../src/assets/images/view.jpg | Bin 0 -> 196 bytes .../src/assets/images/who.png | Bin 0 -> 3708 bytes .../src/environments/environment.prod.ts | 17 + .../src/environments/environment.ts | 16 + .../angular-clarity-master/src/favicon.ico | Bin 0 -> 948 bytes .../angular-clarity-master/src/index.html | 24 + .../angular-clarity-master/src/main.ts | 12 + .../angular-clarity-master/src/polyfills.ts | 53 + .../angular-clarity-master/src/server/app.js | 30 + .../angular-clarity-master/src/server/db.json | 8 + .../src/server/package-lock.json | 537 + .../src/server/package.json | 18 + .../angular-clarity-master/src/styles.scss | 198 + .../angular-clarity-master/src/styles1.scss | 54 + .../angular-clarity-master/src/test.ts | 16 + .../angular-clarity-master/tsconfig.app.json | 15 + .../angular-clarity-master/tsconfig.json | 21 + .../angular-clarity-master/tsconfig.spec.json | 18 + .../angular-clarity-master/tslint.json | 152 + 1789 files changed, 113779 insertions(+) create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/.gitignore create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/.classpath create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/.factorypath create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/.project create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/.settings/org.eclipse.core.resources.prefs create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/.settings/org.eclipse.jdt.apt.core.prefs create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/.settings/org.eclipse.jdt.core.prefs create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/.settings/org.eclipse.m2e.core.prefs create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/.settings/org.springframework.ide.eclipse.prefs create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/.swagger-codegen-ignore create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/Resources/Files/600dpi (1)_1750161677278.png create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/dump.sql create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/hs_err_pid6816.log create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/logs/ExceptionLogs/Error.log create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/logs/SYSADMIN1673073474.log create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/logs/sysadmin1686312560.log create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/pom.xml create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Controllers/AccesstypeController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Controllers/AgyanaController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Controllers/AraniController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Controllers/TokenFreeAccesstypeController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Entity/Accesstype.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Entity/Agyana.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Entity/Arani.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Repository/AccesstypeRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Repository/AgyanaRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Repository/AraniRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Services/AccesstypeService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Services/AraniService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Api/Controllers/BillingSequentialApi.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Api/Controllers/ServiceOrderApiController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Controllers/ApprovalHistory_Controller.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Controllers/ApprovalQueue_Controller.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Dto/ApprovalNote_SO.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Dto/ApprovalQueue_SO.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Dto/BillingPeriodsResponse.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Dto/ServiceOrderDto.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Dto/ServiceWithDiscount.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Entitys/ApprovalHistory_t.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Entitys/BillingPeriods_t.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Entitys/CustomerRates_t.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Job/Controller/BillingJobServiceController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Job/Entity/BillingJobEntity.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Job/Repository/BillingJobRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Job/Service/BillingJobService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Repositorys/ApprovalHistory_Repository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Repositorys/ApprovalQueue_Repository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Repositorys/ApprovalReturnHistory_Repo.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Services/ApprovalHistory_Service.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Services/ApprovalQueueService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Builders/Entity/Builder_entity_t.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Builders/Repos/BuilderRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Builders/Services/BuilderService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Builders/Services/SqlDumpExecutor.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Controllers/BulkUpload_Controller.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Controllers/DataImportController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Controllers/MappingRuleController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Controllers/MasterImportController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Entity/BulkUpload_t.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Entity/MappingRule.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Repository/BulkUpload_Repository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Repository/MappingRuleRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Services/BulkUpload_Service.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Services/MappingRuleService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Communication/Services/EmailNotificationService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/CredentialDatabase/Config/Databaseconfig.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/CredentialDatabase/Service/SurevaultService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Controller/Dashboard2.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Controller/Dashbord1Controller.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Entity/Dashbord1_Line.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Entity/Dashbord_Header.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Entity/dashbord_Who_collumn.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Repository/Dashboard_lineRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Repository/HeaderRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Service/HeaderService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/ChartBuilder.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/DashboardSchedule_Controller.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/Dashboard_builder_Controller.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/EmailGenerate.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/PdfController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/PdfService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Entity/DashboardSchedule_t.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Entity/Dashboard_builder_t.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Repository/DashboardSchedule_Repository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Repository/Dashboard_builder_Repository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Services/DashboardSchedule_Service.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Services/Dashboard_builder_Service.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Services/EmailGenerateService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/DataLake/Controllers/Data_lakeController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/DataLake/Controllers/XmlApiExample.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/DataLake/Controllers/tokenFree_Data_lakeController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/DataLake/Entity/BatchData.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/DataLake/Entity/Data_lake.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/DataLake/Repository/BatchDataRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/DataLake/Repository/Data_lakeRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/DataLake/Services/Data_lakeService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Controllers/AngularHtmlCode.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Controllers/FabricIcardController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Controllers/LayoutPdf.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Controllers/MyImageReplacedElementFactory.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Controllers/PageController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Controllers/TestCode.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Entity/FabricIcard.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Entity/PageSource.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Repository/FabricIcardRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Repository/PageSourceRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Services/FabricIcardService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Services/LayoutPdfService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcardLines/Controllers/FabricIcardLinesController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcardLines/Controllers/JsonKeysController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcardLines/Entity/Dummyfabric.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcardLines/Entity/FabricIcardLines.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcardLines/Repository/FabricIcardLinesRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcardLines/Services/FabricIcardLinesService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Controllers/UploadeddocsController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Entity/Uploadeddocs.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Repository/UploadFileRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Services/FileuploadService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Services/UploadedFileService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/controller/Filecontroller.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/helper/Fileupload_helper.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FromExtensionJson/Controllers/FromExtensionJson_Controller.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FromExtensionJson/Entity/FromExtensionJson_t.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FromExtensionJson/Repository/FromExtensionJson_Repository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FromExtensionJson/Services/FromExtensionJson_Service.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Gaurav_testing/Controllers/Gaurav_testing_Controller.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Gaurav_testing/Entity/Gaurav_testing_t.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Gaurav_testing/Repository/Gaurav_testing_Repository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Gaurav_testing/Services/Gaurav_testing_Service.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Modules_t_back/Controllers/Modules_tController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Modules_t_back/Entity/Modules_t.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Modules_t_back/Repository/Modules_tRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Modules_t_back/Services/Modules_tService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/MultiTimeZone/Component/WhoColumnAspect.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/MultiTimeZone/Component/WhoColumnInterceptor.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/MultiTimeZone/Services/TimezoneService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/MultiTimeZone/config/HibernateConfig.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Notification/Controller/NotController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Notification/Entity/NotEntity.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Notification/Repository/NotRepo.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Notification/Services/NotificationEntityService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/OpenAi/Controller/OpenAiController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/OpenAi/Models/openAi.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/OpenAi/Services/OpenAiServices.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Paytm/AppConfig.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Paytm/PaytmPageController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Paytm/PaytmPayment.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Razorpay/RazorpayController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Razorpay/RazorpayDTO.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Razorpay/RazorpayRepo.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/RealNetApp.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder/Controllers/FileConverterController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder/Controllers/Rpt_builder_Controller.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder/Entity/Rpt_builder_t.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder/Repository/Rpt_builder_Repository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder/Services/Rpt_builder_Service.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Controllers/ReportHtmlController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Controllers/RpDownloadController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Controllers/Rpt_builder2_Controller.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Entity/Rpt_builder2_t.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Repository/Rpt_builder2_Repository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Services/Rpt_builder2_Service.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2_lines/Controllers/Rpt_builder2_lines_Controller.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2_lines/Entity/Rpt_builder2_lines_t.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2_lines/Repository/Rpt_builder2_lines_Repository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2_lines/Services/Rpt_builder2_lines_Service.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/SequenceGenerator/Controller/SequenceController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/SequenceGenerator/Entity/Sequence.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/SequenceGenerator/Service/SequenceService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/SequenceGenerator/repo/SeqRepo.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/SureConnect/Controller/SureController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/SureConnect/Controller/Sure_Postman_Api.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/SureConnect/Entities/Sure_Connect.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/SureConnect/Repository/SureRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/SureConnect/Service/SureService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/WhoColumn/Entity/Extension.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/WhoColumn/Entity/Who_column.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/WhoColumn/Services/WhoColumnService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Controller/DDController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Controller/SecTeamController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Controller/SecWorkSpaceUSerController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Controller/Sec_team_members_Controller.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Controller/WorkspaceController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Entity/DDTable.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Entity/SecUsedDd.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Entity/Sec_team_members.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Entity/Sec_teams.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Entity/Sec_workspace.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Entity/Sec_workspace_users.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Repository/SecWorkspaceUserRepo.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Repository/Sec_team_MemberRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Repository/Sec_teams_Repository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Repository/WorkspaceRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Service/SecTeam_MemberService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Service/Sec_teamService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Service/WorkspaceService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Controllers/Api_registery_headerController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Controllers/Api_registery_lineController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Controllers/GeneratetokenController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Entity/Api_registery_header.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Entity/Api_registery_line.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Entity/Token_registery.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Repository/Api_registery_headerRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Repository/Api_registery_lineRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Repository/Token_registery_Repository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Services/Api_registery_headerService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Services/Api_registery_lineService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Services/GeneratetokenService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/AppConfig.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/CorsFilter.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/EmailService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/HttpLoggingFilter.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/JWTConstant.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/JwtAuthenticationEntryPoint.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/JwtAuthenticationFilter.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/MessageSourceConfig.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/MyCommandLineRunner.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/SecurityConfig.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/SwaggerConfig.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/TokenProvider.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/sqlite/SQLiteDialect.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/sqlite/SQLiteIdentityColumnSupport.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/sqlite/SQLiteUtil.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/dashboard_builder_authsec/Controllers/DashboardController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/dashboard_builder_authsec/Entity/Dashboard.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/dashboard_builder_authsec/Repository/DashboardRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/dashboard_builder_authsec/Services/DashboardService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/event_management/Controllers/Event_ManagementController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/event_management/Entity/Event_Management.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/event_management/Repository/Event_ManagementRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/event_management/Services/Event_ManagementService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/exceptions/GlobalExceptionHandler.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/exceptions/InvalidUserDataException.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/exceptions/OperationResponse.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/exceptions/ResourceNotFoundException.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/exceptions/StorageException.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/MainController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_DynamicTransactionController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_ExtensionController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Forms_Setup_Controller.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Function_Register_Controller.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Main_Menu_Controller.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Menu_Group_Controller.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Menu_Group_Line_Controller.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Menu_Register_Controller.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller1/LoadMenuController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller1/MenuController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller1/QueryController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller1/TokenFreeController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/DropDownDTO.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Error.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/ErrorPojo.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/ModuleCopyDTO.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Modulemini.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/ProjectMini.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_AuditEntity.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Dynamic_Transaction.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Ext_Fields.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_ExtensionEntity.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_FlexEntity.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Forms_Component_Setup.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Forms_Setup.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Function_Register.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Instance_Type.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Lookup_Values.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Main_Menu.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Menu_Group_Header.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Menu_Group_Line.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Menu_Register.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Sub_Menu.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Who_AccId_Column.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Who_Columns.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/SingleSerise.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Success.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/SuccessPojo.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Version.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/WireFrameCopyDTO.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/projectCopyDTO.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/ExtensionModel.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/GrpMenuAccess.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/GrpMenuAccesscompositeKey.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/MIXMENUN.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/MenuDet.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/MixMenu.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/MixMenuNew.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/Query.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/menudet_who.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/ExtFieldRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/LookUpRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/RnGroupLineRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_DynamicTransactionRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_Forms_Setup_Repository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_Function_Register_Repository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_InstanceTypeRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_LookUpRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_Main_Menu_Repository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_Menu_Group_Repository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_Menu_Register_Repository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository1/GrpMenuAccessRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository1/MenuDetRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository1/QueryRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/CustomResponse.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/EntityResponse.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/OperationResponse.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/PageResponse.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_DynamicTransactionResponse.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_Forms_SetupResponse.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_Function_Register_Response.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_Main_Menu_Response.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_Menu_Group_Response.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_Menu_Register_Response.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/SingleDataSeriseResponse.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/ExtFieldService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/ExtFieldServiceImpl.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/FileStorageService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/RnGroupMenuLineServiec.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/RnGroupMenuLineServiecImpl.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_DynamicTransactionService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_DynamicTransactionServiceImpl.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Forms_Setup_Service.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Forms_Setup_ServiceImpl.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Function_Register_Service.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Function_Register_ServiceImpl.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Main_Menu_Service.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Main_Menu_ServiceImpl.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Menu_Group_Service.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Menu_Group_ServiceImpl.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Menu_Register_Service.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Menu_Register_ServiceImpl.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service1/GrpMenuAccessServiceImpl.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service1/MenuDetServiceImpl.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service1/SecmenuDetailService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/helper/CnsHelper.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging/LogEntity.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging/LogExecutionTime.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging/LoggingAspect.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging/NoLogging.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging/SecurityNoLogging.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/ExceptionLoggingController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/PatternLayoutWithUserContext.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/SessionConverter.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/UserConverter.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/controller/AppUserLogController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/controller/AppUserLogController2.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/entity/AppUserLog.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/repository/AppUserLogginRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/service/LoggingService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/Controller/RbController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/Controller/Rn_report_builder_Controller.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/Controller/servicereportcontroller.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/entity/RnTableListDto.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/entity/Rn_Rb_Adhoc.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/entity/Rn_Rb_Date_String.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/entity/Rn_Rb_Std_Param.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/entity/Rn_Rb_Where_Param.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/entity/Rn_rb_Column.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/entity/Rn_rb_Tables.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/entity/Rn_reportDTO.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/entity/Rn_report_builder.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/repository/RnTableDtoRepo.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/repository/Rn_column_Repository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/repository/Rn_rb_adhoc_repository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/repository/Rn_rb_date_param_repository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/repository/Rn_rb_std_repository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/repository/Rn_rb_where_param_repository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/repository/Rn_report_builder_repository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/repository/Rn_tables_Repository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/response/MasterResponse.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/response/Rn_adhocParamResponse.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/response/Rn_columnDTO.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/response/Rn_columnResponse.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/response/Rn_dateParamResponse.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/response/Rn_report_builder_response.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/response/Rn_stdParamResponse.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/response/Rn_tableResponse.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/response/Rn_whereParamResponse.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_adhoc_param_service.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_adhoc_param_serviceImpl.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_column_service.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_column_serviceImpl.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_date_param_service.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_date_param_serviceImpl.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_std_param_service.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_std_param_serviceImpl.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_tables_service.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_tables_serviceImpl.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_where_param_service.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_where_param_serviceImpl.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_report_builder_service.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_report_builder_serviceIpml.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/realm/Controllers/RealmController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/realm/Entity/Realm.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/realm/Repository/RealmRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/realm/Services/RealmService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Controller/Report_buildercontroller.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Entity/ReportQueryDataDTO.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Entity/Rp_Line.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Entity/Rp_Who_collumn.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Entity/Rp_builder.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Repository/ReportRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Repository/Rp_lineRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Service/Report_builderService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/session/Repository/TokenRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/session/Service/TokenBlacklistService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/session/controller/SessionController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/session/entity/AboutWork.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/session/entity/SessionItem.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/session/entity/Token.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/session/entity/VersionModel.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/session/response/SessionResponse.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sqlworkbech/Controller/SqlController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sqlworkbech/Entity/SqlModel.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sqlworkbech/Repository/SqlRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/startCoder/Controller/StarCoderController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/startCoder/Services/StarCoderService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/stepperworkflow/Controllers/Stepper_table_configController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/stepperworkflow/Controllers/Stepper_workflowController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/stepperworkflow/Entity/Stepper_table_config.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/stepperworkflow/Entity/Stepper_workflow.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/stepperworkflow/Repository/Stepper_table_configRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/stepperworkflow/Repository/Stepper_workflowRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/stepperworkflow/Services/Stepper_table_configService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/stepperworkflow/Services/Stepper_workflowService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/controller/SysParamController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/entity/SysParamEntity.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/entity/SysParamUpload.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/repository/SysParamRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/repository/SysparamUploadRepo.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/response/SysParamResponse.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/service/SysParamService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/service/SysParamServiceImpl.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/controller/Controller.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/controller/DynamicTemplateController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/controller/ExcelController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/controller/HtmlToPngController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/controller/ImageUploadController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/controller/ImportDataRequest.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/entity/ImageUpload.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/entity/TemplateFileUpload.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/repository/ImageUploadRepo.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/repository/TemplatedataRepo.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/service/CSVService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/service/DynamicTemplateService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/service/ExcelDataService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/service/FileUploadService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/service/ImageUploadService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/CompanyDto.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Email.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/EmailRequest.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Login.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/LoginUser.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/PasswordResetRequest.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Provider.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Rn_Who_AccId_Column.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Rn_Who_Columns.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Role.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/RoleUpdateDto.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Sys_Accounts.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/User.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/UserDto.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/UserProfileDTO.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/controller/UserListController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/entity/UserImage.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/entity/UserList.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/repository/UserImageRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/repository/UserListRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/service/UserListService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/service/impl/UserListServiceImpl.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller/RoleController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller/UserController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/AppUserController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/AppUserGrpController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/AppuserSessionController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/PositonAndDepartmentController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/SysAccountController.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/WorkSpaceController1.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/CompanyDto.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/CustomUserDetails.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/ERole.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/Email.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/EmailRequest.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/GenericResponse.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/Login.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/LoginUser.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/PasswordResetRequest.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/PasswordResetToken.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/Role.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/RoleUpdateDto.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/Sys_Accounts.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/UserDto.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/UserProfileDTO.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUser.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserDepartment.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserDto.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserLoginHist.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserPasswlog.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserPasswlogCompositeKey.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserPosition.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserPrinciple.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserRole.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserSessions.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserSessionsCompositeKey.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUser_who_column.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/Registration.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/SignUp.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository/AboutWorkRepo.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository/CompanyRepo.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository/RoleRepo.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository/SysAccountRepo.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository/UserRepo.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/AppUserDepartmentRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/AppUserPositionRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/AppUserRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/AppUserRoleRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/AppUserSessionsRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/passwordTokenRepository.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/response/MessageResponse.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/response/ServiceResponse.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/response/UserItem.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/response/UserResponse.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/AboutServiceImple.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/AboutWorkService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/CompanyService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/CompanyServiceImpl.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/RoleService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/RoleServiceImpl.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/UserService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/AppUserRoleServiceImpl.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/AppUserService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/AppUserServiceImpl.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/AppUserSessionsServiceImpl.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/PositionAndDepartmentServiceImpl.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/SysAccountService.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/utils/Constant.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/utils/Port_Constant.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/utils/WireFrameConstant.java create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/resources/MyprojectUI_view.properties create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/resources/application.properties create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/resources/banner_txt.txt create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/resources/data.sql create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/resources/logback.xml create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/resources/messages.properties create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/resources/note.txt create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/resources/schema.sql create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/app-1.0.0.jar.original create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/META-INF/MANIFEST.MF create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/META-INF/maven/com.realnet/app/pom.properties create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/META-INF/maven/com.realnet/app/pom.xml create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/MyprojectUI_view.properties create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/application.properties create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/banner_txt.txt create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Accesstype_back/Controllers/AccesstypeController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Accesstype_back/Controllers/AgyanaController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Accesstype_back/Controllers/AraniController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Accesstype_back/Controllers/TokenFreeAccesstypeController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Accesstype_back/Entity/Accesstype.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Accesstype_back/Entity/Agyana.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Accesstype_back/Entity/Arani.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Accesstype_back/Repository/AccesstypeRepository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Accesstype_back/Repository/AgyanaRepository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Accesstype_back/Repository/AraniRepository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Accesstype_back/Services/AccesstypeService.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Accesstype_back/Services/AraniService.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Controllers/ApprovalHistory_Controller.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Controllers/ApprovalQueue_Controller.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Dto/ApprovalNote_SO.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Dto/ApprovalQueue_SO.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Dto/BillingPeriodsResponse.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Dto/ServiceOrderDto.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Dto/ServiceWithDiscount.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Entitys/ApprovalHistory_t.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Entitys/BillingPeriods_t.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Entitys/CustomerRates_t.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Job/Entity/BillingJobEntity.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Job/Repository/BillingJobRepository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Repositorys/ApprovalHistory_Repository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Repositorys/ApprovalQueue_Repository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Repositorys/ApprovalReturnHistory_Repo.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Services/ApprovalHistory_Service.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Services/ApprovalQueueService.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Builders/Entity/Builder_entity_t.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Builders/Repos/BuilderRepository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Builders/Services/BuilderService.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/BulkUpload/Controllers/BulkUpload_Controller.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/BulkUpload/Controllers/DataImportController$1.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/BulkUpload/Controllers/DataImportController$2.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/BulkUpload/Controllers/DataImportController$3.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/BulkUpload/Controllers/DataImportController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/BulkUpload/Controllers/MappingRuleController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/BulkUpload/Controllers/MasterImportController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/BulkUpload/Entity/BulkUpload_t.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/BulkUpload/Entity/MappingRule.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/BulkUpload/Repository/BulkUpload_Repository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/BulkUpload/Repository/MappingRuleRepository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/BulkUpload/Services/BulkUpload_Service.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/BulkUpload/Services/MappingRuleService.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/CredentialDatabase/Service/SurevaultService.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard1/Controller/Dashbord1Controller.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard1/Entity/Dashbord1_Line.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard1/Entity/Dashbord_Header.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard1/Entity/dashbord_Who_collumn.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard1/Repository/Dashboard_lineRepository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard1/Repository/HeaderRepository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard1/Service/HeaderService.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Controllers/ChartBuilder.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Controllers/DashboardSchedule_Controller.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Controllers/Dashboard_builder_Controller.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Entity/DashboardSchedule_t.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Entity/Dashboard_builder_t.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Repository/DashboardSchedule_Repository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Repository/Dashboard_builder_Repository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Services/DashboardSchedule_Service.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Services/Dashboard_builder_Service.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FabricIcard/Controllers/AngularHtmlCode.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FabricIcard/Controllers/FabricIcardController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FabricIcard/Controllers/LayoutPdf.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FabricIcard/Controllers/PageController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FabricIcard/Entity/FabricIcard.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FabricIcard/Entity/PageSource.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FabricIcard/Repository/FabricIcardRepository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FabricIcard/Repository/PageSourceRepository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FabricIcard/Services/FabricIcardService.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FabricIcard/Services/LayoutPdfService.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FabricIcardLines/Controllers/FabricIcardLinesController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FabricIcardLines/Controllers/JsonKeysController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FabricIcardLines/Entity/Dummyfabric.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FabricIcardLines/Entity/FabricIcardLines.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FabricIcardLines/Repository/FabricIcardLinesRepository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FabricIcardLines/Services/FabricIcardLinesService.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FileUpload/Controllers/UploadeddocsController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FileUpload/Entity/Uploadeddocs.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FileUpload/Repository/UploadFileRepository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FileUpload/Services/FileuploadService.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FileUpload/Services/UploadedFileService.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FileUpload/helper/Fileupload_helper.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FromExtensionJson/Controllers/FromExtensionJson_Controller.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FromExtensionJson/Entity/FromExtensionJson_t.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FromExtensionJson/Repository/FromExtensionJson_Repository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FromExtensionJson/Services/FromExtensionJson_Service.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Gaurav_testing/Controllers/Gaurav_testing_Controller.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Gaurav_testing/Entity/Gaurav_testing_t.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Gaurav_testing/Repository/Gaurav_testing_Repository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Gaurav_testing/Services/Gaurav_testing_Service.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Modules_t_back/Controllers/Modules_tController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Modules_t_back/Entity/Modules_t.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Modules_t_back/Repository/Modules_tRepository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Modules_t_back/Services/Modules_tService.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/MultiTimeZone/Component/WhoColumnAspect.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/MultiTimeZone/Services/TimezoneService.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Notification/Controller/NotController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Notification/Entity/NotEntity.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Notification/Repository/NotRepo.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Notification/Services/NotificationEntityService.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/OpenAi/Controller/OpenAiController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/OpenAi/Models/openAi.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/OpenAi/Services/OpenAiServices.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Payment/Paytm/AppConfig.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Payment/Paytm/PaytmPayment.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Payment/Razorpay/RazorpayController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Payment/Razorpay/RazorpayDTO$RazorpayDTOBuilder.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Payment/Razorpay/RazorpayDTO.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Payment/Razorpay/RazorpayRepo.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/RealNetApp.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder/Controllers/FileConverterController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder/Controllers/Rpt_builder_Controller.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder/Entity/Rpt_builder_t.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder/Repository/Rpt_builder_Repository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder/Services/Rpt_builder_Service.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2/Controllers/ReportHtmlController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2/Controllers/RpDownloadController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2/Controllers/Rpt_builder2_Controller.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2/Entity/Rpt_builder2_t.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2/Repository/Rpt_builder2_Repository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2/Services/Rpt_builder2_Service.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2_lines/Controllers/Rpt_builder2_lines_Controller.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2_lines/Entity/Rpt_builder2_lines_t.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2_lines/Repository/Rpt_builder2_lines_Repository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2_lines/Services/Rpt_builder2_lines_Service.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/SequenceGenerator/Controller/SequenceController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/SequenceGenerator/Entity/Sequence.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/SequenceGenerator/Service/SequenceService.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/SequenceGenerator/repo/SeqRepo.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/WhoColumn/Entity/Extension.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/WhoColumn/Entity/Who_column.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/WhoColumn/Services/WhoColumnService.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/api_registery/Controllers/Api_registery_headerController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/api_registery/Controllers/Api_registery_lineController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/api_registery/Controllers/GeneratetokenController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/api_registery/Entity/Api_registery_header.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/api_registery/Entity/Api_registery_line.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/api_registery/Entity/Token_registery.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/api_registery/Repository/Api_registery_headerRepository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/api_registery/Repository/Api_registery_lineRepository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/api_registery/Repository/Token_registery_Repository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/api_registery/Services/Api_registery_headerService.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/api_registery/Services/Api_registery_lineService.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/api_registery/Services/GeneratetokenService.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/config/AppConfig.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/config/CorsFilter.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/config/EmailService.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/config/JWTConstant.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/config/JwtAuthenticationEntryPoint.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/config/JwtAuthenticationFilter.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/config/MessageSourceConfig.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/config/MyCommandLineRunner.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/config/SecurityConfig.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/config/SwaggerConfig$1.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/config/SwaggerConfig.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/config/TokenProvider.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/dashboard_builder_authsec/Controllers/DashboardController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/dashboard_builder_authsec/Entity/Dashboard.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/dashboard_builder_authsec/Repository/DashboardRepository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/dashboard_builder_authsec/Services/DashboardService.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/event_management/Controllers/Event_ManagementController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/event_management/Entity/Event_Management.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/event_management/Repository/Event_ManagementRepository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/event_management/Services/Event_ManagementService.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/exceptions/GlobalExceptionHandler.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/exceptions/InvalidUserDataException.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/exceptions/OperationResponse$ResponseStatusEnum.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/exceptions/OperationResponse.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/exceptions/ResourceNotFoundException.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/exceptions/StorageException.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/MainController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_DynamicTransactionController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_ExtensionController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_Forms_Setup_Controller.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_Function_Register_Controller.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_Main_Menu_Controller.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_Menu_Group_Controller.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_Menu_Group_Line_Controller.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_Menu_Register_Controller.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller1/LoadMenuController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller1/MenuController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller1/QueryController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller1/TokenFreeController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/DropDownDTO.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Error.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/ErrorPojo.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/ModuleCopyDTO.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Modulemini.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/ProjectMini.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_AuditEntity.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Dynamic_Transaction.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Ext_Fields.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_ExtensionEntity.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_FlexEntity.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Forms_Component_Setup.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Forms_Setup.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Function_Register.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Instance_Type.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Lookup_Values.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Main_Menu.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Menu_Group_Header.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Menu_Group_Line.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Menu_Register.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Sub_Menu.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Who_AccId_Column.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Who_Columns.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/SingleSerise.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Success.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/SuccessPojo.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Version.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/WireFrameCopyDTO.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/projectCopyDTO.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity1/ExtensionModel.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity1/GrpMenuAccess.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity1/GrpMenuAccesscompositeKey.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity1/MIXMENUN.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity1/MenuDet.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity1/MixMenu.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity1/MixMenuNew.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity1/Query.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity1/menudet_who.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/ExtFieldRepository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/LookUpRepository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/RnGroupLineRepository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/Rn_DynamicTransactionRepository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/Rn_Forms_Setup_Repository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/Rn_Function_Register_Repository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/Rn_InstanceTypeRepository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/Rn_LookUpRepository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/Rn_Main_Menu_Repository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/Rn_Menu_Group_Repository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/Rn_Menu_Register_Repository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository1/GrpMenuAccessRepository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository1/MenuDetRepository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository1/QueryRepository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/CustomResponse.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/EntityResponse.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/OperationResponse$ResponseStatusEnum.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/OperationResponse.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/PageResponse.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/Rn_DynamicTransactionResponse.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/Rn_Forms_SetupResponse.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/Rn_Function_Register_Response.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/Rn_Main_Menu_Response.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/Rn_Menu_Group_Response.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/Rn_Menu_Register_Response.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/SingleDataSeriseResponse.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/ExtFieldService.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/ExtFieldServiceImpl.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/FileStorageService.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/RnGroupMenuLineServiec.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/RnGroupMenuLineServiecImpl.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_DynamicTransactionService.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_DynamicTransactionServiceImpl.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Forms_Setup_Service.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Forms_Setup_ServiceImpl.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Function_Register_Service.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Function_Register_ServiceImpl.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Main_Menu_Service.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Main_Menu_ServiceImpl.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Menu_Group_Service.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Menu_Group_ServiceImpl.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Menu_Register_Service.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Menu_Register_ServiceImpl.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service1/GrpMenuAccessServiceImpl.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service1/MenuDetServiceImpl.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service1/SecmenuDetailService.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/logging/LogEntity.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/logging/LogExecutionTime.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/logging/LoggingAspect.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/logging/NoLogging.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/logging/SecurityNoLogging.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/logging1/PatternLayoutWithUserContext.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/logging1/SessionConverter.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/logging1/UserConverter.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/logging1/controller/AppUserLogController$1.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/logging1/controller/AppUserLogController$2.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/logging1/controller/AppUserLogController$3.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/logging1/controller/AppUserLogController$4.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/logging1/controller/AppUserLogController$5.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/logging1/controller/AppUserLogController$6.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/logging1/controller/AppUserLogController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/logging1/controller/AppUserLogController2.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/logging1/entity/AppUserLog.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/logging1/repository/AppUserLogginRepository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/logging1/service/LoggingService.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/Controller/RbController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/Controller/Rn_report_builder_Controller.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/Controller/servicereportcontroller.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/entity/RnTableListDto.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/entity/Rn_Rb_Adhoc.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/entity/Rn_Rb_Date_String.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/entity/Rn_Rb_Std_Param.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/entity/Rn_Rb_Where_Param.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/entity/Rn_rb_Column.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/entity/Rn_rb_Tables.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/entity/Rn_reportDTO.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/entity/Rn_report_builder.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/repository/RnTableDtoRepo.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/repository/Rn_column_Repository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/repository/Rn_rb_adhoc_repository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/repository/Rn_rb_date_param_repository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/repository/Rn_rb_std_repository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/repository/Rn_rb_where_param_repository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/repository/Rn_report_builder_repository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/repository/Rn_tables_Repository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/response/MasterResponse.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/response/Rn_adhocParamResponse.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/response/Rn_columnDTO.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/response/Rn_columnResponse.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/response/Rn_dateParamResponse.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/response/Rn_report_builder_response.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/response/Rn_stdParamResponse.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/response/Rn_tableResponse.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/response/Rn_whereParamResponse.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/service/Rn_rb_adhoc_param_service.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/service/Rn_rb_adhoc_param_serviceImpl.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/service/Rn_rb_column_service.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/service/Rn_rb_column_serviceImpl.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/service/Rn_rb_date_param_service.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/service/Rn_rb_date_param_serviceImpl.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/service/Rn_rb_std_param_service.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/service/Rn_rb_std_param_serviceImpl.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/service/Rn_rb_tables_service.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/service/Rn_rb_tables_serviceImpl.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/service/Rn_rb_where_param_service.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/service/Rn_rb_where_param_serviceImpl.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/service/Rn_report_builder_service.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/service/Rn_report_builder_serviceIpml.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/realm/Controllers/RealmController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/realm/Entity/Realm.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/realm/Repository/RealmRepository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/realm/Services/RealmService.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Controller/Report_buildercontroller.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Entity/ReportQueryDataDTO.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Entity/Rp_Line.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Entity/Rp_Who_collumn.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Entity/Rp_builder.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Repository/ReportRepository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Repository/Rp_lineRepository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Service/Report_builderService.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/session/Repository/TokenRepository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/session/Service/TokenBlacklistService.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/session/controller/SessionController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/session/entity/AboutWork.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/session/entity/SessionItem.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/session/entity/Token.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/session/entity/VersionModel.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/session/response/SessionResponse.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/sqlworkbech/Controller/SqlController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/sqlworkbech/Entity/SqlModel.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/sqlworkbech/Repository/SqlRepository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/startCoder/Controller/StarCoderController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/startCoder/Services/StarCoderService.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/sysparameter/controller/SysParamController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/sysparameter/entity/SysParamEntity.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/sysparameter/entity/SysParamUpload.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/sysparameter/repository/SysParamRepository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/sysparameter/repository/SysparamUploadRepo.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/sysparameter/response/SysParamResponse.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/sysparameter/service/SysParamService.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/sysparameter/service/SysParamServiceImpl.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/template/controller/DynamicTemplateController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/template/controller/ExcelController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/template/controller/HtmlToPngController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/template/controller/ImageUploadController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/template/controller/ImportDataRequest.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/template/entity/ImageUpload.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/template/entity/TemplateFileUpload.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/template/repository/ImageUploadRepo.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/template/repository/TemplatedataRepo.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/template/service/CSVService.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/template/service/DynamicTemplateService.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/template/service/FileUploadService.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/template/service/ImageUploadService.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/CompanyDto.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/Email.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/EmailRequest.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/Login.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/LoginUser.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/PasswordResetRequest.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/Provider.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/Rn_Who_AccId_Column.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/Rn_Who_Columns.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/Role.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/RoleUpdateDto.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/Sys_Accounts.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/User.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/UserDto.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/UserProfileDTO.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userlist/controller/UserListController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userlist/entity/UserImage.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userlist/entity/UserList.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userlist/repository/UserImageRepository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userlist/repository/UserListRepository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userlist/service/UserListService.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userlist/service/impl/UserListServiceImpl.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/controller/RoleController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/controller/UserController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/controller1/AppUserController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/controller1/AppUserGrpController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/controller1/AppuserSessionController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/controller1/PositonAndDepartmentController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/controller1/SysAccountController.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/CompanyDto.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/ERole.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/Email.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/EmailRequest.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/GenericResponse.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/Login.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/LoginUser.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/PasswordResetRequest.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/PasswordResetToken.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/Role.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/RoleUpdateDto.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/Sys_Accounts.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/UserDto.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/UserProfileDTO.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUser.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserDepartment.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserDto.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserLoginHist.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserPasswlog.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserPasswlogCompositeKey.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserPosition.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserPrinciple.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserRole.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserSessions.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserSessionsCompositeKey.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUser_who_column.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/Registration.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/SignUp.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/repository/AboutWorkRepo.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/repository/CompanyRepo.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/repository/RoleRepo.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/repository/SysAccountRepo.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/repository1/AppUserDepartmentRepository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/repository1/AppUserPositionRepository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/repository1/AppUserRepository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/repository1/AppUserRoleRepository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/repository1/AppUserSessionsRepository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/repository1/passwordTokenRepository.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/response/MessageResponse.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/response/ServiceResponse.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/response/UserItem.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/response/UserResponse.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/service/AboutServiceImple.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/service/AboutWorkService.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/service/CompanyService.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/service/RoleService.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/service/RoleServiceImpl.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/service1/AppUserRoleServiceImpl.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/service1/AppUserService.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/service1/AppUserServiceImpl.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/service1/AppUserSessionsServiceImpl.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/service1/PositionAndDepartmentServiceImpl.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/service1/SysAccountService.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/utils/Constant.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/utils/Port_Constant.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/utils/WireFrameConstant$FormType.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/utils/WireFrameConstant.class create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/data.sql create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/logback.xml create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/messages.properties create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/note.txt create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/schema.sql create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/maven-archiver/pom.properties create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/sonar/.sonar_lock create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/sonar/report-task.txt create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/test.txt create mode 100644 calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/test.xml create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.editorconfig create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.github/workflows/blank.yml create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.gitignore create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.sureai/.directory_structure.md create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.sureai/.io8coder_breakdown.md create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.sureai/.io8coder_plan.md create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.sureai/analysis_document.md create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.sureai/architecture_document.md create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.sureai/prd_document.md create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.sureai/project_plan.md create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.sureai/requirements_document.md create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.sureai/sprint_plan.md create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.sureai/tech_stack_document.md create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.vscode/settings.json create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/README.md create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/README.txt create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/SECURITY.md create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/angular.json create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/browserslist create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/e2e/protractor.conf.js create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/e2e/src/app.e2e-spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/e2e/src/app.po.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/e2e/tsconfig.json create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/karma.conf.js create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/package-lock.json create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/package.json create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/app-config.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/app-routing.module.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/app.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/app.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/app.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/app.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/app.module.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/global.model.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/admin/role.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/admin/systemparameter.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/admin/user.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/admin/userdepartment.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/admin/usergrpma.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/admin/usermaintaince.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/admin/userposition.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/ActiveTechnology.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/AdhocParam.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/Audit.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/Bcf_TechnologyStack.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/ColumnList.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/DateParam.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/FileData.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/FileDetails.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/Module_Setup.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/Project_setup.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/RbColumns.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/RbTables.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/ReportBuilder.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/ReportBuilderQuery.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/Rn_Cff_ActionBuilder_Header.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/Rn_Cff_ActionBuilder_Line.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/Rn_Fb_Header.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/Rn_Fb_Lines.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/Rn_Main_Menu.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/Rn_Sub_Menu.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/StdParam.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/WhereParam.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/WireFrame.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/dashboard.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/gitfile.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/rptBuilder.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/suregit.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/surename.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/surestar.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/webpagebuilder.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/Bcf_Exception_Rule_Library .ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/Bcf_Extractor.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/Bcf_Extractor_Params.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/Bcf_Rule_Library.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/BiDashHeader.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/BiDashLine.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/BiWidget.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/DynamicForm.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/ExtensionField.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/Mapping.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/Rn_Forms_Component_Setup.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/Rn_Forms_Setup.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/RuleCopy.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/Studentadd.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/TableList.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/ValidationError.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/apiregisteryline.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/book.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/department.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/health_checkup.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/play.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/table-setup.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/university.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/about-work/about-work.component.css create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/about-work/about-work.component.css.map create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/about-work/about-work.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/about-work/about-work.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/about-work/about-work.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/about-work/about-work.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/about-work/customer.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/addguest/addguest.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/addguest/addguest.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/addguest/addguest.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/addguest/addguest.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/emailverification/emailverification.component.css create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/emailverification/emailverification.component.css.map create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/emailverification/emailverification.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/emailverification/emailverification.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/emailverification/emailverification.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/emailverification/emailverification.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotpassword/forgotpassword.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotpassword/forgotpassword.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotpassword/forgotpassword.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotpassword/forgotpassword.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotresetpassword/forgotresetpassword.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotresetpassword/forgotresetpassword.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotresetpassword/forgotresetpassword.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotresetpassword/forgotresetpassword.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotresetpassword1/forgotresetpassword1.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotresetpassword1/forgotresetpassword1.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotresetpassword1/forgotresetpassword1.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotresetpassword1/forgotresetpassword1.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/login-page/login-page.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/login-page/login-page.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/login-page/login-page.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/login-page/login-page.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/login-page/login_environment.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/login-routing.module.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/login.module.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/logo/logo.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/logo/logo.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/logo/logo.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/BuilderComponents/stepperworkflow/Stepper_workflow/Stepper_workflow.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/BuilderComponents/stepperworkflow/Stepper_workflow/Stepper_workflow.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/BuilderComponents/stepperworkflow/Stepper_workflow/Stepper_workflow.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/BuilderComponents/stepperworkflow/Stepper_workflow/Stepper_workflow.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/BuilderComponents/stepperworkflow/Stepper_workflow/Stepper_workflow_cardvariable.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/BuilderComponents/test.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/about/about.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/about/about.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/about/about.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/about/about.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/about/about.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/about/about.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/about/about.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/about/about.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/accesstype/accesstype.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/accesstype/accesstype.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/accesstype/accesstype.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/accesstype/accesstype.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentmaster/documentmaster.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentmaster/documentmaster.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentmaster/documentmaster.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentmaster/documentmaster.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentreference/documentreference.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentreference/documentreference.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentreference/documentreference.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentreference/documentreference.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentstructure/documentstructure.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentstructure/documentstructure.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentstructure/documentstructure.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentstructure/documentstructure.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/all/all-menu-group.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/all/all-menu-group.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/all/all-menu-group.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/edit/edit-menu-group.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/edit/edit-menu-group.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/edit/edit-menu-group.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/menu-group.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/menu-group.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/menu-group.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/read-only/readonly-menu-group.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/read-only/readonly-menu-group.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/read-only/readonly-menu-group.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/add-menur/add-menur.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/add-menur/add-menur.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/add-menur/add-menur.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/add-menur/add-menur.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/all-menur/all-menur.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/all-menur/all-menur.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/all-menur/all-menur.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/all-menur/all-menur.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/edit-menur/edit-menur.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/edit-menur/edit-menur.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/edit-menur/edit-menur.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/edit-menur/edit-menur.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/menu-register.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/menu-register.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/menu-register.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/menu-register.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/readonly-menur/readonly-menur.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/readonly-menur/readonly-menur.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/readonly-menur/readonly-menur.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/readonly-menur/readonly-menur.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menuaccesscontrol/menuaccesscontrol.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menuaccesscontrol/menuaccesscontrol.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menuaccesscontrol/menuaccesscontrol.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menuaccesscontrol/menuaccesscontrol.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menumaintance/menumaintance.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menumaintance/menumaintance.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menumaintance/menumaintance.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menumaintance/menumaintance.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/modules/modules.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/modules/modules.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/modules/modules.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/modules/modules.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/myworkspace/myworkspace.component.css create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/myworkspace/myworkspace.component.css.map create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/myworkspace/myworkspace.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/myworkspace/myworkspace.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/myworkspace/myworkspace.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/myworkspace/myworkspace.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/myworkspace/myworkspace.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/password-reset/password-reset.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/password-reset/password-reset.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/password-reset/password-reset.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/password-reset/password-reset.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/profile-setting/profile-setting.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/profile-setting/profile-setting.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/profile-setting/profile-setting.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/profile-setting/profile-setting.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/sessionlogger/sessionlogger.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/sessionlogger/sessionlogger.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/sessionlogger/sessionlogger.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/sessionlogger/sessionlogger.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/submenu/submenu.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/submenu/submenu.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/submenu/submenu.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/submenu/submenu.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/systemparameters/systemparameters.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/systemparameters/systemparameters.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/systemparameters/systemparameters.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/systemparameters/systemparameters.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/user-registration/user-registration.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/user-registration/user-registration.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/user-registration/user-registration.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/user-registration/user-registration.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/user/user.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/user/user.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/user/user.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/user/user.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usergrpmaintenance/usergrpmaintenance.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usergrpmaintenance/usergrpmaintenance.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usergrpmaintenance/usergrpmaintenance.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usergrpmaintenance/usergrpmaintenance.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintance/usermaintance.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintance/usermaintance.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintance/usermaintance.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintance/usermaintance.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintanceadd/usermaintanceadd.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintanceadd/usermaintanceadd.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintanceadd/usermaintanceadd.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintanceadd/usermaintanceadd.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintanceedit/usermaintanceedit.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintanceedit/usermaintanceedit.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintanceedit/usermaintanceedit.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintanceedit/usermaintanceedit.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/addnewdash/addnewdash.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/addnewdash/addnewdash.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/addnewdash/addnewdash.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/addnewdash/addnewdash.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/allnewdash/allnewdash.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/allnewdash/allnewdash.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/allnewdash/allnewdash.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/allnewdash/allnewdash.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/dashboardnew.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/dashboardnew.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/dashboardnew.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/dashboardnew.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/editformnewdash/editformnewdash.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/editformnewdash/editformnewdash.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/editformnewdash/editformnewdash.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/editformnewdash/editformnewdash.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/editnewdash/editnewdash.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/editnewdash/editnewdash.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/editnewdash/editnewdash.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/editnewdash/editnewdash.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bar-chart/bar-chart.component.css create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bar-chart/bar-chart.component.css.map create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bar-chart/bar-chart.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bar-chart/bar-chart.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bar-chart/bar-chart.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bar-chart/bar-chart.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bubble-chart/bubble-chart.component.css create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bubble-chart/bubble-chart.component.css.map create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bubble-chart/bubble-chart.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bubble-chart/bubble-chart.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bubble-chart/bubble-chart.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bubble-chart/bubble-chart.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/doughnut-chart/doughnut-chart.component.css create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/doughnut-chart/doughnut-chart.component.css.map create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/doughnut-chart/doughnut-chart.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/doughnut-chart/doughnut-chart.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/doughnut-chart/doughnut-chart.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/doughnut-chart/doughnut-chart.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/dynamic-chart/dynamic-chart.component.css create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/dynamic-chart/dynamic-chart.component.css.map create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/dynamic-chart/dynamic-chart.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/dynamic-chart/dynamic-chart.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/dynamic-chart/dynamic-chart.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/dynamic-chart/dynamic-chart.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/financial-chart/financial-chart.component.css create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/financial-chart/financial-chart.component.css.map create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/financial-chart/financial-chart.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/financial-chart/financial-chart.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/financial-chart/financial-chart.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/financial-chart/financial-chart.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/grid-view/grid-view.component.css create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/grid-view/grid-view.component.css.map create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/grid-view/grid-view.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/grid-view/grid-view.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/grid-view/grid-view.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/grid-view/grid-view.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/line-chart/line-chart.component.css create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/line-chart/line-chart.component.css.map create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/line-chart/line-chart.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/line-chart/line-chart.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/line-chart/line-chart.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/line-chart/line-chart.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/pie-chart/pie-chart.component.css create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/pie-chart/pie-chart.component.css.map create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/pie-chart/pie-chart.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/pie-chart/pie-chart.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/pie-chart/pie-chart.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/pie-chart/pie-chart.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/polar-chart/polar-chart.component.css create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/polar-chart/polar-chart.component.css.map create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/polar-chart/polar-chart.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/polar-chart/polar-chart.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/polar-chart/polar-chart.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/polar-chart/polar-chart.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/radar-chart/radar-chart.component.css create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/radar-chart/radar-chart.component.css.map create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/radar-chart/radar-chart.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/radar-chart/radar-chart.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/radar-chart/radar-chart.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/radar-chart/radar-chart.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/scatter-chart/scatter-chart.component.css create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/scatter-chart/scatter-chart.component.css.map create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/scatter-chart/scatter-chart.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/scatter-chart/scatter-chart.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/scatter-chart/scatter-chart.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/scatter-chart/scatter-chart.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/to-do-chart/to-do-chart.component.css create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/to-do-chart/to-do-chart.component.css.map create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/to-do-chart/to-do-chart.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/to-do-chart/to-do-chart.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/to-do-chart/to-do-chart.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/to-do-chart/to-do-chart.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/schedule/schedule.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/schedule/schedule.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/schedule/schedule.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/schedule/schedule.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashboardrunner.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashboardrunner.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashboardrunner.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashboardrunner.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerall/dashrunnerall.component.css create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerall/dashrunnerall.component.css.map create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerall/dashrunnerall.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerall/dashrunnerall.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerall/dashrunnerall.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerall/dashrunnerall.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/bar-runner/bar-runner.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/bar-runner/bar-runner.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/bar-runner/bar-runner.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/bar-runner/bar-runner.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/bubble-runner/bubble-runner.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/bubble-runner/bubble-runner.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/bubble-runner/bubble-runner.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/bubble-runner/bubble-runner.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/dashrunner.service.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/dashrunner.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/dashrunnerline.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/dashrunnerline.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/dashrunnerline.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/dashrunnerline.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/doughnut-runner/doughnut-runner.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/doughnut-runner/doughnut-runner.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/doughnut-runner/doughnut-runner.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/doughnut-runner/doughnut-runner.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/grid-runner/grid-runner.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/grid-runner/grid-runner.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/grid-runner/grid-runner.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/grid-runner/grid-runner.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/line-runner/line-runner.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/line-runner/line-runner.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/line-runner/line-runner.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/line-runner/line-runner.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/pie-runner/pie-runner.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/pie-runner/pie-runner.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/pie-runner/pie-runner.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/pie-runner/pie-runner.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/polar-runner/polar-runner.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/polar-runner/polar-runner.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/polar-runner/polar-runner.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/polar-runner/polar-runner.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/radar-runner/radar-runner.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/radar-runner/radar-runner.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/radar-runner/radar-runner.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/radar-runner/radar-runner.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/scatter-runner/scatter-runner.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/scatter-runner/scatter-runner.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/scatter-runner/scatter-runner.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/scatter-runner/scatter-runner.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/todo-runner/todo-runner.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/todo-runner/todo-runner.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/todo-runner/todo-runner.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/todo-runner/todo-runner.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/fileUpload/FileUploadList.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/fileUpload/file-upload-list.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/report-build.component.css create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/report-build.component.css.map create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/report-build.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/report-build.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/report-build.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/report-build.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildadd/reportbuildadd.component.css create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildadd/reportbuildadd.component.css.map create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildadd/reportbuildadd.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildadd/reportbuildadd.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildadd/reportbuildadd.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildadd/reportbuildadd.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildall/reportbuildall.component.css create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildall/reportbuildall.component.css.map create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildall/reportbuildall.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildall/reportbuildall.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildall/reportbuildall.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildall/reportbuildall.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildedit/reportbuildedit.component.css create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildedit/reportbuildedit.component.css.map create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildedit/reportbuildedit.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildedit/reportbuildedit.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildedit/reportbuildedit.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildedit/reportbuildedit.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildquery/reportbuildquery.component.css create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildquery/reportbuildquery.component.css.map create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildquery/reportbuildquery.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildquery/reportbuildquery.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildquery/reportbuildquery.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildquery/reportbuildquery.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2add/report-build2add.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2add/report-build2add.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2add/report-build2add.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2add/report-build2add.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2all/report-build2all.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2all/report-build2all.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2all/report-build2all.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2all/report-build2all.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2edit/report-build2edit.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2edit/report-build2edit.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2edit/report-build2edit.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2edit/report-build2edit.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/report-runner.component.css create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/report-runner.component.css.map create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/report-runner.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/report-runner.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/report-runner.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/report-runner.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunnerall/reportrunnerall.component.css create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunnerall/reportrunnerall.component.css.map create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunnerall/reportrunnerall.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunnerall/reportrunnerall.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunnerall/reportrunnerall.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunnerall/reportrunnerall.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunneredit/reportrunneredit.component.css create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunneredit/reportrunneredit.component.css.map create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunneredit/reportrunneredit.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunneredit/reportrunneredit.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunneredit/reportrunneredit.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunneredit/reportrunneredit.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunneredit2/reportrunneredit2.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunneredit2/reportrunneredit2.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunneredit2/reportrunneredit2.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunneredit2/reportrunneredit2.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/setupicon/setupicon.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/setupicon/setupicon.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/setupicon/setupicon.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/setupicon/setupicon.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimport.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimport.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimport.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimport.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportadd/bulkimportadd.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportadd/bulkimportadd.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportadd/bulkimportadd.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportadd/bulkimportadd.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportall/bulkimportall.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportall/bulkimportall.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportall/bulkimportall.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportall/bulkimportall.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportedit/bulkimportedit.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportedit/bulkimportedit.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportedit/bulkimportedit.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportedit/bulkimportedit.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimporteditline/bulkimporteditline.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimporteditline/bulkimporteditline.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimporteditline/bulkimporteditline.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimporteditline/bulkimporteditline.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportline/bulkimportline.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportline/bulkimportline.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportline/bulkimportline.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportline/bulkimportline.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/datamanagement/datamanagement.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/datamanagement/datamanagement.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/datamanagement/datamanagement.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/datamanagement/datamanagement.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/datamananementworkflow/datamananementworkflow.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/datamananementworkflow/datamananementworkflow.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/datamananementworkflow/datamananementworkflow.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/datamananementworkflow/datamananementworkflow.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingrule.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingrule.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingrule.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingrule.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleadd/mappingruleadd.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleadd/mappingruleadd.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleadd/mappingruleadd.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleadd/mappingruleadd.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleall/mappingruleall.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleall/mappingruleall.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleall/mappingruleall.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleall/mappingruleall.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleedit/mappingruleedit.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleedit/mappingruleedit.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleedit/mappingruleedit.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleedit/mappingruleedit.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/Token_registery/Token_registery.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/Token_registery/Token_registery.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/Token_registery/Token_registery.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/Token_registery/Token_registery.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/Token_registery/Token_registery_cardvariable.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/ApiRegistery.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/Apiregisteryline/Apiregisteryline.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/Apiregisteryline/Apiregisteryline.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/Apiregisteryline/Apiregisteryline.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/Apiregisteryline/Apiregisteryline.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/Apiregisteryline/Apiregisteryline_cardvariable.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/addapiregistery/addapiregistery.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/addapiregistery/addapiregistery.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/addapiregistery/addapiregistery.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/addapiregistery/addapiregistery.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/allapiregistery/allapiregistery.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/allapiregistery/allapiregistery.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/allapiregistery/allapiregistery.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/allapiregistery/allapiregistery.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/apiregistery.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/apiregistery.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/apiregistery.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/apiregistery.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/editapiregistery/editapiregistery.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/editapiregistery/editapiregistery.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/editapiregistery/editapiregistery.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/editapiregistery/editapiregistery.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/dashboard/dashboard.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/dashboard/dashboard.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/dashboard/dashboard.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/dashboard/dashboard.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/addextension/addextension.component.css create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/addextension/addextension.component.css.map create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/addextension/addextension.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/addextension/addextension.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/addextension/addextension.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/addextension/addextension.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/allextension/allextension.component.css create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/allextension/allextension.component.css.map create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/allextension/allextension.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/allextension/allextension.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/allextension/allextension.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/allextension/allextension.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/editextension/editextension.component.css create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/editextension/editextension.component.css.map create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/editextension/editextension.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/editextension/editextension.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/editextension/editextension.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/editextension/editextension.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/extension.component.css create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/extension.component.css.map create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/extension.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/extension.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/extension.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/extension.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/main-page/main-page.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/main-page/main-page.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/main-page/main-page.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/main-page/main-page.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/sequencegenarator/sequencegenarator.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/sequencegenarator/sequencegenarator.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/sequencegenarator/sequencegenarator.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/sequencegenarator/sequencegenarator.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/layout/layout.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/layout/layout.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/layout/layout.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/layout/layout.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/main-page/main-page.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/main-page/main-page.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/main-page/main-page.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/main-page/main-page.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/main-routing.module.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/main.module.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/page-not-found/page-not-found.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/page-not-found/page-not-found.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/page-not-found/page-not-found.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/page-not-found/page-not-found.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin.zip create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.css create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.css.map create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.css create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.css.map create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.css create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.css.map create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/pipes/helpers.module.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/pipes/remove-commas.pipe.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/pipes/sanitize.pipe.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/pipes/search-filter.pipe.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/pipes/thai-date-abbr.pipe.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/pipes/thai-date-full.pipe.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/pipes/thai-date.pipe.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/pipes/time-pipe.pipe.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/accesstype.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/auditreport.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/connector-mapping.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/deploymentprofile.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/health-checkup.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/logconfig.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/menu-group.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/menu-register.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/menumaintance.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/myworkspace.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/outgoingwebhook.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/sessionlogger.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/sure-connector.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/sure-opsscriptmaster.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/sureapi.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/sureconnect.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/sysparameter.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/university.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/user-list.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/user-profile.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/user-registration.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/usergrpmaintaince.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/usermaintance.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/alert.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/alerts.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/addemails.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/api-request.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/audittrail.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/billingdemo.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/department.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/diputesemo.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/forgotpass.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/helper.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/itemdemo.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/login.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/query-runner.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/realnet-menu.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/report-builder.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/sequence.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/table-setup.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/translate.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/auth_guard.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/additionalcontainer.service.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/additionalcontainer.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/dashboard.service.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/dashboard.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/dashboard3.service.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/dashboard3.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/icon.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/modulesetup.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/project-setup.service.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/project-setup.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/technology-stack.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/wireframe-line.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/wireframe.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/csv.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/excel.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/alerts.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/bulkimport.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/code-extraction.service.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/code-extraction.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/dataflow.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/datamanagement.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/datastore.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/exception-rule-library.service.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/exception-rule-library.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/extension.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/rule-library.service.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/rule-library.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/workflow-data.service.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/workflow-data.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/jwt.interceptor.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/main.service.spec.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/main.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/notification.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/user-info.service.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/.gitkeep create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/fonts/THSarabun Bold Italic.ttf create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/fonts/THSarabun Bold.ttf create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/fonts/THSarabun BoldItalic.ttf create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/fonts/THSarabun Italic.ttf create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/fonts/THSarabun.ttf create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/i18n/en.json create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/i18n/hi.json create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/2021-12-24_1662642503238.png create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/403.webp create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/Header.png create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/HeaderLines.png create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/MultipleLines.png create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/OnlyLines.png create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/Web-Page-Background-Color.jpg create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/copyfromPrj.png create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/copytemplate.png create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/database.png create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/fromscratch.png create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/git.png create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/icon/cradiant.png create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/icon/logo.ico create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/icon/micrologo.png create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/icon/sitelogo.png create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/images.png create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/logo.svg create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/micro logo.png create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/new.png create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/profile-icon.png create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/profile1.jpg create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/profile3.jpg create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/qr-code.png create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/view.jpg create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/who.png create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/environments/environment.prod.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/environments/environment.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/favicon.ico create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/index.html create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/main.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/polyfills.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/server/app.js create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/server/db.json create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/server/package-lock.json create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/server/package.json create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/styles.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/styles1.scss create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/test.ts create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/tsconfig.app.json create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/tsconfig.json create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/tsconfig.spec.json create mode 100644 calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/tslint.json diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/.gitignore b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/.gitignore new file mode 100644 index 0000000..e43b0f9 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/.gitignore @@ -0,0 +1 @@ +.DS_Store diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/.classpath b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/.classpath new file mode 100644 index 0000000..e16ec96 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/.classpath @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/.factorypath b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/.factorypath new file mode 100644 index 0000000..c1540bd --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/.factorypath @@ -0,0 +1,235 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/.project b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/.project new file mode 100644 index 0000000..b02cd1e --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/.project @@ -0,0 +1,28 @@ + + + app + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.springframework.ide.eclipse.boot.validation.springbootbuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + + diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/.settings/org.eclipse.core.resources.prefs b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..abdea9a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 +encoding//src/main/resources=UTF-8 +encoding/=UTF-8 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/.settings/org.eclipse.jdt.apt.core.prefs b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/.settings/org.eclipse.jdt.apt.core.prefs new file mode 100644 index 0000000..dfa4f3a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/.settings/org.eclipse.jdt.apt.core.prefs @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.apt.aptEnabled=true +org.eclipse.jdt.apt.genSrcDir=target/generated-sources/annotations +org.eclipse.jdt.apt.genTestSrcDir=target/generated-test-sources/test-annotations diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/.settings/org.eclipse.jdt.core.prefs b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..90b69d4 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,10 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.methodParameters=generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore +org.eclipse.jdt.core.compiler.processAnnotations=enabled +org.eclipse.jdt.core.compiler.release=disabled +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/.settings/org.eclipse.m2e.core.prefs b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/.settings/org.springframework.ide.eclipse.prefs b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/.settings/org.springframework.ide.eclipse.prefs new file mode 100644 index 0000000..a12794d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/.settings/org.springframework.ide.eclipse.prefs @@ -0,0 +1,2 @@ +boot.validation.initialized=true +eclipse.preferences.version=1 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/.swagger-codegen-ignore b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/.swagger-codegen-ignore new file mode 100644 index 0000000..19d3377 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/.swagger-codegen-ignore @@ -0,0 +1,23 @@ +# Swagger Codegen Ignore +# Generated by swagger-codegen https://github.com/swagger-api/swagger-codegen + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell Swagger Codgen to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# Thsi matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/Resources/Files/600dpi (1)_1750161677278.png b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/Resources/Files/600dpi (1)_1750161677278.png new file mode 100644 index 0000000000000000000000000000000000000000..70c2adbb4ee8e91847bd3ddf91d4113bf112f586 GIT binary patch literal 1475888 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

FqG%z37u0HVFekIo1{!AwAGLZH0 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


25(F|!_91wmJ6AfJds}#01>aY(cb3SrU`mA9 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�n~+GPP!nbAO3}^cOH!yI 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
< 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

d^*jiQ=R8F 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

?iu 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 OoGSnJxJI@46(yk8hQ>6*j*BhGkvnC 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

    ;;C0AI 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 current thread ) + 0x0000022579a59180 JavaThread "Reference Handler" daemon [_thread_blocked, id=13212, stack(0x0000005178100000,0x0000005178200000)] + 0x000002257a295010 JavaThread "Finalizer" daemon [_thread_blocked, id=2780, stack(0x0000005178200000,0x0000005178300000)] + 0x000002257a282db0 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=2844, stack(0x0000005178300000,0x0000005178400000)] + 0x000002257a283770 JavaThread "Attach Listener" daemon [_thread_blocked, id=5488, stack(0x0000005178400000,0x0000005178500000)] + 0x000002257a2c27b0 JavaThread "Service Thread" daemon [_thread_blocked, id=4264, stack(0x0000005178500000,0x0000005178600000)] + 0x000002257a2c59e0 JavaThread "C1 CompilerThread0" daemon [_thread_blocked, id=15236, stack(0x0000005178600000,0x0000005178700000)] + 0x000002257a2b1240 JavaThread "Sweeper thread" daemon [_thread_blocked, id=17268, stack(0x0000005178700000,0x0000005178800000)] + 0x00000225799ec0f0 JavaThread "Common-Cleaner" daemon [_thread_blocked, id=4196, stack(0x0000005178800000,0x0000005178900000)] + 0x000002257a525cf0 JavaThread "Notification Thread" daemon [_thread_blocked, id=12716, stack(0x0000005178900000,0x0000005178a00000)] + 0x000002257ae597c0 JavaThread "RMI TCP Accept-0" daemon [_thread_in_native, id=5236, stack(0x0000005178a00000,0x0000005178b00000)] + 0x000002257ae64180 JavaThread "RMI TCP Accept-52447" daemon [_thread_in_native, id=14720, stack(0x0000005178b00000,0x0000005178c00000)] + 0x000002257ae61b20 JavaThread "RMI TCP Accept-0" daemon [_thread_in_native, id=9868, stack(0x0000005178c00000,0x0000005178d00000)] + 0x000002257aed5cb0 JavaThread "RMI Scheduler(0)" daemon [_thread_blocked, id=10268, stack(0x0000005178f00000,0x0000005179000000)] + 0x000002257d9eeff0 JavaThread "mysql-cj-abandoned-connection-cleanup" daemon [_thread_blocked, id=4324, stack(0x0000005179900000,0x0000005179a00000)] + 0x000002257d9efe60 JavaThread "HikariPool-1 housekeeper" daemon [_thread_blocked, id=14616, stack(0x000000517a300000,0x000000517a400000)] + 0x000002257d9ece40 JavaThread "Catalina-utility-1" [_thread_blocked, id=16064, stack(0x000000517a400000,0x000000517a500000)] + 0x000002257d9ed310 JavaThread "Catalina-utility-2" [_thread_blocked, id=5460, stack(0x000000517a500000,0x000000517a600000)] + 0x000002257d9ee180 JavaThread "container-0" [_thread_blocked, id=9248, stack(0x000000517a600000,0x000000517a700000)] + 0x000002257d9ed7e0 JavaThread "Live Reload Server" daemon [_thread_in_native, id=1116, stack(0x000000517a800000,0x000000517a900000)] + 0x000002250f7af090 JavaThread "File Watcher" daemon [_thread_blocked, id=16340, stack(0x000000517a700000,0x000000517a800000)] + 0x000002250f7b1710 JavaThread "http-nio-9191-BlockPoller" daemon [_thread_blocked, id=16692, stack(0x000000517a900000,0x000000517aa00000)] + 0x000002250f7afa30 JavaThread "http-nio-9191-exec-1" daemon [_thread_blocked, id=5556, stack(0x000000517aa00000,0x000000517ab00000)] + 0x000002250f7b0d70 JavaThread "http-nio-9191-exec-2" daemon [_thread_blocked, id=14708, stack(0x000000517ab00000,0x000000517ac00000)] + 0x000002250f7aff00 JavaThread "http-nio-9191-exec-3" daemon [_thread_blocked, id=13008, stack(0x000000517ac00000,0x000000517ad00000)] + 0x000002250f7b1be0 JavaThread "http-nio-9191-exec-4" daemon [_thread_blocked, id=13096, stack(0x000000517ad00000,0x000000517ae00000)] + 0x000002250f7b03d0 JavaThread "http-nio-9191-exec-5" daemon [_thread_blocked, id=14108, stack(0x000000517ae00000,0x000000517af00000)] + 0x000002250f7ad3b0 JavaThread "http-nio-9191-exec-6" daemon [_thread_blocked, id=8704, stack(0x000000517af00000,0x000000517b000000)] + 0x000002250f7ac070 JavaThread "http-nio-9191-exec-7" daemon [_thread_blocked, id=4628, stack(0x000000517b000000,0x000000517b100000)] + 0x000002250f7b20b0 JavaThread "http-nio-9191-exec-8" daemon [_thread_blocked, id=5404, stack(0x000000517b100000,0x000000517b200000)] + 0x000002250f7b2580 JavaThread "http-nio-9191-exec-9" daemon [_thread_blocked, id=10000, stack(0x000000517b200000,0x000000517b300000)] + 0x000002250f7ac540 JavaThread "http-nio-9191-exec-10" daemon [_thread_blocked, id=4308, stack(0x000000517b300000,0x000000517b400000)] + 0x000002250f7b1240 JavaThread "http-nio-9191-ClientPoller" daemon [_thread_blocked, id=13388, stack(0x000000517b400000,0x000000517b500000)] + 0x000002250f7b2f20 JavaThread "http-nio-9191-Acceptor" daemon [_thread_in_native, id=13888, stack(0x000000517b500000,0x000000517b600000)] + 0x000002250f7b08a0 JavaThread "DestroyJavaVM" [_thread_blocked, id=6624, stack(0x0000005177a00000,0x0000005177b00000)] + 0x00000225798d3150 JavaThread "HikariPool-1 connection closer" daemon [_thread_blocked, id=4052, stack(0x0000005178e00000,0x0000005178f00000)] + +Other Threads: +=>0x0000022579a517b0 VMThread "VM Thread" [stack: 0x0000005178000000,0x0000005178100000] [id=7380] + 0x000002256e840090 WatcherThread [stack: 0x0000005178d00000,0x0000005178e00000] [id=3596] + 0x000002256e87e610 GCTaskThread "GC Thread#0" [stack: 0x0000005177b00000,0x0000005177c00000] [id=14008] + 0x000002257af52e90 GCTaskThread "GC Thread#1" [stack: 0x0000005179200000,0x0000005179300000] [id=9240] + 0x000002257af554d0 GCTaskThread "GC Thread#2" [stack: 0x0000005179300000,0x0000005179400000] [id=5240] + 0x000002257af51b70 GCTaskThread "GC Thread#3" [stack: 0x0000005179a00000,0x0000005179b00000] [id=1644] + 0x000002257af531c0 GCTaskThread "GC Thread#4" [stack: 0x0000005179b00000,0x0000005179c00000] [id=16524] + 0x000002257af551a0 GCTaskThread "GC Thread#5" [stack: 0x0000005179c00000,0x0000005179d00000] [id=3664] + 0x000002257af51ea0 GCTaskThread "GC Thread#6" [stack: 0x0000005179d00000,0x0000005179e00000] [id=16160] + 0x000002257af534f0 GCTaskThread "GC Thread#7" [stack: 0x0000005179e00000,0x0000005179f00000] [id=14136] + 0x000002256e88fa80 ConcurrentGCThread "G1 Main Marker" [stack: 0x0000005177c00000,0x0000005177d00000] [id=2952] + 0x000002256e8906f0 ConcurrentGCThread "G1 Conc#0" [stack: 0x0000005177d00000,0x0000005177e00000] [id=6148] + 0x000002257af54b40 ConcurrentGCThread "G1 Conc#1" [stack: 0x0000005179f00000,0x000000517a000000] [id=8824] + 0x000002256e8f8c60 ConcurrentGCThread "G1 Refine#0" [stack: 0x0000005177e00000,0x0000005177f00000] [id=2460] + 0x000002257b6ef9f0 ConcurrentGCThread "G1 Refine#1" [stack: 0x0000005179400000,0x0000005179500000] [id=2916] + 0x000002257b6efd50 ConcurrentGCThread "G1 Refine#2" [stack: 0x0000005179500000,0x0000005179600000] [id=15184] + 0x000002257b6f00b0 ConcurrentGCThread "G1 Refine#3" [stack: 0x0000005179600000,0x0000005179700000] [id=10480] + 0x000002250f535480 ConcurrentGCThread "G1 Refine#4" [stack: 0x0000005177700000,0x0000005177800000] [id=8708] + 0x000002250f536200 ConcurrentGCThread "G1 Refine#5" [stack: 0x0000005177800000,0x0000005177900000] [id=2300] + 0x000002250f534dc0 ConcurrentGCThread "G1 Refine#6" [stack: 0x0000005177900000,0x0000005177a00000] [id=7800] + 0x000002256e8f98e0 ConcurrentGCThread "G1 Young RemSet Sampling" [stack: 0x0000005177f00000,0x0000005178000000] [id=6548] + +Threads with active compile tasks: + +VM state: at safepoint (normal execution) + +VM Mutex/Monitor currently owned by a thread: ([mutex/lock_event]) +[0x000002256e83a3b0] Threads_lock - owner thread: 0x0000022579a517b0 +[0x000002256e839ab0] Heap_lock - owner thread: 0x000002250f7af090 + +Heap address: 0x0000000083000000, size: 2000 MB, Compressed Oops mode: 32-bit +CDS disabled. +Compressed class space mapped at: 0x0000000100000000-0x0000000140000000, size: 1073741824 +Narrow klass base: 0x0000000000000000, Narrow klass shift: 3, Narrow klass range: 0x140000000 + +GC Precious Log: + CPUs: 8 total, 8 available + Memory: 7995M + Large Page Support: Disabled + NUMA Support: Disabled + Compressed Oops: Enabled (32-bit) + Heap Region Size: 1M + Heap Min Capacity: 8M + Heap Initial Capacity: 126M + Heap Max Capacity: 2000M + Pre-touch: Disabled + Parallel Workers: 8 + Concurrent Workers: 2 + Concurrent Refinement Workers: 8 + Periodic GC: Disabled + +Heap: + garbage-first heap total 505856K, used 109623K [0x0000000083000000, 0x0000000100000000) + region size 1024K, 1 young (1024K), 1 survivors (1024K) + Metaspace used 104640K, capacity 106186K, committed 106416K, reserved 1142784K + class space used 13478K, capacity 14004K, committed 14080K, reserved 1048576K + +Heap Regions: E=young(eden), S=young(survivor), O=old, HS=humongous(starts), HC=humongous(continues), CS=collection set, F=free, OA=open archive, CA=closed archive, TAMS=top-at-mark-start (previous, next) +| 0|0x0000000083000000, 0x0000000083100000, 0x0000000083100000|100%|HS| |TAMS 0x0000000083100000, 0x0000000083000000| Complete +| 1|0x0000000083100000, 0x0000000083200000, 0x0000000083200000|100%| O| |TAMS 0x0000000083200000, 0x0000000083100000| Untracked +| 2|0x0000000083200000, 0x0000000083300000, 0x0000000083300000|100%| O| |TAMS 0x0000000083300000, 0x0000000083200000| Untracked +| 3|0x0000000083300000, 0x0000000083400000, 0x0000000083400000|100%| O| |TAMS 0x0000000083400000, 0x0000000083300000| Untracked +| 4|0x0000000083400000, 0x0000000083500000, 0x0000000083500000|100%| O| |TAMS 0x0000000083500000, 0x0000000083400000| Untracked +| 5|0x0000000083500000, 0x0000000083600000, 0x0000000083600000|100%| O| |TAMS 0x0000000083600000, 0x0000000083500000| Untracked +| 6|0x0000000083600000, 0x0000000083700000, 0x0000000083700000|100%| O| |TAMS 0x0000000083700000, 0x0000000083600000| Untracked +| 7|0x0000000083700000, 0x0000000083800000, 0x0000000083800000|100%| O| |TAMS 0x0000000083800000, 0x0000000083700000| Untracked +| 8|0x0000000083800000, 0x0000000083900000, 0x0000000083900000|100%| O| |TAMS 0x0000000083900000, 0x0000000083800000| Untracked +| 9|0x0000000083900000, 0x00000000839ffff8, 0x0000000083a00000| 99%| O| |TAMS 0x0000000083900000, 0x0000000083900000| Untracked +| 10|0x0000000083a00000, 0x0000000083b00000, 0x0000000083b00000|100%| O| |TAMS 0x0000000083b00000, 0x0000000083a00000| Untracked +| 11|0x0000000083b00000, 0x0000000083c00000, 0x0000000083c00000|100%| O| |TAMS 0x0000000083c00000, 0x0000000083b00000| Untracked +| 12|0x0000000083c00000, 0x0000000083d00000, 0x0000000083d00000|100%| O| |TAMS 0x0000000083d00000, 0x0000000083c00000| Untracked +| 13|0x0000000083d00000, 0x0000000083e00000, 0x0000000083e00000|100%| O| |TAMS 0x0000000083e00000, 0x0000000083d00000| Untracked +| 14|0x0000000083e00000, 0x0000000083f00000, 0x0000000083f00000|100%| O| |TAMS 0x0000000083f00000, 0x0000000083e00000| Untracked +| 15|0x0000000083f00000, 0x0000000084000000, 0x0000000084000000|100%| O| |TAMS 0x0000000083f00000, 0x0000000083f00000| Untracked +| 16|0x0000000084000000, 0x0000000084100000, 0x0000000084100000|100%| O| |TAMS 0x0000000084000000, 0x0000000084000000| Untracked +| 17|0x0000000084100000, 0x0000000084200000, 0x0000000084200000|100%| O| |TAMS 0x0000000084100000, 0x0000000084100000| Untracked +| 18|0x0000000084200000, 0x0000000084201800, 0x0000000084300000| 0%| O| |TAMS 0x0000000084200000, 0x0000000084200000| Untracked +| 19|0x0000000084300000, 0x0000000084300000, 0x0000000084400000| 0%| F| |TAMS 0x0000000084300000, 0x0000000084300000| Untracked +| 20|0x0000000084400000, 0x0000000084400000, 0x0000000084500000| 0%| F| |TAMS 0x0000000084400000, 0x0000000084400000| Untracked +| 21|0x0000000084500000, 0x0000000084500000, 0x0000000084600000| 0%| F| |TAMS 0x0000000084500000, 0x0000000084500000| Untracked +| 22|0x0000000084600000, 0x0000000084700000, 0x0000000084700000|100%| O| |TAMS 0x0000000084700000, 0x0000000084600000| Untracked +| 23|0x0000000084700000, 0x0000000084800000, 0x0000000084800000|100%| O| |TAMS 0x0000000084800000, 0x0000000084700000| Untracked +| 24|0x0000000084800000, 0x0000000084800000, 0x0000000084900000| 0%| F| |TAMS 0x0000000084800000, 0x0000000084800000| Untracked +| 25|0x0000000084900000, 0x0000000084900000, 0x0000000084a00000| 0%| F| |TAMS 0x0000000084900000, 0x0000000084900000| Untracked +| 26|0x0000000084a00000, 0x0000000084b00000, 0x0000000084b00000|100%| O| |TAMS 0x0000000084b00000, 0x0000000084a00000| Untracked +| 27|0x0000000084b00000, 0x0000000084b00000, 0x0000000084c00000| 0%| F| |TAMS 0x0000000084b00000, 0x0000000084b00000| Untracked +| 28|0x0000000084c00000, 0x0000000084d00000, 0x0000000084d00000|100%| O| |TAMS 0x0000000084d00000, 0x0000000084c00000| Untracked +| 29|0x0000000084d00000, 0x0000000084d00000, 0x0000000084e00000| 0%| F| |TAMS 0x0000000084d00000, 0x0000000084d00000| Untracked +| 30|0x0000000084e00000, 0x0000000084f00000, 0x0000000084f00000|100%| O| |TAMS 0x0000000084f00000, 0x0000000084e00000| Untracked +| 31|0x0000000084f00000, 0x0000000084f00000, 0x0000000085000000| 0%| F| |TAMS 0x0000000084f00000, 0x0000000084f00000| Untracked +| 32|0x0000000085000000, 0x0000000085100000, 0x0000000085100000|100%| O| |TAMS 0x0000000085100000, 0x0000000085000000| Untracked +| 33|0x0000000085100000, 0x0000000085200000, 0x0000000085200000|100%| O| |TAMS 0x0000000085200000, 0x0000000085100000| Untracked +| 34|0x0000000085200000, 0x0000000085300000, 0x0000000085300000|100%| O| |TAMS 0x0000000085300000, 0x0000000085200000| Untracked +| 35|0x0000000085300000, 0x0000000085400000, 0x0000000085400000|100%| O| |TAMS 0x0000000085400000, 0x0000000085300000| Untracked +| 36|0x0000000085400000, 0x0000000085500000, 0x0000000085500000|100%| O| |TAMS 0x0000000085500000, 0x0000000085400000| Untracked +| 37|0x0000000085500000, 0x0000000085600000, 0x0000000085600000|100%| O| |TAMS 0x0000000085600000, 0x0000000085500000| Untracked +| 38|0x0000000085600000, 0x0000000085700000, 0x0000000085700000|100%| O| |TAMS 0x0000000085700000, 0x0000000085600000| Untracked +| 39|0x0000000085700000, 0x0000000085800000, 0x0000000085800000|100%| O| |TAMS 0x0000000085800000, 0x0000000085700000| Untracked +| 40|0x0000000085800000, 0x0000000085900000, 0x0000000085900000|100%| O| |TAMS 0x0000000085900000, 0x0000000085800000| Untracked +| 41|0x0000000085900000, 0x0000000085a00000, 0x0000000085a00000|100%| O| |TAMS 0x0000000085a00000, 0x0000000085900000| Untracked +| 42|0x0000000085a00000, 0x0000000085b00000, 0x0000000085b00000|100%| O| |TAMS 0x0000000085b00000, 0x0000000085a00000| Untracked +| 43|0x0000000085b00000, 0x0000000085c00000, 0x0000000085c00000|100%| O| |TAMS 0x0000000085c00000, 0x0000000085b00000| Untracked +| 44|0x0000000085c00000, 0x0000000085d00000, 0x0000000085d00000|100%| O| |TAMS 0x0000000085d00000, 0x0000000085c00000| Untracked +| 45|0x0000000085d00000, 0x0000000085d00000, 0x0000000085e00000| 0%| F| |TAMS 0x0000000085d00000, 0x0000000085d00000| Untracked +| 46|0x0000000085e00000, 0x0000000085e00000, 0x0000000085f00000| 0%| F| |TAMS 0x0000000085e00000, 0x0000000085e00000| Untracked +| 47|0x0000000085f00000, 0x0000000086000000, 0x0000000086000000|100%| O| |TAMS 0x0000000086000000, 0x0000000085f00000| Untracked +| 48|0x0000000086000000, 0x0000000086100000, 0x0000000086100000|100%| O| |TAMS 0x0000000086100000, 0x0000000086000000| Untracked +| 49|0x0000000086100000, 0x0000000086200000, 0x0000000086200000|100%| O| |TAMS 0x0000000086200000, 0x0000000086100000| Untracked +| 50|0x0000000086200000, 0x0000000086300000, 0x0000000086300000|100%| O| |TAMS 0x0000000086300000, 0x0000000086200000| Untracked +| 51|0x0000000086300000, 0x0000000086400000, 0x0000000086400000|100%| O| |TAMS 0x0000000086400000, 0x0000000086300000| Untracked +| 52|0x0000000086400000, 0x0000000086500000, 0x0000000086500000|100%| O| |TAMS 0x0000000086500000, 0x0000000086400000| Untracked +| 53|0x0000000086500000, 0x0000000086600000, 0x0000000086600000|100%| O| |TAMS 0x0000000086600000, 0x0000000086500000| Untracked +| 54|0x0000000086600000, 0x0000000086700000, 0x0000000086700000|100%| O| |TAMS 0x0000000086700000, 0x0000000086600000| Untracked +| 55|0x0000000086700000, 0x0000000086800000, 0x0000000086800000|100%| O| |TAMS 0x0000000086800000, 0x0000000086700000| Untracked +| 56|0x0000000086800000, 0x0000000086900000, 0x0000000086900000|100%| O| |TAMS 0x0000000086900000, 0x0000000086800000| Untracked +| 57|0x0000000086900000, 0x0000000086a00000, 0x0000000086a00000|100%| O| |TAMS 0x0000000086a00000, 0x0000000086900000| Untracked +| 58|0x0000000086a00000, 0x0000000086a00000, 0x0000000086b00000| 0%| F| |TAMS 0x0000000086a00000, 0x0000000086a00000| Untracked +| 59|0x0000000086b00000, 0x0000000086c00000, 0x0000000086c00000|100%| O| |TAMS 0x0000000086c00000, 0x0000000086b00000| Untracked +| 60|0x0000000086c00000, 0x0000000086d00000, 0x0000000086d00000|100%| O| |TAMS 0x0000000086d00000, 0x0000000086c00000| Untracked +| 61|0x0000000086d00000, 0x0000000086e00000, 0x0000000086e00000|100%| O| |TAMS 0x0000000086e00000, 0x0000000086d00000| Untracked +| 62|0x0000000086e00000, 0x0000000086f00000, 0x0000000086f00000|100%| O| |TAMS 0x0000000086f00000, 0x0000000086e00000| Untracked +| 63|0x0000000086f00000, 0x0000000086f00000, 0x0000000087000000| 0%| F| |TAMS 0x0000000086f00000, 0x0000000086f00000| Untracked +| 64|0x0000000087000000, 0x0000000087100000, 0x0000000087100000|100%| O| |TAMS 0x0000000087100000, 0x0000000087000000| Untracked +| 65|0x0000000087100000, 0x0000000087200000, 0x0000000087200000|100%| O| |TAMS 0x0000000087200000, 0x0000000087100000| Untracked +| 66|0x0000000087200000, 0x0000000087200000, 0x0000000087300000| 0%| F| |TAMS 0x0000000087200000, 0x0000000087200000| Untracked +| 67|0x0000000087300000, 0x0000000087300000, 0x0000000087400000| 0%| F| |TAMS 0x0000000087300000, 0x0000000087300000| Untracked +| 68|0x0000000087400000, 0x0000000087500000, 0x0000000087500000|100%| O| |TAMS 0x0000000087500000, 0x0000000087400000| Untracked +| 69|0x0000000087500000, 0x0000000087600000, 0x0000000087600000|100%| O| |TAMS 0x0000000087600000, 0x0000000087500000| Untracked +| 70|0x0000000087600000, 0x0000000087600000, 0x0000000087700000| 0%| F| |TAMS 0x0000000087600000, 0x0000000087600000| Untracked +| 71|0x0000000087700000, 0x0000000087800000, 0x0000000087800000|100%| O| |TAMS 0x0000000087800000, 0x0000000087700000| Untracked +| 72|0x0000000087800000, 0x0000000087900000, 0x0000000087900000|100%| O| |TAMS 0x0000000087900000, 0x0000000087800000| Untracked +| 73|0x0000000087900000, 0x0000000087a00000, 0x0000000087a00000|100%| O| |TAMS 0x0000000087a00000, 0x0000000087900000| Untracked +| 74|0x0000000087a00000, 0x0000000087b00000, 0x0000000087b00000|100%| O| |TAMS 0x0000000087b00000, 0x0000000087a00000| Untracked +| 75|0x0000000087b00000, 0x0000000087c00000, 0x0000000087c00000|100%| O| |TAMS 0x0000000087c00000, 0x0000000087b00000| Untracked +| 76|0x0000000087c00000, 0x0000000087d00000, 0x0000000087d00000|100%| O| |TAMS 0x0000000087d00000, 0x0000000087c00000| Untracked +| 77|0x0000000087d00000, 0x0000000087e00000, 0x0000000087e00000|100%| O| |TAMS 0x0000000087e00000, 0x0000000087d00000| Untracked +| 78|0x0000000087e00000, 0x0000000087e00000, 0x0000000087f00000| 0%| F| |TAMS 0x0000000087e00000, 0x0000000087e00000| Untracked +| 79|0x0000000087f00000, 0x0000000088000000, 0x0000000088000000|100%| O| |TAMS 0x0000000088000000, 0x0000000087f00000| Untracked +| 80|0x0000000088000000, 0x0000000088100000, 0x0000000088100000|100%| O| |TAMS 0x0000000088100000, 0x0000000088000000| Untracked +| 81|0x0000000088100000, 0x0000000088200000, 0x0000000088200000|100%| O| |TAMS 0x0000000088200000, 0x0000000088100000| Untracked +| 82|0x0000000088200000, 0x0000000088300000, 0x0000000088300000|100%| O| |TAMS 0x0000000088300000, 0x0000000088200000| Untracked +| 83|0x0000000088300000, 0x0000000088400000, 0x0000000088400000|100%| O| |TAMS 0x0000000088400000, 0x0000000088300000| Untracked +| 84|0x0000000088400000, 0x0000000088400000, 0x0000000088500000| 0%| F| |TAMS 0x0000000088400000, 0x0000000088400000| Untracked +| 85|0x0000000088500000, 0x0000000088600000, 0x0000000088600000|100%| O| |TAMS 0x0000000088600000, 0x0000000088500000| Untracked +| 86|0x0000000088600000, 0x0000000088700000, 0x0000000088700000|100%| O| |TAMS 0x0000000088700000, 0x0000000088600000| Untracked +| 87|0x0000000088700000, 0x0000000088700000, 0x0000000088800000| 0%| F| |TAMS 0x0000000088700000, 0x0000000088700000| Untracked +| 88|0x0000000088800000, 0x0000000088900000, 0x0000000088900000|100%| O| |TAMS 0x0000000088900000, 0x0000000088800000| Untracked +| 89|0x0000000088900000, 0x0000000088a00000, 0x0000000088a00000|100%| O| |TAMS 0x0000000088a00000, 0x0000000088900000| Untracked +| 90|0x0000000088a00000, 0x0000000088b00000, 0x0000000088b00000|100%| O| |TAMS 0x0000000088b00000, 0x0000000088a00000| Untracked +| 91|0x0000000088b00000, 0x0000000088c00000, 0x0000000088c00000|100%| O| |TAMS 0x0000000088c00000, 0x0000000088b00000| Untracked +| 92|0x0000000088c00000, 0x0000000088d00000, 0x0000000088d00000|100%| O| |TAMS 0x0000000088d00000, 0x0000000088c00000| Untracked +| 93|0x0000000088d00000, 0x0000000088e00000, 0x0000000088e00000|100%| O| |TAMS 0x0000000088e00000, 0x0000000088d00000| Untracked +| 94|0x0000000088e00000, 0x0000000088f00000, 0x0000000088f00000|100%| O| |TAMS 0x0000000088f00000, 0x0000000088e00000| Untracked +| 95|0x0000000088f00000, 0x0000000089000000, 0x0000000089000000|100%| O| |TAMS 0x0000000089000000, 0x0000000088f00000| Untracked +| 96|0x0000000089000000, 0x0000000089100000, 0x0000000089100000|100%| O| |TAMS 0x0000000089100000, 0x0000000089000000| Untracked +| 97|0x0000000089100000, 0x0000000089200000, 0x0000000089200000|100%| O| |TAMS 0x0000000089200000, 0x0000000089100000| Untracked +| 98|0x0000000089200000, 0x0000000089300000, 0x0000000089300000|100%| O| |TAMS 0x0000000089300000, 0x0000000089200000| Untracked +| 99|0x0000000089300000, 0x0000000089400000, 0x0000000089400000|100%| O| |TAMS 0x0000000089400000, 0x0000000089300000| Untracked +| 100|0x0000000089400000, 0x0000000089500000, 0x0000000089500000|100%| O| |TAMS 0x0000000089500000, 0x0000000089400000| Untracked +| 101|0x0000000089500000, 0x0000000089600000, 0x0000000089600000|100%| O| |TAMS 0x0000000089600000, 0x0000000089500000| Untracked +| 102|0x0000000089600000, 0x0000000089700000, 0x0000000089700000|100%| O| |TAMS 0x0000000089700000, 0x0000000089600000| Untracked +| 103|0x0000000089700000, 0x0000000089800000, 0x0000000089800000|100%| O| |TAMS 0x0000000089800000, 0x0000000089700000| Untracked +| 104|0x0000000089800000, 0x0000000089900000, 0x0000000089900000|100%| O| |TAMS 0x0000000089900000, 0x0000000089800000| Untracked +| 105|0x0000000089900000, 0x0000000089a00000, 0x0000000089a00000|100%| O| |TAMS 0x0000000089a00000, 0x0000000089900000| Untracked +| 106|0x0000000089a00000, 0x0000000089a00000, 0x0000000089b00000| 0%| F| |TAMS 0x0000000089a00000, 0x0000000089a00000| Untracked +| 107|0x0000000089b00000, 0x0000000089b00000, 0x0000000089c00000| 0%| F| |TAMS 0x0000000089b00000, 0x0000000089b00000| Untracked +| 108|0x0000000089c00000, 0x0000000089d00000, 0x0000000089d00000|100%| O| |TAMS 0x0000000089d00000, 0x0000000089c00000| Untracked +| 109|0x0000000089d00000, 0x0000000089e00000, 0x0000000089e00000|100%| O| |TAMS 0x0000000089e00000, 0x0000000089d00000| Untracked +| 110|0x0000000089e00000, 0x0000000089f00000, 0x0000000089f00000|100%| O| |TAMS 0x0000000089f00000, 0x0000000089e00000| Untracked +| 111|0x0000000089f00000, 0x000000008a000000, 0x000000008a000000|100%| O| |TAMS 0x000000008a000000, 0x0000000089f00000| Untracked +| 112|0x000000008a000000, 0x000000008a100000, 0x000000008a100000|100%| O| |TAMS 0x000000008a0d5800, 0x000000008a000000| Untracked +| 113|0x000000008a100000, 0x000000008a200000, 0x000000008a200000|100%| O| |TAMS 0x000000008a100000, 0x000000008a100000| Untracked +| 114|0x000000008a200000, 0x000000008a300000, 0x000000008a300000|100%| O| |TAMS 0x000000008a200000, 0x000000008a200000| Untracked +| 115|0x000000008a300000, 0x000000008a400000, 0x000000008a400000|100%| O| |TAMS 0x000000008a300000, 0x000000008a300000| Untracked +| 116|0x000000008a400000, 0x000000008a500000, 0x000000008a500000|100%| O| |TAMS 0x000000008a400000, 0x000000008a400000| Untracked +| 117|0x000000008a500000, 0x000000008a600000, 0x000000008a600000|100%| O| |TAMS 0x000000008a500000, 0x000000008a500000| Untracked +| 118|0x000000008a600000, 0x000000008a700000, 0x000000008a700000|100%| O| |TAMS 0x000000008a600000, 0x000000008a600000| Untracked +| 119|0x000000008a700000, 0x000000008a800000, 0x000000008a800000|100%| O| |TAMS 0x000000008a700000, 0x000000008a700000| Untracked +| 120|0x000000008a800000, 0x000000008a900000, 0x000000008a900000|100%| O| |TAMS 0x000000008a800000, 0x000000008a800000| Untracked +| 121|0x000000008a900000, 0x000000008aa00000, 0x000000008aa00000|100%| O| |TAMS 0x000000008a900000, 0x000000008a900000| Untracked +| 122|0x000000008aa00000, 0x000000008ab00000, 0x000000008ab00000|100%| O| |TAMS 0x000000008aa00000, 0x000000008aa00000| Untracked +| 123|0x000000008ab00000, 0x000000008ac00000, 0x000000008ac00000|100%| O| |TAMS 0x000000008ab00000, 0x000000008ab00000| Untracked +| 124|0x000000008ac00000, 0x000000008ad00000, 0x000000008ad00000|100%| O| |TAMS 0x000000008ac00000, 0x000000008ac00000| Untracked +| 125|0x000000008ad00000, 0x000000008ae00000, 0x000000008ae00000|100%| O| |TAMS 0x000000008ad00000, 0x000000008ad00000| Untracked +| 126|0x000000008ae00000, 0x000000008af00000, 0x000000008af00000|100%| O| |TAMS 0x000000008ae00000, 0x000000008ae00000| Untracked +| 127|0x000000008af00000, 0x000000008b000000, 0x000000008b000000|100%| O| |TAMS 0x000000008af00000, 0x000000008af00000| Untracked +| 128|0x000000008b000000, 0x000000008b000000, 0x000000008b100000| 0%| F| |TAMS 0x000000008b000000, 0x000000008b000000| Untracked +| 129|0x000000008b100000, 0x000000008b100000, 0x000000008b200000| 0%| F| |TAMS 0x000000008b100000, 0x000000008b100000| Untracked +| 130|0x000000008b200000, 0x000000008b200000, 0x000000008b300000| 0%| F| |TAMS 0x000000008b200000, 0x000000008b200000| Untracked +| 131|0x000000008b300000, 0x000000008b300000, 0x000000008b400000| 0%| F| |TAMS 0x000000008b300000, 0x000000008b300000| Untracked +| 132|0x000000008b400000, 0x000000008b400000, 0x000000008b500000| 0%| F| |TAMS 0x000000008b400000, 0x000000008b400000| Untracked +| 133|0x000000008b500000, 0x000000008b500000, 0x000000008b600000| 0%| F| |TAMS 0x000000008b500000, 0x000000008b500000| Untracked +| 134|0x000000008b600000, 0x000000008b600000, 0x000000008b700000| 0%| F| |TAMS 0x000000008b600000, 0x000000008b600000| Untracked +| 135|0x000000008b700000, 0x000000008b700000, 0x000000008b800000| 0%| F| |TAMS 0x000000008b700000, 0x000000008b700000| Untracked +| 136|0x000000008b800000, 0x000000008b800000, 0x000000008b900000| 0%| F| |TAMS 0x000000008b800000, 0x000000008b800000| Untracked +| 137|0x000000008b900000, 0x000000008b900000, 0x000000008ba00000| 0%| F| |TAMS 0x000000008b900000, 0x000000008b900000| Untracked +| 138|0x000000008ba00000, 0x000000008ba00000, 0x000000008bb00000| 0%| F| |TAMS 0x000000008ba00000, 0x000000008ba00000| Untracked +| 139|0x000000008bb00000, 0x000000008bb00000, 0x000000008bc00000| 0%| F| |TAMS 0x000000008bb00000, 0x000000008bb00000| Untracked +| 140|0x000000008bc00000, 0x000000008bc00000, 0x000000008bd00000| 0%| F| |TAMS 0x000000008bc00000, 0x000000008bc00000| Untracked +| 141|0x000000008bd00000, 0x000000008bd00000, 0x000000008be00000| 0%| F| |TAMS 0x000000008bd00000, 0x000000008bd00000| Untracked +| 142|0x000000008be00000, 0x000000008be00000, 0x000000008bf00000| 0%| F| |TAMS 0x000000008be00000, 0x000000008be00000| Untracked +| 143|0x000000008bf00000, 0x000000008bf00000, 0x000000008c000000| 0%| F| |TAMS 0x000000008bf00000, 0x000000008bf00000| Untracked +| 144|0x000000008c000000, 0x000000008c000000, 0x000000008c100000| 0%| F| |TAMS 0x000000008c000000, 0x000000008c000000| Untracked +| 145|0x000000008c100000, 0x000000008c100000, 0x000000008c200000| 0%| F| |TAMS 0x000000008c100000, 0x000000008c100000| Untracked +| 146|0x000000008c200000, 0x000000008c200000, 0x000000008c300000| 0%| F| |TAMS 0x000000008c200000, 0x000000008c200000| Untracked +| 147|0x000000008c300000, 0x000000008c300000, 0x000000008c400000| 0%| F| |TAMS 0x000000008c300000, 0x000000008c300000| Untracked +| 148|0x000000008c400000, 0x000000008c400000, 0x000000008c500000| 0%| F| |TAMS 0x000000008c400000, 0x000000008c400000| Untracked +| 149|0x000000008c500000, 0x000000008c500000, 0x000000008c600000| 0%| F| |TAMS 0x000000008c500000, 0x000000008c500000| Untracked +| 150|0x000000008c600000, 0x000000008c600000, 0x000000008c700000| 0%| F| |TAMS 0x000000008c600000, 0x000000008c600000| Untracked +| 151|0x000000008c700000, 0x000000008c700000, 0x000000008c800000| 0%| F| |TAMS 0x000000008c700000, 0x000000008c700000| Untracked +| 152|0x000000008c800000, 0x000000008c800000, 0x000000008c900000| 0%| F| |TAMS 0x000000008c800000, 0x000000008c800000| Untracked +| 153|0x000000008c900000, 0x000000008c900000, 0x000000008ca00000| 0%| F| |TAMS 0x000000008c900000, 0x000000008c900000| Untracked +| 154|0x000000008ca00000, 0x000000008ca00000, 0x000000008cb00000| 0%| F| |TAMS 0x000000008ca00000, 0x000000008ca00000| Untracked +| 155|0x000000008cb00000, 0x000000008cb00000, 0x000000008cc00000| 0%| F| |TAMS 0x000000008cb00000, 0x000000008cb00000| Untracked +| 156|0x000000008cc00000, 0x000000008cc00000, 0x000000008cd00000| 0%| F| |TAMS 0x000000008cc00000, 0x000000008cc00000| Untracked +| 157|0x000000008cd00000, 0x000000008cd00000, 0x000000008ce00000| 0%| F| |TAMS 0x000000008cd00000, 0x000000008cd00000| Untracked +| 158|0x000000008ce00000, 0x000000008ce00000, 0x000000008cf00000| 0%| F| |TAMS 0x000000008ce00000, 0x000000008ce00000| Untracked +| 159|0x000000008cf00000, 0x000000008cf00000, 0x000000008d000000| 0%| F| |TAMS 0x000000008cf00000, 0x000000008cf00000| Untracked +| 160|0x000000008d000000, 0x000000008d000000, 0x000000008d100000| 0%| F| |TAMS 0x000000008d000000, 0x000000008d000000| Untracked +| 161|0x000000008d100000, 0x000000008d100000, 0x000000008d200000| 0%| F| |TAMS 0x000000008d100000, 0x000000008d100000| Untracked +| 162|0x000000008d200000, 0x000000008d200000, 0x000000008d300000| 0%| F| |TAMS 0x000000008d200000, 0x000000008d200000| Untracked +| 163|0x000000008d300000, 0x000000008d300000, 0x000000008d400000| 0%| F| |TAMS 0x000000008d300000, 0x000000008d300000| Untracked +| 164|0x000000008d400000, 0x000000008d400000, 0x000000008d500000| 0%| F| |TAMS 0x000000008d400000, 0x000000008d400000| Untracked +| 165|0x000000008d500000, 0x000000008d500000, 0x000000008d600000| 0%| F| |TAMS 0x000000008d500000, 0x000000008d500000| Untracked +| 166|0x000000008d600000, 0x000000008d600000, 0x000000008d700000| 0%| F| |TAMS 0x000000008d600000, 0x000000008d600000| Untracked +| 167|0x000000008d700000, 0x000000008d700000, 0x000000008d800000| 0%| F| |TAMS 0x000000008d700000, 0x000000008d700000| Untracked +| 168|0x000000008d800000, 0x000000008d800000, 0x000000008d900000| 0%| F| |TAMS 0x000000008d800000, 0x000000008d800000| Untracked +| 169|0x000000008d900000, 0x000000008d900000, 0x000000008da00000| 0%| F| |TAMS 0x000000008d900000, 0x000000008d900000| Untracked +| 170|0x000000008da00000, 0x000000008da00000, 0x000000008db00000| 0%| F| |TAMS 0x000000008da00000, 0x000000008da00000| Untracked +| 171|0x000000008db00000, 0x000000008db00000, 0x000000008dc00000| 0%| F| |TAMS 0x000000008db00000, 0x000000008db00000| Untracked +| 172|0x000000008dc00000, 0x000000008dc00000, 0x000000008dd00000| 0%| F| |TAMS 0x000000008dc00000, 0x000000008dc00000| Untracked +| 173|0x000000008dd00000, 0x000000008dd00000, 0x000000008de00000| 0%| F| |TAMS 0x000000008dd00000, 0x000000008dd00000| Untracked +| 174|0x000000008de00000, 0x000000008de00000, 0x000000008df00000| 0%| F| |TAMS 0x000000008de00000, 0x000000008de00000| Untracked +| 175|0x000000008df00000, 0x000000008df00000, 0x000000008e000000| 0%| F| |TAMS 0x000000008df00000, 0x000000008df00000| Untracked +| 176|0x000000008e000000, 0x000000008e000000, 0x000000008e100000| 0%| F| |TAMS 0x000000008e000000, 0x000000008e000000| Untracked +| 177|0x000000008e100000, 0x000000008e100000, 0x000000008e200000| 0%| F| |TAMS 0x000000008e100000, 0x000000008e100000| Untracked +| 178|0x000000008e200000, 0x000000008e200000, 0x000000008e300000| 0%| F| |TAMS 0x000000008e200000, 0x000000008e200000| Untracked +| 179|0x000000008e300000, 0x000000008e300000, 0x000000008e400000| 0%| F| |TAMS 0x000000008e300000, 0x000000008e300000| Untracked +| 180|0x000000008e400000, 0x000000008e400000, 0x000000008e500000| 0%| F| |TAMS 0x000000008e400000, 0x000000008e400000| Untracked +| 181|0x000000008e500000, 0x000000008e500000, 0x000000008e600000| 0%| F| |TAMS 0x000000008e500000, 0x000000008e500000| Untracked +| 182|0x000000008e600000, 0x000000008e600000, 0x000000008e700000| 0%| F| |TAMS 0x000000008e600000, 0x000000008e600000| Untracked +| 183|0x000000008e700000, 0x000000008e700000, 0x000000008e800000| 0%| F| |TAMS 0x000000008e700000, 0x000000008e700000| Untracked +| 184|0x000000008e800000, 0x000000008e800000, 0x000000008e900000| 0%| F| |TAMS 0x000000008e800000, 0x000000008e800000| Untracked +| 185|0x000000008e900000, 0x000000008e900000, 0x000000008ea00000| 0%| F| |TAMS 0x000000008e900000, 0x000000008e900000| Untracked +| 186|0x000000008ea00000, 0x000000008ea00000, 0x000000008eb00000| 0%| F| |TAMS 0x000000008ea00000, 0x000000008ea00000| Untracked +| 187|0x000000008eb00000, 0x000000008eb00000, 0x000000008ec00000| 0%| F| |TAMS 0x000000008eb00000, 0x000000008eb00000| Untracked +| 188|0x000000008ec00000, 0x000000008ec00000, 0x000000008ed00000| 0%| F| |TAMS 0x000000008ec00000, 0x000000008ec00000| Untracked +| 189|0x000000008ed00000, 0x000000008ed00000, 0x000000008ee00000| 0%| F| |TAMS 0x000000008ed00000, 0x000000008ed00000| Untracked +| 190|0x000000008ee00000, 0x000000008ee00000, 0x000000008ef00000| 0%| F| |TAMS 0x000000008ee00000, 0x000000008ee00000| Untracked +| 191|0x000000008ef00000, 0x000000008ef00000, 0x000000008f000000| 0%| F| |TAMS 0x000000008ef00000, 0x000000008ef00000| Untracked +| 192|0x000000008f000000, 0x000000008f000000, 0x000000008f100000| 0%| F| |TAMS 0x000000008f000000, 0x000000008f000000| Untracked +| 193|0x000000008f100000, 0x000000008f100000, 0x000000008f200000| 0%| F| |TAMS 0x000000008f100000, 0x000000008f100000| Untracked +| 194|0x000000008f200000, 0x000000008f200000, 0x000000008f300000| 0%| F| |TAMS 0x000000008f200000, 0x000000008f200000| Untracked +| 195|0x000000008f300000, 0x000000008f300000, 0x000000008f400000| 0%| F| |TAMS 0x000000008f300000, 0x000000008f300000| Untracked +| 196|0x000000008f400000, 0x000000008f400000, 0x000000008f500000| 0%| F| |TAMS 0x000000008f400000, 0x000000008f400000| Untracked +| 197|0x000000008f500000, 0x000000008f500000, 0x000000008f600000| 0%| F| |TAMS 0x000000008f500000, 0x000000008f500000| Untracked +| 198|0x000000008f600000, 0x000000008f600000, 0x000000008f700000| 0%| F| |TAMS 0x000000008f600000, 0x000000008f600000| Untracked +| 199|0x000000008f700000, 0x000000008f700000, 0x000000008f800000| 0%| F| |TAMS 0x000000008f700000, 0x000000008f700000| Untracked +| 200|0x000000008f800000, 0x000000008f800000, 0x000000008f900000| 0%| F| |TAMS 0x000000008f800000, 0x000000008f800000| Untracked +| 201|0x000000008f900000, 0x000000008f900000, 0x000000008fa00000| 0%| F| |TAMS 0x000000008f900000, 0x000000008f900000| Untracked +| 202|0x000000008fa00000, 0x000000008fa00000, 0x000000008fb00000| 0%| F| |TAMS 0x000000008fa00000, 0x000000008fa00000| Untracked +| 203|0x000000008fb00000, 0x000000008fb00000, 0x000000008fc00000| 0%| F| |TAMS 0x000000008fb00000, 0x000000008fb00000| Untracked +| 204|0x000000008fc00000, 0x000000008fc00000, 0x000000008fd00000| 0%| F| |TAMS 0x000000008fc00000, 0x000000008fc00000| Untracked +| 205|0x000000008fd00000, 0x000000008fd00000, 0x000000008fe00000| 0%| F| |TAMS 0x000000008fd00000, 0x000000008fd00000| Untracked +| 206|0x000000008fe00000, 0x000000008fe00000, 0x000000008ff00000| 0%| F| |TAMS 0x000000008fe00000, 0x000000008fe00000| Untracked +| 207|0x000000008ff00000, 0x000000008ff00000, 0x0000000090000000| 0%| F| |TAMS 0x000000008ff00000, 0x000000008ff00000| Untracked +| 208|0x0000000090000000, 0x0000000090000000, 0x0000000090100000| 0%| F| |TAMS 0x0000000090000000, 0x0000000090000000| Untracked +| 209|0x0000000090100000, 0x0000000090100000, 0x0000000090200000| 0%| F| |TAMS 0x0000000090100000, 0x0000000090100000| Untracked +| 210|0x0000000090200000, 0x0000000090200000, 0x0000000090300000| 0%| F| |TAMS 0x0000000090200000, 0x0000000090200000| Untracked +| 211|0x0000000090300000, 0x0000000090300000, 0x0000000090400000| 0%| F| |TAMS 0x0000000090300000, 0x0000000090300000| Untracked +| 212|0x0000000090400000, 0x0000000090400000, 0x0000000090500000| 0%| F| |TAMS 0x0000000090400000, 0x0000000090400000| Untracked +| 213|0x0000000090500000, 0x0000000090500000, 0x0000000090600000| 0%| F| |TAMS 0x0000000090500000, 0x0000000090500000| Untracked +| 214|0x0000000090600000, 0x0000000090600000, 0x0000000090700000| 0%| F| |TAMS 0x0000000090600000, 0x0000000090600000| Untracked +| 215|0x0000000090700000, 0x0000000090700000, 0x0000000090800000| 0%| F| |TAMS 0x0000000090700000, 0x0000000090700000| Untracked +| 216|0x0000000090800000, 0x0000000090800000, 0x0000000090900000| 0%| F| |TAMS 0x0000000090800000, 0x0000000090800000| Untracked +| 217|0x0000000090900000, 0x0000000090900000, 0x0000000090a00000| 0%| F| |TAMS 0x0000000090900000, 0x0000000090900000| Untracked +| 218|0x0000000090a00000, 0x0000000090a00000, 0x0000000090b00000| 0%| F| |TAMS 0x0000000090a00000, 0x0000000090a00000| Untracked +| 219|0x0000000090b00000, 0x0000000090b00000, 0x0000000090c00000| 0%| F| |TAMS 0x0000000090b00000, 0x0000000090b00000| Untracked +| 220|0x0000000090c00000, 0x0000000090c00000, 0x0000000090d00000| 0%| F| |TAMS 0x0000000090c00000, 0x0000000090c00000| Untracked +| 221|0x0000000090d00000, 0x0000000090d00000, 0x0000000090e00000| 0%| F| |TAMS 0x0000000090d00000, 0x0000000090d00000| Untracked +| 222|0x0000000090e00000, 0x0000000090e00000, 0x0000000090f00000| 0%| F| |TAMS 0x0000000090e00000, 0x0000000090e00000| Untracked +| 223|0x0000000090f00000, 0x0000000090f00000, 0x0000000091000000| 0%| F| |TAMS 0x0000000090f00000, 0x0000000090f00000| Untracked +| 224|0x0000000091000000, 0x0000000091000000, 0x0000000091100000| 0%| F| |TAMS 0x0000000091000000, 0x0000000091000000| Untracked +| 225|0x0000000091100000, 0x0000000091100000, 0x0000000091200000| 0%| F| |TAMS 0x0000000091100000, 0x0000000091100000| Untracked +| 226|0x0000000091200000, 0x0000000091200000, 0x0000000091300000| 0%| F| |TAMS 0x0000000091200000, 0x0000000091200000| Untracked +| 227|0x0000000091300000, 0x0000000091300000, 0x0000000091400000| 0%| F| |TAMS 0x0000000091300000, 0x0000000091300000| Untracked +| 228|0x0000000091400000, 0x0000000091400000, 0x0000000091500000| 0%| F| |TAMS 0x0000000091400000, 0x0000000091400000| Untracked +| 229|0x0000000091500000, 0x0000000091500000, 0x0000000091600000| 0%| F| |TAMS 0x0000000091500000, 0x0000000091500000| Untracked +| 230|0x0000000091600000, 0x0000000091600000, 0x0000000091700000| 0%| F| |TAMS 0x0000000091600000, 0x0000000091600000| Untracked +| 231|0x0000000091700000, 0x0000000091700000, 0x0000000091800000| 0%| F| |TAMS 0x0000000091700000, 0x0000000091700000| Untracked +| 232|0x0000000091800000, 0x0000000091800000, 0x0000000091900000| 0%| F| |TAMS 0x0000000091800000, 0x0000000091800000| Untracked +| 233|0x0000000091900000, 0x0000000091900000, 0x0000000091a00000| 0%| F| |TAMS 0x0000000091900000, 0x0000000091900000| Untracked +| 234|0x0000000091a00000, 0x0000000091a00000, 0x0000000091b00000| 0%| F| |TAMS 0x0000000091a00000, 0x0000000091a00000| Untracked +| 235|0x0000000091b00000, 0x0000000091b0c6f0, 0x0000000091c00000| 4%| S|CS|TAMS 0x0000000091b00000, 0x0000000091b00000| Complete +| 236|0x0000000091c00000, 0x0000000091c00000, 0x0000000091d00000| 0%| F| |TAMS 0x0000000091c00000, 0x0000000091c00000| Untracked +| 237|0x0000000091d00000, 0x0000000091d00000, 0x0000000091e00000| 0%| F| |TAMS 0x0000000091d00000, 0x0000000091d00000| Untracked +| 238|0x0000000091e00000, 0x0000000091e00000, 0x0000000091f00000| 0%| F| |TAMS 0x0000000091e00000, 0x0000000091e00000| Untracked +| 239|0x0000000091f00000, 0x0000000091f00000, 0x0000000092000000| 0%| F| |TAMS 0x0000000091f00000, 0x0000000091f00000| Untracked +| 240|0x0000000092000000, 0x0000000092000000, 0x0000000092100000| 0%| F| |TAMS 0x0000000092000000, 0x0000000092000000| Untracked +| 241|0x0000000092100000, 0x0000000092100000, 0x0000000092200000| 0%| F| |TAMS 0x0000000092100000, 0x0000000092100000| Untracked +| 242|0x0000000092200000, 0x0000000092200000, 0x0000000092300000| 0%| F| |TAMS 0x0000000092200000, 0x0000000092200000| Untracked +| 243|0x0000000092300000, 0x0000000092300000, 0x0000000092400000| 0%| F| |TAMS 0x0000000092300000, 0x0000000092300000| Untracked +| 244|0x0000000092400000, 0x0000000092400000, 0x0000000092500000| 0%| F| |TAMS 0x0000000092400000, 0x0000000092400000| Untracked +| 245|0x0000000092500000, 0x0000000092500000, 0x0000000092600000| 0%| F| |TAMS 0x0000000092500000, 0x0000000092500000| Untracked +| 246|0x0000000092600000, 0x0000000092600000, 0x0000000092700000| 0%| F| |TAMS 0x0000000092600000, 0x0000000092600000| Untracked + +Card table byte_map: [0x0000022572960000,0x0000022572d50000] _byte_map_base: 0x0000022572548000 + +Marking Bits (Prev, Next): (CMBitMap*) 0x000002256e87eec0, (CMBitMap*) 0x000002256e87ee80 + Prev Bits: [0x0000022575080000, 0x0000022576fc0000) + Next Bits: [0x0000022573140000, 0x0000022575080000) + +Polling page: 0x000002256e000000 + +Metaspace: + +Usage: + Non-class: 90.02 MB capacity, 89.02 MB ( 99%) used, 826.88 KB ( <1%) free+waste, 193.69 KB ( <1%) overhead. + Class: 13.68 MB capacity, 13.16 MB ( 96%) used, 446.24 KB ( 3%) free+waste, 79.12 KB ( <1%) overhead. + Both: 103.70 MB capacity, 102.19 MB ( 99%) used, 1.24 MB ( 1%) free+waste, 272.81 KB ( <1%) overhead. + +Virtual space: + Non-class space: 92.00 MB reserved, 90.17 MB ( 98%) committed + Class space: 1.00 GB reserved, 13.75 MB ( 1%) committed + Both: 1.09 GB reserved, 103.92 MB ( 9%) committed + +Chunk freelists: + Non-Class: 26.00 KB + Class: 12.00 KB + Both: 38.00 KB + +MaxMetaspaceSize: 17179869184.00 GB +CompressedClassSpaceSize: 1.00 GB + +CodeHeap 'non-profiled nmethods': size=238336Kb used=29635Kb max_used=29635Kb free=208700Kb + bounds [0x0000022500740000, 0x0000022502440000, 0x000002250f000000] +CodeHeap 'non-nmethods': size=7424Kb used=1403Kb max_used=1403Kb free=6020Kb + bounds [0x0000022500000000, 0x0000022500270000, 0x0000022500740000] + total_blobs=18391 nmethods=17678 adapters=639 + compilation: enabled + stopped_count=0, restarted_count=0 + full_count=0 + +Compilation events (20 events): +Event: 5890.706 Thread 0x000002257a2c59e0 18301 ! 1 sun.rmi.transport.Transport::serviceCall (349 bytes) +Event: 5891.217 Thread 0x000002257a2c59e0 nmethod 18301 0x0000022502426710 code [0x0000022502426ce0, 0x0000022502428b28] +Event: 5950.695 Thread 0x000002257a2c59e0 18309 1 sun.rmi.server.UnicastServerRef::unmarshalCustomCallData (31 bytes) +Event: 5950.702 Thread 0x000002257a2c59e0 nmethod 18309 0x000002250242ae10 code [0x000002250242afe0, 0x000002250242b288] +Event: 5950.702 Thread 0x000002257a2c59e0 18310 1 sun.rmi.transport.ConnectionInputStream::registerRefs (71 bytes) +Event: 5950.716 Thread 0x000002257a2c59e0 nmethod 18310 0x000002250242b410 code [0x000002250242b620, 0x000002250242b938] +Event: 5950.716 Thread 0x000002257a2c59e0 18311 ! 1 sun.rmi.transport.ConnectionInputStream::done (145 bytes) +Event: 5950.737 Thread 0x000002257a2c59e0 nmethod 18311 0x000002250242bb10 code [0x000002250242bde0, 0x000002250242d028] +Event: 6010.700 Thread 0x000002257a2c59e0 18312 1 java.net.InetSocketAddress::getAddress (8 bytes) +Event: 6010.700 Thread 0x000002257a2c59e0 nmethod 18312 0x000002250242db10 code [0x000002250242dca0, 0x000002250242dd58] +Event: 6265.740 Thread 0x000002257a2c59e0 18313 s! 1 java.net.Socket::close (47 bytes) +Event: 6265.740 Thread 0x000002257a2c59e0 nmethod 18313 0x000002250242de10 code [0x000002250242dfc0, 0x000002250242e2f8] +Event: 6360.856 Thread 0x000002257a2c59e0 18314 1 java.util.Collections::reverse (125 bytes) +Event: 6360.862 Thread 0x000002257a2c59e0 nmethod 18314 0x000002250242e490 code [0x000002250242e6c0, 0x000002250242ea48] +Event: 6490.769 Thread 0x000002257a2c59e0 18315 1 java.net.ServerSocket::isBound (5 bytes) +Event: 6490.769 Thread 0x000002257a2c59e0 nmethod 18315 0x000002250242ec90 code [0x000002250242ee20, 0x000002250242eed8] +Event: 6747.010 Thread 0x000002257a2c59e0 18316 1 java.util.concurrent.SynchronousQueue$TransferStack::awaitFulfill (169 bytes) +Event: 6747.383 Thread 0x000002257a2c59e0 nmethod 18316 0x000002250242ef90 code [0x000002250242f220, 0x000002250242ff98] +Event: 6793.452 Thread 0x000002257a2c59e0 18317 s 1 com.zaxxer.hikari.pool.HikariPool::fillPool (78 bytes) +Event: 6793.697 Thread 0x000002257a2c59e0 nmethod 18317 0x0000022502430590 code [0x0000022502430760, 0x0000022502430a28] + +GC Heap History (20 events): +Event: 6175.390 GC heap after +{Heap after GC invocations=162 (full 0): + garbage-first heap total 252928K, used 109784K [0x0000000083000000, 0x0000000100000000) + region size 1024K, 1 young (1024K), 1 survivors (1024K) + Metaspace used 104639K, capacity 106186K, committed 106416K, reserved 1142784K + class space used 13478K, capacity 14004K, committed 14080K, reserved 1048576K +} +Event: 6315.685 GC heap before +{Heap before GC invocations=162 (full 0): + garbage-first heap total 252928K, used 225496K [0x0000000083000000, 0x0000000100000000) + region size 1024K, 114 young (116736K), 1 survivors (1024K) + Metaspace used 104639K, capacity 106186K, committed 106416K, reserved 1142784K + class space used 13478K, capacity 14004K, committed 14080K, reserved 1048576K +} +Event: 6315.691 GC heap after +{Heap after GC invocations=163 (full 0): + garbage-first heap total 252928K, used 109802K [0x0000000083000000, 0x0000000100000000) + region size 1024K, 1 young (1024K), 1 survivors (1024K) + Metaspace used 104639K, capacity 106186K, committed 106416K, reserved 1142784K + class space used 13478K, capacity 14004K, committed 14080K, reserved 1048576K +} +Event: 6452.947 GC heap before +{Heap before GC invocations=163 (full 0): + garbage-first heap total 252928K, used 225514K [0x0000000083000000, 0x0000000100000000) + region size 1024K, 114 young (116736K), 1 survivors (1024K) + Metaspace used 104639K, capacity 106186K, committed 106416K, reserved 1142784K + class space used 13478K, capacity 14004K, committed 14080K, reserved 1048576K +} +Event: 6452.951 GC heap after +{Heap after GC invocations=164 (full 0): + garbage-first heap total 252928K, used 109747K [0x0000000083000000, 0x0000000100000000) + region size 1024K, 1 young (1024K), 1 survivors (1024K) + Metaspace used 104639K, capacity 106186K, committed 106416K, reserved 1142784K + class space used 13478K, capacity 14004K, committed 14080K, reserved 1048576K +} +Event: 6584.252 GC heap before +{Heap before GC invocations=164 (full 0): + garbage-first heap total 252928K, used 225459K [0x0000000083000000, 0x0000000100000000) + region size 1024K, 114 young (116736K), 1 survivors (1024K) + Metaspace used 104639K, capacity 106186K, committed 106416K, reserved 1142784K + class space used 13478K, capacity 14004K, committed 14080K, reserved 1048576K +} +Event: 6584.353 GC heap after +{Heap after GC invocations=165 (full 0): + garbage-first heap total 252928K, used 109779K [0x0000000083000000, 0x0000000100000000) + region size 1024K, 1 young (1024K), 1 survivors (1024K) + Metaspace used 104639K, capacity 106186K, committed 106416K, reserved 1142784K + class space used 13478K, capacity 14004K, committed 14080K, reserved 1048576K +} +Event: 6724.122 GC heap before +{Heap before GC invocations=165 (full 0): + garbage-first heap total 252928K, used 225491K [0x0000000083000000, 0x0000000100000000) + region size 1024K, 114 young (116736K), 1 survivors (1024K) + Metaspace used 104639K, capacity 106186K, committed 106416K, reserved 1142784K + class space used 13478K, capacity 14004K, committed 14080K, reserved 1048576K +} +Event: 6724.302 GC heap after +{Heap after GC invocations=166 (full 0): + garbage-first heap total 252928K, used 109770K [0x0000000083000000, 0x0000000100000000) + region size 1024K, 1 young (1024K), 1 survivors (1024K) + Metaspace used 104639K, capacity 106186K, committed 106416K, reserved 1142784K + class space used 13478K, capacity 14004K, committed 14080K, reserved 1048576K +} +Event: 6893.026 GC heap before +{Heap before GC invocations=166 (full 0): + garbage-first heap total 252928K, used 225482K [0x0000000083000000, 0x0000000100000000) + region size 1024K, 114 young (116736K), 1 survivors (1024K) + Metaspace used 104639K, capacity 106186K, committed 106416K, reserved 1142784K + class space used 13478K, capacity 14004K, committed 14080K, reserved 1048576K +} +Event: 6919.432 GC heap after +{Heap after GC invocations=167 (full 0): + garbage-first heap total 252928K, used 109731K [0x0000000083000000, 0x0000000100000000) + region size 1024K, 1 young (1024K), 1 survivors (1024K) + Metaspace used 104639K, capacity 106186K, committed 106416K, reserved 1142784K + class space used 13478K, capacity 14004K, committed 14080K, reserved 1048576K +} +Event: 6984.248 GC heap before +{Heap before GC invocations=167 (full 0): + garbage-first heap total 252928K, used 120995K [0x0000000083000000, 0x0000000100000000) + region size 1024K, 12 young (12288K), 1 survivors (1024K) + Metaspace used 104639K, capacity 106186K, committed 106416K, reserved 1142784K + class space used 13478K, capacity 14004K, committed 14080K, reserved 1048576K +} +Event: 7027.223 GC heap after +{Heap after GC invocations=168 (full 0): + garbage-first heap total 252928K, used 109826K [0x0000000083000000, 0x0000000100000000) + region size 1024K, 1 young (1024K), 1 survivors (1024K) + Metaspace used 104639K, capacity 106186K, committed 106416K, reserved 1142784K + class space used 13478K, capacity 14004K, committed 14080K, reserved 1048576K +} +Event: 7084.006 GC heap before +{Heap before GC invocations=168 (full 0): + garbage-first heap total 252928K, used 121090K [0x0000000083000000, 0x0000000100000000) + region size 1024K, 12 young (12288K), 1 survivors (1024K) + Metaspace used 104640K, capacity 106186K, committed 106416K, reserved 1142784K + class space used 13478K, capacity 14004K, committed 14080K, reserved 1048576K +} +Event: 7087.733 GC heap after +{Heap after GC invocations=169 (full 0): + garbage-first heap total 252928K, used 109663K [0x0000000083000000, 0x0000000100000000) + region size 1024K, 1 young (1024K), 1 survivors (1024K) + Metaspace used 104640K, capacity 106186K, committed 106416K, reserved 1142784K + class space used 13478K, capacity 14004K, committed 14080K, reserved 1048576K +} +Event: 7100.806 GC heap before +{Heap before GC invocations=169 (full 0): + garbage-first heap total 252928K, used 120927K [0x0000000083000000, 0x0000000100000000) + region size 1024K, 12 young (12288K), 1 survivors (1024K) + Metaspace used 104640K, capacity 106186K, committed 106416K, reserved 1142784K + class space used 13478K, capacity 14004K, committed 14080K, reserved 1048576K +} +Event: 7101.906 GC heap after +{Heap after GC invocations=170 (full 0): + garbage-first heap total 252928K, used 109704K [0x0000000083000000, 0x0000000100000000) + region size 1024K, 1 young (1024K), 1 survivors (1024K) + Metaspace used 104640K, capacity 106186K, committed 106416K, reserved 1142784K + class space used 13478K, capacity 14004K, committed 14080K, reserved 1048576K +} +Event: 7117.151 GC heap before +{Heap before GC invocations=170 (full 0): + garbage-first heap total 252928K, used 120968K [0x0000000083000000, 0x0000000100000000) + region size 1024K, 12 young (12288K), 1 survivors (1024K) + Metaspace used 104640K, capacity 106186K, committed 106416K, reserved 1142784K + class space used 13478K, capacity 14004K, committed 14080K, reserved 1048576K +} +Event: 7120.742 GC heap after +{Heap after GC invocations=171 (full 0): + garbage-first heap total 252928K, used 109844K [0x0000000083000000, 0x0000000100000000) + region size 1024K, 1 young (1024K), 1 survivors (1024K) + Metaspace used 104640K, capacity 106186K, committed 106416K, reserved 1142784K + class space used 13478K, capacity 14004K, committed 14080K, reserved 1048576K +} +Event: 7174.869 GC heap before +{Heap before GC invocations=171 (full 0): + garbage-first heap total 252928K, used 121108K [0x0000000083000000, 0x0000000100000000) + region size 1024K, 12 young (12288K), 1 survivors (1024K) + Metaspace used 104640K, capacity 106186K, committed 106416K, reserved 1142784K + class space used 13478K, capacity 14004K, committed 14080K, reserved 1048576K +} + +Deoptimization events (18 events): +Event: 34.247 Thread 0x000002257b705830 DEOPT PACKING pc=0x0000022500a1433c sp=0x00000051798fccf0 +Event: 34.247 Thread 0x000002257b705830 DEOPT UNPACKING pc=0x000002250004e23f sp=0x00000051798fc248 mode 0 +Event: 41.141 Thread 0x000002257b705830 DEOPT PACKING pc=0x00000225011fa5dc sp=0x00000051798f5ec0 +Event: 41.141 Thread 0x000002257b705830 DEOPT UNPACKING pc=0x000002250004e23f sp=0x00000051798f5360 mode 0 +Event: 46.535 Thread 0x000002257b705830 DEOPT PACKING pc=0x0000022500a2d6d2 sp=0x00000051798f7600 +Event: 46.535 Thread 0x000002257b705830 DEOPT UNPACKING pc=0x000002250004e23f sp=0x00000051798f6b08 mode 3 +Event: 46.535 Thread 0x000002257b705830 DEOPT PACKING pc=0x0000022500a29b25 sp=0x00000051798f75c0 +Event: 46.535 Thread 0x000002257b705830 DEOPT UNPACKING pc=0x000002250004e23f sp=0x00000051798f6b08 mode 3 +Event: 53.173 Thread 0x000002257b705830 DEOPT PACKING pc=0x000002250188e47c sp=0x00000051798fbbd0 +Event: 53.173 Thread 0x000002257b705830 DEOPT UNPACKING pc=0x000002250004e23f sp=0x00000051798fb128 mode 0 +Event: 53.173 Thread 0x000002257b705830 DEOPT PACKING pc=0x000002250188e47c sp=0x00000051798fd390 +Event: 53.173 Thread 0x000002257b705830 DEOPT UNPACKING pc=0x000002250004e23f sp=0x00000051798fc8e8 mode 0 +Event: 53.710 Thread 0x000002257b705830 DEOPT PACKING pc=0x0000022500cf2fa4 sp=0x00000051798fe0a0 +Event: 53.710 Thread 0x000002257b705830 DEOPT UNPACKING pc=0x000002250004e23f sp=0x00000051798fd720 mode 0 +Event: 55.827 Thread 0x000002257b705830 DEOPT PACKING pc=0x00000225008b00cc sp=0x00000051798fbeb0 +Event: 55.827 Thread 0x000002257b705830 DEOPT UNPACKING pc=0x000002250004e23f sp=0x00000051798fb3d8 mode 0 +Event: 534.201 Thread 0x000002250f7ac070 DEOPT PACKING pc=0x0000022501c44398 sp=0x000000517b0fe110 +Event: 534.205 Thread 0x000002250f7ac070 DEOPT UNPACKING pc=0x000002250004e23f sp=0x000000517b0fd6b0 mode 3 + +Classes unloaded (14 events): +Event: 49.060 Thread 0x0000022579a517b0 Unloading class 0x0000000100a8dc40 'jdk/internal/reflect/GeneratedSerializationConstructorAccessor38' +Event: 49.060 Thread 0x0000022579a517b0 Unloading class 0x0000000100a8e040 'jdk/internal/reflect/GeneratedSerializationConstructorAccessor37' +Event: 49.060 Thread 0x0000022579a517b0 Unloading class 0x0000000100a8ec40 'jdk/internal/reflect/GeneratedSerializationConstructorAccessor36' +Event: 49.060 Thread 0x0000022579a517b0 Unloading class 0x0000000100a88440 'jdk/internal/reflect/GeneratedSerializationConstructorAccessor35' +Event: 50.471 Thread 0x0000022579a517b0 Unloading class 0x0000000100a8a040 'jdk/internal/reflect/GeneratedSerializationConstructorAccessor39' +Event: 51.854 Thread 0x0000022579a517b0 Unloading class 0x0000000100b16c40 'jdk/internal/reflect/GeneratedSerializationConstructorAccessor41' +Event: 51.854 Thread 0x0000022579a517b0 Unloading class 0x0000000100b16840 'jdk/internal/reflect/GeneratedSerializationConstructorAccessor40' +Event: 57.958 Thread 0x0000022579a517b0 Unloading class 0x0000000100b13440 'jdk/internal/reflect/GeneratedSerializationConstructorAccessor48' +Event: 57.958 Thread 0x0000022579a517b0 Unloading class 0x0000000100b13040 'jdk/internal/reflect/GeneratedSerializationConstructorAccessor47' +Event: 57.958 Thread 0x0000022579a517b0 Unloading class 0x0000000100b13c40 'jdk/internal/reflect/GeneratedSerializationConstructorAccessor46' +Event: 57.958 Thread 0x0000022579a517b0 Unloading class 0x0000000100b16c40 'jdk/internal/reflect/GeneratedSerializationConstructorAccessor45' +Event: 57.958 Thread 0x0000022579a517b0 Unloading class 0x0000000100b14840 'jdk/internal/reflect/GeneratedSerializationConstructorAccessor44' +Event: 57.958 Thread 0x0000022579a517b0 Unloading class 0x0000000100b15040 'jdk/internal/reflect/GeneratedSerializationConstructorAccessor43' +Event: 57.958 Thread 0x0000022579a517b0 Unloading class 0x0000000100b15840 'jdk/internal/reflect/GeneratedSerializationConstructorAccessor42' + +Classes redefined (0 events): +No events + +Internal exceptions (20 events): +Event: 59.740 Thread 0x000002257b705830 Exception (0x00000000907e7e00) +thrown [./open/src/hotspot/share/prims/jni.cpp, line 599] +Event: 59.792 Thread 0x000002257b705830 Exception (0x00000000903c29d8) +thrown [./open/src/hotspot/share/prims/jni.cpp, line 599] +Event: 59.793 Thread 0x000002257b705830 Exception (0x00000000903f4b48) +thrown [./open/src/hotspot/share/prims/jni.cpp, line 599] +Event: 59.921 Thread 0x000002257b705830 Exception (0x000000008fb7cc10) +thrown [./open/src/hotspot/share/prims/jni.cpp, line 599] +Event: 59.922 Thread 0x000002257b705830 Exception (0x000000008fbaefc8) +thrown [./open/src/hotspot/share/prims/jni.cpp, line 599] +Event: 59.946 Thread 0x000002257b705830 Exception (0x000000008faafc28) +thrown [./open/src/hotspot/share/prims/jni.cpp, line 599] +Event: 59.946 Thread 0x000002257b705830 Exception (0x000000008fae1dd8) +thrown [./open/src/hotspot/share/prims/jni.cpp, line 599] +Event: 60.015 Thread 0x000002257b705830 Exception (0x000000008f6728c8) +thrown [./open/src/hotspot/share/prims/jni.cpp, line 599] +Event: 60.016 Thread 0x000002257b705830 Exception (0x000000008f6a4c48) +thrown [./open/src/hotspot/share/prims/jni.cpp, line 599] +Event: 60.169 Thread 0x000002257b705830 Exception (0x000000008ea5b1e0) +thrown [./open/src/hotspot/share/prims/jni.cpp, line 599] +Event: 60.170 Thread 0x000002257b705830 Exception (0x000000008ea8d560) +thrown [./open/src/hotspot/share/prims/jni.cpp, line 599] +Event: 72.831 Thread 0x000002250f7aff00 Exception (0x0000000091460a98) +thrown [./open/src/hotspot/share/interpreter/linkResolver.cpp, line 782] +Event: 1811.543 Thread 0x0000022511086690 Exception (0x000000008f781fa0) +thrown [./open/src/hotspot/share/prims/jni.cpp, line 578] +Event: 1963.220 Thread 0x000002250f7ac070 Exception (0x0000000091f6b860) +thrown [./open/src/hotspot/share/interpreter/linkResolver.cpp, line 782] +Event: 1963.220 Thread 0x000002250f7b1be0 Exception (0x0000000091f6d478) +thrown [./open/src/hotspot/share/interpreter/linkResolver.cpp, line 782] +Event: 1985.373 Thread 0x000002250f7ad3b0 Exception (0x000000008cefe048) +thrown [./open/src/hotspot/share/classfile/systemDictionary.cpp, line 295] +Event: 1985.382 Thread 0x000002250f7ad3b0 Exception (0x000000008cd8d1a0) +thrown [./open/src/hotspot/share/classfile/systemDictionary.cpp, line 295] +Event: 3580.488 Thread 0x000002257c546460 Exception (0x000000008edaf398) +thrown [./open/src/hotspot/share/prims/jni.cpp, line 578] +Event: 5368.631 Thread 0x000002257a461050 Exception (0x000000008ed82a20) +thrown [./open/src/hotspot/share/prims/jni.cpp, line 578] +Event: 5399.027 Thread 0x000002257a4646d0 Exception (0x000000008c1018d0) +thrown [./open/src/hotspot/share/prims/jni.cpp, line 599] + +Events (20 events): +Event: 6724.058 Executing VM operation: G1CollectForAllocation +Event: 6724.310 Executing VM operation: G1CollectForAllocation done +Event: 6888.343 Thread 0x000002250f7aca10 Thread exited: 0x000002250f7aca10 +Event: 6892.528 Executing VM operation: G1CollectForAllocation +Event: 6919.698 Executing VM operation: G1CollectForAllocation done +Event: 6919.738 Executing VM operation: HandshakeAllThreads +Event: 6920.191 Executing VM operation: HandshakeAllThreads done +Event: 6973.947 Executing VM operation: G1CollectForAllocation +Event: 7028.276 Executing VM operation: G1CollectForAllocation done +Event: 7028.310 Executing VM operation: HandshakeAllThreads +Event: 7030.417 Executing VM operation: HandshakeAllThreads done +Event: 7035.662 Thread 0x000002257aed8660 Thread exited: 0x000002257aed8660 +Event: 7083.953 Executing VM operation: G1CollectForAllocation +Event: 7087.733 Executing VM operation: G1CollectForAllocation done +Event: 7100.593 Executing VM operation: G1CollectForAllocation +Event: 7101.953 Executing VM operation: G1CollectForAllocation done +Event: 7115.017 Executing VM operation: G1CollectForAllocation +Event: 7120.743 Executing VM operation: G1CollectForAllocation done +Event: 7134.573 Executing VM operation: G1CollectForAllocation +Event: 7172.257 Thread 0x00000225798d3150 Thread added: 0x00000225798d3150 + + +Dynamic libraries: +0x00007ff67fa40000 - 0x00007ff67fa4d000 C:\Users\hp\Downloads\sts-4.10.0.RELEASE\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.2.v20210201-0955\jre\bin\javaw.exe +0x00007ffd21630000 - 0x00007ffd21828000 C:\Windows\SYSTEM32\ntdll.dll +0x00007ffd20cf0000 - 0x00007ffd20dad000 C:\Windows\System32\KERNEL32.DLL +0x00007ffd1ef80000 - 0x00007ffd1f24e000 C:\Windows\System32\KERNELBASE.dll +0x00007ffd1f250000 - 0x00007ffd1f350000 C:\Windows\System32\ucrtbase.dll +0x00007ffd17600000 - 0x00007ffd17619000 C:\Users\hp\Downloads\sts-4.10.0.RELEASE\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.2.v20210201-0955\jre\bin\VCRUNTIME140.dll +0x00007ffcfb0e0000 - 0x00007ffcfb0f8000 C:\Users\hp\Downloads\sts-4.10.0.RELEASE\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.2.v20210201-0955\jre\bin\jli.dll +0x00007ffd207f0000 - 0x00007ffd20990000 C:\Windows\System32\USER32.dll +0x00007ffd1f3f0000 - 0x00007ffd1f412000 C:\Windows\System32\win32u.dll +0x00007ffcff210000 - 0x00007ffcff4aa000 C:\Windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.19041.1110_none_60b5254171f9507e\COMCTL32.dll +0x00007ffd20080000 - 0x00007ffd200aa000 C:\Windows\System32\GDI32.dll +0x00007ffd21270000 - 0x00007ffd2130e000 C:\Windows\System32\msvcrt.dll +0x00007ffd1f420000 - 0x00007ffd1f52b000 C:\Windows\System32\gdi32full.dll +0x00007ffd1f350000 - 0x00007ffd1f3ed000 C:\Windows\System32\msvcp_win.dll +0x00007ffd20050000 - 0x00007ffd20080000 C:\Windows\System32\IMM32.DLL +0x00007ffd175f0000 - 0x00007ffd175fc000 C:\Users\hp\Downloads\sts-4.10.0.RELEASE\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.2.v20210201-0955\jre\bin\vcruntime140_1.dll +0x00007ffd01db0000 - 0x00007ffd01e41000 C:\Users\hp\Downloads\sts-4.10.0.RELEASE\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.2.v20210201-0955\jre\bin\msvcp140.dll +0x00007ffc94a10000 - 0x00007ffc9556e000 C:\Users\hp\Downloads\sts-4.10.0.RELEASE\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.2.v20210201-0955\jre\bin\server\jvm.dll +0x00007ffd21540000 - 0x00007ffd215ee000 C:\Windows\System32\ADVAPI32.dll +0x00007ffd20c50000 - 0x00007ffd20cec000 C:\Windows\System32\sechost.dll +0x00007ffd213f0000 - 0x00007ffd21515000 C:\Windows\System32\RPCRT4.dll +0x00007ffd200b0000 - 0x00007ffd200b8000 C:\Windows\System32\PSAPI.DLL +0x00007ffcfe4f0000 - 0x00007ffcfe517000 C:\Windows\SYSTEM32\WINMM.dll +0x00007ffd18d50000 - 0x00007ffd18d5a000 C:\Windows\SYSTEM32\VERSION.dll +0x00007ffcfeea0000 - 0x00007ffcfeea9000 C:\Windows\SYSTEM32\WSOCK32.dll +0x00007ffd21370000 - 0x00007ffd213db000 C:\Windows\System32\WS2_32.dll +0x00007ffd1d550000 - 0x00007ffd1d562000 C:\Windows\SYSTEM32\kernel.appcore.dll +0x00007ffd19760000 - 0x00007ffd1976a000 C:\Users\hp\Downloads\sts-4.10.0.RELEASE\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.2.v20210201-0955\jre\bin\jimage.dll +0x00007ffd1cac0000 - 0x00007ffd1cca4000 C:\Windows\SYSTEM32\DBGHELP.DLL +0x00007ffd02ee0000 - 0x00007ffd02f0c000 C:\Windows\SYSTEM32\dbgcore.DLL +0x00007ffd1eec0000 - 0x00007ffd1ef42000 C:\Windows\System32\bcryptPrimitives.dll +0x00007ffcf86a0000 - 0x00007ffcf86c5000 C:\Users\hp\Downloads\sts-4.10.0.RELEASE\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.2.v20210201-0955\jre\bin\java.dll +0x00007ffcf8680000 - 0x00007ffcf8698000 C:\Users\hp\Downloads\sts-4.10.0.RELEASE\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.2.v20210201-0955\jre\bin\zip.dll +0x00007ffd1f770000 - 0x00007ffd1feb3000 C:\Windows\System32\SHELL32.dll +0x00007ffd1cda0000 - 0x00007ffd1d535000 C:\Windows\SYSTEM32\windows.storage.dll +0x00007ffd20f10000 - 0x00007ffd21264000 C:\Windows\System32\combase.dll +0x00007ffd1e750000 - 0x00007ffd1e780000 C:\Windows\SYSTEM32\Wldp.dll +0x00007ffd20b40000 - 0x00007ffd20bed000 C:\Windows\System32\SHCORE.dll +0x00007ffd201e0000 - 0x00007ffd20235000 C:\Windows\System32\shlwapi.dll +0x00007ffd1ec90000 - 0x00007ffd1ecaf000 C:\Windows\SYSTEM32\profapi.dll +0x00007ffcf8660000 - 0x00007ffcf8679000 C:\Users\hp\Downloads\sts-4.10.0.RELEASE\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.2.v20210201-0955\jre\bin\net.dll +0x00007ffd16de0000 - 0x00007ffd16eea000 C:\Windows\SYSTEM32\WINHTTP.dll +0x00007ffd1e4b0000 - 0x00007ffd1e51a000 C:\Windows\system32\mswsock.dll +0x00007ffcd7b20000 - 0x00007ffcd7b32000 C:\Users\hp\Downloads\sts-4.10.0.RELEASE\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.2.v20210201-0955\jre\bin\nio.dll +0x00007ffcdbaa0000 - 0x00007ffcdbaa9000 C:\Users\hp\Downloads\sts-4.10.0.RELEASE\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.2.v20210201-0955\jre\bin\management.dll +0x00007ffcd79d0000 - 0x00007ffcd79db000 C:\Users\hp\Downloads\sts-4.10.0.RELEASE\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.2.v20210201-0955\jre\bin\management_ext.dll +0x00007ffcfedd0000 - 0x00007ffcfede7000 C:\Windows\system32\napinsp.dll +0x00007ffcfedb0000 - 0x00007ffcfedcb000 C:\Windows\system32\pnrpnsp.dll +0x00007ffd19410000 - 0x00007ffd19425000 C:\Windows\system32\wshbth.dll +0x00007ffd18010000 - 0x00007ffd1802d000 C:\Windows\system32\NLAapi.dll +0x00007ffd1e170000 - 0x00007ffd1e1ab000 C:\Windows\SYSTEM32\IPHLPAPI.DLL +0x00007ffd1e1b0000 - 0x00007ffd1e27a000 C:\Windows\SYSTEM32\DNSAPI.dll +0x00007ffd213e0000 - 0x00007ffd213e8000 C:\Windows\System32\NSI.dll +0x00007ffcfed90000 - 0x00007ffcfeda2000 C:\Windows\System32\winrnr.dll +0x00007ffd01720000 - 0x00007ffd0172a000 C:\Windows\System32\rasadhlp.dll +0x00007ffd06860000 - 0x00007ffd068e0000 C:\Windows\System32\fwpuclnt.dll +0x00007ffd1ef50000 - 0x00007ffd1ef77000 C:\Windows\System32\bcrypt.dll +0x00007ffd1e690000 - 0x00007ffd1e6a8000 C:\Windows\SYSTEM32\CRYPTSP.dll +0x00007ffd1dde0000 - 0x00007ffd1de14000 C:\Windows\system32\rsaenh.dll +0x00007ffd1ec10000 - 0x00007ffd1ec3e000 C:\Windows\SYSTEM32\USERENV.dll +0x00007ffd1e650000 - 0x00007ffd1e65c000 C:\Windows\SYSTEM32\CRYPTBASE.dll +0x00007ffd17450000 - 0x00007ffd17467000 C:\Windows\SYSTEM32\dhcpcsvc6.DLL +0x00007ffd17bf0000 - 0x00007ffd17c0d000 C:\Windows\SYSTEM32\dhcpcsvc.DLL +0x00007ffd15e50000 - 0x00007ffd15e60000 C:\Users\hp\Downloads\sts-4.10.0.RELEASE\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.2.v20210201-0955\jre\bin\verify.dll +0x00007ffcfb0d0000 - 0x00007ffcfb0dd000 C:\Users\hp\Downloads\sts-4.10.0.RELEASE\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.2.v20210201-0955\jre\bin\sunmscapi.dll +0x00007ffd1f530000 - 0x00007ffd1f686000 C:\Windows\System32\CRYPT32.dll +0x00007ffd1e820000 - 0x00007ffd1e847000 C:\Windows\SYSTEM32\ncrypt.dll +0x00007ffd1e7e0000 - 0x00007ffd1e81b000 C:\Windows\SYSTEM32\NTASN1.dll + +dbghelp: loaded successfully - version: 4.0.5 - missing functions: none +symbol engine: initialized successfully - sym options: 0x614 - pdb path: .;C:\Users\hp\Downloads\sts-4.10.0.RELEASE\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.2.v20210201-0955\jre\bin;C:\Windows\SYSTEM32;C:\Windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.19041.1110_none_60b5254171f9507e;C:\Users\hp\Downloads\sts-4.10.0.RELEASE\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.2.v20210201-0955\jre\bin\server + +VM Arguments: +jvm_args: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=52447 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=localhost -Dspring.jmx.enabled=true -Dspring.application.admin.enabled=true -XX:TieredStopAtLevel=1 -Dspring.boot.project.name=backend -Dfile.encoding=UTF-8 -XX:+ShowCodeDetailsInExceptionMessages +java_command: com.realnet.RealNetApp --spring.output.ansi.enabled=always +java_class_path (initial): G:\foldername\backend\target\classes;C:\Users\hp\.m2\repository\org\springframework\boot\spring-boot-starter-mail\2.2.5.RELEASE\spring-boot-starter-mail-2.2.5.RELEASE.jar;C:\Users\hp\.m2\repository\org\springframework\boot\spring-boot-starter\2.2.5.RELEASE\spring-boot-starter-2.2.5.RELEASE.jar;C:\Users\hp\.m2\repository\org\springframework\boot\spring-boot-starter-logging\2.2.5.RELEASE\spring-boot-starter-logging-2.2.5.RELEASE.jar;C:\Users\hp\.m2\repository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;C:\Users\hp\.m2\repository\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;C:\Users\hp\.m2\repository\org\apache\logging\log4j\log4j-to-slf4j\2.12.1\log4j-to-slf4j-2.12.1.jar;C:\Users\hp\.m2\repository\org\apache\logging\log4j\log4j-api\2.12.1\log4j-api-2.12.1.jar;C:\Users\hp\.m2\repository\org\slf4j\jul-to-slf4j\1.7.30\jul-to-slf4j-1.7.30.jar;C:\Users\hp\.m2\repository\org\yaml\snakeyaml\1.25\snakeyaml-1.25.jar;C:\Users\hp\.m2\repository\org\springframework\spring-context-support\5.2.4.RELEASE\spring-context-support-5.2.4.RELEASE.jar;C:\Users\hp\.m2\repository\org\springframework\spring-context\5.2.4.RELEASE\spring-context-5.2.4.RELEASE.jar;C:\Users\hp\.m2\repository\com\sun\mail\jakarta.mail\1.6.4\jakarta.mail-1.6.4.jar;C:\Users\hp\.m2\repository\com\sun\activation\jakarta.activation\1.2.2\jakarta.activation-1.2.2.jar;C:\Users\hp\.m2\repository\org\springframework\boot\spring-boot-starter-web\2.2.5.RELEASE\spring-boot-starter-web-2.2.5.RELEASE.jar;C:\Users\hp\.m2\repository\org\springframework\boot\spring-boot-starter-json\2.2.5.RELEASE\spring-boot-starter-json-2.2.5.RELEASE.jar;C:\Users\hp\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.10.2\jackson-datatype-jdk8-2.10.2.jar;C:\Users\hp\.m2\repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.10.2\jackson-module-parameter-names-2.10.2.jar;C:\Users\hp\.m2\repository\org\springframework\spring-web\5.2.4.RELEASE\spring-web- +Launcher Type: SUN_STANDARD + +[Global flags] + intx CICompilerCount = 4 {product} {ergonomic} + uint ConcGCThreads = 2 {product} {ergonomic} + uint G1ConcRefinementThreads = 8 {product} {ergonomic} + size_t G1HeapRegionSize = 1048576 {product} {ergonomic} + uintx GCDrainStackTargetSize = 64 {product} {ergonomic} + size_t InitialHeapSize = 132120576 {product} {ergonomic} + bool ManagementServer = true {product} {command line} + size_t MarkStackSize = 4194304 {product} {ergonomic} + size_t MaxHeapSize = 2097152000 {product} {ergonomic} + size_t MaxNewSize = 1258291200 {product} {ergonomic} + size_t MinHeapDeltaBytes = 1048576 {product} {ergonomic} + size_t MinHeapSize = 8388608 {product} {ergonomic} + uintx NonNMethodCodeHeapSize = 7549744 {pd product} {ergonomic} + uintx NonProfiledCodeHeapSize = 244108496 {pd product} {ergonomic} + uintx ProfiledCodeHeapSize = 0 {pd product} {ergonomic} + uintx ReservedCodeCacheSize = 251658240 {pd product} {ergonomic} + bool SegmentedCodeCache = true {product} {ergonomic} + bool ShowCodeDetailsInExceptionMessages = true {manageable} {command line} + size_t SoftMaxHeapSize = 2097152000 {manageable} {ergonomic} + intx TieredStopAtLevel = 1 {product} {command line} + bool UseCompressedClassPointers = true {lp64_product} {ergonomic} + bool UseCompressedOops = true {lp64_product} {ergonomic} + bool UseG1GC = true {product} {ergonomic} + bool UseLargePagesIndividualAllocation = false {pd product} {ergonomic} + +Logging: +Log output configuration: + #0: stdout all=warning uptime,level,tags + #1: stderr all=off uptime,level,tags + +Environment Variables: +JAVA_HOME=F:\Java +PATH=C:/Users/hp/Downloads/sts-4.10.0.RELEASE//plugins/org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.2.v20210201-0955/jre/bin/server;C:/Users/hp/Downloads/sts-4.10.0.RELEASE//plugins/org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.2.v20210201-0955/jre/bin;C:\Program Files\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\150\Tools\Binn\;C:\Program Files\Microsoft SQL Server\150\Tools\Binn\;C:\Program Files\Microsoft SQL Server\150\DTS\Binn\;C:\Program Files\Git\cmd;C:\Program Files\Git\mingw64\bin;C:\Program Files\Git\usr\bin;C:\Program Files\dotnet\;C:\ProgramData\chocolatey\bin;C:\Users\hp\AppData\Roaming\nvm;C:\Program Files\nodejs;C:\Program Files\nodejs\;C:\Program Files\MySQL\MySQL Shell 8.0\bin\;C:\Python39\Scripts\;C:\Python39\;C:\Users\hp\AppData\Local\Programs\Python\Python39\Scripts\;C:\Users\hp\AppData\Local\Programs\Python\Python39\;C:\Users\hp\AppData\Local\Microsoft\WindowsApps;C:\Users\hp\.dotnet\tools;C:\Users\hp\AppData\Roaming\nvm;C:\Program Files\nodejs;C:\Users\hp\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\hp\AppData\Local\GitHubDesktop\bin;F:\Java\bin;F:\Java\bin;C:\Program Files\MongoDB\Server\4.4\bin;C:\Users\hp\AppData\Roaming\npm;C:\Users\hp\Downloads\sts-4.10.0.RELEASE; +USERNAME=hp +OS=Windows_NT +PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 142 Stepping 12, GenuineIntel + + + +--------------- S Y S T E M --------------- + +OS: + Windows 10 , 64 bit Build 19041 (10.0.19041.1889) +OS uptime: 0 days 3:07 hours +HyperV virtualization detected + +CPU: total 8 (initial active 8) (4 cores per cpu, 2 threads per core) family 6 model 142 stepping 12 microcode 0xde, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, vzeroupper, avx, avx2, aes, clmul, erms, 3dnowpref, lzcnt, ht, tsc, tscinvbit, bmi1, bmi2, adx, fma, clflush, clflushopt + +Memory: 4k page, system-wide physical 7995M (594M free) +TotalPageFile size 28028M (AvailPageFile size 1M) +current process WorkingSet (physical memory assigned to process): 35M, peak: 467M +current process commit charge ("private bytes"): 521M, peak: 768M + +vm_info: OpenJDK 64-Bit Server VM (15.0.2+7-27) for windows-amd64 JRE (15.0.2+7-27), built on Dec 7 2020 20:02:38 by "mach5one" with unknown MS VC++:1925 + +END. diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/logs/ExceptionLogs/Error.log b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/logs/ExceptionLogs/Error.log new file mode 100644 index 0000000..3996759 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/logs/ExceptionLogs/Error.log @@ -0,0 +1,201 @@ +2023-04-07T15:38:10.368+0530 ERROR Login Failed No value present +2023-04-14T12:20:09.761+0530 ERROR Login Failed No value present +2023-04-14T12:40:11.030+0530 ERROR Login Failed No value present +2023-04-14T12:43:04.245+0530 ERROR Login Failed No value present +2023-04-14T12:43:18.179+0530 ERROR Login Failed No value present +2023-04-14T12:47:15.982+0530 ERROR Login Failed No value present +2023-04-14T12:47:47.907+0530 ERROR Login Failed No value present +2023-04-14T12:49:20.899+0530 ERROR Login Failed No value present +2023-04-14T12:49:39.712+0530 ERROR Login Failed No value present +2023-04-14T12:49:54.172+0530 ERROR Login Failed No value present +2023-04-14T12:49:56.507+0530 ERROR Login Failed No value present +2023-04-14T12:49:59.471+0530 ERROR Login Failed No value present +2023-04-14T13:06:48.375+0530 ERROR Login Failed No value present +2023-04-14T14:17:17.959+0530 ERROR Login Failed No value present +2023-04-14T14:19:17.702+0530 ERROR Login Failed No value present +2023-04-14T14:24:27.427+0530 ERROR Login Failed No value present +2023-04-14T14:24:34.106+0530 ERROR Login Failed No value present +2023-04-14T14:24:59.329+0530 ERROR Login Failed No value present +2023-04-14T15:45:42.775+0530 ERROR Login Failed No value present +2023-04-14T18:27:38.701+0530 ERROR Login Failed Bad credentials +2023-09-29T12:37:11.138+0530 ERROR Login Failed Bad credentials +2023-09-29T23:54:39.748+0530 ERROR Login Failed Bad credentials +2023-10-21T16:34:16.901+0530 ERROR Authentication Failed. Username or Password not valid. +2023-10-21T16:34:16.905+0530 ERROR Authentication Failed. Username or Password not valid. +2023-10-21T16:34:17.029+0530 ERROR Authentication Failed. Username or Password not valid. +2023-10-21T16:34:17.029+0530 ERROR Authentication Failed. Username or Password not valid. +2023-10-21T16:34:17.029+0530 ERROR Authentication Failed. Username or Password not valid. +2023-10-21T16:34:17.046+0530 ERROR Authentication Failed. Username or Password not valid. +2023-10-21T16:34:46.579+0530 ERROR Authentication Failed. Username or Password not valid. +2023-11-03T10:51:17.798+0530 ERROR Login Failed Bad credentials +2023-11-03T12:48:05.904+0530 ERROR Login Failed Error creating bean with name 'inMemoryDatabaseShutdownExecutor': Singleton bean creation not allowed while singletons of this factory are in destruction (Do not request a bean from a BeanFactory in a destroy method implementation!) +2023-11-20T19:33:52.278+0530 ERROR Login Failed Bad credentials +2023-11-29T12:24:44.472+0530 ERROR Login Failed Bad credentials +2023-11-30T10:02:24.935+0530 ERROR Login Failed Bad credentials +2023-12-02T17:12:48.378+0530 ERROR Login Failed Bad credentials +2023-12-02T17:19:07.149+0530 ERROR Login Failed Bad credentials +2023-12-04T19:36:38.738+0530 ERROR Login Failed No value present +2023-12-04T19:36:48.189+0530 ERROR Login Failed No value present +2023-12-04T23:47:26.784+0530 ERROR Login Failed Bad credentials +2023-12-04T23:53:25.084+0530 ERROR Login Failed Bad credentials +2023-12-20T22:55:47.256+0530 ERROR Login Failed Unable to acquire JDBC Connection; nested exception is org.hibernate.exception.JDBCConnectionException: Unable to acquire JDBC Connection +2023-12-20T22:55:47.257+0530 ERROR Login Failed Unable to acquire JDBC Connection; nested exception is org.hibernate.exception.JDBCConnectionException: Unable to acquire JDBC Connection +2023-12-29T17:03:49.832+0530 ERROR Authentication Failed. Username or Password not valid. +2023-12-29T17:03:49.833+0530 ERROR Authentication Failed. Username or Password not valid. +2023-12-29T23:27:43.701+0530 ERROR Authentication Failed. Username or Password not valid. +2024-01-19T12:37:10.085+0530 ERROR Login Failed Bad credentials +2024-01-19T12:37:10.148+0530 ERROR Login Failed Bad credentials +2024-01-24T13:19:39.329+0530 ERROR Login Failed Error creating bean with name 'inMemoryDatabaseShutdownExecutor': Singleton bean creation not allowed while singletons of this factory are in destruction (Do not request a bean from a BeanFactory in a destroy method implementation!) +2024-02-17T14:23:36.971+0530 ERROR URI is not absolute +2024-02-17T14:46:15.780+0530 ERROR Login Failed Bad credentials +2024-02-17T14:46:20.039+0530 ERROR Login Failed Bad credentials +2024-02-17T14:46:36.122+0530 ERROR URI is not absolute +2024-02-17T16:40:35.884+0530 ERROR URI is not absolute +2024-03-20T19:44:18.950+0530 ERROR URI is not absolute +2024-03-20T20:05:52.093+0530 ERROR URI is not absolute +2024-03-20T20:14:30.563+0530 ERROR URI is not absolute +2024-04-09T09:26:57.975+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-04-09T09:26:58.620+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-07-08T19:10:07.930+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-07-08T19:10:07.934+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-07-09T09:25:20.710+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-07-09T09:25:22.008+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-07-09T12:43:33.268+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-07-09T12:43:33.268+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-07-09T18:53:02.804+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-07-09T18:53:02.804+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-07-09T19:02:27.763+0530 ERROR Authentication Failed. Username or Password not valid. +2024-07-09T19:02:36.908+0530 ERROR Authentication Failed. Username or Password not valid. +2024-07-09T19:07:55.129+0530 ERROR Authentication Failed. Username or Password not valid. +2024-07-22T19:04:01.291+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-07-22T19:04:01.500+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-07-24T15:26:36.984+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-07-24T15:26:36.985+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-07-25T17:08:40.029+0530 ERROR Login Failed No value present +2024-07-25T17:08:40.541+0530 ERROR Login Failed No value present +2024-07-25T17:10:20.667+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-07-25T17:10:20.706+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-07-25T17:21:04.302+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-07-25T17:21:04.303+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-07-25T18:49:57.287+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-07-25T18:49:58.526+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-07-26T16:44:22.628+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-07-26T16:44:22.625+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-07-27T11:19:55.595+0530 ERROR Invalid AES key length: 14 bytes +2024-07-29T12:37:28.760+0530 ERROR Login Failed No value present +2024-07-29T12:39:09.857+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-07-29T12:39:09.856+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-07-29T18:23:51.833+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-07-29T18:23:51.871+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-07-30T11:13:57.831+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-07-30T11:13:57.833+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-07-30T11:20:04.367+0530 ERROR Invalid AES key length: 14 bytes +2024-08-01T09:43:50.201+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-08-01T09:43:50.201+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-08-05T09:00:46.072+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-08-05T09:00:46.341+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-08-05T09:02:24.290+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-08-05T09:02:24.725+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-08-05T09:02:52.747+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-08-05T09:02:52.942+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-08-10T11:22:30.138+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-08-10T11:22:30.138+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-08-24T22:55:09.224+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-08-24T22:55:09.363+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-09-03T10:40:26.287+0530 ERROR Login Failed No value present +2024-09-04T13:07:35.655+0530 ERROR Authentication Failed. Username or Password not valid. +2024-09-04T13:10:57.509+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-09-04T13:10:57.514+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-09-28T14:33:57.327+0530 ERROR Authentication Failed. Username or Password not valid. +2024-09-28T14:33:57.439+0530 ERROR Authentication Failed. Username or Password not valid. +2024-09-28T14:33:57.442+0530 ERROR Authentication Failed. Username or Password not valid. +2024-09-28T14:33:57.442+0530 ERROR Authentication Failed. Username or Password not valid. +2024-09-28T14:33:57.439+0530 ERROR Authentication Failed. Username or Password not valid. +2024-09-28T14:33:57.445+0530 ERROR Authentication Failed. Username or Password not valid. +2024-09-28T14:35:08.065+0530 ERROR Authentication Failed. Username or Password not valid. +2024-09-28T14:35:08.712+0530 ERROR Authentication Failed. Username or Password not valid. +2024-09-28T14:35:08.804+0530 ERROR Authentication Failed. Username or Password not valid. +2024-09-28T14:35:08.808+0530 ERROR Authentication Failed. Username or Password not valid. +2024-09-28T14:35:09.029+0530 ERROR Authentication Failed. Username or Password not valid. +2024-09-28T14:35:09.049+0530 ERROR Authentication Failed. Username or Password not valid. +2024-09-28T14:36:39.576+0530 ERROR Authentication Failed. Username or Password not valid. +2024-09-28T14:36:39.967+0530 ERROR Authentication Failed. Username or Password not valid. +2024-09-28T14:36:39.986+0530 ERROR Authentication Failed. Username or Password not valid. +2024-09-28T14:36:40.131+0530 ERROR Authentication Failed. Username or Password not valid. +2024-09-28T14:36:40.350+0530 ERROR Authentication Failed. Username or Password not valid. +2024-09-28T14:36:40.385+0530 ERROR Authentication Failed. Username or Password not valid. +2024-09-28T14:56:45.465+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-09-28T14:56:45.465+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-09-28T14:58:38.422+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-09-28T14:58:38.422+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-09-30T16:06:10.001+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-09-30T16:06:10.002+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-09-30T16:07:26.738+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-09-30T16:07:27.409+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-09-30T16:49:50.825+0530 ERROR Authentication Failed. Username or Password not valid. +2024-09-30T16:51:24.081+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-09-30T16:51:24.098+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-09-30T17:00:32.240+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-09-30T17:00:32.309+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-09-30T17:45:01.899+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-09-30T17:45:01.899+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-10-01T11:54:26.433+0530 ERROR Authentication Failed. Username or Password not valid. +2024-10-01T11:57:20.164+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-10-01T11:57:20.166+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-10-01T18:23:58.819+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-10-01T18:23:58.819+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-10-01T18:25:18.604+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-10-01T18:25:18.606+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-10-06T13:08:48.943+0530 ERROR Login Failed null +2024-10-06T13:08:57.738+0530 ERROR Login Failed null +2024-10-06T13:09:10.688+0530 ERROR Login Failed null +2024-10-06T13:16:40.946+0530 ERROR Login Failed null +2024-11-09T10:53:04.335+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-11-09T10:53:04.513+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-11-09T10:54:40.713+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-11-09T10:54:41.167+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-11-11T18:26:42.509+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-11-11T18:28:03.167+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-11-11T18:48:19.755+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-11-11T18:48:19.759+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-11-11T19:16:34.830+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-11-11T19:16:35.084+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-11-29T12:01:51.379+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-11-29T12:01:51.386+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-12-04T09:54:05.358+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-12-04T09:54:05.390+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-12-04T10:06:59.065+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-12-04T10:06:59.179+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-12-04T11:06:26.970+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-12-04T11:06:26.983+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-12-04T11:29:40.082+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-12-04T11:29:41.102+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-12-04T12:00:00.403+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-12-04T12:00:00.403+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-12-05T09:43:20.008+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-12-05T09:43:20.008+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-12-05T10:18:15.191+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-12-05T10:18:15.192+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-12-05T14:33:24.313+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-12-05T14:33:24.396+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-12-05T14:45:51.536+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2024-12-05T14:45:52.052+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2025-03-04T10:34:29.387+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2025-03-04T10:34:29.773+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2025-03-04T10:45:34.588+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2025-03-04T10:45:34.682+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2025-03-15T18:08:52.262+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2025-03-15T18:08:52.260+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2025-03-17T12:44:22.898+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2025-03-17T12:44:22.899+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2025-03-24T12:20:22.733+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2025-03-24T12:20:22.733+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2025-03-24T12:20:55.850+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2025-03-24T12:20:55.849+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2025-03-25T08:43:03.688+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2025-03-25T08:43:03.688+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2025-03-25T08:43:33.901+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2025-03-25T08:43:33.902+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2025-03-25T17:59:34.405+0530 ERROR Invalid AES key length: 14 bytes +2025-03-27T11:14:35.732+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) +2025-03-27T11:14:35.733+0530 ERROR I/O error on GET request for "http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3": Operation timed out (Connection timed out); nested exception is java.net.ConnectException: Operation timed out (Connection timed out) diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/logs/SYSADMIN1673073474.log b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/logs/SYSADMIN1673073474.log new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/logs/sysadmin1686312560.log b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/logs/sysadmin1686312560.log new file mode 100644 index 0000000..53e4fea --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/logs/sysadmin1686312560.log @@ -0,0 +1 @@ +[10 Dec 2024 17:38:40]REST Request - [HTTP METHOD:POST] [PATH INFO:/token/session] [REQUEST PARAMETERS:{}] [REQUEST BODY:{"email":"sysadmin","password":"test3"}] [REMOTE ADDRESS:0:0:0:0:0:0:0:1] [RESPONSE:{"operationStatus":"SUCCESS","operationMessage":"Login Success","item":{"token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJzeXNhZG1pbiIsInNjb3BlcyI6IlJPTEVfRGV2ZWxvcGVyLFJPTEVfQURNSU4iLCJpYXQiOjE3MzM4MzI1MzIsImV4cCI6MTczNjQyNDUzMn0.B9vhkYUSQTYIrP9KsIzMSaM3pZgsfEJLI2xvtU88B_Q","userId":10007307,"fullname":"sysadmin","username":null,"email":"sysadmin","firstName":"sysadmin","roles":["ROLE_Developer","ROLE_ADMIN"]}}] diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/pom.xml b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/pom.xml new file mode 100644 index 0000000..5705f01 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/pom.xml @@ -0,0 +1,427 @@ + + 4.0.0 + com.realnet + app + jar + 1.0.0 + REAL IT SOLUTIONS + + 2.7.0 + UTF-8 + UTF-8 + 1.8 + + + org.springframework.boot + spring-boot-starter-parent + 2.2.5.RELEASE + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + org.springframework.boot + spring-boot-starter-mail + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-aop + + + org.springframework.boot + spring-boot-starter-tomcat + provided + + + + + + org.springframework.boot + spring-boot-starter-actuator + + + io.springfox + springfox-swagger2 + 2.9.2 + + + io.swagger + swagger-annotations + + + io.swagger + swagger-models + + + + + + io.swagger + swagger-annotations + 1.5.22 + + + io.swagger + swagger-models + 1.5.22 + + + io.springfox + springfox-swagger-ui + 2.9.2 + + + + com.fasterxml.jackson.dataformat + jackson-dataformat-xml + + + + + + + org.apache.commons + commons-lang3 + 3.12.0 + + + com.googlecode.json-simple + json-simple + 1.1.1 + + + com.google.code.gson + gson + 2.8.5 + + + + org.apache.pdfbox + pdfbox + 2.0.29 + + + + + mysql + mysql-connector-java + 8.0.28 + + + + + + + org.springframework.boot + spring-boot-starter-data-jpa + + + org.springframework.boot + spring-boot-starter-validation + + + + + + org.apache.poi + poi-scratchpad + 3.9 + + + + + org.apache.poi + poi + 4.1.2 + + + org.apache.poi + poi-ooxml + 4.1.2 + + + + + + + org.springframework.boot + spring-boot-starter-jdbc + + + + com.microsoft.sqlserver + mssql-jdbc + runtime + + + + org.springframework.boot + spring-boot-starter-websocket + + + org.springframework + spring-messaging + + + + org.springframework.boot + spring-boot-starter-cache + + + com.github.ben-manes.caffeine + caffeine + + + + com.h2database + h2 + runtime + + + org.slf4j + slf4j-api + + + + + + org.springframework.boot + spring-boot-starter-security + + + org.springframework.security.oauth.boot + spring-security-oauth2-autoconfigure + 2.3.3.RELEASE + + + + org.springframework.security + spring-security-oauth2-client + + + org.springframework.social + spring-social-google + 1.0.0.RELEASE + + + org.springframework.social + spring-social-linkedin + 1.0.2.RELEASE + + + + io.jsonwebtoken + jjwt + 0.9.0 + + + com.google.guava + guava + 23.5-jre + + + joda-time + joda-time + 2.9.9 + + + + com.fasterxml.jackson.core + jackson-core + 2.12.1 + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + + + org.modelmapper + modelmapper + 2.3.0 + + + org.codehaus.jackson + jackson-mapper-asl + 1.9.13 + + + commons-io + commons-io + 2.7 + + + + net.lingala.zip4j + zip4j + 2.6.1 + + + + org.projectlombok + lombok + 1.18.20 + provided + + + javax.xml.bind + jaxb-api + 2.3.0 + + + org.springframework.boot + spring-boot-devtools + + + + org.apache.httpcomponents + httpclient + 4.5.13 + + + + + org.apache.clerezza.ext + org.json.simple + 0.4 + + + commons-codec + commons-codec + 1.10 + + + org.springframework.boot + spring-boot-starter-webflux + + + + + org.apache.poi + poi + 4.1.2 + + + + org.apache.poi + ooxml-schemas + 1.4 + + + + org.json + json + 20201115 + + + com.jcraft + jsch + 0.1.55 + + + + + org.xhtmlrenderer + flying-saucer-pdf + 9.1.22 + + + + + com.lowagie + itext + 2.1.7 + + + + + + + com.itextpdf + itextpdf + 5.5.13.2 + + + + + + com.paytm.pg + paytm-checksum + 1.2.1 + + + + com.razorpay + razorpay-java + 1.4.4 + + + + + org.jsoup + jsoup + 1.14.3 + + + + org.springframework + spring-test + + + + + org.apache.pdfbox + pdfbox + 2.0.28 + + + + + org.apache.xmlgraphics + fop + 2.6 + + + + org.apache.commons + commons-csv + 1.4 + + + + + com.googlecode.json-simple + json-simple + 1.1.1 + + + + com.opencsv + opencsv + 5.5 + + + + diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Controllers/AccesstypeController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Controllers/AccesstypeController.java new file mode 100644 index 0000000..da4a455 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Controllers/AccesstypeController.java @@ -0,0 +1,66 @@ +package com.realnet.Accesstype_back.Controllers; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.realnet.Accesstype_back.Entity.Accesstype; +import com.realnet.Accesstype_back.Services.AccesstypeService; +import com.realnet.fnd.response.EntityResponse; + +@RequestMapping(value = "/access_type") +@RestController +public class AccesstypeController { + + @Autowired + private AccesstypeService Service; + + // add data + @PostMapping("/Accesstype") + public Accesstype Savedata(@RequestBody Accesstype data) throws JsonProcessingException { + Accesstype save = Service.Savedata(data); + + return save; + } + + // get all + @GetMapping("/Accesstype") + public List getdetails() { + List get = Service.getdetails(); + return get; + } + + // getby id + @GetMapping("/Accesstype/{id}") + public Accesstype getdetailsbyId(@PathVariable Long id) { + Accesstype get = Service.getdetailsbyId(id); + return get; + } + + // update by id + @PutMapping("/Accesstype/{id}") + public Accesstype update(@RequestBody Accesstype data, @PathVariable Long id) { + Accesstype update = Service.update(data, id); + return update; + } + + // delete by id + @DeleteMapping("/Accesstype/{id}") + public ResponseEntity delete_by_id(@PathVariable Long id) { + Service.delete_by_id(id); + return new ResponseEntity<>(new EntityResponse("deleted"), HttpStatus.OK); + + } + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Controllers/AgyanaController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Controllers/AgyanaController.java new file mode 100644 index 0000000..df03340 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Controllers/AgyanaController.java @@ -0,0 +1,30 @@ +package com.realnet.Accesstype_back.Controllers; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.Accesstype_back.Entity.Agyana; +import com.realnet.Accesstype_back.Repository.AgyanaRepository; + + +@RequestMapping(value = "/token/access_type") +@RestController +public class AgyanaController { + + @Autowired + private AgyanaRepository agyanaRepository; + + @GetMapping("/agyana") + public List getAlldetails() { + List get = getdetails(); + return get; + } + + public List getdetails() { + return (List) agyanaRepository.findAll(); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Controllers/AraniController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Controllers/AraniController.java new file mode 100644 index 0000000..075612c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Controllers/AraniController.java @@ -0,0 +1,51 @@ +package com.realnet.Accesstype_back.Controllers; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.Accesstype_back.Entity.Arani; +import com.realnet.Accesstype_back.Services.AraniService; + +@RestController +public class AraniController { + + @Autowired + private AraniService service; + + @GetMapping("/Arani") + public List getAlldetails(){ + List get = service.getAll(); + return get; + } + + @GetMapping("/Arani/{id}") + public Arani getAlldetails(@PathVariable Long id) { + Arani get = service.getdetailsbyid(id); + return get; + } + + @PostMapping("/Arani") + public Arani saverani(@RequestBody Arani rani) { + Arani saverani = service.saverani(rani); + return saverani; + } + + @DeleteMapping("/Arani/{id}") + public void delete_by_id(@PathVariable Long id) { + service.delete_by_id(id); + } + + @PutMapping("/Arani/{id}") + public Arani update(@RequestBody Arani data, @PathVariable Long id) { + Arani update = service.update(data, id); + return update; + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Controllers/TokenFreeAccesstypeController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Controllers/TokenFreeAccesstypeController.java new file mode 100644 index 0000000..b0ccd25 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Controllers/TokenFreeAccesstypeController.java @@ -0,0 +1,68 @@ +package com.realnet.Accesstype_back.Controllers; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.realnet.Accesstype_back.Entity.Accesstype; +import com.realnet.Accesstype_back.Services.AccesstypeService; + +@RequestMapping(value = "/token/access_type") +@RestController +public class TokenFreeAccesstypeController { + + @Autowired + private AccesstypeService Service; + +// @Autowired +// private Workflow_service workflow_service; + //add data + @PostMapping("/Accesstype") + public Accesstype Savedata(@RequestBody Accesstype data) throws JsonProcessingException { + Accesstype save = Service.Savedata(data); + + // workflow_service.save_webhook(data, "post", "Accesstype"); + return save; + } + //get all + @GetMapping("/Accesstype") + public List getdetails() { + List get = Service.getdetails(); + return get; + } + + //getby id + @GetMapping("/Accesstype/{id}") + public Accesstype getdetailsbyId(@PathVariable Long id) { + Accesstype get = Service.getdetailsbyId(id); + return get; + } + + + //update by id + @PutMapping("/Accesstype/{id}") + public Accesstype update(@RequestBody Accesstype data, @PathVariable Long id) { + Accesstype update = Service.update(data, id); + return update; + } + + //delete by id + @DeleteMapping("/Accesstype/{id}") + public ResponseEntity delete_by_id(@PathVariable Long id) { + Service.delete_by_id(id); + return new ResponseEntity<>("deleted",HttpStatus.OK); + + } + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Entity/Accesstype.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Entity/Accesstype.java new file mode 100644 index 0000000..b50c68d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Entity/Accesstype.java @@ -0,0 +1,19 @@ +package com.realnet.Accesstype_back.Entity; + import lombok.*; + import javax.persistence.*; + import java.time.LocalDateTime; + import java.util.*; + + @Entity + @Data + public class Accesstype{ + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String name; + private String description; + private boolean defaultvalue; + + } \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Entity/Agyana.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Entity/Agyana.java new file mode 100644 index 0000000..3adb33d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Entity/Agyana.java @@ -0,0 +1,27 @@ +package com.realnet.Accesstype_back.Entity; + +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import lombok.*; +import javax.persistence.*; +import java.time.LocalDateTime; +import java.util.*; + +@Entity +@Data +public class Agyana { + + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String name; + private String mark; + private Date timestamp; + private String mark2; + + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Entity/Arani.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Entity/Arani.java new file mode 100644 index 0000000..648b578 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Entity/Arani.java @@ -0,0 +1,22 @@ +package com.realnet.Accesstype_back.Entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +import lombok.Data; +@Entity +@Data +public class Arani { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + + private Long id; + + private String name; + + private String email; + + private String address; +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Repository/AccesstypeRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Repository/AccesstypeRepository.java new file mode 100644 index 0000000..dff4c28 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Repository/AccesstypeRepository.java @@ -0,0 +1,13 @@ +package com.realnet.Accesstype_back.Repository; + + +import org.springframework.data.jpa.repository.JpaRepository; + +import org.springframework.stereotype.Repository; + + +import com.realnet.Accesstype_back.Entity.Accesstype; + +@Repository +public interface AccesstypeRepository extends JpaRepository { +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Repository/AgyanaRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Repository/AgyanaRepository.java new file mode 100644 index 0000000..24c4f59 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Repository/AgyanaRepository.java @@ -0,0 +1,11 @@ +package com.realnet.Accesstype_back.Repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.Accesstype_back.Entity.Agyana; + +@Repository +public interface AgyanaRepository extends JpaRepository{ + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Repository/AraniRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Repository/AraniRepository.java new file mode 100644 index 0000000..3a219e2 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Repository/AraniRepository.java @@ -0,0 +1,11 @@ +package com.realnet.Accesstype_back.Repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.Accesstype_back.Entity.Arani; + +@Repository +public interface AraniRepository extends JpaRepository { + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Services/AccesstypeService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Services/AccesstypeService.java new file mode 100644 index 0000000..aa97aa8 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Services/AccesstypeService.java @@ -0,0 +1,49 @@ +package com.realnet.Accesstype_back.Services; + +import com.realnet.Accesstype_back.Repository.AccesstypeRepository; +//import com.realnet.AudiTrail.Service.AuditrailService; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.realnet.Accesstype_back.Entity.Accesstype; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class AccesstypeService { + @Autowired + private AccesstypeRepository Repository; + +// @Autowired +// private AuditrailService auditrailService; + + public Accesstype Savedata(Accesstype data) { + return Repository.save(data); + } + + public List getdetails() { + return (List) Repository.findAll(); + } + + public Accesstype getdetailsbyId(Long id) { + return Repository.findById(id).get(); + } + + public void delete_by_id(Long id) { + Repository.deleteById(id); + } + + public Accesstype update(Accesstype data, Long id) { + Accesstype old = Repository.findById(id).get(); + old.setName(data.getName()); + old.setDescription(data.getDescription()); + final Accesstype test = Repository.save(old); +// try { +// auditrailService.saveaudiTrail_t(old, test,"Accesstype"); +// } catch (JsonProcessingException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } + return test; + } +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Services/AraniService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Services/AraniService.java new file mode 100644 index 0000000..dd29999 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Accesstype_back/Services/AraniService.java @@ -0,0 +1,44 @@ +package com.realnet.Accesstype_back.Services; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.realnet.Accesstype_back.Entity.Arani; +import com.realnet.Accesstype_back.Repository.AraniRepository; + +@Service +public class AraniService { + @Autowired + private AraniRepository repo; + + public List getAll() { + return (List) repo.findAll(); + } + + public Arani getdetailsbyid(Long id) { + return repo.findById(id).get(); + } + + public Arani saverani(Arani rani){ + Arani saverani = repo.save(rani); + return saverani; + } + + public void delete_by_id(Long id) { + repo.deleteById(id); + } + + public Arani update(Arani data, Long id) { + Arani old = repo.findById(id).get(); + + old.setName(data.getName()); + old.setEmail(data.getEmail()); + old.setAddress(data.getAddress()); + + final Arani test = repo.save(old); + return test; + + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Api/Controllers/BillingSequentialApi.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Api/Controllers/BillingSequentialApi.java new file mode 100644 index 0000000..d5237e5 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Api/Controllers/BillingSequentialApi.java @@ -0,0 +1,304 @@ +//package com.realnet.Billing.Api.Controllers; +// +//import java.util.HashMap; +//import java.util.List; +//import java.util.Map.Entry; +//import java.util.Optional; +//import java.util.Set; +// +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.beans.factory.annotation.Value; +//import org.springframework.http.HttpStatus; +//import org.springframework.http.ResponseEntity; +//import org.springframework.web.bind.annotation.GetMapping; +//import org.springframework.web.bind.annotation.RestController; +//import org.springframework.web.client.RestTemplate; +// +//import com.fasterxml.jackson.databind.ObjectMapper; +//import com.google.gson.JsonArray; +//import com.google.gson.JsonElement; +//import com.google.gson.JsonObject; +//import com.google.gson.JsonParser; +//import com.realnet.Billing.Entitys.ServiceOrder_t; +//import com.realnet.Billing.Repositorys.ServiceOrder_Repository; +//import com.realnet.Billing.Services.ServiceOrder_Service; +//import com.realnet.Communication.Models.Com_jobTable; +//import com.realnet.Communication.Repos.JobTablerepo; +//import com.realnet.Customer_master.Entity.Customer_master_t; +//import com.realnet.Customer_master.Repository.Customer_master_Repository; +//import com.realnet.DocumentBuilder.Entity.DocumentBuilder_t; +//import com.realnet.DocumentBuilder.Entity.Document_builder_lines; +//import com.realnet.DocumentBuilder.Services.DocumentBuilder_Service; +//import com.realnet.DocumentBuilder.Services.StringReplacementService; +// +//@RestController +// +//public class BillingSequentialApi { +// +// @Autowired +// private ServiceOrder_Repository serviceOrder_Repository; +// +// @Autowired +// private DocumentBuilder_Service Service; +// +//// @Autowired +//// private Fileupload_helper fileuploadhelper; +// +// @Autowired +// private StringReplacementService replacementService; +// +// @Autowired +// private Customer_master_Repository customer_master_Repository; +// +// @Autowired +// private JobTablerepo Com_jobTablerepo; +// +// @Value("${projectPath}") +// private String projectPath; +// +// public final String UPLOAD_DIREC = "/Files"; +// +// @Autowired +// private ServiceOrder_Service serviceOrder_Service; +// +// @GetMapping("/process-all-customers") +// public ResponseEntity processAllCustomers() { +// try { +// // Step 1: Create Service Orders for all customers +// List customers = customer_master_Repository.findAll(); +// for (Customer_master_t customer : customers) { +// serviceOrder_Service.createServiceOrderFromCustomer(customer); +// +// } +// +// // Step 2: Approve all pending service orders +// int updatedCount = serviceOrder_Service.approvePendingOrders(); +// +// // step 3: +// +// List autoApprovedServiceOrderIds = serviceOrder_Repository.findIdsByStatusOrderByAsc("AutoApproved"); +// +// // Process the service orders +// for (Long serviceOrderId : autoApprovedServiceOrderIds) { +// Optional serviceOrderOptional = serviceOrder_Repository.findById(serviceOrderId); +// +// if (serviceOrderOptional.isPresent()) { +// ServiceOrder_t serviceOrder = serviceOrderOptional.get(); +// String entityName = serviceOrder.getEntity(); +// +// // Fetch the corresponding customer(s) by entity name +// List customers1 = customer_master_Repository.findByEntityName(entityName); +// +// if (!customers1.isEmpty()) { +// // Assuming you want to process each customer found +// for (Customer_master_t customer : customers1) { +// // Now you have the serviceOrderId, entityName, and customer for processing +// String proformaInvoiceFileName = generateProformaInvoice(serviceOrderId); +// +// // step 4 +// sendEmailWithProformaInvoice(customer, proformaInvoiceFileName); +// } +// } else { +// // Handle the case where no customer was found for the given entity name +// } +// } else { +// // Handle the case where no service order was found for the given ID +// } +// } +// +// return ResponseEntity.ok("Processed all customers and generated invoices. " + updatedCount +// + " service orders were approved."); +// } catch (Exception e) { +// // Handle exceptions appropriately +// return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) +// .body("Error processing customers: " + e.getMessage()); +// } +// } +// +// private String generateProformaInvoice(Long serviceOrderId) throws Exception { +// +// long documentId = 98; +// HashMap map = new HashMap<>(); +// JsonParser parser = new JsonParser(); +// DocumentBuilder_t doc = Service.getdetailsbyId(documentId); +// String file_name = doc.getFile_name(); +// String file_path = doc.getFile_path(); +// +// String replacerule = ""; +// String operation = null; +// String replaceWith = null; +// String startstring = null; +// String endstring = null; +// String keyword = null; +// String linestring = null; +// String cellAddress = null; +// JsonObject getbodyobject = null; +// String ModifyfileName = null; +// +// // .....................// +// +// List docline = doc.getDocument_builder_lines(); +// +// for (Document_builder_lines line : docline) { +// String model = line.getModel(); +// JsonParser parser1 = new JsonParser(); +// JsonArray jsonArray = parser1.parse(model).getAsJsonArray(); +// +// for (JsonElement element : jsonArray) { +// JsonObject jsonObject = element.getAsJsonObject(); +// if (jsonObject.has("name")) { +// ModifyfileName = jsonObject.get("name").getAsString(); +// break; // Break the loop once you find the first object with a "name" field +// } +// } +// +// if (ModifyfileName != null) { +// // Now 'nameValue' contains the value of the "name" field +// System.out.println("nameValue: " + ModifyfileName); +// break; // Break the outer loop as well, if needed +// } +// } +// +// if (ModifyfileName == null) { +// // Handle the case where no object with a "name" field was found +// System.out.println("No object with a 'name' field found."); +// } +// +// // long serviceOrderId = serviceOrderId2.getId(); +// ModifyfileName = ModifyfileName.replace("?", String.valueOf(serviceOrderId)); +// ModifyfileName = ModifyfileName + ".docx"; +// String newFilepath = replacementService.copyWordFile(file_path, file_name, file_path, ModifyfileName); +// +// // ..........................// +// +// List lines = doc.getDocument_builder_lines(); +// +// for (Document_builder_lines line : lines) { +// String model = line.getModel(); +// JsonElement element = parser.parse(model); +// JsonArray models = element.getAsJsonArray(); +// +// for (JsonElement mod : models) { +// JsonObject object = mod.getAsJsonObject(); +// +// String type = object.get("type").getAsString(); +// if (type.equalsIgnoreCase("Initialize")) { +// String a_uri = object.get("a_uri").toString().replaceAll("\"", ""); +// a_uri = a_uri.replace("?", String.valueOf(serviceOrderId)); +// System.out.println(a_uri); +// +// Object body = GET(a_uri).getBody(); +// ObjectMapper objectMapper = new ObjectMapper(); +// String json = objectMapper.writeValueAsString(body); +// JsonElement getbody = parser.parse(json); +// getbodyobject = getbody.getAsJsonObject(); +// +// } +// } +// +// for (JsonElement mod : models) { +// JsonObject object = mod.getAsJsonObject(); +// +// String type = object.get("type").getAsString(); +// if (type.equalsIgnoreCase("Mapper")) { +// String mapper = object.get("mappers").getAsString(); +// +// JsonElement parse = parser.parse(mapper); +// JsonArray mapArray = parse.getAsJsonArray(); +// for (JsonElement maps : mapArray) { +// JsonObject jsonObject = maps.getAsJsonObject(); +// startstring = jsonObject.get("start_string").toString().replaceAll("\"", ""); +// endstring = jsonObject.get("end_string").toString().replaceAll("\"", ""); +// replaceWith = jsonObject.get("replace_with").toString().replaceAll("\"", ""); +// keyword = jsonObject.get("Keyword").toString().replaceAll("\"", ""); +// linestring = jsonObject.get("line_string").toString().replaceAll("\"", ""); +// operation = jsonObject.get("operation").toString().replaceAll("\"", ""); +// cellAddress = jsonObject.get("cellAddress").toString().replaceAll("\"", ""); +// Set> entrySet = getbodyobject.entrySet(); +// for (Entry entry : entrySet) { +// +// String key = entry.getKey().toString().replaceAll("\"", ""); +// String value = entry.getValue().toString().replaceAll("\"", ""); +// +// if (replaceWith.equalsIgnoreCase(key)) { +// replaceWith = value; +// break; +// } +// +// } +// +// if (operation.contains("replacebyfirstandlast")) { +// +// replacerule = replacementService.replacewithstartandend(file_path, file_name, startstring, +// endstring, replaceWith); +// +// } +// +// if (operation.contains("appending")) { +// replacerule = replacementService.appendToSlide(linestring, replaceWith, file_path, +// file_name); +// } +// +// if (operation.contains("linereplacement")) { +// replacerule = replacementService.linereplacementForPPT(file_path, file_name, keyword, +// replaceWith); +// } +// if (operation.contains("replacement")) { +// replacerule = replacementService.replacesting(newFilepath, file_name, keyword, replaceWith, +// ModifyfileName); +// +// } +// +// if (operation.contains("excelcellReplace")) { +// replacerule = replacementService.excelcellReplace(file_path, file_name, cellAddress, +// replaceWith); +// +// } +// +// } +// } +// +// } +// } +// +// return replacerule; +// +// } +// +// private void sendEmailWithProformaInvoice(Customer_master_t customer, String fileName) { +// +// Long id = customer.getId(); +// String email = customer.getEmail(); +// +// String gateway = "EMAIL"; +// String sendTo = email; +// String replacementString = "no"; +// String cc = email; +// String template = "PerfomaInvoice"; +// +// // Create a new Com_jobTable instance and set its values +// Com_jobTable comJobTable = new Com_jobTable(); +// comJobTable.setJob_type("EMAIL"); // Set the job type to "EMAIL" +// comJobTable.setSend_to(sendTo); +// comJobTable.setGatewayName(gateway); +// comJobTable.setAttachment(fileName); +// comJobTable.setGatewaydone("N"); +// comJobTable.setReplacement_string(replacementString); +// comJobTable.setCc(cc); +// comJobTable.setReplacement_string(replacementString); +// comJobTable.setTemplate_name(template); +// // Save the Com_jobTable entity using your repository or service +// Com_jobTablerepo.save(comJobTable); +// +// } +// +// public ResponseEntity GET(String get) { +// RestTemplate restTemplate = new RestTemplate(); +// +// ResponseEntity u = restTemplate.getForEntity(get, Object.class); +// +// return u; +// +// } +// +//} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Api/Controllers/ServiceOrderApiController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Api/Controllers/ServiceOrderApiController.java new file mode 100644 index 0000000..3d3a4d2 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Api/Controllers/ServiceOrderApiController.java @@ -0,0 +1,403 @@ +//package com.realnet.Billing.Api.Controllers; +// +//import java.io.ByteArrayOutputStream; +//import java.util.HashMap; +//import java.util.List; +//import java.util.Map.Entry; +//import java.util.Optional; +//import java.util.Set; +// +//import org.apache.poi.ss.usermodel.Row; +//import org.apache.poi.ss.usermodel.Sheet; +//import org.apache.poi.ss.usermodel.Workbook; +//import org.apache.poi.xssf.usermodel.XSSFWorkbook; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.beans.factory.annotation.Value; +//import org.springframework.http.HttpHeaders; +//import org.springframework.http.HttpStatus; +//import org.springframework.http.MediaType; +//import org.springframework.http.ResponseEntity; +//import org.springframework.web.bind.annotation.GetMapping; +//import org.springframework.web.bind.annotation.PathVariable; +//import org.springframework.web.bind.annotation.PutMapping; +//import org.springframework.web.bind.annotation.RequestMapping; +//import org.springframework.web.bind.annotation.RestController; +//import org.springframework.web.client.RestTemplate; +// +//import com.fasterxml.jackson.databind.ObjectMapper; +//import com.google.gson.JsonArray; +//import com.google.gson.JsonElement; +//import com.google.gson.JsonObject; +//import com.google.gson.JsonParser; +//import com.realnet.Billing.Entitys.Invoice_t; +//import com.realnet.Billing.Entitys.ServiceOrder_t; +//import com.realnet.Billing.Repositorys.ServiceOrder_Repository; +//import com.realnet.Billing.Services.ServiceOrder_Service; +//import com.realnet.Communication.Models.Com_jobTable; +//import com.realnet.Communication.Repos.JobTablerepo; +//import com.realnet.Customer_master.Entity.Customer_master_t; +//import com.realnet.Customer_master.Repository.Customer_master_Repository; +//import com.realnet.DocumentBuilder.Entity.DocumentBuilder_t; +//import com.realnet.DocumentBuilder.Entity.Document_builder_lines; +//import com.realnet.DocumentBuilder.Services.DocumentBuilder_Service; +//import com.realnet.DocumentBuilder.Services.StringReplacementService; +//import com.realnet.fileupload.helper.Fileupload_helper; +// +//@RestController +//@RequestMapping("/api/serviceorders") +//public class ServiceOrderApiController { +// +// @Autowired +// private ServiceOrder_Service serviceOrder_Service; +// +// @Autowired +// private ServiceOrder_Repository serviceOrder_Repository; +// +// @Autowired +// private DocumentBuilder_Service Service; +// +// @Autowired +// private Fileupload_helper fileuploadhelper; +// +// @Autowired +// private StringReplacementService replacementService; +// +// @Autowired +// private Customer_master_Repository customer_master_Repository; +// +// @Autowired +// private JobTablerepo Com_jobTablerepo; +// +// @Value("${projectPath}") +// private String projectPath; +// +// public final String UPLOAD_DIREC = "/Files"; +// +// // based on the period autocomplete all pending status +// @GetMapping("/update-status") +// public ResponseEntity updateStatusForExpiredOrders() { +// int updatedCount = serviceOrder_Service.updateStatusForExpiredOrders(); +// return ResponseEntity.ok("Updated " + updatedCount + " orders"); +// } +// +// // download profoma invoice +// @GetMapping("/generate-excel/{id}") +// public ResponseEntity generateExcel(@PathVariable Long id) { +// ServiceOrder_t serviceOrder = serviceOrder_Service.findById(id); +// +// if (serviceOrder != null) { +// Workbook workbook = generateExcelForServiceOrder(serviceOrder); +// +// try { +// ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); +// workbook.write(outputStream); +// byte[] excelBytes = outputStream.toByteArray(); +// HttpHeaders headers = new HttpHeaders(); +// headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); +// headers.setContentDispositionFormData("attachment", "service_order.xlsx"); +// return new ResponseEntity<>(excelBytes, headers, HttpStatus.OK); +// } catch (Exception e) { +// // Handle exceptions +// } +// } +// +// return ResponseEntity.notFound().build(); +// } +// +// public Workbook generateExcelForServiceOrder(ServiceOrder_t serviceOrder) { +// Workbook workbook = new XSSFWorkbook(); +// Sheet sheet = workbook.createSheet("Service Order"); +// +// // Create header row +// Row headerRow = sheet.createRow(0); +// headerRow.createCell(0).setCellValue("Service Order ID"); +// headerRow.createCell(1).setCellValue("Service Order Seq"); +// +// // Add more header cells for other fields as needed... +// +// // Create data row +// Row dataRow = sheet.createRow(1); +// dataRow.createCell(0).setCellValue(serviceOrder.getId()); +// dataRow.createCell(1).setCellValue(serviceOrder.getServiceOrderSeq()); +// // Add more data cells for other fields as needed... +// +// return workbook; +// } +// +// // to HOLD status +//// @PutMapping("/change-service-order-status/{profomaInvoiceId}") +//// public ResponseEntity changeServiceOrderStatus(@PathVariable Long profomaInvoiceId) { +//// // Fetch the ProfomaInvoice by ID +//// ProfomaInvoice profomaInvoice = profomaInvoice_Service.findById(profomaInvoiceId); +//// +//// if (profomaInvoice != null) { +//// // Get the associated ServiceOrderId from ProfomaInvoice +//// Long serviceOrderId = profomaInvoice.getServiceOrderId(); +//// +//// // Fetch the associated ServiceOrder_t entity +//// ServiceOrder_t serviceOrder = serviceOrder_Service.findById(serviceOrderId); +//// +//// if (serviceOrder != null) { +//// // Update the status to "HOLD" +//// serviceOrder.setStatus("HOLD"); +//// serviceOrder_Service.saveData(serviceOrder); +//// +//// return ResponseEntity.ok("ServiceOrder status updated to HOLD"); +//// } +//// } +//// +//// return ResponseEntity.notFound().build(); +//// } +// +// // Auto Creation Service order to invoicecopyServiceOrderToInvoice api +// @GetMapping("/copyServiceOrderToInvoice") +// public List copyServiceOrderToInvoice() { +// List createdInvoice = serviceOrder_Service.createInvoicesForAutoApprovedServiceOrders(); +// return createdInvoice; +// } +// +////document status HOLD api (custmer hold) (old history table crude insert record),,service order release then it release hold +// @PutMapping("/updateHoldstatus/{id}") +// public ResponseEntity updateStatusById(@PathVariable Long id) { +// try { +// // Hardcode the new status value to "HOLD" +// serviceOrder_Service.updateStatusById(id, "HOLD"); +// return ResponseEntity.ok("Status updated to HOLD successfully"); +// } catch (Exception e) { +// // Handle exceptions, e.g., if the entity with the given ID is not found +// return ResponseEntity.badRequest().body("Failed to update status: " + e.getMessage()); +// } +// } +// +////so release hold +// @PutMapping("/updateResolvestatus/{id}") +// public ResponseEntity updateStatusResolvedById(@PathVariable Long id) { +// try { +// +// serviceOrder_Service.updateStatusById(id, "RESOLVED"); +// return ResponseEntity.ok("Status updated to HOLD successfully"); +// } catch (Exception e) { +// // Handle exceptions, e.g., if the entity with the given ID is not found +// return ResponseEntity.badRequest().body("Failed to update status: " + e.getMessage()); +// } +// } +// +// @PutMapping("/updateCustomerApprovedestatus/{id}") +// public ResponseEntity updateStatusCustomerApprovedById(@PathVariable Long id) { +// try { +// +// serviceOrder_Service.updateStatusById(id, "CustomerApproved"); +// return ResponseEntity.ok("Status updated to Approvec successfully"); +// } catch (Exception e) { +// // Handle exceptions, e.g., if the entity with the given ID is not found +// return ResponseEntity.badRequest().body("Failed to update status: " + e.getMessage()); +// } +// } +// +// @GetMapping("/customerGenerate") +// public void generateServiceOrder() { +// serviceOrder_Service.generateServiceOrders(); +// } +// +// @GetMapping("/approvePending") +// public ResponseEntity approvePendingOrders() { +// int updatedCount = serviceOrder_Service.approvePendingOrders(); +// return ResponseEntity.ok("Approved " + updatedCount + " pending orders"); +// } +// +// @GetMapping("/perfomaInvoiceCreation/{serviceOrderId}") +// public ResponseEntity perfomaInvoiceCreation(@PathVariable long serviceOrderId) throws Exception { +// +// long documentId = 98; +// HashMap map = new HashMap<>(); +// JsonParser parser = new JsonParser(); +// DocumentBuilder_t doc = Service.getdetailsbyId(documentId); +// String file_name = doc.getFile_name(); +// String file_path = doc.getFile_path(); +// +// String replacerule = ""; +// String operation = null; +// String replaceWith = null; +// String startstring = null; +// String endstring = null; +// String keyword = null; +// String linestring = null; +// String cellAddress = null; +// JsonObject getbodyobject = null; +// String ModifyfileName = null; +// +// // .....................// +// +// List docline = doc.getDocument_builder_lines(); +// +// for (Document_builder_lines line : docline) { +// String model = line.getModel(); +// JsonParser parser1 = new JsonParser(); +// JsonArray jsonArray = parser1.parse(model).getAsJsonArray(); +// +// for (JsonElement element : jsonArray) { +// JsonObject jsonObject = element.getAsJsonObject(); +// if (jsonObject.has("name")) { +// ModifyfileName = jsonObject.get("name").getAsString(); +// break; // Break the loop once you find the first object with a "name" field +// } +// } +// +// if (ModifyfileName != null) { +// // Now 'nameValue' contains the value of the "name" field +// System.out.println("nameValue: " + ModifyfileName); +// break; // Break the outer loop as well, if needed +// } +// } +// +// if (ModifyfileName == null) { +// // Handle the case where no object with a "name" field was found +// System.out.println("No object with a 'name' field found."); +// } +// +// ModifyfileName = ModifyfileName.replace("?", String.valueOf(serviceOrderId)); +// ModifyfileName = ModifyfileName + ".docx"; +// String newFilepath = replacementService.copyWordFile(file_path, file_name, file_path, ModifyfileName); +// +// // ..........................// +// +// List lines = doc.getDocument_builder_lines(); +// +// for (Document_builder_lines line : lines) { +// String model = line.getModel(); +// JsonElement element = parser.parse(model); +// JsonArray models = element.getAsJsonArray(); +// +// for (JsonElement mod : models) { +// JsonObject object = mod.getAsJsonObject(); +// +// String type = object.get("type").getAsString(); +// if (type.equalsIgnoreCase("Initialize")) { +// String a_uri = object.get("a_uri").toString().replaceAll("\"", ""); +// a_uri = a_uri.replace("?", String.valueOf(serviceOrderId)); +// System.out.println(a_uri); +//// Object body = GET(a_uri).getBody(); +//// JsonElement getbody = parser.parse(body.toString()); +//// getbodyobject = getbody.getAsJsonObject(); +// Object body = GET(a_uri).getBody(); +// ObjectMapper objectMapper = new ObjectMapper(); +// String json = objectMapper.writeValueAsString(body); +// JsonElement getbody = parser.parse(json); +// getbodyobject = getbody.getAsJsonObject(); +// +// } +// } +// +// for (JsonElement mod : models) { +// JsonObject object = mod.getAsJsonObject(); +// +// String type = object.get("type").getAsString(); +// if (type.equalsIgnoreCase("Mapper")) { +// String mapper = object.get("mappers").getAsString(); +// +// JsonElement parse = parser.parse(mapper); +// JsonArray mapArray = parse.getAsJsonArray(); +// for (JsonElement maps : mapArray) { +// JsonObject jsonObject = maps.getAsJsonObject(); +// startstring = jsonObject.get("start_string").toString().replaceAll("\"", ""); +// endstring = jsonObject.get("end_string").toString().replaceAll("\"", ""); +// replaceWith = jsonObject.get("replace_with").toString().replaceAll("\"", ""); +// keyword = jsonObject.get("Keyword").toString().replaceAll("\"", ""); +// linestring = jsonObject.get("line_string").toString().replaceAll("\"", ""); +// operation = jsonObject.get("operation").toString().replaceAll("\"", ""); +// cellAddress = jsonObject.get("cellAddress").toString().replaceAll("\"", ""); +// Set> entrySet = getbodyobject.entrySet(); +// for (Entry entry : entrySet) { +// +// String key = entry.getKey().toString().replaceAll("\"", ""); +// String value = entry.getValue().toString().replaceAll("\"", ""); +// +// if (replaceWith.equalsIgnoreCase(key)) { +// replaceWith = value; +// break; +// } +// +// } +// +// if (operation.contains("replacebyfirstandlast")) { +// +// replacerule = replacementService.replacewithstartandend(file_path, file_name, startstring, +// endstring, replaceWith); +// +// } +// +// if (operation.contains("appending")) { +// replacerule = replacementService.appendToSlide(linestring, replaceWith, file_path, +// file_name); +// } +// +// if (operation.contains("linereplacement")) { +// replacerule = replacementService.linereplacementForPPT(file_path, file_name, keyword, +// replaceWith); +// } +// if (operation.contains("replacement")) { +// replacerule = replacementService.replacesting(newFilepath, file_name, keyword, replaceWith, +// ModifyfileName); +// +// } +// +// if (operation.contains("excelcellReplace")) { +// replacerule = replacementService.excelcellReplace(file_path, file_name, cellAddress, +// replaceWith); +// +// } +// +// } +// } +// +// } +// } +// +// return new ResponseEntity<>(replacerule, HttpStatus.CREATED); +// } +// +// @GetMapping("/sendEmail/{id}/{fileName}") +// public ResponseEntity sendEmail(@PathVariable Long id, @PathVariable String fileName) { +// +// Optional customer_master_t = customer_master_Repository.findById(id); +// +// String email = null; +// if (customer_master_t.isPresent()) { +// Customer_master_t customer = customer_master_t.get(); +// email = customer.getEmail(); +// +// } +// +// String gateway = "EMAIL"; +// String sendTo = email; +// String replacementString = "no"; +// String cc = email; +// String template = "PerfomaInvoice"; +// +// // Create a new Com_jobTable instance and set its values +// Com_jobTable comJobTable = new Com_jobTable(); +// comJobTable.setJob_type("EMAIL"); // Set the job type to "EMAIL" +// comJobTable.setSend_to(sendTo); +// comJobTable.setGatewayName(gateway); +// comJobTable.setAttachment(fileName); +// comJobTable.setGatewaydone("N"); +// comJobTable.setReplacement_string(replacementString); +// comJobTable.setCc(cc); +// comJobTable.setReplacement_string(replacementString); +// comJobTable.setTemplate_name(template); +// // Save the Com_jobTable entity using your repository or service +// Com_jobTablerepo.save(comJobTable); +// +// return new ResponseEntity<>("Email sent successfully and job data saved!", HttpStatus.OK); +// } +// +// public ResponseEntity GET(String get) { +// RestTemplate restTemplate = new RestTemplate(); +// +// ResponseEntity u = restTemplate.getForEntity(get, Object.class); +// +// return u; +// +// } +// +//} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Controllers/ApprovalHistory_Controller.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Controllers/ApprovalHistory_Controller.java new file mode 100644 index 0000000..db56ff7 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Controllers/ApprovalHistory_Controller.java @@ -0,0 +1,67 @@ +package com.realnet.Billing.Controllers; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.Billing.Entitys.ApprovalHistory_t; +import com.realnet.Billing.Services.ApprovalHistory_Service; + +@RequestMapping(value = "/ApprovalHistory") +@RestController +public class ApprovalHistory_Controller { + + @Autowired + private ApprovalHistory_Service Service; + + @PostMapping("/ApprovalHistory") + public ApprovalHistory_t Savedata(@RequestBody ApprovalHistory_t data) { + ApprovalHistory_t save = Service.Savedata(data); + return save; + } + + @GetMapping("/ApprovalHistory") + public List getdetails() { + List get = Service.getdetails(); + return get; + } + + @GetMapping("/ApprovalHistory/{id}") + public ApprovalHistory_t getdetailsbyId(@PathVariable Long id) { + ApprovalHistory_t get = Service.getdetailsbyId(id); + return get; + + } + + @DeleteMapping("/ApprovalHistory/{id}") + public void delete_by_id(@PathVariable Long id) { + Service.delete_by_id(id); + + } + + @PutMapping("/ApprovalHistory/{id}") + public ApprovalHistory_t update(@RequestBody ApprovalHistory_t data, @PathVariable Long id) { + ApprovalHistory_t update = Service.update(data, id); + return update; + } + +// @PutMapping("/updateServiceOrderStatus") +// public ResponseEntity updateServiceOrderStatus( +// @RequestParam Long serviceOrderId, +// @RequestParam String newStatus, +// @RequestParam String actionedBy, +// @RequestParam String comments +// ) { +// ServiceOrderDto updatedServiceOrder = Service.updateServiceOrderStatus(serviceOrderId, newStatus, actionedBy, comments); +// return new ResponseEntity<>(updatedServiceOrder, HttpStatus.OK); +// } +// +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Controllers/ApprovalQueue_Controller.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Controllers/ApprovalQueue_Controller.java new file mode 100644 index 0000000..a7530a0 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Controllers/ApprovalQueue_Controller.java @@ -0,0 +1,89 @@ +package com.realnet.Billing.Controllers; + +import com.realnet.Billing.Dto.ApprovalNote_SO; +import com.realnet.Billing.Dto.ApprovalQueue_SO; +import com.realnet.Billing.Repositorys.ApprovalReturnHistory_Repo; +import com.realnet.Billing.Services.ApprovalQueueService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/billing/approval") +public class ApprovalQueue_Controller { + + @Autowired + private ApprovalQueueService approvalQueueService; + + @PostMapping("/add") + public ResponseEntity addApprovalQueue( + @RequestBody ApprovalQueue_SO approvalQueueSOSO + ) { + return ResponseEntity.ok(approvalQueueService.saveApprovalQueue(approvalQueueSOSO)); + } + + @GetMapping("/getAll") + public List getAllApprovalQueue() { + return approvalQueueService.getAllApprovalQueue(); + } + + @GetMapping("/get/{id}") + public ResponseEntity getApprovalQueueById( + @PathVariable Long id) { + ApprovalQueue_SO approvalQueueSOSO = approvalQueueService.getApprovalQueueById(id); + if (approvalQueueSOSO != null) { + return ResponseEntity.ok(approvalQueueSOSO); + } else { + return ResponseEntity.notFound().build(); + } + } + + @GetMapping("/getall/{docSeq}") + public ResponseEntity> getAllQueueForDoc(@PathVariable Long docSeq) { + List approvalQueueSOSOList = approvalQueueService.getAllQueueForDocument(docSeq); + + if (approvalQueueSOSOList.isEmpty()) { + return ResponseEntity.notFound().build(); + } + + return ResponseEntity.ok(approvalQueueSOSOList); + } + + + @PutMapping("/update/{id}") + public ResponseEntity updateApprovalQueue( + @PathVariable Long id, @RequestBody ApprovalQueue_SO updatedApprovalQueueSOSO) { + ApprovalQueue_SO existingApprovalQueueSOSO = approvalQueueService.getApprovalQueueById(id); + if (existingApprovalQueueSOSO != null) { + existingApprovalQueueSOSO.setApprover(updatedApprovalQueueSOSO.getApprover()); + existingApprovalQueueSOSO.setActionType(updatedApprovalQueueSOSO.getActionType()); + existingApprovalQueueSOSO.setActionTaken(updatedApprovalQueueSOSO.getActionTaken()); + existingApprovalQueueSOSO.setComments(updatedApprovalQueueSOSO.getComments()); + existingApprovalQueueSOSO.setActionedAt(updatedApprovalQueueSOSO.getActionedAt()); + + ApprovalQueue_SO updatedQueue = approvalQueueService.saveApprovalQueue(existingApprovalQueueSOSO); + return ResponseEntity.ok(updatedQueue); + } else { + return ResponseEntity.notFound().build(); + } + } + + // ******************************************************************************* \\ + // History-Controller \\ + + @Autowired + private ApprovalReturnHistory_Repo returnHistoryRepo; + + @PostMapping("/return") + public ResponseEntity saveReturnResponse( + @RequestBody ApprovalNote_SO history + ){ + history.setActionDate(new Date()); + System.out.println(history); + return ResponseEntity.ok(returnHistoryRepo.save(history)); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Dto/ApprovalNote_SO.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Dto/ApprovalNote_SO.java new file mode 100644 index 0000000..06752e8 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Dto/ApprovalNote_SO.java @@ -0,0 +1,27 @@ +package com.realnet.Billing.Dto; + +import com.fasterxml.jackson.annotation.JsonBackReference; +import lombok.Data; + +import javax.persistence.*; +import java.util.Date; + +@Entity +@Data +public class ApprovalNote_SO { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String documentSeq; + private String actionTaken; + private String actionNote; + + private Date actionDate; + + @ManyToOne + @JoinColumn(name = "approval_queue_id") + @JsonBackReference + private ApprovalQueue_SO approvalQueueSO; +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Dto/ApprovalQueue_SO.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Dto/ApprovalQueue_SO.java new file mode 100644 index 0000000..dd2408d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Dto/ApprovalQueue_SO.java @@ -0,0 +1,44 @@ +package com.realnet.Billing.Dto; + +import java.util.Date; +import java.util.List; + +import javax.persistence.CascadeType; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.OneToMany; + +import com.fasterxml.jackson.annotation.JsonManagedReference; + +import lombok.Data; + +@Entity +@Data +public class ApprovalQueue_SO { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String formCode; + private String documentSeq; + private String approver; + private String actionType; + private String actionTaken; + private String comments; + private Date actionedAt; + + private String tablename; + + @OneToMany(mappedBy = "approvalQueueSO", cascade = CascadeType.ALL) + @JsonManagedReference + private List history; + +// @ManyToOne(fetch = FetchType.LAZY) +// @JoinColumn(name = "service_order_id") +// @JsonBackReference + private Long service_order_id; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Dto/BillingPeriodsResponse.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Dto/BillingPeriodsResponse.java new file mode 100644 index 0000000..6c39ead --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Dto/BillingPeriodsResponse.java @@ -0,0 +1,32 @@ +package com.realnet.Billing.Dto; + + + +import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonFormat; + +import lombok.Data; +import lombok.Getter; +import lombok.Setter; + +@Data +@Getter +@Setter +public class BillingPeriodsResponse { + + @JsonFormat(pattern = "yyyy-MM-dd") + private Date periodStart; + + @JsonFormat(pattern = "yyyy-MM-dd") + private Date periodEnd; + + // Constructors, getters, setters + + + public BillingPeriodsResponse(Date periodStart, Date periodEnd) { + this.periodStart = periodStart; + this.periodEnd = periodEnd; + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Dto/ServiceOrderDto.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Dto/ServiceOrderDto.java new file mode 100644 index 0000000..da1cd76 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Dto/ServiceOrderDto.java @@ -0,0 +1,22 @@ +package com.realnet.Billing.Dto; + +import lombok.Data; + +@Data +public class ServiceOrderDto { + private Long id; + private String orderType; + private String orderNo; + private String orderGenerationDate; + private String serviceRequestBy; + private String serviceRenderedFrom; + private String serviceRenderedTo; + private String contactNumber; + private String poNumber; + private String status; + private String remarks; + private String deliveryTerms; + // Other attributes as needed + + // Getters and setters +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Dto/ServiceWithDiscount.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Dto/ServiceWithDiscount.java new file mode 100644 index 0000000..0fd18cc --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Dto/ServiceWithDiscount.java @@ -0,0 +1,48 @@ +package com.realnet.Billing.Dto; + +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Lob; + + +import lombok.Data; + +@Data +public class ServiceWithDiscount { + + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String name; + private String memo; + private boolean active; + private String type; + private String period; + private String sellPrice; + private String selfCost; + + private String serviceCode; + private String hsnCodes; + private boolean exempt; + private boolean nonGst; + private String taxRateType; + private String tarrifCode; + private String hsn_sacNumber; + private String natureOfTrans; + private String productType; + + @Lob + private String inputJson; + + + private String disc; + + + private String gst ; + +} + + diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Entitys/ApprovalHistory_t.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Entitys/ApprovalHistory_t.java new file mode 100644 index 0000000..76ff4cd --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Entitys/ApprovalHistory_t.java @@ -0,0 +1,26 @@ +package com.realnet.Billing.Entitys; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +import lombok.Data; + +@Entity +@Data +public class ApprovalHistory_t { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String document_type; + private Long document_id; + private String actioned_by; + private String action; + private String comments; + + private String approvalStatus; + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Entitys/BillingPeriods_t.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Entitys/BillingPeriods_t.java new file mode 100644 index 0000000..1317154 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Entitys/BillingPeriods_t.java @@ -0,0 +1,26 @@ +package com.realnet.Billing.Entitys; + +import lombok.*; + +import java.util.Date; + +import javax.persistence.*; + + +@Entity +@Data +public class BillingPeriods_t { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private Date periodStart; + + private Date periodEnd; + + private Date dueDate; + + private String status; + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Entitys/CustomerRates_t.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Entitys/CustomerRates_t.java new file mode 100644 index 0000000..7c7fe55 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Entitys/CustomerRates_t.java @@ -0,0 +1,32 @@ +package com.realnet.Billing.Entitys; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +import com.realnet.WhoColumn.Entity.Who_column; + +import lombok.Data; + +@Entity +@Data +public class CustomerRates_t extends Who_column { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String rateCard; + private String destination; + private String numericPrefix; + private String sellRate; + private String blockMinDuration; + private String initBlockRate; + private String dateStart; + private String dateEnd; + private String enabled; + private String dateAdded; + private String dateModified; + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Job/Controller/BillingJobServiceController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Job/Controller/BillingJobServiceController.java new file mode 100644 index 0000000..f3531ea --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Job/Controller/BillingJobServiceController.java @@ -0,0 +1,325 @@ +//package com.realnet.Billing.Job.Controller; +// +//import java.sql.SQLException; +//import java.util.ArrayList; +//import java.util.HashMap; +//import java.util.Iterator; +//import java.util.List; +//import java.util.Map; +// +//import org.slf4j.Logger; +//import org.slf4j.LoggerFactory; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.http.HttpEntity; +//import org.springframework.http.HttpHeaders; +//import org.springframework.http.HttpStatus; +//import org.springframework.http.MediaType; +//import org.springframework.http.ResponseEntity; +//import org.springframework.web.bind.annotation.GetMapping; +//import org.springframework.web.bind.annotation.PathVariable; +//import org.springframework.web.bind.annotation.PostMapping; +//import org.springframework.web.bind.annotation.RequestMapping; +//import org.springframework.web.bind.annotation.RestController; +//import org.springframework.web.client.RestTemplate; +// +//import com.google.gson.JsonArray; +//import com.google.gson.JsonElement; +//import com.google.gson.JsonObject; +//import com.google.gson.JsonParser; +//import com.realnet.Billing.Job.Entity.BillingJobEntity; +//import com.realnet.Billing.Job.Repository.BillingJobRepository; +// +//import com.realnet.utils.Port_Constant; +// +//@RestController +//@RequestMapping("/token/BillingWorkflow/surejob") +//public class BillingJobServiceController { +// Logger log = LoggerFactory.getLogger(BillingJobServiceController.class); +// +// @Autowired +// private BillingJobRepository jobrepo; +// +// @Autowired +// private BillingPerfomaWorkFlowLineRepository flowrepo; +// +// @Autowired +// private BillingPerfomaWorkFlowLineRepository line_repo; +// +// @Autowired +// private BillingTaxInvoiceWorkFlowLineRepository billingTaxInvoiceWorkFlowLineRepository; +// +// @Autowired +// BillingJobService service; +// +// @PostMapping("/assignJob") +// public ResponseEntity jobAssign() { +// BillingJobEntity obj = new BillingJobEntity(); +// BillingJobEntity obj2 = new BillingJobEntity(); +// // DataflowJobConsolidationEntity obj3 = new DataflowJobConsolidationEntity(); +// +// obj.setConnection_name(null); +// obj.setJob_type("PerfomaInvoice"); +// obj.setMethod("GET"); +// obj.setParameters(null); +// obj.setUrl("/token/PerfomaSequentialApi/executeWorkflow"); +// obj.setRef(null); +// jobrepo.save(obj); +// +// obj2.setConnection_name(null); +// obj2.setJob_type("TaxInvoice"); +// obj2.setMethod("GET"); +// obj2.setParameters(null); +// obj2.setRef(null); +// obj2.setUrl("/token/consolidation/MergeData"); +// jobrepo.save(obj2); +// +// return new ResponseEntity<>(obj2, HttpStatus.ACCEPTED); +// } +// +// @GetMapping("/getjob/{job_type}") +// public ResponseEntity getByJob(@PathVariable String job_type) { +// +// BillingJobEntity jobtype = jobrepo.getByJobType(job_type); +// return new ResponseEntity<>(jobtype, HttpStatus.ACCEPTED); +// } +// +// @GetMapping("/create_job/{id}") +// public ResponseEntity createjob(@PathVariable Long id) throws SQLException { +// +// String job_url = ""; +// String CRON_exp = ""; +// String job_type = ""; +// String title = ""; +// String node = ""; +// ArrayList list = new ArrayList<>(); +// BillingPerfomaWorkFlowLine lines = flowrepo.getSetuWorkflowlines(id); +// String str = lines.getModel(); +// +// JsonParser parser = new JsonParser(); +// JsonElement element = parser.parse(str); +// JsonArray array = element.getAsJsonArray(); +//// Iterator iterator = array.iterator(); +// +// List jobNamesList = new ArrayList<>(); +// +// for (JsonElement jsonElement : array) { +// +// JsonObject jsonObject = jsonElement.getAsJsonObject(); +// +// title = jsonObject.get("title").getAsString(); +// +// StringBuilder builder = new StringBuilder(); +// +// builder.append("no data"); +// System.out.println(builder.toString()); +// +// Map jobprodata = new HashMap(); +// jobprodata.put("jobName", title + "_" + System.currentTimeMillis()); +// jobprodata.put("jobGroup", "PerfomaInvoice"); +// +// jobprodata.put("startTime", "2022-12-26T13:02"); +// jobprodata.put("counter", "5"); +// jobprodata.put("repeatTime", "5"); +// jobprodata.put("cronExpression", "0/10 * * * * ?"); +// jobprodata.put("line_id", id.toString()); +// jobprodata.put("node_id", "null"); +// +// System.out.println(jobprodata); +// +// System.out.println(jobprodata); +// +// RestTemplate restTemplate = new RestTemplate(); +// String jobprourl2 = "http://" + Port_Constant.LOCAL_HOST + ":" + Port_Constant.SURE_JOB_8089 +// + "/surejob/schedule"; +// HttpHeaders headers2 = getHeaders(); +// HttpEntity request2 = new HttpEntity(jobprodata, headers2); +// +// ResponseEntity res2 = restTemplate.postForEntity(jobprourl2, request2, Object.class); +// System.out.println(res2.getStatusCodeValue()); +// +// if (res2.getStatusCodeValue() == 200) { +// log.info("Gitea data inserted in sure job"); +// System.out.println(res2.getBody()); +// jobNamesList.add(jobprodata.get("jobName")); +// // jobNamesList.add(jobprodata.get("jobGroup")); +// +// } +// } +// +// return new ResponseEntity<>(jobNamesList, HttpStatus.ACCEPTED); +// } +// +// @GetMapping("/surejob/{id}") +// public ResponseEntity forjobscheduler(@PathVariable Long id) throws SQLException { +// +// ArrayList list = new ArrayList<>(); +// BillingPerfomaWorkFlowLine lines = flowrepo.getSetuWorkflowlines(id); +// String str = lines.getModel(); +// +// JsonParser parser = new JsonParser(); +// JsonElement element = parser.parse(str); +// JsonArray array = element.getAsJsonArray(); +// Iterator iterator = array.iterator(); +// +// String job_url = ""; +// String CRON_exp = ""; +// String job_type = ""; +// BillingJobEntity job = null; +// +// Boolean auto_mapping = true; +// while (iterator.hasNext()) { +// +// Object next = iterator.next(); +// JsonElement parse = parser.parse(next.toString()); +// JsonObject jsonObject = parse.getAsJsonObject(); +// // int i = jsonObject.get("id").getAsInt(); +// +// +// job_type = "PerfomaInvoice"; +// +//// if (job_type.isEmpty() || job_type.contains("null") || job_type == null) { +//// job_type = jsonObject.get("type").toString().replaceAll("\"", ""); +//// } +// +// job = jobrepo.getByJobType(job_type); +// +// break; +//// } +// +// } +// return new ResponseEntity<>(job, HttpStatus.ACCEPTED); +// } +//// GET DATA FLOW LINE +// +// @GetMapping("/getline/{id}") +// public ResponseEntity getline(@PathVariable Long id) { +// +// return new ResponseEntity<>(line_repo.getSetuWorkflowlines(id), HttpStatus.ACCEPTED); +// +// } +// +// private HttpHeaders getHeaders() { +// HttpHeaders headers = new HttpHeaders(); +// headers.set("Content-Type", MediaType.APPLICATION_JSON_VALUE); +// headers.set("Accept", MediaType.APPLICATION_JSON_VALUE); +// return headers; +// } +// +// // Tax Invoice Job Start +// +// @GetMapping("/create_job/{id}") +// public ResponseEntity createjobforTaxInvoice(@PathVariable Long id) throws SQLException { +// +// String job_url = ""; +// String CRON_exp = ""; +// String job_type = ""; +// String title = ""; +// String node = ""; +// ArrayList list = new ArrayList<>(); +// BillingTaxInvoiceWorkFlowLine lines = billingTaxInvoiceWorkFlowLineRepository.getSetuWorkflowlines(id); +// String str = lines.getModel(); +// +// JsonParser parser = new JsonParser(); +// JsonElement element = parser.parse(str); +// JsonArray array = element.getAsJsonArray(); +//// Iterator iterator = array.iterator(); +// +// List jobNamesList = new ArrayList<>(); +// +// for (JsonElement jsonElement : array) { +// +// JsonObject jsonObject = jsonElement.getAsJsonObject(); +// +// title = jsonObject.get("title").getAsString(); +// +// StringBuilder builder = new StringBuilder(); +// +// builder.append("no data"); +// System.out.println(builder.toString()); +// +// Map jobprodata = new HashMap(); +// jobprodata.put("jobName", title + "_" + System.currentTimeMillis()); +// jobprodata.put("jobGroup", "TaxInvoice"); +// +// jobprodata.put("startTime", "2022-12-26T13:02"); +// jobprodata.put("counter", "5"); +// jobprodata.put("repeatTime", "5"); +// jobprodata.put("cronExpression", "0/10 * * * * ?"); +// jobprodata.put("line_id", id.toString()); +// jobprodata.put("node_id", "null"); +// +// System.out.println(jobprodata); +// +// System.out.println(jobprodata); +// +// RestTemplate restTemplate = new RestTemplate(); +// String jobprourl2 = "http://" + Port_Constant.LOCAL_HOST + ":" + Port_Constant.SURE_JOB_8089 +// + "/surejob/schedule"; +// HttpHeaders headers2 = getHeaders(); +// HttpEntity request2 = new HttpEntity(jobprodata, headers2); +// +// ResponseEntity res2 = restTemplate.postForEntity(jobprourl2, request2, Object.class); +// System.out.println(res2.getStatusCodeValue()); +// +// if (res2.getStatusCodeValue() == 200) { +// log.info("Gitea data inserted in sure job"); +// System.out.println(res2.getBody()); +// jobNamesList.add(jobprodata.get("jobName")); +// // jobNamesList.add(jobprodata.get("jobGroup")); +// +// } +// } +// +// return new ResponseEntity<>(jobNamesList, HttpStatus.ACCEPTED); +// } +// +// +// +// +// +// +// +// +// +// @GetMapping("/surejob/taxInvoice/{id}") +// public ResponseEntity forjobschedulerInvoicetax(@PathVariable Long id) throws SQLException { +// +// ArrayList list = new ArrayList<>(); +// BillingTaxInvoiceWorkFlowLine lines = billingTaxInvoiceWorkFlowLineRepository.getSetuWorkflowlines(id); +// String str = lines.getModel(); +// +// JsonParser parser = new JsonParser(); +// JsonElement element = parser.parse(str); +// JsonArray array = element.getAsJsonArray(); +// Iterator iterator = array.iterator(); +// +// String job_url = ""; +// String CRON_exp = ""; +// String job_type = ""; +// BillingJobEntity job = null; +// +// Boolean auto_mapping = true; +// while (iterator.hasNext()) { +// +// Object next = iterator.next(); +// JsonElement parse = parser.parse(next.toString()); +// JsonObject jsonObject = parse.getAsJsonObject(); +// // int i = jsonObject.get("id").getAsInt(); +// +// +// job_type = "TaxInvoice"; +// +//// if (job_type.isEmpty() || job_type.contains("null") || job_type == null) { +//// job_type = jsonObject.get("type").toString().replaceAll("\"", ""); +//// } +// +// job = jobrepo.getByJobType(job_type); +// +// break; +//// } +// +// } +// return new ResponseEntity<>(job, HttpStatus.ACCEPTED); +// } +// +//} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Job/Entity/BillingJobEntity.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Job/Entity/BillingJobEntity.java new file mode 100644 index 0000000..e8233d4 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Job/Entity/BillingJobEntity.java @@ -0,0 +1,25 @@ +package com.realnet.Billing.Job.Entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +import lombok.Data; + + +@Data +@Entity +public class BillingJobEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private long id; + private String parameters; + private String url; + private String method; + private String connection_name; + private String job_type; + private String ref; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Job/Repository/BillingJobRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Job/Repository/BillingJobRepository.java new file mode 100644 index 0000000..2e36afa --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Job/Repository/BillingJobRepository.java @@ -0,0 +1,16 @@ +package com.realnet.Billing.Job.Repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import com.realnet.Billing.Job.Entity.BillingJobEntity; + + + +@Repository +public interface BillingJobRepository extends JpaRepository { + + @Query(value = "SELECT * FROM billing_job_entity where job_type=?1", nativeQuery = true) + BillingJobEntity getByJobType(String jobtype); +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Job/Service/BillingJobService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Job/Service/BillingJobService.java new file mode 100644 index 0000000..0e5e6e8 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Job/Service/BillingJobService.java @@ -0,0 +1,23 @@ +//package com.realnet.Billing.Job.Service; +// +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.stereotype.Service; +// +//import com.realnet.DataConsolidation.Entity.DataflowJobConsolidationEntity; +//import com.realnet.DataConsolidation.Repository.DataflowJobConsolidationRepository; +// +// +//@Service +//public class BillingJobService { +// +// @Autowired +// private DataflowJobConsolidationRepository jobrepo; +// +// public DataflowJobConsolidationEntity getJobtype(String jobtype) { +// DataflowJobConsolidationEntity byJobType = jobrepo.getByJobType(jobtype); +// return byJobType; +// } +// +// +// +//} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Repositorys/ApprovalHistory_Repository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Repositorys/ApprovalHistory_Repository.java new file mode 100644 index 0000000..0c199f9 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Repositorys/ApprovalHistory_Repository.java @@ -0,0 +1,11 @@ +package com.realnet.Billing.Repositorys; + +import org.springframework.data.jpa.repository.JpaRepository; + +import org.springframework.stereotype.Repository; + +import com.realnet.Billing.Entitys.ApprovalHistory_t; + +@Repository +public interface ApprovalHistory_Repository extends JpaRepository { +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Repositorys/ApprovalQueue_Repository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Repositorys/ApprovalQueue_Repository.java new file mode 100644 index 0000000..f9dc768 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Repositorys/ApprovalQueue_Repository.java @@ -0,0 +1,13 @@ +package com.realnet.Billing.Repositorys; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.Billing.Dto.ApprovalQueue_SO; + +import java.util.List; + +@Repository +public interface ApprovalQueue_Repository extends JpaRepository { + List findByDocumentSeq(Long docid); +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Repositorys/ApprovalReturnHistory_Repo.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Repositorys/ApprovalReturnHistory_Repo.java new file mode 100644 index 0000000..1cd8631 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Repositorys/ApprovalReturnHistory_Repo.java @@ -0,0 +1,9 @@ +package com.realnet.Billing.Repositorys; + +import com.realnet.Billing.Dto.ApprovalNote_SO; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface ApprovalReturnHistory_Repo extends JpaRepository { +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Services/ApprovalHistory_Service.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Services/ApprovalHistory_Service.java new file mode 100644 index 0000000..2eaf656 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Services/ApprovalHistory_Service.java @@ -0,0 +1,135 @@ +package com.realnet.Billing.Services; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.realnet.Billing.Entitys.ApprovalHistory_t; +import com.realnet.Billing.Repositorys.ApprovalHistory_Repository; + +@Service +public class ApprovalHistory_Service { + + @Autowired + private ApprovalHistory_Repository Repository; + +// @Autowired +// private ServiceOrder_Repository serviceOrder_Repository1; + + public ApprovalHistory_t Savedata(ApprovalHistory_t data) { + return Repository.save(data); + } + + public List getdetails() { + return (List) Repository.findAll(); + } + + public ApprovalHistory_t getdetailsbyId(Long id) { + return Repository.findById(id).get(); + } + + public void delete_by_id(Long id) { + Repository.deleteById(id); + } + + public ApprovalHistory_t update(ApprovalHistory_t data, Long id) { + ApprovalHistory_t old = Repository.findById(id).get(); + old.setDocument_type(data.getDocument_type()); + old.setDocument_id(data.getDocument_id()); + old.setActioned_by(data.getActioned_by()); + old.setAction(data.getAction()); + old.setComments(data.getComments()); + final ApprovalHistory_t test = Repository.save(old); + return test; + } + +// public ServiceOrder_t updateServiceOrderStatus(Long serviceOrderId, String newStatus, String actionedBy, String comments) { +// try { +// Optional optionalServiceOrder = serviceOrder_Repository.findById(serviceOrderId); +// if (optionalServiceOrder.isEmpty()) { +// throw new EntityNotFoundException("Service Order not found with ID: " + serviceOrderId); +// } +// +// ServiceOrder_t serviceOrder = optionalServiceOrder.get(); +// serviceOrder.setStatus(newStatus); +// serviceOrder_Repository.save(serviceOrder); +// +// // Insert data into Approval History table +// ApprovalHistory_t approvalHistory = new ApprovalHistory_t(); +// approvalHistory.setDocument_type("ServiceOrder"); +// approvalHistory.setDocument_id(serviceOrderId); +// approvalHistory.setActioned_by(actionedBy); +// approvalHistory.setAction("Status Updated"); +// approvalHistory.setComments(comments); +// // Set other fields in the Approval History table as needed +// +// Repository.save(approvalHistory); +// +// return serviceOrder; +// } catch (EntityNotFoundException ex) { +// // Handle EntityNotFoundException (Service Order not found) +// // You can log the error, return a custom error response, or throw a new exception. +// throw ex; +// } catch (Exception ex) { +// // Handle other exceptions (e.g., database errors, unexpected issues) +// // You can log the error, return a custom error response, or throw a new exception. +// throw new RuntimeException("Error updating Service Order status.", ex); +// } +// } +// +// public ServiceOrderDto updateServiceOrderStatus(Long serviceOrderId, String newStatus, String actionedBy, String comments) { +// // ... existing code to update status ... +// +// +// +// // Convert ServiceOrder_t entity to ServiceOrderDto +// ServiceOrderDto serviceOrderDto = convertToDto(serviceOrder); +// +// return serviceOrderDto; +// } +// +// public ServiceOrderDto updateServiceOrderStatus(Long serviceOrderId, String newStatus, String actionedBy, +// String comments) { +// try { +// Optional optionalServiceOrder = serviceOrder_Repository.findById(serviceOrderId); +// if (!optionalServiceOrder.isPresent()) { +// throw new EntityNotFoundException("Service Order not found with ID: " + serviceOrderId); +// } +// +// ServiceOrder_t serviceOrder = optionalServiceOrder.get(); +// serviceOrder.setStatus(newStatus); +// serviceOrder_Repository.save(serviceOrder); +// +// // Insert data into Approval History table +// ApprovalHistory_t approvalHistory = new ApprovalHistory_t(); +// approvalHistory.setDocument_type("ServiceOrder"); +// approvalHistory.setDocument_id(serviceOrderId); +// approvalHistory.setActioned_by(actionedBy); +// approvalHistory.setAction("Status Updated"); +// approvalHistory.setComments(comments); +// // Set other fields in the Approval History table as needed +// +// Repository.save(approvalHistory); +// +// // Convert ServiceOrder_t entity to DTO and return +// return convertToDto(serviceOrder); +// } catch (EntityNotFoundException ex) { +// // Handle EntityNotFoundException (Service Order not found) +// // You can log the error, return a custom error response, or throw a new +// // exception. +// throw ex; +// } catch (Exception ex) { +// // Handle other exceptions (e.g., database errors, unexpected issues) +// // You can log the error, return a custom error response, or throw a new +// // exception. +// throw new RuntimeException("Error updating Service Order status.", ex); +// } +// } + +// private ServiceOrderDto convertToDto(ServiceOrder_t serviceOrder) { +// // Perform mapping from ServiceOrder_t entity to ServiceOrderDto +// ModelMapper modelMapper = new ModelMapper(); +// return modelMapper.map(serviceOrder, ServiceOrderDto.class); +// } +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Services/ApprovalQueueService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Services/ApprovalQueueService.java new file mode 100644 index 0000000..0765f8b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Services/ApprovalQueueService.java @@ -0,0 +1,31 @@ +package com.realnet.Billing.Services; + +import com.realnet.Billing.Dto.ApprovalQueue_SO; +import com.realnet.Billing.Repositorys.ApprovalQueue_Repository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class ApprovalQueueService { + + @Autowired + private ApprovalQueue_Repository approvalQueueRepository; + + public ApprovalQueue_SO saveApprovalQueue(ApprovalQueue_SO approvalQueueSOSO) { + return approvalQueueRepository.save(approvalQueueSOSO); + } + + public List getAllApprovalQueue() { + return approvalQueueRepository.findAll(); + } + + public ApprovalQueue_SO getApprovalQueueById(Long id) { + return approvalQueueRepository.findById(id).orElse(null); + } + + public List getAllQueueForDocument(Long docid) { + return approvalQueueRepository.findByDocumentSeq(docid); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Builders/Entity/Builder_entity_t.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Builders/Entity/Builder_entity_t.java new file mode 100644 index 0000000..c1d165e --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Builders/Entity/Builder_entity_t.java @@ -0,0 +1,21 @@ +package com.realnet.Builders.Entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +import lombok.Data; + +@Entity +@Data +public class Builder_entity_t { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String job_type; + private String job_name; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Builders/Repos/BuilderRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Builders/Repos/BuilderRepository.java new file mode 100644 index 0000000..d7c2c44 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Builders/Repos/BuilderRepository.java @@ -0,0 +1,15 @@ +package com.realnet.Builders.Repos; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import com.realnet.Builders.Entity.Builder_entity_t; + +@Repository +public interface BuilderRepository extends JpaRepository { + + @Query(value = "select * from builder_entity_t where job_name= ?1 AND job_type=?2", nativeQuery = true) + Builder_entity_t findByjobTypeAndName(String job_name, String job_type); + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Builders/Services/BuilderService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Builders/Services/BuilderService.java new file mode 100644 index 0000000..f9801fb --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Builders/Services/BuilderService.java @@ -0,0 +1,583 @@ +package com.realnet.Builders.Services; + +import java.io.IOException; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map.Entry; +import java.util.Set; +import java.util.stream.Collectors; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; + +import com.realnet.Builders.Entity.Builder_entity_t; +import com.realnet.Builders.Repos.BuilderRepository; +import com.realnet.Dashboard1.Entity.Dashbord1_Line; +import com.realnet.Dashboard1.Entity.Dashbord_Header; +import com.realnet.Dashboard1.Repository.Dashboard_lineRepository; +import com.realnet.Dashboard1.Service.HeaderService; +import com.realnet.Rpt_builder2.Entity.Rpt_builder2_t; +import com.realnet.Rpt_builder2.Services.Rpt_builder2_Service; +import com.realnet.Rpt_builder2_lines.Entity.Rpt_builder2_lines_t; +import com.realnet.Rpt_builder2_lines.Services.Rpt_builder2_lines_Service; +import com.realnet.api_registery.Entity.Api_registery_header; +import com.realnet.api_registery.Entity.Api_registery_line; +import com.realnet.api_registery.Services.Api_registery_headerService; +import com.realnet.api_registery.Services.Api_registery_lineService; +import com.realnet.fnd.entity1.MenuDet; +import com.realnet.fnd.service1.SecmenuDetailService; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.service1.AppUserServiceImpl; + +@Service +public class BuilderService { + + @Autowired + private SecmenuDetailService secmenuDetailService; + + @Autowired + private HeaderService headerService; + + @Autowired + private Dashboard_lineRepository dashboard_lineRepository; + + @Autowired + private Api_registery_headerService api_registery_headerService; + + @Autowired + private Api_registery_lineService api_registery_lineService; + + @Autowired + private BuilderRepository builderRepository; + + @Autowired + private Rpt_builder2_lines_Service rLinesService; + + @Autowired + private Rpt_builder2_Service reBuilder2Service; + + @Autowired + private AppUserServiceImpl userServiceImpl; + + public void callotherService() throws IOException { + + executeDump(true); + + // ADD OTHER SERVICE + + System.out.println("dashboard and menu inserted..."); + + } + +// add Custom sec menu detail + + public ResponseEntity addCustomMenu(String tableName, String menuActionLink, String MenuType) { + +// default menu that is Transcation + Long menuid = 1577l; + + if (MenuType.equalsIgnoreCase("Masters") || MenuType.equalsIgnoreCase("Master")) { + menuid = 1601l; + + } + + MenuDet menuDet = null; + Builder_entity_t entity_t = builderRepository.findByjobTypeAndName(tableName, "Menu"); + + if (entity_t == null) { + System.out.println("now inserting menu"); + + menuDet = secmenuDetailService.customsecmenuadd(tableName, menuActionLink, menuid); + + savebuilderentity(tableName, "Menu"); + } else { + System.out.println(tableName + " menu already have"); + + } + + return new ResponseEntity<>(menuDet, HttpStatus.CREATED); + } + +// add dashboard + public Dashbord_Header SaveDashboard(String dashboardname, String description, String model) { + + Dashbord_Header dash = null; + Builder_entity_t entity_t = builderRepository.findByjobTypeAndName(dashboardname, "Dashboard"); + + if (entity_t == null) { + System.out.println("now inserting dashboard"); + + Dashbord_Header dashbord_Header = new Dashbord_Header(); + dashbord_Header.setDashboard_name(dashboardname); + dashbord_Header.setDescription(description); + dashbord_Header.setObject_type("form"); + dashbord_Header.setSub_object_type("only header"); + + dash = headerService.Savedata(dashbord_Header); + Dashbord1_Line line = new Dashbord1_Line(); + + line.setModel(model); + line.setHeader_id(dash.getId().toString()); + line.setDashbord_Header(dash); + dashboard_lineRepository.save(line); + + savebuilderentity(dashboardname, "Dashboard"); + + } else { + System.out.println(dashboardname + " dashboard already have"); + + } + + return dash; + } + +// add Report + public Rpt_builder2_t SaveReport(String reportName, String description, Boolean isSql, String model) { + + Rpt_builder2_t report = null; + Builder_entity_t entity_t = builderRepository.findByjobTypeAndName(reportName, "Report"); + + if (entity_t == null) { + System.out.println("now inserting Report"); + + Rpt_builder2_t rp = new Rpt_builder2_t(); + rp.setReportName(reportName); + rp.setDescription(description); + rp.setIsSql(isSql); + + report = reBuilder2Service.Savedata(rp); + Rpt_builder2_lines_t line = new Rpt_builder2_lines_t(); + + line.setModel(model); + line.setHeader_id(report.getId().toString()); + line.setRpt_builder2_t(rp); + rLinesService.Savedata(line); + + savebuilderentity(reportName, "Report"); + + } else { + System.out.println(reportName + " Report already have"); + + } + + return report; + } + +// Add to api Registery + + public Api_registery_header SaveApiRegistery(String tableName) { + + Api_registery_header save = null; + Builder_entity_t entity_t = builderRepository.findByjobTypeAndName(tableName, "Api_registery"); + + if (entity_t == null) { + System.out.println("now inserting apiregistery"); + + Api_registery_header api_registery_header = new Api_registery_header(); + + api_registery_header.setTable_name(tableName); + + save = api_registery_headerService.Savedata(api_registery_header); + + HashMap hashMap = new HashMap<>(); + + hashMap.put("GetAll", "/" + tableName + "/" + tableName); + hashMap.put("GetById", "/" + tableName + "/" + tableName + "{Id}"); + hashMap.put("Post", "/" + tableName + "/" + tableName); + hashMap.put("Put", "/" + tableName + "/" + tableName); + + Set> entrySet = hashMap.entrySet(); + + for (Entry entry : entrySet) { + + String Method = entry.getKey(); + String url = entry.getValue(); + + Api_registery_line registery_line = new Api_registery_line(); + + registery_line.setMethod(Method); + registery_line.setUrl(url); + registery_line.setHeader_id(save.getId()); + + api_registery_lineService.Savedata(registery_line); + + } + + savebuilderentity(tableName, "Api_registery"); + } else { + System.out.println(tableName + " all method already have"); + + } + + return save; + } + + private void savebuilderentity(String Job_name, String jobType) { + + Builder_entity_t builder_entity_t = new Builder_entity_t(); + + builder_entity_t.setJob_name(Job_name); + builder_entity_t.setJob_type(jobType); + builderRepository.save(builder_entity_t); + + } + + @Autowired + private JdbcTemplate jdbcTemplate; + + public ResponseEntity executeDump(Boolean execute) throws IOException { + // Check if execution is allowed + System.out.println(" dump executed start.."); + + Builder_entity_t entity_t = builderRepository.findByjobTypeAndName("SqlDump", "Execute"); + + List users = userServiceImpl.getAllUsers(); + if (entity_t != null || !users.isEmpty()) { + execute = false; + + } + if (!execute) { + System.out.println("Dump Already Executed...\n"); + return ResponseEntity.ok("Service not executed due to 'execute' flag being false."); + } + +// Path path = Paths.get(System.getProperty("user.dir")).resolve(filePath); + + // Check if file exists +// if (!Files.exists(path)) { +// return ResponseEntity.badRequest().body("File not found: " + filePath); +// } +// +// // File content ko read karo aur SQL commands extract karo +// String sql = FileUtils.readFileToString(new File(filePath), StandardCharsets.UTF_8); + + String sql = getSql(); + // SQL commands ko execute karo + + // Split statements by semicolon +// List sqlStatements = Arrays.stream(sql.split(";")).map(String::trim) +// .filter(statement -> !statement.isEmpty()) // Empty statements ko remove karo +// .filter(statement -> !statement.startsWith("USE")) // "USE db;" ko ignore karo +// .filter(statement -> !statement.startsWith("--")) // Comments ko ignore karo +// .filter(statement -> !statement.startsWith("/*")) // Special MySQL commands ko ignore karo +// .collect(Collectors.toList()); + + List sqlStatements = Arrays.stream(sql.split("(?<=;)(?![^()]*\\))")) // Regular expression to split + // by semicolon not inside + // parentheses + .map(String::trim).filter(statement -> !statement.isEmpty()) // Empty statements ko remove karo + .filter(statement -> !statement.startsWith("--")) // Comments ko ignore karo + .filter(statement -> !statement.startsWith("/*")) // Special MySQL commands ko ignore karo + .collect(Collectors.toList()); + + // Execute each statement + for (String statement : sqlStatements) { + try { + jdbcTemplate.execute(statement); + + System.out.println(statement + " executed.."); + + } catch (DataAccessException e) { + System.out.println("DataAccessException error inside.." + e); + + // Specific SQL execution error ko catch karo aur log karo + + } + } + + savebuilderentity("SqlDump", "Execute"); + + System.out.println("Dump executed executed.."); + + // File ko delete karo +// Files.delete(path); + + System.out.println("File delete successfully..."); + + return ResponseEntity.ok("Dump executed and file deleted successfully!"); + + } + + public String getSql() { + + String sql = " \n" + "DROP TABLE IF EXISTS `accounts`;\n" + + "/*!40101 SET @saved_cs_client = @@character_set_client */;\n" + + "/*!50503 SET character_set_client = utf8mb4 */;\n" + "CREATE TABLE `accounts` (\n" + + " `id` bigint NOT NULL,\n" + " `companyname` varchar(255) DEFAULT NULL,\n" + + " `email` varchar(255) DEFAULT NULL,\n" + " `managing_work` varchar(255) DEFAULT NULL,\n" + + " `mobile` bigint DEFAULT NULL,\n" + " `name` varchar(255) DEFAULT NULL,\n" + + " `pancard` varchar(255) DEFAULT NULL,\n" + " `password` varchar(255) DEFAULT NULL,\n" + + " `working` varchar(255) DEFAULT NULL,\n" + " PRIMARY KEY (`id`)\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;\n" + + "/*!40101 SET character_set_client = @saved_cs_client */;\n" + "\n" + "\n" + + "/*!40000 ALTER TABLE `accounts` DISABLE KEYS */;\n" + + "INSERT INTO `accounts` VALUES (1,'test','test@gmail.com','w',123456789,'kk','kk','test','w');\n" + + "/*!40000 ALTER TABLE `accounts` ENABLE KEYS */;\n" + "\n" + "DROP TABLE IF EXISTS `app_user_log`;\n" + + "/*!40101 SET @saved_cs_client = @@character_set_client */;\n" + + "/*!50503 SET character_set_client = utf8mb4 */;\n" + "CREATE TABLE `app_user_log` (\n" + + " `log_id` bigint NOT NULL,\n" + " `created_on` datetime DEFAULT NULL,\n" + + " `generate_log` varchar(255) DEFAULT NULL,\n" + " `log_file_name` varchar(255) DEFAULT NULL,\n" + + " `log_level` varchar(255) DEFAULT NULL,\n" + " `user_name` varchar(255) DEFAULT NULL,\n" + + " PRIMARY KEY (`log_id`),\n" + " UNIQUE KEY `UK_tl3or0c0pxxdvigxponlgee18` (`user_name`)\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;\n" + + "/*!40101 SET character_set_client = @saved_cs_client */;\n" + "\n" + "\n" + "\n" + + "/*!40000 ALTER TABLE `app_user_log` DISABLE KEYS */;\n" + + "INSERT INTO `app_user_log` VALUES (1,'2023-06-09 17:39:20','Y','sysadmin1686312560.log','info','sysadmin');\n" + + "/*!40000 ALTER TABLE `app_user_log` ENABLE KEYS */;\n" + "\n" + "\n" + + "DROP TABLE IF EXISTS `app_user_log_sequence`;\n" + + "/*!40101 SET @saved_cs_client = @@character_set_client */;\n" + + "/*!50503 SET character_set_client = utf8mb4 */;\n" + "CREATE TABLE `app_user_log_sequence` (\n" + + " `next_val` bigint DEFAULT NULL\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;\n" + + "/*!40101 SET character_set_client = @saved_cs_client */;\n" + "\n" + + "/*!40000 ALTER TABLE `app_user_log_sequence` DISABLE KEYS */;\n" + + "INSERT INTO `app_user_log_sequence` VALUES (2),(2),(2),(2),(2),(2),(2),(2),(2),(1);\n" + + "/*!40000 ALTER TABLE `app_user_log_sequence` ENABLE KEYS */;\n" + "\n" + "\n" + "\n" + + "DROP TABLE IF EXISTS `logs`;\n" + "/*!40101 SET @saved_cs_client = @@character_set_client */;\n" + + "/*!50503 SET character_set_client = utf8mb4 */;\n" + "CREATE TABLE `logs` (\n" + + " `user_id` bigint NOT NULL,\n" + " `dated` varchar(255) DEFAULT NULL,\n" + + " `lavel` varchar(255) DEFAULT NULL,\n" + " `logger` varchar(255) DEFAULT NULL,\n" + + " `message` varchar(255) DEFAULT NULL,\n" + " PRIMARY KEY (`user_id`)\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;\n" + + "/*!40101 SET character_set_client = @saved_cs_client */;\n" + "\n" + "\n" + + "/*!40000 ALTER TABLE `role` DISABLE KEYS */;\n" + + "INSERT INTO `role` VALUES (1,'ADMIN','ROLE_ADMIN'),(2,'Developer','ROLE_Developer'),(3,'USER','ROLE_USER'),(5,'DEVEOPS','ROLE_DEVEOPS');\n" + + "/*!40000 ALTER TABLE `role` ENABLE KEYS */;\n" + "\n" + "\n" + "\n" + "\n" + + "/*!40000 ALTER TABLE `sec_menu_det` DISABLE KEYS */;\n" + + "INSERT INTO `sec_menu_det` VALUES (1116,'2023-01-25 10:25:50','2023-01-25 10:25:50',3000,'security','lock',0,'Security','sec3000','Enable'),(1117,'2023-01-25 10:42:02','2023-02-04 15:34:25',3010,'usermaintance',NULL,1116,'User Maintance','U1000','Enable'),(1118,'2023-01-25 11:12:27','2023-02-04 15:34:36',3020,'usergrpmaintance',NULL,1116,'User Group Maintance','U2000','Enable'),(1523,'2023-02-04 11:15:57','2023-02-04 15:34:45',3030,'menumaintance',NULL,1116,'Menu Maintance','M3000','Enable'),(1524,'2023-02-04 11:16:52','2023-02-04 15:34:54',3040,'menuaccess',NULL,1116,'Menu Access Control','MA4000','Enable'),(1525,'2023-02-04 11:17:31','2023-02-04 15:35:06',3050,'systemparameters',NULL,1116,'System Parameters','SP5000','Enable'),(1526,'2023-02-04 11:18:04','2023-02-04 15:35:14',3060,'accesstype',NULL,1116,'Access Type','A6000','Enable'),(1528,'2023-02-04 13:31:48','2023-02-04 15:33:02',1010,'incident-new',NULL,1527,'Incident','I1000','Enable'),(1529,'2023-02-04 13:33:03','2023-02-04 15:33:12',1020,'incident-overview',NULL,1527,'Overview','O2000','Enable'),(1530,'2023-02-04 13:34:42','2023-02-04 15:33:21',1030,'sureboard2',NULL,1527,'Issueboard','I3000','Enable'),(1531,'2023-02-04 13:35:27','2023-02-04 15:33:36',1040,'change-request',NULL,1527,'Change Request','C4000','Enable'),(1532,'2023-02-04 13:36:01','2023-02-10 02:25:13',1050,'problem-creation',NULL,1527,'Problem Request','P5000','Enable'),(1534,'2023-02-04 13:56:22','2023-02-04 15:34:07',2010,'Sr_priority2_t',NULL,1533,'Priority','P1000','Enable'),(1535,'2023-02-04 17:12:27','2023-02-04 17:12:27',2020,'Sr_urgency_t',NULL,1533,'Urgency','Su2000','Enable'),(1536,'2023-02-04 17:13:22','2023-02-04 17:13:22',2030,'Sr_impact2_t',NULL,1533,'Impact','Sm3000','Enable'),(1537,'2023-02-04 17:14:01','2023-02-04 17:14:01',2040,'Sr_category2_t',NULL,1533,'Category','Sc4000','Enable'),(1538,'2023-02-04 17:14:31','2023-02-04 17:14:31',2050,'Sr_State_t',NULL,1533,'State','S5000','Enable'),(1539,'2023-02-04 17:15:12','2023-02-09 13:25:27',2070,'Sr_customer_t',NULL,1533,'Customer','c7000','Enable'),(1540,'2023-02-04 17:16:23','2023-02-14 13:15:27',2060,'Sr_Contact_type_t',NULL,1533,'Contact','C6000','Enable'),(1541,'2023-02-04 17:17:22','2023-02-04 17:17:22',2080,'Sr_handler_t',NULL,1533,'Handler','H8000','Enable'),(1543,'2023-02-08 15:07:14','2023-03-01 05:51:41',4010,'sequence',NULL,1542,'Define Sequence','SE1000','Enable'),(1544,'2023-02-16 10:14:33','2023-02-16 10:14:33',4020,'bugtracker',NULL,1542,'Bug Tracker','B1000','Enable'),(1545,'2023-02-16 11:00:25','2023-02-16 11:00:25',4030,'datamanagemennt',NULL,1542,'Data Management','M3000','Enable'),(1550,'2023-03-01 06:10:35','2023-03-01 06:10:35',2090,'projects',NULL,1533,'Projects','P2000','Enable'),(1551,'2023-03-01 07:14:27','2023-03-01 07:14:27',4040,'applysequence',NULL,1542,'Apply Sequence','As3000','Enable'),(1552,'2023-06-05 14:14:21','2023-06-05 14:14:21',2000,'dash','dashboard',0,'dashboard','dashboard','Enable'),(1553,'2023-06-05 14:16:48','2023-06-17 03:53:20',1000,'DashboardTesting',NULL,1552,'dashboard1','dashboard','Enable'),(1554,'2023-06-11 10:55:12','2023-06-11 10:55:12',2000,'Dashtest',NULL,1552,'das2','2000','Enable'),(1555,'2023-10-10 12:50:55','2024-01-19 14:33:06',1000,'project','flag',0,'project','project','Enable'),(1556,'2023-10-11 11:03:39','2023-10-11 11:03:39',4000,'superadmin','King',0,'Super Admin','Super Admin','Enable'),(1557,'2023-10-11 11:04:17','2023-10-11 11:04:17',4100,'extension',NULL,1556,'Code Extension','CodeExtension','Enable'),(1558,'2023-10-25 16:31:26','2023-10-25 16:31:26',5000,'test','tools',0,'Vault','Vault','Enable'),(1559,'2023-10-25 16:32:18','2023-10-25 16:32:18',5001,'Access_Point',NULL,1558,'Access Point','Access Point','Enable'),(1560,'2023-10-25 17:34:39','2023-10-25 17:34:39',6000,'crm','employee-group',0,'CRM','crm','Enable'),(1561,'2023-10-25 17:35:21','2023-10-25 17:35:21',6001,'Calls',NULL,1560,'Calls','Calls','Enable'),(1562,'2023-10-25 17:35:43','2023-10-25 17:35:43',6002,'Campaign',NULL,1560,'Campaign','Campaign','Enable'),(1563,'2023-10-25 17:35:57','2023-10-25 17:35:57',6003,'Company',NULL,1560,'Company','Company','Enable'),(1564,'2023-10-25 17:36:16','2023-10-25 17:36:16',6004,'Contact',NULL,1560,'Contact','Contact','Enable'),(1565,'2023-10-25 17:36:32','2023-10-25 17:36:32',6005,'Dealer',NULL,1560,'Dealer','Dealer','Enable'),(1566,'2023-10-25 17:36:48','2023-10-25 17:36:48',6006,'Deals',NULL,1560,'Deals','Deals','Enable'),(1567,'2023-10-25 17:37:00','2023-10-25 17:37:00',6007,'Documents',NULL,1560,'Documents','Documents','Enable'),(1568,'2023-10-25 17:37:25','2023-10-25 17:37:25',6008,'Leads',NULL,1560,'Leads','Leads','Enable'),(1569,'2023-10-25 17:37:41','2023-10-25 17:37:41',6009,'Meetings',NULL,1560,'Meetings','Meetings','Enable'),(1570,'2023-10-25 17:39:36','2023-10-25 17:39:36',6010,'Product',NULL,1560,'Product','Product','Enable'),(1571,'2023-10-25 17:39:51','2023-10-25 17:39:51',6011,'Tasks',NULL,1560,'Tasks','Tasks','Enable'),(1572,'2023-11-01 18:43:22','2023-11-03 11:42:38',4000,'SequenceGenerator',NULL,1116,'Document Sequence','Document Sequrnce','Enable'),(1574,'2023-12-04 11:53:00','2023-12-04 18:49:58',1000,'Teacher_Registration',NULL,1573,'Teacher Registration','Teacher','Enable'),(1575,'2023-12-04 11:53:15','2023-12-04 18:50:25',1000,'Student_registration',NULL,1573,'Student Registration','Student','Enable'),(1576,'2023-12-04 18:50:53','2023-12-04 18:50:53',3000,'Courses_name',NULL,1573,'course','course','Enable'),(1577,'2024-01-27 15:39:15','2024-03-20 19:46:19',7000,'Transactions','King',0,'Transactions','Transactions','Enable'),(1579,'2024-02-01 16:26:28','2024-02-07 16:03:10',4300,'apiregistery',NULL,1556,'Api Registery','Api Registery','Enable'),(1580,'2024-02-02 10:05:03','2024-02-02 10:05:03',4200,'tokenregistery',NULL,1556,'Token Registery','Token Registery','Enable'),(1582,'2024-02-03 10:25:51','2024-02-03 10:25:51',8000,'test','test',0,'test','test','Enable'),(1588,'2024-02-07 16:03:53','2024-02-07 16:03:53',4400,'survey-form',NULL,1556,'Survey Form','SurveyForm','Enable'),(1593,'2024-02-24 15:02:22','2024-02-24 15:02:22',4500,'datamanage','data-cluster',0,'Data Management','DataManagement','Enable'),(1594,'2024-02-24 15:03:01','2024-02-24 15:03:01',4501,'datamanagement',NULL,1593,'Data Management','DataManagement','Enable'),(1595,'2024-02-24 15:03:34','2024-02-24 15:03:34',4502,'validationrule',NULL,1593,'Validaiton Rule','ValidaitonRule','Enable'),(1596,'2024-02-24 15:03:58','2024-02-24 15:03:58',4503,'mappingrule',NULL,1593,'Mapping Rule','MappingRule','Enable'),(1601,'2024-03-20 19:46:01','2024-03-20 19:46:37',9000,'Masters','data-cluster',0,'Masters','Masters','Enable');\n" + + "/*!40000 ALTER TABLE `sec_menu_det` ENABLE KEYS */;\n" + "\n" + "\n" + "\n" + + "/*!40000 ALTER TABLE `sec_user_group` DISABLE KEYS */;\n" + + "INSERT INTO `sec_user_group` VALUES (1,NULL,NULL,'add',30,'sysadmin','E',NULL,'2023-03-01 05:54:10'),(41,NULL,'2023-02-28 13:05:54','check',20,'users','Disable',NULL,'2023-02-28 13:30:14');\n" + + "/*!40000 ALTER TABLE `sec_user_group` ENABLE KEYS */;\n" + "\n" + "\n" + "\n" + + "DROP TABLE IF EXISTS `sec_user_group_id`;\n" + + "/*!40101 SET @saved_cs_client = @@character_set_client */;\n" + + "/*!50503 SET character_set_client = utf8mb4 */;\n" + "CREATE TABLE `sec_user_group_id` (\n" + + " `next_val` bigint DEFAULT NULL\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;\n" + + "/*!40101 SET character_set_client = @saved_cs_client */;\n" + "\n" + "\n" + "\n" + + "/*!40000 ALTER TABLE `sec_user_group_id` DISABLE KEYS */;\n" + + "INSERT INTO `sec_user_group_id` VALUES (59),(59),(40),(40),(40),(40),(40),(40);\n" + + "/*!40000 ALTER TABLE `sec_user_group_id` ENABLE KEYS */;\n" + "\n" + "\n" + "\n" + + "/*!40000 ALTER TABLE `sys_accounts` DISABLE KEYS */;\n" + + "INSERT INTO `sys_accounts` VALUES (1,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL);\n" + + "/*!40000 ALTER TABLE `sys_accounts` ENABLE KEYS */;\n" + "\n" + "\n" + + "/*!40000 ALTER TABLE `sec_users` DISABLE KEYS */;\n" + + "INSERT INTO `sec_users` (`user_id`, `is_complete`, `about`, `accesstype`, `active`, `change_passw`, `checknumber`, `country`, `createby`, `createdate`, `customer_id`, `days_mth`, `dep_string`, `email`, `expiry_date`, `first_login`, `full_name`, `is_blocked`, `lang_code`, `last_pwd_changed_date`, `mob_no`, `no_days_mth`, `notification`, `password1`, `password2`, `password3`, `password4`, `photo`, `photo_name`, `provider`, `pwd_changed_cnt`, `random_no`, `short_name`, `status`, `title`, `updateby`, `updatedate`, `user_passw`, `user_name`, `usr_grp_id`, `working`, `account_id`, `department_code`, `position_code`, `usr_grp`) VALUES (10007307, true, NULL, NULL, true, 'test3', NULL, NULL, NULL, '2024-09-03 19:32:38', NULL, NULL, NULL, 'sysadmin', NULL, NULL, 'sysadmin', false, NULL, '2024-09-03 19:32:38', '1234567890', NULL, NULL, 'admin123', NULL, NULL, NULL, NULL, NULL, NULL, 7, NULL, NULL, NULL, NULL, NULL, NULL, '$2b$10$8iFnL/cKTTmclSD1BZh8UeP0ZKKEzZ2hbTsrRcgy3kMinDRdxN7xe', 'sysadmin', NULL, NULL, 1, NULL, NULL, 1);\n" + + "/*!40000 ALTER TABLE `sec_users` ENABLE KEYS */;\n" + "\n" + "\n" + "\n" + + "DROP TABLE IF EXISTS `sec_user_sessions`;\n" + + "/*!40101 SET @saved_cs_client = @@character_set_client */;\n" + + "/*!50503 SET character_set_client = utf8mb4 */;\n" + "CREATE TABLE `sec_user_sessions` (\n" + + " `client_ip` varchar(255) NOT NULL,\n" + " `session_id` varchar(255) NOT NULL,\n" + + " `user_id` bigint NOT NULL,\n" + " `last_access_date` datetime DEFAULT NULL,\n" + + " `logintime` datetime DEFAULT NULL,\n" + " `logouttime` datetime DEFAULT NULL,\n" + + " `macid` varchar(255) DEFAULT NULL,\n" + " PRIMARY KEY (`client_ip`,`session_id`,`user_id`),\n" + + " KEY `FKp9jm02b501ugvjvfhas5sskfq` (`user_id`),\n" + + " CONSTRAINT `FKp9jm02b501ugvjvfhas5sskfq` FOREIGN KEY (`user_id`) REFERENCES `sec_users` (`user_id`)\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;\n" + + "/*!40101 SET character_set_client = @saved_cs_client */;\n" + "\n" + "\n" + "\n" + + "/*!40000 ALTER TABLE `sec_user_sessions` DISABLE KEYS */;\n" + + "/*!40000 ALTER TABLE `sec_user_sessions` ENABLE KEYS */;\n" + "\n" + "\n" + "\n" + "\n" + + "DROP TABLE IF EXISTS `sec_grp_menu_access`;\n" + + "/*!40101 SET @saved_cs_client = @@character_set_client */;\n" + + "/*!50503 SET character_set_client = utf8mb4 */;\n" + "CREATE TABLE `sec_grp_menu_access` (\n" + + " `menu_item_id` bigint NOT NULL,\n" + " `usr_grp` bigint NOT NULL,\n" + + " `createby` varchar(255) DEFAULT NULL,\n" + " `created_at` datetime DEFAULT NULL,\n" + + " `isdisable` varchar(255) DEFAULT NULL,\n" + " `item_seq` bigint DEFAULT NULL,\n" + + " `m_create` varchar(255) DEFAULT NULL,\n" + " `m_delete` varchar(255) DEFAULT NULL,\n" + + " `m_edit` varchar(255) DEFAULT NULL,\n" + " `m_query` varchar(255) DEFAULT NULL,\n" + + " `m_visible` varchar(255) DEFAULT NULL,\n" + + " `main_menu_action_name` varchar(255) DEFAULT NULL,\n" + + " `main_menu_icon_name` varchar(255) DEFAULT NULL,\n" + " `menu_id` bigint DEFAULT NULL,\n" + + " `menu_item_desc` varchar(255) DEFAULT NULL,\n" + " `mexport` varchar(255) DEFAULT NULL,\n" + + " `module_name` varchar(255) DEFAULT NULL,\n" + " `status` varchar(255) DEFAULT NULL,\n" + + " `updateby` varchar(255) DEFAULT NULL,\n" + " `updated_at` datetime DEFAULT NULL,\n" + + " PRIMARY KEY (`menu_item_id`,`usr_grp`),\n" + " KEY `FKtj8mtsrhc4m4acbrvjnnyvglm` (`usr_grp`),\n" + + " CONSTRAINT `FKmkev6w9umgp6fg2afatibhq1x` FOREIGN KEY (`menu_item_id`) REFERENCES `sec_menu_det` (`menu_item_id`),\n" + + " CONSTRAINT `FKtj8mtsrhc4m4acbrvjnnyvglm` FOREIGN KEY (`usr_grp`) REFERENCES `sec_user_group` (`usr_grp`) ON DELETE CASCADE\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;\n" + + "/*!40101 SET character_set_client = @saved_cs_client */;\n" + "\n" + "\n" + + "/*!40000 ALTER TABLE `sec_grp_menu_access` DISABLE KEYS */;\n" + + "INSERT INTO `sec_grp_menu_access` VALUES (1116,41,NULL,'2024-01-17 18:56:05','true',3000,'true','true','true','true','true','security','lock',0,'Security','true','sec3000','Enable',NULL,'2024-01-17 18:56:05'),(1117,41,NULL,'2024-01-17 18:56:07','true',3010,'true','true','true','true','true','usermaintance',NULL,1116,'User Maintance','true','U1000','Enable',NULL,'2024-01-17 18:56:07'),(1118,41,NULL,'2024-01-17 18:56:11','true',3020,'true','true','true','true','true','usergrpmaintance',NULL,1116,'User Group Maintance','true','U2000','Enable',NULL,'2024-01-17 18:56:11'),(1523,41,NULL,'2024-01-17 18:56:14','true',3030,'true','true','true','true','true','menumaintance',NULL,1116,'Menu Maintance','true','M3000','Enable',NULL,'2024-01-17 18:56:14'),(1524,41,NULL,'2024-01-17 18:56:16','true',3040,'true','true','true','true','true','menuaccess',NULL,1116,'Menu Access Control','true','MA4000','Enable',NULL,'2024-01-17 18:56:16'),(1525,41,NULL,'2024-01-17 18:56:18','true',3050,'true','true','true','true','true','systemparameters',NULL,1116,'System Parameters','true','SP5000','Enable',NULL,'2024-01-17 18:56:18'),(1526,41,NULL,'2024-01-17 18:56:19','true',3060,'true','true','true','true','true','accesstype',NULL,1116,'Access Type','true','A6000','Enable',NULL,'2024-01-17 18:56:19'),(1572,41,NULL,'2024-01-17 18:56:21','true',4000,'true','true','true','true','true','SequenceGenerator',NULL,1116,'Document Sequence','true','Document Sequrnce','Enable',NULL,'2024-01-17 18:56:21'),(1577,1,NULL,'2024-01-27 15:40:46','true',7000,'true','true','true','true','true','Transactions','King',0,'Transactions','true','Transactions','Enable',NULL,'2024-01-27 15:40:46'),(1601,1,NULL,'2024-03-20 20:06:50','true',9000,'true','true','true','true','true','Masters','data-cluster',0,'Masters','true','Masters','Enable',NULL,'2024-03-20 20:06:50');\n" + + "/*!40000 ALTER TABLE `sec_grp_menu_access` ENABLE KEYS */;\n" + "\n" + "\n" + "\n" + "\n" + + "DROP TABLE IF EXISTS `sec_users_sequencs`;\n" + + "/*!40101 SET @saved_cs_client = @@character_set_client */;\n" + + "/*!50503 SET character_set_client = utf8mb4 */;\n" + "CREATE TABLE `sec_users_sequencs` (\n" + + " `next_val` bigint DEFAULT NULL\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;\n" + + "/*!40101 SET character_set_client = @saved_cs_client */;\n" + "\n" + "\n" + "\n" + + "/*!40000 ALTER TABLE `sec_users_sequencs` DISABLE KEYS */;\n" + + "INSERT INTO `sec_users_sequencs` VALUES (10007321),(10007300),(10007300),(10007300),(10007300),(10007300),(10007300),(10007300);\n" + + "/*!40000 ALTER TABLE `sec_users_sequencs` ENABLE KEYS */;\n" + "\n" + "\n" + "\n" + "\n" + + "DROP TABLE IF EXISTS `sec_workspace`;\n" + + "/*!40101 SET @saved_cs_client = @@character_set_client */;\n" + + "/*!50503 SET character_set_client = utf8mb4 */;\n" + "CREATE TABLE `sec_workspace` (\n" + + " `id` int NOT NULL AUTO_INCREMENT,\n" + " `account_id` bigint DEFAULT NULL,\n" + + " `created_at` datetime NOT NULL,\n" + " `created_by` bigint DEFAULT NULL,\n" + + " `updated_at` datetime NOT NULL,\n" + " `updated_by` bigint DEFAULT NULL,\n" + + " `is_active` varchar(255) DEFAULT NULL,\n" + " `description` varchar(255) DEFAULT NULL,\n" + + " `is_default` varchar(255) DEFAULT NULL,\n" + " `name` varchar(255) DEFAULT NULL,\n" + + " `owner_id` varchar(255) DEFAULT NULL,\n" + " `project_id` int DEFAULT NULL,\n" + + " PRIMARY KEY (`id`)\n" + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;\n" + + "/*!40101 SET character_set_client = @saved_cs_client */;\n" + "\n" + "\n" + "\n" + + "DROP TABLE IF EXISTS `sec_workspace_users`;\n" + + "/*!40101 SET @saved_cs_client = @@character_set_client */;\n" + + "/*!50503 SET character_set_client = utf8mb4 */;\n" + "CREATE TABLE `sec_workspace_users` (\n" + + " `id` bigint NOT NULL AUTO_INCREMENT,\n" + " `account_id` bigint DEFAULT NULL,\n" + + " `created_at` datetime NOT NULL,\n" + " `created_by` bigint DEFAULT NULL,\n" + + " `updated_at` datetime NOT NULL,\n" + " `updated_by` bigint DEFAULT NULL,\n" + + " `project_id` int DEFAULT NULL,\n" + " `user_id` bigint DEFAULT NULL,\n" + + " `user_name` varchar(255) DEFAULT NULL,\n" + " `user_role` varchar(255) DEFAULT NULL,\n" + + " `worksapce_id` int NOT NULL,\n" + " PRIMARY KEY (`id`)\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;\n" + + "/*!40101 SET character_set_client = @saved_cs_client */;\n" + "\n" + "\n" + "\n" + + "/*!40000 ALTER TABLE `secuser_roles` DISABLE KEYS */;\n" + + "INSERT INTO `secuser_roles` VALUES (10007307,1);\n" + + "/*!40000 ALTER TABLE `secuser_roles` ENABLE KEYS */;\n" + "\n" + "\n" + "\n" + + "DROP TABLE IF EXISTS `sys_accounts_users`;\n" + + "/*!40101 SET @saved_cs_client = @@character_set_client */;\n" + + "/*!50503 SET character_set_client = utf8mb4 */;\n" + "CREATE TABLE `sys_accounts_users` (\n" + + " `sys_accounts_id` bigint NOT NULL,\n" + " `users_user_id` bigint NOT NULL,\n" + + " UNIQUE KEY `UK_8dxppqkque5ehofdy83bntgks` (`users_user_id`),\n" + + " KEY `FKs9o1t4hyiyq2y330p0d2evf2a` (`sys_accounts_id`),\n" + + " CONSTRAINT `FKdkc60wy8v55ylspegueinngjx` FOREIGN KEY (`users_user_id`) REFERENCES `sec_users` (`user_id`),\n" + + " CONSTRAINT `FKs9o1t4hyiyq2y330p0d2evf2a` FOREIGN KEY (`sys_accounts_id`) REFERENCES `sys_accounts` (`id`)\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;\n" + + "/*!40101 SET character_set_client = @saved_cs_client */;\n" + "\n" + "\n" + "\n" + + "/*!40000 ALTER TABLE `sys_accounts_users` DISABLE KEYS */;\n" + + "/*!40000 ALTER TABLE `sys_accounts_users` ENABLE KEYS */;\n" + "\n" + "\n" + "\n" + + "DROP TABLE IF EXISTS `user_list`;\n" + + "/*!40101 SET @saved_cs_client = @@character_set_client */;\n" + + "/*!50503 SET character_set_client = utf8mb4 */;\n" + "CREATE TABLE `user_list` (\n" + + " `id` bigint NOT NULL,\n" + " `about` varchar(255) DEFAULT NULL,\n" + + " `account_id` varchar(255) DEFAULT NULL,\n" + " `address1` varchar(255) DEFAULT NULL,\n" + + " `address2` varchar(255) DEFAULT NULL,\n" + " `checknumber` varchar(255) DEFAULT NULL,\n" + + " `company` varchar(255) DEFAULT NULL,\n" + " `country` varchar(255) DEFAULT NULL,\n" + + " `created_at` varchar(255) DEFAULT NULL,\n" + " `created_by` varchar(255) DEFAULT NULL,\n" + + " `default_customer_id` varchar(255) DEFAULT NULL,\n" + " `department` varchar(255) DEFAULT NULL,\n" + + " `dob` varchar(255) DEFAULT NULL,\n" + " `email` varchar(255) DEFAULT NULL,\n" + + " `enable_beta_testing` bit(1) NOT NULL,\n" + " `enable_renewal` bit(1) NOT NULL,\n" + + " `firstname` varchar(255) DEFAULT NULL,\n" + " `fullname` varchar(255) DEFAULT NULL,\n" + + " `gender` varchar(255) DEFAULT NULL,\n" + " `is_active` bit(1) NOT NULL,\n" + + " `is_blocked` bit(1) NOT NULL,\n" + " `lastname` varchar(255) DEFAULT NULL,\n" + + " `managing_work` varchar(255) DEFAULT NULL,\n" + " `menu_group` int NOT NULL,\n" + + " `name` varchar(255) DEFAULT NULL,\n" + " `other_roles` varchar(255) DEFAULT NULL,\n" + + " `pancard` varchar(255) DEFAULT NULL,\n" + " `password` varchar(255) DEFAULT NULL,\n" + + " `phone` varchar(255) DEFAULT NULL,\n" + " `photos` varchar(255) DEFAULT NULL,\n" + + " `postal` varchar(255) DEFAULT NULL,\n" + " `role` varchar(255) DEFAULT NULL,\n" + + " `secret_answer` varchar(255) DEFAULT NULL,\n" + " `secret_question` varchar(255) DEFAULT NULL,\n" + + " `security_provider_id` varchar(255) DEFAULT NULL,\n" + " `status` varchar(255) DEFAULT NULL,\n" + + " `updated_at` varchar(255) DEFAULT NULL,\n" + " `updated_by` varchar(255) DEFAULT NULL,\n" + + " `user_id` varchar(255) DEFAULT NULL,\n" + " `username` varchar(255) DEFAULT NULL,\n" + + " `working` varchar(255) DEFAULT NULL,\n" + " PRIMARY KEY (`id`)\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;\n" + + "/*!40101 SET character_set_client = @saved_cs_client */;\n" + "\n" + "\n" + "\n" + + "/*!40000 ALTER TABLE `user_list` DISABLE KEYS */;\n" + + "/*!40000 ALTER TABLE `user_list` ENABLE KEYS */;\n" + "\n" + "\n" + "\n" + "\n" + + "DROP TABLE IF EXISTS `userloginhist`;\n" + + "/*!40101 SET @saved_cs_client = @@character_set_client */;\n" + + "/*!50503 SET character_set_client = utf8mb4 */;\n" + "CREATE TABLE `userloginhist` (\n" + + " `create_by` varchar(255) DEFAULT NULL,\n" + " `create_date` datetime DEFAULT NULL,\n" + + " `expiry_reminder` bigint DEFAULT NULL,\n" + " `last_login_date` datetime DEFAULT NULL,\n" + + " `last_password_chg_date` datetime DEFAULT NULL,\n" + + " `last_password_fail_no` bigint DEFAULT NULL,\n" + " `update_by` varchar(255) DEFAULT NULL,\n" + + " `update_date` datetime DEFAULT NULL,\n" + " `user_id` bigint NOT NULL,\n" + + " PRIMARY KEY (`user_id`),\n" + + " CONSTRAINT `FK2a2xifc15js82mjl20honhdfr` FOREIGN KEY (`user_id`) REFERENCES `sec_users` (`user_id`)\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;\n" + + "/*!40101 SET character_set_client = @saved_cs_client */;\n" + "\n" + "\n" + "\n" + + "DROP TABLE IF EXISTS `userpasswlog`;\n" + + "/*!40101 SET @saved_cs_client = @@character_set_client */;\n" + + "/*!50503 SET character_set_client = utf8mb4 */;\n" + "CREATE TABLE `userpasswlog` (\n" + + " `create_date` datetime NOT NULL,\n" + " `user_id` bigint NOT NULL,\n" + + " `user_passw` varchar(255) NOT NULL,\n" + " `create_by` varchar(255) DEFAULT NULL,\n" + + " `update_by` varchar(255) DEFAULT NULL,\n" + " `update_date` datetime DEFAULT NULL,\n" + + " PRIMARY KEY (`create_date`,`user_id`,`user_passw`),\n" + + " KEY `FKpd759n25auh4bw5ri0xikikia` (`user_id`),\n" + + " CONSTRAINT `FKpd759n25auh4bw5ri0xikikia` FOREIGN KEY (`user_id`) REFERENCES `sec_users` (`user_id`)\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;\n" + + "/*!40101 SET character_set_client = @saved_cs_client */;\n" + "\n" + "\n" + "\n" + + "/*!40000 ALTER TABLE `userpasswlog` DISABLE KEYS */;\n" + + "/*!40000 ALTER TABLE `userpasswlog` ENABLE KEYS */;\n" + "\n" + "\n" + "\n" + "\n" + "\n" + + "DROP TABLE IF EXISTS `dashboard`;\n" + + "/*!40101 SET @saved_cs_client = @@character_set_client */;\n" + + "/*!50503 SET character_set_client = utf8mb4 */;\n" + "CREATE TABLE `dashboard` (\n" + + " `id` int NOT NULL AUTO_INCREMENT,\n" + " `account_id` bigint DEFAULT NULL,\n" + + " `created_at` datetime NOT NULL,\n" + " `created_by` bigint DEFAULT NULL,\n" + + " `updated_at` datetime NOT NULL,\n" + " `updated_by` bigint DEFAULT NULL,\n" + + " `extn1` varchar(255) DEFAULT NULL,\n" + " `extn10` varchar(255) DEFAULT NULL,\n" + + " `extn11` varchar(255) DEFAULT NULL,\n" + " `extn12` varchar(255) DEFAULT NULL,\n" + + " `extn13` varchar(255) DEFAULT NULL,\n" + " `extn14` varchar(255) DEFAULT NULL,\n" + + " `extn15` varchar(255) DEFAULT NULL,\n" + " `extn2` varchar(255) DEFAULT NULL,\n" + + " `extn3` varchar(255) DEFAULT NULL,\n" + " `extn4` varchar(255) DEFAULT NULL,\n" + + " `extn5` varchar(255) DEFAULT NULL,\n" + " `extn6` varchar(255) DEFAULT NULL,\n" + + " `extn7` varchar(255) DEFAULT NULL,\n" + " `extn8` varchar(255) DEFAULT NULL,\n" + + " `extn9` varchar(255) DEFAULT NULL,\n" + " `isdashboard` bit(1) NOT NULL,\n" + + " `model` varchar(5000) DEFAULT NULL,\n" + " `name` varchar(255) DEFAULT NULL,\n" + + " PRIMARY KEY (`id`)\n" + + ") ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;\n" + + "/*!40101 SET character_set_client = @saved_cs_client */;\n" + "\n" + "\n" + "\n" + + "/*!40000 ALTER TABLE `dashboard` DISABLE KEYS */;\n" + + "INSERT INTO `dashboard` VALUES (1,NULL,'2023-12-04 12:11:04',NULL,'2023-12-04 13:05:56',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,_binary '','[{\\\"charttitle\\\":\\\"index1\\\",\\\"type\\\":\\\"Index\\\",\\\"cols\\\":5,\\\"rows\\\":5,\\\"x\\\":0,\\\"y\\\":0,\\\"chartid\\\":3,\\\"component\\\":\\\"Index\\\",\\\"name\\\":\\\"Index\\\",\\\"slices\\\":false,\\\"donut\\\":false,\\\"chartcolor\\\":false,\\\"chartlegend\\\":false,\\\"showlabel\\\":false,\\\"Read Only\\\":false,\\\"selectedIcon\\\":\\\"IconData(U+0EE2A)\\\",\\\"charturl\\\":\\\"\\\",\\\"chartparameter\\\":\\\"\\\",\\\"datasource\\\":\\\"Default\\\"},{\\\"charttitle\\\":\\\"Index2\\\",\\\"type\\\":\\\"Index\\\",\\\"cols\\\":5,\\\"rows\\\":5,\\\"x\\\":0,\\\"y\\\":0,\\\"chartid\\\":4,\\\"component\\\":\\\"Index\\\",\\\"name\\\":\\\"Index\\\"},{\\\"charttitle\\\":\\\"Index3\\\",\\\"type\\\":\\\"Index\\\",\\\"cols\\\":5,\\\"rows\\\":5,\\\"x\\\":0,\\\"y\\\":0,\\\"chartid\\\":5,\\\"component\\\":\\\"Index\\\",\\\"name\\\":\\\"Index\\\"},{\\\"charttitle\\\":\\\"Doughnut Chart\\\",\\\"type\\\":\\\"Doughnut Chart\\\",\\\"cols\\\":5,\\\"rows\\\":5,\\\"x\\\":0,\\\"y\\\":0,\\\"chartid\\\":6,\\\"component\\\":\\\"Doughnut Chart\\\",\\\"name\\\":\\\"Doughnut Chart\\\",\\\"slices\\\":false,\\\"donut\\\":false,\\\"chartcolor\\\":false,\\\"chartlegend\\\":false,\\\"showlabel\\\":false,\\\"Read Only\\\":false,\\\"charturl\\\":\\\"http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3\\\",\\\"chartparameter\\\":\\\"\\\",\\\"datasource\\\":\\\"Default\\\",\\\"selectedIcon\\\":\\\"IconData(U+0EE29)\\\"},{\\\"cols\\\": 4, \\\"rows\\\": 5, \\\"x\\\": 0, \\\"y\\\": 0, \\\"chartid\\\": 1, \\\"name\\\": \\\"Line Chart\\\", \\\"fieldName\\\": null, \\\"showlabel\\\": true, \\\"chartcolor\\\": null, \\\"chartlegend\\\": true, \\\"charturl\\\": \\\"http://43.205.154.152:30179/entityBuilder/Gaurav_testing\\\",\\\"xAxis\\\": \\\"name\\\",\\\"donut\\\": null, \\\"chartparameter\\\": null, \\\"datastore\\\": null,\\\"datasource\\\": null,\\\"id\\\": null,\\\"slices\\\": null,\\\"yAxis\\\": [\\\"pincode\\\"],\\\"charttitle\\\": \\\"Live Details\\\"}]','myfirstdashboard');\n" + + "/*!40000 ALTER TABLE `dashboard` ENABLE KEYS */;\n" + "\n" + "\n" + "\n" + + "DROP TABLE IF EXISTS `dashboard_builder_t`;\n" + + "/*!40101 SET @saved_cs_client = @@character_set_client */;\n" + + "/*!50503 SET character_set_client = utf8mb4 */;\n" + "CREATE TABLE `dashboard_builder_t` (\n" + + " `id` bigint NOT NULL AUTO_INCREMENT,\n" + " `dashboardname` varchar(255) DEFAULT NULL,\n" + + " PRIMARY KEY (`id`)\n" + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;\n" + + "/*!40101 SET character_set_client = @saved_cs_client */;\n" + "\n" + "\n" + "\n" + + "/*!40000 ALTER TABLE `dashboard_builder_t` DISABLE KEYS */;\n" + + "/*!40000 ALTER TABLE `dashboard_builder_t` ENABLE KEYS */;\n" + "\n" + "\n" + "\n" + + "DROP TABLE IF EXISTS `dashboard_schedule_t`;\n" + + "/*!40101 SET @saved_cs_client = @@character_set_client */;\n" + + "/*!50503 SET character_set_client = utf8mb4 */;\n" + "CREATE TABLE `dashboard_schedule_t` (\n" + + " `id` bigint NOT NULL AUTO_INCREMENT,\n" + " `attachment` varchar(255) DEFAULT NULL,\n" + + " `cc` varchar(255) DEFAULT NULL,\n" + " `cron` varchar(255) DEFAULT NULL,\n" + + " `end_time` datetime DEFAULT NULL,\n" + " `every` varchar(255) DEFAULT NULL,\n" + + " `gateway` varchar(255) DEFAULT NULL,\n" + " `gatewaydone` varchar(255) DEFAULT NULL,\n" + + " `replacement_string` varchar(255) DEFAULT NULL,\n" + " `send_to` varchar(255) DEFAULT NULL,\n" + + " `start_time` datetime DEFAULT NULL,\n" + " `template` varchar(255) DEFAULT NULL,\n" + + " `type` varchar(255) DEFAULT NULL,\n" + " PRIMARY KEY (`id`)\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;\n" + + "/*!40101 SET character_set_client = @saved_cs_client */;\n" + "\n" + "\n" + "\n" + + "/*!40000 ALTER TABLE `dashboard_schedule_t` DISABLE KEYS */;\n" + + "/*!40000 ALTER TABLE `dashboard_schedule_t` ENABLE KEYS */;\n" + "\n" + "\n" + "\n" + + "DROP TABLE IF EXISTS `dashboardaxis`;\n" + + "/*!40101 SET @saved_cs_client = @@character_set_client */;\n" + + "/*!50503 SET character_set_client = utf8mb4 */;\n" + "CREATE TABLE `dashboardaxis` (\n" + + " `id` bigint NOT NULL AUTO_INCREMENT,\n" + " `april` varchar(255) DEFAULT NULL,\n" + + " `feb` varchar(255) DEFAULT NULL,\n" + " `jan` varchar(255) DEFAULT NULL,\n" + + " `march` varchar(255) DEFAULT NULL,\n" + " `may` varchar(255) DEFAULT NULL,\n" + + " PRIMARY KEY (`id`)\n" + + ") ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;\n" + + "/*!40101 SET character_set_client = @saved_cs_client */;\n" + "\n" + "\n" + "\n" + + "/*!40000 ALTER TABLE `dashboardaxis` DISABLE KEYS */;\n" + + "INSERT INTO `dashboardaxis` VALUES (1,'5','10','25','3',NULL),(3,'5000','15000','10000','30000',NULL),(4,'5000','15000','10000','30000',NULL),(5,'5000','15000','5','30000',NULL),(6,'5000','15000','10000','30000','2000'),(7,'23','20','25','30','20'),(8,'23','20','25','30','99'),(9,'23','20','25','30','20');\n" + + "/*!40000 ALTER TABLE `dashboardaxis` ENABLE KEYS */;\n" + "\n" + "\n" + "\n" + + "/*!40000 ALTER TABLE `system_paramaters` DISABLE KEYS */;\n" + + "INSERT INTO `system_paramaters` VALUES (1,'test1',0,NULL,NULL,NULL,0,NULL,NULL,NULL,0,_binary '',NULL,0,0,0,NULL,NULL,NULL,0,NULL,0,0,0,NULL,NULL,NULL,NULL,0,0);\n" + + "/*!40000 ALTER TABLE `system_paramaters` ENABLE KEYS */;\n" + "\n" + "\n" + + "DROP TABLE IF EXISTS `sys_param_upload`;\n" + + "/*!40101 SET @saved_cs_client = @@character_set_client */;\n" + + "/*!50503 SET character_set_client = utf8mb4 */;\n" + "CREATE TABLE `sys_param_upload` (\n" + + " `attachment_id` int NOT NULL,\n" + " `attachment` longblob,\n" + + " `attachment_filename` varchar(255) DEFAULT NULL,\n" + + " `attachment_type` varchar(255) DEFAULT NULL,\n" + " `cancel_status` varchar(255) NOT NULL,\n" + + " `external_flag` varchar(255) DEFAULT NULL,\n" + " `updated_by` varchar(255) DEFAULT NULL,\n" + + " `sys_param_entity_id` int DEFAULT NULL,\n" + " PRIMARY KEY (`attachment_id`),\n" + + " KEY `FKl1h7bcgpr1y10ydiqw849vq99` (`sys_param_entity_id`),\n" + + " CONSTRAINT `FKl1h7bcgpr1y10ydiqw849vq99` FOREIGN KEY (`sys_param_entity_id`) REFERENCES `system_paramaters` (`id`)\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;\n" + + "/*!40101 SET character_set_client = @saved_cs_client */;\n" + "\n" + "\n" + "\n" + + "/*!40000 ALTER TABLE `sys_param_upload` DISABLE KEYS */;\n" + + "/*!40000 ALTER TABLE `sys_param_upload` ENABLE KEYS */;\n" + "\n" + "\n" + + "-- Dump completed on 2024-01-27 15:45:01"; + return sql; + + } + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Builders/Services/SqlDumpExecutor.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Builders/Services/SqlDumpExecutor.java new file mode 100644 index 0000000..c9f2cba --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Builders/Services/SqlDumpExecutor.java @@ -0,0 +1,130 @@ +package com.realnet.Builders.Services; + +import java.sql.Connection; +import java.sql.SQLException; +import java.sql.Statement; + +import org.springframework.stereotype.Service; + +@Service +public class SqlDumpExecutor { + + /** + * Executes a massive SQL dump safely. + * + * @param connection JDBC connection + * @param sqlDump Full SQL dump string from getSql() + */ + public void executeDump(Connection connection, String sqlDump) { + Statement stmt = null; + try { + stmt = connection.createStatement(); + connection.setAutoCommit(false); + + // Remove MySQL backticks + sqlDump = sqlDump.replaceAll("`", ""); + + // Remove table-level DEFAULT COLLATE or CHARSET + sqlDump = sqlDump.replaceAll("(?i)DEFAULT\\s+CHARSET=[^;\\n]+", ""); + sqlDump = sqlDump.replaceAll("(?i)COLLATE=[^;\\n]+", ""); + + // Convert data types + sqlDump = sqlDump.replaceAll("(?i)bigint", "INTEGER"); + sqlDump = sqlDump.replaceAll("(?i)int\\([0-9]+\\)", "INTEGER"); + sqlDump = sqlDump.replaceAll("(?i)varchar\\([0-9]+\\)", "TEXT"); + sqlDump = sqlDump.replaceAll("(?i)bit\\([0-9]+\\)", "INTEGER"); + sqlDump = sqlDump.replaceAll("(?i)longblob", "BLOB"); + + // Remove AUTO_INCREMENT (if any) + sqlDump = sqlDump.replaceAll("(?i)AUTO_INCREMENT", ""); + + // Remove MySQL-specific directives + sqlDump = sqlDump.replaceAll("(?i)SET\\s+[^;]+;", ""); + sqlDump = sqlDump.replaceAll("(?i)ENGINE=\\w+\\s*", ""); + sqlDump = sqlDump.replaceAll("(?i)AUTO_INCREMENT=\\d+", ""); + sqlDump = sqlDump.replaceAll("(?i)CHARSET=\\w+", ""); + + // Remove DEFAULT NULL (SQLite allows NULL by default) + sqlDump = sqlDump.replaceAll("(?i)DEFAULT NULL", ""); + + // Convert UNIQUE KEY to UNIQUE + sqlDump = sqlDump.replaceAll("(?i)UNIQUE KEY [^\\(]+\\(", "UNIQUE("); + + // Remove double commas in CREATE TABLE (,,) + sqlDump = sqlDump.replaceAll(",\\s*,", ","); + + // Remove _binary prefix in INSERT statements + sqlDump = sqlDump.replaceAll("(?i)_binary\\s+'", "'"); + + String delimiter = ";"; // default delimiter + StringBuilder sqlStatement = new StringBuilder(); + + String[] lines = sqlDump.split("\\r?\\n"); + for (String line : lines) { + line = line.trim(); + + // Skip empty lines and comments + if (line.isEmpty() || line.startsWith("--") || line.startsWith("//") || line.startsWith("/*")) { + continue; + } + + // Detect DELIMITER changes (optional, mostly MySQL) + if (line.startsWith("DELIMITER ")) { + delimiter = line.substring("DELIMITER ".length()).trim(); + continue; + } + + // Remove MySQL-specific comments like /*! ... */ + line = line.replaceAll("/\\*!.*?\\*/", "").trim(); + if (line.isEmpty()) + continue; + + sqlStatement.append(line).append(" "); + + // Check if statement ends with current delimiter + if (sqlStatement.toString().trim().endsWith(delimiter)) { + String finalSql = sqlStatement.toString().trim(); + + // Remove the delimiter from the end + if (delimiter.length() > 0 && finalSql.endsWith(delimiter)) { + finalSql = finalSql.substring(0, finalSql.length() - delimiter.length()).trim(); + } + + try { + stmt.execute(finalSql); + } catch (SQLException e) { + System.err.println("Failed SQL: " + finalSql); + e.printStackTrace(); + } + + sqlStatement.setLength(0); // reset for next statement + } + } + + connection.commit(); + + } catch (Exception e) { + System.err.println("Error executing SQL dump: " + e.getMessage()); + e.printStackTrace(); + try { + connection.rollback(); + } catch (SQLException ex) { + System.err.println("Rollback failed: " + ex.getMessage()); + } + } finally { + if (stmt != null) { + try { + stmt.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + try { + connection.setAutoCommit(true); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Controllers/BulkUpload_Controller.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Controllers/BulkUpload_Controller.java new file mode 100644 index 0000000..2961b42 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Controllers/BulkUpload_Controller.java @@ -0,0 +1,43 @@ +package com.realnet.BulkUpload.Controllers; +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; + import org.springframework.web.bind.annotation.*; +import com.realnet.BulkUpload.Entity.BulkUpload_t; +import com.realnet.BulkUpload.Services.BulkUpload_Service; +@RequestMapping(value = "/BulkUpload") +@RestController +public class BulkUpload_Controller { + + @Autowired + private BulkUpload_Service Service; + + @PostMapping("/BulkUpload") + public BulkUpload_t Savedata(@RequestBody BulkUpload_t data) { + BulkUpload_t save = Service.Savedata(data) ; + return save; + } + + @GetMapping("/BulkUpload") + public List getdetails() { + List get = Service.getdetails(); + return get; +} + +@GetMapping("/BulkUpload/{id}") + public BulkUpload_t getdetailsbyId(@PathVariable Long id ) { + BulkUpload_t get = Service.getdetailsbyId(id); + return get; + + } +@DeleteMapping("/BulkUpload/{id}") + public void delete_by_id(@PathVariable Long id ) { + Service.delete_by_id(id); + + } + +@PutMapping("/BulkUpload/{id}") + public BulkUpload_t update(@RequestBody BulkUpload_t data,@PathVariable Long id ) { + BulkUpload_t update = Service.update(data,id); + return update; + } +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Controllers/DataImportController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Controllers/DataImportController.java new file mode 100644 index 0000000..912b1ee --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Controllers/DataImportController.java @@ -0,0 +1,1038 @@ +package com.realnet.BulkUpload.Controllers; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.sql.Timestamp; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.Date; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.Set; + +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.CellType; +import org.apache.poi.ss.usermodel.DateUtil; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.ss.usermodel.WorkbookFactory; +import org.apache.poi.xssf.usermodel.XSSFCell; +import org.apache.poi.xssf.usermodel.XSSFRow; +import org.apache.poi.xssf.usermodel.XSSFSheet; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.io.ByteArrayResource; +import org.springframework.core.io.InputStreamResource; +import org.springframework.core.io.Resource; +import org.springframework.dao.DataIntegrityViolationException; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.jdbc.core.JdbcTemplate; +//import org.springframework.mock.web.MockMultipartFile; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.realnet.fnd.response.EntityResponse; +import com.realnet.template.entity.TemplateFileUpload; +import com.realnet.template.repository.TemplatedataRepo; +import com.realnet.template.service.FileUploadService; + +@RestController +@RequestMapping("api/BulkUpload") +public class DataImportController { + @Autowired + private JdbcTemplate jdbcTemplate; + @Autowired + private TemplatedataRepo temprepo; + + @Autowired + private FileUploadService fileUploadService; + + @Autowired + private ObjectMapper objectMapper; + + @Value("${projectPath}") + private String projectPath; + + @PostMapping("/templatetojson/{id}") + public ResponseEntity convertFileToJson(@PathVariable Long id) throws IOException { + // Retrieve the TemplateFileUpload entity based on the provided ID + Optional fileUploadOptional = temprepo.findById(id); + + TemplateFileUpload fileUpload = fileUploadOptional.get(); + String location = fileUpload.getFile_location(); + String fileName = fileUpload.getFile_changed_name() + ".xlsx"; + String filePath = location + File.separator + "processingfile" + File.separator + fileName; + File file = new File(filePath); + if (!file.exists()) { + // Handle the case where the file is not found in the specified location + return ResponseEntity.notFound().build(); + } + + try (FileInputStream fis = new FileInputStream(file)) { + XSSFWorkbook workbook = new XSSFWorkbook(fis); + LinkedHashMap>> result = new LinkedHashMap<>(); + + for (int i = 0; i < workbook.getNumberOfSheets(); i++) { + XSSFSheet sheet = workbook.getSheetAt(i); + String sheetName = sheet.getSheetName(); + + List> sheetDataList = new ArrayList<>(); + + XSSFRow headerRow = sheet.getRow(0); + for (int rowNum = 1; rowNum <= sheet.getLastRowNum(); rowNum++) { + XSSFRow row = sheet.getRow(rowNum); + + if (row != null) { + LinkedHashMap rowData = new LinkedHashMap<>(); + for (int cellNum = 0; cellNum < row.getLastCellNum(); cellNum++) { + XSSFCell cell = row.getCell(cellNum); + if (cell != null) { + String columnName = headerRow.getCell(cellNum).getStringCellValue(); + String cellValue; + + // Check if the cell contains a date + if (cell.getCellType() == CellType.NUMERIC && DateUtil.isCellDateFormatted(cell)) { + // If it's a date, format it as "dd-MMM-yyyy" + Date dateCellValue = cell.getDateCellValue(); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + cellValue = dateFormat.format(dateCellValue); + } else { + // If not a date, convert the cell value to a string + cellValue = cell.toString(); + } + + rowData.put(columnName, cellValue); + } + } + sheetDataList.add(rowData); + } + } + + // Add the sheet data to the result LinkedHashMap with the sheet name as the key + result.put(sheetName, sheetDataList); + } + + return ResponseEntity.ok(result); + } catch (Exception e) { + // Handle any exceptions that may occur during processing + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error processing Excel file."); + } + } + + @GetMapping("/getHeaders/{id}") + public ResponseEntity getAllSheetHeaders(@PathVariable Long id) throws IOException { + Optional fileUploadOptional = temprepo.findById(id); + + TemplateFileUpload fileUpload = fileUploadOptional.orElse(null); + + if (fileUpload == null) { + return ResponseEntity.notFound().build(); + } + + String location = fileUpload.getFile_location(); + String fileName = fileUpload.getFile_changed_name() + ".xlsx"; + String filePath = location + File.separator + "processingfile" + File.separator + fileName; + File file = new File(filePath); + + if (!file.exists()) { + return ResponseEntity.notFound().build(); + } + + try (Workbook workbook = WorkbookFactory.create(file)) { + Map>> sheetHeadersMap = new LinkedHashMap<>(); + + for (int i = 0; i < workbook.getNumberOfSheets(); i++) { + Sheet sheet = workbook.getSheetAt(i); + List> sheetHeaders = new ArrayList<>(); + + Row headerRow = sheet.getRow(0); + + if (headerRow != null) { + for (Cell cell : headerRow) { + String header = cell.getStringCellValue(); + Map headerObject = new LinkedHashMap<>(); + headerObject.put("headerName", header); + headerObject.put("value", ""); // Empty value + sheetHeaders.add(headerObject); + } + } + + sheetHeadersMap.put(sheet.getSheetName(), sheetHeaders); + } + + return ResponseEntity.ok(sheetHeadersMap); + } catch (Exception e) { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error processing Excel file."); + } + } + + @PostMapping("/jsonkeychange") + public ResponseEntity>>>> transformData( + @RequestParam("updatedKeyJson") String updatedKeyJson, + @RequestParam("oldKeyDataJson") String oldKeyDataJson) throws IOException { + try { + // Deserialize JSON strings into JSON objects + JsonNode updatedKeyJsonObject = objectMapper.readTree(updatedKeyJson); + JsonNode oldKeyDataJsonArray = objectMapper.readTree(oldKeyDataJson); + + // Create a result list with a single element + List>>> result = new ArrayList<>(); + + // Create a single element to hold the transformed data + Map>> transformedDataMap = new LinkedHashMap<>(); + + // Iterate through updatedKeyJson keys (e.g., "Customer", "Site") + Iterator updatedKeys = updatedKeyJsonObject.fieldNames(); + while (updatedKeys.hasNext()) { + String key = updatedKeys.next(); + JsonNode updatedKeyMappings = updatedKeyJsonObject.get(key); + + // Create a mapping of headerName to value from updatedKeyJson + Map keyMapping = new LinkedHashMap<>(); + for (JsonNode mapping : updatedKeyMappings) { + String headerName = mapping.get("headerName").asText(); + String value = mapping.get("value").asText(); + keyMapping.put(headerName, value); + } + + // Find the corresponding data array in oldKeyDataJsonArray + for (JsonNode oldDataArray : oldKeyDataJsonArray) { + if (oldDataArray.has(key)) { + JsonNode dataArray = oldDataArray.get(key); + List> transformedData = new ArrayList<>(); + + // Iterate through oldKeyDataJson for the given key + for (JsonNode item : dataArray) { + Map transformedItem = new LinkedHashMap<>(); + Iterator> fields = item.fields(); + + // Map old keys to new keys using keyMapping + while (fields.hasNext()) { + Map.Entry field = fields.next(); + String oldKey = field.getKey(); + String newKey = keyMapping.get(oldKey); + JsonNode valueNode = field.getValue(); + Object newValue = valueNode.isTextual() && ("TRUE".equalsIgnoreCase(valueNode.asText()) + || "FALSE".equalsIgnoreCase(valueNode.asText())) + ? Boolean.parseBoolean(valueNode.asText()) + : valueNode.asText(); + transformedItem.put(newKey, newValue); + } + + transformedData.add(transformedItem); + } + + // Add the transformed data to the single element + transformedDataMap.put(key, transformedData); + } + } + } + + // Add the single element to the result list + result.add(transformedDataMap); + + return new ResponseEntity<>(result, HttpStatus.OK); + } catch (Exception e) { + e.printStackTrace(); + return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR); + } + } + + @PostMapping("/DownloadExcel/{id}") + public ResponseEntity importdatadownloadexcel(@PathVariable Long id, + @RequestParam(name = "jsonData") String jsonDataParam, + @RequestParam(name = "ruleData") String ruleDataParam) + throws JsonMappingException, JsonProcessingException, UnsupportedEncodingException { + + // Inside your method + ObjectMapper objectMapper = new ObjectMapper(); + JsonNode ruleDataNode = objectMapper.readTree(ruleDataParam); + + if (ruleDataNode.isArray() && ruleDataNode.isEmpty()) { + // If ruleDataParam is an empty JSON array, directly upload data to the table + return uploadDataToTable(id, jsonDataParam); + } + + // Parse jsonDataParam to extract the JSON data + Map>> jsonData = objectMapper.readValue( + URLDecoder.decode(jsonDataParam, "UTF-8"), new TypeReference>>>() { + }); + + // Parse ruleDataParam to extract the JSON data + List> ruleData = objectMapper.readValue(URLDecoder.decode(ruleDataParam, "UTF-8"), + new TypeReference>>() { + }); + + String fromsheet = null; + String fromColumn = null; + String validationTable = null; + String checkColumn = null; + String useColumn = null; + String replacementtable = null; + String replacementcolumn = null; + + if (ruleData != null && !ruleData.isEmpty()) { + // Assuming you want to access the first element in the array + Map rule = ruleData.get(0); + + fromsheet = rule.get("fromsheet"); + fromColumn = rule.get("fromColumn"); + validationTable = rule.get("validationTable"); + checkColumn = rule.get("checkColumn"); + useColumn = rule.get("useColumn"); + replacementtable = rule.get("replacementTable"); + replacementcolumn = rule.get("replacementcolumn"); + } + + String customerTableName = validationTable; + String siteTableName = replacementtable; + + try { + + String siteEntityName = null; + String responseMessage = null; + // Create a workbook + XSSFWorkbook workbook = new XSSFWorkbook(); + + // Create a sheet for customer data + XSSFSheet customerSheet = workbook.createSheet("Customer"); + + // Create a sheet for site data + XSSFSheet siteSheet = workbook.createSheet("Site"); + + List> customerDataList = new ArrayList<>(); + List> siteDataList = new ArrayList<>(); + + // Get the column names for customer data + List customerColumnNames = getColumnNames(jsonData.get("Customer").get(0)); + // Create the header row for customer data + XSSFRow customerHeaderRow = customerSheet.createRow(0); + for (int i = 0; i < customerColumnNames.size(); i++) { + XSSFCell cell = customerHeaderRow.createCell(i); + cell.setCellValue(customerColumnNames.get(i)); + } + + // Get the column names for site data + List siteColumnNames = getColumnNames(jsonData.get(fromsheet).get(0)); + // Create the header row for site data + XSSFRow siteHeaderRow = siteSheet.createRow(0); + for (int i = 0; i < siteColumnNames.size(); i++) { + XSSFCell cell = siteHeaderRow.createCell(i); + cell.setCellValue(siteColumnNames.get(i)); + } + + // Iterate through each customer data entry + List> customerData = jsonData.get("Customer"); + for (Map insertCustomerData : customerData) { + String customerName = (String) insertCustomerData.get(checkColumn); + + Map processedRow = new HashMap<>(); + + // Check if the customerName is not null and iterate through "Site" data + List> siteData = jsonData.get(fromsheet); + + List> matchedSiteData = new ArrayList<>(); + if (customerName != null) { + // Iterate through "Site" data and check for a matching "entity_name" + for (Map siteRow : siteData) { + String columnIndex = fromColumn; + + String cellValue = getCellValue(jsonData, fromsheet, columnIndex); + responseMessage = cellValue; + + for (Map.Entry entry : siteRow.entrySet()) { + if (entry.getKey().equals(responseMessage)) { + siteEntityName = (String) entry.getValue(); + break; // Exit the loop once the value is found + } + } + + if (customerName.equals(siteEntityName)) { + // Add the matching "Site" data to the list + matchedSiteData.add(siteRow); + } + } + } + + String insertCustomerDataJson = objectMapper.writeValueAsString(insertCustomerData); + String matchedSiteDataJson = objectMapper.writeValueAsString(matchedSiteData); + + String customerSql = getInsertQuery(customerTableName, insertCustomerData); + + // Insert data into the customer table + try { + Object[] customerValues = new Object[insertCustomerData.size() + 5]; + int index = 0; + for (Object value : insertCustomerData.values()) { + customerValues[index++] = value; + } + customerValues[index++] = new Timestamp(System.currentTimeMillis()); // created_at + customerValues[index++] = null; // created_by + customerValues[index++] = null; // updated_by + customerValues[index++] = new Timestamp(System.currentTimeMillis()); // updated_at + customerValues[index] = null; // account_id + jdbcTemplate.update(customerSql, customerValues); + processedRow.putAll(insertCustomerData); + processedRow.put("Status", "Success"); + processedRow.put("Exception", "NA"); + customerDataList.add(processedRow); + } catch (DataIntegrityViolationException e) { + processedRow.putAll(insertCustomerData); + processedRow.put("Status", "Error"); + String exceptionMessage = extractExceptionMessage(e); + processedRow.put("Exception", exceptionMessage); + e.printStackTrace(); + customerDataList.add(processedRow); + } + + // Get the generated ID from the database + Long generatedId = jdbcTemplate.queryForObject("SELECT LAST_INSERT_ID()", Long.class); + + List> newMatchedSiteData = new ArrayList<>(); + + for (Map siteRow : matchedSiteData) { + // Replace "Customer Name" with "customer_master_id" if it exists + if (siteRow.containsKey(responseMessage)) { + siteRow.put(replacementcolumn, generatedId); + // siteRow.remove(responseMessage); + // siteRow.remove(responseMessage); + } + newMatchedSiteData.add(siteRow); + } + + // Insert site data for this customer + for (Map siteRow : newMatchedSiteData) { + Map siteProcessedRow = new HashMap<>(); + try { + Object[] siteValues = new Object[siteRow.size() + 5]; + + int siteIndex = 0; + for (Object value : siteRow.values()) { + siteValues[siteIndex++] = value; + } + + siteValues[siteIndex++] = new Timestamp(System.currentTimeMillis()); // created_at + siteValues[siteIndex++] = null; // created_by + siteValues[siteIndex++] = null; // updated_by + siteValues[siteIndex++] = new Timestamp(System.currentTimeMillis()); // updated_at + siteValues[siteIndex] = null; // account_id + + String siteSql = getInsertQuery(siteTableName, siteRow); + jdbcTemplate.update(siteSql, siteValues); + siteProcessedRow.putAll(siteRow); + siteProcessedRow.put("Status", "Success"); + siteProcessedRow.put("Exception", "NA"); + siteDataList.add(siteProcessedRow); + } catch (DataIntegrityViolationException ex) { + siteProcessedRow.putAll(siteRow); + siteProcessedRow.put("Status", "Error"); + String exceptionMessage = extractExceptionMessage(ex); + siteProcessedRow.put("Exception", exceptionMessage); + ex.printStackTrace(); + siteDataList.add(siteProcessedRow); + } + } + } + + // Write customer data to the customer sheet + writeDataToSheet(customerDataList, customerSheet, customerColumnNames); + // Write site data to the site sheet + writeDataToSheet(siteDataList, siteSheet, siteColumnNames); + + String filepath = "import-data"; + + long unixTimestamp = System.currentTimeMillis(); + + // Create the file name with the Unix timestamp + String excelFile = "failed_records_" + unixTimestamp + ".xlsx"; + + // String excelFilePath = "D:\\REAL IT + // SOLUTION\\SureSetuOld\\suresetu-mohasin205\\backend\\import-data\\processingfile\\failed_records.xlsx"; + + String location = projectPath + File.separator + filepath; + File dir2 = new File(location); + if (!dir2.exists()) { + dir2.mkdir(); + } + +// String file_name2 = file.getOriginalFilename(); + + File staticdir2 = new File(location + "/statusFile"); + if (!staticdir2.exists()) { + staticdir2.mkdir(); + } + + String excelFilePath = staticdir2 + File.separator + excelFile; + + Optional fileUploadOptional = temprepo.findById(id); + + if (fileUploadOptional.isPresent()) { + TemplateFileUpload fileUpload = fileUploadOptional.get(); + fileUpload.setDownloadfileLocation(excelFilePath); + temprepo.save(fileUpload); + } + + try (FileOutputStream fileOutputStream = new FileOutputStream(excelFilePath)) { + workbook.write(fileOutputStream); + } catch (IOException e) { + e.printStackTrace(); + // Handle the exception appropriately + } + + return ResponseEntity.ok().body("Excel file saved successfully to: " + excelFilePath); + + } catch (Exception e) { + e.printStackTrace(); + // Handle exceptions and return an appropriate response + return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR); + } + } + + private List getColumnNames(Map dataRow) { + return new ArrayList<>(dataRow.keySet()); + } + + // Method to write data to a sheet + private void writeDataToSheet(List> dataList, XSSFSheet sheet, List columnNames) { + int rowIndex = 0; + // Create the header row + XSSFRow headerRow = sheet.createRow(rowIndex++); + for (int i = 0; i < columnNames.size(); i++) { + XSSFCell cell = headerRow.createCell(i); + cell.setCellValue(columnNames.get(i)); + } + // Add "Status" and "Exception" columns to the sheet + headerRow.createCell(columnNames.size()).setCellValue("Status"); + headerRow.createCell(columnNames.size() + 1).setCellValue("Exception"); + + // Write the data rows + for (Map row : dataList) { + XSSFRow dataRow = sheet.createRow(rowIndex++); + int columnIndex = 0; + for (String columnName : columnNames) { + Object value = row.get(columnName); + XSSFCell cell = dataRow.createCell(columnIndex++); + cell.setCellValue(value != null ? value.toString() : ""); + } + // Add "Status" and "Exception" values to the data row + dataRow.createCell(columnIndex++).setCellValue(row.get("Status").toString()); + dataRow.createCell(columnIndex).setCellValue(row.get("Exception").toString()); + } + + } + + private ResponseEntity uploadDataToTable(Long id, String jsonDataParam) { + try { + // Get table name from TemplateFileUpload entity + Optional fileUploadOptional = temprepo.findById(id); + if (fileUploadOptional.isPresent()) { + TemplateFileUpload fileUpload = fileUploadOptional.get(); +// String tableName = fileUpload.getTablename(); + String tableName = fileUpload.getEntity_name(); +// String tableName = "aa"; + // Insert data into the specified table + insertDataIntoTable(tableName, jsonDataParam); + System.out.println("Data uploaded successfully to table..."); + return ResponseEntity.ok().body(new EntityResponse("Data uploaded successfully to table: " + tableName)); + } else { + return ResponseEntity.status(HttpStatus.NOT_FOUND).body("Template file with id " + id + " not found"); + } + } catch (Exception e) { + e.printStackTrace(); + // Handle exceptions and return an appropriate response + return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR); + } + } + + private void insertDataIntoTable(String tableName, String jsonDataParam) { + try { + ObjectMapper objectMapper = new ObjectMapper(); + // Parse jsonDataParam to extract the JSON data + Map>> jsonData = objectMapper.readValue( + URLDecoder.decode(jsonDataParam, "UTF-8"), + new TypeReference>>>() { + }); + + // Iterate over the entries of the jsonData map + for (Map.Entry>> entry : jsonData.entrySet()) { + String sheetName = entry.getKey(); // Get the sheet name dynamically + List> data = entry.getValue(); // Get the list of maps dynamically + + // Now you have the list of maps for the current sheet, you can iterate through + // it and perform your database insertion logic + for (Map rowData : data) { + StringBuilder columns = new StringBuilder(); + StringBuilder values = new StringBuilder(); + List params = new ArrayList<>(); + + // Build column names and values dynamically + for (Map.Entry columnEntry : rowData.entrySet()) { + if (columns.length() > 0) { + columns.append(", "); + values.append(", "); + } + columns.append(columnEntry.getKey()); + values.append("?"); + params.add(columnEntry.getValue()); + } + + // Construct the SQL query + String sql = "INSERT INTO " + tableName + " (" + columns + ") VALUES (" + values + ")"; + + // Execute the SQL query + jdbcTemplate.update(sql, params.toArray()); + } + } + } catch (Exception e) { + e.printStackTrace(); + // Handle exceptions appropriately + } + } + + private String extractExceptionMessage(DataIntegrityViolationException e) { + String errorMessage = e.getMessage(); + int startIndex = errorMessage.indexOf("Incorrect "); + int endIndex = errorMessage.indexOf("at row"); + if (startIndex != -1 && endIndex != -1) { + return errorMessage.substring(startIndex, endIndex).trim(); + } + return errorMessage; + } + + private String getInsertQuery(String tableName, Map data) { + StringBuilder sqlBuilder = new StringBuilder(); + sqlBuilder.append("INSERT INTO "); + sqlBuilder.append(tableName); + sqlBuilder.append(" ("); + sqlBuilder.append(String.join(", ", data.keySet())); + sqlBuilder.append(", created_at, created_by, updated_by, updated_at, account_id) VALUES ("); + sqlBuilder.append(String.join(", ", Collections.nCopies(data.size(), "?"))); + sqlBuilder.append(", ?, ?, ?, ?, ?)"); + return sqlBuilder.toString(); + } + + @GetMapping("/sheet/{id}") + public ResponseEntity getSheet(@PathVariable Long id) throws IOException { + ResponseEntity jsonData = convertFileToJsonforsheet(id); + + return ResponseEntity.ok(jsonData.getBody()); + } + + public ResponseEntity convertFileToJsonforsheet(Long id) throws IOException { + // Retrieve the TemplateFileUpload entity based on the provided ID + Optional fileUploadOptional = temprepo.findById(id); + + if (!fileUploadOptional.isPresent()) { + // Handle the case where the file is not found in the specified location + return ResponseEntity.notFound().build(); + } + + TemplateFileUpload fileUpload = fileUploadOptional.get(); + String location = fileUpload.getFile_location(); + String fileName = fileUpload.getFile_changed_name() + ".xlsx"; + String filePath = location + File.separator + "processingfile" + File.separator + fileName; + File file = new File(filePath); + + if (!file.exists()) { + // Handle the case where the file is not found in the specified location + return ResponseEntity.notFound().build(); + } + + try (FileInputStream fis = new FileInputStream(file)) { + XSSFWorkbook workbook = new XSSFWorkbook(fis); + List sheetNames = new ArrayList<>(); + + for (int i = 0; i < workbook.getNumberOfSheets(); i++) { + XSSFSheet sheet = workbook.getSheetAt(i); + String sheetName = sheet.getSheetName(); + sheetNames.add(sheetName); + } + + return ResponseEntity.ok(sheetNames); + } catch (Exception e) { + // Handle any exceptions that may occur during processing + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error processing Excel file."); + } + } + + @GetMapping("/downloadImportStatement/{id}") + public ResponseEntity downloadImportStatement(@PathVariable Long id) { + // Retrieve the file data from the database based on the ID + TemplateFileUpload fileUpload = fileUploadService.getFileById(id); + + // Get the file location from the entity + String fileLocation = fileUpload.getDownloadfileLocation(); +// String filename = fileUpload.getDownloadfileName(); +// +// String filepath = fileLocation + File.separator + filename; + + try { + // Read the file content from the specified location + byte[] fileContent = Files.readAllBytes(Paths.get(fileLocation)); + + // Create a ByteArrayResource from the file content + ByteArrayResource resource = new ByteArrayResource(fileContent); + + return ResponseEntity.ok().contentType(MediaType.APPLICATION_OCTET_STREAM) + .header(HttpHeaders.CONTENT_DISPOSITION, + "attachment; filename=\"" + fileUpload.getFile_name() + "\"") + .body(resource); + } catch (IOException e) { + // Handle any potential exceptions (e.g., file not found) + e.printStackTrace(); + return ResponseEntity.status(500).body("Error occurred while reading the file."); + } + } + + // get table column + + @GetMapping("/columns/{tableName}") + public List getColumnNames(@PathVariable String tableName) { + Set columnNamesSet = new HashSet<>(); + String convertedTableName = tableName; + List columnNames = jdbcTemplate.queryForList( + "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = ?", + new Object[] { convertedTableName }, String.class); + // Exclude specific column names + List excludedColumns = Arrays.asList("id", "account_id", "updated_at", "created_at", "created_by", + "updated_by"); + for (String columnName : columnNames) { + if (!excludedColumns.contains(columnName)) { + columnNamesSet.add(columnName); + } + } + return new ArrayList<>(columnNamesSet); + } + + private String getCellValue(Map>> jsonData, String sheetName, String cellAddress) + throws IOException { + if (jsonData.containsKey(sheetName)) { + List> sheetData = jsonData.get(sheetName); + int size = sheetData.size(); + System.out.println(size); + Map firstRowData = sheetData.get(0); + + // Separate the numeric part (row part) and non-numeric part (column part) + String rowPart = ""; + String columnPart = ""; + + for (char c : cellAddress.toCharArray()) { + if (Character.isDigit(c)) { + rowPart += c; + } else { + columnPart += c; + } + } + + System.out.println("Column Part: " + columnPart); + System.out.println("Row Part: " + rowPart); + + int columnIndex = getColumnIndex(columnPart); // Get the column index based on the columnPart +// int rowIndex = Integer.parseInt(rowPart) - 1; // Excel-style 1-based index + System.out.println("Column Index: " + columnIndex); + + if (columnIndex >= 0) { + // Get the list of keys from the firstRowData map + List keys = new ArrayList<>(firstRowData.keySet()); + + // Check if the columnIndex is within the range of keys + if (columnIndex < keys.size()) { + String columnName = keys.get(columnIndex); + return columnName; + } + } + } + + return null; + } + + private int getColumnIndex(String columnPart) { + int index = 0; + int multiplier = 1; + + // Iterate through the columnPart in reverse order (right to left) + for (int i = columnPart.length() - 1; i >= 0; i--) { + char c = columnPart.charAt(i); + index += (c - 'A' + 1) * multiplier; + multiplier *= 26; // Multiply by 26 for each position to calculate the index + } + + return index - 1; // Subtract 1 to get a 0-based index + } + +// @PostMapping("/DownloadExcel/{entityName}") +// public ResponseEntity importdatadownloadexcel(@PathVariable String entityName, +// @RequestBody List> data) throws IOException { +// List> processedData = processData(entityName, data); +// if (!processedData.isEmpty()) { +// Workbook workbook = createWorkbook(processedData); +// Resource resource = createExcelResource(workbook); +// return ResponseEntity.ok() +// .contentType(MediaType.parseMediaType("application/vnd.ms-excel")) +// .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=failed_records.xlsx") +// .body(resource); +// } +// return ResponseEntity.ok().body(null); +// } + + private List> processData(String entityName, List> data) { + List> processedData = new ArrayList<>(); + try { + String convertedTableName = entityName; + String sql = getInsertQuery(convertedTableName, data.get(0)); + for (int i = 0; i < data.size(); i++) { + Map row = data.get(i); + Map processedRow = new HashMap<>(); + try { + Object[] values = new Object[row.size() + 5]; // +5 for the additional columns + int index = 0; + for (Object value : row.values()) { + values[index++] = value; + } + values[index++] = new Timestamp(System.currentTimeMillis()); // created_at + values[index++] = null; // created_by + values[index++] = null; // updated_by + values[index++] = new Timestamp(System.currentTimeMillis()); // updated_at + values[index] = null; // account_id + jdbcTemplate.update(sql, values); + processedRow.putAll(row); + processedRow.put("Status", "Success"); + processedRow.put("Exception", "NA"); + } catch (DataIntegrityViolationException e) { + processedRow.putAll(row); + processedRow.put("Status", "Error"); + String exceptionMessage = extractExceptionMessage(e); + processedRow.put("Exception", exceptionMessage); + } + processedData.add(processedRow); + } + } catch (Exception e) { + // Handle any exceptions here if needed + } + return processedData; + } + + private Workbook createWorkbook(List> processedData) { + Workbook workbook = new XSSFWorkbook(); + Sheet sheet = workbook.createSheet("Failed Records"); + + // Add column headers to the worksheet + Row headerRow = sheet.createRow(0); + int columnIndex = 0; + for (String key : processedData.get(0).keySet()) { + Cell cell = headerRow.createCell(columnIndex++); + cell.setCellValue(key); + } + + // Add data rows to the worksheet + int rowIndex = 1; + for (Map row : processedData) { + Row dataRow = sheet.createRow(rowIndex++); + columnIndex = 0; + for (Object value : row.values()) { + Cell cell = dataRow.createCell(columnIndex++); + cell.setCellValue(value.toString()); + } + } + + return workbook; + } + + private Resource createExcelResource(Workbook workbook) throws IOException { + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + workbook.write(outputStream); + ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray()); + return new InputStreamResource(inputStream); + } + +/////////// VERY IMPORTANT NOT DELETE THE BELOW/////////// + +//@PostMapping("/DownloadExcel/{id}") +//public ResponseEntity importdatadownloadexcel(@PathVariable Long id, +// @RequestBody Map>> jsonData) { +// +// TemplateFileUpload templateFileUpload = fileUploadService.getTemplatebyid(id); +// +// String entity_name = templateFileUpload.getEntity_name(); +// +// BulkUpload_t bulkUpload_t = bulkUpload_Repository.getentityName(entity_name); +// String ruleLine = bulkUpload_t.getRule_line(); +// +// JsonParser parser = new JsonParser(); +// JsonElement element = parser.parse(ruleLine); +// JsonArray array = element.getAsJsonArray(); +// Iterator iterator = array.iterator(); +// +// String fromsheet = null; +// String fromColumn = null; +// String validationTable = null; +// String checkColumn = null; +// String useColumn = null; +// String replacementtable = null; +// String replacementcolumn = null; +// +// while (iterator.hasNext()) { +// JsonElement next = iterator.next(); +// JsonObject jsonObject = next.getAsJsonObject(); +// +// fromsheet = jsonObject.get("fromsheet").getAsString(); +// fromColumn = jsonObject.get("fromColumn").getAsString(); +// validationTable = jsonObject.get("validationTable").getAsString(); +// checkColumn = jsonObject.get("checkColumn").getAsString(); +// useColumn = jsonObject.get("useColumn").getAsString(); +// replacementtable = jsonObject.get("useTable").getAsString(); +// replacementcolumn = jsonObject.get("replacementcolumn").getAsString(); +// +// break; +// } +// +// String customerTableName = validationTable; +// String siteTableName = replacementtable; +// +// try { +// Set tableNames = jsonData.keySet(); // Get all unique table names +// +// String siteEntityName = null; +// for (String tableName : tableNames) { +// List> tableData = jsonData.get(tableName); +// +// // Process tableData based on the tableName (e.g., "Site" or "Customer") +// System.out.println("Table Name: " + tableName); +// for (Map row : tableData) { +// // Process individual rows within the table data +// System.out.println("Row Data: " + row); +// } +// } +// +// List> processedDataList = new ArrayList<>(); // List to hold processed data rows +// +// // Iterate through each customer data entry +// List> customerData = jsonData.get("Customer"); +// for (Map insertCustomerData : customerData) { +// String customerName = (String) insertCustomerData.get(checkColumn); +// +// // Check if the customerName is not null and iterate through "Site" data +// List> siteData = jsonData.get(fromsheet); +// +// List> matchedSiteData = new ArrayList<>(); +// if (customerName != null) { +// // Iterate through "Site" data and check for a matching "entity_name" +// for (Map siteRow : siteData) { +// // Specify the index as "AM" (39th column) +//// String columnIndex = "AM"; +// String columnIndex = fromColumn; +// +// // Retrieve the value at the specified index +// +// for (Map.Entry entry : siteRow.entrySet()) { +// if (entry.getKey().equals(columnIndex)) { +// siteEntityName = (String) entry.getValue(); +// break; // Exit the loop once the value is found +// } +// } +// +// if (customerName.equals(siteEntityName)) { +// // Add the matching "Site" data to the list +// matchedSiteData.add(siteRow); +// } +// } +// } +// +// ObjectMapper objectMapper = new ObjectMapper(); +// String insertCustomerDataJson = objectMapper.writeValueAsString(insertCustomerData); +// String matchedSiteDataJson = objectMapper.writeValueAsString(matchedSiteData); +// +// String customerSql = getInsertQuery(customerTableName, insertCustomerData); +// +// // Insert data into the customer table +// Object[] customerValues = new Object[insertCustomerData.size() + 5]; +// int index = 0; +// for (Object value : insertCustomerData.values()) { +// customerValues[index++] = value; +// } +// customerValues[index++] = new Timestamp(System.currentTimeMillis()); // created_at +// customerValues[index++] = null; // created_by +// customerValues[index++] = null; // updated_by +// customerValues[index++] = new Timestamp(System.currentTimeMillis()); // updated_at +// customerValues[index] = null; // account_id +// jdbcTemplate.update(customerSql, customerValues); +// +// // we can use useColumn here +// Long generatedId = jdbcTemplate.queryForObject("SELECT LAST_INSERT_ID()", Long.class); +// +// List> insertMatchedSiteData = new ArrayList<>(); // List to hold processed data rows +// +// for (Map siteRow : matchedSiteData) { +// // Replace "Customer Name" with "customer_master_id" if it exists +// if (siteRow.containsKey(siteEntityName)) { +// siteRow.put(replacementcolumn, generatedId); +// siteRow.remove(siteEntityName); +// } +// insertMatchedSiteData.add(siteRow); +// } +// +// for (Map siteRow : insertMatchedSiteData) { +// Object[] siteValues = new Object[siteRow.size() + 5]; // Create a new array for each row +// +// int siteIndex = 0; +// for (Object value : siteRow.values()) { +// siteValues[siteIndex++] = value; +// } +// +// siteValues[siteIndex++] = new Timestamp(System.currentTimeMillis()); // created_at +// siteValues[siteIndex++] = null; // created_by +// siteValues[siteIndex++] = null; // updated_by +// siteValues[siteIndex++] = new Timestamp(System.currentTimeMillis()); // updated_at +// siteValues[siteIndex] = null; // account_id +// +// String siteSql = getInsertQuery(siteTableName, siteRow); +// jdbcTemplate.update(siteSql, siteValues); +// } +// +// // Add the processed customer data to the list +// processedDataList.add(insertCustomerData); +// } +// +// // Use a LinkedHashMap to preserve insertion order in the response +// Map>> response = new LinkedHashMap<>(); +// response.put("result", processedDataList); +// +// return new ResponseEntity<>(response, HttpStatus.OK); +// +// } catch (Exception e) { +// e.printStackTrace(); +// // Handle exceptions and return an appropriate response +// return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR); +// } +//} + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Controllers/MappingRuleController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Controllers/MappingRuleController.java new file mode 100644 index 0000000..7afa290 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Controllers/MappingRuleController.java @@ -0,0 +1,124 @@ +package com.realnet.BulkUpload.Controllers; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.ss.usermodel.WorkbookFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +//import org.springframework.mock.web.MockMultipartFile; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +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.multipart.MultipartFile; + +import com.realnet.BulkUpload.Entity.MappingRule; +import com.realnet.BulkUpload.Services.MappingRuleService; + +@RestController +@RequestMapping("/MappingRule") +public class MappingRuleController { + @Autowired + private MappingRuleService Service; + + @PostMapping("/MappingRule") + public MappingRule Savedata(@RequestBody MappingRule data) { + MappingRule save = Service.Savedata(data); + return save; + } + + @GetMapping("/MappingRule") + public List getdetails() { + List get = Service.getdetails(); + return get; + } + + @GetMapping("/MappingRule/{id}") + public MappingRule getdetailsbyId(@PathVariable Long id) { + MappingRule get = Service.getdetailsbyId(id); + return get; + + } + + @DeleteMapping("/MappingRule/{id}") + public void delete_by_id(@PathVariable Long id) { + Service.delete_by_id(id); + + } + + @PutMapping("/MappingRule/{id}") + public MappingRule update(@RequestBody MappingRule data, @PathVariable Long id) { + MappingRule update = Service.update(data, id); + return update; + } + + @GetMapping("/getHeaders") + public ResponseEntity getFileHeadersForSheet( + @RequestParam("file") MultipartFile excelFile, + @RequestParam("sheetName") String sheetName) { + try (Workbook workbook = WorkbookFactory.create(excelFile.getInputStream())) { + List sheetHeaders = new ArrayList<>(); + Sheet sheet = workbook.getSheet(sheetName); + + if (sheet == null) { + return ResponseEntity.notFound().build(); // Sheet not found + } + + Row headerRow = sheet.getRow(0); + if (headerRow != null) { + for (Cell cell : headerRow) { + String header = cell.getStringCellValue(); + sheetHeaders.add(header); + } + } + + return ResponseEntity.ok(sheetHeaders); + } catch (Exception e) { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error processing Excel file."); + } + } + +// @GetMapping("/getHeadersMapping") +// public ResponseEntity getAllSheetHeadersForMapping(@RequestParam("file") MultipartFile excelFile,@RequestParam("sheetName") String sheetName) { +// try (Workbook workbook = WorkbookFactory.create(excelFile.getInputStream())) { +// Map>> sheetHeadersMap = new LinkedHashMap<>(); +// +// for (int i = 0; i < workbook.getNumberOfSheets(); i++) { +// Sheet sheet = workbook.getSheet(sheetName); +// List> sheetHeaders = new ArrayList<>(); +// +// Row headerRow = sheet.getRow(0); +// +// if (headerRow != null) { +// for (Cell cell : headerRow) { +// String header = cell.getStringCellValue(); +// Map headerObject = new LinkedHashMap<>(); +// headerObject.put("headerName", header); +// headerObject.put("value", ""); // Empty value +// sheetHeaders.add(headerObject); +// } +// } +// +// sheetHeadersMap.put(sheet.getSheetName(), sheetHeaders); +// } +// +// return ResponseEntity.ok(sheetHeadersMap); +// } catch (Exception e) { +// return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error processing Excel file."); +// } +// } + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Controllers/MasterImportController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Controllers/MasterImportController.java new file mode 100644 index 0000000..0266bf3 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Controllers/MasterImportController.java @@ -0,0 +1,600 @@ +package com.realnet.BulkUpload.Controllers; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.Set; + +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.usermodel.XSSFCell; +import org.apache.poi.xssf.usermodel.XSSFRow; +import org.apache.poi.xssf.usermodel.XSSFSheet; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.io.ByteArrayResource; +import org.springframework.core.io.InputStreamResource; +import org.springframework.core.io.Resource; +import org.springframework.dao.DataIntegrityViolationException; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.realnet.BulkUpload.Entity.BulkUpload_t; +import com.realnet.BulkUpload.Repository.BulkUpload_Repository; +import com.realnet.BulkUpload.Services.BulkUpload_Service; +import com.realnet.template.entity.TemplateFileUpload; +import com.realnet.template.repository.TemplatedataRepo; +import com.realnet.template.service.DynamicTemplateService; +import com.realnet.template.service.FileUploadService; + +@RestController +@RequestMapping("/masterimport") +public class MasterImportController { + + @Autowired + private JdbcTemplate jdbcTemplate; + @Autowired + private TemplatedataRepo temprepo; + @Autowired + private DynamicTemplateService dynamicTemplateService; + + @Autowired + private BulkUpload_Service bulkUpload_Service; + + @Autowired + private BulkUpload_Repository bulkUpload_Repository; + + @Autowired + private FileUploadService fileUploadService; + + @Autowired + private ObjectMapper objectMapper; + + @Value("${projectPath}") + private String projectPath; + + @GetMapping("/demo/download/{file_type}") + public ResponseEntity demoTemplate(@PathVariable String file_type) throws IOException { + Workbook workbook = new XSSFWorkbook(); + + if (file_type.equalsIgnoreCase("Customer")) { + // Create Customer sheet with headers only + String[] customerHeaders = { "balance", "c_status", "city", "country","currency_code","customer_id", + "date_of_birth", "defaultsite_id", "email", "entity_name","file_name","file_path", + "first_name", "gender", "gst_no", "gst_state","house_no","mobile_no", + "pan_no", "sales_rep", "special_price", "state","street_address","street_address2", + "time_zone", "postal_code", "contact_number"}; + createSheetWithHeaders(workbook, "Customer", customerHeaders); + + // Create Site sheet with headers only + String[] siteHeaders = { "Site Name", "Site Description", "Active", "Test" }; + createSheetWithHeaders(workbook, "Site", siteHeaders); + } else { + return new ResponseEntity("Not found", HttpStatus.BAD_REQUEST); + } + + ByteArrayOutputStream out = new ByteArrayOutputStream(); + workbook.write(out); + + return ResponseEntity.ok() + .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + file_type + "_template.xlsx") + .contentType(MediaType.parseMediaType("application/vnd.ms-excel")).body(out.toByteArray()); + } + + private void createSheetWithHeaders(Workbook workbook, String sheetName, String[] headers) { + Sheet sheet = workbook.createSheet(sheetName); + Row headerRow = sheet.createRow(0); + + // Create headers + for (int col = 0; col < headers.length; col++) { + Cell cell = headerRow.createCell(col); + cell.setCellValue(headers[col]); + } + } + + @PostMapping("/DownloadExcelForMaster/{id}") + public ResponseEntity DownloadExcelForMaster(@PathVariable Long id, + @RequestBody Map>> jsonData) { + try { + + List templateFileUpload = temprepo.findUnprocessedRecordsOrderedByIdAsc(); + + + + if (!templateFileUpload.isEmpty()) { + for (TemplateFileUpload upload : templateFileUpload) { + String entity_name = upload.getEntity_name(); + BulkUpload_t bulkUpload_t = bulkUpload_Repository.getentityName(entity_name); + String ruleLine = bulkUpload_t.getRule_line(); + +// BulkUpload_t bulkUpload_t = bulkUpload_Repository.getentityName(entity_name); +// String ruleLine = bulkUpload_t.getRule_line(); + + JsonParser parser = new JsonParser(); + JsonElement element = parser.parse(ruleLine); + JsonArray array = element.getAsJsonArray(); + Iterator iterator = array.iterator(); + + String fromsheet = null; + String fromColumn = null; + String validationTable = null; + String checkColumn = null; + String useColumn = null; + String replacementtable = null; + String replacementcolumn = null; + + while (iterator.hasNext()) { + JsonElement next = iterator.next(); + JsonObject jsonObject = next.getAsJsonObject(); + + fromsheet = jsonObject.get("fromsheet").getAsString(); + fromColumn = jsonObject.get("fromColumn").getAsString(); + validationTable = jsonObject.get("validationTable").getAsString(); + checkColumn = jsonObject.get("checkColumn").getAsString(); + useColumn = jsonObject.get("useColumn").getAsString(); + replacementtable = jsonObject.get("useTable").getAsString(); + replacementcolumn = jsonObject.get("replacementcolumn").getAsString(); + + break; + } + + String customerTableName = validationTable; + String siteTableName = replacementtable; + + Set tableNames = jsonData.keySet(); // Get all unique table names + + String siteEntityName = null; + for (String tableName : tableNames) { + List> tableData = jsonData.get(tableName); + + // Process tableData based on the tableName (e.g., "Site" or "Customer") + System.out.println("Table Name: " + tableName); + for (Map row : tableData) { + // Process individual rows within the table data + System.out.println("Row Data: " + row); + } + } + + List> processedDataList = new ArrayList<>(); // List to hold processed data rows + + // Iterate through each customer data entry + List> customerData = jsonData.get("Customer"); + for (Map insertCustomerData : customerData) { + String customerName = (String) insertCustomerData.get(checkColumn); + + // Check if the customerName is not null and iterate through "Site" data + List> siteData = jsonData.get(fromsheet); + + List> matchedSiteData = new ArrayList<>(); + if (customerName != null) { + // Iterate through "Site" data and check for a matching "entity_name" + for (Map siteRow : siteData) { + // Specify the index as "AM" (39th column) +// String columnIndex = "AM"; + String columnIndex = fromColumn; + + // Retrieve the value at the specified index + + for (Map.Entry entry : siteRow.entrySet()) { + if (entry.getKey().equals(columnIndex)) { + siteEntityName = (String) entry.getValue(); + break; // Exit the loop once the value is found + } + } + + if (customerName.equals(siteEntityName)) { + // Add the matching "Site" data to the list + matchedSiteData.add(siteRow); + } + } + } + + ObjectMapper objectMapper = new ObjectMapper(); + String insertCustomerDataJson = objectMapper.writeValueAsString(insertCustomerData); + String matchedSiteDataJson = objectMapper.writeValueAsString(matchedSiteData); + + String customerSql = getInsertQuery(customerTableName, insertCustomerData); + + // Insert data into the customer table + Object[] customerValues = new Object[insertCustomerData.size() + 5]; + int index = 0; + for (Object value : insertCustomerData.values()) { + customerValues[index++] = value; + } + customerValues[index++] = new Timestamp(System.currentTimeMillis()); // created_at + customerValues[index++] = null; // created_by + customerValues[index++] = null; // updated_by + customerValues[index++] = new Timestamp(System.currentTimeMillis()); // updated_at + customerValues[index] = null; // account_id + jdbcTemplate.update(customerSql, customerValues); + + // we can use useColumn here + Long generatedId = jdbcTemplate.queryForObject("SELECT LAST_INSERT_ID()", Long.class); + + List> insertMatchedSiteData = new ArrayList<>(); // List to hold processed + // data rows + + for (Map siteRow : matchedSiteData) { + // Replace "Customer Name" with "customer_master_id" if it exists + if (siteRow.containsKey(siteEntityName)) { + siteRow.put(replacementcolumn, generatedId); + siteRow.remove(siteEntityName); + } + insertMatchedSiteData.add(siteRow); + } + + for (Map siteRow : insertMatchedSiteData) { + Object[] siteValues = new Object[siteRow.size() + 5]; // Create a new array for each row + + int siteIndex = 0; + for (Object value : siteRow.values()) { + siteValues[siteIndex++] = value; + } + + siteValues[siteIndex++] = new Timestamp(System.currentTimeMillis()); // created_at + siteValues[siteIndex++] = null; // created_by + siteValues[siteIndex++] = null; // updated_by + siteValues[siteIndex++] = new Timestamp(System.currentTimeMillis()); // updated_at + siteValues[siteIndex] = null; // account_id + + String siteSql = getInsertQuery(siteTableName, siteRow); + jdbcTemplate.update(siteSql, siteValues); + } + + // Add the processed customer data to the list + processedDataList.add(insertCustomerData); + } + + // Use a LinkedHashMap to preserve insertion order in the response + Map>> response = new LinkedHashMap<>(); + response.put("result", processedDataList); + + return new ResponseEntity<>(response, HttpStatus.OK); + + } + } + return new ResponseEntity<>("No data to process", HttpStatus.OK); + + } catch (Exception e) { + e.printStackTrace(); + // Handle exceptions and return an appropriate response + return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR); + } + } + + private List getColumnNames(Map dataRow) { + return new ArrayList<>(dataRow.keySet()); + } + + // Method to write data to a sheet + private void writeDataToSheet(List> dataList, XSSFSheet sheet, List columnNames) { + int rowIndex = 0; + // Create the header row + XSSFRow headerRow = sheet.createRow(rowIndex++); + for (int i = 0; i < columnNames.size(); i++) { + XSSFCell cell = headerRow.createCell(i); + cell.setCellValue(columnNames.get(i)); + } + // Add "Status" and "Exception" columns to the sheet + headerRow.createCell(columnNames.size()).setCellValue("Status"); + headerRow.createCell(columnNames.size() + 1).setCellValue("Exception"); + + // Write the data rows + for (Map row : dataList) { + XSSFRow dataRow = sheet.createRow(rowIndex++); + int columnIndex = 0; + for (String columnName : columnNames) { + Object value = row.get(columnName); + XSSFCell cell = dataRow.createCell(columnIndex++); + cell.setCellValue(value != null ? value.toString() : ""); + } + // Add "Status" and "Exception" values to the data row + dataRow.createCell(columnIndex++).setCellValue(row.get("Status").toString()); + dataRow.createCell(columnIndex).setCellValue(row.get("Exception").toString()); + } + + } + + private String extractExceptionMessage(DataIntegrityViolationException e) { + String errorMessage = e.getMessage(); + int startIndex = errorMessage.indexOf("Incorrect "); + int endIndex = errorMessage.indexOf("at row"); + if (startIndex != -1 && endIndex != -1) { + return errorMessage.substring(startIndex, endIndex).trim(); + } + return errorMessage; + } + + private String getInsertQuery(String tableName, Map data) { + StringBuilder sqlBuilder = new StringBuilder(); + sqlBuilder.append("INSERT INTO "); + sqlBuilder.append(tableName); + sqlBuilder.append(" ("); + sqlBuilder.append(String.join(", ", data.keySet())); + sqlBuilder.append(", created_at, created_by, updated_by, updated_at, account_id) VALUES ("); + sqlBuilder.append(String.join(", ", Collections.nCopies(data.size(), "?"))); + sqlBuilder.append(", ?, ?, ?, ?, ?)"); + return sqlBuilder.toString(); + } + + @GetMapping("/sheet/{id}") + public ResponseEntity getSheet(@PathVariable Long id) throws IOException { + ResponseEntity jsonData = convertFileToJsonforsheet(id); + + return ResponseEntity.ok(jsonData.getBody()); + } + + public ResponseEntity convertFileToJsonforsheet(Long id) throws IOException { + // Retrieve the TemplateFileUpload entity based on the provided ID + Optional fileUploadOptional = temprepo.findById(id); + + if (!fileUploadOptional.isPresent()) { + // Handle the case where the file is not found in the specified location + return ResponseEntity.notFound().build(); + } + + TemplateFileUpload fileUpload = fileUploadOptional.get(); + String location = fileUpload.getFile_location(); + String fileName = fileUpload.getFile_changed_name() + ".xlsx"; + String filePath = location + File.separator + "processingfile" + File.separator + fileName; + File file = new File(filePath); + + if (!file.exists()) { + // Handle the case where the file is not found in the specified location + return ResponseEntity.notFound().build(); + } + + try (FileInputStream fis = new FileInputStream(file)) { + XSSFWorkbook workbook = new XSSFWorkbook(fis); + List sheetNames = new ArrayList<>(); + + for (int i = 0; i < workbook.getNumberOfSheets(); i++) { + XSSFSheet sheet = workbook.getSheetAt(i); + String sheetName = sheet.getSheetName(); + sheetNames.add(sheetName); + } + + return ResponseEntity.ok(sheetNames); + } catch (Exception e) { + // Handle any exceptions that may occur during processing + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error processing Excel file."); + } + } + + @GetMapping("/downloadImportStatement/{id}") + public ResponseEntity downloadImportStatement(@PathVariable Long id) { + // Retrieve the file data from the database based on the ID + TemplateFileUpload fileUpload = fileUploadService.getFileById(id); + + // Get the file location from the entity + String fileLocation = fileUpload.getDownloadfileLocation(); +// String filename = fileUpload.getDownloadfileName(); +// +// String filepath = fileLocation + File.separator + filename; + + try { + // Read the file content from the specified location + byte[] fileContent = Files.readAllBytes(Paths.get(fileLocation)); + + // Create a ByteArrayResource from the file content + ByteArrayResource resource = new ByteArrayResource(fileContent); + + return ResponseEntity.ok().contentType(MediaType.APPLICATION_OCTET_STREAM) + .header(HttpHeaders.CONTENT_DISPOSITION, + "attachment; filename=\"" + fileUpload.getFile_name() + "\"") + .body(resource); + } catch (IOException e) { + // Handle any potential exceptions (e.g., file not found) + e.printStackTrace(); + return ResponseEntity.status(500).body("Error occurred while reading the file."); + } + } + + @GetMapping("/columns/{tableName}") + public List getColumnNames(@PathVariable String tableName) { + Set columnNamesSet = new HashSet<>(); + String convertedTableName = tableName; + List columnNames = jdbcTemplate.queryForList( + "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = ?", + new Object[] { convertedTableName }, String.class); + // Exclude specific column names + List excludedColumns = Arrays.asList("id", "account_id", "updated_at", "created_at", "created_by", + "updated_by"); + for (String columnName : columnNames) { + if (!excludedColumns.contains(columnName)) { + columnNamesSet.add(columnName); + } + } + return new ArrayList<>(columnNamesSet); + } + + private String getCellValue(Map>> jsonData, String sheetName, String cellAddress) + throws IOException { + if (jsonData.containsKey(sheetName)) { + List> sheetData = jsonData.get(sheetName); + int size = sheetData.size(); + System.out.println(size); + Map firstRowData = sheetData.get(0); + + // Separate the numeric part (row part) and non-numeric part (column part) + String rowPart = ""; + String columnPart = ""; + + for (char c : cellAddress.toCharArray()) { + if (Character.isDigit(c)) { + rowPart += c; + } else { + columnPart += c; + } + } + + System.out.println("Column Part: " + columnPart); + System.out.println("Row Part: " + rowPart); + + int columnIndex = getColumnIndex(columnPart); // Get the column index based on the columnPart +// int rowIndex = Integer.parseInt(rowPart) - 1; // Excel-style 1-based index + System.out.println("Column Index: " + columnIndex); + + if (columnIndex >= 0) { + // Get the list of keys from the firstRowData map + List keys = new ArrayList<>(firstRowData.keySet()); + + // Check if the columnIndex is within the range of keys + if (columnIndex < keys.size()) { + String columnName = keys.get(columnIndex); + return columnName; + } + } + } + + return null; + } + + private int getColumnIndex(String columnPart) { + int index = 0; + int multiplier = 1; + + // Iterate through the columnPart in reverse order (right to left) + for (int i = columnPart.length() - 1; i >= 0; i--) { + char c = columnPart.charAt(i); + index += (c - 'A' + 1) * multiplier; + multiplier *= 26; // Multiply by 26 for each position to calculate the index + } + + return index - 1; // Subtract 1 to get a 0-based index + } + + @PostMapping("/DownloadExcel/{entityName}") + public ResponseEntity importdatadownloadexcel(@PathVariable String entityName, + @RequestBody List> data) throws IOException { + List> processedData = processData(entityName, data); + if (!processedData.isEmpty()) { + Workbook workbook = createWorkbook(processedData); + Resource resource = createExcelResource(workbook); + return ResponseEntity.ok().contentType(MediaType.parseMediaType("application/vnd.ms-excel")) + .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=failed_records.xlsx").body(resource); + } + return ResponseEntity.ok().body(null); + } + + private List> processData(String entityName, List> data) { + List> processedData = new ArrayList<>(); + try { + String convertedTableName = entityName; + String sql = getInsertQuery(convertedTableName, data.get(0)); + for (int i = 0; i < data.size(); i++) { + Map row = data.get(i); + Map processedRow = new HashMap<>(); + try { + Object[] values = new Object[row.size() + 5]; // +5 for the additional columns + int index = 0; + for (Object value : row.values()) { + values[index++] = value; + } + values[index++] = new Timestamp(System.currentTimeMillis()); // created_at + values[index++] = null; // created_by + values[index++] = null; // updated_by + values[index++] = new Timestamp(System.currentTimeMillis()); // updated_at + values[index] = null; // account_id + jdbcTemplate.update(sql, values); + processedRow.putAll(row); + processedRow.put("Status", "Success"); + processedRow.put("Exception", "NA"); + } catch (DataIntegrityViolationException e) { + processedRow.putAll(row); + processedRow.put("Status", "Error"); + String exceptionMessage = extractExceptionMessage(e); + processedRow.put("Exception", exceptionMessage); + } + processedData.add(processedRow); + } + } catch (Exception e) { + // Handle any exceptions here if needed + } + return processedData; + } + + private Workbook createWorkbook(List> processedData) { + Workbook workbook = new XSSFWorkbook(); + Sheet sheet = workbook.createSheet("Failed Records"); + + // Add column headers to the worksheet + Row headerRow = sheet.createRow(0); + int columnIndex = 0; + for (String key : processedData.get(0).keySet()) { + Cell cell = headerRow.createCell(columnIndex++); + cell.setCellValue(key); + } + + // Add data rows to the worksheet + int rowIndex = 1; + for (Map row : processedData) { + Row dataRow = sheet.createRow(rowIndex++); + columnIndex = 0; + for (Object value : row.values()) { + Cell cell = dataRow.createCell(columnIndex++); + cell.setCellValue(value.toString()); + } + } + + return workbook; + } + + private Resource createExcelResource(Workbook workbook) throws IOException { + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + workbook.write(outputStream); + ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray()); + return new InputStreamResource(inputStream); + } + + + + +// private ResponseEntity getData(@PathVariable String type ){ +// if(type.equalsIgnoreCase("Customer")) { +// +// +// String[] customerHeaders = { "balance", "c_status", "city", "country","currency_code","customer_id", +// "date_of_birth", "defaultsite_id", "email", "entity_name","file_name","file_path", +// "first_name", "gender", "gst_no", "gst_state","house_no","mobile_no", +// "pan_no", "sales_rep", "special_price", "state","street_address","street_address2", +// "time_zone", "postal_code", "contact_number"}; +// +// +// } +// +// } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Entity/BulkUpload_t.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Entity/BulkUpload_t.java new file mode 100644 index 0000000..ca87344 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Entity/BulkUpload_t.java @@ -0,0 +1,21 @@ +package com.realnet.BulkUpload.Entity; + import lombok.*; + import javax.persistence.*; + import java.time.LocalDateTime; + import java.util.*; + + @Entity + @Data + public class BulkUpload_t{ + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String entity_name; + private String description; + private String rule_line; + private boolean active; + private String fileType; + + } \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Entity/MappingRule.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Entity/MappingRule.java new file mode 100644 index 0000000..bb40e5a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Entity/MappingRule.java @@ -0,0 +1,24 @@ +package com.realnet.BulkUpload.Entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +import lombok.Data; + +@Entity +@Data +public class MappingRule { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String entity_name; + private String description; + private String mapping_rule; + private boolean active; + private String fileType; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Repository/BulkUpload_Repository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Repository/BulkUpload_Repository.java new file mode 100644 index 0000000..efa1764 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Repository/BulkUpload_Repository.java @@ -0,0 +1,21 @@ +package com.realnet.BulkUpload.Repository; + + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + + +import com.realnet.BulkUpload.Entity.BulkUpload_t; + + +@Repository +public interface BulkUpload_Repository extends JpaRepository { + + @Query(value = "SELECT * FROM bulk_upload_t where entity_name =?1", nativeQuery = true) + BulkUpload_t getentityName(String name); + +// @Query(value = "SELECT * FROM bulk_upload_t where entity_name =?1", nativeQuery = true) +// BulkUpload_t getByName(String name); + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Repository/MappingRuleRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Repository/MappingRuleRepository.java new file mode 100644 index 0000000..46b22b9 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Repository/MappingRuleRepository.java @@ -0,0 +1,11 @@ +package com.realnet.BulkUpload.Repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.BulkUpload.Entity.MappingRule; + +@Repository +public interface MappingRuleRepository extends JpaRepository{ + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Services/BulkUpload_Service.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Services/BulkUpload_Service.java new file mode 100644 index 0000000..3723171 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Services/BulkUpload_Service.java @@ -0,0 +1,40 @@ +package com.realnet.BulkUpload.Services; + +import com.realnet.BulkUpload.Repository.BulkUpload_Repository; +import com.realnet.BulkUpload.Entity.BulkUpload_t; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class BulkUpload_Service { + @Autowired + private BulkUpload_Repository Repository; + + public BulkUpload_t Savedata(BulkUpload_t data) { + return Repository.save(data); + } + + public List getdetails() { + return (List) Repository.findAll(); + } + + public BulkUpload_t getdetailsbyId(Long id) { + return Repository.findById(id).get(); + } + + public void delete_by_id(Long id) { + Repository.deleteById(id); + } + + public BulkUpload_t update(BulkUpload_t data, Long id) { + BulkUpload_t old = Repository.findById(id).get(); + old.setEntity_name(data.getEntity_name()); + old.setDescription(data.getDescription()); + old.setRule_line(data.getRule_line()); + old.setActive(data.isActive()); + final BulkUpload_t test = Repository.save(old); + return test; + } +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Services/MappingRuleService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Services/MappingRuleService.java new file mode 100644 index 0000000..733a874 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Services/MappingRuleService.java @@ -0,0 +1,43 @@ +package com.realnet.BulkUpload.Services; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.realnet.BulkUpload.Entity.BulkUpload_t; +import com.realnet.BulkUpload.Entity.MappingRule; +import com.realnet.BulkUpload.Repository.MappingRuleRepository; + +@Service +public class MappingRuleService { + + @Autowired + private MappingRuleRepository Repository; + + public MappingRule Savedata(MappingRule data) { + return Repository.save(data); + } + + public List getdetails() { + return (List) Repository.findAll(); + } + + public MappingRule getdetailsbyId(Long id) { + return Repository.findById(id).get(); + } + + public void delete_by_id(Long id) { + Repository.deleteById(id); + } + + public MappingRule update(MappingRule data, Long id) { + MappingRule old = Repository.findById(id).get(); + old.setEntity_name(data.getEntity_name()); + old.setDescription(data.getDescription()); + old.setMapping_rule(data.getMapping_rule()); + old.setActive(data.isActive()); + final MappingRule test = Repository.save(old); + return test; + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Communication/Services/EmailNotificationService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Communication/Services/EmailNotificationService.java new file mode 100644 index 0000000..7fb94f4 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Communication/Services/EmailNotificationService.java @@ -0,0 +1,180 @@ +package com.realnet.Communication.Services; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.stream.Collectors; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; +import org.springframework.web.client.ResourceAccessException; +import org.springframework.web.client.RestTemplate; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.realnet.config.EmailService; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.service1.AppUserServiceImpl; +import com.realnet.utils.Port_Constant; + +@Service +public class EmailNotificationService { + + @Autowired + private EmailService emailService; + + @Autowired + private AppUserServiceImpl userService; + + public void sendDirectEmail(String email, String subject, String message) throws JsonProcessingException { + // Call the sendSimpleMessage method from EmailService + emailService.sendSimpleMessage(null, email, subject, message); + } + + public void sendmailViaSetu(String email, String Name, String type) { + // Call the method from EmailCommunicationService + + switch (type) { + case "TeamMember": + sendEmailTeamMember(email, Name); + break; + + case "WorkSpaceUser": + sendEmailtoWorkUser(email, Name); + break; + case "AddProject": + sendEmailAfterAddPrj(email, Name); + break; + + case "CopyProject": + sendEmailAfterCopyPrj(email, Name); + break; + + case "CreateWireframe": + sendEmailAfterCopyPrj(email, Name); + break; + + default: + break; + } + + } + +// for sending mail to team member + public ResponseEntity sendEmailTeamMember(String email, String FullName) { + // Call the method from EmailCommunicationService + + String subject = "Team Added to Workspace"; + String message = "Dear " + FullName + ",\n\nYou have been added to the workspace."; + String templateName = "addproject"; + String gatewayName = "ganesh"; + + // Sending the email via Setu + + ResponseEntity responseEntity = sendEmailViaSetu(email, message, templateName, gatewayName); + return responseEntity; + } + +// for sending mail to Sec workspace User + public ResponseEntity sendEmailtoWorkUser(String email, String FullName) { + // Call the method from EmailCommunicationService + + String subject = "Workspace Access Granted"; + String message = "Dear " + FullName + ",\n\nYou have been granted access to the workspace."; + String templateName = "addproject"; // Replace with actual template name + String gatewayName = "ganesh"; // Replace with actual gateway name + + // Sending the email via Setu + return sendEmailViaSetu(email, message, templateName, gatewayName); + } + +// for sending mail After Add project + public ResponseEntity sendEmailAfterAddPrj(String email, String Name) { + // Call the method from EmailCommunicationService + + String subject = "Add Project"; + String message = "Project " + Name + " has been created successfully."; + String templateName = "addproject"; // Replace with actual template name + String gatewayName = "ganesh"; // Replace with actual gateway name + + // Sending the email via Setu + return sendEmailViaSetu(email, message, templateName, gatewayName); + } + +// for sending mail After Copy project + public ResponseEntity sendEmailAfterCopyPrj(String email, String Name) { + // Call the method from EmailCommunicationService + + String subject = "Copy Project"; + String message = "Project " + Name + " has been Copied successfully."; + String templateName = "addproject"; // Replace with actual template name + String gatewayName = "ganesh"; // Replace with actual gateway name + + // Sending the email via Setu + return sendEmailViaSetu(email, message, templateName, gatewayName); + } + +// for sending mail After create Wireframe + public ResponseEntity sendEmailAfterCreateWireframe(String email, String Name) { + // Call the method from EmailCommunicationService + + String subject = "Create Wireframe"; + String message = "A new wireframe has been successfully added to your project."; + + String templateName = "addproject"; // Replace with actual template name + String gatewayName = "ganesh"; // Replace with actual gateway name + + // Sending the email via Setu + return sendEmailViaSetu(email, message, templateName, gatewayName); + } + +// send mail via setu + public ResponseEntity sendEmailViaSetu(String email, String message, String templateName, String gatewayName) + throws ResourceAccessException { + +// template name = notification_template, gateway name = email_gateway + try { + + String jsonData = "{\r\n" + " \"job_type\": \"Email\",\r\n" + " \"send_to\": \"" + email.trim() + + "\",\r\n" + " \"cc\": \"cc@example.com\",\r\n" +// + " \"attachment\": \"sample-file.txt\",\r\n" + + " \"gatewaydone\": \"N\",\r\n" + " \"template_name\": \"" + templateName.trim() + "\",\r\n" + + " \"replacement_string\": \"Hello, {name} " + message + "!\",\r\n" + " \"gatewayName\": \"" + + gatewayName.trim() + "\"\r\n" + "}\r\n"; + + HttpHeaders headers = new HttpHeaders(); +// headers.setContentType(MediaType.MULTIPART_FORM_DATA); + + MultiValueMap queryParams = new LinkedMultiValueMap<>(); + queryParams.add("data", jsonData); + + HttpEntity> requestEntity = new HttpEntity<>(queryParams, headers); + + String apiUrl2 = Port_Constant.SURE_SETU_DOMAIN + + "/token/Surecommunication/communication/jobtable/Com_jobTable"; // Replace with the + // actual API URL + + RestTemplate restTemplate = new RestTemplate(); + + ResponseEntity responseEntity = restTemplate.postForEntity(apiUrl2, requestEntity, String.class); + + return ResponseEntity.ok(responseEntity.getBody()); + + } catch (ResourceAccessException e) { + throw new ResourceAccessException("communication server no start..." + e); + } + + catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); + } + + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/CredentialDatabase/Config/Databaseconfig.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/CredentialDatabase/Config/Databaseconfig.java new file mode 100644 index 0000000..0190ae8 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/CredentialDatabase/Config/Databaseconfig.java @@ -0,0 +1,40 @@ +//package com.realnet.CredentialDatabase.Config; +// +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +//import org.springframework.jdbc.datasource.DriverManagerDataSource; +// +//import com.fasterxml.jackson.core.JsonProcessingException; +//import com.fasterxml.jackson.databind.JsonMappingException; +//import com.realnet.CredentialDatabase.Service.SurevaultService; +// +//import java.util.Properties; +// +//import javax.sql.DataSource; +// +//@Configuration +//public class Databaseconfig { +// +// @Autowired +// private SurevaultService surevaultService; +// +// @Bean +// public DataSource dataSource() throws JsonMappingException { +// DriverManagerDataSource dataSource = new DriverManagerDataSource(); +// +// try { +// dataSource.setUrl(surevaultService.getSurevaultCredentials("databaseUrl")); +// dataSource.setUsername(surevaultService.getSurevaultCredentials("databaseuserName")); +// dataSource.setPassword(surevaultService.getSurevaultCredentials("databasePassword")); +// +// } catch (JsonProcessingException e) { +// // Handle exceptions or log errors +// e.printStackTrace(); +// } +// +// // Other DataSource configurations +// +// return dataSource; +// } +//} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/CredentialDatabase/Service/SurevaultService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/CredentialDatabase/Service/SurevaultService.java new file mode 100644 index 0000000..dcbc550 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/CredentialDatabase/Service/SurevaultService.java @@ -0,0 +1,115 @@ +package com.realnet.CredentialDatabase.Service; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.realnet.utils.Port_Constant; + +@Service +public class SurevaultService { + + @Value("${spring.datasource.url}") + public String url; + + @Value("${spring.datasource.username}") + public String username; + + @Value("${spring.datasource.password}") + public String password; + + public String getSurevaultCredentials(String key) throws JsonProcessingException { + +// String SurevaultDeploymentType = Port_Constant.SUREVAULT_DEPLOYMENT_TYPE; +// System.out.println(SurevaultDeploymentType); +// // Obtain the token +// String token = callconnector("surevault").toString(); +// +// String surevaultApiUrl =Port_Constant.SURE_VAULT_DOMAIN + "/getcredentials/" + SurevaultDeploymentType; +// +// ResponseEntity get = GET(surevaultApiUrl, token); +// +// Object responseBody = get.getBody(); +// +// JsonNode jsonNode = new ObjectMapper().convertValue(responseBody, JsonNode.class); +// String value = jsonNode.get(key).asText(); + + String value = ""; + switch (key) { + case "databaseUrl": + + value = url; + break; + + case "databaseuserName": + + value = username; + break; + + case "databasePassword": + + value = password; + break; + + default: + break; + } + + return value; + + } + + public String callconnector(String name) throws JsonProcessingException { + RestTemplate restTemplate = new RestTemplate(); + String url = Port_Constant.SURE_VAULT_DOMAIN + "/token/Sure_Connectbyname/" + name; + System.out.println(Port_Constant.SURE_VAULT_DOMAIN); + + ResponseEntity u = restTemplate.getForEntity(url, Object.class); + Object object = u.getBody(); + + ObjectMapper mapper = new ObjectMapper(); + String str = mapper.writeValueAsString(object); + + JsonParser parser = new JsonParser(); + JsonElement element = parser.parse(str); + + JsonObject obj = element.getAsJsonObject(); + JsonElement token = obj.get("access_token"); + System.out.println("token is == " + token); + return token.getAsString(); + } + + public ResponseEntity GET(String get, String token) { + RestTemplate restTemplate = new RestTemplate(); + String resourceUrl = get; + String token1 = "Bearer " + token; + HttpHeaders headers = getHeaders(); + headers.set("Authorization", token1); + HttpEntity request = new HttpEntity(headers); + ResponseEntity u = restTemplate.exchange(resourceUrl, HttpMethod.GET, request, Object.class); + + int statusCodeValue = u.getStatusCodeValue(); + System.out.println(statusCodeValue); + + return u; + + } + + private HttpHeaders getHeaders() { + HttpHeaders headers = new HttpHeaders(); + headers.set("Content-Type", MediaType.APPLICATION_JSON_VALUE); + headers.set("Accept", MediaType.APPLICATION_JSON_VALUE); + return headers; + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Controller/Dashboard2.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Controller/Dashboard2.java new file mode 100644 index 0000000..10ab846 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Controller/Dashboard2.java @@ -0,0 +1,30 @@ +//package com.realnet.Dashboard1.Controller; +// +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.web.bind.annotation.GetMapping; +//import org.springframework.web.bind.annotation.PathVariable; +//import org.springframework.web.bind.annotation.RequestMapping; +//import org.springframework.web.bind.annotation.RestController; +// +//import com.realnet.Dashboard1.Entity.Dashbord_Header; +//import com.realnet.Dashboard1.Repository.HeaderRepository; +//import com.realnet.Dashboard1.Service.HeaderService; +// +//@RestController +//@RequestMapping("/token/dashboard2") +//public class Dashboard2 { +// +// @Autowired +// private HeaderService headerService; +// +// @Autowired +// private HeaderRepository headerRepository; +// +// @GetMapping("/getdashboardbyname/{name}") +// public Integer getdetailsbyId(@PathVariable String name) { +// Dashbord_Header dash = headerRepository.findByDashboardName(name); +// Integer id=dash.getId(); +// return id; +// } +// +//} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Controller/Dashbord1Controller.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Controller/Dashbord1Controller.java new file mode 100644 index 0000000..d23a9f0 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Controller/Dashbord1Controller.java @@ -0,0 +1,110 @@ +package com.realnet.Dashboard1.Controller; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.Dashboard1.Entity.Dashbord1_Line; +import com.realnet.Dashboard1.Entity.Dashbord_Header; +import com.realnet.Dashboard1.Repository.HeaderRepository; +import com.realnet.Dashboard1.Service.HeaderService; + +@RestController +public class Dashbord1Controller { + + @Autowired + private HeaderService headerService; + + @Autowired + private HeaderRepository headerRepository; + +// @PreAuthorize("hasAnyRole('SYSADMIN','ProjectManager','Developer')") + @PostMapping("/Savedata") + public Dashbord_Header Savedata(@RequestBody Dashbord_Header dashbord_Header) { + Dashbord_Header dash = headerService.Savedata(dashbord_Header); + return dash; + } + + @GetMapping("/get_Dashboard_header") + public List getdetails() { + List dash = headerService.getdetails(); + return dash; + } + + @GetMapping("/get_all_lines") + public List get_all_lines() { + List dash = headerService.get_all_lines(); + return dash; + } + + + + @GetMapping("/get_module_id") + public List get_by_module_id(@RequestParam(value = "module_id") int module_id) { + + List module = headerService.get_by_module_id(module_id); + return module; + + } + + @GetMapping("/get_dashboard_headerbyid/{id}") + public Dashbord_Header getdetailsbyId(@PathVariable int id) { + Dashbord_Header dash = headerService.getdetailsbyId(id); + return dash; + } + +// @PreAuthorize("hasAnyRole('SYSADMIN','ProjectManager','Developer')") + @PutMapping("/update_dashboard_header") + public Dashbord_Header update_dashboard_header(@RequestBody Dashbord_Header dashbord_Header) { + Dashbord_Header dash = headerService.update_dashboard_header(dashbord_Header); + return dash; + } + +// update dashboard line by id + + @PutMapping("/update_Dashbord1_Lineby_id/{id}") + public Dashbord1_Line update_Dashbord1_Lineby_id(@PathVariable int id, @RequestBody Dashbord1_Line dashbord1_Line) { + + Dashbord1_Line dash = headerService.update_Dashbord1_Lineby_id(id, dashbord1_Line); + return dash; + + } + + @PostMapping("/update_Dashbord1_Line") + public Dashbord1_Line update_Dashbord1_Line(@RequestBody Dashbord1_Line dashbord1_Line) { + Dashbord1_Line dash1 = headerService.update_Dashbord1_Line(dashbord1_Line); + return dash1; + } + +// @PreAuthorize("hasAnyRole('SYSADMIN','ProjectManager','Developer')") + @DeleteMapping("/delete_by_header_id/{id}") + public void delete_by_id(@PathVariable int id) { + headerService.delete_by_id(id); + + } + + // COUNT OF LIST BUILDER + @GetMapping("/get_dashboard/{module_id}") + public ResponseEntity getREPORT(@PathVariable Integer module_id) { + String count_wireframe = headerRepository.count_dashboardheader(module_id); + + if (count_wireframe.isEmpty()) { + return new ResponseEntity<>(0, HttpStatus.OK); + + } else { + return new ResponseEntity<>(count_wireframe, HttpStatus.OK); + + } + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Entity/Dashbord1_Line.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Entity/Dashbord1_Line.java new file mode 100644 index 0000000..bf2c9be --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Entity/Dashbord1_Line.java @@ -0,0 +1,45 @@ +package com.realnet.Dashboard1.Entity; + +import java.util.ArrayList; +import java.util.List; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.OneToMany; +import javax.persistence.OneToOne; +import javax.persistence.Table; + +import com.fasterxml.jackson.annotation.JsonBackReference; +import com.fasterxml.jackson.annotation.JsonManagedReference; + +import lombok.Data; +import lombok.ToString; + +@ToString(exclude = { "Dashbord_Header" }) +@Data +@Entity +@Table +public class Dashbord1_Line extends dashbord_Who_collumn { + + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Integer id; + + private String header_id; + + @Column(length = 5000) + private String Model; + + @JsonBackReference + @ManyToOne + private Dashbord_Header dashbord_Header; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Entity/Dashbord_Header.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Entity/Dashbord_Header.java new file mode 100644 index 0000000..e2faf4d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Entity/Dashbord_Header.java @@ -0,0 +1,63 @@ +package com.realnet.Dashboard1.Entity; + +import java.util.ArrayList; +import java.util.List; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.OneToMany; + +import com.fasterxml.jackson.annotation.JsonManagedReference; + +import lombok.Data; +import lombok.ToString; + +@ToString(exclude = { "Dashbord1_Line" }) +@Entity +@Data +public class Dashbord_Header extends dashbord_Who_collumn { + + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "ID") + private Integer id; + +// ============================== + + @Column(name = "MENU_NAME") + private String menuName; + + @Column(name = "IS_UPDATED") + private boolean updated; + + private String tech_Stack; + + private String object_type; + private String sub_object_type; + + @Column(name = "IS_BUILD") + private boolean build; + + private boolean testing; + + private String dashboard_name; + + private int module_id; + + private String description; + + private String secuirity_profile; + + private Boolean add_to_home; + + @JsonManagedReference + @OneToMany(cascade = CascadeType.ALL, mappedBy = "dashbord_Header") + private List dashbord1_Line = new ArrayList<>(); + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Entity/dashbord_Who_collumn.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Entity/dashbord_Who_collumn.java new file mode 100644 index 0000000..0d2f880 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Entity/dashbord_Who_collumn.java @@ -0,0 +1,46 @@ +package com.realnet.Dashboard1.Entity; + +import java.io.Serializable; +import java.util.Date; +import javax.persistence.Column; +import javax.persistence.EntityListeners; +import javax.persistence.MappedSuperclass; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import lombok.Data; + +@Data +@MappedSuperclass +@EntityListeners(AuditingEntityListener.class) +public class dashbord_Who_collumn implements Serializable{ + + private static final long serialVersionUID = 1L; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "CREATED_AT", nullable = false, updatable = false) + @CreatedDate + private Date createdAt; + + // @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createdAt; + + + @Column(name = "CREATED_BY", updatable = false) + private Long createdBy; + + @Column(name = "UPDATED_BY") + private Long updatedBy; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "UPDATED_AT", nullable = false) + @LastModifiedDate + private Date updatedAt; + + @Column(name = "ACCOUNT_ID") + private Long accountId; + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Repository/Dashboard_lineRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Repository/Dashboard_lineRepository.java new file mode 100644 index 0000000..ea7655e --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Repository/Dashboard_lineRepository.java @@ -0,0 +1,20 @@ +package com.realnet.Dashboard1.Repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.CrudRepository; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import com.realnet.Dashboard1.Entity.Dashbord1_Line; + +@Repository +public interface Dashboard_lineRepository extends CrudRepository { + + Dashbord1_Line findById(int id); + + @Query(value = "SELECT * FROM realnet_CNSBE.dashbord1_line where dashbord_header_id =:id", nativeQuery = true) + List getByheader(@Param("id") int id); + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Repository/HeaderRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Repository/HeaderRepository.java new file mode 100644 index 0000000..2934be7 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Repository/HeaderRepository.java @@ -0,0 +1,35 @@ +package com.realnet.Dashboard1.Repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.Dashboard1.Entity.Dashbord_Header; + +@Repository +public interface HeaderRepository extends CrudRepository { + + Dashbord_Header findById(int id); + +// @Query( +// value= " select * from dashboard_header where module_id=?1",nativeQuery=true) +// List findbydashboardmodule(int moduleId); + +// public List findBymodule_id(String module_id); + + @Query(value = " select * from dashbord_header where module_id=?1", nativeQuery = true) + List findbydashboardmodule(int module_id); + +// @Query( +// "select u from Dashbord_Header u WHERE u.module_id =:n") +// List getBymoduleId(int module_id); + + @Query(value = "select count(id) from dashbord_header", nativeQuery = true) + public List findCount(); + + @Query(value = "SELECT count(id) FROM realnet_CNSBE.dashbord_header where module_id=?1", nativeQuery = true) + String count_dashboardheader(Integer moduleId); + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Service/HeaderService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Service/HeaderService.java new file mode 100644 index 0000000..db488cf --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Service/HeaderService.java @@ -0,0 +1,99 @@ +package com.realnet.Dashboard1.Service; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.realnet.Dashboard1.Entity.Dashbord1_Line; +import com.realnet.Dashboard1.Entity.Dashbord_Header; +import com.realnet.Dashboard1.Repository.Dashboard_lineRepository; +import com.realnet.Dashboard1.Repository.HeaderRepository; + +@Service +public class HeaderService { + + @Autowired + private HeaderRepository headerRepository; + + @Autowired + private Dashboard_lineRepository dashboard_lineRepository; + + public Dashbord_Header Savedata(Dashbord_Header dashbord_Header) { + return headerRepository.save(dashbord_Header); + } + + + public List getdetails() { + // TODO Auto-generated method stub + return (List) headerRepository.findAll(); + } + + + public Dashbord_Header getdetailsbyId(int id) { + // TODO Auto-generated method stub + return headerRepository.findById(id); + } + + + public void delete_by_id(int id) { + // TODO Auto-generated method stub + headerRepository.deleteById(id); + } + + + public Dashbord_Header update_dashboard_header(Dashbord_Header dashbord_Header) { + return headerRepository.save(dashbord_Header); + } + + + + + public Dashbord1_Line update_Dashbord1_Line(Dashbord1_Line dashbord1_Line) { + // TODO Auto-generated method stub + return dashboard_lineRepository.save(dashbord1_Line); + } + + + public List get_by_module_id(int module_id) { + // TODO Auto-generated method stub + return (List) headerRepository.findbydashboardmodule(module_id); + } + + + public List get_all_lines() { + // TODO Auto-generated method stub + return (List) dashboard_lineRepository.findAll(); + } + +// public List get_by_module_id(int module_id) { +// // TODO Auto-generated method stub +// return (List) headerRepository.findAllById(module_id); +// } + +// public List get_by_module_id(String module_id) { +// // TODO Auto-generated method stub +// return (List) headerRepository.findBymodule_id(module_id); +// } + + public Dashbord1_Line update_Dashbord1_Lineby_id(int id, Dashbord1_Line dashbord1_Line) { + + + Dashbord1_Line oldline= dashboard_lineRepository.findById(id); +// .orElseThrow(() -> new ResourceNotFoundException(Constant.NOT_FOUND_EXCEPTION + " :" + id)); + + + oldline.setAccountId(dashbord1_Line.getAccountId()); + oldline.setHeader_id(dashbord1_Line.getHeader_id()); + oldline.setModel(dashbord1_Line.getModel()); + final Dashbord1_Line newline= dashboard_lineRepository.save(oldline); + return newline; + } + + + + + + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/ChartBuilder.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/ChartBuilder.java new file mode 100644 index 0000000..00723d9 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/ChartBuilder.java @@ -0,0 +1,967 @@ +package com.realnet.Dashboard_builder.Controllers; + +import java.io.IOException; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; +import java.util.stream.Collectors; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +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.realnet.SureConnect.Entities.Sure_Connect; +import com.realnet.SureConnect.Service.SureService; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j + +@RequestMapping("/chart") +@RestController +public class ChartBuilder { + + @Autowired + private SureService sureService; + + public List> getAllDataFromTable(String tableName) { + List> tableData = new ArrayList<>(); + + Connection connection = null; + Statement statement = null; + ResultSet resultSet = null; + + try { + // Establish a database connection + connection = DriverManager.getConnection( + "jdbc:mysql://realnet.cdtynkxfiu2h.ap-south-1.rds.amazonaws.com:3306/suresetu", "cnsdev", + "cnsdev1234"); + + // Create a SQL statement + statement = connection.createStatement(); + + // Execute the query to retrieve all data from the table + String query = "SELECT * FROM " + tableName; + resultSet = statement.executeQuery(query); + + // Retrieve the column names from the result set + ResultSetMetaData metaData = resultSet.getMetaData(); + int columnCount = metaData.getColumnCount(); + List columnNames = new ArrayList<>(); + for (int i = 1; i <= columnCount; i++) { + columnNames.add(metaData.getColumnName(i)); + } + + // Iterate over the result set and store each row in a map + while (resultSet.next()) { + Map rowData = new HashMap<>(); + for (String columnName : columnNames) { + Object value = resultSet.getObject(columnName); + rowData.put(columnName, value); + } + tableData.add(rowData); + } + } catch (SQLException e) { + log.error(e.getLocalizedMessage()); + } finally { + // Close the resources + if (resultSet != null) { + try { + resultSet.close(); + } catch (SQLException e) { + log.error(e.getLocalizedMessage()); + } + } + if (statement != null) { + try { + statement.close(); + } catch (SQLException e) { + log.error(e.getLocalizedMessage()); + } + } + if (connection != null) { + try { + connection.close(); + } catch (SQLException e) { + log.error(e.getLocalizedMessage()); + } + } + } + + return tableData; + } + +//...........................22.07.2023.............................// + +// @GetMapping(value = "/getdashjson/{job_type}") +// public ResponseEntity jsonretun(@RequestParam String tableName, @PathVariable String job_type, +// @RequestParam String xAxis, @RequestParam String yAxis) throws IOException { +// +// List> tableData = getAllDataFromTable(tableName); // Retrieve all data from the table +// +// List yAxisValues = new ArrayList<>(); +// List xAxisValues = new ArrayList<>(); +// +// for (Map row : tableData) { +// for (Entry entry : row.entrySet()) { +// String key = entry.getKey(); +// Object value = entry.getValue(); +// +// if (key.equalsIgnoreCase(xAxis)) { +// xAxisValues.add(value.toString()); +// } else if (key.equalsIgnoreCase(yAxis)) { +// yAxisValues.add(value); +// } +// } +// } +// +// StringBuilder jsonmap = new StringBuilder(); +// +// if (job_type.equalsIgnoreCase("Bar Chart")) { +// jsonmap.append("[\n"); +// } else if (job_type.equalsIgnoreCase("Line Chart")) { +// jsonmap.append(" {\r\n" + " \"chartData\": [\r\n" + " { \"data\": ["); +// } else if (job_type.equalsIgnoreCase("Doughnut Chart")) { +// jsonmap.append("{\"chartData\": [["); +// } +// +// for (int i = 0; i < xAxisValues.size(); i++) { +// String xValue = xAxisValues.get(i); +// Object yValue = yAxisValues.get(i); +// +// if (job_type.equalsIgnoreCase("Bar Chart")) { +// jsonmap.append("{\"name\": \"" + xValue + "\", \"progress\":\"" + yValue + "\"},\n"); +// } else if (job_type.equalsIgnoreCase("Line Chart")) { +// jsonmap.append(yValue + ","); +// } else if (job_type.equalsIgnoreCase("Doughnut Chart")) { +// jsonmap.append(yValue + ","); +// } +// } +// +// if (!xAxisValues.isEmpty() && !yAxisValues.isEmpty()) { +// jsonmap.deleteCharAt(jsonmap.lastIndexOf(",")); +// } +// +// if (job_type.equalsIgnoreCase("Bar Chart")) { +// jsonmap.append("]"); +// } else if (job_type.equalsIgnoreCase("Line Chart")) { +// jsonmap.append("], \"label\": \"" + yAxis + "\" }\r\n" + " ],\r\n" + " \"chartLabels\": [ "); +// } else if (job_type.equalsIgnoreCase("Doughnut Chart")) { +// jsonmap.append("]],\r\n" + " \"chartLabels\": ["); +// } +// +// for (String xValue : xAxisValues) { +// jsonmap.append("\"" + xValue + "\","); +// } +// +// if (!xAxisValues.isEmpty()) { +// jsonmap.deleteCharAt(jsonmap.lastIndexOf(",")); +// } +// +// if (job_type.equalsIgnoreCase("Line Chart")) { +// jsonmap.append("] \n }\n"); +// } else if (job_type.equalsIgnoreCase("Doughnut Chart")) { +// jsonmap.append("]\n" + "}"); +// } +// +// return new ResponseEntity<>(jsonmap.toString(), HttpStatus.CREATED); +// } + + @GetMapping(value = "/getdashjson/{job_type}") + public ResponseEntity jsonretun2(@PathVariable String job_type, @RequestParam String tableName, + @RequestParam(required = false) String xAxis, @RequestParam(required = false) List yAxes, + @RequestParam Integer sureId, @RequestParam(required = false) String parameter, + @RequestParam(required = false) String parameterValue) throws IOException { + + StringBuilder jsonmap = new StringBuilder(); + + if (job_type.equalsIgnoreCase("Grid")) { + List> allData = getAllDataFromApi(tableName, sureId); + + jsonmap.append("[\n"); + + for (Map row : allData) { + jsonmap.append("{\n"); + + int colCount = 0; + for (String yAxis : yAxes) { + String key = yAxis; + Object value = row.get(key); + + jsonmap.append("\"" + key + "\": \"" + value + "\""); + + colCount++; + if (colCount < yAxes.size()) { + jsonmap.append(", "); + } + jsonmap.append("\n"); + } + + jsonmap.append("}"); + + if (!row.equals(allData.get(allData.size() - 1))) { + jsonmap.append(", "); + } + } + + jsonmap.append("\n]\n"); + + return new ResponseEntity<>(jsonmap.toString(), HttpStatus.CREATED); + } + + if (job_type.equalsIgnoreCase("Todo List") && yAxes != null && !yAxes.isEmpty()) { + List> allData = getAllDataFromApi(tableName, sureId); + + String listName = yAxes.get(0); // Assuming the first column in yAxes to be the list name + List listData = new ArrayList<>(); + + for (Map row : allData) { + Object value = row.get(listName); + + if (value != null) { + listData.add(value); + } + } + + Map response = new HashMap<>(); + response.put("listName", listName); + response.put("List", listData); + + return new ResponseEntity<>(response, HttpStatus.CREATED); + } + + List> tableData = getAllDataFromApi(tableName, sureId); // Retrieve all data from the table + // ✅ Filter table data if parameter and parameterValue are provided + if (parameter != null && !parameter.trim().isEmpty() && parameterValue != null + && !parameterValue.trim().isEmpty()) { + + tableData = tableData.stream().filter(row -> { + Object paramVal = row.get(parameter); + return paramVal != null && paramVal.toString().equalsIgnoreCase(parameterValue); + }).collect(Collectors.toList()); + } + List> yAxisValuesList = new ArrayList<>(); + List xAxisValues = new ArrayList<>(); + List parameterValues = new ArrayList<>(); + + // Initialize a list for each y-axis parameter + for (int i = 0; i < yAxes.size(); i++) { + yAxisValuesList.add(new ArrayList<>()); + } + + for (Map row : tableData) { + for (Entry entry : row.entrySet()) { + String key = entry.getKey(); + Object value = entry.getValue(); + + if (value != null && key.equalsIgnoreCase(xAxis)) { + xAxisValues.add(value.toString()); + } else { + int yIndex = yAxes.indexOf(key); + if (yIndex >= 0) { + yAxisValuesList.get(yIndex).add(value); + } + } + + } + } + + jsonmap = getJson(jsonmap, yAxes, xAxisValues, yAxisValuesList, parameterValues); + +// if (job_type.equalsIgnoreCase("Bar Chart") || job_type.equalsIgnoreCase("Bar")) { +// jsonmap.append("{\n \"barChartData\": [\n"); +// +// for (int j = 0; j < yAxes.size(); j++) { +// String yAxis = yAxes.get(j); +// +// jsonmap.append("{"); +// jsonmap.append("\"data\": ["); +// +// for (int i = 0; i < xAxisValues.size(); i++) { +//// Object yValue = yAxisValuesList.get(j).get(i); +// +// List list = yAxisValuesList.get(j); +// if (list.isEmpty()) { +// continue; +// +// } +// Object yValue = list.get(i); +// // ✅ Accept Integer, Long, Double, Float, or numeric Strings +// if (yValue instanceof Number) { +// jsonmap.append(yValue); +// } else if (yValue instanceof String) { +// String yStr = ((String) yValue).trim(); +// try { +// // Parse and append only if numeric +// Double num = Double.parseDouble(yStr); +// jsonmap.append(num); +// } catch (NumberFormatException e) { +// // not numeric — skip +// continue; +// } +// } else { +// continue; // skip non-numeric values +// } +// +// if (i < xAxisValues.size() - 1) { +// jsonmap.append(","); +// } +// } +// +// // 🧹 Remove trailing comma if any +// int lastIndex = jsonmap.lastIndexOf(","); +// if (lastIndex == jsonmap.length() - 1) { +// jsonmap.deleteCharAt(lastIndex); +// } +// jsonmap.append("],"); +// jsonmap.append("\"label\": \"" + yAxis + "\""); +// jsonmap.append("}"); +// +// if (j < yAxes.size() - 1) { +// jsonmap.append(","); +// } +// } +// +// jsonmap.append("],\n \"barChartLabels\": [ "); +// +// for (String xValue : xAxisValues) { +// jsonmap.append("\"" + xValue + "\","); +// } +// +// if (!xAxisValues.isEmpty()) { +// jsonmap.deleteCharAt(jsonmap.lastIndexOf(",")); +// } +// +// jsonmap.append("] \n }\n"); +// } +// +// else if (job_type.equalsIgnoreCase("Line Chart") || job_type.equalsIgnoreCase("Line")) { +// jsonmap.append("{\n \"chartData\": [\n"); +// +// for (int j = 0; j < yAxes.size(); j++) { +// String yAxis = yAxes.get(j); +// +// jsonmap.append("{"); +// jsonmap.append("\"data\": ["); +// +// for (int i = 0; i < xAxisValues.size(); i++) { +// List list = yAxisValuesList.get(j); +// if (list.isEmpty()) { +// continue; +// +// } +// Object yValue = list.get(i); +// // ✅ Accept Integer, Long, Double, Float, or numeric Strings +// if (yValue instanceof Number) { +// jsonmap.append(yValue); +// } else if (yValue instanceof String) { +// String yStr = ((String) yValue).trim(); +// try { +// // Parse and append only if numeric +// Double num = Double.parseDouble(yStr); +// jsonmap.append(num); +// } catch (NumberFormatException e) { +// // not numeric — skip +// continue; +// } +// } else { +// continue; // skip non-numeric values +// } +// +// if (i < xAxisValues.size() - 1) { +// jsonmap.append(","); +// } +// } +// +// // 🧹 Remove trailing comma if any +// int lastIndex = jsonmap.lastIndexOf(","); +// if (lastIndex == jsonmap.length() - 1) { +// jsonmap.deleteCharAt(lastIndex); +// } +// +// jsonmap.append("],"); +// jsonmap.append("\"label\": \"" + yAxis + "\""); +// jsonmap.append("}"); +// +// if (j < yAxes.size() - 1) { +// jsonmap.append(","); +// } +// } +// +// jsonmap.append("],\n \"chartLabels\": [ "); +// +// for (String xValue : xAxisValues) { +// jsonmap.append("\"" + xValue + "\","); +// } +// +// if (!xAxisValues.isEmpty()) { +// jsonmap.deleteCharAt(jsonmap.lastIndexOf(",")); +// } +// +// jsonmap.append("] \n }\n"); +// } else if (job_type.equalsIgnoreCase("Doughnut Chart") || job_type.equalsIgnoreCase("Doughnut")) { +// jsonmap.append("{\"chartData\": [\n"); +// +// for (int j = 0; j < yAxes.size(); j++) { +// String yAxis = yAxes.get(j); +// +// jsonmap.append("["); +// +// for (int i = 0; i < xAxisValues.size(); i++) { +// Object yValue = yAxisValuesList.get(j).get(i); +// jsonmap.append(yValue); +// +// if (i < xAxisValues.size() - 1) { +// jsonmap.append(","); +// } +// } +// +// jsonmap.append("]"); +// +// if (j < yAxes.size() - 1) { +// jsonmap.append(","); +// } +// } +// +// jsonmap.append("],\n \"chartLabels\": ["); +// +// for (String xValue : xAxisValues) { +// jsonmap.append("\"" + xValue + "\","); +// } +// +// if (!xAxisValues.isEmpty()) { +// jsonmap.deleteCharAt(jsonmap.lastIndexOf(",")); +// } +// +// jsonmap.append("]\n}"); +// } +// +// else if (job_type.equalsIgnoreCase("Radar Chart") || job_type.equalsIgnoreCase("Radar")) { +// jsonmap.append("{\n \"radarChartData\": [\n"); +// +// for (int j = 0; j < yAxes.size(); j++) { +// String yAxis = yAxes.get(j); +// +// jsonmap.append("{"); +// jsonmap.append("\"data\": ["); +// +// for (int i = 0; i < xAxisValues.size(); i++) { +// Object yValue = yAxisValuesList.get(j).get(i); +// jsonmap.append(yValue); +// +// if (i < xAxisValues.size() - 1) { +// jsonmap.append(","); +// } +// } +// +// jsonmap.append("],"); +// jsonmap.append("\"label\": \"" + yAxis + "\""); +// jsonmap.append("}"); +// +// if (j < yAxes.size() - 1) { +// jsonmap.append(","); +// } +// } +// +// jsonmap.append("],\n \"radarChartLabels\": [ "); +// +// for (String xValue : xAxisValues) { +// jsonmap.append("\"" + xValue + "\","); +// } +// +// if (!xAxisValues.isEmpty()) { +// jsonmap.deleteCharAt(jsonmap.lastIndexOf(",")); +// } +// +// jsonmap.append("] \n }\n"); +// } +// +// else if (job_type.equalsIgnoreCase("PolarArea Chart") || job_type.equalsIgnoreCase("PolarArea")) { +// jsonmap.append("{\n \"polarAreaChartData\": [\n"); +// +// for (int j = 0; j < yAxes.size(); j++) { +// String yAxis = yAxes.get(j); +// +// jsonmap.append("{"); +// jsonmap.append("\"data\": ["); +// +// for (int i = 0; i < xAxisValues.size(); i++) { +// Object yValue = yAxisValuesList.get(j).get(i); +// jsonmap.append(yValue); +// +// if (i < xAxisValues.size() - 1) { +// jsonmap.append(","); +// } +// } +// +// jsonmap.append("],"); +// jsonmap.append("\"label\": \"" + yAxis + "\""); +// jsonmap.append("}"); +// +// if (j < yAxes.size() - 1) { +// jsonmap.append(","); +// } +// } +// +// jsonmap.append("],\n \"polarAreaChartLabels\": [ "); +// +// for (String xValue : xAxisValues) { +// jsonmap.append("\"" + xValue + "\","); +// } +// +// if (!xAxisValues.isEmpty()) { +// jsonmap.deleteCharAt(jsonmap.lastIndexOf(",")); +// } +// +// jsonmap.append("] \n }\n"); +// } +// +// if (job_type.equalsIgnoreCase("Pie Chart") || job_type.equalsIgnoreCase("Pie")) { +// jsonmap.append("{\n \"pieChartData\": ["); +// +// for (int i = 0; i < yAxisValuesList.get(0).size(); i++) { // Assuming "mark" is the first item in yAxes +// jsonmap.append(yAxisValuesList.get(0).get(i)); // Use the y-axis values +// +// if (i < yAxisValuesList.get(0).size() - 1) { +// jsonmap.append(","); +// } +// } +// +// jsonmap.append("],\n \"pieChartLabels\": [ "); +// +// for (int i = 0; i < xAxisValues.size(); i++) { // Assuming "name" is the x-axis +// jsonmap.append("\"" + xAxisValues.get(i) + "\""); // Use the x-axis values +// +// if (i < xAxisValues.size() - 1) { +// jsonmap.append(","); +// } +// } +// +// jsonmap.append("] \n }\n"); +// } +// +// else if (job_type.equalsIgnoreCase("Bubble Chart") || job_type.equalsIgnoreCase("Bubble")) { +// jsonmap.append("{\n \"bubbleChartData\": [\n"); +// +// for (int j = 0; j < yAxes.size(); j++) { +// String yAxis = yAxes.get(j); +// +// jsonmap.append("{"); +// jsonmap.append("\"data\": ["); +// +// for (int i = 0; i < xAxisValues.size(); i++) { +// Object xValue = xAxisValues.get(i); +// Object yValue = yAxisValuesList.get(j).get(i); +// int radius = 5 + (i % 3) * 3; // Adjust the radius as needed +// +// jsonmap.append("{ \"x\": " + xValue + ", \"y\": " + yValue + ", \"r\": " + radius + "}"); +// +// if (i < xAxisValues.size() - 1) { +// jsonmap.append(","); +// } +// } +// +// jsonmap.append("],"); +// jsonmap.append("\"label\": \"" + yAxis + "\""); +// jsonmap.append("}"); +// +// if (j < yAxes.size() - 1) { +// jsonmap.append(","); +// } +// } +// +// jsonmap.append("],\n \"bubbleChartLabels\": [ "); +// +// for (String label : xAxisValues) { +// jsonmap.append("\"" + label + "\","); +// } +// +// if (!xAxisValues.isEmpty()) { +// jsonmap.deleteCharAt(jsonmap.lastIndexOf(",")); +// } +// +// jsonmap.append("] \n }\n"); +// } else if (job_type.equalsIgnoreCase("Scatter Chart") || job_type.equalsIgnoreCase("Scatter")) { +// jsonmap.append("{\n \"scatterChartData\": [\n"); +// +// for (int j = 0; j < yAxes.size(); j++) { +// String yAxis = yAxes.get(j); +// +// jsonmap.append("{"); +// jsonmap.append("\"data\": ["); +// +// for (int i = 0; i < xAxisValues.size(); i++) { +// Object xValue = xAxisValues.get(i); +// Object yValue = yAxisValuesList.get(j).get(i); +// +// jsonmap.append("{ \"x\": " + xValue + ", \"y\": " + yValue + "}"); +// +// if (i < xAxisValues.size() - 1) { +// jsonmap.append(","); +// } +// } +// +// jsonmap.append("],"); +// jsonmap.append("\"label\": \"" + yAxis + "\""); +// jsonmap.append("}"); +// +// if (j < yAxes.size() - 1) { +// jsonmap.append(","); +// } +// } +// +// jsonmap.append("],\n \"scatterChartLabels\": [ "); +// +// for (String label : xAxisValues) { +// jsonmap.append("\"" + label + "\","); +// } +// +// if (!xAxisValues.isEmpty()) { +// jsonmap.deleteCharAt(jsonmap.lastIndexOf(",")); +// } +// +// jsonmap.append("] \n }\n"); +// } +// +// else if (job_type.equalsIgnoreCase("Dynamic Chart") || job_type.equalsIgnoreCase("Dynamic")) { +// jsonmap.append("{\n \"dynamicChartData\": [\n"); +// +// for (int j = 0; j < yAxes.size(); j++) { +// String yAxis = yAxes.get(j); +// +// jsonmap.append("{"); +// jsonmap.append("\"data\": ["); +// +// for (int i = 0; i < xAxisValues.size(); i++) { +// Object yValue = yAxisValuesList.get(j).get(i); +// jsonmap.append(yValue); +// +// if (i < xAxisValues.size() - 1) { +// jsonmap.append(","); +// } +// } +// +// jsonmap.append("],"); +// jsonmap.append("\"label\": \"" + yAxis + "\""); +// jsonmap.append("}"); +// +// if (j < yAxes.size() - 1) { +// jsonmap.append(","); +// } +// } +// +// jsonmap.append("],\n \"dynamicChartLabels\": [ "); +// +// for (String xValue : xAxisValues) { +// jsonmap.append("\"" + xValue + "\","); +// } +// +// if (!xAxisValues.isEmpty()) { +// jsonmap.deleteCharAt(jsonmap.lastIndexOf(",")); +// } +// +// jsonmap.append("] \n }\n"); +// } + + return new ResponseEntity<>(jsonmap.toString(), HttpStatus.CREATED); + } + + public StringBuilder getJson(StringBuilder jsonmap, List yAxes, List xAxisValues, + List> yAxisValuesList, List parameterValues) { + + jsonmap.append("{\n \"chartData\": [\n"); + + for (int j = 0; j < yAxes.size(); j++) { + String yAxis = yAxes.get(j); + + jsonmap.append("{"); + jsonmap.append("\"data\": ["); + + // --- Y-Axis Data --- + for (int i = 0; i < xAxisValues.size(); i++) { + List list = yAxisValuesList.get(j); + if (list == null || list.isEmpty() || i >= list.size()) { + continue; + } + + Object yValue = list.get(i); + if (yValue instanceof Number) { + jsonmap.append(yValue); + } else if (yValue instanceof String) { + String yStr = ((String) yValue).trim(); + try { + Double num = Double.parseDouble(yStr); + jsonmap.append(num); + } catch (NumberFormatException e) { + continue; // skip non-numeric + } + } else { + continue; // skip invalid + } + + if (i < xAxisValues.size() - 1) { + jsonmap.append(","); + } + } + + // 🧹 Remove trailing comma + int lastIndex = jsonmap.lastIndexOf(","); + if (lastIndex == jsonmap.length() - 1) { + jsonmap.deleteCharAt(lastIndex); + } + + jsonmap.append("],"); + jsonmap.append("\"label\": \"" + yAxis + "\""); + jsonmap.append("}"); + + if (j < yAxes.size() - 1) { + jsonmap.append(","); + } + } + + // --- Chart Labels (X-Axis) --- + jsonmap.append("],\n \"chartLabels\": ["); + for (String xValue : xAxisValues) { + jsonmap.append("\"").append(xValue).append("\","); + } + + if (!xAxisValues.isEmpty()) { + jsonmap.deleteCharAt(jsonmap.lastIndexOf(",")); + } + jsonmap.append("],"); + + // --- Parameter Values --- + jsonmap.append("\n \"parameterValues\": ["); + if (parameterValues != null && !parameterValues.isEmpty()) { + for (String param : parameterValues) { + if (param != null && !param.trim().isEmpty()) { + jsonmap.append("\"").append(param.trim()).append("\","); + } + } + // Remove trailing comma + int lastComma = jsonmap.lastIndexOf(","); + if (lastComma == jsonmap.length() - 1) { + jsonmap.deleteCharAt(lastComma); + } + } + jsonmap.append("]\n}"); + + return jsonmap; + } + +// get json data +// public StringBuilder getJson(StringBuilder jsonmap, List yAxes, List xAxisValues, +// List> yAxisValuesList, List parameterValues) { +// jsonmap.append("{\n \"chartData\": [\n"); +// +// for (int j = 0; j < yAxes.size(); j++) { +// String yAxis = yAxes.get(j); +// +// jsonmap.append("{"); +// jsonmap.append("\"data\": ["); +// +// for (int i = 0; i < xAxisValues.size(); i++) { +// List list = yAxisValuesList.get(j); +// if (list.isEmpty()) { +// continue; +// +// } +// Object yValue = list.get(i); +// // ✅ Accept Integer, Long, Double, Float, or numeric Strings +// if (yValue instanceof Number) { +// jsonmap.append(yValue); +// } else if (yValue instanceof String) { +// String yStr = ((String) yValue).trim(); +// try { +// // Parse and append only if numeric +// Double num = Double.parseDouble(yStr); +// jsonmap.append(num); +// } catch (NumberFormatException e) { +// // not numeric — skip +// continue; +// } +// } else { +// continue; // skip non-numeric values +// } +// +// if (i < xAxisValues.size() - 1) { +// jsonmap.append(","); +// } +// } +// +// // 🧹 Remove trailing comma if any +// int lastIndex = jsonmap.lastIndexOf(","); +// if (lastIndex == jsonmap.length() - 1) { +// jsonmap.deleteCharAt(lastIndex); +// } +// +// jsonmap.append("],"); +// jsonmap.append("\"label\": \"" + yAxis + "\""); +// jsonmap.append("}"); +// +// if (j < yAxes.size() - 1) { +// jsonmap.append(","); +// } +// } +// +// jsonmap.append("],\n \"chartLabels\": [ "); +// +// for (String xValue : xAxisValues) { +// jsonmap.append("\"" + xValue + "\","); +// } +// +// if (!xAxisValues.isEmpty()) { +// jsonmap.deleteCharAt(jsonmap.lastIndexOf(",")); +// } +// +// jsonmap.append("] \n }\n"); +// +// return jsonmap; +// } +// + + @GetMapping("/getAllKeys") + public Set getAllKeys(@RequestParam String apiUrl, @RequestParam Integer sureId) { + List> apiData = getAllKeyFromApi(apiUrl, sureId); + return getAllKeys(apiData); + } + + public List> getAllKeyFromApi(String apiUrl, Integer sureId) { + List> apiData = new ArrayList<>(); + + try { + // Make a GET request using the provided URL + ResponseEntity responseEntity = GETWithObject(apiUrl, sureId); + + // Convert the response to a List> + if (responseEntity.getBody() instanceof List) { + // If the response is a list, assume it's a list of maps + apiData = (List>) responseEntity.getBody(); + } else { + // If the response is not a list, assume it's a single map + Map singleMap = new HashMap<>(); + singleMap.put("data", responseEntity.getBody()); + apiData.add(singleMap); + } + + } catch (Exception e) { + log.error(e.getLocalizedMessage()); + } + + return apiData; + } + + private Set getAllKeys(List> apiData) { + Set allKeys = new HashSet<>(); + + for (Map data : apiData) { + allKeys.addAll(data.keySet()); + } + + return allKeys; + } + + public List> getAllDataFromApi(String apiUrl, Integer sureId) { + List> apiData = new ArrayList<>(); + + try { + // Make a GET request using the provided URL + ResponseEntity responseEntity = GETWithObject(apiUrl, sureId); + + // Convert the response to a List> + if (responseEntity.getBody() instanceof List) { + // If the response is a list, assume it's a list of maps + apiData = (List>) responseEntity.getBody(); + } else { + // If the response is not a list, assume it's a single map + Map singleMap = new HashMap<>(); + singleMap.put("data", responseEntity.getBody()); + apiData.add(singleMap); + } + + } catch (Exception e) { + log.error(e.getLocalizedMessage()); + + } + + return apiData; + } + + public ResponseEntity GET1(String get) { + RestTemplate restTemplate = new RestTemplate(); + + ResponseEntity u = restTemplate.getForEntity(get, Object.class); + + return u; + + } + + public ResponseEntity GET(String url, Integer sureid) { + RestTemplate restTemplate = new RestTemplate(); + + HttpHeaders headers = new HttpHeaders(); + headers.setAccept(Collections.singletonList(MediaType.ALL)); // accept JSON or XML + headers.setContentType(MediaType.APPLICATION_JSON); + + // 🔹 Add your token here (you can make it dynamic) + String token = getToken(sureid); // helper method (see below) + if (token != null && !token.isEmpty()) { + headers.set("Authorization", "Bearer " + token); + } + + HttpEntity entity = new HttpEntity<>(headers); + + ResponseEntity response = restTemplate.exchange(url, HttpMethod.GET, entity, String.class); + + return response; + } + + public ResponseEntity GETWithObject(String url, Integer sureid) { + RestTemplate restTemplate = new RestTemplate(); + + HttpHeaders headers = new HttpHeaders(); + headers.setAccept(Collections.singletonList(MediaType.ALL)); // accept JSON or XML + headers.setContentType(MediaType.APPLICATION_JSON); + + // 🔹 Add your token here (you can make it dynamic) + String token = getToken(sureid); // helper method (see below) + if (token != null && !token.isEmpty()) { + headers.set("Authorization", "Bearer " + token); + } + + HttpEntity entity = new HttpEntity<>(headers); + + ResponseEntity response = restTemplate.exchange(url, HttpMethod.GET, entity, Object.class); + + return response; + } + + private String getToken(Integer sureid) { + Sure_Connect connect = sureService.getbyid(sureid); + String access_token = connect.getAccess_token(); + + return access_token; // optional + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/DashboardSchedule_Controller.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/DashboardSchedule_Controller.java new file mode 100644 index 0000000..de4d2fc --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/DashboardSchedule_Controller.java @@ -0,0 +1,47 @@ +package com.realnet.Dashboard_builder.Controllers; + +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import com.realnet.Dashboard_builder.Entity.DashboardSchedule_t; +import com.realnet.Dashboard_builder.Services.DashboardSchedule_Service; + +@RequestMapping(value = "/DashboardSchedule") +@RestController +public class DashboardSchedule_Controller { + + @Autowired + private DashboardSchedule_Service Service; + + @PostMapping("/DashboardSchedule") + public DashboardSchedule_t Savedata(@RequestBody DashboardSchedule_t data) { + DashboardSchedule_t save = Service.Savedata(data); + return save; + } + + @GetMapping("/DashboardSchedule") + public List getdetails() { + List get = Service.getdetails(); + return get; + } + + @GetMapping("/DashboardSchedule/{id}") + public DashboardSchedule_t getdetailsbyId(@PathVariable Long id) { + DashboardSchedule_t get = Service.getdetailsbyId(id); + return get; + + } + + @DeleteMapping("/DashboardSchedule/{id}") + public void delete_by_id(@PathVariable Long id) { + Service.delete_by_id(id); + + } + + @PutMapping("/DashboardSchedule/{id}") + public DashboardSchedule_t update(@RequestBody DashboardSchedule_t data, @PathVariable Long id) { + DashboardSchedule_t update = Service.update(data, id); + return update; + } +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/Dashboard_builder_Controller.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/Dashboard_builder_Controller.java new file mode 100644 index 0000000..96f0819 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/Dashboard_builder_Controller.java @@ -0,0 +1,55 @@ +package com.realnet.Dashboard_builder.Controllers; + +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import com.realnet.Dashboard_builder.Entity.Dashboard_builder_t; +import com.realnet.Dashboard_builder.Repository.Dashboard_builder_Repository; +import com.realnet.Dashboard_builder.Services.Dashboard_builder_Service; + +@RequestMapping(value = "/Dashboard_builder") +@RestController +public class Dashboard_builder_Controller { + + @Autowired + private Dashboard_builder_Service Service; + + + @Autowired + private Dashboard_builder_Repository builder_Repository; + + @PostMapping("/Dashboard_builder") + public Dashboard_builder_t Savedata(@RequestBody Dashboard_builder_t data) { + Dashboard_builder_t save = Service.Savedata(data); + return save; + } + + @GetMapping("/Dashboard_builder") + public List getdetails() { + List get = Service.getdetails(); + return get; + } + + @GetMapping("/Dashboard_builder/{id}") + public Dashboard_builder_t getdetailsbyId(@PathVariable Long id) { + Dashboard_builder_t get = Service.getdetailsbyId(id); + return get; + + } + + @DeleteMapping("/Dashboard_builder/{id}") + public void delete_by_id(@PathVariable Long id) { + Service.delete_by_id(id); + + } + + @PutMapping("/Dashboard_builder/{id}") + public Dashboard_builder_t update(@RequestBody Dashboard_builder_t data, @PathVariable Long id) { + Dashboard_builder_t update = Service.update(data, id); + return update; + } + + + + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/EmailGenerate.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/EmailGenerate.java new file mode 100644 index 0000000..4159f89 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/EmailGenerate.java @@ -0,0 +1,385 @@ +//package com.realnet.Dashboard_builder.Controllers; +// +//import java.io.File; +//import java.io.IOException; +//import java.nio.file.FileSystems; +//import java.nio.file.Files; +//import java.nio.file.Path; +//import java.nio.file.Paths; +//import java.time.Instant; +//import java.util.ArrayList; +//import java.util.List; +//import java.util.Optional; +//import java.util.stream.Collectors; +// +//import org.apache.commons.io.FilenameUtils; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.http.HttpHeaders; +//import org.springframework.http.HttpStatus; +//import org.springframework.http.MediaType; +//import org.springframework.http.ResponseEntity; +//import org.springframework.util.StringUtils; +//import org.springframework.web.bind.annotation.GetMapping; +//import org.springframework.web.bind.annotation.PathVariable; +//import org.springframework.web.bind.annotation.PostMapping; +//import org.springframework.web.bind.annotation.RequestMapping; +//import org.springframework.web.bind.annotation.RequestPart; +//import org.springframework.web.bind.annotation.RestController; +//import org.springframework.web.multipart.MultipartFile; +// +//import com.realnet.Communication.Models.Com_jobTable; +//import com.realnet.Communication.Models.Com_template; +//import com.realnet.Communication.Models.ProcessedJobTable; +//import com.realnet.Communication.Repos.JobTablerepo; +//import com.realnet.Communication.Repos.ProcessedJobTableRepo; +//import com.realnet.Communication.Repos.TemplateRepo; +//import com.realnet.Communication.Services.EmailCommunicationService; +//import com.realnet.Communication.response.EntityResponse; +//import com.realnet.Dashboard_builder.Entity.DashboardSchedule_t; +//import com.realnet.Dashboard_builder.Repository.DashboardSchedule_Repository; +//import com.realnet.Gateway.Entity.Gateway_t; +//import com.realnet.Gateway.Repository.Gateway_Repository; +//import com.realnet.Gateway.Services.Gateway_Service; +//import com.realnet.Gateway.Services.SmsGatwaySmsServices; +// +//@RestController +//@RequestMapping("/dashboard/schedule") +//public class EmailGenerate { +// +// +// +// @Autowired +// private SmsGatwaySmsServices gatwaySmsServices; +// +// +// +// +// +// @Autowired +// private JobTablerepo Com_jobTablerepo; +// +// @Autowired +// private TemplateRepo templateRepo; +// +// @Autowired +// private ProcessedJobTableRepo jobTableRepo; +// +// @Autowired +// private EmailCommunicationService emailService; +// +// @Autowired +// private Gateway_Repository gateway_Repository; +// +// +//// public final String UPLOAD_DIREC = "/src/main/resources/images"; +// +// +// @GetMapping("/sendgatewaydashboard") +// public ResponseEntity sendGateway() { +// List get = Com_jobTablerepo.findTopByOrderByIdAsc(); +// +// if (!get.isEmpty()) { +// for (Com_jobTable com_jobTable : get) { +// String jobType = com_jobTable.getJob_type(); +// if (jobType.equalsIgnoreCase("EMAIL")) { +// ResponseEntity response = sendMailGateway(com_jobTable); +// if (response.getStatusCode() != HttpStatus.OK) { +// return response; +// } +// } +//// else if (jobType.equalsIgnoreCase("SMS")) { +//// ResponseEntity response = sendSmsGateway(com_jobTable); +//// if (response.getStatusCode() != HttpStatus.OK) { +//// return response; +//// } +//// } +// else { +// return new ResponseEntity<>(new EntityResponse("Incorrect job type"), HttpStatus.BAD_REQUEST); +// } +// } +// return new ResponseEntity<>(get, HttpStatus.OK); +// } else { +// return new ResponseEntity<>(new EntityResponse("All SMS/Emails already sent"), HttpStatus.OK); +// } +// } +// +// private ResponseEntity sendMailGateway(Com_jobTable com_jobTable) { +// String gatewayName = com_jobTable.getGatewayName(); +// // Long id = Long.parseLong(gatewayName); +// Gateway_t getData=gateway_Repository.findByGatewayName(gatewayName); +// +// Long id=getData.getId(); +// +// +// String tempName = com_jobTable.getTemplate_name(); +// // Long tempid = Long.parseLong(tempName); +// +// Com_template template = templateRepo.findBytemplatename(tempName); +// +// if (template == null) { +// return new ResponseEntity<>(new EntityResponse("Template not found"), HttpStatus.NOT_FOUND); +// } +// +// String replacement_string = com_jobTable.getReplacement_string(); +// String replace_body = template.getBody().replace("", replacement_string); +// +// +// +// ProcessedJobTable gatewayJobTable = new ProcessedJobTable(); +// gatewayJobTable.setJob_type(com_jobTable.getJob_type()); +// gatewayJobTable.setSend_to(com_jobTable.getSend_to()); +// gatewayJobTable.setCc(com_jobTable.getCc()); +// gatewayJobTable.setAttachment(com_jobTable.getAttachment()); +// gatewayJobTable.setGatewaydone(com_jobTable.getGatewaydone()); +// gatewayJobTable.setTemplate_name(com_jobTable.getTemplate_name()); +// gatewayJobTable.setReplacement_string(com_jobTable.getReplacement_string()); +// gatewayJobTable.setGatewayName(com_jobTable.getGatewayName()); +// +// +// String filename = com_jobTable.getAttachment(); +// if(filename!=null) { +// +// Path path = FileSystems.getDefault().getPath("").toAbsolutePath(); +// String filepath = Paths.get(path.toString(), UPLOAD_DIREC, filename).toString(); +// File file = new File(filepath); +// +// +// boolean sendMailWithAttachment = emailService.sendEmailGatewayWithAttachment(id, com_jobTable.getSend_to(), template.getSubject(), replace_body, com_jobTable.getCc(), file); +// +// System.out.println("email sent with attachment " + sendMailWithAttachment); +// +// gatewayJobTable.setStatus(HttpStatus.OK.value()); +// gatewayJobTable.setResp_body("Email sent with attachment"); +// +// } +// +// else { +// +// boolean sendemail = emailService.sendEmailGateway(id, com_jobTable.getSend_to(), template.getSubject(), +// replace_body, com_jobTable.getCc()); +// System.out.println("email without attachment sent " + sendemail); +// +// gatewayJobTable.setStatus(HttpStatus.OK.value()); +// gatewayJobTable.setResp_body("Email sent without attachment"); +// +// +// } +// +// +// +// jobTableRepo.save(gatewayJobTable); +// Com_jobTablerepo.delete(com_jobTable); +// return new ResponseEntity<>(HttpStatus.OK); +// } +// +// +// +// +// +// +// +// +// +// +//// public final String UPLOAD_DIREC = "/src/main/resources/images"; +// +// public final String UPLOAD_DIREC = "C:/Users/Gyanadipta Pahi/Desktop/SureSetuLast/suresetu-mohasin205/backend/src/main/resources/images"; +// +// @PostMapping("/upload") +// public ResponseEntity uploadFile(@RequestPart("file") MultipartFile file) { +// if (file.isEmpty()) { +// return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("File is required."); +// } +// +// try { +// String fileName = generateFileName(file.getOriginalFilename()); +// String filePath = UPLOAD_DIREC + File.separator + fileName; +// File dest = new File(filePath); +// file.transferTo(dest); +// +// return ResponseEntity.ok("File uploaded successfully."); +// } catch (IOException e) { +// e.printStackTrace(); +// return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to upload file."); +// } +// } +// +// private String generateFileName(String originalFilename) { +// String baseName = "dashboardSchedule" + Instant.now().getEpochSecond(); +// String extension = FilenameUtils.getExtension(originalFilename); +// if (!StringUtils.isEmpty(extension)) { +// baseName += "." + extension; +// } +// return baseName; +// } +// +// +// +// +// +// +// +// +// +// +// +// +//// @GetMapping("/files/{partialName}") +//// public ResponseEntity getFileByName(@PathVariable("partialName") String partialName) { +//// List matchingFiles = findMatchingFiles(partialName); +//// +//// if (matchingFiles.isEmpty()) { +//// return ResponseEntity.notFound().build(); +//// } else if (matchingFiles.size() > 1) { +//// // return ResponseEntity.status(HttpStatus.CONFLICT).body("Multiple files match the provided name."); +//// } +//// +//// File file = matchingFiles.get(0); +//// try { +//// byte[] fileBytes = Files.readAllBytes(file.toPath()); +//// +//// HttpHeaders headers = new HttpHeaders(); +//// headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); +//// headers.setContentDispositionFormData("attachment", file.getName()); +//// headers.setContentLength(fileBytes.length); +//// +//// return new ResponseEntity<>(fileBytes, headers, HttpStatus.OK); +//// } catch (Exception e) { +//// e.printStackTrace(); +//// return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); +//// } +//// } +//// +//// private List findMatchingFiles(String partialName) { +//// List matchingFiles = new ArrayList<>(); +//// +//// File directory = new File(UPLOAD_DIREC); +//// File[] files = directory.listFiles(); +//// if (files != null) { +//// for (File file : files) { +//// if (file.isFile() && file.getName().startsWith(partialName)) { +//// matchingFiles.add(file); +//// } +//// } +//// } +//// +//// return matchingFiles; +//// } +// +//// @Autowired +//// private JobTablerepo comJobTableRepository; +// +// @Autowired +// private DashboardSchedule_Repository dashboardSchedule_Repository; +// +// @GetMapping("/files/{partialName}") +// public ResponseEntity getFileByName(@PathVariable("partialName") String partialName) { +// List matchingFiles = findMatchingFiles(partialName); +// +// if (matchingFiles.isEmpty()) { +// return ResponseEntity.notFound().build(); +// } else if (matchingFiles.size() > 1) { +// System.out.println("Multiple files match the provided name"); +// // return ResponseEntity.status(HttpStatus.CONFLICT).body("Multiple files match the provided name."); +// } +// +// File file = matchingFiles.get(0); +// try { +// byte[] fileBytes = Files.readAllBytes(file.toPath()); +// +// // Save file path as attachment in the entity +//// List get = dashboardSchedule_Repository.findTopByOrderByIdAsc(); +//// get.setAttachment(file.getAbsolutePath()); +//// dashboardSchedule_Repository.save(comJobTable); +// +// // // Replace with the desired DashboardSchedule_t entity ID +// List dashboardSchedules = dashboardSchedule_Repository.findTopByOrderByIdAsc(); +// if (!dashboardSchedules.isEmpty()) { +// DashboardSchedule_t dashboardSchedule = dashboardSchedules.get(0); +// dashboardSchedule.setAttachment(file.getAbsolutePath()); +// dashboardSchedule.setGatewaydone("N"); +// dashboardSchedule_Repository.save(dashboardSchedule); +// } else { +// System.out.println("No dashboard schedules found."); +// } +// +// HttpHeaders headers = new HttpHeaders(); +// headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); +// headers.setContentDispositionFormData("attachment", file.getName()); +// headers.setContentLength(fileBytes.length); +// +// return new ResponseEntity<>(fileBytes, headers, HttpStatus.OK); +// } catch (Exception e) { +// e.printStackTrace(); +// return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); +// } +// } +// +// private List findMatchingFiles(String partialName) { +// List matchingFiles = new ArrayList<>(); +// +// File directory = new File(UPLOAD_DIREC); +// File[] files = directory.listFiles(); +// if (files != null) { +// for (File file : files) { +// if (file.isFile() && file.getName().startsWith(partialName)) { +// matchingFiles.add(file); +// } +// } +// } +// +// return matchingFiles; +// } +// +// +// +// +// +// +// +// +// @GetMapping("/dashboardscheduleid") +// public List getDashboardScheduleId() { +// List dashboardScheduleOptional = dashboardSchedule_Repository.findTopByOrderByIdAsc(); +// +// List filteredList = dashboardScheduleOptional.stream() +// .filter(dashboardSchedule -> dashboardSchedule.getAttachment() != null && !dashboardSchedule.getAttachment().isEmpty()) +// .collect(Collectors.toList()); +// +// List comJobTables = new ArrayList<>(); +// for (DashboardSchedule_t dashboardSchedule : filteredList) { +// Com_jobTable comJobTable = new Com_jobTable(); +// comJobTable.setAttachment(dashboardSchedule.getAttachment()); +// comJobTable.setGatewaydone(dashboardSchedule.getGatewaydone()); +// comJobTable.setSend_to(dashboardSchedule.getSendTo()); +// comJobTable.setTemplate_name(dashboardSchedule.getTemplate()); +// comJobTable.setGatewayName(dashboardSchedule.getGateway()); +// comJobTable.setCc(dashboardSchedule.getCc()); +// comJobTable.setReplacement_string(dashboardSchedule.getReplacementString()); +// comJobTable.setJob_type(dashboardSchedule.getType()); +// +// +// comJobTables.add(comJobTable); +// } +// +// List savedComJobTables = Com_jobTablerepo.saveAll(comJobTables); +// +// +// for (DashboardSchedule_t dashboardSchedule : filteredList) { +// dashboardSchedule.setAttachment(null); +// dashboardSchedule.setGatewaydone("Y"); +// } +// dashboardSchedule_Repository.saveAll(filteredList); +// +// return savedComJobTables; +// } +// +// +// +// +// +// +// +// +// +//} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/PdfController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/PdfController.java new file mode 100644 index 0000000..88087f0 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/PdfController.java @@ -0,0 +1,31 @@ +//package com.realnet.Dashboard_builder.Controllers; +// +//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.PathVariable; +//import org.springframework.web.bind.annotation.RequestMapping; +//import org.springframework.web.bind.annotation.RestController; +// +//@RestController +//@RequestMapping("/pdf") +//public class PdfController { +// +// private final PdfService pdfService; +// +// @Autowired +// public PdfController(PdfService pdfService) { +// this.pdfService = pdfService; +// } +// +// @GetMapping("/generate/{dashboardName}") +// public ResponseEntity generatePdf(@PathVariable String dashboardName) { +// try { +// pdfService.generatePdf(dashboardName); +// return new ResponseEntity<>("PDF generated successfully!", HttpStatus.OK); +// } catch (Exception e) { +// return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR); +// } +// } +//} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/PdfService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/PdfService.java new file mode 100644 index 0000000..46f2d1e --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/PdfService.java @@ -0,0 +1,284 @@ +//package com.realnet.Dashboard_builder.Controllers; +// +//import java.io.File; +//import java.io.FileOutputStream; +//import java.io.IOException; +//import java.time.Instant; +// +//import org.apache.commons.io.FileUtils; +//import org.apache.pdfbox.pdmodel.PDDocument; +//import org.apache.pdfbox.pdmodel.PDPage; +//import org.apache.pdfbox.pdmodel.PDPageContentStream; +//import org.apache.pdfbox.pdmodel.font.PDType1Font; +//import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject; +//import org.openqa.selenium.By; +//import org.openqa.selenium.OutputType; +//import org.openqa.selenium.TakesScreenshot; +//import org.openqa.selenium.WebDriver; +//import org.openqa.selenium.WebElement; +//import org.openqa.selenium.chrome.ChromeDriver; +//import org.openqa.selenium.chrome.ChromeOptions; +//import org.openqa.selenium.remote.DesiredCapabilities; +//import org.openqa.selenium.remote.RemoteWebDriver; +//import org.openqa.selenium.support.ui.ExpectedConditions; +//import org.openqa.selenium.support.ui.WebDriverWait; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.stereotype.Service; +// +//import com.itextpdf.text.Document; +//import com.itextpdf.text.DocumentException; +//import com.itextpdf.text.Image; +//import com.itextpdf.text.Rectangle; +//import com.itextpdf.text.pdf.PdfWriter; +//import com.realnet.Dashboard1.Entity.Dashbord_Header; +//import com.realnet.Dashboard1.Repository.HeaderRepository; +// +//@Service +//public class PdfService { +// +// @Autowired +// private HeaderRepository headerRepository; +// +//// public void generatePdf(String dashboardName) throws DocumentException { +//// String pdfPath = "src/main/resources/" + dashboardName + ".pdf"; +//// +//// System.setProperty("webdriver.chrome.driver", +//// "C:\\Users\\Gyanadipta Pahi\\Desktop\\SureSetuLast\\suresetu-mohasin205\\backend\\src\\main\\resources\\chromedriver\\chromedriver.exe"); +//// +//// WebDriver driver = new ChromeDriver(); +//// +//// // driver.get("http://localhost:19004/token/dashboard2/getdashboardbyname/" + +//// // dashboardName); +//// driver.get("http://localhost:4200/#/cns-portal/dashboardrunner/dashrunner/" + dashboardName); +//// +//// try { +//// +//// String username="sysadmin"; +//// String password="test3"; +//// +//// // Find the username and password fields and login button +//// WebElement usernameField = driver.findElement(By.id("login_username")); +//// WebElement passwordField = driver.findElement(By.id("login_password")); +//// WebElement loginButton = driver.findElement(By.id("login_Buttom")); +//// +//// // Enter the login credentials +//// usernameField.sendKeys(username); +//// passwordField.sendKeys(password); +//// +//// // Click the login button +//// loginButton.click(); +//// +//// Document document = new Document(); +//// FileOutputStream outputStream = new FileOutputStream(pdfPath); +//// PdfWriter.getInstance(document, outputStream); +//// document.open(); +//// +//// // Find the dashboard container element in your Angular app +//// // WebElement dashboardContainer = +//// // driver.findElement(By.id("contentContainer")); +//// +//// WebDriverWait wait = new WebDriverWait(driver, 10); // Wait up to 10 seconds +//// WebElement dashboardContainer = wait +//// .until(ExpectedConditions.presenceOfElementLocated(By.id("contentContainer"))); +//// +//// // Capture the screenshot of the dashboard using Selenium +//// byte[] dashboardImageBytes = ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES); +//// Image dashboardImage = Image.getInstance(dashboardImageBytes); +//// +//// // Scale the image to fit the PDF page +//// Rectangle pageSize = document.getPageSize(); +//// dashboardImage.scaleToFit(pageSize.getWidth(), pageSize.getHeight()); +//// dashboardImage.setAlignment(Image.MIDDLE); +//// +//// // Add the dashboard image to the PDF document +//// document.add(dashboardImage); +//// +//// document.close(); +//// driver.quit(); +//// +//// } catch (Exception e) { +//// throw new DocumentException("Failed to generate PDF: " + e.getMessage()); +//// } +//// } +// +//// public String generatePdf2(String dashboardName) throws IOException { +//// Dashbord_Header dashbord_Header = headerRepository.findByDashboardName(dashboardName); +//// Integer id = dashbord_Header.getId(); +//// +//// System.out.println("id is .. " + id); +//// +//// long unixTimestamp = Instant.now().getEpochSecond(); +//// +//// String pdfFileName = dashboardName + "_" + unixTimestamp + ".pdf"; +//// String pdfPath = "/data/images/" + pdfFileName; +//// String chromiumPath = "/usr/bin/chromium"; // Replace with the actual path to your Chromium executable +//// +//// System.setProperty("webdriver.chrome.driver", "/usr/local/bin/chromedriver"); // Replace with the correct path +//// +//// ChromeOptions options = new ChromeOptions(); +//// options.setBinary(chromiumPath); +//// options.addArguments("--headless"); +//// options.addArguments("--disable-gpu"); +//// options.addArguments("--no-sandbox"); +//// options.addArguments("--remote-debugging-address=0.0.0.0"); +//// options.addArguments("--remote-debugging-port=9222"); +//// +//// DesiredCapabilities capabilities = DesiredCapabilities.chrome(); +//// capabilities.setCapability(ChromeOptions.CAPABILITY, options); +//// +//// try { +//// WebDriver driver = new RemoteWebDriver(capabilities); +//// // by me +//// // WebDriverWait wait = new WebDriverWait(driver, 10); +//// driver.get("http://43.205.154.152:30182/#/cns-portal/dashboardrunner/dashrunner/" + id); +//// +//// // Replace these login steps with your actual login logic +//// String username = "sysadmin"; +//// String password = "test3"; +//// WebElement usernameField = driver.findElement(By.id("login_username")); +//// WebElement passwordField = driver.findElement(By.id("login_password")); +//// WebElement loginButton = driver.findElement(By.id("login_Buttom")); +//// +//// usernameField.sendKeys(username); +//// passwordField.sendKeys(password); +//// loginButton.click(); +//// +//// Thread.sleep(15000); // Wait for the page to load (you can adjust the wait time as needed) +//// +//// // Capture the screenshot of the dashboard +//// File screenshotFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE); +//// FileUtils.copyFile(screenshotFile, new File(pdfPath + ".png")); +//// +//// driver.quit(); +//// +//// // Convert the screenshot to PDF using Apache PDFBox +//// PDDocument document = new PDDocument(); +//// PDPage pdfPage = new PDPage(); +//// document.addPage(pdfPage); +//// PDPageContentStream contentStream = new PDPageContentStream(document, pdfPage); +//// PDImageXObject imageXObject = PDImageXObject.createFromFile(pdfPath + ".png", document); +//// contentStream.drawImage(imageXObject, 50, 600); +//// contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12); +//// contentStream.beginText(); +//// contentStream.newLineAtOffset(100, 700); +//// contentStream.showText("Your PDF content here"); // Replace with any additional content you want to add +//// contentStream.endText(); +//// contentStream.close(); +//// +//// document.save(pdfPath); +//// document.close(); +//// +//// // Clean up the temporary screenshot image +//// new File(pdfPath + ".png").delete(); +//// } catch (IOException | InterruptedException e) { +//// throw new IOException("Failed to generate PDF: " + e.getMessage()); +//// } +//// +//// return pdfFileName; +//// } +// +// public String generatePdf(String dashboardName) throws DocumentException { +// +// Dashbord_Header dashbord_Header = headerRepository.findByDashboardName(dashboardName); +// Integer id = dashbord_Header.getId(); +// +// System.out.println("id is .. " + id); +// +// long unixTimestamp = Instant.now().getEpochSecond(); +// +// String pdfFileName = dashboardName + "_" + unixTimestamp + ".pdf"; +// +//// String pdfPath = "src/main/resources/images/" + pdfFileName; +// String pdfPath = "/data/images/" + pdfFileName; +// +// System.setProperty("webdriver.chrome.driver", +// // "C:\\Users\\Gyanadipta Pahi\\Desktop\\SureSetNew\\suresetu-mohasin205\\backend\\src\\main\\resources\\chromedriver\\chromedriver.exe"); +// "/usr/local/bin/chromedriver"); +// +// System.out.println("test1 ...."); +//// WebDriver driver = new ChromeDriver(); +// ChromeOptions options = new ChromeOptions(); +// options.addArguments("--headless"); +// options.addArguments("--disable-gpu"); +// options.addArguments("--no-sandbox"); +// options.addArguments("--remote-debugging-address=0.0.0.0"); +// options.addArguments("--remote-debugging-port=9222"); +// WebDriver driver = new ChromeDriver(options); +// +// driver.get("http://43.205.154.152:30182/#/cns-portal/dashboardrunner/dashrunner/" + id); +// +// try { +// System.out.println("test2 ...."); +// +// String username = "sysadmin"; +// String password = "test3"; +// +// // Find the username and password fields and login button +// WebElement usernameField = driver.findElement(By.id("login_username")); +// WebElement passwordField = driver.findElement(By.id("login_password")); +// WebElement loginButton = driver.findElement(By.id("login_Buttom")); +// +// // Enter the login credentials +// usernameField.sendKeys(username); +// passwordField.sendKeys(password); +// +// // Click the login button +// loginButton.click(); +// +// Thread.sleep(10000); +// +// Document document = new Document(); +// FileOutputStream outputStream = new FileOutputStream(pdfPath); +// PdfWriter.getInstance(document, outputStream); +// document.open(); +// +// System.out.println("test3 ...."); +// +//// WebDriverWait wait = new WebDriverWait(driver, 10); // Wait up to 10 seconds +//// WebElement dashboardContainer = wait +//// .until(ExpectedConditions.presenceOfElementLocated(By.id("contentContainer"))); +//// +//// // Capture the screenshot of the dashboard using Selenium +//// byte[] dashboardImageBytes = ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES); +//// Image dashboardImage = Image.getInstance(dashboardImageBytes); +//// +//// // Scale the image to fit the PDF page +//// Rectangle pageSize = document.getPageSize(); +//// dashboardImage.scaleToFit(pageSize.getWidth(), pageSize.getHeight()); +//// dashboardImage.setAlignment(Image.MIDDLE); +//// +//// // Add the dashboard image to the PDF document +//// document.add(dashboardImage); +//// +//// document.close(); +//// driver.quit(); +// +// +// +// WebDriverWait wait = new WebDriverWait(driver, 10); +// WebElement dashboardContainer = wait.until(ExpectedConditions.presenceOfElementLocated(By.id("contentContainer"))); +// +// // Capture screenshot of the specific element +// File screenshotFile = dashboardContainer.getScreenshotAs(OutputType.FILE); +// +// // Convert the screenshot file into an image +// Image dashboardImage = Image.getInstance(screenshotFile.getAbsolutePath()); +// +// // Scale and align the image as needed +// Rectangle pageSize = document.getPageSize(); +// dashboardImage.scaleToFit(pageSize.getWidth(), pageSize.getHeight()); +// dashboardImage.setAlignment(Image.MIDDLE); +// +// // Add the dashboard image to the PDF document +// document.add(dashboardImage); +// +// document.close(); +// driver.quit(); +// +// } catch (Exception e) { +// throw new DocumentException("Failed to generate PDF: " + e.getMessage()); +// } +// +// return pdfFileName; +// } +//} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Entity/DashboardSchedule_t.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Entity/DashboardSchedule_t.java new file mode 100644 index 0000000..0a5756d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Entity/DashboardSchedule_t.java @@ -0,0 +1,28 @@ +package com.realnet.Dashboard_builder.Entity; + import lombok.*; + import javax.persistence.*; + import java.time.LocalDateTime; + import java.util.*; + + @Entity + @Data + public class DashboardSchedule_t{ + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String cron; + private String every; + private String gateway; + private String template; + private Date startTime; + private Date endTime; + private String attachment; + private String sendTo; + private String gatewaydone; + private String cc; + private String replacementString; + private String type; + + } \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Entity/Dashboard_builder_t.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Entity/Dashboard_builder_t.java new file mode 100644 index 0000000..f805eba --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Entity/Dashboard_builder_t.java @@ -0,0 +1,20 @@ +package com.realnet.Dashboard_builder.Entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +import lombok.Data; + +@Entity +@Data +public class Dashboard_builder_t { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String dashboardname; + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Repository/DashboardSchedule_Repository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Repository/DashboardSchedule_Repository.java new file mode 100644 index 0000000..796f43c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Repository/DashboardSchedule_Repository.java @@ -0,0 +1,23 @@ +package com.realnet.Dashboard_builder.Repository; + + +import java.util.List; +import java.util.Optional; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import com.realnet.Dashboard_builder.Entity.DashboardSchedule_t; + + + + +@Repository +public interface DashboardSchedule_Repository extends JpaRepository { + + @Query(value = "SELECT * FROM dashboard_schedule_t where gatewaydone ='N' order by id asc", nativeQuery = true) + List findTopByOrderByIdAsc(); + + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Repository/Dashboard_builder_Repository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Repository/Dashboard_builder_Repository.java new file mode 100644 index 0000000..7567970 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Repository/Dashboard_builder_Repository.java @@ -0,0 +1,14 @@ +package com.realnet.Dashboard_builder.Repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import com.realnet.Dashboard_builder.Entity.Dashboard_builder_t; + +@Repository +public interface Dashboard_builder_Repository extends JpaRepository { + + + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Services/DashboardSchedule_Service.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Services/DashboardSchedule_Service.java new file mode 100644 index 0000000..8166eb1 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Services/DashboardSchedule_Service.java @@ -0,0 +1,47 @@ +package com.realnet.Dashboard_builder.Services; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.realnet.Dashboard_builder.Entity.DashboardSchedule_t; +import com.realnet.Dashboard_builder.Repository.DashboardSchedule_Repository; + +@Service +public class DashboardSchedule_Service { + @Autowired + private DashboardSchedule_Repository Repository; + + public DashboardSchedule_t Savedata(DashboardSchedule_t data) { + data.setGatewaydone("N"); + // DashboardSchedule_t save = Repository.save(job); + return Repository.save(data); + } + + public List getdetails() { + return (List) Repository.findAll(); + } + + public DashboardSchedule_t getdetailsbyId(Long id) { + return Repository.findById(id).get(); + } + + public void delete_by_id(Long id) { + Repository.deleteById(id); + } + + public DashboardSchedule_t update(DashboardSchedule_t data, Long id) { + DashboardSchedule_t old = Repository.findById(id).get(); + old.setCron(data.getCron()); + old.setEvery(data.getEvery()); + old.setGateway(data.getGateway()); + old.setTemplate(data.getTemplate()); + old.setStartTime(data.getStartTime()); + old.setEndTime(data.getEndTime()); + old.setAttachment(data.getAttachment()); + old.setSendTo(data.getSendTo()); + final DashboardSchedule_t test = Repository.save(old); + return test; + } +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Services/Dashboard_builder_Service.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Services/Dashboard_builder_Service.java new file mode 100644 index 0000000..acb6861 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Services/Dashboard_builder_Service.java @@ -0,0 +1,37 @@ +package com.realnet.Dashboard_builder.Services; + +import com.realnet.Dashboard_builder.Repository.Dashboard_builder_Repository; +import com.realnet.Dashboard_builder.Entity.Dashboard_builder_t; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class Dashboard_builder_Service { + @Autowired + private Dashboard_builder_Repository Repository; + + public Dashboard_builder_t Savedata(Dashboard_builder_t data) { + return Repository.save(data); + } + + public List getdetails() { + return (List) Repository.findAll(); + } + + public Dashboard_builder_t getdetailsbyId(Long id) { + return Repository.findById(id).get(); + } + + public void delete_by_id(Long id) { + Repository.deleteById(id); + } + + public Dashboard_builder_t update(Dashboard_builder_t data, Long id) { + Dashboard_builder_t old = Repository.findById(id).get(); + old.setDashboardname(data.getDashboardname()); + final Dashboard_builder_t test = Repository.save(old); + return test; + } +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Services/EmailGenerateService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Services/EmailGenerateService.java new file mode 100644 index 0000000..059ee45 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Services/EmailGenerateService.java @@ -0,0 +1,126 @@ +//package com.realnet.Dashboard_builder.Services; +// +//import java.io.File; +//import java.util.Properties; +// +//import javax.mail.Authenticator; +//import javax.mail.Message; +//import javax.mail.MessagingException; +//import javax.mail.PasswordAuthentication; +//import javax.mail.Session; +//import javax.mail.Transport; +//import javax.mail.internet.InternetAddress; +//import javax.mail.internet.MimeMessage; +// +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.mail.javamail.JavaMailSender; +//import org.springframework.mail.javamail.MimeMessageHelper; +// +//import com.realnet.Gateway.Entity.Gateway_t; +//import com.realnet.Gateway.Services.Gateway_Service; +// +//public class EmailGenerateService { +// +// @Autowired +// private JavaMailSender mailSender; +// +// @Autowired +// private Gateway_Service gateway_Service; +// +// public boolean sendEmailGateway(Long id, String to, String subject, String htmlContent, String cc) { +// // Email to database code start +// Gateway_t getdetails = gateway_Service.getdetailsbyId(id); +// +// String host = getdetails.getHost(); +// String username = getdetails.getUserName(); +// String password = getdetails.getPassword(); +// +// // SMTP server properties +// Properties props = new Properties(); +// props.setProperty("mail.smtp.host", host); +// props.setProperty("mail.smtp.port", "587"); +// props.setProperty("mail.smtp.auth", "true"); +// props.setProperty("mail.smtp.starttls.enable", "true"); +// +// try { +// Session session = Session.getInstance(props, new Authenticator() { +// protected PasswordAuthentication getPasswordAuthentication() { +// return new PasswordAuthentication(username, password); +// } +// }); +// +// // Create a new message +// MimeMessage message = new MimeMessage(session); +// +// // Set the sender +// message.setFrom(new InternetAddress(username)); +// +// // Set the recipient +// message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)); +// +// // Set the CC recipient if provided +// if (cc != null) { +// message.setRecipients(Message.RecipientType.CC, InternetAddress.parse(cc)); +// } +// +// // Set the subject +// message.setSubject(subject); +// +// // Set the content +// message.setContent(htmlContent, "text/html"); +// +// // Send the message +// Transport.send(message); +// +// return true; +// } catch (MessagingException e) { +// e.printStackTrace(); +// return false; +// } +// } +// +// +// +// +// public String sendEmailGatewayWithAttachment(Long id, String to, String subject, String htmlContent, String cc, File file) { +// Gateway_t getdetails = gateway_Service.getdetailsbyId(id); +// if (getdetails != null) { +// String host = getdetails.getHost(); +// String username = getdetails.getUserName(); +// String password = getdetails.getPassword(); +// +// // SMTP server properties +// Properties props = new Properties(); +// props.setProperty("mail.smtp.host", host); +// props.setProperty("mail.smtp.port", "587"); +// props.setProperty("mail.smtp.auth", "true"); +// props.setProperty("mail.smtp.starttls.enable", "true"); +// +// try { +// Session session = Session.getInstance(props, new Authenticator() { +// protected PasswordAuthentication getPasswordAuthentication() { +// return new PasswordAuthentication(username, password); +// } +// }); +// +// MimeMessage mimeMessage = new MimeMessage(session); +// MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true); +// mimeMessageHelper.setTo(to); +// mimeMessageHelper.setSubject(subject); +// mimeMessageHelper.setText(htmlContent, true); +// mimeMessageHelper.setCc(cc); +// mimeMessageHelper.addAttachment(file.getName(), file); +// +// Transport.send(mimeMessage); +// +// return "Mail sent successfully"; +// } catch (MessagingException e) { +// return "Error while sending mail: " + e.getMessage(); +// } +// } else { +// return "Error: Gateway not found"; +// } +// } +// +// +//} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/DataLake/Controllers/Data_lakeController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/DataLake/Controllers/Data_lakeController.java new file mode 100644 index 0000000..4d7eaad --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/DataLake/Controllers/Data_lakeController.java @@ -0,0 +1,124 @@ +package com.realnet.DataLake.Controllers; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.realnet.DataLake.Entity.Data_lake; +import com.realnet.DataLake.Services.Data_lakeService; +import com.realnet.fnd.response.EntityResponse; + +@RequestMapping(value = "/Data_lake") +@CrossOrigin("*") +@RestController +public class Data_lakeController { + @Autowired + private Data_lakeService Service; + + @Value("${projectPath}") + private String projectPath; + + @PostMapping("/Data_lake") + public Data_lake Savedata(@RequestBody Data_lake data) { + Data_lake save = Service.Savedata(data); + + System.out.println("data saved..." + save); + + return save; + } + + @PutMapping("/Data_lake/{id}") + public Data_lake update(@RequestBody Data_lake data, @PathVariable Integer id) { + Data_lake update = Service.update(data, id); + System.out.println("data update..." + update); + return update; + } + +// get all with pagination + @GetMapping("/Data_lake/getall/page") + public Page getall(@RequestParam(value = "page", required = false) Integer page, + @RequestParam(value = "size", required = false) Integer size) { + Pageable paging = PageRequest.of(page, size); + Page get = Service.getAllWithPagination(paging); + + return get; + + } + + @GetMapping("/Data_lake") + public List getdetails() { + List get = Service.getdetails(); + return get; + } +// get all without authentication + + @GetMapping("/token/Data_lake") + public List getallwioutsec() { + List get = Service.getdetails(); + return get; + } + + @GetMapping("/Data_lake/{id}") + public Data_lake getdetailsbyId(@PathVariable Integer id) { + Data_lake get = Service.getdetailsbyId(id); + return get; + } + + @DeleteMapping("/Data_lake/{id}") + public ResponseEntity delete_by_id(@PathVariable Integer id) { + Service.delete_by_id(id); + return new ResponseEntity<>(new EntityResponse("Deleted"), HttpStatus.OK); + + } + +// json Updtaed + + @PutMapping("/Data_lake/json/{id}") + public Data_lake update(@PathVariable Integer id) throws JsonProcessingException { + Data_lake update = Service.Updatejson(id); + System.out.println("json update..." + update); + return update; + } + + @GetMapping("/Data_lake/merge/{id}") + public ResponseEntity mergeBatchData(@PathVariable Integer id) { + try { + // Get merged JSON string from service + String mergedJson = Service.mergeBatchData(id); + + // Parse the merged JSON string back into JSON structure + ObjectMapper mapper = new ObjectMapper(); + JsonNode jsonNode = mapper.readTree(mergedJson); + + // Return as actual JSON (not as string) + return ResponseEntity.ok(jsonNode); + + } catch (Exception e) { + // Build error response manually (Map.of() not available in Java 8) + Map error = new HashMap<>(); + error.put("error", e.getMessage()); + return ResponseEntity.status(500).body(error); + } + } +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/DataLake/Controllers/XmlApiExample.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/DataLake/Controllers/XmlApiExample.java new file mode 100644 index 0000000..19e5b09 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/DataLake/Controllers/XmlApiExample.java @@ -0,0 +1,57 @@ +package com.realnet.DataLake.Controllers; + +import javax.xml.bind.annotation.XmlRootElement; + +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@SpringBootApplication +@RestController +@RequestMapping("/token/api") +public class XmlApiExample { + + @GetMapping(value = "/getUser", produces = MediaType.APPLICATION_XML_VALUE) + public User getUser() { + User user = new User(); + user.setId(101); + user.setName("John Doe"); + user.setEmail("john.doe@example.com"); + return user; + } + + // Dummy XML model class + @XmlRootElement(name = "user") + public static class User { + private int id; + private String name; + private String email; + + // Getters and setters + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/DataLake/Controllers/tokenFree_Data_lakeController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/DataLake/Controllers/tokenFree_Data_lakeController.java new file mode 100644 index 0000000..2522f0d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/DataLake/Controllers/tokenFree_Data_lakeController.java @@ -0,0 +1,115 @@ +package com.realnet.DataLake.Controllers; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.realnet.DataLake.Entity.Data_lake; +import com.realnet.DataLake.Services.Data_lakeService; +import com.realnet.fnd.response.EntityResponse; + +@RequestMapping(value = "/token/Data_lake") +@CrossOrigin("*") +@RestController +public class tokenFree_Data_lakeController { + @Autowired + private Data_lakeService Service; + + @Value("${projectPath}") + private String projectPath; + + @PostMapping("/Data_lake") + public Data_lake Savedata(@RequestBody Data_lake data) { + Data_lake save = Service.Savedata(data); + + System.out.println("data saved..." + save); + + return save; + } + + @PutMapping("/Data_lake/{id}") + public Data_lake update(@RequestBody Data_lake data, @PathVariable Integer id) { + Data_lake update = Service.update(data, id); + System.out.println("data update..." + update); + return update; + } + +// get all with pagination + @GetMapping("/Data_lake/getall/page") + public Page getall(@RequestParam(value = "page", required = false) Integer page, + @RequestParam(value = "size", required = false) Integer size) { + Pageable paging = PageRequest.of(page, size); + Page get = Service.getAllWithPagination(paging); + + return get; + + } + + @GetMapping("/Data_lake") + public List getdetails() { + List get = Service.getdetails(); + return get; + } +// get all without authentication + + @GetMapping("/token/Data_lake") + public List getallwioutsec() { + List get = Service.getdetails(); + return get; + } + + @GetMapping("/Data_lake/{id}") + public Data_lake getdetailsbyId(@PathVariable Integer id) { + Data_lake get = Service.getdetailsbyId(id); + return get; + } + + @DeleteMapping("/Data_lake/{id}") + public ResponseEntity delete_by_id(@PathVariable Integer id) { + Service.delete_by_id(id); + return new ResponseEntity<>(new EntityResponse("Deleted"), HttpStatus.OK); + + } + + @GetMapping("/Data_lake/merge/{id}") + public ResponseEntity mergeBatchData(@PathVariable Integer id) { + try { + // Get merged JSON string from service + String mergedJson = Service.mergeBatchData(id); + + // Parse the merged JSON string back into JSON structure + ObjectMapper mapper = new ObjectMapper(); + JsonNode jsonNode = mapper.readTree(mergedJson); + + // Return as actual JSON (not as string) + return ResponseEntity.ok(jsonNode); + + } catch (Exception e) { + // Build error response manually (Map.of() not available in Java 8) + Map error = new HashMap<>(); + error.put("error", e.getMessage()); + return ResponseEntity.status(500).body(error); + } + } + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/DataLake/Entity/BatchData.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/DataLake/Entity/BatchData.java new file mode 100644 index 0000000..73c937d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/DataLake/Entity/BatchData.java @@ -0,0 +1,26 @@ +package com.realnet.DataLake.Entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Lob; + +import lombok.Data; + +@Entity +@Data +public class BatchData { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Integer id; + + private Integer datalake_id; + + @Lob + @Column(columnDefinition = "TEXT") + private String batchjson; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/DataLake/Entity/Data_lake.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/DataLake/Entity/Data_lake.java new file mode 100644 index 0000000..dfe3deb --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/DataLake/Entity/Data_lake.java @@ -0,0 +1,51 @@ +package com.realnet.DataLake.Entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Lob; + +import com.realnet.WhoColumn.Entity.Extension; + +import lombok.Data; + +@Entity +@Data +public class Data_lake extends Extension { + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Integer id; + + private String name; + + private String url; + + private String schedule; + + private String cron_job; + + @Lob + @Column(columnDefinition = "TEXT") + private String json; + + private Integer batch_volume; + + private Integer sure_connect_id; + private String sureconnect_name; + + private String url_endpoint; + + @Lob + @Column(columnDefinition = "TEXT") + private String calculated_field_json; + + private Boolean iscalculatedfield; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/DataLake/Repository/BatchDataRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/DataLake/Repository/BatchDataRepository.java new file mode 100644 index 0000000..dc55649 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/DataLake/Repository/BatchDataRepository.java @@ -0,0 +1,24 @@ +package com.realnet.DataLake.Repository; + +import java.util.List; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import com.realnet.DataLake.Entity.BatchData; + +@Repository +public interface BatchDataRepository extends JpaRepository { + + @Query(value = "select * from batch_data where created_by=?1", nativeQuery = true) + List findAll(Long creayedBy); + + @Query(value = "select * from batch_data where created_by=?1", nativeQuery = true) + Page findAll(Long creayedBy, Pageable page); + + @Query(value = "select * from batch_data", nativeQuery = true) + List findByDatalake_id(Integer datalake_id); +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/DataLake/Repository/Data_lakeRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/DataLake/Repository/Data_lakeRepository.java new file mode 100644 index 0000000..6601dee --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/DataLake/Repository/Data_lakeRepository.java @@ -0,0 +1,21 @@ +package com.realnet.DataLake.Repository; + +import java.util.List; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import com.realnet.DataLake.Entity.Data_lake; + +@Repository +public interface Data_lakeRepository extends JpaRepository { + + @Query(value = "select * from data_lake where created_by=?1", nativeQuery = true) + List findAll(Long creayedBy); + + @Query(value = "select * from data_lake where created_by=?1", nativeQuery = true) + Page findAll(Long creayedBy, Pageable page); +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/DataLake/Services/Data_lakeService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/DataLake/Services/Data_lakeService.java new file mode 100644 index 0000000..2fb3dd8 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/DataLake/Services/Data_lakeService.java @@ -0,0 +1,428 @@ +package com.realnet.DataLake.Services; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ArrayNode; +import com.fasterxml.jackson.dataformat.xml.XmlMapper; +import com.realnet.DataLake.Entity.BatchData; +import com.realnet.DataLake.Entity.Data_lake; +import com.realnet.DataLake.Repository.BatchDataRepository; +import com.realnet.DataLake.Repository.Data_lakeRepository; +import com.realnet.SureConnect.Service.SureService; +import com.realnet.realm.Entity.Realm; +import com.realnet.realm.Services.RealmService; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.service1.AppUserServiceImpl; +import com.realnet.utils.Port_Constant; + +@Service +public class Data_lakeService { + @Autowired + private Data_lakeRepository Repository; + + @Autowired + private BatchDataRepository batchRepo; + @Autowired + private AppUserServiceImpl userService; + @Autowired + private RealmService realmService; + + @Autowired + private SureService sureService; + + public Data_lake Savedata(Data_lake data) { + + data.setUpdatedBy(getUser().getUserId()); + data.setCreatedBy(getUser().getUserId()); + data.setAccountId(getUser().getAccount().getAccount_id()); + + if (data.getSure_connect_id() != null) { + + data.setSureconnect_name(sureService.getbyid(data.getSure_connect_id()).getConnection_name()); + } + + Data_lake save = Repository.save(data); + return save; + } + +// get all with pagination + public Page getAllWithPagination(Pageable page) { + return Repository.findAll(getUser().getUserId(), page); + } + + public List getdetails() { + List realm = realmService.findByUserId(getUser().getUserId()); + List all = Repository.findAll(getUser().getUserId()); + + return all; + } + + public Data_lake getdetailsbyId(Integer id) { + return Repository.findById(id).get(); + } + + public void delete_by_id(Integer id) { + Repository.deleteById(id); + } + + public Data_lake update(Data_lake data, Integer id) { + Data_lake old = Repository.findById(id).get(); + // id auto-generated hai → update nahi karenge + + if (data.getName() != null) { + old.setName(data.getName()); + } + + if (data.getUrl() != null) { + old.setUrl(data.getUrl()); + } + + if (data.getSchedule() != null) { + old.setSchedule(data.getSchedule()); + } + + if (data.getCron_job() != null) { + old.setCron_job(data.getCron_job()); + } + + if (data.getJson() != null) { + old.setJson(data.getJson()); + } + + if (data.getBatch_volume() != null) { + old.setBatch_volume(data.getBatch_volume()); + } + + if (data.getSure_connect_id() != null) { + old.setSure_connect_id(data.getSure_connect_id()); + + old.setSureconnect_name(sureService.getbyid(data.getSure_connect_id()).getConnection_name()); + + } + + if (data.getUrl_endpoint() != null) { + old.setUrl_endpoint(data.getUrl_endpoint()); + } + + if (data.getCalculated_field_json() != null) { + old.setCalculated_field_json(data.getCalculated_field_json()); + } + + if (data.getIscalculatedfield() != null) { + old.setIscalculatedfield(data.getIscalculatedfield()); + } + + final Data_lake test = Repository.save(old); + + return test; + } + + public Data_lake Updatejson(Integer id) throws JsonProcessingException { + + Data_lake old = Repository.findById(id).get(); + + String url = old.getUrl(); + + ResponseEntity response = GETAsString(url); + + // Convert the JSON object (ArrayList, Map, etc.) to a String +// Object responseBody = response.getBody(); + ObjectMapper mapper = new ObjectMapper(); + + String rawBody = response.getBody(); +// String jsonString = mapper.writeValueAsString(rawBody); + ObjectMapper jsonMapper = new ObjectMapper(); + Object responseBody; + + // Detect and convert if XML + if (isXml(rawBody)) { + try { + // Convert XML → JSON tree + + XmlMapper xmlMapper = new XmlMapper(); + + JsonNode xmlNode = xmlMapper.readTree(rawBody.getBytes()); + // Convert to standard JSON structure + String jsonFromXml = jsonMapper.writeValueAsString(xmlNode); + responseBody = jsonMapper.readValue(jsonFromXml, Object.class); + System.out.println("XML detected and converted to JSON successfully."); + } catch (Exception e) { + throw new RuntimeException("Failed to convert XML to JSON: " + e.getMessage()); + } + } else { + // Normal JSON response + try { + responseBody = jsonMapper.readValue(rawBody, Object.class); + System.out.println("JSON response detected."); + } catch (Exception e) { + throw new RuntimeException("Invalid JSON format: " + e.getMessage()); + } + } + + // ✅ Handle calculated fields before batch processing + if (Boolean.TRUE.equals(old.getIscalculatedfield()) && old.getCalculated_field_json() != null) { + try { + responseBody = applyCalculatedFields(responseBody, old.getCalculated_field_json(), mapper); + System.out.println("Calculated fields applied successfully."); + } catch (Exception e) { + System.err.println("Failed to process calculated fields: " + e.getMessage()); + } + } + + String jsonString = mapper.writeValueAsString(responseBody); + old.setJson(jsonString); + + // Process and insert into BatchData as before + + // Process and insert into BatchData + processBatchData(old, responseBody, mapper); + + String Url = Port_Constant.DOMAIN + "/Data_lake/Data_lake/merge/" + old.getId(); + old.setUrl_endpoint(Url); + + old.setUpdatedBy(getUser().getUserId()); + + final Data_lake saved = Repository.save(old); + + System.out.println(" json updated.."); + return saved; + + } + + @SuppressWarnings("unchecked") + private Object applyCalculatedFields(Object responseBody, String calculatedFieldJson, ObjectMapper mapper) + throws JsonProcessingException { + + // Parse the calculated field JSON + List> calcFields = mapper.readValue(calculatedFieldJson, List.class); + + if (!(responseBody instanceof List)) { + // Wrap single object into a list for consistent processing + responseBody = Arrays.asList(responseBody); + } + + List> records = (List>) responseBody; + + for (Map record : records) { + + for (Map calc : calcFields) { + String fieldName = (String) calc.get("fieldName"); + String operation = (String) calc.get("operation"); + List> components = (List>) calc.get("fieldComponents"); + + // Create constant fields separately + for (Map comp : components) { + String subField = (String) comp.get("field"); + Boolean isConstant = comp.get("isConstant") != null && (Boolean) comp.get("isConstant"); + Object constantValue = comp.get("constant"); + + if (isConstant && subField != null) { + record.put(subField, parseNumberOrString(constantValue)); + } + } + + // Collect operand values + List values = new ArrayList<>(); + for (Map comp : components) { + Boolean isConstant = comp.get("isConstant") != null && (Boolean) comp.get("isConstant"); + Object val = isConstant ? comp.get("constant") : record.get(comp.get("field")); + if (val != null) { + values.add(val); + } + } + + // Compute final value + Object result = performOperation(values, operation); + record.put(fieldName, result); + } + } + + return records; + } + + private Object performOperation(List values, String operation) { + if (values.isEmpty()) + return null; + + switch (operation.toLowerCase()) { + case "add": + double sum = 0; + for (Object v : values) + sum += toDouble(v); + return sum; + + case "subtract": + double result = toDouble(values.get(0)); + for (int i = 1; i < values.size(); i++) + result -= toDouble(values.get(i)); + return result; + + case "multiply": + double prod = 1; + for (Object v : values) + prod *= toDouble(v); + return prod; + + case "divide": + double div = toDouble(values.get(0)); + for (int i = 1; i < values.size(); i++) { + double val = toDouble(values.get(i)); + if (val != 0) + div /= val; + } + return div; + + case "percentage": + if (values.size() < 2) + return null; + double num = toDouble(values.get(0)); + double den = toDouble(values.get(1)); + return den == 0 ? null : (num / den) * 100; + + case "concat": + return values.stream().map(Object::toString).collect(Collectors.joining("_")); + + default: + return null; + } + } + + private double toDouble(Object val) { + if (val == null) + return 0.0; + try { + return Double.parseDouble(val.toString().trim()); + } catch (NumberFormatException e) { + return 0.0; + } + } + + private Object parseNumberOrString(Object val) { + if (val == null) + return null; + String str = val.toString().trim(); + try { + return Double.parseDouble(str); + } catch (NumberFormatException e) { + return str; + } + } + + private boolean isXml(String content) { + if (content == null) + return false; + String trimmed = content.trim(); + // XML usually starts with '<' and ends with '>' + return trimmed.startsWith("<") && trimmed.endsWith(">"); + } + + private void processBatchData(Data_lake dataLake, Object responseBody, ObjectMapper mapper) + throws JsonProcessingException { + + int batchVolume = (dataLake.getBatch_volume() != null && dataLake.getBatch_volume() > 0) + ? dataLake.getBatch_volume() + : 100; // default batch size if not given + + // Convert to JsonNode + JsonNode jsonNode = mapper.valueToTree(responseBody); + + if (jsonNode.isArray()) { + ArrayNode arrayNode = (ArrayNode) jsonNode; + int total = arrayNode.size(); + System.out.println("Total records: " + total); + + for (int i = 0; i < total; i += batchVolume) { + int end = Math.min(i + batchVolume, total); + + // Create a sub-array manually + ArrayNode subArray = mapper.createArrayNode(); + for (int j = i; j < end; j++) { + subArray.add(arrayNode.get(j)); + } + + String subJson = mapper.writeValueAsString(subArray); + + BatchData batch = new BatchData(); + batch.setDatalake_id(dataLake.getId()); + batch.setBatchjson(subJson); + batchRepo.save(batch); + } + + System.out.println("Inserted " + (int) Math.ceil((double) total / batchVolume) + " batch records."); + + } else { + // Single object → one record + BatchData batch = new BatchData(); + batch.setDatalake_id(dataLake.getId()); + batch.setBatchjson(mapper.writeValueAsString(jsonNode)); + batchRepo.save(batch); + + System.out.println("Inserted single batch record."); + } + } + + public String mergeBatchData(Integer datalakeId) throws Exception { + List batchList = batchRepo.findByDatalake_id(datalakeId); + + if (batchList.isEmpty()) { + throw new RuntimeException("No batch data found for datalake_id: " + datalakeId); + } + + ObjectMapper mapper = new ObjectMapper(); + ArrayNode mergedArray = mapper.createArrayNode(); + + for (BatchData batch : batchList) { + String json = batch.getBatchjson(); + JsonNode node = mapper.readTree(json); + + if (node.isArray()) { + // Add each element to merged array + for (JsonNode item : node) { + mergedArray.add(item); + } + } else { + // Single object, just add directly + mergedArray.add(node); + } + } + + String mergedJson = mapper.writeValueAsString(mergedArray); + System.out.println("Merged JSON size: " + mergedArray.size()); + return mergedJson; + } + + public ResponseEntity GET(String get) { + RestTemplate restTemplate = new RestTemplate(); + + ResponseEntity u = restTemplate.getForEntity(get, Object.class); + + return u; + + } + + public ResponseEntity GETAsString(String url) { + RestTemplate restTemplate = new RestTemplate(); + return restTemplate.getForEntity(url, String.class); + } + + public AppUser getUser() { + AppUser user = userService.getLoggedInUser(); + return user; + + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Controllers/AngularHtmlCode.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Controllers/AngularHtmlCode.java new file mode 100644 index 0000000..a78c4db --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Controllers/AngularHtmlCode.java @@ -0,0 +1,62 @@ +package com.realnet.FabricIcard.Controllers; + +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; + +@RestController +@RequestMapping("/token") +public class AngularHtmlCode { + + @GetMapping("/convert") + public String convertAngularToHtml(@RequestParam String angularCode) { + // Perform conversion logic here (replace Angular-specific syntax with HTML) + String htmlCode = convertAngularToHtmlCode(angularCode); + return htmlCode; + } + + +// private String convertAngularToHtmlCode(String angularCode) { +// // Replace ng-container with a div +// String htmlCode = angularCode.replace(" getdetails() { + List get = Service.getdetails(); + return get; + } + + @GetMapping("/FabricIcard/{id}") + public FabricIcard getdetailsbyId(@PathVariable Long id) { + FabricIcard get = Service.getdetailsbyId(id); + return get; + + } + + @DeleteMapping("/FabricIcard/{id}") + public void delete_by_id(@PathVariable Long id) { + Service.delete_by_id(id); + + } + + @PutMapping("/FabricIcard/{id}") + public FabricIcard update(@RequestBody FabricIcard data, @PathVariable Long id) { + FabricIcard update = Service.update(data, id); + return update; + } +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Controllers/LayoutPdf.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Controllers/LayoutPdf.java new file mode 100644 index 0000000..ea85d50 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Controllers/LayoutPdf.java @@ -0,0 +1,312 @@ +package com.realnet.FabricIcard.Controllers; + +import java.io.ByteArrayOutputStream; +import java.util.List; +import java.util.Map; + +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.client.RestTemplate; +import org.xhtmlrenderer.pdf.ITextRenderer; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; + +@RestController +@RequestMapping("/token") +public class LayoutPdf { + + @PostMapping("/generate-pdf") + public ResponseEntity generatePdf(@RequestBody String htmlContent) { + try { + // Use Flying Saucer to convert HTML to PDF + byte[] pdfBytes = generatePdf1(htmlContent); + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_PDF); + headers.setContentDispositionFormData("inline", "output.pdf"); + + return new ResponseEntity<>(pdfBytes, headers, HttpStatus.OK); + } catch (Exception e) { + e.printStackTrace(); + return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR); + } + } + + public byte[] generatePdf1(String htmlContent) throws Exception { + ITextRenderer renderer = new ITextRenderer(); + renderer.setDocumentFromString(htmlContent); + renderer.layout(); + + try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) { + renderer.createPDF(outputStream); + return outputStream.toByteArray(); + } + } + + + + @PostMapping("/generateHtml1/{id}") + public String generateHtml1(@RequestBody List> jsonData, @PathVariable Long id) + throws JsonProcessingException { + return generateHtml2(jsonData, id); + } + + public String generateHtml2(List> jsonData, Long id) throws JsonProcessingException { + +// LayoutBuilder_t layoutBuilder_t = layoutBuilder_Repository.findById(id).get(); +// +// LayoutBuilderLines_t layoutBuilderLines_t = layoutBuilderLines_Repository.findById(id).get(); +// +// String url = layoutBuilder_t.getUrl(); +// String model = layoutBuilderLines_t.getModel(); +// +// String serviceOrderId = "146"; +// +// JsonParser parser = new JsonParser(); +// JsonElement element = parser.parse(model); +// JsonArray models = element.getAsJsonArray(); +// JsonObject getbodyobject = null; +// List> replacerule = null; +// String operation = null; +// String replaceWith = null; +// String startstring = null; +// String endstring = null; +// String keyword = null; +// String linestring = null; +// String cellAddress = null; +// String ModifyfileName = null; +// String nodeName = null; +// +// String a_uri = url.replace("?", String.valueOf(serviceOrderId)); +// System.out.println(a_uri); +// +// Object body = GET(a_uri).getBody(); +// ObjectMapper objectMapper = new ObjectMapper(); +// String json = objectMapper.writeValueAsString(body); +// JsonElement getbody = parser.parse(json); +// getbodyobject = getbody.getAsJsonObject(); +// +// +// +// for (JsonElement mod : models) { +// JsonObject object = mod.getAsJsonObject(); +// +// startstring = object.get("start_string").toString().replaceAll("\"", ""); +// endstring = object.get("end_string").toString().replaceAll("\"", ""); +// replaceWith = object.get("replace_with").toString().replaceAll("\"", ""); +// keyword = object.get("Keyword").toString().replaceAll("\"", ""); +// linestring = object.get("line_string").toString().replaceAll("\"", ""); +// operation = object.get("operation").toString().replaceAll("\"", ""); +// cellAddress = object.get("cellAddress").toString().replaceAll("\"", ""); +// +// nodeName = object.get("nodeName").toString().replaceAll("\"", ""); +//// // nodeName = "listOfItems"; // Set the desired node name +//// +// JsonArray values = searchJsonKey(getbodyobject, replaceWith, nodeName); +// +// for (JsonElement element1 : values) { +// String individualValue = element1.getAsString(); +// +// replaceWith = individualValue; +// +// System.out.println("Found value: " + individualValue); +// +// if (operation.contains("replacement")) { +// replacerule = replaceStringInJsonData(jsonData, replaceWith, keyword); +// +// } +// } +// +// } +// +// jsonData = replacerule; + + StringBuilder htmlBuilder = new StringBuilder(); + + // Open the main card div + htmlBuilder.append("
    "); + htmlBuilder.append( + "
    "); + + for (Map item : jsonData) { + + // Check for Table type + if ("Table".equals(item.get("type"))) { + htmlBuilder.append("
    "); + + // Open the card-title div for Table + htmlBuilder.append("
    "); + + // Add Table HTML code + htmlBuilder.append("
    "); + htmlBuilder.append(""); + htmlBuilder.append(""); + htmlBuilder.append(""); + + // Add table header based on the JSON structure + List> values = (List>) item.get("values"); + + + for (Map value : values) { + htmlBuilder.append(""); + } + + htmlBuilder.append(""); + htmlBuilder.append(""); + htmlBuilder.append(""); + htmlBuilder.append(""); + + + // Add table body content based on the JSON structure + for (Map value : values) { + htmlBuilder.append(""); + } + + +// // Add the additional values twice +// for (Map additionalValue : values) { +// htmlBuilder.append(""); +// } + + htmlBuilder.append(""); + htmlBuilder.append(""); + + htmlBuilder.append("
    ").append(value.get("label")).append("
    ").append(value.get("value")).append("").append(additionalValue.get("value")).append("
    "); + htmlBuilder.append("
    "); + + // Close the card-title and individual item div for Table + htmlBuilder.append("
    "); + } + + // Check for Image type + else if ("Image".equals(item.get("type"))) { + htmlBuilder.append("
    "); + + // Open the card-title div for Image + htmlBuilder.append("
    "); + + // Add Image tag + htmlBuilder.append("\"Image\""); + + // Close the card-title and individual item div for Image + htmlBuilder.append("
    "); + } else if ("Line".equals(item.get("type"))) { + // Handle Line type + htmlBuilder.append("
    "); + htmlBuilder.append("
    "); + htmlBuilder.append("
    "); + } else { + // Handle other types + // Open the individual item div + htmlBuilder.append("
    "); + + // Open the card-title div + htmlBuilder.append("
    "); + + // Append the fieldtext content + htmlBuilder.append(item.get("fieldtext")); + + // Close the card-title and individual item div + htmlBuilder.append("
    "); + } + } + + // Close the main card div + htmlBuilder.append("
    "); + + return htmlBuilder.toString(); + } + + public ResponseEntity GET(String get) { + RestTemplate restTemplate = new RestTemplate(); + + ResponseEntity u = restTemplate.getForEntity(get, Object.class); + + return u; + + } + + private static JsonArray searchJsonKey(JsonObject jsonObject, String keyToSearch, String nodeName) { + JsonArray resultArray = new JsonArray(); + + for (Map.Entry entry : jsonObject.entrySet()) { + String key = entry.getKey().replaceAll("\"", ""); + JsonElement value = entry.getValue(); + + if (value.isJsonObject()) { + // Recursively search for the key in the nested object + JsonArray nestedValues = searchJsonKey(value.getAsJsonObject(), keyToSearch, nodeName); + resultArray.addAll(nestedValues); + } else if (nodeName == null || nodeName.isEmpty() || key.equalsIgnoreCase(nodeName)) { + // If nodeName is null or matches the current key, search for the keyToSearch + if (value.isJsonArray()) { + // Handle arrays by iterating through each element + JsonArray jsonArray = value.getAsJsonArray(); + for (JsonElement arrayElement : jsonArray) { + if (arrayElement.isJsonObject()) { + JsonObject itemObject = arrayElement.getAsJsonObject(); + if (itemObject.has(keyToSearch)) { + resultArray.add(itemObject.get(keyToSearch)); + } + } + } + } else if (value.isJsonPrimitive() && key.equals(keyToSearch)) { + // If nodeName is null and the current key matches keyToSearch, add the value to + // the result + resultArray.add(value); + } + } + } + + return resultArray; + } + + + + public static List> replaceStringInJsonData(List> jsonData, String keyword, + String replaceWith) { + for (Map entry : jsonData) { + for (Map.Entry keyValue : entry.entrySet()) { + if (keyValue.getValue() instanceof String) { + String value = (String) keyValue.getValue(); + if (value.contains(replaceWith)) { + entry.replace(keyValue.getKey(), value.replace(replaceWith, keyword)); + } + } + } + } + return jsonData; + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Controllers/MyImageReplacedElementFactory.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Controllers/MyImageReplacedElementFactory.java new file mode 100644 index 0000000..59bfc6f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Controllers/MyImageReplacedElementFactory.java @@ -0,0 +1,40 @@ +//package com.realnet.LayoutBuilder.Controllers; +// +//import org.w3c.dom.Element; +//import org.xhtmlrenderer.extend.ReplacedElement; +//import org.xhtmlrenderer.extend.ReplacedElementFactory; +//import org.xhtmlrenderer.extend.UserAgentCallback; +//import org.xhtmlrenderer.layout.LayoutContext; +//import org.xhtmlrenderer.render.BlockBox; +//import org.xhtmlrenderer.simple.extend.FormSubmissionListener; +// +//public class MyImageReplacedElementFactory implements ReplacedElementFactory{ +// +// @Override +// public ReplacedElement createReplacedElement(LayoutContext c, BlockBox box, UserAgentCallback uac, int cssWidth, +// int cssHeight) { +// // TODO Auto-generated method stub +// return null; +// } +// +// @Override +// public void reset() { +// // TODO Auto-generated method stub +// +// } +// +// @Override +// public void remove(Element e) { +// // TODO Auto-generated method stub +// +// } +// +// @Override +// public void setFormSubmissionListener(FormSubmissionListener listener) { +// // TODO Auto-generated method stub +// +// } +// +//} + + diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Controllers/PageController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Controllers/PageController.java new file mode 100644 index 0000000..ab47849 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Controllers/PageController.java @@ -0,0 +1,28 @@ +package com.realnet.FabricIcard.Controllers; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.FabricIcard.Entity.PageSource; +import com.realnet.FabricIcard.Repository.PageSourceRepository; + +@RestController +@RequestMapping("/api/pages") +public class PageController { + + @Autowired + private PageSourceRepository pageSourceRepository; + + @PostMapping("/save") + public String savePageSource(@RequestBody String sourceCode) { + PageSource pageSource = new PageSource(); + pageSource.setSourceCode(sourceCode); + + // Save to the database + pageSourceRepository.save(pageSource); + + return "Page source saved successfully!"; + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Controllers/TestCode.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Controllers/TestCode.java new file mode 100644 index 0000000..4da1232 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Controllers/TestCode.java @@ -0,0 +1,108 @@ +//package com.realnet.FabricIcard.Controllers; +// +//import org.springframework.web.bind.annotation.RequestMapping; +//import org.springframework.web.bind.annotation.RestController; +//import com.fasterxml.jackson.databind.JsonNode; +//import com.fasterxml.jackson.databind.ObjectMapper; +//import org.springframework.web.bind.annotation.GetMapping; +//import org.springframework.web.bind.annotation.RequestMapping; +//import org.springframework.web.bind.annotation.RestController; +// +//import java.io.BufferedReader; +//import java.io.InputStreamReader; +//import java.net.HttpURLConnection; +//import java.net.URL; +//import java.util.ArrayList; +//import java.util.Iterator; +//import java.util.List; +//import java.util.Map; +// +//@RestController +//@RequestMapping("/token") +//public class TestCode { +// @GetMapping("/dynamicValues") +// public List> getDynamicValues() { +// try { +// // Make HTTP request to the first API +// String apiUrl = "http://3.109.61.114:30161/token/Billing/ServiceOrder/ServiceOrder/146"; +// String response = sendHttpRequest(apiUrl); +// +// // Parse the response and extract the listOfItems +// return createValuesFromList(response); +// } catch (Exception e) { +// e.printStackTrace(); +// return new ArrayList<>(); // Return an empty list in case of an error +// } +// } +// +// private String sendHttpRequest(String apiUrl) throws Exception { +// URL url = new URL(apiUrl); +// HttpURLConnection connection = (HttpURLConnection) url.openConnection(); +// connection.setRequestMethod("GET"); +// +// BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); +// StringBuilder response = new StringBuilder(); +// +// String line; +// while ((line = reader.readLine()) != null) { +// response.append(line); +// } +// +// reader.close(); +// connection.disconnect(); +// +// return response.toString(); +// } +// +// private List> createValuesFromList(String jsonResponse) { +// List> values = new ArrayList<>(); +// +// try { +// // Parse the JSON response using Jackson ObjectMapper +// ObjectMapper objectMapper = new ObjectMapper(); +// JsonNode rootNode = objectMapper.readTree(jsonResponse); +// +// // Extract the listOfItems node +// JsonNode listOfItemsNode = rootNode.path("listOfItems"); +// +// // Iterate through each item in the listOfItems +// Iterator itemsIterator = listOfItemsNode.elements(); +// while (itemsIterator.hasNext()) { +// JsonNode itemNode = itemsIterator.next(); +// +// // Extract relevant information from the item +// String itemCode = itemNode.path("itemCode").asText(); +// String unitPrice = itemNode.path("unitPrice").asText(); +// String lineTotal = itemNode.path("lineTotal").asText(); +// +// // Create the corresponding values +// Map itemValues = Map.of( +// "label", "Item and Description", +// "value", itemCode +// ); +// Map qtyValues = Map.of( +// "label", "Qty", +// "value", "1" +// ); +// Map rateValues = Map.of( +// "label", "Rate", +// "value", unitPrice +// ); +// Map amountValues = Map.of( +// "label", "Amount", +// "value", lineTotal +// ); +// +// // Add the values to the list +// values.add(itemValues); +// values.add(qtyValues); +// values.add(rateValues); +// values.add(amountValues); +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// +// return values; +// } +//} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Entity/FabricIcard.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Entity/FabricIcard.java new file mode 100644 index 0000000..9f4ecfa --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Entity/FabricIcard.java @@ -0,0 +1,35 @@ +package com.realnet.FabricIcard.Entity; + +import java.util.ArrayList; +import java.util.List; + +import javax.persistence.CascadeType; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.OneToMany; + +import com.fasterxml.jackson.annotation.JsonManagedReference; +import com.realnet.FabricIcardLines.Entity.FabricIcardLines; + +import lombok.Data; + +@Entity +@Data +public class FabricIcard { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String name; + private String description; + private boolean active; + private String url; + + @JsonManagedReference + @OneToMany(cascade = CascadeType.ALL, mappedBy = "layoutBuilder_t") + private List fabricIcardLines = new ArrayList<>(); + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Entity/PageSource.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Entity/PageSource.java new file mode 100644 index 0000000..8633a6b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Entity/PageSource.java @@ -0,0 +1,19 @@ +package com.realnet.FabricIcard.Entity; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +import lombok.Data; + +@Entity +@Data +public class PageSource { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String sourceCode; + + // getters and setters +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Repository/FabricIcardRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Repository/FabricIcardRepository.java new file mode 100644 index 0000000..719f189 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Repository/FabricIcardRepository.java @@ -0,0 +1,12 @@ +package com.realnet.FabricIcard.Repository; + + +import org.springframework.data.jpa.repository.JpaRepository; + +import org.springframework.stereotype.Repository; + +import com.realnet.FabricIcard.Entity.FabricIcard; + +@Repository +public interface FabricIcardRepository extends JpaRepository { +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Repository/PageSourceRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Repository/PageSourceRepository.java new file mode 100644 index 0000000..d883def --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Repository/PageSourceRepository.java @@ -0,0 +1,10 @@ +package com.realnet.FabricIcard.Repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.FabricIcard.Entity.PageSource; + +@Repository +public interface PageSourceRepository extends JpaRepository { +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Services/FabricIcardService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Services/FabricIcardService.java new file mode 100644 index 0000000..2dab174 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Services/FabricIcardService.java @@ -0,0 +1,41 @@ +package com.realnet.FabricIcard.Services; + +import com.realnet.FabricIcard.Entity.FabricIcard; +import com.realnet.FabricIcard.Repository.FabricIcardRepository; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class FabricIcardService { + @Autowired + private FabricIcardRepository Repository; + + public FabricIcard Savedata(FabricIcard data) { + return Repository.save(data); + } + + public List getdetails() { + return (List) Repository.findAll(); + } + + public FabricIcard getdetailsbyId(Long id) { + return Repository.findById(id).get(); + } + + public void delete_by_id(Long id) { + Repository.deleteById(id); + } + + public FabricIcard update(FabricIcard data, Long id) { + FabricIcard old = Repository.findById(id).get(); + old.setName(data.getName()); + old.setDescription(data.getDescription()); + old.setActive(data.isActive()); + old.setUrl(data.getUrl()); + final FabricIcard test = Repository.save(old); + return test; + } +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Services/LayoutPdfService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Services/LayoutPdfService.java new file mode 100644 index 0000000..7cb7d6a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Services/LayoutPdfService.java @@ -0,0 +1,282 @@ +package com.realnet.FabricIcard.Services; + +import java.io.ByteArrayOutputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +import javax.servlet.http.HttpServletResponse; + +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.xhtmlrenderer.pdf.ITextRenderer; + +@Service +public class LayoutPdfService { + + + public String generateForm(@RequestBody Map jsonData) { + // Convert JSON to HTML + String htmlForm = convertJsonToHtml(jsonData); + return htmlForm; + } + +// public void convertToPdf(@RequestBody String htmlContent) throws IOException { +// // Render HTML content using Flying Saucer +// try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) { +// ITextRenderer renderer = new ITextRenderer(); +// renderer.setDocumentFromString(htmlContent); +// renderer.layout(); +// renderer.createPDF(outputStream); +// +// +// // Specify the directory and file name where you want to save the PDF +// String pdfFilePath = "/data/example.pdf"; +// +// String path="/data"; +// +// Path directory = Paths.get(path); +// if (!Files.exists(directory)) { +// try { +// Files.createDirectories(directory); +// } catch (IOException e) { +// e.printStackTrace(); +// // Handle directory creation failure appropriately +// } +// } +// +// +// // Save the PDF to the specified file +// try (FileOutputStream fileOutputStream = new FileOutputStream(pdfFilePath)) { +// outputStream.writeTo(fileOutputStream); +// } +// +// +// // Set the response headers +//// response.setContentType("application/pdf"); +//// response.setContentLength(outputStream.size()); +//// response.setHeader("Content-Disposition", "inline; filename=example.pdf"); +//// +//// // Write the PDF to the response output stream +//// response.getOutputStream().write(outputStream.toByteArray()); +//// response.getOutputStream().flush(); +// } catch (Exception e) { +// e.printStackTrace(); +// // Handle exceptions appropriately +// } +// } + + + + public void convertToPdf(@RequestBody String htmlContent) throws IOException { + + htmlContent="\r\n" + + "\r\n" + + "\r\n" + + " \r\n" + + " \r\n" + + " FormName\r\n" + + " \r\n" + + "\r\n" + + "\r\n" + + "\r\n" + + "
    \r\n" + + "
    \r\n" + + " Title\r\n" + + "
    \r\n" + + "
    \r\n" + + " \r\n" + + " \r\n" + + " \r\n" + + "
    \r\n" + + "
    \r\n" + + " \r\n" + + " \r\n" + + " \r\n" + + "
    \r\n" + + "
    \r\n" + + "\r\n" + + "\r\n" + + "\r\n"; + // Render HTML content using Flying Saucer + try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) { + ITextRenderer renderer = new ITextRenderer(); + renderer.setDocumentFromString(htmlContent); + renderer.layout(); + renderer.createPDF(outputStream); + + // Reset the position of the output stream before writing to the file +// outputStream.reset(); + + // Specify the directory and file name where you want to save the PDF + String pdfFilePath = "/data/example.pdf"; + + String path = "/data"; + + Path directory = Paths.get(path); + if (!Files.exists(directory)) { + try { + Files.createDirectories(directory); + } catch (IOException e) { + e.printStackTrace(); + // Handle directory creation failure appropriately + } + } + + // Save the PDF to the specified file + try (FileOutputStream fileOutputStream = new FileOutputStream(pdfFilePath)) { + outputStream.writeTo(fileOutputStream); + } + + } catch (Exception e) { + e.printStackTrace(); + // Handle exceptions appropriately + } + } + + + private String convertJsonToHtml(Map formData) { + StringBuilder htmlBuilder = new StringBuilder("\n\n\n"); + htmlBuilder.append(" \n"); + htmlBuilder.append(" \n"); + htmlBuilder.append(String.format(" %s\n", formData.get("name"))); + htmlBuilder.append(" \n\n\n\n
    \n"); + + // Iterate through the dashboard array + List> dashboard = (List>) formData.get("dashboard"); + for (Map element : dashboard) { + htmlBuilder.append(generateFormField(element)); + } + + htmlBuilder.append("
    \n\n\n"); + return htmlBuilder.toString(); + } + + private String generateFormField(Map fieldData) { + StringBuilder fieldHtml = new StringBuilder(); + String type = (String) fieldData.get("type"); + + if (type != null) { + fieldHtml.append( + String.format("
    \n", getGridStyle(fieldData))); + fieldHtml.append(String.format(" \n", fieldData.get("fieldName"), + fieldData.get("fieldtext"))); + + switch (type) { + case "text": + fieldHtml.append(String.format(" \n", + fieldData.get("fieldName"), fieldData.get("fieldName"), getAdditionalAttributes(fieldData))); + break; + case "textarea": + fieldHtml.append( + String.format(" \n", fieldData.get("fieldName"))); + break; + case "select": + fieldHtml.append(String.format(" \n"); + break; + // Add more cases for other form field types as needed + default: + // Handle unknown field types or add more specific cases + } + + fieldHtml.append("
    \n"); + } + + return fieldHtml.toString(); + } + + private String getGridStyle(Map fieldData) { + int cols = (int) fieldData.get("cols"); + int rows = (int) fieldData.get("rows"); + int x = (int) fieldData.get("x"); + int y = (int) fieldData.get("y"); + + return String.format("grid-column: span %d; grid-row: span %d; grid-column-start: %d; grid-row-start: %d;", + cols, rows, x, y); + } + + private String getAdditionalAttributes(Map fieldData) { + StringBuilder attributes = new StringBuilder(); + + for (Map.Entry entry : fieldData.entrySet()) { + String key = entry.getKey(); + Object value = entry.getValue(); + + if (!Arrays.asList("type", "fieldName", "fieldtext", "cols", "rows", "x", "y").contains(key) + && value != null) { + attributes.append(String.format(" %s=\"%s\"", key, value)); + } + } + + return attributes.toString(); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcardLines/Controllers/FabricIcardLinesController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcardLines/Controllers/FabricIcardLinesController.java new file mode 100644 index 0000000..4cd2a5b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcardLines/Controllers/FabricIcardLinesController.java @@ -0,0 +1,78 @@ +package com.realnet.FabricIcardLines.Controllers; + +import java.io.IOException; +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import com.realnet.FabricIcardLines.Entity.Dummyfabric; +import com.realnet.FabricIcardLines.Entity.FabricIcardLines; +import com.realnet.FabricIcardLines.Services.FabricIcardLinesService; + +@RequestMapping(value = "/FabricIcardLines") +@RestController +public class FabricIcardLinesController { + + @Autowired + private FabricIcardLinesService Service; + + @PostMapping("/FabricIcardLines") + public FabricIcardLines Savedata(@RequestBody FabricIcardLines data) { + FabricIcardLines save = Service.Savedata(data); + return save; + } + + @GetMapping("/FabricIcardLines") + public List getdetails() { + List get = Service.getdetails(); + return get; + } + + @GetMapping("/FabricIcardLines/{id}") + public FabricIcardLines getdetailsbyId(@PathVariable Long id) { + FabricIcardLines get = Service.getdetailsbyId(id); + return get; + + } + + @DeleteMapping("/FabricIcardLines/{id}") + public void delete_by_id(@PathVariable Long id) { + Service.delete_by_id(id); + + } + + @PutMapping("/FabricIcardLines/{id}") + public FabricIcardLines update(@RequestBody FabricIcardLines data, @PathVariable Long id) { + FabricIcardLines update = Service.update(data, id); + return update; + } + +// make xml file + @PutMapping("/FabricIcardLines/xml") + public FabricIcardLines makexmlfile(@RequestParam String id, @RequestBody Dummyfabric dummy) throws IOException { + + String xml = dummy.getXml(); + String json = dummy.getJson(); + + FabricIcardLines update = Service.makexmlfile(id, xml, json); + return update; + } + +// get by headerid + @GetMapping("/FabricIcardLines/headerId/{id}") + public FabricIcardLines getdetailsbyheaderId(@PathVariable String id) { + FabricIcardLines get = Service.getbyheaderid(id); + return get; + + } + +// file read + @GetMapping("/FabricIcardLines/json/{id}") + public String readfile(@PathVariable String id) throws IOException { + String get = Service.readjson(id); + + return get; + + } + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcardLines/Controllers/JsonKeysController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcardLines/Controllers/JsonKeysController.java new file mode 100644 index 0000000..72fccbf --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcardLines/Controllers/JsonKeysController.java @@ -0,0 +1,117 @@ +package com.realnet.FabricIcardLines.Controllers; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.Iterator; +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.CrossOrigin; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.realnet.FabricIcardLines.Entity.FabricIcardLines; +import com.realnet.FabricIcardLines.Services.FabricIcardLinesService; + +@CrossOrigin("*") +@RequestMapping(value = "/FabricIcardLines") +@RestController +public class JsonKeysController { + + @Autowired + private FabricIcardLinesService fabricIcardLinesService; + + @PostMapping("/getJsonKeys") + public ResponseEntity> getJsonKeys(@RequestBody String json) { + try { + // Parse JSON string into JsonNode + ObjectMapper objectMapper = new ObjectMapper(); + JsonNode jsonNode = objectMapper.readTree(json); + + // Get all keys from JsonNode + List keys = getAllKeys(jsonNode); + + return ResponseEntity.ok(keys); + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null); + } + } + + private List getAllKeys(JsonNode jsonNode) { + List keys = new ArrayList<>(); + Iterator fieldNames = jsonNode.fieldNames(); + while (fieldNames.hasNext()) { + keys.add(fieldNames.next()); + } + return keys; + } + +// get key value from FabricIcardLinesService + @PostMapping("/FabricIcardLines/getKeyValuePairs/{id}") + public ResponseEntity>> getKeyValuePairs(@PathVariable String id) { + + FabricIcardLines lines = fabricIcardLinesService.getbyheaderid(id); + if (lines == null) { + String message = "No lines found for ID: " + id; + return ResponseEntity.status(HttpStatus.NOT_FOUND) + .body(Collections.singletonList(Collections.singletonMap("message", message))); + } + + String jsonData = lines.getLayoutModel(); + + try { + // Parse JSON string into JsonNode + ObjectMapper objectMapper = new ObjectMapper(); + JsonNode rootNode = objectMapper.readTree(jsonData); + + // Extract key-value pairs based on type + List> keyValuePairs = extractKeyValuePairs(rootNode); + + return ResponseEntity.ok(keyValuePairs); + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null); + } + } + + private List> extractKeyValuePairs(JsonNode rootNode) { + List> keyValuePairs = new ArrayList<>(); + JsonNode objectsNode = rootNode.get("objects"); + if (objectsNode == null || !objectsNode.isArray()) { + return keyValuePairs; // Return empty list if objects array is missing or not an array + } + + for (JsonNode node : objectsNode) { + Map pair = new HashMap<>(); + String type = node.path("type").asText(); + if (type.equals("i-text")) { + JsonNode textNode = node.path("text"); + if (!textNode.isMissingNode()) { + pair.put(type, textNode.asText()); + } + } else if (type.equals("image")) { + JsonNode srcNode = node.path("src"); + if (!srcNode.isMissingNode()) { + pair.put(type, node.get("src").asText()); + + } + } + if (!pair.isEmpty()) { + + keyValuePairs.add(pair); + } + } + return keyValuePairs; + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcardLines/Entity/Dummyfabric.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcardLines/Entity/Dummyfabric.java new file mode 100644 index 0000000..c637c9f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcardLines/Entity/Dummyfabric.java @@ -0,0 +1,19 @@ +package com.realnet.FabricIcardLines.Entity; + +import javax.persistence.Lob; + +import lombok.Data; + +@Data +public class Dummyfabric { + + + @Lob + private String json; + + @Lob + private String xml; + + + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcardLines/Entity/FabricIcardLines.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcardLines/Entity/FabricIcardLines.java new file mode 100644 index 0000000..02f220b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcardLines/Entity/FabricIcardLines.java @@ -0,0 +1,41 @@ +package com.realnet.FabricIcardLines.Entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Lob; +import javax.persistence.ManyToOne; + +import com.fasterxml.jackson.annotation.JsonBackReference; +import com.realnet.FabricIcard.Entity.FabricIcard; + +import lombok.Data; + +@Entity +@Data +public class FabricIcardLines { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String header_id; + private String file_path; + private String xml_file_name; + private String json_file_name; + + @Lob + private String mapping_model; + + @Lob + private String Model; + + @Lob + private String layoutModel; + + @JsonBackReference + @ManyToOne + private FabricIcard layoutBuilder_t; + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcardLines/Repository/FabricIcardLinesRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcardLines/Repository/FabricIcardLinesRepository.java new file mode 100644 index 0000000..8e7c4b4 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcardLines/Repository/FabricIcardLinesRepository.java @@ -0,0 +1,15 @@ +package com.realnet.FabricIcardLines.Repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import com.realnet.FabricIcardLines.Entity.FabricIcardLines; + +@Repository +public interface FabricIcardLinesRepository extends JpaRepository { + + @Query(value = "select * from fabric_icard_lines where header_id=?1", nativeQuery = true) + FabricIcardLines getbyheaderId(String header_id); + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcardLines/Services/FabricIcardLinesService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcardLines/Services/FabricIcardLinesService.java new file mode 100644 index 0000000..2da3cee --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcardLines/Services/FabricIcardLinesService.java @@ -0,0 +1,109 @@ +package com.realnet.FabricIcardLines.Services; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Paths; +import java.util.List; + +import org.apache.commons.io.FileUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import com.realnet.FabricIcard.Entity.FabricIcard; +import com.realnet.FabricIcard.Repository.FabricIcardRepository; +import com.realnet.FabricIcardLines.Entity.FabricIcardLines; +import com.realnet.FabricIcardLines.Repository.FabricIcardLinesRepository; + +@Service +public class FabricIcardLinesService { + + @Value("${projectPath}") + private String projectpath; + + @Autowired + private FabricIcardRepository fabricIcardRepository; + + @Autowired + private FabricIcardLinesRepository Repository; + + public FabricIcardLines Savedata(FabricIcardLines data) { + return Repository.save(data); + } + + public List getdetails() { + return (List) Repository.findAll(); + } + + public FabricIcardLines getdetailsbyId(Long id) { + return Repository.findById(id).get(); + } + + public void delete_by_id(Long id) { + Repository.deleteById(id); + } + + public FabricIcardLines update(FabricIcardLines data, Long id) { + FabricIcardLines old = Repository.findById(id).get(); + old.setHeader_id(data.getHeader_id()); + old.setModel(data.getModel()); + old.setLayoutModel(data.getLayoutModel()); + old.setFile_path(data.getFile_path()); + old.setXml_file_name(data.getXml_file_name()); + old.setJson_file_name(data.getJson_file_name()); + old.setMapping_model(data.getMapping_model()); + + final FabricIcardLines test = Repository.save(old); + return test; + } + +// make xml file + public FabricIcardLines makexmlfile(String headerid, String xml, String json) throws IOException { + + FabricIcard fabricIcard = fabricIcardRepository.findById(Long.valueOf(headerid)).get(); + + String name = fabricIcard.getName(); + String xmlfileName = name + ".xml"; + String jsonfileName = name + ".txt"; + + String filePath = Paths.get(xmlfileName).toString(); + FileWriter fr = new FileWriter(filePath); + fr.write(xml); + fr.close(); + + String jsonfilePath = Paths.get(jsonfileName).toString(); + FileWriter jsonfr = new FileWriter(jsonfilePath); + jsonfr.write(json); + jsonfr.close(); + + FabricIcardLines old = Repository.getbyheaderId(headerid); + + old.setFile_path(projectpath); + old.setXml_file_name(xmlfileName); + old.setJson_file_name(jsonfileName); + old.setHeader_id(headerid); + + final FabricIcardLines test = Repository.save(old); + return test; + } + +// get by header id + public FabricIcardLines getbyheaderid(String id) { + return Repository.getbyheaderId(id); + } + +// read file + public String readjson(String id) throws IOException { + + FabricIcardLines fLines = Repository.getbyheaderId(id); + String file_path = fLines.getFile_path(); + String json_file_name = fLines.getJson_file_name(); + String pathString = file_path + File.separator + json_file_name; + + String readFileToString = FileUtils.readFileToString(new File(pathString), StandardCharsets.UTF_8); + + return readFileToString; + } +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Controllers/UploadeddocsController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Controllers/UploadeddocsController.java new file mode 100644 index 0000000..fa74e91 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Controllers/UploadeddocsController.java @@ -0,0 +1,194 @@ +package com.realnet.FileUpload.Controllers; + +import java.io.File; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Arrays; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import org.apache.commons.io.FileUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.dao.DataAccessException; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +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.multipart.MultipartFile; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.realnet.FileUpload.Entity.Uploadeddocs; +import com.realnet.FileUpload.Services.FileuploadService; +import com.realnet.FileUpload.Services.UploadedFileService; + +@RequestMapping(value = "/FileUpload") +//@CrossOrigin("*") +@RestController +public class UploadeddocsController { + @Autowired + private UploadedFileService Service; + + @Value("${projectPath}") + private String projectPath; + + @Autowired + private FileuploadService fileuploadService; + + @PostMapping("/Uploadeddocs/{ref}/{table_name}") + + public ResponseEntity Savedata(@PathVariable String ref, @PathVariable String table_name, + @RequestParam MultipartFile file) throws JsonMappingException, JsonProcessingException { + + Uploadeddocs tdata = new Uploadeddocs(); + Date d = new Date(); + String addString = "_" + d.getTime(); + + if (file.isEmpty()) { + return new ResponseEntity<>("file is empty", HttpStatus.BAD_REQUEST); + + } + String UPLOAD_DIREC = File.separator + "Resources" + File.separator + "Files"; + String originalFilename = file.getOriginalFilename(); + String filetype = originalFilename.substring(originalFilename.lastIndexOf(".")); + String filename = originalFilename.substring(0, originalFilename.lastIndexOf(".")) + addString; + String replacedfilename = filename + filetype; + System.out.println("file name is ..." + replacedfilename); + + Uploadeddocs save = null; + System.out.println(file.getOriginalFilename()); + + boolean f = fileuploadService.uploadFile(file, addString); + + if (f) { + System.out.println("file uploaded successfully"); + + tdata.setUploadedfile_path(projectPath + UPLOAD_DIREC); + + tdata.setUploadedfile_name(replacedfilename); + tdata.setRef(ref); + tdata.setRef_table_name(table_name); + + save = Service.Savedata(tdata); + return new ResponseEntity<>(save, HttpStatus.OK); + + } + + else { + return new ResponseEntity<>("file upload failed", HttpStatus.BAD_REQUEST); + + } + + } + + @PutMapping("/Uploadeddocs/{id}") + public Uploadeddocs update(@RequestBody Uploadeddocs data, @PathVariable Integer id) { + Uploadeddocs update = Service.update(data, id); + return update; + } + + @GetMapping("/Uploadeddocs") + public List getdetails() { + List get = Service.getdetails(); + return get; + } + + @GetMapping("/Uploadeddocs/{id}") + public Uploadeddocs getdetailsbyId(@PathVariable Integer id) { + Uploadeddocs get = Service.getdetailsbyId(id); + return get; + } + + @DeleteMapping("/Uploadeddocs/{id}") + public void delete_by_id(@PathVariable Integer id) { + Service.delete_by_id(id); + + } + +// get by ref and ref table name + @GetMapping("/Uploadeddocs/{ref}/{ref_tablename}") + public List getbyrefandtablename(@PathVariable String ref, @PathVariable String ref_tablename) { + List get = Service.getbyrefandtablename(ref, ref_tablename); + return get; + } + + @Autowired + private JdbcTemplate jdbcTemplate; + + @PostMapping("/execute") + public ResponseEntity executeDump(@RequestParam Boolean execute, @RequestParam String filePath) { + // Check if execution is allowed + if (!execute) { + return ResponseEntity.ok("Service not executed due to 'execute' flag being false."); + } + + Path path = Paths.get(System.getProperty("user.dir")).resolve(filePath); + + try { + // Check if file exists + if (!Files.exists(path)) { + return ResponseEntity.badRequest().body("File not found: " + filePath); + } + + // File content ko read karo aur SQL commands extract karo + String sql = FileUtils.readFileToString(new File(filePath), StandardCharsets.UTF_8); + + // SQL commands ko execute karo + + // Split statements by semicolon + List sqlStatements = Arrays.stream(sql.split(";")).map(String::trim) + .filter(statement -> !statement.isEmpty()) // Empty statements ko remove karo + .filter(statement -> !statement.startsWith("USE")) // "USE db;" ko ignore karo + .filter(statement -> !statement.startsWith("--")) // Comments ko ignore karo + .filter(statement -> !statement.startsWith("/*")) // Special MySQL commands ko ignore karo + .collect(Collectors.toList()); + + // Execute each statement + for (String statement : sqlStatements) { + try { + jdbcTemplate.execute(statement); + + System.out.println(statement + " executed.."); + + } catch (DataAccessException e) { + // Specific SQL execution error ko catch karo aur log karo + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) + .body("Error executing statement: " + statement + " | Error: " + e.getMessage()); + } + } + System.out.println("Dump executed executed.."); + + // File ko delete karo + Files.delete(path); + + System.out.println("File delete successfully..."); + + return ResponseEntity.ok("Dump executed and file deleted successfully!"); + + } catch (IOException e) { + + System.out.println("io error.." + e); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) + .body("File reading/deletion error: " + e.getMessage()); + } catch (DataAccessException e) { + System.out.println("DataAccessException error.." + e); + + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) + .body("SQL execution error: " + e.getMessage()); + } + } + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Entity/Uploadeddocs.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Entity/Uploadeddocs.java new file mode 100644 index 0000000..7ac589b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Entity/Uploadeddocs.java @@ -0,0 +1,25 @@ +package com.realnet.FileUpload.Entity; + +import lombok.*; +import javax.persistence.*; + +import com.realnet.WhoColumn.Entity.Who_column; + +import java.time.LocalDateTime; +import java.util.*; + +@Entity +@Data +public class Uploadeddocs extends Who_column { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Integer id; + + private String ref; + private String ref_table_name; + + private String uploadedfile_name; + private String uploadedfile_path; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Repository/UploadFileRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Repository/UploadFileRepository.java new file mode 100644 index 0000000..88eec31 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Repository/UploadFileRepository.java @@ -0,0 +1,17 @@ +package com.realnet.FileUpload.Repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import com.realnet.FileUpload.Entity.Uploadeddocs; + +@Repository +public interface UploadFileRepository extends JpaRepository { + + @Query(value = "select * from uploadeddocs where ref=?1 && ref_table_name=?2", nativeQuery = true) + List findbyrefAnsTableName(String ref, String ref_table_name); + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Services/FileuploadService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Services/FileuploadService.java new file mode 100644 index 0000000..0351c01 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Services/FileuploadService.java @@ -0,0 +1,66 @@ +package com.realnet.FileUpload.Services; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.InputStream; +import java.util.ArrayList; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Component +public class FileuploadService { + @Value("${projectPath}") + private String projectPath; + + public boolean uploadFile(MultipartFile multipartFile, String addString) { + boolean f = false; + String UPLOAD_DIREC = File.separator + "Resources" + File.separator + "Files"; + String originalFilename = multipartFile.getOriginalFilename(); + + String filetype = originalFilename.substring(originalFilename.lastIndexOf(".")); + String filename = originalFilename.substring(0, originalFilename.lastIndexOf(".")) + addString; + String replacedfilename = filename + filetype; + + System.out.println("file name with replace is ..." + replacedfilename); + String Path1 = projectPath + UPLOAD_DIREC; + + String filepath = Path1 + File.separator + replacedfilename; + + try { + + if (!UPLOAD_DIREC.isEmpty()) { + + File projectdir = new File(Path1); + if (!projectdir.exists()) { + boolean mkdir = projectdir.mkdirs(); + System.out.println(Path1 + " folder created = " + mkdir); + } + + + } + // reading data + InputStream is = multipartFile.getInputStream(); + byte data[] = new byte[is.available()]; + is.read(data); + + // writing data + + FileOutputStream fos = new FileOutputStream(filepath); + fos.write(data); + fos.close(); + fos.flush(); + f = true; + + } catch (Exception e) { + + log.error(e.getLocalizedMessage()); + } + return f; + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Services/UploadedFileService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Services/UploadedFileService.java new file mode 100644 index 0000000..67f4769 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Services/UploadedFileService.java @@ -0,0 +1,43 @@ +package com.realnet.FileUpload.Services; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.realnet.FileUpload.Entity.Uploadeddocs; +import com.realnet.FileUpload.Repository.UploadFileRepository; + +@Service +public class UploadedFileService { + @Autowired + private UploadFileRepository Repository; + + public Uploadeddocs Savedata(Uploadeddocs data) { + return Repository.save(data); + } + + public List getdetails() { + return (List) Repository.findAll(); + } + + public Uploadeddocs getdetailsbyId(Integer id) { + return Repository.findById(id).get(); + } + + public void delete_by_id(Integer id) { + Repository.deleteById(id); + } + + public Uploadeddocs update(Uploadeddocs data, Integer id) { + Uploadeddocs old = Repository.findById(id).get(); + old.setUploadedfile_name(data.getUploadedfile_name()); + final Uploadeddocs test = Repository.save(old); + return test; + } + +// get by ref and table name + public List getbyrefandtablename(String ref, String ref_table_name) { + return (List) Repository.findbyrefAnsTableName(ref, ref_table_name); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/controller/Filecontroller.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/controller/Filecontroller.java new file mode 100644 index 0000000..acb0968 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/controller/Filecontroller.java @@ -0,0 +1,54 @@ +//package com.realnet.FileUpload.controller; +// +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.http.HttpStatus; +//import org.springframework.http.ResponseEntity; +//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.multipart.MultipartFile; +// +//import com.realnet.fileupload.helper.Fileupload_helper; +// +//@RestController +//@RequestMapping("/sureserve/api") +//public class Filecontroller { +// +// @Autowired +// private Fileupload_helper fileuploadhelper; +// +// @PostMapping("/test") +// public ResponseEntity upload(@RequestParam("file") MultipartFile file) { +// +// /* +// * System.out.println(file.getOriginalFilename()); +// * System.out.println(file.getSize()); +// * System.out.println(file.getContentType()); +// */ +// +// try { +// +// if (file.isEmpty()) { +// return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("must contain file"); +// } +// /* +// * if(!file.getContentType().equals("image/png")) { +// * +// * return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR). +// * body("must contain png format"); } +// */ +// +// boolean f = fileuploadhelper.uploadFile(file); +// if (f) { +// return ResponseEntity.ok("File uploaded successfully"); +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// +// return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("something went wrong"); +// +// } +// +//} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/helper/Fileupload_helper.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/helper/Fileupload_helper.java new file mode 100644 index 0000000..f6a5ff1 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/helper/Fileupload_helper.java @@ -0,0 +1,81 @@ +package com.realnet.FileUpload.helper; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.InputStream; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; + +@Component +public class Fileupload_helper { + + @Value("${projectPath}") + private String projectPath; + + public final String UPLOAD_DIREC = "/Files"; + + public boolean uploadFile(MultipartFile multipartFile) { + boolean f = false; + + try { + + File path = new File(projectPath + UPLOAD_DIREC); + File FileParentDir = new File(path.toString()); + if (!FileParentDir.exists()) { + FileParentDir.mkdirs(); + } + // reading data + InputStream is = multipartFile.getInputStream(); + byte data[] = new byte[is.available()]; + is.read(data); + + // writing data + + FileOutputStream fos = new FileOutputStream( + projectPath + UPLOAD_DIREC + File.separator + multipartFile.getOriginalFilename()); + fos.write(data); + fos.close(); + fos.flush(); + f = true; + + } catch (Exception e) { + + e.printStackTrace(); + } + return f; + } + + public boolean uploadFilewithtimestamp(MultipartFile multipartFile, String timestamp) { + boolean f = false; + + try { + + File path = new File(projectPath + UPLOAD_DIREC); + File FileParentDir = new File(path.toString()); + if (!FileParentDir.exists()) { + FileParentDir.mkdirs(); + } + // reading data + InputStream is = multipartFile.getInputStream(); + byte data[] = new byte[is.available()]; + is.read(data); + + // writing data + + FileOutputStream fos = new FileOutputStream( + projectPath + UPLOAD_DIREC + File.separator + timestamp + multipartFile.getOriginalFilename()); + fos.write(data); + fos.close(); + fos.flush(); + f = true; + + } catch (Exception e) { + + e.printStackTrace(); + } + return f; + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FromExtensionJson/Controllers/FromExtensionJson_Controller.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FromExtensionJson/Controllers/FromExtensionJson_Controller.java new file mode 100644 index 0000000..72f09d8 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FromExtensionJson/Controllers/FromExtensionJson_Controller.java @@ -0,0 +1,95 @@ +package com.realnet.FromExtensionJson.Controllers; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.FromExtensionJson.Entity.FromExtensionJson_t; +import com.realnet.FromExtensionJson.Repository.FromExtensionJson_Repository; +import com.realnet.FromExtensionJson.Services.FromExtensionJson_Service; +@RequestMapping(value = "/FromExtensionJson") +@RestController +public class FromExtensionJson_Controller { + + @Autowired + private FromExtensionJson_Service Service; + + @Autowired + private FromExtensionJson_Repository extensionJson_Repository; + + @PostMapping("/ExtensionJson") + public FromExtensionJson_t Savedata(@RequestBody FromExtensionJson_t data) { + FromExtensionJson_t save = Service.Savedata(data); + return save; + } + + @GetMapping("/ExtensionJson") + public List getdetails() { + List get = Service.getdetails(); + return get; + } + + @GetMapping("/ExtensionJson/{id}") + public FromExtensionJson_t getdetailsbyId(@PathVariable Long id) { + FromExtensionJson_t get = Service.getdetailsbyId(id); + return get; + + } + + @DeleteMapping("/ExtensionJson/{id}") + public void delete_by_id(@PathVariable Long id) { + Service.delete_by_id(id); + + } + + @PutMapping("/ExtensionJson/{id}") + public FromExtensionJson_t update(@RequestBody FromExtensionJson_t data, @PathVariable Long id) { + FromExtensionJson_t update = Service.update(data, id); + return update; + } + + + + + @GetMapping("/ExtensionJson/{formCode}") + public ResponseEntity getdetailsbyFormcode(@PathVariable String formCode) { + FromExtensionJson_t get = extensionJson_Repository.getdetailsbyFormCode(formCode); + // return get; + + if (get != null) { + String jsonObject = get.getJsonObject(); + return ResponseEntity.ok().body(jsonObject); + } else { + return ResponseEntity.notFound().build(); + } + + } + + + @GetMapping("/ListExtensionJson/{formCode}") + public ResponseEntity> getJsonObjectsByFormCodeList(@PathVariable String formCode) { + List jsonObjects = extensionJson_Repository.getJsonObjectsByFormCode(formCode); + if (!jsonObjects.isEmpty()) { + return ResponseEntity.ok().body(jsonObjects); + } else { + return ResponseEntity.notFound().build(); + } + } + + + + + + + + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FromExtensionJson/Entity/FromExtensionJson_t.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FromExtensionJson/Entity/FromExtensionJson_t.java new file mode 100644 index 0000000..ecd0cc8 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FromExtensionJson/Entity/FromExtensionJson_t.java @@ -0,0 +1,20 @@ +package com.realnet.FromExtensionJson.Entity; + import lombok.*; + import javax.persistence.*; + import java.time.LocalDateTime; + import java.util.*; + + @Entity + @Data + public class FromExtensionJson_t{ + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String form_code; + private String account_id; + @Lob + private String jsonObject; + + } \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FromExtensionJson/Repository/FromExtensionJson_Repository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FromExtensionJson/Repository/FromExtensionJson_Repository.java new file mode 100644 index 0000000..4c1596f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FromExtensionJson/Repository/FromExtensionJson_Repository.java @@ -0,0 +1,23 @@ +package com.realnet.FromExtensionJson.Repository; + + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + + +import com.realnet.FromExtensionJson.Entity.FromExtensionJson_t; + +@Repository +public interface FromExtensionJson_Repository extends JpaRepository { + + + @Query(value="SELECT * FROM from_extension_json_t WHERE form_code = ?1", nativeQuery = true) + FromExtensionJson_t getdetailsbyFormCode(String formCode); + + @Query(value = "SELECT json_object FROM from_extension_json_t WHERE form_code = ?1", nativeQuery = true) + List getJsonObjectsByFormCode(String formCode); + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FromExtensionJson/Services/FromExtensionJson_Service.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FromExtensionJson/Services/FromExtensionJson_Service.java new file mode 100644 index 0000000..ac3946b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/FromExtensionJson/Services/FromExtensionJson_Service.java @@ -0,0 +1,39 @@ +package com.realnet.FromExtensionJson.Services; + +import com.realnet.FromExtensionJson.Repository.FromExtensionJson_Repository; +import com.realnet.FromExtensionJson.Entity.FromExtensionJson_t; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class FromExtensionJson_Service { + @Autowired + private FromExtensionJson_Repository Repository; + + public FromExtensionJson_t Savedata(FromExtensionJson_t data) { + return Repository.save(data); + } + + public List getdetails() { + return (List) Repository.findAll(); + } + + public FromExtensionJson_t getdetailsbyId(Long id) { + return Repository.findById(id).get(); + } + + public void delete_by_id(Long id) { + Repository.deleteById(id); + } + + public FromExtensionJson_t update(FromExtensionJson_t data, Long id) { + FromExtensionJson_t old = Repository.findById(id).get(); + old.setForm_code(data.getForm_code()); + old.setAccount_id(data.getAccount_id()); + old.setJsonObject(data.getJsonObject()); + final FromExtensionJson_t test = Repository.save(old); + return test; + } +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Gaurav_testing/Controllers/Gaurav_testing_Controller.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Gaurav_testing/Controllers/Gaurav_testing_Controller.java new file mode 100644 index 0000000..9d92b7e --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Gaurav_testing/Controllers/Gaurav_testing_Controller.java @@ -0,0 +1,68 @@ +package com.realnet.Gaurav_testing.Controllers; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.Gaurav_testing.Entity.Gaurav_testing_t; +import com.realnet.Gaurav_testing.Services.Gaurav_testing_Service; + +@RequestMapping(value = "/Gaurav_testing") +@RestController +public class Gaurav_testing_Controller { + + @Autowired + private Gaurav_testing_Service Service; + + @PostMapping("/Gaurav_testing") + public Gaurav_testing_t Savedata(@RequestBody Gaurav_testing_t data) { + Gaurav_testing_t save = Service.Savedata(data); + return save; + } + + @GetMapping("/Gaurav_testing_custom") + public Gaurav_testing_t getdetail() { + Gaurav_testing_t get = Service.getdetailcustom(); + return get; + + } + + @PostMapping("/Gaurav_testing_custom") + public Gaurav_testing_t Savecustom(@RequestBody Gaurav_testing_t data) { + Gaurav_testing_t save = Service.savecustom(data); + return save; + } + + @GetMapping("/Gaurav_testing") + public List getdetails() { + List get = Service.getdetails(); + return get; + } + + @GetMapping("/Gaurav_testing/{id}") + public Gaurav_testing_t getdetailsbyId(@PathVariable Integer id) { + Gaurav_testing_t get = Service.getdetailsbyId(id); + return get; + + } + + @DeleteMapping("/Gaurav_testing/{id}") + public void delete_by_id(@PathVariable Integer id) { + Service.delete_by_id(id); + + } + + @PutMapping("/Gaurav_testing/{id}") + public Gaurav_testing_t update(@RequestBody Gaurav_testing_t data, @PathVariable Integer id) { + Gaurav_testing_t update = Service.update(data, id); + return update; + } +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Gaurav_testing/Entity/Gaurav_testing_t.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Gaurav_testing/Entity/Gaurav_testing_t.java new file mode 100644 index 0000000..fd18c73 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Gaurav_testing/Entity/Gaurav_testing_t.java @@ -0,0 +1,27 @@ +package com.realnet.Gaurav_testing.Entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +import com.realnet.WhoColumn.Entity.Who_column; + +import lombok.Data; + +@Entity +@Data +public class Gaurav_testing_t extends Who_column { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private int id; + + private String name; + private String email; + private String mobno; + private String address; + private String pincode; + private String description; + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Gaurav_testing/Repository/Gaurav_testing_Repository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Gaurav_testing/Repository/Gaurav_testing_Repository.java new file mode 100644 index 0000000..d96f9a1 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Gaurav_testing/Repository/Gaurav_testing_Repository.java @@ -0,0 +1,13 @@ +package com.realnet.Gaurav_testing.Repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.Gaurav_testing.Entity.Gaurav_testing_t; + +@Repository +public interface Gaurav_testing_Repository extends JpaRepository { + + Gaurav_testing_t findTopByOrderByIdAsc(); + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Gaurav_testing/Services/Gaurav_testing_Service.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Gaurav_testing/Services/Gaurav_testing_Service.java new file mode 100644 index 0000000..0c884ab --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Gaurav_testing/Services/Gaurav_testing_Service.java @@ -0,0 +1,59 @@ +package com.realnet.Gaurav_testing.Services; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.realnet.Gaurav_testing.Entity.Gaurav_testing_t; +import com.realnet.Gaurav_testing.Repository.Gaurav_testing_Repository; + +@Service +public class Gaurav_testing_Service { + @Autowired + private Gaurav_testing_Repository Repository; + + public Gaurav_testing_t Savedata(Gaurav_testing_t data) { + return Repository.save(data); + } + + public List getdetails() { + return (List) Repository.findAll(); + } + + public Gaurav_testing_t getdetailsbyId(Integer id) { + return Repository.findById(id).get(); + } + + public Gaurav_testing_t getdetailcustom() { + return Repository.findTopByOrderByIdAsc(); + } + + public void delete_by_id(Integer id) { + Repository.deleteById(id); + } + + public Gaurav_testing_t update(Gaurav_testing_t data, Integer id) { + Gaurav_testing_t old = Repository.findById(id).get(); + old.setName(data.getName()); + old.setEmail(data.getEmail()); + old.setMobno(data.getMobno()); + old.setAddress(data.getAddress()); + old.setPincode(data.getPincode()); + old.setDescription(data.getDescription()); + final Gaurav_testing_t test = Repository.save(old); + return test; + } + + public Gaurav_testing_t savecustom(Gaurav_testing_t data) { + + Gaurav_testing_t old = new Gaurav_testing_t(); + old.setName(data.getName()); + old.setEmail(data.getEmail()); + old.setMobno(data.getMobno()); + old.setAddress(data.getAddress()); + old.setPincode(data.getPincode()); + final Gaurav_testing_t test = Repository.save(old); + return test; + } +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Modules_t_back/Controllers/Modules_tController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Modules_t_back/Controllers/Modules_tController.java new file mode 100644 index 0000000..9661943 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Modules_t_back/Controllers/Modules_tController.java @@ -0,0 +1,46 @@ +package com.realnet.Modules_t_back.Controllers; + +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import com.realnet.Modules_t_back.Entity.Modules_t; +import com.realnet.Modules_t_back.Services.Modules_tService; + +@RequestMapping(value = "/_back") +@RestController +public class Modules_tController { + + @Autowired + private Modules_tService Service; + + @PostMapping("/Modules_t") + + public Modules_t Savedata(@RequestBody Modules_t data) { + Modules_t save = Service.Savedata(data); + return save; + } + + @GetMapping("/Modules_t") + public List getdetails() { + List get = Service.getdetails(); + return get; + } + + @GetMapping("/Modules_t/{id}") + public Modules_t getdetailsbyId(@PathVariable Long id) { + Modules_t get = Service.getdetailsbyId(id); + return get; + } + + @DeleteMapping("/Modules_t/{id}") + public void delete_by_id(@PathVariable Long id) { + Service.delete_by_id(id); + + } + + @PutMapping("/Modules_t/{id}") + public Modules_t update(@RequestBody Modules_t data, @PathVariable Long id) { + Modules_t update = Service.update(data, id); + return update; + } +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Modules_t_back/Entity/Modules_t.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Modules_t_back/Entity/Modules_t.java new file mode 100644 index 0000000..e97fa7d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Modules_t_back/Entity/Modules_t.java @@ -0,0 +1,24 @@ +package com.realnet.Modules_t_back.Entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +import lombok.Data; + +@Entity +@Data +public class Modules_t { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String modules; + private String description; + private String access_exclusive; + + private Boolean isdeleted; + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Modules_t_back/Repository/Modules_tRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Modules_t_back/Repository/Modules_tRepository.java new file mode 100644 index 0000000..aa9c268 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Modules_t_back/Repository/Modules_tRepository.java @@ -0,0 +1,13 @@ +package com.realnet.Modules_t_back.Repository; + + +import org.springframework.data.jpa.repository.JpaRepository; + +import org.springframework.stereotype.Repository; + + +import com.realnet.Modules_t_back.Entity.Modules_t; + +@Repository +public interface Modules_tRepository extends JpaRepository { +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Modules_t_back/Services/Modules_tService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Modules_t_back/Services/Modules_tService.java new file mode 100644 index 0000000..86bd584 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Modules_t_back/Services/Modules_tService.java @@ -0,0 +1,42 @@ +package com.realnet.Modules_t_back.Services; + +import com.realnet.Modules_t_back.Repository.Modules_tRepository; +import com.realnet.Modules_t_back.Entity.Modules_t; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class Modules_tService { + @Autowired + private Modules_tRepository Repository; + + public Modules_t Savedata(Modules_t data) { + data.setIsdeleted(false); + Modules_t save = Repository.save(data); + + return save; + } + + public List getdetails() { + return (List) Repository.findAll(); + } + + public Modules_t getdetailsbyId(Long id) { + return Repository.findById(id).get(); + } + + public void delete_by_id(Long id) { + Repository.deleteById(id); + } + + public Modules_t update(Modules_t data, Long id) { + Modules_t old = Repository.findById(id).get(); + old.setModules(data.getModules()); + old.setDescription(data.getDescription()); + old.setAccess_exclusive(data.getAccess_exclusive()); + final Modules_t test = Repository.save(old); + return test; + } +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/MultiTimeZone/Component/WhoColumnAspect.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/MultiTimeZone/Component/WhoColumnAspect.java new file mode 100644 index 0000000..3378817 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/MultiTimeZone/Component/WhoColumnAspect.java @@ -0,0 +1,122 @@ +package com.realnet.MultiTimeZone.Component; + +import java.time.ZonedDateTime; +import java.util.Collection; +import java.util.Date; + +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.transaction.Transactional; + +import org.aspectj.lang.annotation.AfterReturning; +import org.aspectj.lang.annotation.Aspect; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import com.realnet.MultiTimeZone.Services.TimezoneService; +import com.realnet.WhoColumn.Entity.Who_column; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.service1.AppUserService; + +@Aspect +@Component +public class WhoColumnAspect { + + @Autowired + private TimezoneService timezoneService; + + @PersistenceContext + private EntityManager entityManager; + + @Autowired + private AppUserService userService; + +// @Transactional +//// @Before("execution(* org.springframework.data.jpa.repository.JpaRepository.save(..)) && args(entity)") +// @AfterReturning(pointcut = "execution(* org.springframework.data.jpa.repository.JpaRepository.find*(..))", returning = "entity") +// +// public void applyTimezone(Object entity) { +// if (entity instanceof Who_column) { +// Who_column whoColumn = (Who_column) entity; +// +// // Null check for createdBy +//// Long createdByUserId = whoColumn.getCreatedBy(); +//// if (createdByUserId == null) { +//// return; // Avoid processing if no user info is available +//// } +// +// AppUser appUser = userService.getLoggedInUser(); +// +// // Fetch user timezone +//// AppUser appUser = entityManager.find(AppUser.class, createdByUserId); +// if (appUser == null || appUser.getMultitime() == null) { +// return; // Skip if user or timezone is not found +// } +// +// String userTimezone = appUser.getMultitime(); +// +// try { +// if (whoColumn.getCreatedAt() != null) { +// ZonedDateTime convertedCreatedAt = timezoneService.convertToUserTimezone(whoColumn.getCreatedAt(), +// userTimezone); +// whoColumn.setCreatedAt(Date.from(convertedCreatedAt.toInstant())); +// } +// +// if (whoColumn.getUpdatedAt() != null) { +// ZonedDateTime convertedUpdatedAt = timezoneService.convertToUserTimezone(whoColumn.getUpdatedAt(), +// userTimezone); +// whoColumn.setUpdatedAt(Date.from(convertedUpdatedAt.toInstant())); +// } +// } catch (Exception e) { +// System.err.println("Timezone conversion error: " + e.getMessage()); +// } +// } +// } + + @Transactional + @AfterReturning(pointcut = "execution(* org.springframework.data.jpa.repository.JpaRepository.find*(..))", returning = "entity") + public void applyTimezone(Object entity) { + if (entity == null) { + return; // Agar entity null hai to kuch mat karo + } + + AppUser appUser = userService.getLoggedInUser(); + if (appUser == null || appUser.getMultitime() == null) { + return; // Agar user ya timezone nahi mila to skip karo + } + + String userTimezone = appUser.getMultitime(); + + try { + if (entity instanceof Collection) { + // Agar entity ek collection hai to har element ko process karo + for (Object obj : (Collection) entity) { + convertWhoColumn(obj, userTimezone); + } + } else { + // Single entity case + convertWhoColumn(entity, userTimezone); + } + } catch (Exception e) { + System.err.println("Timezone conversion error: " + e.getMessage()); + } + } + + private void convertWhoColumn(Object obj, String userTimezone) { + if (obj instanceof Who_column) { + Who_column whoColumn = (Who_column) obj; + + if (whoColumn.getCreatedAt() != null) { + ZonedDateTime convertedCreatedAt = timezoneService.convertToUserTimezone(whoColumn.getCreatedAt(), + userTimezone); + whoColumn.setCreatedAt(Date.from(convertedCreatedAt.toInstant())); + } + + if (whoColumn.getUpdatedAt() != null) { + ZonedDateTime convertedUpdatedAt = timezoneService.convertToUserTimezone(whoColumn.getUpdatedAt(), + userTimezone); + whoColumn.setUpdatedAt(Date.from(convertedUpdatedAt.toInstant())); + } + } + } +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/MultiTimeZone/Component/WhoColumnInterceptor.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/MultiTimeZone/Component/WhoColumnInterceptor.java new file mode 100644 index 0000000..a97986c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/MultiTimeZone/Component/WhoColumnInterceptor.java @@ -0,0 +1,62 @@ +//package com.realnet.MultiTimeZone.Component; +// +//import java.io.Serializable; +//import java.time.ZonedDateTime; +//import java.util.Date; +//import java.util.TimeZone; +// +//import javax.persistence.EntityManager; +//import javax.persistence.EntityManagerFactory; +// +//import org.hibernate.EmptyInterceptor; +//import org.hibernate.type.Type; +//import org.springframework.stereotype.Component; +// +//import com.realnet.MultiTimeZone.Services.TimezoneService; +//import com.realnet.WhoColumn.Entity.Who_column; +//import com.realnet.users.entity1.AppUser; +// +//@Component +//public class WhoColumnInterceptor extends EmptyInterceptor { +// +// private final EntityManagerFactory entityManagerFactory; +// private final TimezoneService timezoneService; +// +// public WhoColumnInterceptor(EntityManagerFactory entityManagerFactory, TimezoneService timezoneService) { +// this.entityManagerFactory = entityManagerFactory; +// this.timezoneService = timezoneService; +// } +// +// @Override +// public boolean onLoad(Object entity, Serializable id, Object[] state, String[] propertyNames, Type[] types) { +// if (entity instanceof Who_column) { +// Who_column whoColumn = (Who_column) entity; +// +// // Fetch user timezone +// Long createdByUserId = whoColumn.getCreatedBy(); +// EntityManager entityManager = entityManagerFactory.createEntityManager(); +// AppUser appUser = entityManager.find(AppUser.class, createdByUserId); +// +// if (appUser != null) { +// String userTimezone = appUser.getMultitime(); +// TimeZone timeZone = TimeZone.getTimeZone(userTimezone); +// +// // Convert timestamps +// if (whoColumn.getCreatedAt() != null) { +// ZonedDateTime convertedCreatedAt = timezoneService.convertToUserTimezone(whoColumn.getCreatedAt(), +// userTimezone); +// whoColumn.setCreatedAt(Date.from(convertedCreatedAt.toInstant())); +// } +// +// if (whoColumn.getUpdatedAt() != null) { +// ZonedDateTime convertedUpdatedAt = timezoneService.convertToUserTimezone(whoColumn.getUpdatedAt(), +// userTimezone); +// whoColumn.setUpdatedAt(Date.from(convertedUpdatedAt.toInstant())); +// } +// } +// +// entityManager.close(); +// } +// return false; +// } +//} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/MultiTimeZone/Services/TimezoneService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/MultiTimeZone/Services/TimezoneService.java new file mode 100644 index 0000000..f1edc32 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/MultiTimeZone/Services/TimezoneService.java @@ -0,0 +1,28 @@ +package com.realnet.MultiTimeZone.Services; + +import org.springframework.stereotype.Service; +import java.time.ZoneId; +import java.time.ZonedDateTime; + +import java.util.Date; + +@Service +public class TimezoneService { + + public ZonedDateTime convertToUserTimezone(Date date, String userTimezone) { + ZoneId targetZoneId; + + // Default timezone is UTC + if (userTimezone == null || userTimezone.isEmpty()) { + targetZoneId = ZoneId.of("UTC"); + } else { + targetZoneId = ZoneId.of(userTimezone); + } + + // Convert Date to ZonedDateTime in UTC + ZonedDateTime utcZonedDateTime = ZonedDateTime.ofInstant(date.toInstant(), ZoneId.of("UTC")); + + // Convert to target timezone + return utcZonedDateTime.withZoneSameInstant(targetZoneId); + } +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/MultiTimeZone/config/HibernateConfig.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/MultiTimeZone/config/HibernateConfig.java new file mode 100644 index 0000000..c4cbd44 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/MultiTimeZone/config/HibernateConfig.java @@ -0,0 +1,24 @@ +//package com.realnet.MultiTimeZone.config; +//import org.hibernate.SessionFactory; +//import org.hibernate.boot.spi.MetadataImplementor; +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +// +//import com.realnet.MultiTimeZone.Component.WhoColumnInterceptor; +// +//@Configuration +//public class HibernateConfig { +// +// private final WhoColumnInterceptor whoColumnInterceptor; +// +// public HibernateConfig(WhoColumnInterceptor whoColumnInterceptor) { +// this.whoColumnInterceptor = whoColumnInterceptor; +// } +// +// @Bean +// public SessionFactory sessionFactory(MetadataImplementor metadata) { +// return metadata.getSessionFactoryBuilder() +// .applyInterceptor(whoColumnInterceptor) +// .build(); +// } +//} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Notification/Controller/NotController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Notification/Controller/NotController.java new file mode 100644 index 0000000..4d728c6 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Notification/Controller/NotController.java @@ -0,0 +1,32 @@ +package com.realnet.Notification.Controller; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.Notification.Entity.NotEntity; +import com.realnet.Notification.Repository.NotRepo; + +@RestController +@RequestMapping("/notification") +public class NotController { + + @Autowired + private NotRepo notRepo; + +// @PostMapping("/save_notification") +// public NotEntity Savedata(@RequestBody NotEntity entity) { +// NotEntity dash = notRepo.save(entity) ; +// return dash; +// } + + @GetMapping("/get_notification") + public List getdetails() { + List dash = notRepo.findTopByOrderByd(); + return dash; + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Notification/Entity/NotEntity.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Notification/Entity/NotEntity.java new file mode 100644 index 0000000..4b2b296 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Notification/Entity/NotEntity.java @@ -0,0 +1,21 @@ +package com.realnet.Notification.Entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +import lombok.Data; + +@Data +@Entity +public class NotEntity { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String notification; + private String time; + private Long user_id; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Notification/Repository/NotRepo.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Notification/Repository/NotRepo.java new file mode 100644 index 0000000..1028c35 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Notification/Repository/NotRepo.java @@ -0,0 +1,18 @@ +package com.realnet.Notification.Repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import com.realnet.Notification.Entity.NotEntity; + +@Repository +public interface NotRepo extends JpaRepository{ + + @Query(value = "select * from not_entity order by id desc limit 10", nativeQuery = true) + List findTopByOrderByd(); + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Notification/Services/NotificationEntityService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Notification/Services/NotificationEntityService.java new file mode 100644 index 0000000..d36f856 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Notification/Services/NotificationEntityService.java @@ -0,0 +1,41 @@ +package com.realnet.Notification.Services; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Calendar; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; + +import com.realnet.Notification.Entity.NotEntity; +import com.realnet.Notification.Repository.NotRepo; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.service1.AppUserServiceImpl; + +@Service +public class NotificationEntityService { + + @Autowired + private NotRepo notRepo; + + @Autowired + private AppUserServiceImpl userService; + + public ResponseEntity setnotification(String jobType, String wireframeName) { + + DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); + Calendar cal = Calendar.getInstance(); + AppUser loggedInUser = userService.getLoggedInUser(); + + NotEntity notEntity = new NotEntity(); + notEntity.setTime(dateFormat.format(cal.getTime())); + notEntity.setNotification(loggedInUser.getUsername() + jobType + wireframeName); + notEntity.setUser_id(loggedInUser.getUserId()); + notRepo.save(notEntity); + + return new ResponseEntity<>("notification set", HttpStatus.CREATED); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/OpenAi/Controller/OpenAiController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/OpenAi/Controller/OpenAiController.java new file mode 100644 index 0000000..6d20923 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/OpenAi/Controller/OpenAiController.java @@ -0,0 +1,30 @@ +package com.realnet.OpenAi.Controller; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.OpenAi.Models.openAi; +import com.realnet.OpenAi.Services.OpenAiServices; + +@RestController +@RequestMapping("/token/openAi") +public class OpenAiController { + + @Autowired + private OpenAiServices openAiServices; + + @PostMapping + public String chat(@RequestBody openAi request) { + String prompt = request.getPrompt(); + + System.out.println("open api start.."); + return openAiServices.getChatGPTResponse(prompt); + } + + public String fallbackResponse(Exception e) { + return "Rate limit exceeded. Please try again later."; + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/OpenAi/Models/openAi.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/OpenAi/Models/openAi.java new file mode 100644 index 0000000..2da2656 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/OpenAi/Models/openAi.java @@ -0,0 +1,10 @@ +package com.realnet.OpenAi.Models; + +import lombok.Data; + +@Data +public class openAi { + + private String prompt; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/OpenAi/Services/OpenAiServices.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/OpenAi/Services/OpenAiServices.java new file mode 100644 index 0000000..79c2774 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/OpenAi/Services/OpenAiServices.java @@ -0,0 +1,44 @@ +package com.realnet.OpenAi.Services; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +import java.util.HashMap; +import java.util.Map; + +@Service +public class OpenAiServices { + + @Value("${chatgpt.api.url}") + private String apiUrl; + + @Value("${chatgpt.api.key}") + private String apiKey; + + public String getChatGPTResponse(String prompt) { + RestTemplate restTemplate = new RestTemplate(); + + // Create headers + HttpHeaders headers = new HttpHeaders(); + headers.set("Authorization", "Bearer " + apiKey); + headers.set("Content-Type", "application/json"); + + // Create body + Map body = new HashMap<>(); + body.put("model", "gpt-3.5-turbo"); // Updated model + body.put("prompt", prompt); + body.put("max_tokens", 150); + body.put("temperature", 0.7); + + // Build request + HttpEntity> entity = new HttpEntity<>(body, headers); + + // Make API call + ResponseEntity response = restTemplate.postForEntity(apiUrl, entity, String.class); + + return response.getBody(); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Paytm/AppConfig.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Paytm/AppConfig.java new file mode 100644 index 0000000..22e6c0a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Paytm/AppConfig.java @@ -0,0 +1,7 @@ +package com.realnet.Payment.Paytm; + +public class AppConfig { + public static final String MID="RHLBnF070397707073"; + public static final String MKEY="BXWmXtYo858BTG"; + public static final String WEBSITE="WEBSTAGING"; +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Paytm/PaytmPageController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Paytm/PaytmPageController.java new file mode 100644 index 0000000..5929218 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Paytm/PaytmPageController.java @@ -0,0 +1,19 @@ +//package com.realnet.Payment.Paytm; +// +//import org.springframework.stereotype.Controller; +//import org.springframework.web.bind.annotation.RequestMapping; +// +//@Controller +//public class PaytmPageController { +// @RequestMapping("/") +// public String homePage() { +// System.out.println("Request for home page"); +// return "home"; +// } +// @RequestMapping("/about") +// public String aboutPage() { +// System.out.println("Request for about page"); +// return "about"; +// } +// +//} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Paytm/PaytmPayment.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Paytm/PaytmPayment.java new file mode 100644 index 0000000..69b02dc --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Paytm/PaytmPayment.java @@ -0,0 +1,104 @@ +package com.realnet.Payment.Paytm; + +import java.net.URL; +import java.security.SecureRandom; +import java.util.Map; + +import org.json.JSONObject; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.client.RestTemplate; + +import com.paytm.pg.merchant.PaytmChecksum; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@RestController +@RequestMapping("/payment") +public class PaytmPayment { + + @PostMapping("/start") + public Map startPayment(@RequestBody Map data) { + + SecureRandom random = new SecureRandom(); + String orderId = "ORDER" + random.nextInt(10000000); + + // param created + JSONObject paytmParams = new JSONObject(); + + // body information + JSONObject body = new JSONObject(); + body.put("requestType", "Payment"); + body.put("mid", AppConfig.MID); + body.put("websiteName", AppConfig.WEBSITE); + body.put("orderId", orderId); + body.put("callbackUrl", "http://localhost:8081/payment-success"); + + JSONObject txnAmount = new JSONObject(); + txnAmount.put("value", data.get("amount")); + txnAmount.put("currency", "INR"); + + JSONObject userInfo = new JSONObject(); + userInfo.put("custId", "CUST_001"); + + body.put("txnAmount", txnAmount); + body.put("userInfo", userInfo); + + String responseData = ""; + ResponseEntity response = null; + + try { + + String checksum = PaytmChecksum.generateSignature(body.toString(), AppConfig.MKEY); + + JSONObject head = new JSONObject(); + head.put("signature", checksum); + + paytmParams.put("body", body); + paytmParams.put("head", head); + + String post_data = paytmParams.toString(); + + /* for Staging */ + URL url = new URL("https://securegw-stage.paytm.in/theia/api/v1/initiateTransaction?mid=" + AppConfig.MID + + "&orderId=" + orderId + ""); + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + HttpEntity> httpEntity = new HttpEntity<>(paytmParams.toMap(), headers); + + // calling api + RestTemplate restTemplate = new RestTemplate(); + response = restTemplate.postForEntity(url.toString(), httpEntity, Map.class); + + System.out.println(response); + + } catch (Exception e) { + log.error(e.getLocalizedMessage()); + + } + + Map body1 = response.getBody(); + body1.put("orderId", orderId); + body1.put("amount", txnAmount.get("value")); + return body1; + } + + public void capturePayment() { + // get the data from client + + // verify the payment + + // database mein bhi update kar do ki payment ho chuka hai... + + // allow user to access the service + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Razorpay/RazorpayController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Razorpay/RazorpayController.java new file mode 100644 index 0000000..c46560a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Razorpay/RazorpayController.java @@ -0,0 +1,89 @@ +package com.realnet.Payment.Razorpay; + +import com.razorpay.*; +import lombok.RequiredArgsConstructor; +import org.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; +import java.util.UUID; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/payment/razorpay") +public class RazorpayController { + + @Autowired + private RazorpayRepo repo; + + @Value("${razorpay.api.key}") + private String razorpayApiKey; + + @Value("${razorpay.api.secret}") + private String razorpayApiSecret; + + @PostMapping("/create-order") + public void payOrder(@RequestBody Map data) throws RazorpayException { + + int amt = Integer.parseInt(data.get("amount").toString()); + amt = 50; + + RazorpayClient razorpayClient = new RazorpayClient(razorpayApiKey, razorpayApiSecret); + + String trnx = UUID.randomUUID().toString(); + JSONObject orderDetails = createOrderJSON(amt, "INR", "_INV/0001/2023"); + + Order order = razorpayClient.orders.create(orderDetails); + + System.out.println(order); + // Taking record into Our database + RazorpayDTO dto = RazorpayDTO.builder().orderId(order.get("order_id")).bodyField(String.valueOf(order)).build(); + repo.save(dto); + } + + @PostMapping("/verify-payment") + public ResponseEntity verifyPayment(@RequestParam("orderId") JSONObject orderId) { + try { + RazorpayClient razorpayClient = new RazorpayClient(razorpayApiKey, razorpayApiSecret); + Payment payment = razorpayClient.payments.fetch(orderId.get("order_id").toString()); + + boolean isSignatureValid = Utils.verifyPaymentSignature(orderId, razorpayApiSecret); + + if (payment != null && payment.get("status").equals("captured") && isSignatureValid) { + return ResponseEntity.ok("Payment successfully verified."); + } else { + return ResponseEntity.badRequest().body("Payment verification failed."); + } + } catch (Exception e) { + + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) + .body("An error occurred during payment verification."); + } + } + + @PostMapping("update-order") + public ResponseEntity updateOrder(@RequestBody Map data) { + + RazorpayDTO current_order = repo.findByOrderId(data.get("order_id").toString()); + current_order.setBodyField(data.toString()); + repo.save(current_order); + +// return ResponseEntity.ok(Map.of("msg", "updated")); + return ResponseEntity.ok("updated"); + + } + + public JSONObject createOrderJSON(Integer amount, String currency, String trxnId) { + JSONObject options = new JSONObject(); + options.put("amount", amount * 100); // amount in paise = Rs*100 + options.put("currency", currency); + options.put("receipt", trxnId); + + return options; + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Razorpay/RazorpayDTO.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Razorpay/RazorpayDTO.java new file mode 100644 index 0000000..6ec1674 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Razorpay/RazorpayDTO.java @@ -0,0 +1,27 @@ +package com.realnet.Payment.Razorpay; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import java.util.UUID; + +@Entity +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class RazorpayDTO { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String orderId; + private String bodyField; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Razorpay/RazorpayRepo.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Razorpay/RazorpayRepo.java new file mode 100644 index 0000000..d1595af --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Razorpay/RazorpayRepo.java @@ -0,0 +1,9 @@ +package com.realnet.Payment.Razorpay; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface RazorpayRepo extends JpaRepository { + RazorpayDTO findByOrderId(String orderId); +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/RealNetApp.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/RealNetApp.java new file mode 100644 index 0000000..0727b71 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/RealNetApp.java @@ -0,0 +1,31 @@ +package com.realnet; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.data.jpa.repository.config.EnableJpaAuditing; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +@SpringBootApplication +@EnableSwagger2 +@EnableTransactionManagement +@EnableJpaAuditing +@EnableCaching +public class RealNetApp extends SpringBootServletInitializer{ + @Override + protected SpringApplicationBuilder configure(SpringApplicationBuilder builder){ + return builder.sources(RealNetApp.class); + } +// + public static void main(String[] args) { + SpringApplication.run(RealNetApp.class, args); + + + } +} + + diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder/Controllers/FileConverterController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder/Controllers/FileConverterController.java new file mode 100644 index 0000000..4ac3432 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder/Controllers/FileConverterController.java @@ -0,0 +1,229 @@ +package com.realnet.Rpt_builder.Controllers; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.StringWriter; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.Map; + +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.pdmodel.PDPage; +import org.apache.pdfbox.pdmodel.PDPageContentStream; +import org.apache.pdfbox.pdmodel.font.PDType1Font; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.opencsv.CSVWriter; + + +@RestController +@RequestMapping("/rbbuilder/fileconverter") +public class FileConverterController { + +// @PostMapping("/downloadCsv") +// public ResponseEntity downloadCSV(@RequestBody List> dataList) { +// try { +// // Convert dataList to CSV format and provide download +// String csvContent = convertToCSV(dataList); +// +// // Set headers for response +// HttpHeaders headers = new HttpHeaders(); +// headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=data.csv"); +// +// // Send the CSV content as a response +// return new ResponseEntity<>(csvContent, headers, HttpStatus.OK); +// } catch (IOException e) { +// // Handle exception +// return new ResponseEntity<>("Error occurred while processing data", HttpStatus.INTERNAL_SERVER_ERROR); +// } +// } +// +// private String convertToCSV(List> dataList) throws IOException { +// StringWriter writer = new StringWriter(); +// CSVWriter csvWriter = new CSVWriter(writer); +// +// // Write headers +// if (!dataList.isEmpty()) { +// Map firstRow = dataList.get(0); +// String[] headers = firstRow.keySet().toArray(new String[0]); +// csvWriter.writeNext(headers); +// +// // Write data +// for (Map data : dataList) { +// String[] rowData = new String[headers.length]; +// for (int i = 0; i < headers.length; i++) { +// Object value = data.get(headers[i]); +// rowData[i] = (value != null) ? value.toString() : ""; +// } +// csvWriter.writeNext(rowData); +// } +// } +// +// // Close CSV writer +// csvWriter.close(); +// +// return writer.toString(); +// } + + @PostMapping("/downloadFile/{format}") + public ResponseEntity downloadFile(@RequestBody List> dataList,@PathVariable String format) { + try { + // Convert dataList to the requested format + byte[] fileContent; + String fileName; + String timestamp = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()); + + if ("csv".equalsIgnoreCase(format)) { + fileContent = convertToCSV(dataList).getBytes(); + fileName = "data_" + timestamp + ".csv"; + } else if ("excel".equalsIgnoreCase(format)) { + fileContent = convertToExcel(dataList); + fileName = "data_" + timestamp + ".xlsx"; + } else if ("pdf".equalsIgnoreCase(format)) { + fileContent = convertToPDF(dataList); + fileName = "data_" + timestamp + ".pdf"; + } else { + return new ResponseEntity<>("Unsupported file format", HttpStatus.BAD_REQUEST); + } + // Set headers for response + HttpHeaders headers = new HttpHeaders(); + headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + fileName); + + // Send the file content as a response + return new ResponseEntity<>(fileContent, headers, HttpStatus.OK); + } catch (IOException e) { + // Handle exception + return new ResponseEntity<>("Error occurred while processing data", HttpStatus.INTERNAL_SERVER_ERROR); + } + } + + private String convertToCSV(List> dataList) throws IOException { + StringWriter writer = new StringWriter(); + CSVWriter csvWriter = new CSVWriter(writer); + + // Write headers + if (!dataList.isEmpty()) { + Map firstRow = dataList.get(0); + String[] headers = firstRow.keySet().toArray(new String[0]); + csvWriter.writeNext(headers); + + // Write data + for (Map data : dataList) { + String[] rowData = new String[headers.length]; + for (int i = 0; i < headers.length; i++) { + Object value = data.get(headers[i]); + rowData[i] = (value != null) ? value.toString() : ""; + } + csvWriter.writeNext(rowData); + } + } + + // Close CSV writer + csvWriter.close(); + + return writer.toString(); + } + + private byte[] convertToExcel(List> dataList) throws IOException { + Workbook workbook = new XSSFWorkbook(); + Sheet sheet = workbook.createSheet("Data"); + + // Write headers + if (!dataList.isEmpty()) { + Row headerRow = sheet.createRow(0); + Map firstRow = dataList.get(0); + int cellIndex = 0; + for (String header : firstRow.keySet()) { + Cell cell = headerRow.createCell(cellIndex++); + cell.setCellValue(header); + } + + // Write data + int rowIndex = 1; + for (Map data : dataList) { + Row dataRow = sheet.createRow(rowIndex++); + int columnIndex = 0; + for (Object value : data.values()) { + Cell cell = dataRow.createCell(columnIndex++); + if (value != null) { + if (value instanceof Number) { + cell.setCellValue(((Number) value).doubleValue()); + } else { + cell.setCellValue(value.toString()); + } + } + } + } + } + + // Convert workbook to byte array + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + workbook.write(outputStream); + workbook.close(); + return outputStream.toByteArray(); + } + + private byte[] convertToPDF(List> dataList) throws IOException { + try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + PDDocument document = new PDDocument()) { + + PDPage page = new PDPage(); + document.addPage(page); + + try (PDPageContentStream contentStream = new PDPageContentStream(document, page)) { + // Set font and size (you can customize these) + contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12); + float margin = 50; + float yStart = page.getMediaBox().getHeight() - margin; + float tableWidth = page.getMediaBox().getWidth() - 2 * margin; + float yPosition = yStart; + + // Write headers + Map firstRow = dataList.get(0); + int numberOfColumns = firstRow.size(); + float tableHeight = 20f; // Height of the table (you can adjust this) + + // Set column widths + float[] columnWidths = new float[numberOfColumns]; + float tableHeightStart = yStart - 2 * tableHeight; + float nextXStart = margin; + for (int i = 0; i < numberOfColumns; i++) { + columnWidths[i] = tableWidth / (float) numberOfColumns; + } + + // Write data + for (Map data : dataList) { + contentStream.beginText(); + contentStream.newLineAtOffset(nextXStart, yPosition); + int columnIndex = 0; + for (Object value : data.values()) { + contentStream.showText(value != null ? value.toString() : ""); + contentStream.newLineAtOffset(columnWidths[columnIndex], 0); + columnIndex++; + } + contentStream.endText(); + yPosition -= tableHeight; + } + } + + document.save(byteArrayOutputStream); + return byteArrayOutputStream.toByteArray(); + } catch (IOException e) { + // Handle PDF creation exception + return new byte[0]; + } + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder/Controllers/Rpt_builder_Controller.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder/Controllers/Rpt_builder_Controller.java new file mode 100644 index 0000000..975cda1 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder/Controllers/Rpt_builder_Controller.java @@ -0,0 +1,46 @@ +package com.realnet.Rpt_builder.Controllers; + +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import com.realnet.Rpt_builder.Entity.Rpt_builder_t; +import com.realnet.Rpt_builder.Services.Rpt_builder_Service; + +@RequestMapping(value = "/Rpt_builder") +@RestController +public class Rpt_builder_Controller { + + @Autowired + private Rpt_builder_Service Service; + + @PostMapping("/Rpt_builder") + public Rpt_builder_t Savedata(@RequestBody Rpt_builder_t data) { + Rpt_builder_t save = Service.Savedata(data); + return save; + } + + @GetMapping("/Rpt_builder") + public List getdetails() { + List get = Service.getdetails(); + return get; + } + + @GetMapping("/Rpt_builder/{id}") + public Rpt_builder_t getdetailsbyId(@PathVariable Long id) { + Rpt_builder_t get = Service.getdetailsbyId(id); + return get; + + } + + @DeleteMapping("/Rpt_builder/{id}") + public void delete_by_id(@PathVariable Long id) { + Service.delete_by_id(id); + + } + + @PutMapping("/Rpt_builder/{id}") + public Rpt_builder_t update(@RequestBody Rpt_builder_t data, @PathVariable Long id) { + Rpt_builder_t update = Service.update(data, id); + return update; + } +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder/Entity/Rpt_builder_t.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder/Entity/Rpt_builder_t.java new file mode 100644 index 0000000..1b87fd6 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder/Entity/Rpt_builder_t.java @@ -0,0 +1,24 @@ +package com.realnet.Rpt_builder.Entity; + +import lombok.*; +import javax.persistence.*; +import java.time.LocalDateTime; +import java.util.*; + +@Entity +@Data +public class Rpt_builder_t { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String name; + private String folder; + private String query; + private boolean date_param_flag; + private boolean adhoc_param_flag; + private String adhoc_param_string; + private String Std_param_json; + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder/Repository/Rpt_builder_Repository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder/Repository/Rpt_builder_Repository.java new file mode 100644 index 0000000..9f0e48d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder/Repository/Rpt_builder_Repository.java @@ -0,0 +1,11 @@ +package com.realnet.Rpt_builder.Repository; + +import org.springframework.data.jpa.repository.JpaRepository; + +import org.springframework.stereotype.Repository; + +import com.realnet.Rpt_builder.Entity.Rpt_builder_t; + +@Repository +public interface Rpt_builder_Repository extends JpaRepository { +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder/Services/Rpt_builder_Service.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder/Services/Rpt_builder_Service.java new file mode 100644 index 0000000..1198249 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder/Services/Rpt_builder_Service.java @@ -0,0 +1,43 @@ +package com.realnet.Rpt_builder.Services; + +import com.realnet.Rpt_builder.Repository.Rpt_builder_Repository; +import com.realnet.Rpt_builder.Entity.Rpt_builder_t; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class Rpt_builder_Service { + @Autowired + private Rpt_builder_Repository Repository; + + public Rpt_builder_t Savedata(Rpt_builder_t data) { + return Repository.save(data); + } + + public List getdetails() { + return (List) Repository.findAll(); + } + + public Rpt_builder_t getdetailsbyId(Long id) { + return Repository.findById(id).get(); + } + + public void delete_by_id(Long id) { + Repository.deleteById(id); + } + + public Rpt_builder_t update(Rpt_builder_t data, Long id) { + Rpt_builder_t old = Repository.findById(id).get(); + old.setName(data.getName()); + old.setFolder(data.getFolder()); + old.setQuery(data.getQuery()); + old.setDate_param_flag(data.isDate_param_flag()); + old.setAdhoc_param_flag(data.isAdhoc_param_flag()); + old.setAdhoc_param_string(data.getAdhoc_param_string()); + old.setStd_param_json(data.getStd_param_json()); + final Rpt_builder_t test = Repository.save(old); + return test; + } +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Controllers/ReportHtmlController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Controllers/ReportHtmlController.java new file mode 100644 index 0000000..4840256 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Controllers/ReportHtmlController.java @@ -0,0 +1,86 @@ +package com.realnet.Rpt_builder2.Controllers; +import java.io.IOException; +import java.util.Iterator; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.realnet.Rpt_builder2.Entity.Rpt_builder2_t; +import com.realnet.Rpt_builder2.Services.Rpt_builder2_Service; +import com.realnet.Rpt_builder2_lines.Entity.Rpt_builder2_lines_t; +import com.realnet.Rpt_builder2_lines.Repository.Rpt_builder2_lines_Repository; +@RestController +@RequestMapping("/Rpt_builder2/html") +public class ReportHtmlController { + @Autowired + private Rpt_builder2_Service builder2_Service; + @Autowired + private Rpt_builder2_lines_Repository line_repo; +// @GetMapping(value = "/build_report2/{id}") +// public ResponseEntity build_wireframe2(@PathVariable Long id) throws IOException { +// Rpt_builder2_t reportList = builder2_Service.getdetailsbyId(id); +// String std_param = reportList.getStd_param_html(); +// +// StringBuilder htmlFile = new StringBuilder(); +// +// // Start building the HTML code +// htmlFile.append("
    \n"); +// +// // Remove the outer square brackets and split the std_param string to get +// // individual parameter values +// String[] params = std_param.substring(1, std_param.length() - 1).split("\",\""); +// +// for (int i = 0; i < params.length; i++) { +// String param = params[i].replaceAll("\"", ""); // Remove quotation marks from parameter value +// +// // Create the HTML code for each parameter, including the actual parameter value +// htmlFile.append("
    \n") +// .append(" \n") +// .append(" \n").append("
    \n"); +// } +// +// htmlFile.append("
    "); +// +// // Return the HTML code as a response +// return ResponseEntity.ok(htmlFile.toString()); +// } + @GetMapping(value = "/build_report2/{rptbuilderid}") + public ResponseEntity build_wireframe2(@PathVariable Long rptbuilderid) throws IOException { + Rpt_builder2_lines_t rptlines = line_repo.getRpt_builder2_lines(rptbuilderid); + String model = rptlines.getModel(); + JsonParser parser = new JsonParser(); + JsonObject jsonObject = parser.parse(model).getAsJsonObject(); + String std_param = jsonObject.get("std_param_html").getAsString(); + StringBuilder htmlFile = new StringBuilder(); + // Start building the HTML code + htmlFile.append("
    \n"); + // Remove the outer square brackets and split the std_param string to get + // individual parameter values + String[] params = std_param.substring(1, std_param.length() - 1).split("\",\""); + for (int i = 0; i < params.length; i++) { + String param = params[i].replaceAll("\"", ""); // Remove quotation marks from parameter value + // Create the HTML code for each parameter, including the actual parameter value + htmlFile.append("
    \n") + .append(" \n") + .append(" \n").append("
    \n"); + } + htmlFile.append("
    "); + // Return the HTML code as a response + return ResponseEntity.ok(htmlFile.toString()); + } +} + + + + + + + diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Controllers/RpDownloadController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Controllers/RpDownloadController.java new file mode 100644 index 0000000..791d4c2 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Controllers/RpDownloadController.java @@ -0,0 +1,184 @@ +package com.realnet.Rpt_builder2.Controllers; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.StringWriter; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.Map; + +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.pdmodel.PDPage; +import org.apache.pdfbox.pdmodel.PDPageContentStream; +import org.apache.pdfbox.pdmodel.font.PDType1Font; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.opencsv.CSVWriter; + +@RestController +@RequestMapping(value = "rpt2") +public class RpDownloadController { + + + @PostMapping("/downloadFile/{format}") + public ResponseEntity downloadFile(@RequestBody List> dataList,@PathVariable String format) { + try { + // Convert dataList to the requested format + byte[] fileContent; + String fileName; + String timestamp = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()); + + if ("csv".equalsIgnoreCase(format)) { + fileContent = convertToCSV(dataList).getBytes(); + fileName = "data_" + timestamp + ".csv"; + } else if ("excel".equalsIgnoreCase(format)) { + fileContent = convertToExcel(dataList); + fileName = "data_" + timestamp + ".xlsx"; + } else if ("pdf".equalsIgnoreCase(format)) { + fileContent = convertToPDF(dataList); + fileName = "data_" + timestamp + ".pdf"; + } else { + return new ResponseEntity<>("Unsupported file format", HttpStatus.BAD_REQUEST); + } + // Set headers for response + HttpHeaders headers = new HttpHeaders(); + headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + fileName); + + // Send the file content as a response + return new ResponseEntity<>(fileContent, headers, HttpStatus.OK); + } catch (IOException e) { + // Handle exception + return new ResponseEntity<>("Error occurred while processing data", HttpStatus.INTERNAL_SERVER_ERROR); + } + } + + private String convertToCSV(List> dataList) throws IOException { + StringWriter writer = new StringWriter(); + CSVWriter csvWriter = new CSVWriter(writer); + + // Write headers + if (!dataList.isEmpty()) { + Map firstRow = dataList.get(0); + String[] headers = firstRow.keySet().toArray(new String[0]); + csvWriter.writeNext(headers); + + // Write data + for (Map data : dataList) { + String[] rowData = new String[headers.length]; + for (int i = 0; i < headers.length; i++) { + Object value = data.get(headers[i]); + rowData[i] = (value != null) ? value.toString() : ""; + } + csvWriter.writeNext(rowData); + } + } + + // Close CSV writer + csvWriter.close(); + + return writer.toString(); + } + + private byte[] convertToExcel(List> dataList) throws IOException { + Workbook workbook = new XSSFWorkbook(); + Sheet sheet = workbook.createSheet("Data"); + + // Write headers + if (!dataList.isEmpty()) { + Row headerRow = sheet.createRow(0); + Map firstRow = dataList.get(0); + int cellIndex = 0; + for (String header : firstRow.keySet()) { + Cell cell = headerRow.createCell(cellIndex++); + cell.setCellValue(header); + } + + // Write data + int rowIndex = 1; + for (Map data : dataList) { + Row dataRow = sheet.createRow(rowIndex++); + int columnIndex = 0; + for (Object value : data.values()) { + Cell cell = dataRow.createCell(columnIndex++); + if (value != null) { + if (value instanceof Number) { + cell.setCellValue(((Number) value).doubleValue()); + } else { + cell.setCellValue(value.toString()); + } + } + } + } + } + + // Convert workbook to byte array + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + workbook.write(outputStream); + workbook.close(); + return outputStream.toByteArray(); + } + + private byte[] convertToPDF(List> dataList) throws IOException { + try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + PDDocument document = new PDDocument()) { + + PDPage page = new PDPage(); + document.addPage(page); + + try (PDPageContentStream contentStream = new PDPageContentStream(document, page)) { + // Set font and size (you can customize these) + contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12); + float margin = 50; + float yStart = page.getMediaBox().getHeight() - margin; + float tableWidth = page.getMediaBox().getWidth() - 2 * margin; + float yPosition = yStart; + + // Write headers + Map firstRow = dataList.get(0); + int numberOfColumns = firstRow.size(); + float tableHeight = 20f; // Height of the table (you can adjust this) + + // Set column widths + float[] columnWidths = new float[numberOfColumns]; + float tableHeightStart = yStart - 2 * tableHeight; + float nextXStart = margin; + for (int i = 0; i < numberOfColumns; i++) { + columnWidths[i] = tableWidth / (float) numberOfColumns; + } + + // Write data + for (Map data : dataList) { + contentStream.beginText(); + contentStream.newLineAtOffset(nextXStart, yPosition); + int columnIndex = 0; + for (Object value : data.values()) { + contentStream.showText(value != null ? value.toString() : ""); + contentStream.newLineAtOffset(columnWidths[columnIndex], 0); + columnIndex++; + } + contentStream.endText(); + yPosition -= tableHeight; + } + } + + document.save(byteArrayOutputStream); + return byteArrayOutputStream.toByteArray(); + } catch (IOException e) { + // Handle PDF creation exception + return new byte[0]; + } + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Controllers/Rpt_builder2_Controller.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Controllers/Rpt_builder2_Controller.java new file mode 100644 index 0000000..7aaec4d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Controllers/Rpt_builder2_Controller.java @@ -0,0 +1,46 @@ +package com.realnet.Rpt_builder2.Controllers; + +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import com.realnet.Rpt_builder2.Entity.Rpt_builder2_t; +import com.realnet.Rpt_builder2.Services.Rpt_builder2_Service; + +@RequestMapping(value = "/Rpt_builder2") +@RestController +public class Rpt_builder2_Controller { + + @Autowired + private Rpt_builder2_Service Service; + + @PostMapping("/Rpt_builder2") + public Rpt_builder2_t Savedata(@RequestBody Rpt_builder2_t data) { + Rpt_builder2_t save = Service.Savedata(data); + return save; + } + + @GetMapping("/Rpt_builder2") + public List getdetails() { + List get = Service.getdetails(); + return get; + } + + @GetMapping("/Rpt_builder2/{id}") + public Rpt_builder2_t getdetailsbyId(@PathVariable Long id) { + Rpt_builder2_t get = Service.getdetailsbyId(id); + return get; + + } + + @DeleteMapping("/Rpt_builder2/{id}") + public void delete_by_id(@PathVariable Long id) { + Service.delete_by_id(id); + + } + + @PutMapping("/Rpt_builder2/{id}") + public Rpt_builder2_t update(@RequestBody Rpt_builder2_t data, @PathVariable Long id) { + Rpt_builder2_t update = Service.update(data, id); + return update; + } +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Entity/Rpt_builder2_t.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Entity/Rpt_builder2_t.java new file mode 100644 index 0000000..8e8c614 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Entity/Rpt_builder2_t.java @@ -0,0 +1,37 @@ +package com.realnet.Rpt_builder2.Entity; + +import java.util.ArrayList; +import java.util.List; + +import javax.persistence.CascadeType; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.OneToMany; + +import com.fasterxml.jackson.annotation.JsonManagedReference; +import com.realnet.Rpt_builder2_lines.Entity.Rpt_builder2_lines_t; + +import lombok.Data; + +@Entity +@Data +public class Rpt_builder2_t { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String reportName; + private String description; + private Boolean active; + private Boolean isSql; + + + @JsonManagedReference + @OneToMany(cascade = CascadeType.ALL,mappedBy = "rpt_builder2_t") + private List Rpt_builder2_lines = new ArrayList<>(); + + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Repository/Rpt_builder2_Repository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Repository/Rpt_builder2_Repository.java new file mode 100644 index 0000000..30f7a0f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Repository/Rpt_builder2_Repository.java @@ -0,0 +1,11 @@ +package com.realnet.Rpt_builder2.Repository; + +import org.springframework.data.jpa.repository.JpaRepository; + +import org.springframework.stereotype.Repository; + +import com.realnet.Rpt_builder2.Entity.Rpt_builder2_t; + +@Repository +public interface Rpt_builder2_Repository extends JpaRepository { +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Services/Rpt_builder2_Service.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Services/Rpt_builder2_Service.java new file mode 100644 index 0000000..2731b1f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Services/Rpt_builder2_Service.java @@ -0,0 +1,49 @@ +package com.realnet.Rpt_builder2.Services; + +import com.realnet.Rpt_builder2.Repository.Rpt_builder2_Repository; +import com.realnet.Rpt_builder2.Entity.Rpt_builder2_t; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class Rpt_builder2_Service { + @Autowired + private Rpt_builder2_Repository Repository; + + public Rpt_builder2_t Savedata(Rpt_builder2_t data) { + return Repository.save(data); + } + + public List getdetails() { + return (List) Repository.findAll(); + } + + public Rpt_builder2_t getdetailsbyId(Long id) { + return Repository.findById(id).get(); + } + + public void delete_by_id(Long id) { + Repository.deleteById(id); + } + + public Rpt_builder2_t update(Rpt_builder2_t data, Long id) { + Rpt_builder2_t old = Repository.findById(id).get(); +// old.setConn_name(data.getConn_name()); +// old.setDate_param_req(data.getDate_param_req()); +// old.setStd_param_html(data.getStd_param_html()); +// old.setAdhoc_param_html(data.getAdhoc_param_html()); +// old.setColumn_str(data.getColumn_str()); +// old.setSql_str(data.getSql_str()); + + old.setReportName(data.getReportName()); + old.setDescription(data.getDescription()); + old.setActive(data.getActive()); +// old.setFolderName(data.getFolderName()); + + + final Rpt_builder2_t test = Repository.save(old); + return test; + } +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2_lines/Controllers/Rpt_builder2_lines_Controller.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2_lines/Controllers/Rpt_builder2_lines_Controller.java new file mode 100644 index 0000000..0f97e9a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2_lines/Controllers/Rpt_builder2_lines_Controller.java @@ -0,0 +1,128 @@ +package com.realnet.Rpt_builder2_lines.Controllers; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.client.RestTemplate; + +import com.realnet.Rpt_builder2_lines.Entity.Rpt_builder2_lines_t; +import com.realnet.Rpt_builder2_lines.Repository.Rpt_builder2_lines_Repository; +import com.realnet.Rpt_builder2_lines.Services.Rpt_builder2_lines_Service; + +@RequestMapping(value = "/Rpt_builder2_lines") +@RestController +public class Rpt_builder2_lines_Controller { + + @Autowired + private Rpt_builder2_lines_Service Service; + + @Autowired + private Rpt_builder2_lines_Repository line_repo; + + @PostMapping("/Rpt_builder2_lines") + public Rpt_builder2_lines_t Savedata(@RequestBody Rpt_builder2_lines_t data) { + Rpt_builder2_lines_t save = Service.Savedata(data); + return save; + } + + @GetMapping("/Rpt_builder2_lines") + public List getdetails() { + List get = Service.getdetails(); + return get; + } + + @GetMapping("/Rpt_builder2_lines/{id}") + public Rpt_builder2_lines_t getdetailsbyId(@PathVariable Long id) { + Rpt_builder2_lines_t get = Service.getdetailsbyId(id); + return get; + + } + + @DeleteMapping("/Rpt_builder2_lines/{id}") + public void delete_by_id(@PathVariable Long id) { + Service.delete_by_id(id); + + } + + @PutMapping("/Rpt_builder2_lines/{id}") + public Rpt_builder2_lines_t update(@RequestBody Rpt_builder2_lines_t data, @PathVariable Long id) { + Rpt_builder2_lines_t update = Service.update(data, id); + return update; + } + + @PutMapping("/update/{id}") + public ResponseEntity updateById(@PathVariable Long id, @RequestBody Rpt_builder2_lines_t outgoing_data) { + Rpt_builder2_lines_t line = line_repo.findById(id).get(); + line.setHeader_id(outgoing_data.getHeader_id()); + line.setModel(outgoing_data.getModel()); + Rpt_builder2_lines_t save = line_repo.save(line); + return new ResponseEntity<>(save, HttpStatus.ACCEPTED); + } + + @GetMapping("/geturlkeybyurl") + public Set getKeysById(@RequestParam String url) { + ResponseEntity response = GET(url); + System.out.println("Response status code: " + response.getStatusCodeValue()); + // Check the class of the response body + if (response.getBody() != null) { + System.out.println("Response body class: " + response.getBody().getClass()); + } + // Check if the response body is an ArrayList + if (response.getBody() instanceof ArrayList) { + ArrayList responseBody = (ArrayList) response.getBody(); + // Assuming you want to extract keys from elements inside the ArrayList, + // you might need to iterate through the list and extract keys from each element. + Set keys = new HashSet<>(); + for (Object element : responseBody) { + if (element instanceof LinkedHashMap) { + LinkedHashMap elementMap = (LinkedHashMap) element; + keys.addAll(elementMap.keySet()); + } + } + return keys; + } else { + return null; + } + } + + public ResponseEntity GET(String get) { + org.springframework.web.client.RestTemplate restTemplate = new org.springframework.web.client.RestTemplate(); + ResponseEntity u = restTemplate.getForEntity(get, Object.class); + return u; + } + + @GetMapping("/fetch_data_url") + public ResponseEntity fetchURL(@RequestParam String url) { + try { + // Create an instance of RestTemplate + RestTemplate restTemplate = new RestTemplate(); + + // Send an HTTP GET request to the provided URL and retrieve the response body as a String + String responseBody = restTemplate.getForObject(url, String.class); + + // Create a Map to hold the URL and body data + Map responseMap = new HashMap<>(); + responseMap.put("url", url); + responseMap.put("body", responseBody); + + // Return the response map as JSON + return ResponseEntity.ok(responseMap); + } catch (Exception e) { + // Handle exceptions, such as invalid URLs or network errors + Map errorMap = new HashMap<>(); + errorMap.put("error", "Failed to fetch URL: " + e.getMessage()); + return ResponseEntity.badRequest().body(errorMap); + } + } + + + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2_lines/Entity/Rpt_builder2_lines_t.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2_lines/Entity/Rpt_builder2_lines_t.java new file mode 100644 index 0000000..03e92e8 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2_lines/Entity/Rpt_builder2_lines_t.java @@ -0,0 +1,31 @@ +package com.realnet.Rpt_builder2_lines.Entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Lob; +import javax.persistence.ManyToOne; + +import com.fasterxml.jackson.annotation.JsonBackReference; +import com.realnet.Rpt_builder2.Entity.Rpt_builder2_t; + +import lombok.Data; + +@Entity +@Data +public class Rpt_builder2_lines_t { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String header_id; + @Lob + private String model; + + @JsonBackReference + @ManyToOne + private Rpt_builder2_t rpt_builder2_t; + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2_lines/Repository/Rpt_builder2_lines_Repository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2_lines/Repository/Rpt_builder2_lines_Repository.java new file mode 100644 index 0000000..3b35066 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2_lines/Repository/Rpt_builder2_lines_Repository.java @@ -0,0 +1,15 @@ +package com.realnet.Rpt_builder2_lines.Repository; + + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + + +import com.realnet.Rpt_builder2_lines.Entity.Rpt_builder2_lines_t; + +@Repository +public interface Rpt_builder2_lines_Repository extends JpaRepository { + @Query(value = "SELECT * FROM rpt_builder2_lines_t where rpt_builder2_t_id =?1", nativeQuery = true) + Rpt_builder2_lines_t getRpt_builder2_lines(Long id); +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2_lines/Services/Rpt_builder2_lines_Service.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2_lines/Services/Rpt_builder2_lines_Service.java new file mode 100644 index 0000000..09fff0c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2_lines/Services/Rpt_builder2_lines_Service.java @@ -0,0 +1,37 @@ +package com.realnet.Rpt_builder2_lines.Services; +import com.realnet.Rpt_builder2_lines.Repository.Rpt_builder2_lines_Repository; +import com.realnet.Rpt_builder2_lines.Entity.Rpt_builder2_lines_t;import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; + import org.springframework.stereotype.Service; + +@Service + public class Rpt_builder2_lines_Service { +@Autowired +private Rpt_builder2_lines_Repository Repository; +public Rpt_builder2_lines_t Savedata(Rpt_builder2_lines_t data) { + return Repository.save(data); + } + + +public List getdetails() { + return (List) Repository.findAll(); + } + + +public Rpt_builder2_lines_t getdetailsbyId(Long id) { + return Repository.findById(id).get(); + } + + + public void delete_by_id(Long id) { + Repository.deleteById(id); +} + + +public Rpt_builder2_lines_t update(Rpt_builder2_lines_t data,Long id) { + Rpt_builder2_lines_t old = Repository.findById(id).get(); +old.setHeader_id(data.getHeader_id()); +old.setModel(data.getModel()); +final Rpt_builder2_lines_t test = Repository.save(old); + return test;}} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/SequenceGenerator/Controller/SequenceController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/SequenceGenerator/Controller/SequenceController.java new file mode 100644 index 0000000..6f78fb7 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/SequenceGenerator/Controller/SequenceController.java @@ -0,0 +1,182 @@ +package com.realnet.SequenceGenerator.Controller; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.SequenceGenerator.Entity.Sequence; +import com.realnet.SequenceGenerator.Service.SequenceService; +import com.realnet.SequenceGenerator.repo.SeqRepo; + +@RequestMapping(value = "/sureserve/sequence") +@RestController +public class SequenceController { +// +// @Autowired +// private SeqRepo seqRepo; +// +//// add data +// @PostMapping("/seq") +// public ResponseEntity post(@RequestBody Sequence j) { +// +// Sequence save = seqRepo.save(j); +// return new ResponseEntity<>(save, HttpStatus.OK); +// +// } +// +//// update data +// @PutMapping("/seq/{id}") +// public ResponseEntity update(@PathVariable Long id, @RequestBody Sequence j) { +// Sequence get = seqRepo.findById(id).get(); +// +// get.setCr_prefix(j.getCr_prefix()); +// get.setDate_format(j.getDate_format()); +// get.setIn_prefix(j.getIn_prefix()); +// get.setSequence_size(j.getSequence_size()); +// get.setPr_prefix(j.getPr_prefix()); +// get.setStating_no(j.getStating_no()); +// get.setCurrent_no(j.getCurrent_no()); +// get.setDemonstration(j.getDemonstration()); +// get.setImplementation(j.getImplementation()); +// get.setSequence_code(j.getSequence_code()); +// get.setSequence_name(j.getSequence_name()); +// get.setStating_no(j.getStating_no()); +// get.setSuffix(j.getSuffix()); +// +// Sequence save = seqRepo.save(get); +// return new ResponseEntity<>(save, HttpStatus.OK); +// +// } +// +// // get by id +// @GetMapping("/seq/{id}") +// public ResponseEntity get(@PathVariable Long id) { +// +// Sequence get = seqRepo.findById(id).get(); +// return new ResponseEntity<>(get, HttpStatus.OK); +// +// } +// +// // get all +// @GetMapping("/seq") +// public List getdetails() { +// List get = seqRepo.findAll(); +// return get; +// } +// +// // delete by id +// @DeleteMapping("/seq/{id}") +// public void delete_by_id(@PathVariable Long id) { +// seqRepo.deleteById(id); +// +// } + + + + + + @Autowired + private SeqRepo seqRepo; + + @Autowired + private SequenceService service; + + + @PostMapping("/seq") + public ResponseEntity Savedata(@RequestBody Sequence data) { +// AppUser loggedInUser = userService.getLoggedInUser(); +// Long userId = loggedInUser.getUserId(); +// data.setAccountId(userId); + service.Savedata(data); + return ResponseEntity.ok().build(); + } + + + //create sequence-series + @PostMapping("create") + public ResponseEntity createSequence( + @RequestBody Sequence seq + ) + { + Sequence old = seqRepo.findByPrefixAndSuffix(seq.getPrefix(), seq.getSuffix()).orElse(null); + if(old != null){ + String error = "\nPrefix: " + seq.getPrefix() + "\nSuffix: " + seq.getSuffix(); + return ResponseEntity.status(HttpStatus.CONFLICT).body("Sequence already exists with "+error); + } + + return new ResponseEntity(service.createSequence(seq), HttpStatus.CREATED); + } + + //Testing sequence generation + @GetMapping("/seq/test") + public String generate( + @RequestParam String pre, + @RequestParam(defaultValue = "#{T(java.time.Year).now().toString()}") String suf + ) + { + System.out.println(suf); + return service.GenerateSequence(pre,suf); + } + + + //update Data + @PutMapping("/seq/{id}") + public ResponseEntity updateSequence( + @PathVariable Long id, + @RequestBody Sequence seq + ) { + Sequence old = seqRepo.findById(id).orElse(null); + + if (old != null) { + old.setSequence_size(seq.getSequence_size()); + old.setStarting_no(seq.getStarting_no()); + old.setCurrent_no(seq.getCurrent_no()); + old.setDemonstration(seq.getDemonstration()); + old.setSequence_code(seq.getSequence_code()); + old.setSequence_name(seq.getSequence_name()); + old.setSuffix(seq.getSuffix()); + old.setPrefix(seq.getPrefix()); + old.setSeperator(seq.getSeperator()); + + Sequence savedSequence = seqRepo.save(old); + return new ResponseEntity<>(savedSequence, HttpStatus.OK); + } else { + return new ResponseEntity<>(HttpStatus.NOT_FOUND); + } + } + // get by id + @GetMapping("/seq/{id}") + public ResponseEntity get( + @PathVariable Long id + ) { + + Sequence get = seqRepo.findById(id).get(); + return new ResponseEntity<>(get, HttpStatus.OK); + + } + + // get all + @GetMapping("/seq") + public List getdetails() { + List get = seqRepo.findAll(); + return get; + } + + // delete by id + @DeleteMapping("/seq/{id}") + public void delete_by_id(@PathVariable Long id) { + seqRepo.deleteById(id); + + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/SequenceGenerator/Entity/Sequence.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/SequenceGenerator/Entity/Sequence.java new file mode 100644 index 0000000..c418611 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/SequenceGenerator/Entity/Sequence.java @@ -0,0 +1,78 @@ +package com.realnet.SequenceGenerator.Entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +import lombok.Data; + +@Data +@Entity +public class Sequence { + +// @Id +// @GeneratedValue(strategy = GenerationType.IDENTITY) +// private Long id; +// +// private int stating_no; +// +// private int current_no; +// +// private String date_format; +// +// private String sequence_size; +// +// private String in_prefix; +// private String pr_prefix; +// +// private String seperator; +// +// private String cr_prefix; +// +// private String sequence_name; +// +// private String sequence_code; +// +// private String implementation; +// +// private String suffix; +// private String demonstration; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String sequence_name; + private Integer sequence_size; + private Integer starting_no; + private Integer current_no; + private String prefix; + private String seperator; + private String sequence_code; + private String suffix; + + private String demonstration; + + public Sequence(Long id, String sequence_name, Integer sequence_size, Integer stating_no, Integer current_no, String prefix, String seperator, String sequence_code, String suffix, String demonstration) { + this.id = id; + this.sequence_name = sequence_name; + this.sequence_size = sequence_size; + this.starting_no = stating_no; + this.current_no = current_no; + this.prefix = prefix; + this.seperator = seperator; + this.sequence_code = sequence_code; + this.suffix = suffix; + this.demonstration = demonstration; + } + + public Sequence() { + this.sequence_name = "RIS-Seq"; + this.sequence_size = 5; + this.starting_no = 1; + this.current_no = 1; + this.prefix = "RIS"; + this.seperator = "/"; + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/SequenceGenerator/Service/SequenceService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/SequenceGenerator/Service/SequenceService.java new file mode 100644 index 0000000..91ac6ea --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/SequenceGenerator/Service/SequenceService.java @@ -0,0 +1,118 @@ +package com.realnet.SequenceGenerator.Service; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.realnet.SequenceGenerator.Entity.Sequence; +import com.realnet.SequenceGenerator.repo.SeqRepo; + +@Service +public class SequenceService { + +// +// @Autowired +// private SeqRepo seqRepo; +// +// public String GenerateSequence(String name, Long id) { +// +// String prefix ="PR"; +// int i =1; +// String format = ""; +// +// Sequence s = seqRepo.findById(id).get(); +// +// int starting_no = s.getStating_no(); +// String date_format = s.getDate_format(); +// String digit = s.getSequence_size(); +// String seperator = s.getSeperator(); +// int current_no = s.getCurrent_no(); +// +// if (name.equalsIgnoreCase("in_prefix")) { +// prefix=s.getIn_prefix(); +// } +// if (name.equalsIgnoreCase("pr_prefix")) { +// prefix=s.getPr_prefix(); +// } +// if (name.equalsIgnoreCase("cr_prefix")) { +// prefix=s.getCr_prefix(); +// } +// +// Date date = new Date(); +// +//// DateFormat dateFormat = new SimpleDateFormat("yyyy-MM"); +// DateFormat dateFormat = new SimpleDateFormat(date_format); +// +// String format2 = dateFormat.format(date); +// +//// final DecimalFormat decimalFormat = new DecimalFormat("0000"); +// final DecimalFormat decimalFormat = new DecimalFormat(digit); +// +// if (current_no != 0) { +// format = decimalFormat.format(current_no); +// +// }else { +// format = decimalFormat.format(starting_no); +// +// } +// +// String str = prefix + seperator + format2 + seperator + format; +// +// s.setCurrent_no(starting_no+1); +// s.setDemonstration(str); +// seqRepo.save(s); +// return str; +// } + + + @Autowired + private SeqRepo seqRepo; + + public Sequence createSequence(Sequence seq){ + return seqRepo.save(seq); + } + + + public Sequence Savedata(Sequence data) { + return seqRepo.save(data); + } + + public String GenerateSequence(String pre) { + return GenerateSequence(pre, String.valueOf(java.time.Year.now())); + } + + public String GenerateSequence(String pre, String suf) { + Sequence seq = seqRepo.findByPrefixAndSuffix(pre,suf).orElse(null); + + if(seq == null){ + return "Given Prefix: " + pre + " and Suffix: "+ suf + + "\nDoes not exist try creating the sequence first...."; + } + + String prefix = seq.getPrefix(); + Integer seq_size = seq.getSequence_size(); + + //Current Number Building Logic + if(seq.getCurrent_no() == null) { + seq.setCurrent_no(seq.getStarting_no()); + } + String current_no = String.valueOf( seq.getCurrent_no()+1 ); + if(seq_size == null) seq_size = 5; + while(current_no.length() < seq_size){ + current_no = "0" + current_no; + } + + String suffix = seq.getSuffix(); + String sep = seq.getSeperator(); + + //--- final Sequence --- + String new_seq = prefix + sep + current_no + sep + suffix; + seq.setDemonstration(new_seq); + + // Saving Current-Sequence-State into DataBase + seq.setCurrent_no(seq.getCurrent_no()+1); + seqRepo.save(seq); + return new_seq; + } + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/SequenceGenerator/repo/SeqRepo.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/SequenceGenerator/repo/SeqRepo.java new file mode 100644 index 0000000..9c657c5 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/SequenceGenerator/repo/SeqRepo.java @@ -0,0 +1,15 @@ +package com.realnet.SequenceGenerator.repo; + +import java.util.Optional; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.SequenceGenerator.Entity.Sequence; +@Repository +public interface SeqRepo extends JpaRepository { + + + + Optional findByPrefixAndSuffix(String pre, String suf); +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/SureConnect/Controller/SureController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/SureConnect/Controller/SureController.java new file mode 100644 index 0000000..94d3347 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/SureConnect/Controller/SureController.java @@ -0,0 +1,73 @@ +package com.realnet.SureConnect.Controller; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; +import com.realnet.SureConnect.Entities.Sure_Connect; +import com.realnet.SureConnect.Service.SureService; + +@RestController +public class SureController { + + @Autowired + private SureService sureService; + +// CREATE DATA + @PostMapping("/Sure_Connect") + public ResponseEntity add(@RequestBody Sure_Connect sure_Connect) { + Sure_Connect order = sureService.create(sure_Connect); + + return new ResponseEntity<>(order, HttpStatus.OK); + + } + +// update data + @PutMapping("/Sure_Connect/{id}") + public ResponseEntity update(@RequestBody Sure_Connect sure_Connect, @PathVariable Integer id) { + + Sure_Connect order = sureService.update(sure_Connect, id); + + return new ResponseEntity<>(order, HttpStatus.OK); + } + +// Get all + @GetMapping("/Sure_Connect") + public ResponseEntity getall() { + List pm = sureService.getall(); + return new ResponseEntity<>(pm, HttpStatus.OK); + } + +// get by id + @GetMapping("/Sure_Connect/{id}") + public ResponseEntity getbyid(@PathVariable int id) { + Sure_Connect pm = sureService.getbyid(id); + + return new ResponseEntity<>(pm, HttpStatus.OK); + } + +// delete by id + @DeleteMapping("/Sure_Connect/{id}") + public ResponseEntity deleteOne(@PathVariable int id) { + + sureService.deletebyid(id); + return new ResponseEntity<>(HttpStatus.OK); + } + +// get by name + @GetMapping("/token/Sure_Connectbyname/{connection_name}") + public ResponseEntity getbyname(@PathVariable String connection_name) { + Sure_Connect pm = sureService.getbyname(connection_name); + + return new ResponseEntity<>(pm, HttpStatus.OK); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/SureConnect/Controller/Sure_Postman_Api.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/SureConnect/Controller/Sure_Postman_Api.java new file mode 100644 index 0000000..0bae004 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/SureConnect/Controller/Sure_Postman_Api.java @@ -0,0 +1,140 @@ +package com.realnet.SureConnect.Controller; + +import java.util.ArrayList; +import java.util.List; + +import org.slf4j.Logger; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +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; + +@RestController +@RequestMapping("/sure_connect/sure_postman") +public class Sure_Postman_Api { + + Logger log = org.slf4j.LoggerFactory.getLogger(Sure_Postman_Api.class); + + @PostMapping("/call_api") + public ResponseEntity calldifferentmethod(@RequestBody String json_body, + @RequestParam String api_url, + //@RequestParam String json_body, + @RequestParam String method, @RequestParam String token) { + + + log.info("executing no json_bodyeters"); + + if (method.equalsIgnoreCase("DELETE")) { + Object body = DELETE(api_url,token); + + return new ResponseEntity<>(body, HttpStatus.OK); + } else { + Object object = callmethod(api_url, json_body, method, token); + + System.out.println(object); + return new ResponseEntity<>(object, HttpStatus.OK); + + } + } + + // CALL METHOD + public Object callmethod(String urll, String json_body, String method, String token) { + + + + if (method.equalsIgnoreCase("GET")) { + ResponseEntity get = GET(urll,token); + Object body = get.getBody(); + System.out.println(body); + return get.getBody(); + } + + else if (method.equalsIgnoreCase("POST")) { + ResponseEntity post = POST(urll, json_body, token); + Object body = post.getBody(); + System.out.println(body); + + return post.getBody(); + + } else if (method.equalsIgnoreCase("PUT")) { + ResponseEntity put = PUT(urll, json_body, token); + Object body = put.getBody(); + System.out.println(body); + + return put.getBody(); + + } else { + return null; + } + + } + + private HttpHeaders getHeaders() { + HttpHeaders headers = new HttpHeaders(); + headers.set("Content-Type", MediaType.APPLICATION_JSON_VALUE); + headers.set("Accept", MediaType.APPLICATION_JSON_VALUE); + return headers; + } + + public ResponseEntity GET(String url,String token) { + RestTemplate restTemplate = new RestTemplate(); + String resourceUrl = url; + String token1 = "Bearer " + token; + HttpHeaders headers = getHeaders(); + headers.set("Authorization", token1); + HttpEntity request = new HttpEntity( headers); +// ResponseEntity u = restTemplate.getForEntity(url, Object.class); + ResponseEntity u = restTemplate.exchange(resourceUrl, HttpMethod.GET, request, Object.class); + + return u; + + } + + public ResponseEntity POST(String jobinfo, Object user, String token) { + RestTemplate restTemplate = new RestTemplate(); + String resourceUrl = jobinfo; + String token1 = "Bearer " + token; + HttpHeaders headers = getHeaders(); + headers.set("Authorization", token1); + HttpEntity request = new HttpEntity(user, headers); + ResponseEntity res = restTemplate.postForEntity(resourceUrl, request, Object.class); + + return res; + + } + + public ResponseEntity PUT(String jobinfo, Object user, String token) { + RestTemplate restTemplate = new RestTemplate(); + String resourceUrl = jobinfo; + String token1 = "Bearer " + token; + HttpHeaders headers = getHeaders(); + headers.set("Authorization", token1); + HttpEntity request = new HttpEntity(user, headers); +// ResponseEntity res = restTemplate.put(resourceUrl, request, Object.class); + ResponseEntity res = restTemplate.exchange(resourceUrl, HttpMethod.PUT, request, Object.class); + + return res; + + } + + public Object DELETE(String url, String token) { + RestTemplate restTemplate = new RestTemplate(); + String resourceUrl = url; + String token1 = "Bearer " + token; + HttpHeaders headers = getHeaders(); + headers.set("Authorization", token1); + HttpEntity request = new HttpEntity(headers); +// ResponseEntity u = restTemplate.getForEntity(url, Object.class); + ResponseEntity u = restTemplate.exchange(resourceUrl, HttpMethod.DELETE, request, Object.class); + return u; +// restTemplate.delete(url, Object.class); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/SureConnect/Entities/Sure_Connect.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/SureConnect/Entities/Sure_Connect.java new file mode 100644 index 0000000..d973679 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/SureConnect/Entities/Sure_Connect.java @@ -0,0 +1,30 @@ +package com.realnet.SureConnect.Entities; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +import lombok.Data; + +@Entity +@Data +public class Sure_Connect { + + @Id + @GeneratedValue(strategy =GenerationType.AUTO) + private int id; + + private String connection_name; + + @Column(length = 10000) + private String description; + + private String type; + private String access_token; + private int client_id; + private String username; + private String password; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/SureConnect/Repository/SureRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/SureConnect/Repository/SureRepository.java new file mode 100644 index 0000000..59bfd7b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/SureConnect/Repository/SureRepository.java @@ -0,0 +1,16 @@ +package com.realnet.SureConnect.Repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import com.realnet.SureConnect.Entities.Sure_Connect; + +@Repository +public interface SureRepository extends JpaRepository{ + + Sure_Connect findById(int id); + + @Query(value = "select * from sure_connect where connection_name=?1 ", nativeQuery = true) + Sure_Connect findByConnection_name(String connection_name); +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/SureConnect/Service/SureService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/SureConnect/Service/SureService.java new file mode 100644 index 0000000..a786a35 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/SureConnect/Service/SureService.java @@ -0,0 +1,61 @@ +package com.realnet.SureConnect.Service; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.realnet.SureConnect.Entities.Sure_Connect; +import com.realnet.SureConnect.Repository.SureRepository; +import com.realnet.exceptions.ResourceNotFoundException; + +@Service +public class SureService { + + @Autowired + private SureRepository sureRepository; + + public Sure_Connect create(Sure_Connect sure_Connect) { + return sureRepository.save(sure_Connect); + } + + + public List getall() { + return (List) sureRepository.findAll(); + } + + + public Sure_Connect getbyid(int id) { + return sureRepository.findById(id); + } + + public Sure_Connect getbyname(String connection_name) { + return sureRepository.findByConnection_name(connection_name); + } + + + public Sure_Connect update(Sure_Connect sure, int id) { + Sure_Connect pm = sureRepository.findById(id); +// .orElseThrow(()->new ResourceNotFoundException("not found")); + + pm.setAccess_token(sure.getAccess_token()); + pm.setClient_id(sure.getClient_id()); + pm.setConnection_name(sure.getConnection_name()); + pm.setDescription(sure.getDescription()); + pm.setPassword(sure.getPassword()); + pm.setType(sure.getType()); + pm.setUsername(sure.getUsername()); + return sureRepository.save(pm); + } + + + public void deletebyid(int id) { + sureRepository.deleteById(id); + } + + + + + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/WhoColumn/Entity/Extension.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/WhoColumn/Entity/Extension.java new file mode 100644 index 0000000..f8f216d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/WhoColumn/Entity/Extension.java @@ -0,0 +1,34 @@ +package com.realnet.WhoColumn.Entity; + + +import lombok.*; +import javax.persistence.*; + +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +@Data +@MappedSuperclass +@EntityListeners(AuditingEntityListener.class) +public class Extension extends Who_column { + /** + * + */ + private static final long serialVersionUID = 1L; + + private String extn1; + private String extn2; + private String extn3; + private String extn4; + private String extn5; + private String extn6; + private String extn7; + private String extn8; + private String extn9; + private String extn10; + private String extn11; + private String extn12; + private String extn13; + private String extn14; + private String extn15; + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/WhoColumn/Entity/Who_column.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/WhoColumn/Entity/Who_column.java new file mode 100644 index 0000000..66273a9 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/WhoColumn/Entity/Who_column.java @@ -0,0 +1,46 @@ +package com.realnet.WhoColumn.Entity; + +import java.io.Serializable; +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.EntityListeners; +import javax.persistence.MappedSuperclass; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; + +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import lombok.Data; + +@Data +@MappedSuperclass +@EntityListeners(AuditingEntityListener.class) +public class Who_column implements Serializable { + + private static final long serialVersionUID = 1L; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "CREATED_AT", nullable = false, updatable = false) + @CreatedDate + private Date createdAt; + + // @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createdAt; + + @Column(name = "CREATED_BY", updatable = false) + private Long createdBy; + + @Column(name = "UPDATED_BY") + private Long updatedBy; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "UPDATED_AT", nullable = false) + @LastModifiedDate + private Date updatedAt; + + @Column(name = "ACCOUNT_ID") + private Long accountId; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/WhoColumn/Services/WhoColumnService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/WhoColumn/Services/WhoColumnService.java new file mode 100644 index 0000000..e89e5fb --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/WhoColumn/Services/WhoColumnService.java @@ -0,0 +1,48 @@ +package com.realnet.WhoColumn.Services; + +import java.time.ZonedDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Date; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.realnet.MultiTimeZone.Services.TimezoneService; +import com.realnet.WhoColumn.Entity.Who_column; +import com.realnet.users.service1.AppUserService; + +@Service +public class WhoColumnService { + @Autowired + private TimezoneService timezoneService; + + @Autowired + private AppUserService userService; + + public String getConvertedDateTime(Who_column whoColumn) { + + String timezone = userService.getLoggedInUser().getMultitime(); + // Retrieve the timezone (if null, UTC is used by default) +// String timezone = whoColumn.getMultitimeZone() != null ? whoColumn.getMultitimeZone() : "UTC"; + + // Convert the 'createdAt' and 'updatedAt' dates + String createdAtConverted = convertDateToTimezone(whoColumn.getCreatedAt(), timezone); + String updatedAtConverted = convertDateToTimezone(whoColumn.getUpdatedAt(), timezone); + + return "Created At: " + createdAtConverted + "\nUpdated At: " + updatedAtConverted; + } + + private String convertDateToTimezone(Date date, String timezone) { + if (date == null) { + return "Date not available"; + } + + // Convert to the user's timezone using the TimezoneService + ZonedDateTime convertedDateTime = timezoneService.convertToUserTimezone(date, timezone); + + // Format the converted date into a readable string + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss z"); + return convertedDateTime.format(formatter); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Controller/DDController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Controller/DDController.java new file mode 100644 index 0000000..e01a615 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Controller/DDController.java @@ -0,0 +1,107 @@ +package com.realnet.Workspaceuser.Controller; + +import java.util.ArrayList; +import java.util.List; + +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.RestController; + +import com.realnet.Workspaceuser.Entity.DDTable; +import com.realnet.Workspaceuser.Entity.SecUsedDd; +import com.realnet.Workspaceuser.Entity.Sec_teams; +import com.realnet.Workspaceuser.Repository.Sec_teams_Repository; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.repository1.AppUserRepository; +//@RequestMapping("/Workspace_Dd") +@RestController +public class DDController { + + @Autowired + private Sec_teams_Repository sec_teams_Repository; + + @Autowired + private AppUserRepository appUserRepository; + +// SEC TEAM DD + + @GetMapping("/Sec_team") + public ResponseEntity getteam(){ + List sec = (List) sec_teams_Repository.findAll(); + ArrayList dd = new ArrayList(); + for(Sec_teams s:sec) { + DDTable d = new DDTable(); + d.setId(s.getId()); + d.setName(s.getName()); + dd.add(d); + } + return new ResponseEntity<>(dd, HttpStatus.OK); + + } + +// Report To + @GetMapping("/Report_to") + public ResponseEntity reportto(){ + List sec = (List) appUserRepository.findAll(); + ArrayList dd = new ArrayList(); + for(AppUser s:sec) { + SecUsedDd d = new SecUsedDd(); + d.setUserId(s.getUserId()); + d.setFullName(s.getFullName()); + + dd.add(d); + } + return new ResponseEntity<>(dd, HttpStatus.OK); + + } +// assign To + @GetMapping("/Assign") + public ResponseEntity Assign(){ + List sec = (List) appUserRepository.findAll(); + ArrayList dd = new ArrayList(); + for(AppUser s:sec) { + SecUsedDd d = new SecUsedDd(); + d.setUserId(s.getUserId()); + d.setFullName(s.getFullName()); + + dd.add(d); + } + return new ResponseEntity<>(dd, HttpStatus.OK); + + } +// Requestor To + @GetMapping("/Requestor") + public ResponseEntity Requestor(){ + List sec = (List) appUserRepository.findAll(); + ArrayList dd = new ArrayList(); + for(AppUser s:sec) { + SecUsedDd d = new SecUsedDd(); + d.setUserId(s.getUserId()); + d.setFullName(s.getFullName()); + + dd.add(d); + } + return new ResponseEntity<>(dd, HttpStatus.OK); + + } + +// owner To + @GetMapping("/Owner") + public ResponseEntity Owner(){ + List sec = (List) appUserRepository.findAll(); + ArrayList dd = new ArrayList(); + for(AppUser s:sec) { + SecUsedDd d = new SecUsedDd(); + d.setUserId(s.getUserId()); + d.setFullName(s.getFullName()); + + dd.add(d); + } + return new ResponseEntity<>(dd, HttpStatus.OK); + + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Controller/SecTeamController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Controller/SecTeamController.java new file mode 100644 index 0000000..0ec1291 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Controller/SecTeamController.java @@ -0,0 +1,87 @@ +package com.realnet.Workspaceuser.Controller; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.Workspaceuser.Entity.Sec_teams; +import com.realnet.Workspaceuser.Service.Sec_teamService; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.service1.AppUserServiceImpl; + +@RequestMapping("/Workspace_team") +@RestController +public class SecTeamController { + + @Autowired + private Sec_teamService sec_teamService; + + @Autowired + private AppUserServiceImpl userService; + +// create + @PostMapping("/SecTeam") + public Sec_teams create(@RequestBody Sec_teams rnrule) { + AppUser loggedInUser = userService.getLoggedInUser(); + + long accountId = loggedInUser.getAccount().getAccount_id(); + Long l = accountId; + if (l != null) { + rnrule.setAccountId(accountId); + + } + + Sec_teams rn = sec_teamService.create(rnrule); + return rn; + } + +// get all + @GetMapping("/SecTeam") + public ResponseEntity getall() { + List li = sec_teamService.getall(); + return new ResponseEntity<>(li, HttpStatus.OK); + } + +// get all by accountId + @GetMapping("/SecTeam/AccountId") + public ResponseEntity getallByAccountId() { + AppUser loggedInUser = userService.getLoggedInUser(); + + long accountId = loggedInUser.getAccount().getAccount_id(); + + List li = sec_teamService.getallbyAccountId(accountId); + return new ResponseEntity<>(li, HttpStatus.OK); + } + +// get by id + @GetMapping("/SecTeam/{id}") + public ResponseEntity getbyid(@PathVariable int id) { + Sec_teams rn = sec_teamService.getbyid(id); + return new ResponseEntity<>(rn, HttpStatus.OK); + } + +// update by id + @PutMapping("/SecTeam/{id}") + public ResponseEntity update(@RequestBody Sec_teams project, @PathVariable int id) { + Sec_teams rule_t = sec_teamService.updatebyid(project, id); + return new ResponseEntity<>(rule_t, HttpStatus.OK); + + } + +// Delete by id + @DeleteMapping("/SecTeam/{id}") + public void deletebyid(@PathVariable int id) { + sec_teamService.deletebyid(id); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Controller/SecWorkSpaceUSerController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Controller/SecWorkSpaceUSerController.java new file mode 100644 index 0000000..ebf29eb --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Controller/SecWorkSpaceUSerController.java @@ -0,0 +1,170 @@ +package com.realnet.Workspaceuser.Controller; + +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.HashSet; +import java.util.List; +import java.util.Optional; +import java.util.Set; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.Communication.Services.EmailNotificationService; +import com.realnet.Workspaceuser.Entity.Sec_team_members; +import com.realnet.Workspaceuser.Entity.Sec_workspace_users; +import com.realnet.Workspaceuser.Repository.SecWorkspaceUserRepo; +import com.realnet.Workspaceuser.Repository.Sec_team_MemberRepository; + +import com.realnet.users.entity.Role; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.repository.RoleRepo; +import com.realnet.users.repository1.AppUserRepository; +import com.realnet.users.response.MessageResponse; +import com.realnet.users.service1.AppUserServiceImpl; + +@RestController +@RequestMapping("/workspace/secworkspaceuser") +@EnableCaching +public class SecWorkSpaceUSerController { + + @Autowired + private SecWorkspaceUserRepo secWorkspaceUserRepo; + @Autowired + private AppUserServiceImpl userService; + + + @Autowired + private Sec_team_MemberRepository memberRepository; + @Autowired + private AppUserRepository userRepository; + + @Autowired + private RoleRepo roleRepo; + + @Autowired + private EmailNotificationService emailNotificationService; + + + + // ADD WHOLE TEAM TO SECWORKSPACE USER BY TEAM_ID + @PostMapping("/addteam/{project_id}/{team_id}") + public ResponseEntity addwholeteam(@PathVariable Integer project_id, @PathVariable int team_id, + @RequestBody Sec_workspace_users users) { + List list = new ArrayList<>(); + List members = memberRepository.getallteam(team_id); + for (Sec_team_members mem : members) { + Sec_workspace_users secuser = secWorkspaceUserRepo.getallsecworkspcceuser(mem.getMember_id(), project_id); + if (secuser == null) { + Sec_workspace_users user = new Sec_workspace_users(); + Optional us = userRepository.findById(mem.getMember_id()); + user.setAccountId(us.get().getAccount().getAccount_id()); + user.setUser_id(mem.getMember_id()); + user.setWorksapce_id(project_id); + user.setProject_id(project_id); + user.setUser_name(mem.getMember_name()); +// Set roles = new HashSet<>(); +// String role1 = "ROLE_Developer"; +// Role userRole = roleRepo.findByName(role1); +// roles.add(userRole); +// users.setUser_role(roles); + Sec_workspace_users save = secWorkspaceUserRepo.save(user); + + list.add(save); + +// send mail to team member + try { + emailNotificationService.sendmailViaSetu(us.get().getEmail(), us.get().getFullName(), "TeamMember"); + + } catch (Exception e) { + System.out.println("email sending error ..." + e); + // TODO: handle exception + } + + } + } + return new ResponseEntity<>(list, HttpStatus.OK); + } + + // GET ALL SEC_WORKSPACE_USER + @GetMapping("/sec_workspace_users") + public ResponseEntity getallusers() { + List list = secWorkspaceUserRepo.findAll(); + return new ResponseEntity<>(list, HttpStatus.OK); + } + + // GET ALL SEC_WORKSPACE_USER by PROJECT ID + @GetMapping("/get_by_projectid/{project_id}") + public ResponseEntity getallusers(@PathVariable Integer project_id) { + List list = secWorkspaceUserRepo.getallproject(project_id); + return new ResponseEntity<>(list, HttpStatus.OK); + } + + // ADD SEC WORKSPACE USER + @PostMapping("/add_workspace/users/{userid}/{project_id}/{access_duration}") + public ResponseEntity addsecusers(@RequestBody Sec_workspace_users users, @PathVariable Long userid, + @PathVariable Integer project_id, @PathVariable Integer access_duration, @RequestParam String role) { + + AppUser loggedInUser = userService.getLoggedInUser(); + Long fromuserid = loggedInUser.getUserId(); + // Long account_id = loggedInUser.getAccount().getAccount_id(); + + Sec_workspace_users workspace_users = secWorkspaceUserRepo.getallsecworkspcceuser(userid, project_id); + if (workspace_users == null) { + Optional us = userRepository.findById(userid); + users.setAccountId(us.get().getAccount().getAccount_id()); + users.setFromuserId(fromuserid); + users.setUser_id(userid); + users.setUser_name(us.get().getFullName()); + users.setWorksapce_id(project_id); + users.setProject_id(project_id); + + users.setAccess_duration(access_duration); + + Calendar c = Calendar.getInstance(); + c.setTime(new Date()); + c.add(Calendar.DATE, access_duration); + +// SimpleDateFormat dateFormat = new SimpleDateFormat(); +// String format = dateFormat.format(c.getTime()); + + users.setAccess_till_date(c.getTime()); + + Set roles = new HashSet<>(); +// String role1 = "ROLE_Developer"; + Role userRole = roleRepo.findByName(role); +// roles.add(userRole); + if (userRole != null) { + users.setUser_role(role); + } + + Sec_workspace_users save = secWorkspaceUserRepo.save(users); + +// send mail to team member + + try { + + emailNotificationService.sendmailViaSetu(us.get().getEmail(), us.get().getFullName(), "WorkSpaceUser"); + + } catch (Exception e) { + System.out.println("email sending error ..." + e); + // TODO: handle exception + } + return new ResponseEntity<>(save, HttpStatus.OK); + } else + return ResponseEntity.badRequest().body(new MessageResponse("user already added")); + + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Controller/Sec_team_members_Controller.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Controller/Sec_team_members_Controller.java new file mode 100644 index 0000000..db5a789 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Controller/Sec_team_members_Controller.java @@ -0,0 +1,60 @@ +package com.realnet.Workspaceuser.Controller; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.realnet.Workspaceuser.Service.SecTeam_MemberService; +import com.realnet.Workspaceuser.Entity.Sec_team_members; +@RequestMapping("/Workspace_team_member") +@RestController +public class Sec_team_members_Controller { + + @Autowired + private SecTeam_MemberService secTeam_MemberService; + +// create + @PostMapping("/Teammember") + public Sec_team_members create(@RequestBody Sec_team_members rnrule){ + Sec_team_members rn = secTeam_MemberService.create(rnrule); + return rn; + } + +// get all + + @GetMapping("/Teammember") + public ResponseEntity getall(){ + List li = secTeam_MemberService.getall(); + return new ResponseEntity<>(li,HttpStatus.OK); + } + +// get by id + @GetMapping("/Teammember/{id}") + public ResponseEntity getbyid(@PathVariable int id){ + Sec_team_members rn= secTeam_MemberService.getbyid(id); + return new ResponseEntity<>(rn,HttpStatus.OK); + } + +// update by id + @PutMapping("/Teammember/{id}") + public ResponseEntity update(@RequestBody Sec_team_members project, @PathVariable int id){ + Sec_team_members rule_t= secTeam_MemberService.updatebyid(project,id); + return new ResponseEntity<>(rule_t,HttpStatus.OK); + + } + +// Delete by id + @DeleteMapping("/Teammember/{id}") + public void deletebyid(@PathVariable int id){ + secTeam_MemberService.deletebyid(id); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Controller/WorkspaceController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Controller/WorkspaceController.java new file mode 100644 index 0000000..740e18f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Controller/WorkspaceController.java @@ -0,0 +1,92 @@ +package com.realnet.Workspaceuser.Controller; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.realnet.Workspaceuser.Entity.Sec_workspace; +import com.realnet.Workspaceuser.Repository.WorkspaceRepository; +import com.realnet.Workspaceuser.Service.WorkspaceService; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.service1.AppUserServiceImpl; + +@RequestMapping("/Workspace_workspace") +@RestController +public class WorkspaceController { + + @Autowired + private AppUserServiceImpl userService; + + @Autowired + private WorkspaceService workspaceService; + @Autowired + private WorkspaceRepository workspaceRepository; + +// create + @PostMapping("/workspace") + public Sec_workspace create(@RequestBody Sec_workspace rnrule) { + + AppUser loggedInUser = userService.getLoggedInUser(); + Long userId = loggedInUser.getUserId(); + rnrule.setOwner_id(userId); + + long accountId = loggedInUser.getAccount().getAccount_id(); + Long l = accountId; + if (l != null) { + rnrule.setAccountId(accountId); + + } + Sec_workspace rn = workspaceService.create(rnrule); + return rn; + } + +// get all + + @GetMapping("/workspace") + public ResponseEntity getall() { + + List li = workspaceService.getall(); + + return new ResponseEntity<>(li, HttpStatus.OK); + } + +// get all BY ACCOUNT ID + @GetMapping("/FindByaccount") + public ResponseEntity getallbyaccount() { + AppUser loggedInUser = userService.getLoggedInUser(); + long accountId = loggedInUser.getAccount().getAccount_id(); + List li = workspaceRepository.findByAccountId(accountId); + return new ResponseEntity<>(li, HttpStatus.OK); + } + +// get by id + @GetMapping("/workspace/{id}") + public ResponseEntity getbyid(@PathVariable int id) { + Sec_workspace rn = workspaceService.getbyid(id); + return new ResponseEntity<>(rn, HttpStatus.OK); + } + +// update by id + @PutMapping("/workspace/{id}") + public ResponseEntity update(@RequestBody Sec_workspace project, @PathVariable int id) { + Sec_workspace rule_t = workspaceService.updatebyid(project, id); + return new ResponseEntity<>(rule_t, HttpStatus.OK); + + } + +// Delete by id + @DeleteMapping("/workspace/{id}") + public void deletebyid(@PathVariable int id) { + workspaceService.deletebyid(id); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Entity/DDTable.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Entity/DDTable.java new file mode 100644 index 0000000..980766f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Entity/DDTable.java @@ -0,0 +1,10 @@ +package com.realnet.Workspaceuser.Entity; + +import lombok.Data; + +@Data +public class DDTable { + private int id; + private String name; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Entity/SecUsedDd.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Entity/SecUsedDd.java new file mode 100644 index 0000000..5d61098 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Entity/SecUsedDd.java @@ -0,0 +1,13 @@ +package com.realnet.Workspaceuser.Entity; + +import lombok.Data; + +@Data +public class SecUsedDd { + + private Long userId; + + private String fullName; + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Entity/Sec_team_members.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Entity/Sec_team_members.java new file mode 100644 index 0000000..d7c28d7 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Entity/Sec_team_members.java @@ -0,0 +1,25 @@ +package com.realnet.Workspaceuser.Entity; + +import java.sql.Date; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +import lombok.Data; +@Data +@Entity +public class Sec_team_members { + + @Id + @GeneratedValue(strategy=GenerationType.IDENTITY) + private int id; + + private int team_id; + private Long member_id; + private boolean member_type; + private String access_days; + private Date access_start_date; + private String member_name; +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Entity/Sec_teams.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Entity/Sec_teams.java new file mode 100644 index 0000000..388a4ae --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Entity/Sec_teams.java @@ -0,0 +1,31 @@ +package com.realnet.Workspaceuser.Entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +import com.realnet.fnd.entity.Rn_Who_AccId_Column; + +import lombok.Data; + +@Entity +@Data +public class Sec_teams extends Rn_Who_AccId_Column{ + + /** + * + */ + private static final long serialVersionUID = 1L; + + + @Id + @GeneratedValue(strategy=GenerationType.IDENTITY) + private int id; + + + private String name; + private String description; + private String Is_active; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Entity/Sec_workspace.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Entity/Sec_workspace.java new file mode 100644 index 0000000..c7608e7 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Entity/Sec_workspace.java @@ -0,0 +1,32 @@ +package com.realnet.Workspaceuser.Entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +import com.realnet.fnd.entity.Rn_Who_AccId_Column; + +import lombok.Data; + +@Entity +@Data +public class Sec_workspace extends Rn_Who_AccId_Column { + + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private int id; + + private String name; + private String description; + private String is_default; + private String Is_active; + private Long owner_id; + private Integer project_id; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Entity/Sec_workspace_users.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Entity/Sec_workspace_users.java new file mode 100644 index 0000000..f2c71e4 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Entity/Sec_workspace_users.java @@ -0,0 +1,40 @@ +package com.realnet.Workspaceuser.Entity; + +import java.util.Date; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.realnet.WhoColumn.Entity.Who_column; + +import lombok.Data; + +@Entity +@Data +public class Sec_workspace_users extends Who_column { + + /** + * + */ + private static final long serialVersionUID = 1L; + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private int worksapce_id; + private Long user_id; + private String user_name; + private Integer project_id; + private String user_role; + + private String project_name; + private Long fromuserId; + + private Integer access_duration; + + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-mm-yyyy") + private Date access_till_date; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Repository/SecWorkspaceUserRepo.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Repository/SecWorkspaceUserRepo.java new file mode 100644 index 0000000..cdda77f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Repository/SecWorkspaceUserRepo.java @@ -0,0 +1,25 @@ +package com.realnet.Workspaceuser.Repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import com.realnet.Workspaceuser.Entity.Sec_workspace_users; + +@Repository +public interface SecWorkspaceUserRepo extends JpaRepository { + + @Query(value = "SELECT * FROM sec_workspace_users WHERE user_id=?1 && access_till_date >= NOW();", nativeQuery = true) + List getallbyuserid(Long userId); + + @Query(value = "SELECT * FROM sec_workspace_users WHERE user_id=?1 and project_id=?2", nativeQuery = true) + Sec_workspace_users getallsecworkspcceuser(Long userid, Integer project_id); + + @Query(value = "SELECT * FROM sec_workspace_users WHERE project_id=?1", nativeQuery = true) + List getallproject(Integer project_id); + + @Query(value = "SELECT count(*) FROM sec_workspace_users WHERE user_id=?1", nativeQuery = true) + Object countSharewithme(Long userId); +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Repository/Sec_team_MemberRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Repository/Sec_team_MemberRepository.java new file mode 100644 index 0000000..3d9180c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Repository/Sec_team_MemberRepository.java @@ -0,0 +1,20 @@ +package com.realnet.Workspaceuser.Repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.Workspaceuser.Entity.Sec_team_members; + +@Repository +public interface Sec_team_MemberRepository extends CrudRepository { + Sec_team_members findById(int id); + + @Query(value = "SELECT * FROM sec_team_members a where a.team_id =?1", nativeQuery = true) + List getallteam(int team_id); + @Query(value = "SELECT * FROM sec_team_members a where a.team_id =?1 and a.member_id=?2", nativeQuery = true) + Sec_team_members findteammember(int id, Long userId); + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Repository/Sec_teams_Repository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Repository/Sec_teams_Repository.java new file mode 100644 index 0000000..0b85df3 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Repository/Sec_teams_Repository.java @@ -0,0 +1,18 @@ +package com.realnet.Workspaceuser.Repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.Workspaceuser.Entity.Sec_teams; + +@Repository +public interface Sec_teams_Repository extends CrudRepository { + + Sec_teams findById(int id); + + @Query(value = "SELECT * FROM sec_teams where account_id=?1", nativeQuery = true) + List findAllByAccountid(Long accountId); +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Repository/WorkspaceRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Repository/WorkspaceRepository.java new file mode 100644 index 0000000..ba45562 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Repository/WorkspaceRepository.java @@ -0,0 +1,22 @@ +package com.realnet.Workspaceuser.Repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.Workspaceuser.Entity.Sec_workspace; + +@Repository +public interface WorkspaceRepository extends CrudRepository { + + Sec_workspace findById(int id); + + List findByAccountId(Long accountId); + +// List findByProject_id(Integer project_id); + + @Query(value = "SELECT * FROM sec_workspace WHERE project_id=?1", nativeQuery = true) + List findByProject_id(Integer project_id); +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Service/SecTeam_MemberService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Service/SecTeam_MemberService.java new file mode 100644 index 0000000..c90d54c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Service/SecTeam_MemberService.java @@ -0,0 +1,50 @@ +package com.realnet.Workspaceuser.Service; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.realnet.Workspaceuser.Entity.Sec_team_members; +import com.realnet.Workspaceuser.Entity.Sec_teams; +import com.realnet.Workspaceuser.Repository.Sec_team_MemberRepository; + +@Service +public class SecTeam_MemberService { + + @Autowired + private Sec_team_MemberRepository sec_team_MemberRepository; + + public Sec_team_members create(Sec_team_members rnrule) { + return sec_team_MemberRepository.save(rnrule); + } + + + public List getall() { + return (List) sec_team_MemberRepository.findAll(); + } + + + public Sec_team_members getbyid(int id) { + return sec_team_MemberRepository.findById(id); + } + + + public Sec_team_members updatebyid(Sec_team_members project, int id) { + Sec_team_members rule = sec_team_MemberRepository.findById(id); + +// .orElseThrow(()-> ResourceNotFoundException("rueboard","id",id)); + rule.setAccess_days(project.getAccess_days()); + rule.setAccess_start_date(project.getAccess_start_date()); + rule.setMember_id(project.getMember_id()); + rule.setTeam_id(project.getTeam_id()); + + return sec_team_MemberRepository.save(rule); + } + + + public void deletebyid(int id) { + sec_team_MemberRepository.deleteById(id); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Service/Sec_teamService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Service/Sec_teamService.java new file mode 100644 index 0000000..7d44d33 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Service/Sec_teamService.java @@ -0,0 +1,50 @@ +package com.realnet.Workspaceuser.Service; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.realnet.Workspaceuser.Entity.Sec_teams; +import com.realnet.Workspaceuser.Repository.Sec_teams_Repository; + +@Service +public class Sec_teamService { + + @Autowired + private Sec_teams_Repository sec_teams_Repository; + + public Sec_teams create(Sec_teams rnrule) { + return sec_teams_Repository.save(rnrule); + } + + public List getall() { + return (List) sec_teams_Repository.findAll(); + } + +// get all by accountId + public List getallbyAccountId(Long accountId) { + return (List) sec_teams_Repository.findAllByAccountid(accountId); + } + + public Sec_teams getbyid(int id) { + return sec_teams_Repository.findById(id); + } + + public Sec_teams updatebyid(Sec_teams project, int id) { + Sec_teams rule = sec_teams_Repository.findById(id); + +// .orElseThrow(()-> ResourceNotFoundException("rueboard","id",id)); + rule.setAccountId(project.getAccountId()); + rule.setDescription(project.getDescription()); + rule.setIs_active(project.getIs_active()); + rule.setName(project.getName()); + + return sec_teams_Repository.save(rule); + } + + public void deletebyid(int id) { + sec_teams_Repository.deleteById(id); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Service/WorkspaceService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Service/WorkspaceService.java new file mode 100644 index 0000000..86f3ccd --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/Workspaceuser/Service/WorkspaceService.java @@ -0,0 +1,52 @@ +package com.realnet.Workspaceuser.Service; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.realnet.Workspaceuser.Entity.Sec_workspace; +import com.realnet.Workspaceuser.Repository.WorkspaceRepository; + +@Service +public class WorkspaceService { + + @Autowired + private WorkspaceRepository workspaceRepository; + + public Sec_workspace create(Sec_workspace rnrule) { + return workspaceRepository.save(rnrule); + } + + + public List getall() { + return (List) workspaceRepository.findAll(); + } + + + public Sec_workspace getbyid(int id) { + return workspaceRepository.findById(id); + } + + + public Sec_workspace updatebyid(Sec_workspace project, int id) { + Sec_workspace rule = workspaceRepository.findById(id); + +// .orElseThrow(()-> ResourceNotFoundException("rueboard","id",id)); + rule.setAccountId(project.getAccountId()); +// rule.setDefault_team_id(project.getDefault_team_id()); + rule.setDescription(project.getDescription()); + rule.setIs_active(project.getIs_active()); + rule.setIs_default(project.getIs_default()); + rule.setName(project.getName()); + rule.setOwner_id(project.getOwner_id()); + + return workspaceRepository.save(rule); + } + + + public void deletebyid(int id) { + Sec_workspace save = workspaceRepository.findById(id); + workspaceRepository.delete(save); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Controllers/Api_registery_headerController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Controllers/Api_registery_headerController.java new file mode 100644 index 0000000..37379ad --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Controllers/Api_registery_headerController.java @@ -0,0 +1,75 @@ +package com.realnet.api_registery.Controllers; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.api_registery.Entity.Api_registery_header; +import com.realnet.api_registery.Services.Api_registery_headerService; + +@RequestMapping(value = "/Api_registery_header") +//@CrossOrigin("*") +@RestController +public class Api_registery_headerController { + @Autowired + private Api_registery_headerService Service; + + @Value("${projectPath}") + private String projectPath; + + @PostMapping("/Api_registery_header") + public Api_registery_header Savedata(@RequestBody Api_registery_header data) { + Api_registery_header save = Service.Savedata(data); + + return save; + } + + @PutMapping("/Api_registery_header/{id}") + public Api_registery_header update(@RequestBody Api_registery_header data, @PathVariable Long id) { + Api_registery_header update = Service.update(data, id); + return update; + } + +// get all with pagination + @GetMapping("/Api_registery_header/getall/page") + public Page getall(@RequestParam(value = "page", required = false) Integer page, + @RequestParam(value = "size", required = false) Integer size) { + Pageable paging = PageRequest.of(page, size); + Page get = Service.getAllWithPagination(paging); + + return get; + + } + + @GetMapping("/Api_registery_header") + public List getdetails() { + List get = Service.getdetails(); + return get; + } + + @GetMapping("/Api_registery_header/{id}") + public Api_registery_header getdetailsbyId(@PathVariable Long id) { + Api_registery_header get = Service.getdetailsbyId(id); + return get; + } + + @DeleteMapping("/Api_registery_header/{id}") + public void delete_by_id(@PathVariable Long id) { + Service.delete_by_id(id); + + } + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Controllers/Api_registery_lineController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Controllers/Api_registery_lineController.java new file mode 100644 index 0000000..655b221 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Controllers/Api_registery_lineController.java @@ -0,0 +1,82 @@ +package com.realnet.api_registery.Controllers; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.api_registery.Entity.Api_registery_line; +import com.realnet.api_registery.Services.Api_registery_lineService; + +@RequestMapping(value = "/Api_registery_line") +//@CrossOrigin("*") +@RestController +public class Api_registery_lineController { + @Autowired + private Api_registery_lineService Service; + + @Value("${projectPath}") + private String projectPath; + + @PostMapping("/Api_registery_line") + public Api_registery_line Savedata(@RequestBody Api_registery_line data) { + Api_registery_line save = Service.Savedata(data); + + return save; + } + + @PutMapping("/Api_registery_line/{id}") + public Api_registery_line update(@RequestBody Api_registery_line data, @PathVariable Integer id) { + Api_registery_line update = Service.update(data, id); + return update; + } + +// get all with pagination + @GetMapping("/Api_registery_line/getall/page") + public Page getall(@RequestParam(value = "page", required = false) Integer page, + @RequestParam(value = "size", required = false) Integer size) { + Pageable paging = PageRequest.of(page, size); + Page get = Service.getAllWithPagination(paging); + + return get; + + } + + @GetMapping("/Api_registery_line") + public List getdetails() { + List get = Service.getdetails(); + return get; + } + + @GetMapping("/Api_registery_line/{id}") + public Api_registery_line getdetailsbyId(@PathVariable Integer id) { + Api_registery_line get = Service.getdetailsbyId(id); + return get; + } + + @DeleteMapping("/Api_registery_line/{id}") + public void delete_by_id(@PathVariable Integer id) { + Service.delete_by_id(id); + + } + +// get all by header id + @GetMapping("/Api_registery_line/header/{header_id}") + public List getallbyheaderId(@PathVariable Long header_id) { + List get = Service.getLinesbyHeaderid(header_id); + return get; + } + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Controllers/GeneratetokenController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Controllers/GeneratetokenController.java new file mode 100644 index 0000000..b1a64f1 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Controllers/GeneratetokenController.java @@ -0,0 +1,51 @@ +package com.realnet.api_registery.Controllers; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.realnet.api_registery.Entity.Token_registery; +import com.realnet.api_registery.Services.GeneratetokenService; + +@RestController +@RequestMapping(value = "/apiregistery") +public class GeneratetokenController { + + @Autowired + private GeneratetokenService generatetokenService; + + @PostMapping("/generateToken") + public Token_registery generatetoken(@RequestBody Token_registery reg) throws JsonProcessingException { + + String token_name = reg.getToken_name(); + Token_registery token = generatetokenService.generatetoken(token_name); + + return token; + + } + + @GetMapping("/getall") + public List getall() { + + List getall = generatetokenService.getall(); + + return getall; + + } + + @DeleteMapping("/delete/{id}") + public void delete(@PathVariable Integer id) { + generatetokenService.delete(id); + + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Entity/Api_registery_header.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Entity/Api_registery_header.java new file mode 100644 index 0000000..2994577 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Entity/Api_registery_header.java @@ -0,0 +1,26 @@ +package com.realnet.api_registery.Entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +import com.realnet.WhoColumn.Entity.Extension; + +import lombok.Data; + +@Entity +@Data +public class Api_registery_header extends Extension { + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String table_name; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Entity/Api_registery_line.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Entity/Api_registery_line.java new file mode 100644 index 0000000..2098934 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Entity/Api_registery_line.java @@ -0,0 +1,30 @@ +package com.realnet.api_registery.Entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +import com.realnet.WhoColumn.Entity.Extension; + +import lombok.Data; + +@Entity +@Data +public class Api_registery_line extends Extension { + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Integer id; + + private String url; + + private String method; + + private Long header_id; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Entity/Token_registery.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Entity/Token_registery.java new file mode 100644 index 0000000..ffb44a3 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Entity/Token_registery.java @@ -0,0 +1,29 @@ +package com.realnet.api_registery.Entity; + +import lombok.*; + +import javax.persistence.*; + +import com.realnet.WhoColumn.Entity.Extension; + +import java.time.LocalDateTime; +import java.util.*; + +@Entity +@Data +public class Token_registery extends Extension { + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Integer id; + + private String token_name; + + @Lob + private String token; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Repository/Api_registery_headerRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Repository/Api_registery_headerRepository.java new file mode 100644 index 0000000..cbe6bcb --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Repository/Api_registery_headerRepository.java @@ -0,0 +1,13 @@ +package com.realnet.api_registery.Repository; + + +import org.springframework.data.jpa.repository.JpaRepository; + +import org.springframework.stereotype.Repository; + + +import com.realnet.api_registery.Entity.Api_registery_header; + +@Repository +public interface Api_registery_headerRepository extends JpaRepository { +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Repository/Api_registery_lineRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Repository/Api_registery_lineRepository.java new file mode 100644 index 0000000..548ddc6 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Repository/Api_registery_lineRepository.java @@ -0,0 +1,17 @@ +package com.realnet.api_registery.Repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import com.realnet.api_registery.Entity.Api_registery_line; + +@Repository +public interface Api_registery_lineRepository extends JpaRepository { + + @Query(value = "select * from api_registery_line where header_id=?1", nativeQuery = true) + List getLinesbyheaderid(Long header_id); + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Repository/Token_registery_Repository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Repository/Token_registery_Repository.java new file mode 100644 index 0000000..c3d89eb --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Repository/Token_registery_Repository.java @@ -0,0 +1,17 @@ +package com.realnet.api_registery.Repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import com.realnet.api_registery.Entity.Token_registery; + +@Repository +public interface Token_registery_Repository extends JpaRepository { + + @Query(value = "select * from token_registery where created_by=?1", nativeQuery = true) + + List getallbycreatedby(Long createdby); +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Services/Api_registery_headerService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Services/Api_registery_headerService.java new file mode 100644 index 0000000..3239189 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Services/Api_registery_headerService.java @@ -0,0 +1,59 @@ +package com.realnet.api_registery.Services; + +import java.util.List; +import java.util.Optional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import com.realnet.api_registery.Entity.Api_registery_header; +import com.realnet.api_registery.Repository.Api_registery_headerRepository; +import com.realnet.exceptions.ResourceNotFoundException; + +@Service +public class Api_registery_headerService { + @Autowired + private Api_registery_headerRepository Repository; + + public Api_registery_header Savedata(Api_registery_header data) { + + Api_registery_header save = Repository.save(data); + return save; + } + +// get all with pagination + public Page getAllWithPagination(Pageable page) { + return Repository.findAll(page); + } + + public List getdetails() { + return (List) Repository.findAll(); + } + + public Api_registery_header getdetailsbyId(Long id) { + return Repository.findById(id).get(); + } + + public void delete_by_id(Long id) { + Repository.deleteById(id); + } + + public Api_registery_header update(Api_registery_header data, Long id) { + Optional old1 = Repository.findById(id); + + if (old1.isPresent()) { + + Api_registery_header old = old1.get(); + + old.setTable_name(data.getTable_name()); + + final Api_registery_header test = Repository.save(old); + return test; + } else { + throw new ResourceNotFoundException("not found"); + } + + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Services/Api_registery_lineService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Services/Api_registery_lineService.java new file mode 100644 index 0000000..c7a3777 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Services/Api_registery_lineService.java @@ -0,0 +1,67 @@ +package com.realnet.api_registery.Services; + +import java.util.List; +import java.util.Optional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import com.realnet.api_registery.Entity.Api_registery_line; +import com.realnet.api_registery.Repository.Api_registery_lineRepository; +import com.realnet.exceptions.ResourceNotFoundException; + +@Service +public class Api_registery_lineService { + @Autowired + private Api_registery_lineRepository Repository; + + public Api_registery_line Savedata(Api_registery_line data) { + + Api_registery_line save = Repository.save(data); + return save; + } + +// get all with pagination + public Page getAllWithPagination(Pageable page) { + return Repository.findAll(page); + } + + public List getdetails() { + return (List) Repository.findAll(); + } + +// get lines by header id + public List getLinesbyHeaderid(Long header_id) { + + List list = Repository.getLinesbyheaderid(header_id); + return list; + } + + public Api_registery_line getdetailsbyId(Integer id) { + return Repository.findById(id).get(); + } + + public void delete_by_id(Integer id) { + Repository.deleteById(id); + } + + public Api_registery_line update(Api_registery_line data, Integer id) { + Optional old1 = Repository.findById(id); + + if (old1.isPresent()) { + Api_registery_line old = old1.get(); + old.setUrl(data.getUrl()); + + old.setMethod(data.getMethod()); + + old.setHeader_id(data.getHeader_id()); + + final Api_registery_line test = Repository.save(old); + return test; + } else { + throw new ResourceNotFoundException("not found"); + } + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Services/GeneratetokenService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Services/GeneratetokenService.java new file mode 100644 index 0000000..605b661 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Services/GeneratetokenService.java @@ -0,0 +1,122 @@ +package com.realnet.api_registery.Services; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.realnet.api_registery.Entity.Token_registery; +import com.realnet.api_registery.Repository.Token_registery_Repository; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.service1.AppUserServiceImpl; + +@Service +public class GeneratetokenService { + + @Autowired + private AppUserServiceImpl userServiceImpl; + + @Autowired + private Token_registery_Repository token_registery_Repository; + + @Autowired + private BCryptPasswordEncoder bcryptEncoder; + + public Token_registery generatetoken(String toekn_name) throws JsonProcessingException { + + AppUser loggedInUser = userServiceImpl.getLoggedInUser(); + + String username = loggedInUser.getUsername(); + + String userPassw = loggedInUser.getChangePassw(); + + StringBuilder builder = new StringBuilder(); + + builder.append( + "{\n" + " \"email\" :\"" + username + "\",\n" + " \"password\" : \"" + userPassw + "\"\n" + "}"); + + String url = "http://localhost:9292"; + String repo = "/token/session"; + + System.out.println(builder.toString()); + + String job_url = url + repo; + + RestTemplate restTemplate = new RestTemplate(); + + String resourceUrl = job_url; + HttpHeaders headers = getHeaders(); + HttpEntity request = new HttpEntity(builder.toString(), headers); + + ResponseEntity res = restTemplate.postForEntity(resourceUrl, request, String.class); + String object = res.getBody(); + + ObjectMapper mapper = new ObjectMapper(); +// String str = mapper.writeValueAsString(object); + + JsonParser parser = new JsonParser(); + JsonElement element = parser.parse(object); + + JsonObject obj = element.getAsJsonObject(); + JsonObject item = obj.get("item").getAsJsonObject(); + + String token = item.get("token").getAsString(); + + Token_registery token_registery = new Token_registery(); + token_registery.setToken(token); + token_registery.setToken_name(toekn_name); + token_registery.setCreatedBy(loggedInUser.getUserId()); + + Token_registery save = token_registery_Repository.save(token_registery); + + System.out.println("token is == " + token); + + return save; + + } + + public List getall() { + AppUser loggedInUser = userServiceImpl.getLoggedInUser(); + + Long userId = loggedInUser.getUserId(); + + List list = token_registery_Repository.getallbycreatedby(userId); + + return list; + + } + + public void delete(Integer id) { + + token_registery_Repository.deleteById(id); + + } + + private HttpHeaders getHeaders() { + HttpHeaders headers = new HttpHeaders(); + headers.set("Content-Type", MediaType.APPLICATION_JSON_VALUE); + headers.set("Accept", MediaType.APPLICATION_JSON_VALUE); + return headers; + } + + public ResponseEntity GET(String get) { + RestTemplate restTemplate = new RestTemplate(); + + ResponseEntity u = restTemplate.getForEntity(get, Object.class); + + return u; + + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/AppConfig.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/AppConfig.java new file mode 100644 index 0000000..cad8884 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/AppConfig.java @@ -0,0 +1,39 @@ +package com.realnet.config; + +import org.modelmapper.ModelMapper; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.realnet.logging.NoLogging; + +@Configuration +public class AppConfig { +// @Bean +// public HibernateJpaSessionFactoryBean sessionFactory() { +// return new HibernateJpaSessionFactoryBean(); +// } + + @NoLogging + @Bean + public ModelMapper modelMapper() { + return new ModelMapper(); + } + + @Bean + public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() { + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); + MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(mapper); + return converter; + } + + @Bean + public ObjectMapper objectMapper() { + return new ObjectMapper().disable(SerializationFeature.FAIL_ON_EMPTY_BEANS); + } + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/CorsFilter.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/CorsFilter.java new file mode 100644 index 0000000..1fd68ff --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/CorsFilter.java @@ -0,0 +1,56 @@ +package com.realnet.config; + +import java.io.IOException; + +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.realnet.logging.NoLogging; + + +public class CorsFilter implements javax.servlet.Filter { + @NoLogging + @Override + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { + HttpServletResponse res = (HttpServletResponse) response; + HttpServletRequest req = (HttpServletRequest) request; + + res.setHeader("Access-Control-Allow-Origin", "*"); + res.setHeader("Access-Control-Allow-Credentials", "true"); + res.setHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT, OPTIONS"); + res.setHeader("Access-Control-Max-Age", "3600"); + res.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Accept-Encoding, Accept-Language, Host, Referer, Connection, User-Agent, authorization, sw-useragent, sw-version"); + //res.setHeader("Access-Control-Allow-Headers", "Access-Control-Allow-Headers, Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers"); + // Just REPLY OK if request method is OPTIONS for CORS (pre-flight) + if ( req.getMethod().equals("OPTIONS") ) { + res.setStatus(HttpServletResponse.SC_OK); + return; + } + chain.doFilter(request, response); + } + +// public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { +// System.out.println("Filtering on..........................................................."); +// HttpServletResponse response = (HttpServletResponse) res; +// response.setHeader("Access-Control-Allow-Origin", "*"); +// response.setHeader("Access-Control-Allow-Credentials", "true"); +// response.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE"); +// response.setHeader("Access-Control-Max-Age", "3600"); +// response.setHeader("Access-Control-Allow-Headers", "X-Requested-With, Content-Type, Authorization, Origin, Accept, Access-Control-Request-Method, Access-Control-Request-Headers"); +// +// chain.doFilter(req, res); +//} + + @NoLogging + @Override + public void destroy() {} + + @NoLogging + @Override + public void init(FilterConfig filterConfig) throws ServletException {} +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/EmailService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/EmailService.java new file mode 100644 index 0000000..fc351d0 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/EmailService.java @@ -0,0 +1,136 @@ +package com.realnet.config; + +import java.io.IOException; + +import javax.mail.MessagingException; +import javax.mail.internet.MimeMessage; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.mail.MailException; +import org.springframework.mail.SimpleMailMessage; +import org.springframework.mail.javamail.JavaMailSender; +import org.springframework.mail.javamail.MimeMessageHelper; +import org.springframework.stereotype.Service; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; +import org.springframework.web.client.RestTemplate; + +import com.realnet.utils.Port_Constant; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +public class EmailService { + @Autowired + private JavaMailSender mailSender; + + public void sendSimpleMessage(String from, String to, String subject, String text) throws MailException { + SimpleMailMessage message = new SimpleMailMessage(); + log.debug("email to sent.."); + // message.setFrom(from); + message.setTo(to); + message.setSubject(subject); + message.setText(text); + mailSender.send(message); + log.debug("email sent successfully"); + } + + public void sendEmailWithAttachment(String to, String subject, String text) throws MessagingException, IOException { + + MimeMessage msg = mailSender.createMimeMessage(); + + // true = multipart message + MimeMessageHelper helper = new MimeMessageHelper(msg, true); + log.debug("email to sent.."); + helper.setTo(to); + + helper.setSubject(subject); + + // default = text/plain + // helper.setText("Check attachment for image!"); + + // true = text/html + // helper.setText("

    Check attachment for image!

    ", true); + + helper.setText(text, true); + + // hard coded a file path + // FileSystemResource file = new FileSystemResource(new + // File("path/android.png")); + // helper.addAttachment("my_photo.png", new ClassPathResource("android.png")); + mailSender.send(msg); + log.debug("email sent successfully"); + } + + public void constructEmail(String em, String subject, String url) { + SimpleMailMessage email = new SimpleMailMessage(); + email.setSubject(subject); + email.setText(url); + email.setTo(em); + mailSender.send(email); + + } + + // FOR ADD USER VIA ADMIN + public void sendEmail(String sendTo, String subject, String body) { + SimpleMailMessage email = new SimpleMailMessage(); + email.setSubject(subject); + email.setText(body); + email.setTo(sendTo); + try { + + mailSender.send(email); + System.out.println(" email sent to " + sendTo); + + } catch (Exception e) { + + System.out.println(" invalid email " + e); + // TODO: handle exception + } + + } + +// send mail via setu + public ResponseEntity sendEmailViaSetu(String email, String message, String templateName, String gatewayName) { + +// template name = notification_template, gateway name = email_gateway + try { + + String jsonData = "{\r\n" + " \"job_type\": \"Email\",\r\n" + " \"send_to\": \"" + email.trim() + + "\",\r\n" + " \"cc\": \"cc@example.com\",\r\n" +// + " \"attachment\": \"sample-file.txt\",\r\n" + + " \"gatewaydone\": \"N\",\r\n" + " \"template_name\": \"" + templateName.trim() + "\",\r\n" + + " \"replacement_string\": \"Hello, {name} " + message + "!\",\r\n" + " \"gatewayName\": \"" + + gatewayName.trim() + "\"\r\n" + "}\r\n"; + + HttpHeaders headers = new HttpHeaders(); +// headers.setContentType(MediaType.MULTIPART_FORM_DATA); + + MultiValueMap queryParams = new LinkedMultiValueMap<>(); + queryParams.add("data", jsonData); + + HttpEntity> requestEntity = new HttpEntity<>(queryParams, headers); + + String apiUrl2 = Port_Constant.SURE_SETU_DOMAIN + + "/token/Surecommunication/communication/jobtable/Com_jobTable"; // Replace with the + // actual API URL + + RestTemplate restTemplate = new RestTemplate(); + + ResponseEntity responseEntity = restTemplate.postForEntity(apiUrl2, requestEntity, String.class); + + return ResponseEntity.ok(responseEntity.getBody()); + + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); + } + + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/HttpLoggingFilter.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/HttpLoggingFilter.java new file mode 100644 index 0000000..cadab7a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/HttpLoggingFilter.java @@ -0,0 +1,505 @@ +//package com.realnet.config; +// +//import java.io.BufferedReader; +//import java.io.ByteArrayInputStream; +//import java.io.ByteArrayOutputStream; +//import java.io.File; +//import java.io.FileWriter; +//import java.io.IOException; +//import java.io.InputStream; +//import java.io.InputStreamReader; +//import java.io.OutputStream; +//import java.io.PrintWriter; +//import java.nio.file.FileSystems; +//import java.nio.file.Path; +//import java.nio.file.Paths; +//import java.text.DateFormat; +//import java.text.SimpleDateFormat; +//import java.util.Collection; +//import java.util.Date; +//import java.util.Enumeration; +//import java.util.HashMap; +//import java.util.Locale; +//import java.util.Map; +// +//import javax.servlet.Filter; +//import javax.servlet.FilterChain; +//import javax.servlet.FilterConfig; +//import javax.servlet.ReadListener; +//import javax.servlet.ServletException; +//import javax.servlet.ServletInputStream; +//import javax.servlet.ServletOutputStream; +//import javax.servlet.ServletRequest; +//import javax.servlet.ServletResponse; +//import javax.servlet.WriteListener; +//import javax.servlet.http.Cookie; +//import javax.servlet.http.HttpServletRequest; +//import javax.servlet.http.HttpServletRequestWrapper; +//import javax.servlet.http.HttpServletResponse; +//import javax.servlet.http.HttpSession; +// +//import org.apache.commons.io.output.TeeOutputStream; +//import org.slf4j.Logger; +//import org.slf4j.LoggerFactory; +//import org.springframework.beans.factory.ObjectFactory; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.stereotype.Component; +// +//import com.realnet.logging1.service.LoggingService; +//import com.realnet.users.entity1.AppUser; +//import com.realnet.users.service1.AppUserServiceImpl; +// +//@Component +//public class HttpLoggingFilter implements Filter { +// public static StringBuilder logInfo; +// public static boolean logged = false; +// private final Logger LOGGER = LoggerFactory.getLogger(getClass()); +// public static String sessionLogging = "no"; +// @Autowired +// ObjectFactory httpSessionFactory; +// private AppUserServiceImpl appUserServiceImpl; +// private LoggingService loggingService; +// +// public HttpLoggingFilter(ObjectFactory httpSessionFactory, AppUserServiceImpl appUserServiceImpl, +// LoggingService loggingService) { +// super(); +// this.httpSessionFactory = httpSessionFactory; +// this.appUserServiceImpl = appUserServiceImpl; +// this.loggingService = loggingService; +// } +// +// @Override +// public void init(FilterConfig filterConfig) throws ServletException { +// } +// +// @Override +// public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) +// throws IOException, ServletException { +// try { +// HttpServletRequest httpServletRequest = (HttpServletRequest) request; +// HttpServletResponse httpServletResponse = (HttpServletResponse) response; +// +// Map requestMap = this.getParameters(httpServletRequest); +// BufferedRequestWrapper bufferedRequest = new BufferedRequestWrapper(httpServletRequest); +// BufferedResponseWrapper bufferedResponse = new BufferedResponseWrapper(httpServletResponse); +// Date d = new Date(); +// DateFormat simple = new SimpleDateFormat("dd MMM yyyy HH:mm:ss"); +// String timeStamp = simple.format(d); +// String servletPath = httpServletRequest.getServletPath(); +// final StringBuilder logMessage = new StringBuilder("[" + timeStamp + "]").append("REST Request - ") +// .append("[HTTP METHOD:").append(httpServletRequest.getMethod()).append("] [PATH INFO:") +// .append(servletPath).append("] [REQUEST PARAMETERS:").append(requestMap).append("] [REQUEST BODY:") +// .append(bufferedRequest.getRequestBody()).append("] [REMOTE ADDRESS:") +// .append(httpServletRequest.getRemoteAddr()).append("]"); +// +// logInfo = logMessage; +// +// chain.doFilter(bufferedRequest, bufferedResponse); +// +// if (!servletPath.startsWith("/token/") || !servletPath.startsWith("/api/")) { +// if (httpSessionFactory.getObject().getAttribute("generate_log") == null) { +// Long id = appUserServiceImpl.getLoggedInUser().getUserId(); +// if (loggingService.getOne(id) != null) { +// httpSessionFactory.getObject().setAttribute("generate_log", +// loggingService.getOne(id).getGenerateLog()); +// httpSessionFactory.getObject().setAttribute("generate_log", +// loggingService.getOne(id).getLogLevel()); +// httpSessionFactory.getObject().setAttribute("generate_log", +// loggingService.getOne(id).getLogFileName()); +// } else { +// httpSessionFactory.getObject().setAttribute("generate_log", "N"); +// } +// +// } +// if (!httpSessionFactory.getObject().getAttribute("generate_log").equals("N")) { +// try { +// logMessage.append(" [RESPONSE:").append(bufferedResponse.getContent()).append("]"); +// } catch (Exception ex) { +// System.out.println(ex); +// } +// System.out.println(httpSessionFactory.getObject().getAttribute("LogginLevel")); +// if (httpSessionFactory.getObject().getAttribute("LogginLevel").equals("info")) { +// AppUser u = appUserServiceImpl.getLoggedInUser(); +// if (u != null) { +// Path root = FileSystems.getDefault().getPath("").toAbsolutePath(); +// Path filePath = Paths.get(root.toString(), "logs", +// httpSessionFactory.getObject().getAttribute("LogFileName").toString()); +// File f = filePath.toFile(); +// // File f = new File("/home/jboss/EAP-7.1.0/logs/sysadmin2_5463783.log"); +// FileWriter fw = new FileWriter(f, true); +// logInfo = logMessage; +// fw.write(logInfo.toString() + "\n"); +// fw.close(); +// +// } +// } else if (httpSessionFactory.getObject().getAttribute("LogginLevel").equals("debug") +// && logged == false) { +// AppUser u = appUserServiceImpl.getLoggedInUser(); +// if (u != null) { +// Path root = FileSystems.getDefault().getPath("").toAbsolutePath(); +// Path filePath = Paths.get(root.toString(), "logs", +// httpSessionFactory.getObject().getAttribute("LogFileName").toString()); +// File f = filePath.toFile(); +// // File f = new File("/home/jboss/EAP-7.1.0/logs/sysadmin2_5463783.log"); +// FileWriter fw = new FileWriter(f, true); +// logInfo = logMessage; +// fw.write(logInfo.toString() + "\n"); +// fw.close(); +// } +// +// } else { +// +// } +// } +// } +// +// } catch (Exception a) { +// throw a; +// } +// +// } +// +// private Map getParameters(HttpServletRequest request) { +// Map typesafeRequestMap = new HashMap(); +// Enumeration requestParamNames = request.getParameterNames(); +// while (requestParamNames.hasMoreElements()) { +// String requestParamName = (String) requestParamNames.nextElement(); +// String requestParamValue; +// if (requestParamName.equalsIgnoreCase("password")) { +// requestParamValue = "****"; +// } else { +// requestParamValue = request.getParameter(requestParamName); +// } +// typesafeRequestMap.put(requestParamName, requestParamValue); +// } +// return typesafeRequestMap; +// } +// +// @Override +// public void destroy() { +// } +// +// private static final class BufferedRequestWrapper extends HttpServletRequestWrapper { +// +// private ByteArrayInputStream bais = null; +// private ByteArrayOutputStream baos = null; +// private BufferedServletInputStream bsis = null; +// private byte[] buffer = null; +// +// public BufferedRequestWrapper(HttpServletRequest req) throws IOException { +// super(req); +// // Read InputStream and store its content in a buffer. +// InputStream is = req.getInputStream(); +// this.baos = new ByteArrayOutputStream(); +// byte buf[] = new byte[1024]; +// int read; +// while ((read = is.read(buf)) > 0) { +// this.baos.write(buf, 0, read); +// } +// this.buffer = this.baos.toByteArray(); +// is.close(); +// } +// +// @Override +// public ServletInputStream getInputStream() { +// this.bais = new ByteArrayInputStream(this.buffer); +// this.bsis = new BufferedServletInputStream(this.bais); +// return this.bsis; +// } +// +// String getRequestBody() throws IOException { +// BufferedReader reader = new BufferedReader(new InputStreamReader(this.getInputStream())); +// String line = null; +// StringBuilder inputBuffer = new StringBuilder(); +// do { +// line = reader.readLine(); +// if (null != line) { +// inputBuffer.append(line.trim()); +// } +// } while (line != null); +// reader.close(); +// return inputBuffer.toString().trim(); +// } +// +// } +// +// private static final class BufferedServletInputStream extends ServletInputStream { +// +// private ByteArrayInputStream bais; +// +// public BufferedServletInputStream(ByteArrayInputStream bais) { +// this.bais = bais; +// } +// +// @Override +// public int available() { +// return this.bais.available(); +// } +// +// @Override +// public int read() { +// return this.bais.read(); +// } +// +// @Override +// public int read(byte[] buf, int off, int len) { +// return this.bais.read(buf, off, len); +// } +// +// @Override +// public boolean isFinished() { +// return false; +// } +// +// @Override +// public boolean isReady() { +// return true; +// } +// +// @Override +// public void setReadListener(ReadListener readListener) { +// +// } +// } +// +// public class TeeServletOutputStream extends ServletOutputStream { +// +// private final TeeOutputStream targetStream; +// +// public TeeServletOutputStream(OutputStream one, OutputStream two) { +// targetStream = new TeeOutputStream(one, two); +// } +// +// @Override +// public void write(int arg0) throws IOException { +// this.targetStream.write(arg0); +// } +// +// public void flush() throws IOException { +// super.flush(); +// this.targetStream.flush(); +// } +// +// public void close() throws IOException { +// super.close(); +// this.targetStream.close(); +// } +// +// @Override +// public boolean isReady() { +// return false; +// } +// +// @Override +// public void setWriteListener(WriteListener writeListener) { +// +// } +// } +// +// public class BufferedResponseWrapper implements HttpServletResponse { +// +// HttpServletResponse original; +// TeeServletOutputStream tee; +// ByteArrayOutputStream bos; +// +// public BufferedResponseWrapper(HttpServletResponse response) { +// original = response; +// } +// +// public String getContent() { +// return bos.toString(); +// } +// +// public PrintWriter getWriter() throws IOException { +// return original.getWriter(); +// } +// +// public ServletOutputStream getOutputStream() throws IOException { +// if (tee == null) { +// bos = new ByteArrayOutputStream(); +// tee = new TeeServletOutputStream(original.getOutputStream(), bos); +// } +// return tee; +// +// } +// +// @Override +// public String getCharacterEncoding() { +// return original.getCharacterEncoding(); +// } +// +// @Override +// public String getContentType() { +// return original.getContentType(); +// } +// +// @Override +// public void setCharacterEncoding(String charset) { +// original.setCharacterEncoding(charset); +// } +// +// @Override +// public void setContentLength(int len) { +// original.setContentLength(len); +// } +// +// @Override +// public void setContentLengthLong(long l) { +// original.setContentLengthLong(l); +// } +// +// @Override +// public void setContentType(String type) { +// original.setContentType(type); +// } +// +// @Override +// public void setBufferSize(int size) { +// original.setBufferSize(size); +// } +// +// @Override +// public int getBufferSize() { +// return original.getBufferSize(); +// } +// +// @Override +// public void flushBuffer() throws IOException { +// tee.flush(); +// } +// +// @Override +// public void resetBuffer() { +// original.resetBuffer(); +// } +// +// @Override +// public boolean isCommitted() { +// return original.isCommitted(); +// } +// +// @Override +// public void reset() { +// original.reset(); +// } +// +// @Override +// public void setLocale(Locale loc) { +// original.setLocale(loc); +// } +// +// @Override +// public Locale getLocale() { +// return original.getLocale(); +// } +// +// @Override +// public void addCookie(Cookie cookie) { +// original.addCookie(cookie); +// } +// +// @Override +// public boolean containsHeader(String name) { +// return original.containsHeader(name); +// } +// +// @Override +// public String encodeURL(String url) { +// return original.encodeURL(url); +// } +// +// @Override +// public String encodeRedirectURL(String url) { +// return original.encodeRedirectURL(url); +// } +// +// @SuppressWarnings("deprecation") +// @Override +// public String encodeUrl(String url) { +// return original.encodeUrl(url); +// } +// +// @SuppressWarnings("deprecation") +// @Override +// public String encodeRedirectUrl(String url) { +// return original.encodeRedirectUrl(url); +// } +// +// @Override +// public void sendError(int sc, String msg) throws IOException { +// original.sendError(sc, msg); +// } +// +// @Override +// public void sendError(int sc) throws IOException { +// original.sendError(sc); +// } +// +// @Override +// public void sendRedirect(String location) throws IOException { +// original.sendRedirect(location); +// } +// +// @Override +// public void setDateHeader(String name, long date) { +// original.setDateHeader(name, date); +// } +// +// @Override +// public void addDateHeader(String name, long date) { +// original.addDateHeader(name, date); +// } +// +// @Override +// public void setHeader(String name, String value) { +// original.setHeader(name, value); +// } +// +// @Override +// public void addHeader(String name, String value) { +// original.addHeader(name, value); +// } +// +// @Override +// public void setIntHeader(String name, int value) { +// original.setIntHeader(name, value); +// } +// +// @Override +// public void addIntHeader(String name, int value) { +// original.addIntHeader(name, value); +// } +// +// @Override +// public void setStatus(int sc) { +// original.setStatus(sc); +// } +// +// @SuppressWarnings("deprecation") +// @Override +// public void setStatus(int sc, String sm) { +// original.setStatus(sc, sm); +// } +// +// @Override +// public String getHeader(String arg0) { +// return original.getHeader(arg0); +// } +// +// @Override +// public Collection getHeaderNames() { +// return original.getHeaderNames(); +// } +// +// @Override +// public Collection getHeaders(String arg0) { +// return original.getHeaders(arg0); +// } +// +// @Override +// public int getStatus() { +// return original.getStatus(); +// } +// +// } +//} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/JWTConstant.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/JWTConstant.java new file mode 100644 index 0000000..2994c47 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/JWTConstant.java @@ -0,0 +1,22 @@ +package com.realnet.config; + +public class JWTConstant { + + // private static final long VALIDITY_TIME_MS = 10 * 24 * 60 * 60 * 1000;// 10 + // days Validity + public static final long VALIDITY_TIME_MS = 2 * 60 * 60 * 1000; // 2 hours validity + + public static final long ACCESS_TOKEN_VALIDITY_SECONDS = 30 * 24 * 60 * 60; + public static final String SECRET_KEY = "realnet"; + public static final String TOKEN_PREFIX = "Bearer "; + public static final String HEADER_STRING = "Authorization"; + public static final String AUTHORITIES_KEY = "scopes"; + + + public static final String JWT_ILLEGAL_ARGUMENT_MESSAGE = "An error occured during getting username from token"; + public static final String JWT_EXPIRED_MESSAGE = "The token is expired and not valid anymore"; + public static final String JWT_SIGNATURE_MESSAGE = "Authentication Failed. Username or Password not valid."; + public static final String UNAUTHORIZED_MESSAGE = "You are not authorized to view the resource"; + public static final String FORBIDDEN_MESSAGE = "You don't have the right to access to this resource"; + public static final String INVALID_DATA_MESSAGE = "One or many parameters in the request's body are invalid"; +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/JwtAuthenticationEntryPoint.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/JwtAuthenticationEntryPoint.java new file mode 100644 index 0000000..12b4ddb --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/JwtAuthenticationEntryPoint.java @@ -0,0 +1,37 @@ +package com.realnet.config; + +import java.io.IOException; +import java.io.Serializable; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.security.core.AuthenticationException; +import org.springframework.security.web.AuthenticationEntryPoint; +import org.springframework.stereotype.Component; + +import com.realnet.logging.NoLogging; +import com.realnet.logging.SecurityNoLogging; + +@Component +public class JwtAuthenticationEntryPoint implements AuthenticationEntryPoint, Serializable { + + /** + * + */ + private static final long serialVersionUID = 1L; + + /* + * This is invoked when user tries to access a secured REST resource without supplying any credentials + * We should just send a 401 Unauthorized response because there is no 'login page' to redirect to + * Here you can place any message you want + * */ + @NoLogging + @Override + public void commence(HttpServletRequest request, HttpServletResponse response, + AuthenticationException authException) throws IOException { + + //response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Unauthorized"); + response.sendError(HttpServletResponse.SC_UNAUTHORIZED, authException.getMessage()); + } +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/JwtAuthenticationFilter.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/JwtAuthenticationFilter.java new file mode 100644 index 0000000..8dcf882 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/JwtAuthenticationFilter.java @@ -0,0 +1,173 @@ +package com.realnet.config; + +import java.io.IOException; + +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpMethod; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.web.authentication.WebAuthenticationDetailsSource; +import org.springframework.web.filter.OncePerRequestFilter; + +import com.realnet.logging.NoLogging; +import com.realnet.session.Service.TokenBlacklistService; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.service1.AppUserServiceImpl; + +import io.jsonwebtoken.ExpiredJwtException; +import io.jsonwebtoken.SignatureException; + +public class JwtAuthenticationFilter extends OncePerRequestFilter { + + private static final Logger logger = LoggerFactory.getLogger(JwtAuthenticationFilter.class); + + @Autowired + private UserDetailsService userDetailsService; + + @Autowired + private TokenProvider jwtTokenUtil; + + protected void configure(HttpSecurity http) throws Exception { + http.csrf().disable().authorizeRequests().antMatchers(HttpMethod.OPTIONS, "/path/to/allow").permitAll()// allow + // CORS + // option + // calls + .antMatchers("/resources/**").permitAll().anyRequest().authenticated().and().formLogin().and() + .httpBasic(); + } + +// // prevoius it also working + +// @NoLogging +// @Override +// protected void doFilterInternal(HttpServletRequest req, HttpServletResponse res, FilterChain chain) +// throws IOException, ServletException { +// String header = req.getHeader(JWTConstant.HEADER_STRING); +// //System.out.println("HEADER => {}" + header); +// String username = null; +// String email = null; +// String authToken = null; +// if (header != null && header.startsWith(JWTConstant.TOKEN_PREFIX)) { +// authToken = header.replace(JWTConstant.TOKEN_PREFIX, ""); +// try { +// username = jwtTokenUtil.getUsernameFromToken(authToken); +// //logger.info("getting username from token : {}" + username); +// email = jwtTokenUtil.getEmailFromToken(authToken); +// //logger.info("getting email from token : {}" + email); +// //System.out.println("email => {}" + email); +// +// } catch (IllegalArgumentException e) { +// logger.error("an error occured during getting username from token", e); +// } catch (ExpiredJwtException e) { +// logger.warn("the token is expired and not valid anymore", e); +// } catch (SignatureException e) { +// logger.error("Authentication Failed. Username or Password not valid."); +// } +// } else { +// logger.warn("couldn't find bearer string, will ignore the header"); +// } +// //if (username != null && SecurityContextHolder.getContext().getAuthentication() == null) { +// if (email != null && SecurityContextHolder.getContext().getAuthentication() == null) { +// +// UserDetails userDetails = userDetailsService.loadUserByUsername(email); +// +// if (jwtTokenUtil.validateToken(authToken, userDetails)) { +// UsernamePasswordAuthenticationToken authentication = jwtTokenUtil.getAuthentication(authToken, +// SecurityContextHolder.getContext().getAuthentication(), userDetails); +// // UsernamePasswordAuthenticationToken authentication = new +// // UsernamePasswordAuthenticationToken(userDetails, null, Arrays.asList(new +// // SimpleGrantedAuthority("ROLE_ADMIN"))); +// authentication.setDetails(new WebAuthenticationDetailsSource().buildDetails(req)); +// logger.debug("authenticated user " + email + ", setting security context"); +// SecurityContextHolder.getContext().setAuthentication(authentication); +// } +// } +// chain.doFilter(req, res); +// } + +// by gk, for token expire + + @Autowired + private AppUserServiceImpl userService; + + @Autowired + private TokenBlacklistService tokenBlacklistService; + + @NoLogging + @Override + protected void doFilterInternal(HttpServletRequest req, HttpServletResponse res, FilterChain chain) + throws IOException, ServletException { + + String header = req.getHeader(JWTConstant.HEADER_STRING); // Get the JWT token from the header + String authToken = null; + String email = null; + + if (header != null && header.startsWith(JWTConstant.TOKEN_PREFIX)) { + authToken = header.replace(JWTConstant.TOKEN_PREFIX, ""); + + try { + email = jwtTokenUtil.getEmailFromToken(authToken); // Extract the email from the token + } catch (IllegalArgumentException e) { + logger.error("An error occurred while getting the username from the token", e); + } catch (ExpiredJwtException e) { + logger.warn("The token is expired and not valid anymore", e); + } catch (SignatureException e) { + logger.error("Authentication Failed. Invalid token signature."); + } + } else { + logger.warn("Couldn't find bearer string, ignoring the header."); + } + + // Continue with email if it's not null and no authentication exists in the + // context + + Authentication authentication2 = SecurityContextHolder.getContext().getAuthentication(); + if (email != null && authentication2 == null) { + + // Step 1: Check if the token is blacklisted + boolean tokenBlacklisted = tokenBlacklistService.isTokenBlacklisted(authToken); + if (tokenBlacklisted) { + logger.warn("Token is blacklisted: " + authToken); + res.setStatus(HttpServletResponse.SC_UNAUTHORIZED); // Respond with unauthorized + res.getWriter().write("Token has been blacklisted"); + return; // Do not continue the filter chain + } + + // Step 2: Check if the user is deactivated + AppUser user = userService.findUserByEmail(email); // Assuming you have a method to find user by email + if (user == null || !user.isActive()) { // Check if the user is deactivated + logger.warn("User is deactivated or not found: " + email); + res.setStatus(HttpServletResponse.SC_UNAUTHORIZED); // Respond with unauthorized + res.getWriter().write("User is deactivated or not found"); + return; // Do not continue the filter chain + } + + // Step 3: Proceed with user validation if not blacklisted or deactivated + UserDetails userDetails = userDetailsService.loadUserByUsername(email); + + if (jwtTokenUtil.validateToken(authToken, userDetails)) { + // Create an authentication token + UsernamePasswordAuthenticationToken authentication = jwtTokenUtil.getAuthentication(authToken, + SecurityContextHolder.getContext().getAuthentication(), userDetails); + + authentication.setDetails(new WebAuthenticationDetailsSource().buildDetails(req)); + logger.debug("Authenticated user " + email + ", setting security context"); + SecurityContextHolder.getContext().setAuthentication(authentication); + } + } + + // Continue with the filter chain + chain.doFilter(req, res); + } +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/MessageSourceConfig.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/MessageSourceConfig.java new file mode 100644 index 0000000..ced005e --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/MessageSourceConfig.java @@ -0,0 +1,32 @@ +package com.realnet.config; + +import org.springframework.context.MessageSource; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.support.ReloadableResourceBundleMessageSource; +import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean; + +import com.realnet.logging.NoLogging; + +@Configuration +public class MessageSourceConfig { + + @NoLogging + @Bean + public MessageSource messageSource() { + ReloadableResourceBundleMessageSource messageSource + = new ReloadableResourceBundleMessageSource(); + + messageSource.setBasename("classpath:messages"); + messageSource.setDefaultEncoding("UTF-8"); + return messageSource; + } + @NoLogging + @Bean + public LocalValidatorFactoryBean getValidator() { + LocalValidatorFactoryBean bean = new LocalValidatorFactoryBean(); + bean.setValidationMessageSource(messageSource()); + return bean; + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/MyCommandLineRunner.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/MyCommandLineRunner.java new file mode 100644 index 0000000..b939ce6 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/MyCommandLineRunner.java @@ -0,0 +1,49 @@ +package com.realnet.config; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.CommandLineRunner; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Component; +import org.springframework.web.client.RestTemplate; + +import com.realnet.Builders.Services.BuilderService; + +@Component +public class MyCommandLineRunner implements CommandLineRunner { + + @Autowired + private BuilderService builderService; + + @Override + public void run(String... args) throws Exception { + + System.out.println("call command line runner..."); + if (args.length == 0) { + System.err.println("Usage: java -jar your-app.jar proj_id profile_id addString \n"); + builderService.callotherService(); + + System.out.println("call other service"); + + return; + } + if (args.length == 1) { + System.err.println("Usage: java -jar your-app.jar proj_id profile_id addString \n"); + builderService.callotherService(); + + System.out.println("call other service"); + + return; + } + + } + + public ResponseEntity GET(String get) { + RestTemplate restTemplate = new RestTemplate(); + + ResponseEntity u = restTemplate.getForEntity(get, Object.class); + + return u; + + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/SecurityConfig.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/SecurityConfig.java new file mode 100644 index 0000000..3b3d128 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/SecurityConfig.java @@ -0,0 +1,165 @@ +package com.realnet.config; + +import java.util.Arrays; +import java.util.Collections; +import java.util.concurrent.TimeUnit; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.CacheManager; +import org.springframework.cache.caffeine.CaffeineCacheManager; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.HttpMethod; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.builders.WebSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.config.http.SessionCreationPolicy; +import org.springframework.security.core.session.SessionRegistry; +import org.springframework.security.core.session.SessionRegistryImpl; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.web.access.channel.ChannelProcessingFilter; +import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; +import org.springframework.web.cors.CorsConfiguration; +import org.springframework.web.cors.CorsConfigurationSource; +import org.springframework.web.cors.UrlBasedCorsConfigurationSource; + +import com.github.benmanes.caffeine.cache.Caffeine; +import com.realnet.logging.NoLogging; + +/* + * @EnableGlobalMethodSecurity annotation is what enables the @PreAuthorize annotation. + * */ +@Configuration +@EnableWebSecurity +@EnableGlobalMethodSecurity(prePostEnabled = true) + +public class SecurityConfig extends WebSecurityConfigurerAdapter { + + @Autowired + private UserDetailsService userDetailsService; + + @Autowired + private JwtAuthenticationEntryPoint unauthorizedHandler; + + ///// + + public void configure12(WebSecurity web) throws Exception { + web.ignoring().antMatchers(HttpMethod.OPTIONS, "/**"); + } + + @Bean + protected CorsConfigurationSource corsConfigurationSource() { + final CorsConfiguration configuration = new CorsConfiguration(); + + configuration.setAllowedOrigins(Collections.singletonList("http://localhost:3000")); + configuration.setAllowedMethods(Arrays.asList("HEAD", "GET", "POST", "PUT", "DELETE", "PATCH")); + + // NOTE: setAllowCredentials(true) is important, + // otherwise, the value of the 'Access-Control-Allow-Origin' header in the + // response + // must not be the wildcard '*' when the request's credentials mode is + // 'include'. + configuration.setAllowCredentials(true); + + // NOTE: setAllowedHeaders is important! + // Without it, OPTIONS preflight request will fail with 403 Invalid CORS request + configuration.setAllowedHeaders( + Arrays.asList("Authorization", "Accept", "Cache-Control", "Content-Type", "Origin", "ajax", // <-- This + // is needed + // for + // jQuery's + // ajax + // request. + "x-csrf-token", "x-requested-with")); + + final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); + source.registerCorsConfiguration("/**", configuration); + return source; + } + + protected void configure123(HttpSecurity http) throws Exception { + http.csrf().disable().authorizeRequests().antMatchers("/resources/**").permitAll().anyRequest().authenticated() + .and().formLogin().and().httpBasic().and().oauth2Login().and().cors(); + + } + + @NoLogging + @Override + @Bean + public AuthenticationManager authenticationManagerBean() throws Exception { + return super.authenticationManagerBean(); + } + + @NoLogging + @Autowired + public void globalUserDetails(AuthenticationManagerBuilder auth) throws Exception { + auth.userDetailsService(userDetailsService).passwordEncoder(encoder()); + } + + @NoLogging + @Bean + public JwtAuthenticationFilter authenticationTokenFilterBean() throws Exception { + return new JwtAuthenticationFilter(); + } + + @NoLogging + @Override + public void configure(WebSecurity web) throws Exception { + // Filters will not get executed for the resources + web.ignoring().antMatchers("/", "/resources/**", "/static/**", "/public/**", "/webui/**", "/h2-console/**", + "/configuration/**", "/swagger-ui/**", "/swagger-resources/**", "/webjars/**", "/api-docs", + "/api-docs/**", "/v2/api-docs/**", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/**/*.png", + "/**/*.jpg", "/**/*.gif", "/**/*.svg", "/**/*.ico", "/**/*.ttf", "/**/*.woff", "/**/*.otf"); + } + +// } + + @NoLogging + @Override + protected void configure(HttpSecurity http) throws Exception { + http.csrf(csrf -> csrf.disable()) + // Add CORS Filter //http.cors().and().csrf().disable(). + .addFilterBefore(new CorsFilter(), ChannelProcessingFilter.class) + .authorizeRequests(requests -> requests.antMatchers("/token/**").permitAll().antMatchers("/log2/**") + .permitAll().antMatchers("/api/**").permitAll() +// .antMatchers("/SqlworkbenchSqlcont/**").hasRole("ADMIN") + .anyRequest().authenticated()) + .exceptionHandling(handling -> handling.authenticationEntryPoint(unauthorizedHandler)) + .sessionManagement(management -> management.sessionCreationPolicy(SessionCreationPolicy.ALWAYS) // Ensure + // sessions + // are + // always created + .maximumSessions(-1).sessionRegistry(sessionRegistry())); + http.addFilterBefore(authenticationTokenFilterBean(), UsernamePasswordAuthenticationFilter.class); + + } + + @Bean + public SessionRegistry sessionRegistry() { + return new SessionRegistryImpl(); // This tracks active sessions + } + + @NoLogging + @Bean + public BCryptPasswordEncoder encoder() { + return new BCryptPasswordEncoder(); + } + + @Bean + public Caffeine caffeineConfig() { + return Caffeine.newBuilder().expireAfterWrite(60, TimeUnit.MINUTES); + } + + @Bean + public CacheManager cacheManager(Caffeine caffeine) { + CaffeineCacheManager caffeineCacheManager = new CaffeineCacheManager(); + caffeineCacheManager.setCaffeine(caffeine); + return caffeineCacheManager; + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/SwaggerConfig.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/SwaggerConfig.java new file mode 100644 index 0000000..fd55a7e --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/SwaggerConfig.java @@ -0,0 +1,134 @@ +package com.realnet.config; + +import static com.google.common.collect.Lists.newArrayList; + +import java.util.Arrays; +import java.util.List; + +import org.joda.time.LocalDate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RequestMethod; + +import com.fasterxml.classmate.TypeResolver; +import com.realnet.logging.NoLogging; + +import springfox.documentation.annotations.ApiIgnore; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.ResponseMessageBuilder; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.service.ApiKey; +import springfox.documentation.service.AuthorizationScope; +import springfox.documentation.service.SecurityReference; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spi.service.contexts.SecurityContext; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2; +import com.google.common.base.Predicate; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + + +@Configuration +@EnableSwagger2 +public class SwaggerConfig { + + @Autowired + private TypeResolver typeResolver; + + public static final String AUTHORIZATION_HEADER = "Authorization"; + public static final String DEFAULT_INCLUDE_PATTERN = "/api/.*"; + + @NoLogging + private ApiKey apiKey() { + // return new ApiKey("Authorization", "", "header"); // <<< === Create a Header + // return new ApiKey("JWT", "Authorization", "header"); + // (We are createing header named "Authorization" here) + return new ApiKey("JWT", AUTHORIZATION_HEADER, "header"); + + } + + // This path will be called when swagger is loaded first time to get a token + /* + * @Bean public UiConfiguration uiConfig() { return new + * UiConfiguration("session"); } + */ + + @NoLogging + private SecurityContext securityContext() { + return SecurityContext.builder().securityReferences(defaultAuth()).build(); + } + + @NoLogging + private List defaultAuth() { + AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything"); + AuthorizationScope[] authorizationScopes = new AuthorizationScope[1]; + authorizationScopes[0] = authorizationScope; + return Arrays.asList(new SecurityReference("JWT", authorizationScopes)); + } + + @NoLogging + ApiInfo realItApiInfo() { + return new ApiInfoBuilder().title("RealIt APIs").version("1.0.0").build(); + } + + @NoLogging +// @Bean +// public Docket realItCustomeImplementation() { +// return new Docket(DocumentationType.SWAGGER_2).groupName("realit").apiInfo(realItApiInfo()) +// .securityContexts(Arrays.asList(securityContext())).securitySchemes(newArrayList(apiKey())).select() +// .paths(PathSelectors.any()).apis(RequestHandlerSelectors.basePackage("com.realnet")).build() +// .pathMapping("/").useDefaultResponseMessages(false) +// .globalResponseMessage(RequestMethod.GET, +// newArrayList(new ResponseMessageBuilder().code(500).message("Internal Server Error").build(), +// // .responseModel(new ModelRef("Error")).build(), +// new ResponseMessageBuilder().code(403).message("Forbidden!").build(), +// new ResponseMessageBuilder().code(400).message("Bad Request").build() +// // .responseModel(new ModelRef("Error")).build() +// )).directModelSubstitute(LocalDate.class, String.class) +// .genericModelSubstitutes(ResponseEntity.class); +// } + + + // Replace the apis line in your realItCustomeImplementation() bean with the following + + +@Bean +public Docket realItCustomeImplementation() { + return new Docket(DocumentationType.SWAGGER_2) + .groupName("realit") + .apiInfo(realItApiInfo()) + .securityContexts(Arrays.asList(securityContext())) + .securitySchemes(newArrayList(apiKey())) + .select() + .apis(new Predicate() { // Guava Predicate + @Override + public boolean apply(springfox.documentation.RequestHandler input) { + // Exclude if @ApiIgnore annotation is present on class or method + Class declaringClass = input.declaringClass(); + return !(declaringClass.isAnnotationPresent(ApiIgnore.class) || + input.isAnnotatedWith(ApiIgnore.class)); + } + }) + .paths(PathSelectors.any()) + .build() + .pathMapping("/") + .useDefaultResponseMessages(false) + .globalResponseMessage(RequestMethod.GET, + newArrayList( + new ResponseMessageBuilder().code(500).message("Internal Server Error").build(), + new ResponseMessageBuilder().code(403).message("Forbidden!").build(), + new ResponseMessageBuilder().code(400).message("Bad Request").build())) + .directModelSubstitute(LocalDate.class, String.class) + .genericModelSubstitutes(ResponseEntity.class); +} + + + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/TokenProvider.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/TokenProvider.java new file mode 100644 index 0000000..9611a29 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/TokenProvider.java @@ -0,0 +1,133 @@ +package com.realnet.config; + +import java.io.Serializable; +import java.util.Arrays; +import java.util.Collection; +import java.util.Date; +import java.util.List; +import java.util.function.Function; +import java.util.stream.Collectors; + +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.authority.SimpleGrantedAuthority; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.stereotype.Component; + +import com.realnet.logging.NoLogging; + +import io.jsonwebtoken.Claims; +import io.jsonwebtoken.Jws; +import io.jsonwebtoken.JwtParser; +import io.jsonwebtoken.Jwts; +import io.jsonwebtoken.SignatureAlgorithm; + +@Component +public class TokenProvider implements Serializable { +// private static final Logger logger = LoggerFactory.getLogger(TokenProvider.class); + + /** + * + */ + private static final long serialVersionUID = 1L; + + // get subject (sub) from token + @NoLogging + public String getUsernameFromToken(String token) { + return getClaimFromToken(token, Claims::getSubject); + } + + @NoLogging + public String getEmailFromToken(String token) { + String email = null; + try { + Claims claims = getAllClaimsFromToken(token); + email = claims.getSubject(); + } catch (Exception e) { + email = null; + } + // logger.info("email = {} ", email); + return email; + } + + @NoLogging + public List getRolesFromToken(String token) { + List roles = null; + try { + Claims claims = getAllClaimsFromToken(token); + roles = Arrays.asList((String) claims.get(JWTConstant.AUTHORITIES_KEY)); + // logger.info("roles = {} ", roles); + } catch (Exception e) { + roles = null; + } + return roles; + } + + // get expiration (exp) from token + public Date getExpirationDateFromToken(String token) { + return getClaimFromToken(token, Claims::getExpiration); + } + + @NoLogging + public T getClaimFromToken(String token, Function claimsResolver) { + final Claims claims = getAllClaimsFromToken(token); + return claimsResolver.apply(claims); + } + + @NoLogging + private Claims getAllClaimsFromToken(String token) { + return Jwts.parser().setSigningKey(JWTConstant.SECRET_KEY).parseClaimsJws(token).getBody(); + } + + @NoLogging + private Boolean isTokenExpired(String token) { + final Date expiration = getExpirationDateFromToken(token); + return expiration.before(new Date()); + } + + @NoLogging + public String generateToken(Authentication authentication) { + final String authorities = authentication.getAuthorities().stream().map(GrantedAuthority::getAuthority) + .collect(Collectors.joining(",")); + // logger.info("authorities = {} ", authorities); + final List AuthorityList = authentication.getAuthorities().stream().map(GrantedAuthority::getAuthority) + .collect(Collectors.toList()); + //logger.info("authentication.getName() = {} ", authentication.getName()); + //logger.info("Authority List = {}", AuthorityList); + return Jwts.builder().setSubject(authentication.getName()) // USER NAME OR EMAIL + .claim(JWTConstant.AUTHORITIES_KEY, authorities) // ROLES + .signWith(SignatureAlgorithm.HS256, JWTConstant.SECRET_KEY).setIssuedAt(new Date(System.currentTimeMillis())) + .setExpiration(new Date(System.currentTimeMillis() + JWTConstant.ACCESS_TOKEN_VALIDITY_SECONDS * 1000)).compact(); + } + + @NoLogging + public Boolean validateToken(String token, UserDetails userDetails) { + // CustomUserDetails user = (CustomUserDetails) userDetails; + // System.out.println("validateToken -> jwtUser : " + user); + // return (username.equals(user.getUsername()) && !isTokenExpired(token)); + + // final String username = getUsernameFromToken(token); + final String email = getEmailFromToken(token); + return (email.equals(userDetails.getUsername()) && !isTokenExpired(token)); + + } + + @NoLogging + UsernamePasswordAuthenticationToken getAuthentication(final String token, final Authentication existingAuth, + final UserDetails userDetails) { + + final JwtParser jwtParser = Jwts.parser().setSigningKey(JWTConstant.SECRET_KEY); + + final Jws claimsJws = jwtParser.parseClaimsJws(token); + + final Claims claims = claimsJws.getBody(); + + final Collection authorities = Arrays + .stream(claims.get(JWTConstant.AUTHORITIES_KEY).toString().split(",")).map(SimpleGrantedAuthority::new) + .collect(Collectors.toList()); + + return new UsernamePasswordAuthenticationToken(userDetails, "", authorities); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/sqlite/SQLiteDialect.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/sqlite/SQLiteDialect.java new file mode 100644 index 0000000..e5e2df8 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/sqlite/SQLiteDialect.java @@ -0,0 +1,35 @@ +//package com.realnet.config.sqlite; +// +//import java.sql.Types; +//import org.hibernate.dialect.Dialect; +//import org.hibernate.dialect.identity.IdentityColumnSupport; +// +//public class SQLiteDialect extends Dialect { +// +// public SQLiteDialect() { +// registerColumnType(Types.INTEGER, "integer"); +// registerColumnType(Types.VARCHAR, "text"); +// registerColumnType(Types.BLOB, "blob"); +// registerColumnType(Types.REAL, "real"); +// } +// +// @Override +// public IdentityColumnSupport getIdentityColumnSupport() { +// return new SQLiteIdentityColumnSupport(); +// } +// +// @Override +// public boolean hasAlterTable() { +// return false; +// } +// +// @Override +// public boolean dropConstraints() { +// return false; +// } +// @Override +// public boolean supportsUnionAll() { +// return true; +// } +// +//} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/sqlite/SQLiteIdentityColumnSupport.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/sqlite/SQLiteIdentityColumnSupport.java new file mode 100644 index 0000000..0af923e --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/sqlite/SQLiteIdentityColumnSupport.java @@ -0,0 +1,22 @@ +//package com.realnet.config.sqlite; +// +//import org.hibernate.dialect.identity.IdentityColumnSupportImpl; +// +//public class SQLiteIdentityColumnSupport extends IdentityColumnSupportImpl { +// +// @Override +// public boolean supportsIdentityColumns() { +// return true; +// } +// +// @Override +// public String getIdentitySelectString(String table, String column, int type) { +// return "select last_insert_rowid()"; +// } +// +// @Override +// public String getIdentityColumnString(int type) { +// // SQLite mein sirf "integer" + auto increment hota hai +// return "integer"; +// } +//} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/sqlite/SQLiteUtil.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/sqlite/SQLiteUtil.java new file mode 100644 index 0000000..10b7ac2 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/config/sqlite/SQLiteUtil.java @@ -0,0 +1,15 @@ +//package com.realnet.config.sqlite; +// +//import java.sql.Connection; +//import java.sql.DriverManager; +//import java.sql.SQLException; +// +//public class SQLiteUtil { +// +// private static final String DB_FILE = "realtest1.db"; // SQLite file +// +// public static Connection getConnection() throws SQLException { +// String url = "jdbc:sqlite:" + DB_FILE; +// return DriverManager.getConnection(url); +// } +//} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/dashboard_builder_authsec/Controllers/DashboardController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/dashboard_builder_authsec/Controllers/DashboardController.java new file mode 100644 index 0000000..08fab8f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/dashboard_builder_authsec/Controllers/DashboardController.java @@ -0,0 +1,63 @@ +package com.realnet.dashboard_builder_authsec.Controllers; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.dashboard_builder_authsec.Entity.Dashboard; +import com.realnet.dashboard_builder_authsec.Services.DashboardService; + +@RequestMapping(value = "/Dashboard") +// @CrossOrigin("*") +@RestController +public class DashboardController { + @Autowired + private DashboardService Service; + + @Value("${projectPath}") + private String projectPath; + + public final String UPLOAD_DIREC = "/Files"; + + @PostMapping("/Dashboard") + public Dashboard Savedata(@RequestBody Dashboard data) { + Dashboard save = Service.Savedata(data); + + System.out.println(save); + return save; + } + + @PutMapping("/Dashboard/{id}") + public Dashboard update(@RequestBody Dashboard data, @PathVariable Integer id) { + Dashboard update = Service.update(data, id); + return update; + } + + @GetMapping("/Dashboard") + public List getdetails() { + List get = Service.getdetails(); + return get; + } + + @GetMapping("/Dashboard/{id}") + public Dashboard getdetailsbyId(@PathVariable Integer id) { + Dashboard get = Service.getdetailsbyId(id); + return get; + } + + @DeleteMapping("/Dashboard/{id}") + public void delete_by_id(@PathVariable Integer id) { + Service.delete_by_id(id); + + } + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/dashboard_builder_authsec/Entity/Dashboard.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/dashboard_builder_authsec/Entity/Dashboard.java new file mode 100644 index 0000000..26c9902 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/dashboard_builder_authsec/Entity/Dashboard.java @@ -0,0 +1,32 @@ +package com.realnet.dashboard_builder_authsec.Entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +import com.realnet.WhoColumn.Entity.Extension; + +import lombok.Data; + +@Entity +@Data +public class Dashboard extends Extension { + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Integer id; + + private String name; + + @Column(length = 5000) + private String model; + + private boolean isdashboard; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/dashboard_builder_authsec/Repository/DashboardRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/dashboard_builder_authsec/Repository/DashboardRepository.java new file mode 100644 index 0000000..ad816bc --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/dashboard_builder_authsec/Repository/DashboardRepository.java @@ -0,0 +1,13 @@ +package com.realnet.dashboard_builder_authsec.Repository; + + +import org.springframework.data.jpa.repository.JpaRepository; + +import org.springframework.stereotype.Repository; + + +import com.realnet.dashboard_builder_authsec.Entity.Dashboard; + +@Repository +public interface DashboardRepository extends JpaRepository { +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/dashboard_builder_authsec/Services/DashboardService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/dashboard_builder_authsec/Services/DashboardService.java new file mode 100644 index 0000000..0a45ca7 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/dashboard_builder_authsec/Services/DashboardService.java @@ -0,0 +1,54 @@ +package com.realnet.dashboard_builder_authsec.Services; +import com.realnet.dashboard_builder_authsec.Repository.DashboardRepository; +import com.realnet.dashboard_builder_authsec.Entity.Dashboard;import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import com.realnet.SequenceGenerator.Service.SequenceService; + import org.springframework.stereotype.Service; + +@Service + public class DashboardService { +@Autowired +private DashboardRepository Repository; + + + + + + +public Dashboard Savedata(Dashboard data) { + + + + + + + return Repository.save(data); + } + + +public List getdetails() { + return (List) Repository.findAll(); + } + + +public Dashboard getdetailsbyId(Integer id) { + return Repository.findById(id).get(); + } + + + public void delete_by_id(Integer id) { + Repository.deleteById(id); +} + + +public Dashboard update(Dashboard data,Integer id) { + Dashboard old = Repository.findById(id).get(); +old.setName(data.getName()); + +old.setModel(data.getModel()); + +old.setIsdashboard (data.isIsdashboard()); + +final Dashboard test = Repository.save(old); + return test;}} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/event_management/Controllers/Event_ManagementController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/event_management/Controllers/Event_ManagementController.java new file mode 100644 index 0000000..4c2689d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/event_management/Controllers/Event_ManagementController.java @@ -0,0 +1,100 @@ +package com.realnet.event_management.Controllers; +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; + import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import com.fasterxml.jackson.core.JsonProcessingException; +import org.springframework.web.bind.annotation.CrossOrigin; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.realnet.config.EmailService; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.service1.AppUserServiceImpl; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.beans.factory.annotation.*; +import com.realnet.event_management.Entity.Event_Management; +import com.realnet.event_management.Services.Event_ManagementService ; +@RequestMapping(value = "/Event_Management") + @CrossOrigin("*") +@RestController +public class Event_ManagementController { + @Autowired + private Event_ManagementService Service; + +@Value("${projectPath}") + private String projectPath; + + + + + + + + + + + + + + + + @PostMapping("/Event_Management") + public Event_Management Savedata(@RequestBody Event_Management data) { + Event_Management save = Service.Savedata(data) ; + + + + + + + + + + + + + + + return save; + } +@PutMapping("/Event_Management/{id}") + public Event_Management update(@RequestBody Event_Management data,@PathVariable Integer id ) { + Event_Management update = Service.update(data,id); + return update; + } +// get all with pagination + @GetMapping("/Event_Management/getall/page") + public Page getall(@RequestParam(value = "page", required = false) Integer page, + @RequestParam(value = "size", required = false) Integer size) { + Pageable paging = PageRequest.of(page, size); + Page get = Service.getAllWithPagination(paging); + + return get; + + } + @GetMapping("/Event_Management") + public List getdetails() { + List get = Service.getdetails(); + return get; +} +// get all without authentication + + @GetMapping("/token/Event_Management") + public List getallwioutsec() { + List get = Service.getdetails(); + return get; +} +@GetMapping("/Event_Management/{id}") + public Event_Management getdetailsbyId(@PathVariable Integer id ) { + Event_Management get = Service.getdetailsbyId(id); + return get; + } +@DeleteMapping("/Event_Management/{id}") + public void delete_by_id(@PathVariable Integer id ) { + Service.delete_by_id(id); + + } + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/event_management/Entity/Event_Management.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/event_management/Entity/Event_Management.java new file mode 100644 index 0000000..f9f94e2 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/event_management/Entity/Event_Management.java @@ -0,0 +1,40 @@ +package com.realnet.event_management.Entity; + import lombok.*; + +import javax.persistence.*; + +import com.realnet.WhoColumn.Entity.Extension; + +import java.time.LocalDateTime; + import java.util.*; + + @Entity + @Data + public class Event_Management extends Extension { + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Integer id; + +private String practice_match; + +private String admin_name; + +private String ground; + +private String datetime; + +private String name; + + +@Column(length = 2000) +private String description; + +private boolean active; + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/event_management/Repository/Event_ManagementRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/event_management/Repository/Event_ManagementRepository.java new file mode 100644 index 0000000..2a9ed32 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/event_management/Repository/Event_ManagementRepository.java @@ -0,0 +1,13 @@ +package com.realnet.event_management.Repository; + + +import org.springframework.data.jpa.repository.JpaRepository; + +import org.springframework.stereotype.Repository; + + +import com.realnet.event_management.Entity.Event_Management; + +@Repository +public interface Event_ManagementRepository extends JpaRepository { +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/event_management/Services/Event_ManagementService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/event_management/Services/Event_ManagementService.java new file mode 100644 index 0000000..3af3120 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/event_management/Services/Event_ManagementService.java @@ -0,0 +1,88 @@ +package com.realnet.event_management.Services; +import com.realnet.event_management.Repository.Event_ManagementRepository; +import com.realnet.event_management.Entity.Event_Management;import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; + +import com.realnet.Notification.Services.NotificationEntityService; +import com.realnet.SequenceGenerator.Service.SequenceService; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + import org.springframework.stereotype.Service; + +@Service + public class Event_ManagementService { +@Autowired +private Event_ManagementRepository Repository; + + + + + + + + + + + + + + +public Event_Management Savedata(Event_Management data) { + + + + + + + + + + + + + + +Event_Management save = Repository.save(data); + return save; + } + + +// get all with pagination + public Page getAllWithPagination(Pageable page) { + return Repository.findAll(page); + } +public List getdetails() { + return (List) Repository.findAll(); + } + + +public Event_Management getdetailsbyId(Integer id) { + return Repository.findById(id).get(); + } + + + public void delete_by_id(Integer id) { + Repository.deleteById(id); +} + + +public Event_Management update(Event_Management data,Integer id) { + Event_Management old = Repository.findById(id).get(); +old.setPractice_match(data.getPractice_match()); + +old.setAdmin_name(data.getAdmin_name()); + +old.setGround(data.getGround()); + +old.setDatetime(data.getDatetime()); + +old.setName(data.getName()); + +old.setDescription(data.getDescription()); + +old.setActive (data.isActive()); + +final Event_Management test = Repository.save(old); + return test;}} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/exceptions/GlobalExceptionHandler.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/exceptions/GlobalExceptionHandler.java new file mode 100644 index 0000000..df6a1fe --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/exceptions/GlobalExceptionHandler.java @@ -0,0 +1,69 @@ +package com.realnet.exceptions; + +import java.nio.file.AccessDeniedException; + +import org.springframework.dao.DataIntegrityViolationException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.client.ResourceAccessException; + +import com.realnet.exceptions.OperationResponse.ResponseStatusEnum; + +import lombok.extern.slf4j.Slf4j; + +/* +@ControllerAdvice tells your spring application that this class will do the exception handling for your application. +@RestController will make it a controller and let this class render the response. +Use @ExceptionHandler annotation to define the class of Exception it will catch. (A Base class will catch all the Inherited and extended classes) +*/ +@Slf4j +@ControllerAdvice +@RestController +public class GlobalExceptionHandler { + @ExceptionHandler(value = DataIntegrityViolationException.class) + public OperationResponse handleBaseException(DataIntegrityViolationException e) { + OperationResponse resp = new OperationResponse(); + resp.setOperationStatus(ResponseStatusEnum.ERROR); + resp.setOperationMessage(e.getRootCause().getMessage()); + log.info("Global Exception Handler : " + resp.toString()); + return resp; + } + + @ExceptionHandler(value = AccessDeniedException.class) + public OperationResponse handleAccessDeniedException(AccessDeniedException e) { + OperationResponse resp = new OperationResponse(); + resp.setOperationStatus(ResponseStatusEnum.NO_ACCESS); + resp.setOperationMessage("Your Access is Denied Plz contact Admin " + e.getLocalizedMessage()); + log.info("Global Exception Handler : " + resp.toString()); + return resp; + } + +// @ExceptionHandler(value = ConnectException.class) +// private OperationResponse handleconnectionrefusedexception(ConnectException e) { +// OperationResponse resp = new OperationResponse(); +// resp.setOperationMessage("connection refused please start server"); +// resp.setOperationStatus(ResponseStatusEnum.WARNING); +// return resp; +// +// } + + @ExceptionHandler(value = ResourceAccessException.class) + private OperationResponse handleconnectionrefusedexception(ResourceAccessException e) { + OperationResponse resp = new OperationResponse(); + resp.setOperationMessage("connection refused please start server " + "\n " + e.getLocalizedMessage()); + resp.setOperationStatus(ResponseStatusEnum.WARNING); + return resp; + + } + + @ExceptionHandler(value = IllegalArgumentException.class) + private OperationResponse illegalargsException(IllegalArgumentException e) { + OperationResponse resp = new OperationResponse(); + resp.setOperationMessage(e.getLocalizedMessage()); + resp.setOperationStatus(ResponseStatusEnum.WARNING); + return resp; + + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/exceptions/InvalidUserDataException.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/exceptions/InvalidUserDataException.java new file mode 100644 index 0000000..6080b83 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/exceptions/InvalidUserDataException.java @@ -0,0 +1,12 @@ +package com.realnet.exceptions; + +public class InvalidUserDataException extends RuntimeException { + /** + * + */ + private static final long serialVersionUID = 1L; + + public InvalidUserDataException(String message) { + super(message); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/exceptions/OperationResponse.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/exceptions/OperationResponse.java new file mode 100644 index 0000000..697ce2f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/exceptions/OperationResponse.java @@ -0,0 +1,19 @@ +/** + This is the common structure for all responses + if the response contains a list(array) then it will have 'items' field + if the response contains a single item then it will have 'item' field + */ + + +package com.realnet.exceptions; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data //for getters and setters +public class OperationResponse { + public enum ResponseStatusEnum {SUCCESS, ERROR, WARNING, NO_ACCESS}; + @ApiModelProperty(required = true) + private ResponseStatusEnum operationStatus; + private String operationMessage; +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/exceptions/ResourceNotFoundException.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/exceptions/ResourceNotFoundException.java new file mode 100644 index 0000000..df4ba2d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/exceptions/ResourceNotFoundException.java @@ -0,0 +1,14 @@ +package com.realnet.exceptions; + +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ResponseStatus; + +@ResponseStatus(value = HttpStatus.NOT_FOUND) +public class ResourceNotFoundException extends RuntimeException { + private static final long serialVersionUID = 1L; + + public ResourceNotFoundException(String msg) { + super(msg); + } + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/exceptions/StorageException.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/exceptions/StorageException.java new file mode 100644 index 0000000..7326c1b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/exceptions/StorageException.java @@ -0,0 +1,18 @@ +package com.realnet.exceptions; + +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ResponseStatus; + +@ResponseStatus(value = HttpStatus.NOT_FOUND) +public class StorageException extends RuntimeException { + private static final long serialVersionUID = 1L; + + public StorageException(String message) { + super(message); + } + + public StorageException(String message, Throwable cause) { + super(message, cause); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/MainController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/MainController.java new file mode 100644 index 0000000..956eec9 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/MainController.java @@ -0,0 +1,17 @@ +package com.realnet.fnd.controller; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; + +import springfox.documentation.annotations.ApiIgnore; + +@ApiIgnore +@Controller // Dont use RestController as this method is mapping to a static file not a JSON +public class MainController { + + @GetMapping("/") + public String index() { + return "index.html"; + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_DynamicTransactionController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_DynamicTransactionController.java new file mode 100644 index 0000000..c52cf38 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_DynamicTransactionController.java @@ -0,0 +1,119 @@ +package com.realnet.fnd.controller; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.exceptions.ResourceNotFoundException; +import com.realnet.fnd.entity.Rn_Dynamic_Transaction; +import com.realnet.fnd.response.Rn_DynamicTransactionResponse; +import com.realnet.fnd.service.Rn_DynamicTransactionService; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; + +@RestController +@RequestMapping(value = "/api", produces = MediaType.APPLICATION_JSON_VALUE) +@Api(tags = { "Rn_Dynamic_Transaction" }) +public class Rn_DynamicTransactionController { + + @Autowired + private Rn_DynamicTransactionService rn_dynamicTransactionService; + +// @Autowired +// private TokenUtil tokenUtil; + + // GET ALL + @ApiOperation(value = "List of Dynamic Transaction", response = Rn_DynamicTransactionResponse.class) + @GetMapping("/dynamic_transaction/all") + public Rn_DynamicTransactionResponse getDynamicTx( + @RequestParam(value = "page", defaultValue = "0", required = false) int page, + @RequestParam(value = "size", defaultValue = "20", required = false) int size) { + + Rn_DynamicTransactionResponse resp = new Rn_DynamicTransactionResponse(); + Pageable paging = PageRequest.of(page, size); + Page result = rn_dynamicTransactionService.getAll(paging); + resp.setPageStats(result, true); + resp.setItems(result.getContent()); + return resp; + } + + // GET BY FROM ID (GRID) + @ApiOperation(value = "Get A Dynamic Transaction") + @GetMapping("/dynamic_transaction") + public ResponseEntity> getDynamicTxByFormId( + @RequestParam(value = "form_id") int form_id) { + List rn_dynamic_transaction = rn_dynamicTransactionService.getByFormId(form_id); + return ResponseEntity.ok().body(rn_dynamic_transaction); + } + + // SAVE + @ApiOperation(value = "Add A New Dynamic Transaction", response = Rn_DynamicTransactionResponse.class) + @PostMapping("/dynamic_transaction") + public ResponseEntity createDynamicTx( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @Valid @RequestBody Rn_Dynamic_Transaction rn_dynamic_transaction) { +// String userId = tokenUtil.getUserId(authToken); +// rn_dynamic_transaction.setCreatedBy(userId); +// rn_dynamic_transaction.setAccountId(userId); + Rn_Dynamic_Transaction savedRn_Dynamic_Transaction = rn_dynamicTransactionService.save(rn_dynamic_transaction); + if (savedRn_Dynamic_Transaction == null) { + throw new ResourceNotFoundException("Dynamic Transaction Is Not Saved"); + } + return ResponseEntity.status(HttpStatus.CREATED).body(savedRn_Dynamic_Transaction); + } + + // GET BY ID + @ApiOperation(value = "Get a Single Form", response = Rn_Dynamic_Transaction.class) + @GetMapping("/dynamic_transaction/{id}") + public ResponseEntity getById(@PathVariable(value = "id") int id, + @RequestParam(value = "form_id") int form_id) { + Rn_Dynamic_Transaction dynamicTransaction = rn_dynamicTransactionService.getByIdAndFormId(id, form_id); + return ResponseEntity.ok().body(dynamicTransaction); + } + + // UPDATE + @ApiOperation(value = "Update A Dynamic Transaction", response = Rn_Dynamic_Transaction.class) + @PutMapping("/dynamic_transaction/{id}") + public ResponseEntity updateDynamicTx( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @PathVariable(value = "id") int id, @RequestParam(value = "form_id") int form_id, + @Valid @RequestBody Rn_Dynamic_Transaction rn_dynamic_transaction) { +// String userId = tokenUtil.getUserId(authToken); +// rn_dynamic_transaction.setUpdatedBy(userId); + Rn_Dynamic_Transaction updatedDynamicTransaction = rn_dynamicTransactionService.updateByFormId(id, form_id, + rn_dynamic_transaction); + return ResponseEntity.status(HttpStatus.ACCEPTED).body(updatedDynamicTransaction); + } + + // DELETE + @DeleteMapping("/dynamic_transaction/{id}") + public ResponseEntity> deleteDynamicTx(@PathVariable(value = "id") int id) { + boolean deleted = rn_dynamicTransactionService.deleteById(id); + Map response = new HashMap<>(); + response.put("deleted", Boolean.TRUE); + // response.put("deleted", deleted); + return ResponseEntity.status(HttpStatus.OK).body(response); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_ExtensionController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_ExtensionController.java new file mode 100644 index 0000000..8e03bb2 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_ExtensionController.java @@ -0,0 +1,155 @@ +package com.realnet.fnd.controller; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.FromExtensionJson.Entity.FromExtensionJson_t; +import com.realnet.FromExtensionJson.Services.FromExtensionJson_Service; +import com.realnet.exceptions.ResourceNotFoundException; +import com.realnet.fnd.entity.Rn_Ext_Fields; +import com.realnet.fnd.service.ExtFieldService; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.service1.AppUserServiceImpl; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; + +@RestController +@RequestMapping(value = "/api", produces = MediaType.APPLICATION_JSON_VALUE) +@Api(tags = { "Extension Fields" }) +public class Rn_ExtensionController { + + @Value("${angularProjectPath}") + private String angularProjectPath; + + @Autowired + private ExtFieldService extFieldService; + + + @Autowired + private FromExtensionJson_Service formeExtensionJson_Service; + + @Autowired(required = false) + // private UserService userService; + private AppUserServiceImpl userService; + +// @Autowired +// private TokenUtil tokenUtil; + + // GET ALL + @ApiOperation(value = "List of Extensions") + @GetMapping("/extension") + public ResponseEntity> getExtensions() { + List result = extFieldService.getAll(); + return ResponseEntity.ok().body(result); + } + + // GET BY ID + @ApiOperation(value = "Get an Extension") + @GetMapping("/extension/{id}") + public ResponseEntity getExtensionById(@PathVariable(value = "id") int id) { + Rn_Ext_Fields rn_ext_fields = extFieldService.getById(id); + return ResponseEntity.ok().body(rn_ext_fields); + } + + // SAVE + @ApiOperation(value = "Add new Extension", response = Rn_Ext_Fields.class) + @PostMapping("/extension") + public ResponseEntity saveExtension( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @Valid @RequestBody Rn_Ext_Fields rn_ext_fields) { + // String userId = tokenUtil.getUserId(authToken); + AppUser loggedInUser = userService.getLoggedInUser(); + // rn_ext_fields.setCreated_by(loggedInUser.getUserId()); + rn_ext_fields.setAccount_id(loggedInUser.getAccount().getAccount_id()); + Rn_Ext_Fields savedRn_Ext_Fields = extFieldService.save(rn_ext_fields); + if (savedRn_Ext_Fields == null) { + throw new ResourceNotFoundException("Rn_Ext_Field is not saved"); + } + return ResponseEntity.status(HttpStatus.CREATED).body(savedRn_Ext_Fields); + } + + // UPDATE + @ApiOperation(value = "Update an Extension", response = Rn_Ext_Fields.class) + @PutMapping("/extension/{id}") + public ResponseEntity updateRn_Ext_Field( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @PathVariable(value = "id") int id, @Valid @RequestBody Rn_Ext_Fields rn_ext_fields) { +// String userId = tokenUtil.getUserId(authToken); +// // teacher.setAccountId(userId); +// rn_ext_fields.setUpdatedBy(userId); + Rn_Ext_Fields updatedRn_Ext_Field = extFieldService.updateById(id, rn_ext_fields); + return ResponseEntity.status(HttpStatus.ACCEPTED).body(updatedRn_Ext_Field); + } + + // DELETE + @DeleteMapping("/extension/{id}") + public ResponseEntity> deleteRn_Ext_Field(@PathVariable(value = "id") int id) { + boolean deleted = extFieldService.deleteById(id); + Map response = new HashMap<>(); + if (deleted) { + response.put("deleted", Boolean.TRUE); + return ResponseEntity.status(HttpStatus.OK).body(response); + } + return ResponseEntity.status(HttpStatus.NOT_FOUND).body(response); + } + +// @GetMapping("/lookup_values") +// public ResponseEntity> getLookUps() { +// List result = extFieldService.getLookupValues(); +// System.out.println(result); +// return ResponseEntity.ok().body(result); +// } +// +// @GetMapping("/datatypes") +// public ResponseEntity> getDataTypes() { +// List result = extFieldService.getDataTypeValues(); +// System.out.println(result); +// return ResponseEntity.ok().body(result); +// } + + @GetMapping("/extension_build/{formId}") + public ResponseEntity buildExtension(@RequestParam(value = "account_id", required = false) String account_id, + @RequestParam(value = "form_code", required = false) String form_code, @PathVariable Integer formId) { + + ArrayList list = new ArrayList<>(); + + System.out.println("Acc Id" + account_id + " Form Code = " + form_code); + String formCode = extFieldService.buildExtensionByFormCode(account_id, form_code,formId); + list.add(formCode); + Map res = new HashMap(); + res.put("build", true); + FromExtensionJson_t json_t = new FromExtensionJson_t(); + json_t.setAccount_id(account_id); + json_t.setForm_code(form_code); + + json_t.setJsonObject(formCode); + + formeExtensionJson_Service.Savedata(json_t); + + + return ResponseEntity.ok().body(list); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Forms_Setup_Controller.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Forms_Setup_Controller.java new file mode 100644 index 0000000..4c7e642 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Forms_Setup_Controller.java @@ -0,0 +1,114 @@ +package com.realnet.fnd.controller; + +import java.util.HashMap; +import java.util.Map; + +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.fnd.entity.Rn_Forms_Setup; +import com.realnet.fnd.response.Rn_Forms_SetupResponse; +import com.realnet.fnd.service.Rn_Forms_Setup_Service; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; + +@RestController +@RequestMapping(value = "/api", produces = MediaType.APPLICATION_JSON_VALUE) +@Api(tags = { "Rn_Forms_Setup" }) +public class Rn_Forms_Setup_Controller { + + @Autowired + private Rn_Forms_Setup_Service rn_forms_setup_service; + +// @Autowired +// private TokenUtil tokenUtil; + + // GET ALL + @ApiOperation(value = "List of Forms", response = Rn_Forms_SetupResponse.class) + @GetMapping("/form_setup") + public Rn_Forms_SetupResponse getForms( + @RequestParam(value = "page", defaultValue = "0", required = false) Integer page, + @RequestParam(value = "size", defaultValue = "20", required = false) Integer size) { + Rn_Forms_SetupResponse resp = new Rn_Forms_SetupResponse(); + Pageable paging = PageRequest.of(page, size); + Page result = rn_forms_setup_service.getAll(paging); + resp.setPageStats(result, true); + resp.setItems(result.getContent()); + return resp; + } + + // GET BY ID + @ApiOperation(value = "Get a Form", response = Rn_Forms_Setup.class) + @GetMapping("/form_setup/{id}") + public ResponseEntity getFormsById(@PathVariable(value = "id") int id) { + Rn_Forms_Setup rn_forms_setup = rn_forms_setup_service.getById(id); + return ResponseEntity.ok().body(rn_forms_setup); + } + + // SAVE + @ApiOperation(value = "Add A New Form", response = Rn_Forms_Setup.class) + @PostMapping("/form_setup") + public ResponseEntity createRn_Forms_Setup( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @Valid @RequestBody Rn_Forms_Setup rn_forms_setup) { +// String userId = tokenUtil.getUserId(authToken); +// rn_forms_setup.setCreatedBy(userId); +// rn_forms_setup.setAccountId(userId); + Rn_Forms_Setup savedRn_Forms_Setup = rn_forms_setup_service.save(rn_forms_setup); + return ResponseEntity.status(HttpStatus.CREATED).body(savedRn_Forms_Setup); + } + + // UPDATE + @ApiOperation(value = "Update A Form", response = Rn_Forms_Setup.class) + @PutMapping("/form_setup/{id}") + public ResponseEntity updateRn_Forms_Setup( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @PathVariable(value = "id") Integer id, @Valid @RequestBody Rn_Forms_Setup rn_forms_setup) { +// String userId = tokenUtil.getUserId(authToken); +// rn_forms_setup.setUpdatedBy(userId); + Rn_Forms_Setup updatedRn_Forms_Setup = rn_forms_setup_service.updateById(id, rn_forms_setup); + return ResponseEntity.status(HttpStatus.ACCEPTED).body(updatedRn_Forms_Setup); + } + + // DELETE + @DeleteMapping("/form_setup/{id}") + public ResponseEntity> deleteRn_Forms_Setup(@PathVariable(value = "id") Integer id) { + boolean deleted = rn_forms_setup_service.deleteById(id); + Map response = new HashMap<>(); + response.put("deleted", Boolean.TRUE); + // response.put("deleted", deleted); + return ResponseEntity.status(HttpStatus.OK).body(response); + } + + // BUILD DYNAMIC FORM + @GetMapping("/dynamic_form_build") + public ResponseEntity> buildDynamicForm(@RequestParam(value = "form_id", defaultValue = "0") int form_id) { + System.out.println("Dynamic form build form start"); + rn_forms_setup_service.buildDynamicForm(form_id); + Map response = new HashMap<>(); + response.put("deleted", Boolean.TRUE); + return ResponseEntity.status(HttpStatus.OK).body(response); + + } + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Function_Register_Controller.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Function_Register_Controller.java new file mode 100644 index 0000000..cc33c32 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Function_Register_Controller.java @@ -0,0 +1,105 @@ +package com.realnet.fnd.controller; + +import java.util.HashMap; +import java.util.Map; + +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.fnd.entity.Rn_Function_Register; +import com.realnet.fnd.response.Rn_Function_Register_Response; +import com.realnet.fnd.service.Rn_Function_Register_Service; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; + +@RestController +@RequestMapping(value = "/api", produces = MediaType.APPLICATION_JSON_VALUE) +@Api(tags = { "Function Register" }) +public class Rn_Function_Register_Controller { + + @Autowired + private Rn_Function_Register_Service rn_menu_register_service; + +// @Autowired +// private TokenUtil tokenUtil; + + // GET ALL + @ApiOperation(value = "List of Functions", response = Rn_Function_Register_Response.class) + @GetMapping("/function-register") + public Rn_Function_Register_Response getFunctions( + @RequestParam(value = "page", defaultValue = "0", required = false) Integer page, + @RequestParam(value = "size", defaultValue = "20", required = false) Integer size) { + + // SORTED DATA + //Pageable paging = PageRequest.of(page, size, Sort.by("createdAt").descending()); + + Pageable paging = PageRequest.of(page, size); + Page result = rn_menu_register_service.getAll(paging); + Rn_Function_Register_Response resp = new Rn_Function_Register_Response(); + resp.setPageStats(result, true); + resp.setItems(result.getContent()); + return resp; + } + + // GET BY ID + @ApiOperation(value = "Get a Function", response = Rn_Function_Register.class) + @GetMapping("/function-register/{id}") + public ResponseEntity getFunctionById(@PathVariable(value = "id") Integer id) { + Rn_Function_Register rn_function_register = rn_menu_register_service.getById(id); + return ResponseEntity.ok().body(rn_function_register); + } + + // SAVE + @ApiOperation(value = "Add A New Function", response = Rn_Function_Register.class) + @PostMapping("/function-register") + public ResponseEntity createFunction( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @Valid @RequestBody Rn_Function_Register rn_function_register) { +// String userId = tokenUtil.getUserId(authToken); +// rn_function_register.setCreatedBy(userId); +// rn_function_register.setAccountId(userId); + Rn_Function_Register savedFunction = rn_menu_register_service.save(rn_function_register); + return ResponseEntity.status(HttpStatus.CREATED).body(savedFunction); + } + + // UPDATE + @ApiOperation(value = "Update A Function", response = Rn_Function_Register.class) + @PutMapping("/function-register/{id}") + public ResponseEntity updateFunction( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @PathVariable(value = "id") Integer id, @Valid @RequestBody Rn_Function_Register rn_function_register) { +// String userId = tokenUtil.getUserId(authToken); +// rn_function_register.setUpdatedBy(userId); + Rn_Function_Register updatedFunction = rn_menu_register_service.updateById(id, rn_function_register); + return ResponseEntity.status(HttpStatus.ACCEPTED).body(updatedFunction); + } + + // DELETE + @DeleteMapping("/function-register/{id}") + public ResponseEntity> deleteFunction(@PathVariable(value = "id") Integer id) { + boolean deleted = rn_menu_register_service.deleteById(id); + Map response = new HashMap<>(); + response.put("deleted", Boolean.TRUE); + // response.put("deleted", deleted); + return ResponseEntity.status(HttpStatus.OK).body(response); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Main_Menu_Controller.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Main_Menu_Controller.java new file mode 100644 index 0000000..a753ba4 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Main_Menu_Controller.java @@ -0,0 +1,121 @@ +package com.realnet.fnd.controller; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.fnd.entity.Rn_Main_Menu; +import com.realnet.fnd.response.Rn_Main_Menu_Response; +import com.realnet.fnd.service.Rn_Main_Menu_Service; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; + +@RestController +@RequestMapping(value = "/api", produces = MediaType.APPLICATION_JSON_VALUE) +@Api(tags = { "RealNet Menu" }) +public class Rn_Main_Menu_Controller { + + @Autowired + private Rn_Main_Menu_Service rn_main_menu_service; + +// @Autowired +// private TokenUtil tokenUtil; + + // GET ALL + @ApiOperation(value = "List of Menu", response = Rn_Main_Menu_Response.class) + @GetMapping("/realnet-menu") + public Rn_Main_Menu_Response getMenus( + @RequestParam(value = "page", defaultValue = "0", required = false) Integer page, + @RequestParam(value = "size", defaultValue = "20", required = false) Integer size) { + + // SORTED DATA : PageRequest.of(page, size,Sort.by("createdAt").descending()); + // UN-SORTED DATA : PageRequest.of(page, size); + + Pageable paging = PageRequest.of(page, size); + Page result = rn_main_menu_service.getAll(paging); + Rn_Main_Menu_Response resp = new Rn_Main_Menu_Response(); + resp.setPageStats(result, true); + resp.setItems(result.getContent()); + return resp; + } + + // GET BY ID + @ApiOperation(value = "Get a Menu", response = Rn_Main_Menu.class) + @GetMapping("/realnet-menu/{id}") + public ResponseEntity getMenuById(@PathVariable(value = "id") Integer id) { + Rn_Main_Menu rn_menu_register = rn_main_menu_service.getById(id); + return ResponseEntity.ok().body(rn_menu_register); + } + + // getByAccountId + // *** NEED MODIFICATION *** + // GET BY ACCOUNT_ID + @ApiOperation(value = "Get Menu By Accout Id", response = Rn_Main_Menu.class) + @GetMapping("/realnet-menu/user-menu") + public ResponseEntity> getMenuByAccountId( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken) { +// String accountId = tokenUtil.getUserId(authToken); +// System.out.println("get Menu List by Account Id --> " + accountId); + //List rn_menu_register = rn_main_menu_service.getByAccountId(accountId); + List rn_menu_register = rn_main_menu_service.getAll(); + return ResponseEntity.ok().body(rn_menu_register); + } + + // SAVE + @ApiOperation(value = "Add A New Menu", response = Rn_Main_Menu.class) + @PostMapping("/realnet-menu") + public ResponseEntity createMenu( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @Valid @RequestBody Rn_Main_Menu rn_main_menu) { +// String userId = tokenUtil.getUserId(authToken); +// rn_main_menu.setCreatedBy(userId); +// rn_main_menu.setAccountId(userId); + Rn_Main_Menu savedMenu = rn_main_menu_service.save(rn_main_menu); + return ResponseEntity.status(HttpStatus.CREATED).body(savedMenu); + } + + // UPDATE + @ApiOperation(value = "Update A Menu", response = Rn_Main_Menu.class) + @PutMapping("/realnet-menu/{id}") + public ResponseEntity updateMenu( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @PathVariable(value = "id") Integer id, @Valid @RequestBody Rn_Main_Menu rn_main_menu) { +// String userId = tokenUtil.getUserId(authToken); +// rn_main_menu.setUpdatedBy(userId); + Rn_Main_Menu updatedMenu = rn_main_menu_service.updateById(id, rn_main_menu); + return ResponseEntity.status(HttpStatus.ACCEPTED).body(updatedMenu); + } + + // DELETE + @DeleteMapping("/realnet-menu/{id}") + public ResponseEntity> deleteMenu(@PathVariable(value = "id") Integer id) { + boolean deleted = rn_main_menu_service.deleteById(id); + Map response = new HashMap<>(); + response.put("deleted", Boolean.TRUE); + // response.put("deleted", deleted); + return ResponseEntity.status(HttpStatus.OK).body(response); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Menu_Group_Controller.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Menu_Group_Controller.java new file mode 100644 index 0000000..0c43dda --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Menu_Group_Controller.java @@ -0,0 +1,203 @@ +package com.realnet.fnd.controller; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.config.TokenProvider; +import com.realnet.fnd.entity.Rn_Function_Register; +import com.realnet.fnd.entity.Rn_Main_Menu; +import com.realnet.fnd.entity.Rn_Menu_Group_Header; +import com.realnet.fnd.entity.Rn_Menu_Group_Line; +import com.realnet.fnd.entity.Rn_Menu_Register; +import com.realnet.fnd.entity.Rn_Sub_Menu; +import com.realnet.fnd.response.Rn_Forms_SetupResponse; +import com.realnet.fnd.response.Rn_Menu_Group_Response; +import com.realnet.fnd.service.Rn_Function_Register_Service; +import com.realnet.fnd.service.Rn_Menu_Group_Service; +import com.realnet.fnd.service.Rn_Menu_Register_Service; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.service1.AppUserService; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; + +@RestController +@RequestMapping(value = "/api", produces = MediaType.APPLICATION_JSON_VALUE) +@Api(tags = { "Rn_Menu_Group" }) +@CrossOrigin("*") +public class Rn_Menu_Group_Controller { + + @Autowired + private Rn_Menu_Group_Service rn_menu_group_service; + + @Autowired + private Rn_Menu_Register_Service rn_menu_register_service; + + @Autowired + private Rn_Function_Register_Service rn_function_register_service; + + @Autowired + private TokenProvider tokenProvider; + + @Autowired(required=false) + private AppUserService userService; + + // GET ALL + @ApiOperation(value = "List of Menu Group", response = Rn_Forms_SetupResponse.class) + @GetMapping("/menu-group") + public Rn_Menu_Group_Response getMenuGroups( + @RequestParam(value = "page", defaultValue = "0", required = false) Integer page, + @RequestParam(value = "size", defaultValue = "20", required = false) Integer size) { + // sorted data + Pageable paging = PageRequest.of(page, size, Sort.by("createdAt").descending()); + Page result = rn_menu_group_service.getAll(paging); + + Rn_Menu_Group_Response resp = new Rn_Menu_Group_Response(); + resp.setPageStats(result, true); + resp.setItems(result.getContent()); + return resp; + } + + // GET BY ID + @ApiOperation(value = "Get a Menu Group", response = Rn_Menu_Group_Header.class) + @GetMapping("/menu-group/{id}") + public ResponseEntity getMenuGroupById(@PathVariable(value = "id") Long id) { + Rn_Menu_Group_Header rn_menu_group = rn_menu_group_service.getById(id); + return ResponseEntity.ok().body(rn_menu_group); + } + + // SAVE + @ApiOperation(value = "Save A New Menu Group", response = Rn_Menu_Group_Header.class) + @PostMapping("/menu-group") + public ResponseEntity createMenuGroup( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @Valid @RequestBody Rn_Menu_Group_Header rn_menu_group_header) { +// String userId = tokenUtil.getUserId(authToken); +// rn_menu_group_header.setCreatedBy(userId); +// rn_menu_group_header.setAccountId(userId); + Rn_Menu_Group_Header savedMenu_group = rn_menu_group_service.save(rn_menu_group_header); + return ResponseEntity.status(HttpStatus.CREATED).body(savedMenu_group); + } + + // UPDATE + @ApiOperation(value = "Update A Menu Group", response = Rn_Menu_Group_Header.class) + @PutMapping("/menu-group/{id}") + public ResponseEntity updateMenuGroup( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @PathVariable(value = "id") Long id, @Valid @RequestBody Rn_Menu_Group_Header rn_menu_group_header) { +// String userId = tokenUtil.getUserId(authToken); +// rn_menu_group_header.setUpdatedBy(userId); + Rn_Menu_Group_Header updatedMenu_Group = rn_menu_group_service.updateById(id, rn_menu_group_header); + return ResponseEntity.status(HttpStatus.ACCEPTED).body(updatedMenu_Group); + } + + // DELETE + @DeleteMapping("/menu-group/{id}") + public ResponseEntity> deleteMenuGroup(@PathVariable(value = "id") Long id) { + boolean deleted = rn_menu_group_service.deleteById(id); + Map response = new HashMap<>(); + response.put("deleted", Boolean.TRUE); + // response.put("deleted", deleted); + return ResponseEntity.status(HttpStatus.OK).body(response); + } + + // ---- working code ---- + @ApiOperation(value = "Menus For Individual Group", response = Rn_Forms_SetupResponse.class) + @GetMapping("/load-menus") + public ResponseEntity getMenus( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken) { + //String userId = tokenProvider.getEmailFromToken(authToken); + AppUser user = userService.getLoggedInUser(); + System.out.println("getMenus controller " + user); + Long menu_group_id = user.getUsrGrp().getUsrGrp(); + System.out.println("getMenus() MENU GROUP ID = " + menu_group_id); + + // from user table, get menu_group_id + //int menu_group_id = 1; + + // rn_menu_group_service.loadmenuGroupByUser(menu_group_id); + // or + + // Rn_Main_Menu rn_main_menu = new Rn_Main_Menu(); + // Rn_Sub_Menu rn_sub_menu = new Rn_Sub_Menu(); + + List mainMenuList = new ArrayList(); + // List subMenuList = new ArrayList(); + + Rn_Menu_Group_Header menu_group_header = rn_menu_group_service.getById(menu_group_id); + List menu_group_lines = menu_group_header.getMenu_group_lines(); + + // menu_group loop start + for (Rn_Menu_Group_Line menu_group_line : menu_group_lines) { + // menu id will be diff + int menu_id = menu_group_line.getMenu_id(); + + // HEADER + Rn_Menu_Register rn_menu_register = rn_menu_register_service.getById(menu_id); + String main_menu_name = rn_menu_register.getMain_menu_name(); + String main_menu_action_name = rn_menu_register.getMain_menu_action_name(); + String main_menu_icon = rn_menu_register.getMain_menu_icon(); + // boolean main_menu_flag = rn_menu_register.getEnable_flag(); + + Rn_Main_Menu rn_main_menu = new Rn_Main_Menu(); + rn_main_menu.setMenu_name(main_menu_name); + rn_main_menu.setMenu_action_link(main_menu_action_name); + rn_main_menu.setMenu_icon(main_menu_icon); + + // LINE + // List subMenuList = new ArrayList(); + System.out.println("Before Fun Register"); + List functions = rn_function_register_service.getByMenuId(menu_id); + System.out.println("After Fun Register"); + if (!functions.isEmpty()) { + List subMenuList = new ArrayList(); + for (Rn_Function_Register function : functions) { + String function_name = function.getFunction_name(); + String function_action_name = function.getFunction_action_name(); + String function_icon = function.getFunction_icon(); + // LocalDate function_end_date = function.getEnd_date(); + // String function_flag = function.getEnable_flag(); + + Rn_Sub_Menu rn_sub_menu = new Rn_Sub_Menu(); + rn_sub_menu.setSub_menu_name(function_name); + rn_sub_menu.setSub_menu_action_link(function_action_name); + rn_sub_menu.setSub_menu_icon(function_icon); + + subMenuList.add(rn_sub_menu); + } // func loop end + rn_main_menu.setSub_menus(subMenuList); + } + // rn_main_menu.setSub_menus(sub_menus); + mainMenuList.add(rn_main_menu); + } // menu_group loop end + + + return ResponseEntity.ok().body(mainMenuList); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Menu_Group_Line_Controller.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Menu_Group_Line_Controller.java new file mode 100644 index 0000000..059de2f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Menu_Group_Line_Controller.java @@ -0,0 +1,57 @@ +package com.realnet.fnd.controller; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.fnd.entity.Rn_Menu_Group_Header; +import com.realnet.fnd.entity.Rn_Menu_Group_Line; +import com.realnet.fnd.service.RnGroupMenuLineServiec; + +import io.swagger.annotations.Api; + +@RestController +@RequestMapping(value = "/lines_m", produces = MediaType.APPLICATION_JSON_VALUE) +@Api(tags = { "Rn_Menu_Group" }) +@CrossOrigin("*") +public class Rn_Menu_Group_Line_Controller { + + @Autowired + private RnGroupMenuLineServiec rnGroupMenuLineServiec; + + @PostMapping("/create") + public ResponseEntity add(@RequestBody Rn_Menu_Group_Line rn_Menu_Group_Line){ + Rn_Menu_Group_Line addToDb = this.rnGroupMenuLineServiec.addToDb(rn_Menu_Group_Line); + return ResponseEntity.ok(addToDb); + } + + @GetMapping("/get-one/{id}") + public ResponseEntity getone(@PathVariable("id") int id){ + Rn_Menu_Group_Line getoneById = this.rnGroupMenuLineServiec.getoneById(id); + return ResponseEntity.ok(getoneById); + } + + @GetMapping("/get-all") + public List getAll(){ + List all = this.rnGroupMenuLineServiec.getAll(); + return all; + } + + @PutMapping("/update") + public ResponseEntity update(@RequestBody Rn_Menu_Group_Line rn_Menu_Group_Line){ + Rn_Menu_Group_Line addToDb = this.rnGroupMenuLineServiec.updateToDb(rn_Menu_Group_Line); + return ResponseEntity.ok(addToDb); + } + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Menu_Register_Controller.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Menu_Register_Controller.java new file mode 100644 index 0000000..119dc5e --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Menu_Register_Controller.java @@ -0,0 +1,125 @@ +package com.realnet.fnd.controller; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.fnd.entity.Rn_Menu_Register; +import com.realnet.fnd.response.Rn_Menu_Register_Response; +import com.realnet.fnd.service.Rn_Menu_Register_Service; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; + +@RestController +@RequestMapping(value = "/api", produces = MediaType.APPLICATION_JSON_VALUE) +@Api(tags = { "Menu Register" }) +@CrossOrigin("*") +public class Rn_Menu_Register_Controller { + + @Autowired + private Rn_Menu_Register_Service rn_menu_register_service; + +// @Autowired +// private TokenUtil tokenUtil; + + // GET ALL + @ApiOperation(value = "List of Menu", response = Rn_Menu_Register_Response.class) + @GetMapping("/menu-register") + public Rn_Menu_Register_Response getRegisteredMenu( + @RequestParam(value = "page", defaultValue = "0", required = false) Integer page, + @RequestParam(value = "size", defaultValue = "20", required = false) Integer size) { + + // SORTED DATA + // Pageable paging = PageRequest.of(page, size, + // Sort.by("createdAt").descending()); + + Pageable paging = PageRequest.of(page, size); + Page result = rn_menu_register_service.getAll(paging); + Rn_Menu_Register_Response resp = new Rn_Menu_Register_Response(); + resp.setPageStats(result, true); + resp.setItems(result.getContent()); + return resp; + } + + // GET BY ID + @ApiOperation(value = "Get a Menu", response = Rn_Menu_Register.class) + @GetMapping("/menu-register/{id}") + public ResponseEntity getRegisteredMenuById(@PathVariable(value = "id") Integer id) { + Rn_Menu_Register rn_menu_register = rn_menu_register_service.getById(id); + return ResponseEntity.ok().body(rn_menu_register); + } + + // getByAccountId + // *** NEED MODIFICATION *** + // GET BY ACCOUNT_ID + @ApiOperation(value = "Get Menu By Accout Id", response = Rn_Menu_Register.class) + @GetMapping("/menu-register/user-menu") + public ResponseEntity> getRegisteredMenuByAccountId( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken) { +// String accountId = tokenUtil.getUserId(authToken); +// System.out.println("get Menu List by Account Id --> " + accountId); + // ** NEED TO MODIFY ** +// List rn_menu_register = rn_menu_register_service.getByAccountId(accountId); + List rn_menu_register = rn_menu_register_service.getAll(); + return ResponseEntity.ok().body(rn_menu_register); + } + + // SAVE + @ApiOperation(value = "Add A New Menu", response = Rn_Menu_Register.class) + @PostMapping("/menu-register") + public ResponseEntity SaveMenuRegister( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @Valid @RequestBody Rn_Menu_Register rn_menu_register) { +// String userId = tokenUtil.getUserId(authToken); +// rn_menu_register.setCreatedBy(userId); +// rn_menu_register.setAccountId(userId); + Rn_Menu_Register savedRn_Forms_Setup = rn_menu_register_service.save(rn_menu_register); + return ResponseEntity.status(HttpStatus.CREATED).body(savedRn_Forms_Setup); + } + + // UPDATE + @ApiOperation(value = "Update A Menu", response = Rn_Menu_Register.class) + @PutMapping("/menu-register/{id}") + public ResponseEntity updateMenu( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @PathVariable(value = "id") Integer id, @Valid @RequestBody Rn_Menu_Register rn_menu_register) { + // String userId = tokenUtil.getUserId(authToken); + // rn_menu_register.setUpdatedBy(userId); + Rn_Menu_Register updatedMenu = rn_menu_register_service.updateById(id, rn_menu_register); + return ResponseEntity.status(HttpStatus.ACCEPTED).body(updatedMenu); + } + + // DELETE + @DeleteMapping("/menu-register/{id}") + public ResponseEntity> deleteRn_Forms_Setup(@PathVariable(value = "id") Integer id) { + boolean deleted = rn_menu_register_service.deleteById(id); + Map response = new HashMap<>(); + response.put("deleted", Boolean.TRUE); + // response.put("deleted", deleted); + return ResponseEntity.status(HttpStatus.OK).body(response); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller1/LoadMenuController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller1/LoadMenuController.java new file mode 100644 index 0000000..c5700ea --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller1/LoadMenuController.java @@ -0,0 +1,288 @@ +package com.realnet.fnd.controller1; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.fnd.entity1.GrpMenuAccess; +import com.realnet.fnd.entity1.MenuDet; +import com.realnet.fnd.repository1.GrpMenuAccessRepository; +import com.realnet.fnd.repository1.MenuDetRepository; +import com.realnet.fnd.service1.SecmenuDetailService; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.entity1.AppUserRole; +import com.realnet.users.repository1.AppUserRepository; +import com.realnet.users.repository1.AppUserRoleRepository; +import com.realnet.users.service1.AppUserServiceImpl; + +@RequestMapping(value = "/fndMenu", produces = MediaType.APPLICATION_JSON_VALUE) +@RestController +public class LoadMenuController { + + @Autowired + private AppUserRoleRepository appUserRoleRepository; + @Autowired + private MenuDetRepository menuDetRepository; + @Autowired + private GrpMenuAccessRepository grpMenuAccessRepository; + @Autowired + private AppUserServiceImpl userService; + + @Autowired + private AppUserRepository appUserRepository; + + @Autowired + private SecmenuDetailService secmenuDetailService; + + private static final Logger LOGGER = LoggerFactory.getLogger(LoadMenuController.class); + +// GROUP MENU ACCESS MENU LOAD BY USER + @GetMapping("/menuloadbyuser") + public ResponseEntity setmenuforuser() { + AppUser loggedInUser = userService.getLoggedInUser(); + Long usrGrp = loggedInUser.getUsrGrp().getUsrGrp(); + + List root = grpMenuAccessRepository.findAllRootsByMenuId(usrGrp); // menu id =0 + for (int i = 0; i < root.size(); i++) { + + // find menu item id by menu id =0 + List menu = grpMenuAccessRepository.findById(root.get(i).getUsrGrp().getUsrGrp(), + root.get(i).getMenuItemId().getMenuItemId()); // menuItem id will be unique + for (GrpMenuAccess g : menu) { + + // all submenu by menuid = menu itemid with status + List allSubmenu = grpMenuAccessRepository + .findAllSubmenuByMenuIdWithStatus(g.getMenuItemId().getMenuItemId(), g.getUsrGrp().getUsrGrp()); // find + + g.setSubMenus(allSubmenu); + } + + } + return new ResponseEntity<>(root, HttpStatus.OK); + } + +// GET LIST OF TABLE + @GetMapping("/loadcolumn/{TABLE_NAME}") + public List getcolumnname(@PathVariable Object TABLE_NAME) { + List colun = menuDetRepository.findcolumnbytablename(TABLE_NAME); + + return colun; + + } + +// GET LIST OF USRGRP + @GetMapping("/listofusrgrp") + public ResponseEntity listofusrgrp() { + AppUser loggedInUser = userService.getLoggedInUser(); + Long usrGrp = loggedInUser.getUsrGrp().getUsrGrp(); + + List root = grpMenuAccessRepository.findAllRootsByMenuId(usrGrp); + return new ResponseEntity<>(root, HttpStatus.OK); + + } + +// GET LIST OF USRGRP + @GetMapping("/getuser/{user_id}") + public ResponseEntity getuser(@PathVariable Long user_id) { + + AppUser root = appUserRepository.findById(user_id).orElseThrow(null); + return new ResponseEntity<>(root, HttpStatus.OK); + + } + +// SINK GRPMENU ACCESS TO SEC MENU DET SUBMENU BY PASSING GMENUID + @PutMapping("/sink/{gmenuid}") + public ResponseEntity sync(@PathVariable Long gmenuid, @RequestBody GrpMenuAccess gr) { + + List list = secmenuDetailService.sync(gmenuid, gr); + + return new ResponseEntity<>(list, HttpStatus.CREATED); + + } + +// COMPLETED +// SINK GRPMENU ACCESS FROM MENU DET BY PASSING MENU ITEM ID OF MENU BY LOGIN USER + @PutMapping("/sink1/{gmenuid}") + public ResponseEntity sink(@PathVariable Long gmenuid, @RequestBody GrpMenuAccess gr) { + + AppUser loggedInUser = userService.getLoggedInUser(); + Long usrGrp = loggedInUser.getUsrGrp().getUsrGrp(); + + List list = new ArrayList<>(); + MenuDet formenu = menuDetRepository.findById(gmenuid).orElseThrow(null); + + GrpMenuAccess a = grpMenuAccessRepository.findAllRootsByMenuIdAndGrp(gmenuid, usrGrp); + if (a != null) { + + a.setMenuItemId(formenu); + a.setItemSeq(formenu.getItemSeq()); + a.setMenuItemDesc(formenu.getMenuItemDesc()); + a.setModuleName(formenu.getModuleName()); + a.setStatus(formenu.getStatus()); + a.setMain_menu_action_name(formenu.getMain_menu_action_name()); + a.setMain_menu_icon_name(formenu.getMain_menu_icon_name()); + a.setMenuId(formenu.getMenuId()); + GrpMenuAccess save = grpMenuAccessRepository.save(a); + list.add(save); + + List submenu = menuDetRepository.findAllSubmenuByMenuId(gmenuid); + for (int i = 0; i < submenu.size(); i++) { + MenuDet m = menuDetRepository.findById(submenu.get(i).getMenuItemId()).orElseThrow(null); +// List listofsubmenu = grpMenuAccessRepository.findAllSubmenuByMenuitemidAndUsrGrp(gmenuid,usrGrp); +// for (int j = 0; j < listofsubmenu.size(); j++) { + GrpMenuAccess g = grpMenuAccessRepository.findById2(m.getMenuItemId(), usrGrp); + if (g != null) { + + g.setMenuItemId(m); + + g.setItemSeq(m.getItemSeq()); + g.setMenuItemDesc(m.getMenuItemDesc()); + g.setModuleName(m.getModuleName()); + g.setStatus(m.getStatus()); + g.setMain_menu_action_name(m.getMain_menu_action_name()); + g.setMain_menu_icon_name(m.getMain_menu_icon_name()); + g.setMenuId(m.getMenuId()); + + GrpMenuAccess save1 = grpMenuAccessRepository.save(g); + list.add(save1); + } else { + + AppUserRole app = appUserRoleRepository.findById(usrGrp).orElseThrow(null); + gr.setUsrGrp(app); + gr.setMenuItemId(m); + + gr.setItemSeq(m.getItemSeq()); + gr.setMenuItemDesc(m.getMenuItemDesc()); + gr.setModuleName(m.getModuleName()); + gr.setStatus(m.getStatus()); + gr.setMain_menu_action_name(m.getMain_menu_action_name()); + gr.setMain_menu_icon_name(m.getMain_menu_icon_name()); + gr.setMenuId(m.getMenuId()); + + gr.setMCreate("true"); + gr.setMDelete("true"); + gr.setMEdit("true"); + gr.setMQuery("true"); + gr.setMVisible("true"); + gr.setIsdisable("true"); + gr.setMexport("true"); + + gr.setCreatedAt(new Date()); + gr.setUpdatedAt(new Date()); + + GrpMenuAccess save2 = grpMenuAccessRepository.save(gr); + list.add(save2); + + } + + } + +// } + } else { + return new ResponseEntity<>(HttpStatus.BAD_REQUEST); + + } + + return new ResponseEntity<>(list, HttpStatus.CREATED); + } + +// DELETE MENU AND SUBMENU INCLUDING GRPMENU ACCESS by menuItemId + @DeleteMapping("/DelMenuWithSub/{menu_item_id}") + public void delete(@PathVariable Long menu_item_id) { + + // delete submenu + List submenu = menuDetRepository.findAllSubmenuByMenuId(menu_item_id); + int size = submenu.size(); + + System.out.println("menu data...." + submenu.size()); + + System.out.println("deleting start..."); + for (int i = 0; i < submenu.size(); i++) { + MenuDet m = menuDetRepository.findById(submenu.get(i).getMenuItemId()).orElseThrow(null); + List li = grpMenuAccessRepository.findlist(m.getMenuItemId()); + + for (GrpMenuAccess g : li) { + grpMenuAccessRepository.delete(g); + } + menuDetRepository.delete(m); + int rsize = size - i; + System.out.println(i + " menu deleted now size is...." + rsize); + + } + + // delete menu + MenuDet formenu = menuDetRepository.findById(menu_item_id).orElseThrow(null); + + List all = grpMenuAccessRepository.findByGrpAndMenuid1(formenu.getMenuItemId()); + + for (GrpMenuAccess a : all) { + grpMenuAccessRepository.delete(a); + } + +// menuDetRepository.delete(formenu); + System.out.println("deleting complete..."); + + } + +////LOAD MENU DET' MENU AND SUBMENU BY USER ID +//@GetMapping("/loadmenu/{use_by}") +//public List getmenubyuserid(@PathVariable Long use_by) { +// List root = menuDetRepository.findAllrootsbyuseby(use_by); +// +// for(MenuDet m:root) { +// +// List allSubmenu = menuDetRepository.findAllSubmenuByMenuId(m.getMenuItemId()); +// MenuDet menu = menuDetRepository.findById(m.getMenuItemId()).orElse(null); +// menu.setSubMenus(allSubmenu); +// } +// +// return root; +//} + +////GROUP MENU ACCESS MENU LOAD BY USER +//@GetMapping("/menuloadbyuser") +//public ResponseEntity setmenuforuser(){ +// AppUser loggedInUser = userService.getLoggedInUser(); +// Long usrGrp = loggedInUser.getUsrGrp().getUsrGrp(); +// +// List root = grpMenuAccessRepository.findAllRootsbyusrGrp(usrGrp); +// for(int i =0; i allSubmenu = grpMenuAccessRepository.findAllSubmenu(root.get(i).getParent()); +// menu.setSubMenus(allSubmenu); +// } +// return new ResponseEntity<>(root, HttpStatus.OK); +//} + // DELETE MENU AND SUBMENU IN GRP MENU ACCESS BY MENU ITEM ID + @DeleteMapping("/DelMenu_WithSub1/{menu_item_id}/{usrGrp}") + public void deletemenuandsubmenu(@PathVariable Long menu_item_id, @PathVariable Long usrGrp) { +// AppUser loggedInUser = userService.getLoggedInUser(); +// Long usrGrp = loggedInUser.getUsrGrp().getUsrGrp(); + + // delete submenu + List li = grpMenuAccessRepository.findAllSubmenuByMenuId(menu_item_id, usrGrp); + for (GrpMenuAccess g : li) { + grpMenuAccessRepository.delete(g); + } + + // delete menu + GrpMenuAccess all = grpMenuAccessRepository.findSingle(usrGrp, menu_item_id); + grpMenuAccessRepository.delete(all); + + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller1/MenuController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller1/MenuController.java new file mode 100644 index 0000000..24fbf2c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller1/MenuController.java @@ -0,0 +1,407 @@ +package com.realnet.fnd.controller1; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Objects; +import java.util.Optional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.exceptions.ResourceNotFoundException; +import com.realnet.fnd.entity1.GrpMenuAccess; +import com.realnet.fnd.entity1.MenuDet; +import com.realnet.fnd.entity1.MixMenuNew; +import com.realnet.fnd.repository1.GrpMenuAccessRepository; +import com.realnet.fnd.repository1.MenuDetRepository; +import com.realnet.fnd.response.EntityResponse; +import com.realnet.users.entity1.AppUserRole; +import com.realnet.users.repository1.AppUserRoleRepository; + +import io.swagger.annotations.Api; + +@RestController +@RequestMapping(value = "/api1", produces = MediaType.APPLICATION_JSON_VALUE) +@Api(tags = { "Rn_Menu_Group" }) +@CrossOrigin("*") + +public class MenuController { + + @Autowired + private AppUserRoleRepository appUserRoleRepository; + + private MenuDetRepository menuDetRepository; + private GrpMenuAccessRepository grpMenuAccessRepository; + + @Autowired + public MenuController(MenuDetRepository menuDetRepository, GrpMenuAccessRepository grpMenuAccessRepository) { + super(); + + this.menuDetRepository = menuDetRepository; + this.grpMenuAccessRepository = grpMenuAccessRepository; + } + + @GetMapping("/allmenus") + public ResponseEntity getallmenu() { + List menu = menuDetRepository.getallmenu(); + return new ResponseEntity<>(menu, HttpStatus.OK); + } + +// ADD DATA FOR SEC MENU DETAIL + @PostMapping("/Sec_menuDet") + public ResponseEntity adddata(@RequestBody MenuDet menuDet) { + MenuDet save = menuDetRepository.save(menuDet); + return new ResponseEntity<>(save, HttpStatus.CREATED); + } + +// GET BY MENU ITEM ID + @GetMapping("/Sec_menuDet/{menu_item_id}") + public ResponseEntity getdata(@PathVariable Long menu_item_id) { + MenuDet save = menuDetRepository.findById(menu_item_id) + .orElseThrow(() -> new ResourceNotFoundException("id not found")); + return new ResponseEntity<>(save, HttpStatus.CREATED); + } + +// GET MENU AND SUBMENU of MENU DET + @GetMapping("/submenu1") + public List submenu() { + List root = menuDetRepository.findAllRootsByMenuId(); + + for (MenuDet m : root) { + + List allSubmenu = menuDetRepository.findAllSubmenuByMenuId(m.getMenuItemId()); + MenuDet menu = menuDetRepository.findById(m.getMenuItemId()).orElse(null); + menu.setSubMenus(allSubmenu); + } + + return root; + } + +// Get Only SubMenu OF MENU DET + @GetMapping("/submenu1/{menu_item_id}") + public ResponseEntity getonlysubmenu(@PathVariable Long menu_item_id) { + List submenu = menuDetRepository.findAllSubmenuByMenuId(menu_item_id); + + return new ResponseEntity<>(submenu, HttpStatus.OK); + + } + +// GET MENU AND SUBMENU of GROUP MENU ACCESS + @GetMapping("/grpmenuandsubmenu") + public List GRPMENUACCESS() { + List root = grpMenuAccessRepository.findAllRoots(); + + for (int i = 0; i < root.size(); i++) { + + // find menu item id by menu id =0 + List menu = grpMenuAccessRepository.findById(root.get(i).getUsrGrp().getUsrGrp(), + root.get(i).getMenuItemId().getMenuItemId()); // menuItem id will be unique + for (GrpMenuAccess g : menu) { + + List allSubmenu = grpMenuAccessRepository + .findAllSubmenuByMenuId(g.getMenuItemId().getMenuItemId(), g.getUsrGrp().getUsrGrp()); // find + // all + // submenu + // by + // menuid + // = + // menu + // itemid + g.setSubMenus(allSubmenu); + } + + } + + return root; + } + +// Get Only SubMenu of GROUP MENU ACCESS + @GetMapping("/grpmenuandsubmenu/{menu_item_id}") + public ResponseEntity grpmenuaccess(@PathVariable Long menu_item_id) { + List submenu = grpMenuAccessRepository.findAllSubmenu(menu_item_id); + + return new ResponseEntity<>(submenu, HttpStatus.OK); + + } + +// update by menu_item_id + @PutMapping("/submenu1/{menu_item_id}") + public ResponseEntity updatedata(@RequestBody MenuDet d, @PathVariable Long menu_item_id) { + MenuDet menu = menuDetRepository.findById(menu_item_id).orElseThrow(null); + + menu.setItemSeq(d.getItemSeq()); + menu.setMain_menu_action_name(d.getMain_menu_action_name()); + menu.setMain_menu_icon_name(d.getMain_menu_icon_name()); + menu.setMenuId(d.getMenuId()); + menu.setMenuItemDesc(d.getMenuItemDesc()); + menu.setModuleName(d.getModuleName()); + menu.setStatus(d.getStatus()); + + MenuDet save = menuDetRepository.save(menu); + return new ResponseEntity<>(save, HttpStatus.CREATED); + } + +// delete DATA SEC MENU DET WITH GRPMENUACCESS by menuItemId + @DeleteMapping("/menu/{menu_item_id}") + public ResponseEntity delete(@PathVariable Long menu_item_id) { + + List findlist = grpMenuAccessRepository.findlist(menu_item_id); + System.out.println(" get grpmenu access data .." + findlist.size()); + + if (!findlist.isEmpty()) { + + for (GrpMenuAccess g : findlist) { + grpMenuAccessRepository.delete(g); + } + } +// else { +// GrpMenuAccess menuAccess = grpMenuAccessRepository.findbymenuitemid(menu_item_id); +// grpMenuAccessRepository.delete(menuAccess); +// System.out.println(" get grpmenu access data individualy data deleted .."); +// +// } + + MenuDet menu = menuDetRepository.findById(menu_item_id).get(); + menuDetRepository.delete(menu); + + Optional cmenu = menuDetRepository.findById(menu_item_id); + + if (!cmenu.isPresent()) { + + System.out.println(" Main Menu deleted .."); + return new ResponseEntity<>(new EntityResponse("menu deleted"), HttpStatus.CREATED); + } else { + return new ResponseEntity<>(new EntityResponse("menu not deleted"), HttpStatus.BAD_REQUEST); + + } + + } + +// GET GROUP MENU ACCESS BY USR_GROUP with WITH SUBMENU + + @GetMapping("/grpmenuaccess/{usr_grp}") + public ResponseEntity GETGROUPMENU(@PathVariable Long usr_grp) { + + List list = new ArrayList<>(); + GrpMenuAccess grp = grpMenuAccessRepository.findByUsrGrp(usr_grp); + +// List sub = menuDetRepository.findAllSubmenuByMenuId(grp.getMenuItemId().getMenuItemId()); + List sub = menuDetRepository.findAllSubmenuforusrgrp(grp.getMenuItemId().getMenuItemId()); + + list.add(grp); + list.add(sub); + return new ResponseEntity<>(list, HttpStatus.OK); + + } + +// get all + @GetMapping("/getAllData") + public ResponseEntity> getAllGroupMenuAccess() { + List listgrp = grpMenuAccessRepository.findAll(); + return new ResponseEntity<>(listgrp, HttpStatus.OK); + } + +// get by USRGRP WITHOUT SUBMENU + +// @GetMapping("/getById/{userId}") +// public ResponseEntity getGrpMenuByUserId(@PathVariable Long userId){ +// GrpMenuAccess grpMenuAccess=grpMenuAccessRepository.findByUsrGrp(userId); +// if(grpMenuAccess==null)throw new ResourceNotFoundException("no resource found"); +// return new ResponseEntity<>(grpMenuAccess,HttpStatus.OK); +// } + +// update by usr grp id + @PutMapping("/updatemenuaccess/{userId}") + public ResponseEntity updateMenuAccess(@PathVariable Long userId, @RequestBody GrpMenuAccess grpMenuAccess) { + GrpMenuAccess g1 = grpMenuAccessRepository.findByUsrGrp(userId); + if (g1 == null) { + throw new ResourceNotFoundException("no resource found"); + } + g1.setMCreate(grpMenuAccess.getMCreate()); + g1.setMDelete(grpMenuAccess.getMDelete()); + g1.setMEdit(grpMenuAccess.getMEdit()); + g1.setMQuery(grpMenuAccess.getMQuery()); + g1.setMVisible(grpMenuAccess.getMVisible()); + g1.setMexport(grpMenuAccess.getMexport()); + + GrpMenuAccess grpMenuAccess2 = grpMenuAccessRepository.save(g1); + return new ResponseEntity<>(grpMenuAccess2, HttpStatus.OK); + } + +// delete by usrgrp + @DeleteMapping("/deleteMenuAcces/{userId}") + public void deleteMenuAccess(@PathVariable Long userId) { + GrpMenuAccess grpMenuAccess = grpMenuAccessRepository.findByUsrGrp(userId); + if (Objects.isNull(grpMenuAccess)) + throw new ResourceNotFoundException("no resource found"); + grpMenuAccessRepository.delete(grpMenuAccess); + } + +// ADD MULTIPLE DATA FOR GROUP MENU ACCESS + @PostMapping("/group") + public ResponseEntity addgroupmenuaccess(@RequestBody List grp) { + + for (GrpMenuAccess g : grp) { + MenuDet menu1 = menuDetRepository.findById(g.getGmenuid()).orElseThrow(null); + AppUserRole a = appUserRoleRepository.findById(g.getGrpid()).orElseThrow(null); + + g.setUsrGrp(a); + g.setMenuItemId(menu1); + } + List save = grpMenuAccessRepository.saveAll(grp); + return new ResponseEntity<>(save, HttpStatus.CREATED); + } + +// ADD DATA FOR group menu access + @PostMapping("/singlegroup") + public ResponseEntity addsinglegroup(@RequestBody GrpMenuAccess grp) { + + MenuDet menu1 = menuDetRepository.findById(grp.getGmenuid()).orElseThrow(null); + AppUserRole a = appUserRoleRepository.findById(grp.getGrpid()).orElseThrow(null); + + grp.setUsrGrp(a); + grp.setMenuItemId(menu1); + + GrpMenuAccess save = grpMenuAccessRepository.save(grp); + return new ResponseEntity<>(save, HttpStatus.CREATED); + } + +// NEWWWW post MENU AND SUBMENU IN GROUPMENUACCESS + + @PostMapping("/addgrpwithsubmenu") + public ResponseEntity adds(@RequestBody GrpMenuAccess g) { + + List list = new ArrayList<>(); + + Optional a = grpMenuAccessRepository.findbygrpandmenuid(g.getGmenuid(), g.getGrpid()); + if (!a.isPresent()) { + MenuDet me = menuDetRepository.findById(g.getGmenuid()).orElseThrow(null); + g.setMenuItemId(me); + g.setItemSeq(me.getItemSeq()); + g.setMenuItemDesc(me.getMenuItemDesc()); + g.setMenuItemDesc(me.getMenuItemDesc()); + g.setModuleName(me.getModuleName()); + g.setStatus(me.getStatus()); + g.setMain_menu_action_name(me.getMain_menu_action_name()); + g.setMain_menu_icon_name(me.getMain_menu_icon_name()); + g.setMenuId(me.getMenuId()); + + AppUserRole app1 = appUserRoleRepository.findById(g.getGrpid()).orElseThrow(null); + g.setUsrGrp(app1); + g.setMCreate("true"); + g.setMDelete("true"); + g.setMEdit("true"); + g.setMQuery("true"); + g.setMVisible("true"); + g.setIsdisable("true"); + g.setMexport("true"); + + g.setCreatedAt(new Date()); + g.setUpdatedAt(new Date()); + + GrpMenuAccess save1 = grpMenuAccessRepository.save(g); + list.add(save1); + + List submenu = menuDetRepository.findAllSubmenuByMenuId(g.getGmenuid()); + + for (int i = 0; i < submenu.size(); i++) { + MenuDet m = menuDetRepository.findById(submenu.get(i).getMenuItemId()).orElseThrow(null); + g.setMenuItemId(m); + g.setItemSeq(m.getItemSeq()); + g.setMenuItemDesc(m.getMenuItemDesc()); + g.setModuleName(m.getModuleName()); + g.setStatus(m.getStatus()); + g.setMain_menu_action_name(m.getMain_menu_action_name()); + g.setMain_menu_icon_name(m.getMain_menu_icon_name()); + g.setMenuId(m.getMenuId()); + + AppUserRole app = appUserRoleRepository.findById(g.getGrpid()).orElseThrow(null); + g.setUsrGrp(app); + g.setMCreate("true"); + g.setMDelete("true"); + g.setMEdit("true"); + g.setMQuery("true"); + g.setMVisible("true"); + g.setIsdisable("true"); + g.setMexport("true"); + + g.setCreatedAt(new Date()); + g.setUpdatedAt(new Date()); + + GrpMenuAccess save = grpMenuAccessRepository.save(g); + list.add(save); + } + + return new ResponseEntity<>(list, HttpStatus.CREATED); + + } else { + return new ResponseEntity<>("already added menu", HttpStatus.BAD_REQUEST); + } + + } + +// GET ALL GRPACCESS BY USRGRP + @GetMapping("getusracces1/{usr_grp}") + public ResponseEntity getallbyusrgrp(@PathVariable Long usr_grp) { + List list = grpMenuAccessRepository.findAllByUsrGrp(usr_grp); + return new ResponseEntity<>(list, HttpStatus.OK); + + } + +// UPDATE GRP MENU ACCESS BY MENU ITEMID + @PutMapping("/update/{menu_item_id}/{usr_grp}") + public ResponseEntity updateMenuGRPAccess(@PathVariable Long menu_item_id, @PathVariable Long usr_grp, + @RequestBody GrpMenuAccess grpMenuAccess) { + GrpMenuAccess g1 = grpMenuAccessRepository.findByUsrgrpAndMenuitemid(menu_item_id, usr_grp); + if (g1 == null) { + throw new ResourceNotFoundException("no resource found"); + } + g1.setMCreate(grpMenuAccess.getMCreate()); + g1.setMDelete(grpMenuAccess.getMDelete()); + g1.setMEdit(grpMenuAccess.getMEdit()); + g1.setMQuery(grpMenuAccess.getMQuery()); + g1.setMVisible(grpMenuAccess.getMVisible()); + g1.setIsdisable(grpMenuAccess.getIsdisable()); + g1.setItemSeq(grpMenuAccess.getItemSeq()); + g1.setMain_menu_action_name(grpMenuAccess.getMain_menu_action_name()); + g1.setMain_menu_icon_name(grpMenuAccess.getMain_menu_action_name()); + g1.setMenuId(grpMenuAccess.getMenuId()); + g1.setMenuItemDesc(grpMenuAccess.getMenuItemDesc()); + g1.setModuleName(grpMenuAccess.getModuleName()); + g1.setStatus(grpMenuAccess.getStatus()); + g1.setMexport(grpMenuAccess.getMexport()); + + GrpMenuAccess grpMenuAccess2 = grpMenuAccessRepository.save(g1); + return new ResponseEntity<>(grpMenuAccess2, HttpStatus.OK); + } + +// DELETE GRPMENU ACCESS BY MENUITEMID AND USRGRP + @DeleteMapping("/deleteGrpMenuAcces/{menu_item_id}/{usr_grp}") + public void deleteGrpMenuAccess(@PathVariable Long menu_item_id, @PathVariable Long usr_grp) { + GrpMenuAccess grpMenuAccess = grpMenuAccessRepository.findByUsrgrpAndMenuitemid(menu_item_id, usr_grp); + if (Objects.isNull(grpMenuAccess)) + throw new ResourceNotFoundException("no resource found"); + grpMenuAccessRepository.delete(grpMenuAccess); + } + +// GET GRPMENU ACCESS BY MENUITEM ID BUT NOT WORKING WITH SUBMENU + @GetMapping("/getsec/{menu_item_id}") + public ResponseEntity getgrpmenuaccess(@PathVariable Long menu_item_id) { + GrpMenuAccess get = grpMenuAccessRepository.findById1(menu_item_id); + + return new ResponseEntity<>(get, HttpStatus.CREATED); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller1/QueryController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller1/QueryController.java new file mode 100644 index 0000000..d1ed5e8 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller1/QueryController.java @@ -0,0 +1,85 @@ +package com.realnet.fnd.controller1; + +import java.util.List; +import java.util.Objects; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.exceptions.ResourceNotFoundException; +import com.realnet.fnd.entity1.Query; +import com.realnet.fnd.repository1.QueryRepository; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.service1.AppUserServiceImpl; + +@RequestMapping(value = "/FndQuery", produces = MediaType.APPLICATION_JSON_VALUE) +@RestController +public class QueryController { + + @Autowired + private QueryRepository queryRepository; + @Autowired + private AppUserServiceImpl userService; + +// ADD DATA + @PostMapping("/query") + public ResponseEntity add(@RequestBody Query query) { + AppUser loggedInUser = userService.getLoggedInUser(); + query.setAccountId(loggedInUser.getAccount().getAccount_id()); + query.setCreatedBy(loggedInUser.getUserId()); + + Query save = queryRepository.save(query); + return new ResponseEntity<>(save, HttpStatus.CREATED); + } + +// GET BY ID + @GetMapping("/query/{id}") + public ResponseEntity get(@PathVariable Long id) { + Query query = queryRepository.findById(id).orElseThrow(null); + return new ResponseEntity<>(query, HttpStatus.OK); + + } + +// GET ALL + @GetMapping("/query") + public ResponseEntity getall() { + List query = queryRepository.findAll(); + return new ResponseEntity<>(query, HttpStatus.OK); + + } + +// UPDATE BY ID + @PutMapping("/query/{id}") + public ResponseEntity updateMenuGRPAccess(@PathVariable Long id, @RequestBody Query q) { + Query query = queryRepository.findById(id).orElseThrow(null); + if (query == null) { + throw new ResourceNotFoundException("no resource found"); + } + query.setSql_query(q.getSql_query()); + query.setQueryname(q.getQueryname()); + + Query a = queryRepository.save(query); + return new ResponseEntity<>(a, HttpStatus.OK); + } + +// delete BY ID + @DeleteMapping("/query/{id}") + public void deleteGrpMenuAccess(@PathVariable Long id) { + Query query = queryRepository.findById(id).orElseThrow(null); + if (Objects.isNull(query)) + throw new ResourceNotFoundException("no resource found"); + + queryRepository.delete(query); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller1/TokenFreeController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller1/TokenFreeController.java new file mode 100644 index 0000000..e3a41d8 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller1/TokenFreeController.java @@ -0,0 +1,43 @@ +package com.realnet.fnd.controller1; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.Dashboard1.Entity.Dashbord_Header; +import com.realnet.Dashboard1.Service.HeaderService; +import com.realnet.fnd.entity1.MenuDet; +import com.realnet.fnd.service1.SecmenuDetailService; + +@RestController +@RequestMapping("/token") +public class TokenFreeController { + + @Autowired + private SecmenuDetailService secmenuDetailService; + + @Autowired + private HeaderService headerService; + +// add Custom sec menu detail + @PostMapping("/Sec_menuDet/custom") + public ResponseEntity addCustomMenu(@RequestParam String tableName, @RequestParam Long menuid) { + + MenuDet menuDet = secmenuDetailService.customsecmenuadd(tableName, tableName, menuid); + + return new ResponseEntity<>(menuDet, HttpStatus.CREATED); + } + +// add dashboard + @PostMapping("/dashboard") + public Dashbord_Header Savedata(@RequestBody Dashbord_Header dashbord_Header) { + Dashbord_Header dash = headerService.Savedata(dashbord_Header); + return dash; + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/DropDownDTO.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/DropDownDTO.java new file mode 100644 index 0000000..bb3f136 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/DropDownDTO.java @@ -0,0 +1,35 @@ +package com.realnet.fnd.entity; + +public class DropDownDTO { + private int id; + private String name; + + public DropDownDTO() { + super(); + // TODO Auto-generated constructor stub + } + + public DropDownDTO(int id, String name) { + super(); + this.id = id; + this.name = name; + } + + public int getId() { + return id; + } + public void setId(int id) { + this.id = id; + } + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + + @Override + public String toString() { + return "DropDownDTO [id=" + id + ", name=" + name + "]"; + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Error.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Error.java new file mode 100644 index 0000000..dcf2fc4 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Error.java @@ -0,0 +1,41 @@ +package com.realnet.fnd.entity; + +import java.io.Serializable; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +@JsonIgnoreProperties({ "hibernateLazyInitializer", "handler" }) +public class Error implements Serializable { + + private static final long serialVersionUID = 1L; + + private String message; + + private String title; + + public String getMessage () + { + return message; + } + + public void setMessage (String message) + { + this.message = message; + } + + public String getTitle () + { + return title; + } + + public void setTitle (String title) + { + this.title = title; + } + + @Override + public String toString() + { + return "ClassPojo [message = "+message+", title = "+title+"]"; + } +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/ErrorPojo.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/ErrorPojo.java new file mode 100644 index 0000000..c99f3ec --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/ErrorPojo.java @@ -0,0 +1,38 @@ +package com.realnet.fnd.entity; + +import java.io.Serializable; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +@JsonIgnoreProperties({ "hibernateLazyInitializer", "handler" }) +public class ErrorPojo implements Serializable { + + private static final long serialVersionUID = 1L; + + private Error error; + + public ErrorPojo() { + + } + + public ErrorPojo(Error error) { + this.error = error; + } + + public Error getError () + { + return error; + } + + public void setError (Error error) + { + this.error = error; + } + + @Override + public String toString() + { + return "ClassPojo [error = "+error+"]"; + } +} + diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/ModuleCopyDTO.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/ModuleCopyDTO.java new file mode 100644 index 0000000..3b60623 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/ModuleCopyDTO.java @@ -0,0 +1,12 @@ +package com.realnet.fnd.entity; + +import lombok.Data; + +@Data +public class ModuleCopyDTO { + private int from_projectId; + private int from_moduleId; + private String to_moduleName; + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Modulemini.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Modulemini.java new file mode 100644 index 0000000..888ff33 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Modulemini.java @@ -0,0 +1,8 @@ +package com.realnet.fnd.entity; + +public interface Modulemini { + + String getid(); + String getmodule_name(); + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/ProjectMini.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/ProjectMini.java new file mode 100644 index 0000000..f063c68 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/ProjectMini.java @@ -0,0 +1,7 @@ +package com.realnet.fnd.entity; + +public interface ProjectMini { + String getid(); + String getproject_name(); + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_AuditEntity.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_AuditEntity.java new file mode 100644 index 0000000..3c5431d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_AuditEntity.java @@ -0,0 +1,82 @@ +package com.realnet.fnd.entity; + +import java.io.Serializable; +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.EntityListeners; +import javax.persistence.MappedSuperclass; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; + +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +@MappedSuperclass +@EntityListeners(AuditingEntityListener.class) +public abstract class Rn_AuditEntity extends Rn_ExtensionEntity implements Serializable { + + private static final long serialVersionUID = 1L; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "CREATED_AT", nullable = false, updatable = false) + @CreatedDate + private Date createdAt; + + //@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createdAt; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "UPDATED_AT", nullable = false) + @LastModifiedDate + private Date updatedAt; + + @Column(name = "CREATED_BY", updatable = false) + private String createdBy; + + @Column(name = "UPDATED_BY") + private String updatedBy; + + @Column(name = "ACCOUNT_ID") + private String accountId; + + public Date getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(Date createdAt) { + this.createdAt = createdAt; + } + + public Date getUpdatedAt() { + return updatedAt; + } + + public void setUpdatedAt(Date updatedAt) { + this.updatedAt = updatedAt; + } + + public String getCreatedBy() { + return createdBy; + } + + public void setCreatedBy(String createdBy) { + this.createdBy = createdBy; + } + + public String getUpdatedBy() { + return updatedBy; + } + + public void setUpdatedBy(String updatedBy) { + this.updatedBy = updatedBy; + } + + public String getAccountId() { + return accountId; + } + + public void setAccountId(String accountId) { + this.accountId = accountId; + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Dynamic_Transaction.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Dynamic_Transaction.java new file mode 100644 index 0000000..aabeec7 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Dynamic_Transaction.java @@ -0,0 +1,435 @@ +package com.realnet.fnd.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Lob; +import javax.persistence.Table; + +@Entity +@Table(name = "RN_DYNAMIC_TRANSACTION") +public class Rn_Dynamic_Transaction extends Rn_Who_Columns { + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "ID") + private int id; + + @Column(name = "FORM_ID") + private int form_id; + + @Column(name = "FORM_VERSION") + private int form_version; + + @Column(name = "COMP1") + private String comp1; + + @Column(name = "COMP2") + private String comp2; + + @Column(name = "COMP3") + private String comp3; + + @Column(name = "COMP4") + private String comp4; + + @Column(name = "COMP5") + private String comp5; + + @Column(name = "COMP6") + private String comp6; + + @Column(name = "COMP7") + private String comp7; + + @Column(name = "COMP8") + private String comp8; + + @Column(name = "COMP9") + private String comp9; + + @Column(name = "COMP10") + private String comp10; + + @Column(name = "COMP11") + private String comp11; + + @Column(name = "COMP12") + private String comp12; + + @Column(name = "COMP13") + private String comp13; + + @Column(name = "COMP14") + private String comp14; + + @Column(name = "COMP15") + private String comp15; + + @Column(name = "COMP16") + private String comp16; + + @Column(name = "COMP17") + private String comp17; + + @Column(name = "COMP18") + private String comp18; + + @Column(name = "COMP19") + private String comp19; + + @Column(name = "COMP20") + private String comp20; + + @Column(name = "COMP21") + private String comp21; + + @Column(name = "COMP22") + private String comp22; + + @Column(name = "COMP23") + private String comp23; + + @Column(name = "COMP24") + private String comp24; + + @Column(name = "COMP25") + private String comp25; + + // FOR LONG-TEXT FIELDS + @Lob + @Column(name = "COMP_L26", length = 100000) + private String comp_l26; + + @Lob + @Column(name = "COMP_L27", length = 100000) + private String comp_l27; + + @Lob + @Column(name = "COMP_L28", length = 100000) + private String comp_l28; + + @Lob + @Column(name = "COMP_L29", length = 100000) + private String comp_l29; + + @Lob + @Column(name = "COMP_L30", length = 100000) + private String comp_l30; + + public Rn_Dynamic_Transaction() { + super(); + } + + public Rn_Dynamic_Transaction(int id, int form_id, int form_version, String comp1, String comp2, String comp3, + String comp4, String comp5, String comp6, String comp7, String comp8, String comp9, String comp10, + String comp11, String comp12, String comp13, String comp14, String comp15, String comp16, String comp17, + String comp18, String comp19, String comp20, String comp21, String comp22, String comp23, String comp24, + String comp25, String comp_l26, String comp_l27, String comp_l28, String comp_l29, String comp_l30) { + super(); + this.id = id; + this.form_id = form_id; + this.form_version = form_version; + this.comp1 = comp1; + this.comp2 = comp2; + this.comp3 = comp3; + this.comp4 = comp4; + this.comp5 = comp5; + this.comp6 = comp6; + this.comp7 = comp7; + this.comp8 = comp8; + this.comp9 = comp9; + this.comp10 = comp10; + this.comp11 = comp11; + this.comp12 = comp12; + this.comp13 = comp13; + this.comp14 = comp14; + this.comp15 = comp15; + this.comp16 = comp16; + this.comp17 = comp17; + this.comp18 = comp18; + this.comp19 = comp19; + this.comp20 = comp20; + this.comp21 = comp21; + this.comp22 = comp22; + this.comp23 = comp23; + this.comp24 = comp24; + this.comp25 = comp25; + this.comp_l26 = comp_l26; + this.comp_l27 = comp_l27; + this.comp_l28 = comp_l28; + this.comp_l29 = comp_l29; + this.comp_l30 = comp_l30; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public int getForm_id() { + return form_id; + } + + public void setForm_id(int form_id) { + this.form_id = form_id; + } + + public int getForm_version() { + return form_version; + } + + public void setForm_version(int form_version) { + this.form_version = form_version; + } + + public String getComp1() { + return comp1; + } + + public void setComp1(String comp1) { + this.comp1 = comp1; + } + + public String getComp2() { + return comp2; + } + + public void setComp2(String comp2) { + this.comp2 = comp2; + } + + public String getComp3() { + return comp3; + } + + public void setComp3(String comp3) { + this.comp3 = comp3; + } + + public String getComp4() { + return comp4; + } + + public void setComp4(String comp4) { + this.comp4 = comp4; + } + + public String getComp5() { + return comp5; + } + + public void setComp5(String comp5) { + this.comp5 = comp5; + } + + public String getComp6() { + return comp6; + } + + public void setComp6(String comp6) { + this.comp6 = comp6; + } + + public String getComp7() { + return comp7; + } + + public void setComp7(String comp7) { + this.comp7 = comp7; + } + + public String getComp8() { + return comp8; + } + + public void setComp8(String comp8) { + this.comp8 = comp8; + } + + public String getComp9() { + return comp9; + } + + public void setComp9(String comp9) { + this.comp9 = comp9; + } + + public String getComp10() { + return comp10; + } + + public void setComp10(String comp10) { + this.comp10 = comp10; + } + + public String getComp11() { + return comp11; + } + + public void setComp11(String comp11) { + this.comp11 = comp11; + } + + public String getComp12() { + return comp12; + } + + public void setComp12(String comp12) { + this.comp12 = comp12; + } + + public String getComp13() { + return comp13; + } + + public void setComp13(String comp13) { + this.comp13 = comp13; + } + + public String getComp14() { + return comp14; + } + + public void setComp14(String comp14) { + this.comp14 = comp14; + } + + public String getComp15() { + return comp15; + } + + public void setComp15(String comp15) { + this.comp15 = comp15; + } + + public String getComp16() { + return comp16; + } + + public void setComp16(String comp16) { + this.comp16 = comp16; + } + + public String getComp17() { + return comp17; + } + + public void setComp17(String comp17) { + this.comp17 = comp17; + } + + public String getComp18() { + return comp18; + } + + public void setComp18(String comp18) { + this.comp18 = comp18; + } + + public String getComp19() { + return comp19; + } + + public void setComp19(String comp19) { + this.comp19 = comp19; + } + + public String getComp20() { + return comp20; + } + + public void setComp20(String comp20) { + this.comp20 = comp20; + } + + public String getComp21() { + return comp21; + } + + public void setComp21(String comp21) { + this.comp21 = comp21; + } + + public String getComp22() { + return comp22; + } + + public void setComp22(String comp22) { + this.comp22 = comp22; + } + + public String getComp23() { + return comp23; + } + + public void setComp23(String comp23) { + this.comp23 = comp23; + } + + public String getComp24() { + return comp24; + } + + public void setComp24(String comp24) { + this.comp24 = comp24; + } + + public String getComp25() { + return comp25; + } + + public void setComp25(String comp25) { + this.comp25 = comp25; + } + + public String getComp_l26() { + return comp_l26; + } + + public void setComp_l26(String comp_l26) { + this.comp_l26 = comp_l26; + } + + public String getComp_l27() { + return comp_l27; + } + + public void setComp_l27(String comp_l27) { + this.comp_l27 = comp_l27; + } + + public String getComp_l28() { + return comp_l28; + } + + public void setComp_l28(String comp_l28) { + this.comp_l28 = comp_l28; + } + + public String getComp_l29() { + return comp_l29; + } + + public void setComp_l29(String comp_l29) { + this.comp_l29 = comp_l29; + } + + public String getComp_l30() { + return comp_l30; + } + + public void setComp_l30(String comp_l30) { + this.comp_l30 = comp_l30; + } + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Ext_Fields.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Ext_Fields.java new file mode 100644 index 0000000..1712b55 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Ext_Fields.java @@ -0,0 +1,157 @@ +package com.realnet.fnd.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +import lombok.Data; + +@Data +@Entity +@Table(name = "RN_EXT_FIELD_T") +public class Rn_Ext_Fields extends Rn_Who_Columns { + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "ID") + private int id; + + @Column(name = "TYPE") + private String type; + + @Column(name = "FIELD_NAME") + private String field_name; + + @Column(name = "MAPPING") + private String mapping; + + @Column(name = "DATA_TYPE") + private String data_type; + + @Column(name = "FORM_CODE") + private String form_code; + + @Column(name = "IS_ACTIVE") + private boolean isActive; + + @Column(name = "ACCOUNT_ID") + private long account_id; + + + + + + + + +// @Column(name = "SP_NAME_FOR_AUTOCOMPLETE") +// private String sp_name_for_autocomplete; +// +// @Column(name = "SP_FOR_AUTOCOMPLETE") +// private String sp_for_autocomplete; +// +// @Column(name = "EXT_AUTO_ID") +// private String ext_auto_id; +// +// @Column(name = "EXT_DEPENDENT_ID") +// private String ext_dependent_id; +// +// @Column(name = "EXT_DD_ID") +// private String ext_dd_id; +// +// @Column(name = "SP_NAME") +// private String sp_name; +// +// @Column(name = "DROP_VALUE") +// private String drop_value; +// +// @Column(name = "DROPDOWN") +// private String dropdown; +// +// @Column(name = "MANDATORY") +// private String mandatory; +// +// @Column(name = "HIDDEN") +// private String hidden; +// +// @Column(name = "READONLY") +// private String readonly; +// +// @Column(name = "DEPENDENT") +// private String dependent; +// @Column(name = "SEQ_NAME") +// private String seq_name; +// +// @Column(name = "DEPENDENT_SP") +// private String dependent_sp; +// +// @Column(name = "DEPENDENT_SP_PARAM") +// private String dependent_sp_param; +// +// @Column(name = "VALIDATION_1") +// private String validation_1; +// +// @Column(name = "VAL_TYPE") +// private String val_type; +// +// @Column(name = "VAL_SP") +// private String val_sp; +// +// @Column(name = "VAL_SP_PARAM") +// private String val_sp_param; +// +// @Column(name = "SEQUENCE") +// private String sequence; +// +// @Column(name = "SEQ_SP") +// private String seq_sp; +// +// @Column(name = "SEQ_SP_PARAM") +// private String seq_sp_param; +// +// @Column(name = "DEFAULT_1") +// private String default_1; +// +// @Column(name = "DEFAULT_TYPE") +// private String default_type; +// +// @Column(name = "DEFAULT_VALUE") +// private String default_value; +// +// @Column(name = "DEFAULT_SP") +// private String default_sp; +// +// @Column(name = "DEFAULT_SP_PARAM") +// private String default_sp_param; +// +// @Column(name = "CALCULATED_FIELD") +// private String calculated_field; +// +// @Column(name = "CAL_SP") +// private String cal_sp; +// +// @Column(name = "CAL_SP_PARAM") +// private String cal_sp_param; +// +// @Column(name = "ADD_TO_GRID") +// private String add_to_grid; +// +// @Column(name = "DEPENDENT_ON") +// private String dependent_on; +// @Column(name = "RADIO") +// private String radio; +// @Column(name = "RADIO_OPTION") +// private String radio_option; + + + + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_ExtensionEntity.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_ExtensionEntity.java new file mode 100644 index 0000000..ed13b04 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_ExtensionEntity.java @@ -0,0 +1,183 @@ +package com.realnet.fnd.entity; + +import javax.persistence.Column; +import javax.persistence.MappedSuperclass; + +@MappedSuperclass +public class Rn_ExtensionEntity extends Rn_FlexEntity { + @Column(name = "EXTN1") + private String extn1; + @Column(name = "EXTN2") + private String extn2; + @Column(name = "EXTN3") + private String extn3; + @Column(name = "EXTN4") + private String extn4; + @Column(name = "EXTN5") + private String extn5; + @Column(name = "EXTN6") + private String extn6; + @Column(name = "EXTN7") + private String extn7; + @Column(name = "EXTN8") + private String extn8; + @Column(name = "EXTN9") + private String extn9; + @Column(name = "EXTN10") + private String extn10; + @Column(name = "EXTN11") + private String extn11; + @Column(name = "EXTN12") + private String extn12; + @Column(name = "EXTN13") + private String extn13; + @Column(name = "EXTN14") + private String extn14; + @Column(name = "EXTN15") + private String extn15; + + public Rn_ExtensionEntity() { + super(); + } + + public Rn_ExtensionEntity(String extn1, String extn2, String extn3, String extn4, String extn5, String extn6, + String extn7, String extn8, String extn9, String extn10, String extn11, String extn12, String extn13, + String extn14, String extn15) { + super(); + this.extn1 = extn1; + this.extn2 = extn2; + this.extn3 = extn3; + this.extn4 = extn4; + this.extn5 = extn5; + this.extn6 = extn6; + this.extn7 = extn7; + this.extn8 = extn8; + this.extn9 = extn9; + this.extn10 = extn10; + this.extn11 = extn11; + this.extn12 = extn12; + this.extn13 = extn13; + this.extn14 = extn14; + this.extn15 = extn15; + } + + public String getExtn1() { + return extn1; + } + + public void setExtn1(String extn1) { + this.extn1 = extn1; + } + + public String getExtn2() { + return extn2; + } + + public void setExtn2(String extn2) { + this.extn2 = extn2; + } + + public String getExtn3() { + return extn3; + } + + public void setExtn3(String extn3) { + this.extn3 = extn3; + } + + public String getExtn4() { + return extn4; + } + + public void setExtn4(String extn4) { + this.extn4 = extn4; + } + + public String getExtn5() { + return extn5; + } + + public void setExtn5(String extn5) { + this.extn5 = extn5; + } + + public String getExtn6() { + return extn6; + } + + public void setExtn6(String extn6) { + this.extn6 = extn6; + } + + public String getExtn7() { + return extn7; + } + + public void setExtn7(String extn7) { + this.extn7 = extn7; + } + + public String getExtn8() { + return extn8; + } + + public void setExtn8(String extn8) { + this.extn8 = extn8; + } + + public String getExtn9() { + return extn9; + } + + public void setExtn9(String extn9) { + this.extn9 = extn9; + } + + public String getExtn10() { + return extn10; + } + + public void setExtn10(String extn10) { + this.extn10 = extn10; + } + + public String getExtn11() { + return extn11; + } + + public void setExtn11(String extn11) { + this.extn11 = extn11; + } + + public String getExtn12() { + return extn12; + } + + public void setExtn12(String extn12) { + this.extn12 = extn12; + } + + public String getExtn13() { + return extn13; + } + + public void setExtn13(String extn13) { + this.extn13 = extn13; + } + + public String getExtn14() { + return extn14; + } + + public void setExtn14(String extn14) { + this.extn14 = extn14; + } + + public String getExtn15() { + return extn15; + } + + public void setExtn15(String extn15) { + this.extn15 = extn15; + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_FlexEntity.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_FlexEntity.java new file mode 100644 index 0000000..f498a5c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_FlexEntity.java @@ -0,0 +1,72 @@ +package com.realnet.fnd.entity; + +import javax.persistence.Column; +import javax.persistence.MappedSuperclass; + +@MappedSuperclass +public class Rn_FlexEntity { + @Column(name = "FLEX1") + private String flex1; + @Column(name = "FLEX2") + private String flex2; + @Column(name = "FLEX3") + private String flex3; + @Column(name = "FLEX4") + private String flex4; + @Column(name = "FLEX5") + private String flex5; + + public Rn_FlexEntity() { + super(); + } + + public Rn_FlexEntity(String flex1, String flex2, String flex3, String flex4, String flex5) { + super(); + this.flex1 = flex1; + this.flex2 = flex2; + this.flex3 = flex3; + this.flex4 = flex4; + this.flex5 = flex5; + } + + public String getFlex1() { + return flex1; + } + + public void setFlex1(String flex1) { + this.flex1 = flex1; + } + + public String getFlex2() { + return flex2; + } + + public void setFlex2(String flex2) { + this.flex2 = flex2; + } + + public String getFlex3() { + return flex3; + } + + public void setFlex3(String flex3) { + this.flex3 = flex3; + } + + public String getFlex4() { + return flex4; + } + + public void setFlex4(String flex4) { + this.flex4 = flex4; + } + + public String getFlex5() { + return flex5; + } + + public void setFlex5(String flex5) { + this.flex5 = flex5; + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Forms_Component_Setup.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Forms_Component_Setup.java new file mode 100644 index 0000000..b3edae3 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Forms_Component_Setup.java @@ -0,0 +1,124 @@ +package com.realnet.fnd.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + +import com.fasterxml.jackson.annotation.JsonBackReference; + +//@Data +//@EqualsAndHashCode(callSuper = false) +@Entity +@Table(name = "RN_FORMS_COMPONENT_SETUP_T") +public class Rn_Forms_Component_Setup extends Rn_Who_Columns { + private static final long serialVersionUID = 1L; + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "COMPONENT_ID") + private int component_id; + + @Column(name = "LABEL") + private String label; + + @Column(name = "TYPE") + private String type; + + @Column(name = "MAPPING") + private String mapping; + + @Column(name = "MANDATORY") + private String mandatory; + + @Column(name = "READONLY") + private String readonly; + + @Column(name = "DROP_VALUES") + private String drop_values; + + @Column(name = "SP") + private String sp; + + @ManyToOne(fetch = FetchType.LAZY, optional = false) + @JoinColumn(name = "form_id", nullable = false) + @JsonBackReference + private Rn_Forms_Setup rn_forms_setup; + + public int getComponent_id() { + return component_id; + } + + public void setComponent_id(int component_id) { + this.component_id = component_id; + } + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getMapping() { + return mapping; + } + + public void setMapping(String mapping) { + this.mapping = mapping; + } + + public String getMandatory() { + return mandatory; + } + + public void setMandatory(String mandatory) { + this.mandatory = mandatory; + } + + public String getReadonly() { + return readonly; + } + + public void setReadonly(String readonly) { + this.readonly = readonly; + } + + public String getDrop_values() { + return drop_values; + } + + public void setDrop_values(String drop_values) { + this.drop_values = drop_values; + } + + public String getSp() { + return sp; + } + + public void setSp(String sp) { + this.sp = sp; + } + + public Rn_Forms_Setup getRn_forms_setup() { + return rn_forms_setup; + } + + public void setRn_forms_setup(Rn_Forms_Setup rn_forms_setup) { + this.rn_forms_setup = rn_forms_setup; + } + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Forms_Setup.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Forms_Setup.java new file mode 100644 index 0000000..1391ade --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Forms_Setup.java @@ -0,0 +1,102 @@ +package com.realnet.fnd.entity; + +import java.util.List; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.OneToMany; +import javax.persistence.Table; + +import com.fasterxml.jackson.annotation.JsonManagedReference; + +//@Data +//@EqualsAndHashCode(callSuper = false) +@Entity +@Table(name = "RN_FORMS_SETUP_T") +public class Rn_Forms_Setup extends Rn_Who_Columns { + private static final long serialVersionUID = 1L; + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "FORM_ID") + private int form_id; + + @Column(name = "FORM_NAME") + private String form_name; + + @Column(name = "FORM_DESC") + private String form_desc; + + @Column(name = "RELATED_TO") + private String related_to; + + @Column(name = "PAGE_EVENT") + private String page_event; + + @Column(name = "BUTTON_CAPTION") + private String button_caption; + + @OneToMany(mappedBy = "rn_forms_setup", cascade = CascadeType.ALL) + @JsonManagedReference + private List components; + + public int getForm_id() { + return form_id; + } + + public void setForm_id(int form_id) { + this.form_id = form_id; + } + + public String getForm_name() { + return form_name; + } + + public void setForm_name(String form_name) { + this.form_name = form_name; + } + + public String getForm_desc() { + return form_desc; + } + + public void setForm_desc(String form_desc) { + this.form_desc = form_desc; + } + + public String getRelated_to() { + return related_to; + } + + public void setRelated_to(String related_to) { + this.related_to = related_to; + } + + public String getPage_event() { + return page_event; + } + + public void setPage_event(String page_event) { + this.page_event = page_event; + } + + public String getButton_caption() { + return button_caption; + } + + public void setButton_caption(String button_caption) { + this.button_caption = button_caption; + } + + public List getComponents() { + return components; + } + + public void setComponents(List components) { + this.components = components; + } + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Function_Register.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Function_Register.java new file mode 100644 index 0000000..2e57239 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Function_Register.java @@ -0,0 +1,111 @@ +package com.realnet.fnd.entity; + +import java.time.LocalDate; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +import com.fasterxml.jackson.annotation.JsonFormat; + +@Entity +@Table(name = "RN_FUNC_REGISTER") +public class Rn_Function_Register extends Rn_Who_Columns { + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "ID") + private int id; + + @Column(name = "MENU_ID") + private int menu_id; + + @Column(name = "FUNCTION_NAME") + private String function_name; + + @Column(name = "FUNCTION_ACTION_NAME") + private String function_action_name; + + @Column(name = "FUNCTION_ICON") + private String function_icon; + + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "MM/dd/yyyy") + @Column(name = "END_DATE") + private LocalDate end_date; + + @Column(name = "ENABLE_FLAG") + private String enable_flag; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public int getMenu_id() { + return menu_id; + } + + public void setMenu_id(int menu_id) { + this.menu_id = menu_id; + } + + public String getFunction_name() { + return function_name; + } + + public void setFunction_name(String function_name) { + this.function_name = function_name; + } + + public String getFunction_action_name() { + return function_action_name; + } + + public void setFunction_action_name(String function_action_name) { + this.function_action_name = function_action_name; + } + + public String getFunction_icon() { + return function_icon; + } + + public void setFunction_icon(String function_icon) { + this.function_icon = function_icon; + } + + public LocalDate getEnd_date() { + return end_date; + } + + public void setEnd_date(LocalDate end_date) { + this.end_date = end_date; + } + + public String getEnable_flag() { + return enable_flag; + } + + public void setEnable_flag(String enable_flag) { + this.enable_flag = enable_flag; + } + +// @Column(name = "MENU_NAME") +// private String menu_name; +// public String getMenu_name() { +// return menu_name; +// } +// public void setMenu_name(String menu_name) { +// this.menu_name = menu_name; +// } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Instance_Type.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Instance_Type.java new file mode 100644 index 0000000..579154c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Instance_Type.java @@ -0,0 +1,37 @@ +package com.realnet.fnd.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +@Entity +@Table(name = "RN_INSTANCE_TYPE_T") +public class Rn_Instance_Type { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "ID") + private Integer id; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + @Column(name = "INSTANCE_TYPE") + private String instanceType; + + public String getInstanceType() { + return instanceType; + } + + public void setInstanceType(String instanceType) { + this.instanceType = instanceType; + } + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Lookup_Values.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Lookup_Values.java new file mode 100644 index 0000000..e55cc87 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Lookup_Values.java @@ -0,0 +1,201 @@ +package com.realnet.fnd.entity; + +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +@Entity +@Table(name = "RN_LOOKUP_VALUES_T") + +public class Rn_Lookup_Values extends Rn_Who_Columns { + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "ID") + private Integer id; + + @Column(name = "LOOKUP_CODE") + private String lookupCode; + + @Column(name = "MEANING") + private String meaning; + + @Column(name = "DESCRIPTION") + private String description; + + @Column(name = "LOOKUP_TYPE") + private String lookupType; + + @Column(name = "ACTIVE_START_DATE") + private Date active_start_date; + + @Column(name = "ACTIVE_END_DATE") + private Date active_end_date; + + @Column(name = "DROP_VALUE") + private String dropValue; + + @Column(name = "ENABLED_FLAG") + private boolean enabled_flag; + + // +// @Column(name = "PATIENT_COUNTRY") +// private String patientCountry; +// +// +// +// @Column(name = "STATE_NAME") +// private String stateName; +// +// @Column(name = "CITY_NAME") +// private String cityName; +// +// @Column(name = "ZIP_CODE") +// private String zipCode; +// +// @Column(name = "COUNTRY_ID") +// private int country_id; + + public Rn_Lookup_Values() { + super(); + } + + + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getLookupCode() { + return lookupCode; + } + + public void setLookupCode(String lookupCode) { + this.lookupCode = lookupCode; + } + + public String getMeaning() { + return meaning; + } + + public void setMeaning(String meaning) { + this.meaning = meaning; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getLookupType() { + return lookupType; + } + + public void setLookupType(String lookupType) { + this.lookupType = lookupType; + } + + + + public String getDropValue() { + return dropValue; + } + + public void setDropValue(String dropValue) { + this.dropValue = dropValue; + } + + public Date getActive_start_date() { + return active_start_date; + } + + public void setActive_start_date(Date active_start_date) { + this.active_start_date = active_start_date; + } + + public Date getActive_end_date() { + return active_end_date; + } + + public void setActive_end_date(Date active_end_date) { + this.active_end_date = active_end_date; + } + + public boolean isEnabled_flag() { + return enabled_flag; + } + + public void setEnabled_flag(boolean enabled_flag) { + this.enabled_flag = enabled_flag; + } + +// @Column(name = "CREATED_BY") +// private int created_by; +// +// @DateTimeFormat(pattern = "dd/mm/yyyy") +// @Column(name = "CREATION_DATE") +// private Date creation_date = new java.sql.Date(new java.util.Date().getTime()); +// +// @Column(name = "LAST_UPDATED_BY") +// private int last_updated_by; +// +// @DateTimeFormat(pattern = "dd/mm/yyyy") +// @Column(name = "LAST_UPDATE_DATE") +// private Date last_update_date = new java.sql.Date(new java.util.Date().getTime()); + +// public String getPatientCountry() { +// return patientCountry; +// } +// +// public void setPatientCountry(String patientCountry) { +// this.patientCountry = patientCountry; +// } +// public String getStateName() { +// return stateName; +// } +// +// public void setStateName(String stateName) { +// this.stateName = stateName; +// } +// +// public String getCityName() { +// return cityName; +// } +// +// public void setCityName(String cityName) { +// this.cityName = cityName; +// } +// +// public String getZipCode() { +// return zipCode; +// } +// +// public void setZipCode(String zipCode) { +// this.zipCode = zipCode; +// } +// +// public int getCountry_id() { +// return country_id; +// } +// +// public void setCountry_id(int country_id) { +// this.country_id = country_id; +// } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Main_Menu.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Main_Menu.java new file mode 100644 index 0000000..f5ee817 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Main_Menu.java @@ -0,0 +1,108 @@ +package com.realnet.fnd.entity; + +import java.util.List; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.OneToMany; +import javax.persistence.Table; + +import com.fasterxml.jackson.annotation.JsonManagedReference; + +@Entity +@Table(name = "RN_MAIN_MENU") +public class Rn_Main_Menu extends Rn_Who_Columns { + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "ID") + private Integer id; + + @Column(name = "MENU_NAME") + private String menu_name; + + @Column(name = "MENU_ACTION_LINK") + private String menu_action_link; + + @Column(name = "MENU_ICON") + private String menu_icon; + + @Column(name = "MENU_TYPE") + private String menu_type; + + @OneToMany(mappedBy = "rn_main_menu", cascade = CascadeType.ALL) + @JsonManagedReference + private List sub_menus; + + public Rn_Main_Menu() { + super(); + } + + public Rn_Main_Menu(Integer id, String menu_name, String menu_action_link, String menu_icon, String menu_type, + List sub_menus) { + super(); + this.id = id; + this.menu_name = menu_name; + this.menu_action_link = menu_action_link; + this.menu_icon = menu_icon; + this.menu_type = menu_type; + this.sub_menus = sub_menus; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getMenu_name() { + return menu_name; + } + + public void setMenu_name(String menu_name) { + this.menu_name = menu_name; + } + + public String getMenu_action_link() { + return menu_action_link; + } + + public void setMenu_action_link(String menu_action_link) { + this.menu_action_link = menu_action_link; + } + + public String getMenu_icon() { + return menu_icon; + } + + public void setMenu_icon(String menu_icon) { + this.menu_icon = menu_icon; + } + + public String getMenu_type() { + return menu_type; + } + + public void setMenu_type(String menu_type) { + this.menu_type = menu_type; + } + + public List getSub_menus() { + return sub_menus; + } + + public void setSub_menus(List sub_menus) { + this.sub_menus = sub_menus; + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Menu_Group_Header.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Menu_Group_Header.java new file mode 100644 index 0000000..d1d87d7 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Menu_Group_Header.java @@ -0,0 +1,265 @@ +package com.realnet.fnd.entity; + +import java.time.LocalDate; +import java.util.List; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.OneToMany; +import javax.persistence.Table; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonManagedReference; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer; + +import lombok.Data; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Table(name = "RN_MENU_GROUP_HEADER") +public class Rn_Menu_Group_Header extends Rn_Who_Columns { + /** + * + */ + private static final long serialVersionUID = 1L; + + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "ID") + private Long id; + + @Column(name = "MENU_NAME") + private String menu_name; + + @Column(name = "DESCRIPTION") + private String description; + + @Column(name = "ACTIVE") + private boolean active; + + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "MM/dd/yyyy") + @JsonSerialize(using = LocalDateSerializer.class) + @Column(name = "START_DATE") + private LocalDate start_date; + + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "MM/dd/yyyy") + @JsonSerialize(using = LocalDateSerializer.class) + @Column(name = "END_DATE") + private LocalDate end_date; + + private String start_date_1; + private String end_date_1; + + // header + @OneToMany(mappedBy = "menu_group_header", cascade = CascadeType.ALL) + @JsonManagedReference + private List menu_group_lines; + + + public Rn_Menu_Group_Header() { + super(); + } + + + public Long getId() { + return id; + } + + + public void setId(Long id) { + this.id = id; + } + + + public String getMenu_name() { + return menu_name; + } + + + public void setMenu_name(String menu_name) { + this.menu_name = menu_name; + } + + + public String getDescription() { + return description; + } + + + public void setDescription(String description) { + this.description = description; + } + + + public boolean isActive() { + return active; + } + + + public void setActive(boolean active) { + this.active = active; + } + + + public LocalDate getStart_date() { + return start_date; + } + + + public void setStart_date(LocalDate start_date) { + this.start_date = start_date; + } + + + public LocalDate getEnd_date() { + return end_date; + } + + + public void setEnd_date(LocalDate end_date) { + this.end_date = end_date; + } + + + public String getStart_date_1() { + return start_date_1; + } + + + public void setStart_date_1(String start_date_1) { + this.start_date_1 = start_date_1; + } + + + public String getEnd_date_1() { + return end_date_1; + } + + + public void setEnd_date_1(String end_date_1) { + this.end_date_1 = end_date_1; + } + + + public List getMenu_group_lines() { + return menu_group_lines; + } + + + public void setMenu_group_lines(List menu_group_lines) { + this.menu_group_lines = menu_group_lines; + } + + + public static long getSerialversionuid() { + return serialVersionUID; + } + + + public Rn_Menu_Group_Header(Long id, String menu_name, String description, boolean active, LocalDate start_date, + LocalDate end_date, String start_date_1, String end_date_1, List menu_group_lines) { + super(); + this.id = id; + this.menu_name = menu_name; + this.description = description; + this.active = active; + this.start_date = start_date; + this.end_date = end_date; + this.start_date_1 = start_date_1; + this.end_date_1 = end_date_1; + this.menu_group_lines = menu_group_lines; + } + +// public Rn_Menu_Group_Header(int id, String menu_name, String description, boolean active, LocalDate start_date, +// LocalDate end_date, List menu_group_lines) { +// super(); +// this.id = id; +// this.menu_name = menu_name; +// this.description = description; +// this.active = active; +// this.start_date = start_date; +// this.end_date = end_date; +// this.menu_group_lines = menu_group_lines; +// } +// +// public int getId() { +// return id; +// } +// +// public void setId(int id) { +// this.id = id; +// } +// +// public String getMenu_name() { +// return menu_name; +// } +// +// public void setMenu_name(String menu_name) { +// this.menu_name = menu_name; +// } +// +// public String getDescription() { +// return description; +// } +// +// public void setDescription(String description) { +// this.description = description; +// } +// +// public boolean getActive() { +// return active; +// } +// +// public void setActive(boolean active) { +// this.active = active; +// } +// +// public LocalDate getStart_date() { +// return start_date; +// } +// +// public void setStart_date(LocalDate start_date) { +// this.start_date = start_date; +// } +// +// public LocalDate getEnd_date() { +// return end_date; +// } +// +// public void setEnd_date(LocalDate end_date) { +// this.end_date = end_date; +// } +// +// public List getMenu_group_lines() { +// return menu_group_lines; +// } +// +// public void setMenu_group_lines(List menu_group_lines) { +// this.menu_group_lines = menu_group_lines; +// } +// +// public String getStart_date_1() { +// return start_date_1; +// } +// +// public void setStart_date_1(String start_date_1) { +// this.start_date_1 = start_date_1; +// } +// +// public String getEnd_date_1() { +// return end_date_1; +// } +// +// public void setEnd_date_1(String end_date_1) { +// this.end_date_1 = end_date_1; +// } +// +// +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Menu_Group_Line.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Menu_Group_Line.java new file mode 100644 index 0000000..64fc465 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Menu_Group_Line.java @@ -0,0 +1,137 @@ +package com.realnet.fnd.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + +import com.fasterxml.jackson.annotation.JsonBackReference; + +@Entity +@Table(name = "RN_MENU_GROUP_LINE") +// @Table(name = "rn_menu_group_line_1") +public class Rn_Menu_Group_Line extends Rn_Who_Columns { + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "ID") + private int id; + + @Column(name = "MENU_ID") + private int menu_id; + + private String menu_name; + + + + @Column(name = "NAME") + private String name; + + @Column(name = "ACTIVE") + private boolean active; + + + @Column(name = "SEQ") + private int seq; + + @Column(name = "TYPE") + private String type; + + // line + @ManyToOne(fetch = FetchType.LAZY, optional = false) + @JoinColumn(name = "menu_group_header_id", nullable = false) + @JsonBackReference + private Rn_Menu_Group_Header menu_group_header; + + public Rn_Menu_Group_Line() { + super(); + } + + public Rn_Menu_Group_Line(int id, String name, boolean active, int menu_id, + int seq, String type, Rn_Menu_Group_Header menu_group_header) { + super(); + this.id = id; + this.name = name; + this.active = active; + this.menu_id = menu_id; + this.seq = seq; + this.type = type; + this.menu_group_header = menu_group_header; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public boolean getActive() { + return active; + } + + public void setActive(boolean active) { + this.active = active; + } + + + public int getMenu_id() { + return menu_id; + } + + public void setMenu_id(int menu_id) { + this.menu_id = menu_id; + } + + public int getSeq() { + return seq; + } + + public void setSeq(int seq) { + this.seq = seq; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public Rn_Menu_Group_Header getMenu_group_header() { + return menu_group_header; + } + + public void setMenu_group_header(Rn_Menu_Group_Header menu_group_header) { + this.menu_group_header = menu_group_header; + } + + public String getMenu_name() { + return menu_name; + } + + public void setMenu_name(String menu_name) { + this.menu_name = menu_name; + } + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Menu_Register.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Menu_Register.java new file mode 100644 index 0000000..4c6e7ea --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Menu_Register.java @@ -0,0 +1,109 @@ +package com.realnet.fnd.entity; + +import java.time.LocalDate; +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; + +import com.fasterxml.jackson.annotation.JsonFormat; + +@Entity +@Table(name = "RN_MENU_REGISTER") +public class Rn_Menu_Register extends Rn_Who_Columns { + + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "ID") + private int id; + + @Column(name = "MAIN_MENU_NAME") + private String main_menu_name; + + @Column(name = "MAIN_MENU_ACTION_NAME") + private String main_menu_action_name; + + @Column(name = "MAIN_MENU_ICON") + private String main_menu_icon; + + @Column(name = "ENABLE_FLAG") + private boolean enable_flag; + + // @DateTimeFormat(pattern = "dd/mm/yyyy") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "MM/dd/yyyy") + @Column(name = "END_DATE") + private LocalDate end_date; + + private String end_date_1; + + public Rn_Menu_Register() {} + + public boolean getEnable_flag() { + return enable_flag; + } + + public void setEnable_flag(boolean enable_flag) { + this.enable_flag = enable_flag; + } + + public LocalDate getEnd_date() { + return end_date; + } + + public void setEnd_date(LocalDate end_date) { + this.end_date = end_date; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getMain_menu_name() { + return main_menu_name; + } + + public void setMain_menu_name(String main_menu_name) { + this.main_menu_name = main_menu_name; + } + + public String getMain_menu_action_name() { + return main_menu_action_name; + } + + public void setMain_menu_action_name(String main_menu_action_name) { + this.main_menu_action_name = main_menu_action_name; + } + + public String getMain_menu_icon() { + return main_menu_icon; + } + + public void setMain_menu_icon(String main_menu_icon) { + this.main_menu_icon = main_menu_icon; + } + + public String getEnd_date_1() { + return end_date_1; + } + + public void setEnd_date_1(String end_date_1) { + this.end_date_1 = end_date_1; + } + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Sub_Menu.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Sub_Menu.java new file mode 100644 index 0000000..7a10303 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Sub_Menu.java @@ -0,0 +1,98 @@ +package com.realnet.fnd.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + +import com.fasterxml.jackson.annotation.JsonBackReference; + +@Entity +@Table(name = "RN_SUB_MENU") +public class Rn_Sub_Menu extends Rn_Who_Columns { + /** + * + */ + private static final long serialVersionUID = 1L; + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "ID") + private Integer id; + + @Column(name = "SUB_MENU_NAME") + private String sub_menu_name; + + @Column(name = "SUB_MENU_ICON") + private String sub_menu_icon; + + @Column(name = "SUB_MENU_ACTION_LINK") + private String sub_menu_action_link; + + @ManyToOne(fetch = FetchType.LAZY, optional = false) + @JoinColumn(name = "MAIN_MENU_ID") + @JsonBackReference + private Rn_Main_Menu rn_main_menu; + + public Rn_Sub_Menu() { + super(); + } + + + + public Rn_Sub_Menu(Integer id, String sub_menu_name, String sub_menu_icon, String sub_menu_action_link, + Rn_Main_Menu rn_main_menu) { + super(); + this.id = id; + this.sub_menu_name = sub_menu_name; + this.sub_menu_icon = sub_menu_icon; + this.sub_menu_action_link = sub_menu_action_link; + this.rn_main_menu = rn_main_menu; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getSub_menu_name() { + return sub_menu_name; + } + + public void setSub_menu_name(String sub_menu_name) { + this.sub_menu_name = sub_menu_name; + } + + public String getSub_menu_icon() { + return sub_menu_icon; + } + + public void setSub_menu_icon(String sub_menu_icon) { + this.sub_menu_icon = sub_menu_icon; + } + + public String getSub_menu_action_link() { + return sub_menu_action_link; + } + + public void setSub_menu_action_link(String sub_menu_action_link) { + this.sub_menu_action_link = sub_menu_action_link; + } + + public Rn_Main_Menu getRn_main_menu() { + return rn_main_menu; + } + + public void setRn_main_menu(Rn_Main_Menu rn_main_menu) { + this.rn_main_menu = rn_main_menu; + } + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Who_AccId_Column.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Who_AccId_Column.java new file mode 100644 index 0000000..ba025d4 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Who_AccId_Column.java @@ -0,0 +1,81 @@ +package com.realnet.fnd.entity; + +import java.io.Serializable; +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.EntityListeners; +import javax.persistence.MappedSuperclass; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; + +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +@MappedSuperclass +@EntityListeners(AuditingEntityListener.class) +public class Rn_Who_AccId_Column implements Serializable { + private static final long serialVersionUID = 1L; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "CREATED_AT", nullable = false, updatable = false) + @CreatedDate + private Date createdAt; + + // @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createdAt; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "UPDATED_AT", nullable = false) + @LastModifiedDate + private Date updatedAt; + + @Column(name = "CREATED_BY", updatable = false) + private Long createdBy; + + @Column(name = "UPDATED_BY") + private Long updatedBy; + + @Column(name = "ACCOUNT_ID") + private Long accountId; + + public Date getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(Date createdAt) { + this.createdAt = createdAt; + } + + public Date getUpdatedAt() { + return updatedAt; + } + + public void setUpdatedAt(Date updatedAt) { + this.updatedAt = updatedAt; + } + + public Long getCreatedBy() { + return createdBy; + } + + public void setCreatedBy(Long createdBy) { + this.createdBy = createdBy; + } + + public Long getUpdatedBy() { + return updatedBy; + } + + public void setUpdatedBy(Long updatedBy) { + this.updatedBy = updatedBy; + } + + public Long getAccountId() { + return accountId; + } + + public void setAccountId(Long accountId) { + this.accountId = accountId; + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Who_Columns.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Who_Columns.java new file mode 100644 index 0000000..b6a2d38 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Who_Columns.java @@ -0,0 +1,65 @@ +package com.realnet.fnd.entity; + +import java.io.Serializable; +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.EntityListeners; +import javax.persistence.MappedSuperclass; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; + +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +@MappedSuperclass +@EntityListeners(AuditingEntityListener.class) +public class Rn_Who_Columns implements Serializable { + private static final long serialVersionUID = 1L; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "CREATED_AT", nullable = false, updatable = false) + @CreatedDate + private Date createdAt; + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "UPDATED_AT", nullable = false) + @LastModifiedDate + private Date updatedAt; + @Column(name = "CREATED_BY", updatable = false) + private Long createdBy; + @Column(name = "UPDATED_BY") + private Long updatedBy; + + public Date getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(Date createdAt) { + this.createdAt = createdAt; + } + + public Date getUpdatedAt() { + return updatedAt; + } + + public void setUpdatedAt(Date updatedAt) { + this.updatedAt = updatedAt; + } + + public Long getCreatedBy() { + return createdBy; + } + + public void setCreatedBy(Long createdBy) { + this.createdBy = createdBy; + } + + public Long getUpdatedBy() { + return updatedBy; + } + + public void setUpdatedBy(Long updatedBy) { + this.updatedBy = updatedBy; + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/SingleSerise.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/SingleSerise.java new file mode 100644 index 0000000..10ade6b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/SingleSerise.java @@ -0,0 +1,16 @@ +package com.realnet.fnd.entity; + +import java.math.BigDecimal; + +import lombok.Data; + +@Data +public class SingleSerise { + private String name; + private BigDecimal value; + + public SingleSerise( String name, BigDecimal value){ + this.name = name; + this.value = value; + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Success.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Success.java new file mode 100644 index 0000000..4061bc0 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Success.java @@ -0,0 +1,41 @@ +package com.realnet.fnd.entity; + +import java.io.Serializable; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +@JsonIgnoreProperties({ "hibernateLazyInitializer", "handler" }) +public class Success implements Serializable { + + private static final long serialVersionUID = 1L; + + private String message; + + private String title; + + public String getMessage () + { + return message; + } + + public void setMessage (String message) + { + this.message = message; + } + + public String getTitle () + { + return title; + } + + public void setTitle (String title) + { + this.title = title; + } + + @Override + public String toString() + { + return "ClassPojo [message = "+message+", title = "+title+"]"; + } +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/SuccessPojo.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/SuccessPojo.java new file mode 100644 index 0000000..df220bb --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/SuccessPojo.java @@ -0,0 +1,36 @@ +package com.realnet.fnd.entity; + +import java.io.Serializable; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +@JsonIgnoreProperties({ "hibernateLazyInitializer", "handler" }) +public class SuccessPojo implements Serializable { + + private static final long serialVersionUID = 1L; + + private Success success; + + public SuccessPojo() { + + } + + public SuccessPojo(Success success) { + this.success = success; + } + + + public Success getSuccess() { + return success; + } + + public void setSuccess(Success success) { + this.success = success; + } + + @Override + public String toString() + { + return "ClassPojo [success = "+success+"]"; + } +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Version.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Version.java new file mode 100644 index 0000000..95cb5c0 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Version.java @@ -0,0 +1,32 @@ +package com.realnet.fnd.entity; + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.session.entity.VersionModel; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiResponse; +import io.swagger.annotations.ApiResponses; + +@RestController +@RequestMapping(value = "/version", produces = { "application/json" }) +@Api(tags = {"Common"}) +public class Version { + @ApiOperation(value = "Gets the version of the REST API", notes = "", response = VersionModel.class) + @ApiResponses(value = { @ApiResponse(code = 200, message = "Returns the version info for the REST API.", response = VersionModel.class) }) + @RequestMapping( method = RequestMethod.GET) + public VersionModel getVersion() { + //Authentication ath = SecurityContextHolder.getContext().getAuthentication(); + //TokenUser usr = (TokenUser)ath.getDetails(); + //String customerId = usr.getUser().getCustomerId() + VersionModel r = new VersionModel(); + r.setVersion("1.0.0"); + r.setMajor(1); + r.setMinor(0); + r.setPatch(0); + return r; + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/WireFrameCopyDTO.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/WireFrameCopyDTO.java new file mode 100644 index 0000000..36b5d34 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/WireFrameCopyDTO.java @@ -0,0 +1,18 @@ +package com.realnet.fnd.entity; + +import lombok.Data; + +@Data +public class WireFrameCopyDTO { + private int from_projectId; + private int from_moduleId; + private int from_WireFrameId; + private String to_uiName; + + public WireFrameCopyDTO() { + super(); + } + + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/projectCopyDTO.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/projectCopyDTO.java new file mode 100644 index 0000000..a04cae9 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/projectCopyDTO.java @@ -0,0 +1,12 @@ +package com.realnet.fnd.entity; + +import lombok.Data; + +@Data +public class projectCopyDTO { + private int from_projectId; + private String to_projectName; + private String to_tech_stack; + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/ExtensionModel.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/ExtensionModel.java new file mode 100644 index 0000000..63bec83 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/ExtensionModel.java @@ -0,0 +1,47 @@ +package com.realnet.fnd.entity1; + +import javax.persistence.Column; + +import lombok.Data; + +@Data +public class ExtensionModel { + + + + private String ext1; + private String ext2; + private String ext3; + private String ext4; + private String ext5; + private String ext6; + private String ext7; + private String ext8; + private String ext9; + private String ext10; + + @Column(length = 4000) + private String bigext1; + + @Column(length = 4000) + private String bigext2; + + @Column(length = 4000) + private String bigext3; + + @Column(length = 4000) + private String bigext4; + + @Column(length = 4000) + private String bigext5; + + private String flex1; + private String flex2; + + private String flex3; + private String flex4; + private String flex5; + + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/GrpMenuAccess.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/GrpMenuAccess.java new file mode 100644 index 0000000..8186c9d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/GrpMenuAccess.java @@ -0,0 +1,90 @@ +package com.realnet.fnd.entity1; + + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.IdClass; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.OneToMany; +import javax.persistence.Table; +import javax.persistence.Transient; + +import com.realnet.users.entity1.AppUserRole; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +@Entity +@Table(name="SEC_GRP_MENU_ACCESS") +@IdClass(GrpMenuAccesscompositeKey.class) +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@ToString +public class GrpMenuAccess { + @Id + @ManyToOne + @JoinColumn(name = "usr_grp") + private AppUserRole usrGrp; + @Id + @ManyToOne + @JoinColumn(name = "menu_item_id") + private MenuDet menuItemId; + private String mCreate; + private String mEdit; + private String mQuery; + private String mDelete; + private String mexport; + + + private Long menuId; + private String mVisible; + private String createby; + private Date createdAt; + private String updateby; + private Date updatedAt; + + private String isdisable; + + + @Column(name = "itemSeq") + private Long itemSeq; + + @Column(name = "MenuItemDesc") + private String menuItemDesc; + private String status; + + + @Column(name = "moduleName") + private String moduleName; + + + + @Column(name = "MainMenuActionName") + private String main_menu_action_name; + + @Column(name = "MainMenuIconName") + private String main_menu_icon_name; + + @Transient + private List subMenus=new ArrayList(); + + + @Transient + private Long grpid; + @Transient + private Long gmenuid; + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/GrpMenuAccesscompositeKey.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/GrpMenuAccesscompositeKey.java new file mode 100644 index 0000000..5fedd4e --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/GrpMenuAccesscompositeKey.java @@ -0,0 +1,25 @@ +package com.realnet.fnd.entity1; + +import java.io.Serializable; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Data +@Getter +@Setter +@EqualsAndHashCode +@AllArgsConstructor +@NoArgsConstructor +public class GrpMenuAccesscompositeKey implements Serializable{ + /** + * + */ + private static final long serialVersionUID = 1L; + private Long menuItemId; + private Long usrGrp; +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/MIXMENUN.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/MIXMENUN.java new file mode 100644 index 0000000..2334163 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/MIXMENUN.java @@ -0,0 +1,33 @@ +package com.realnet.fnd.entity1; + +import java.math.BigDecimal; +import java.math.BigInteger; +import java.util.List; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +@Data +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@ToString +public class MIXMENUN { + private long menuItemId; + private String menuItemDesc; + private long menuId; + + private String mainMenuActionName; + private String mainMenuIconName; + private String mCreate; + private String mEdit; + private String mQuery; + private String mDelete; + private String mVisible; + private List subMenus; +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/MenuDet.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/MenuDet.java new file mode 100644 index 0000000..3d8755a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/MenuDet.java @@ -0,0 +1,68 @@ +package com.realnet.fnd.entity1; + +import java.util.ArrayList; +import java.util.List; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Transient; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +@Entity +@Table(name = "SEC_MENU_DET") +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@ToString +public class MenuDet extends menudet_who{ + + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long menuItemId; + + @Column(name = "itemSeq") + private Long itemSeq; + + @Column(name = "MenuItemDesc") + private String menuItemDesc; + private String status; + + private Long menuId; + + @Column(name = "moduleName") + private String moduleName; + + + + + + @Column(name = "MainMenuActionName") + private String main_menu_action_name; + + @Column(name = "MainMenuIconName") + private String main_menu_icon_name; + + @Transient + private List subMenus=new ArrayList();; + + + + + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/MixMenu.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/MixMenu.java new file mode 100644 index 0000000..72a0ee9 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/MixMenu.java @@ -0,0 +1,37 @@ +package com.realnet.fnd.entity1; + +import java.math.BigDecimal; +import java.math.BigInteger; +import java.util.List; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +@Data +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@ToString +public class MixMenu { +// private BigDecimal menuItemId; + private BigInteger menuItemId; + + private String menuItemDesc; +// private BigDecimal menuId; + private BigInteger menuId; + + + private String mainMenuActionName; + private String mainMenuIconName; + private String mCreate; + private String mEdit; + private String mQuery; + private String mDelete; + private String mVisible; + private List subMenus; +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/MixMenuNew.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/MixMenuNew.java new file mode 100644 index 0000000..72fcedd --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/MixMenuNew.java @@ -0,0 +1,17 @@ +package com.realnet.fnd.entity1; + +import java.math.BigDecimal; + +public interface MixMenuNew { + + BigDecimal getmenu_item_id(); + String getmenu_item_desc(); + BigDecimal getmenu_id(); + String getm_create(); + String getmain_menu_action_name(); + String getmain_menu_icon_name(); + String getm_edit(); + String getm_query(); + String getm_delete(); + String getm_visible(); +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/Query.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/Query.java new file mode 100644 index 0000000..ba3c8ca --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/Query.java @@ -0,0 +1,28 @@ +package com.realnet.fnd.entity1; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +import com.realnet.Dashboard1.Entity.dashbord_Who_collumn; + +import lombok.Data; + +@Entity +@Data +public class Query extends dashbord_Who_collumn{ + + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String queryname; + private String sql_query; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/menudet_who.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/menudet_who.java new file mode 100644 index 0000000..d7de0ef --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/menudet_who.java @@ -0,0 +1,46 @@ +package com.realnet.fnd.entity1; + +import java.io.Serializable; +import java.util.Date; +import javax.persistence.Column; +import javax.persistence.EntityListeners; +import javax.persistence.MappedSuperclass; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import lombok.Data; + +@Data +@MappedSuperclass +@EntityListeners(AuditingEntityListener.class) +public class menudet_who implements Serializable{ + + private static final long serialVersionUID = 1L; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "CREATED_AT", nullable = false, updatable = false) + @CreatedDate + private Date createdAt; + + // @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createdAt; + + +// @Column(name = "CREATED_BY", updatable = false) +// private Long createdBy; + +// @Column(name = "UPDATED_BY") +// private Long updatedBy; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "UPDATED_AT", nullable = false) + @LastModifiedDate + private Date updatedAt; + +// @Column(name = "ACCOUNT_ID") +// private Long accountId; + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/ExtFieldRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/ExtFieldRepository.java new file mode 100644 index 0000000..d2d7daa --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/ExtFieldRepository.java @@ -0,0 +1,17 @@ +package com.realnet.fnd.repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import com.realnet.fnd.entity.Rn_Ext_Fields; + +@Repository +public interface ExtFieldRepository extends JpaRepository { + + @Query(value= "SELECT * FROM rn_ext_field_t WHERE ACCOUNT_ID=:acc_id AND FORM_CODE=:f_code" , nativeQuery = true) + List getExtensionFieldByFormCode(@Param("acc_id")String accountId, @Param("f_code") String form_code); +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/LookUpRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/LookUpRepository.java new file mode 100644 index 0000000..a896224 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/LookUpRepository.java @@ -0,0 +1,19 @@ +package com.realnet.fnd.repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import com.realnet.fnd.entity.Rn_Lookup_Values; + +@Repository +public interface LookUpRepository extends JpaRepository { + + @Query(value = "SELECT LOOKUP_CODE FROM RN_LOOKUP_VALUES_T WHERE LOOKUP_TYPE ='Form_ext'" , nativeQuery = true) + List getLookupValues(); + + @Query(value = "SELECT LOOKUP_CODE FROM RN_LOOKUP_VALUES_T WHERE LOOKUP_TYPE ='DataType'" , nativeQuery = true) + List getDataTypeValues(); +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/RnGroupLineRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/RnGroupLineRepository.java new file mode 100644 index 0000000..c88de92 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/RnGroupLineRepository.java @@ -0,0 +1,14 @@ +package com.realnet.fnd.repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.realnet.fnd.entity.Rn_Menu_Group_Header; +import com.realnet.fnd.entity.Rn_Menu_Group_Line; + +public interface RnGroupLineRepository extends JpaRepository { + +// public List findByHeader(Rn_Menu_Group_Header menu_group_header); + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_DynamicTransactionRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_DynamicTransactionRepository.java new file mode 100644 index 0000000..9d25b05 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_DynamicTransactionRepository.java @@ -0,0 +1,30 @@ +package com.realnet.fnd.repository; + +import java.util.List; +import java.util.Optional; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import com.realnet.fnd.entity.Rn_Dynamic_Transaction; + +@Repository +public interface Rn_DynamicTransactionRepository extends JpaRepository { + + // JPQL + // @Query("SELECT e from RN_DYNAMIC_TRANSACTION e where e.FORM_ID =:form_id") + // @Query("SELECT e from RN_DYNAMIC_TRANSACTION e where e.FORM_ID =:form_id AND e.ID =:id") + + // NATIVE + // @Query(value = "SELECT * FROM RN_DYNAMIC_TRANSACTION WHERE FORM_ID =:form_id", nativeQuery = true) + // @Query(value = "SELECT * FROM RN_DYNAMIC_TRANSACTION WHERE ID =:id ANDFORM_ID =:form_id" , nativeQuery = true) + + @Query(value = "SELECT * FROM rn_dynamic_transaction WHERE FORM_ID =:form_id", nativeQuery = true) + List findByFormId(@Param("form_id") int form_id); + + @Query(value = "SELECT * FROM rn_dynamic_transaction WHERE ID =:id AND FORM_ID =:form_id", nativeQuery = true) + Optional findByIdAndFormId(@Param("id") int id, @Param("form_id") int form_id); + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_Forms_Setup_Repository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_Forms_Setup_Repository.java new file mode 100644 index 0000000..95df5fc --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_Forms_Setup_Repository.java @@ -0,0 +1,24 @@ +package com.realnet.fnd.repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import com.realnet.fnd.entity.Rn_Forms_Setup; + +@Repository +public interface Rn_Forms_Setup_Repository extends JpaRepository { + + // JPQL: @Query("SELECT e from RN_FORMS_SETUP_T e where e.FORM_ID =:form_id") + // NATIVE : @Query(value = "SELECT * FROM RN_FORMS_SETUP_T WHERE FORM_ID=:form_id" , nativeQuery = true) + + @Query(value = "SELECT * FROM RN_FORMS_SETUP_T WHERE FORM_ID=:form_id", nativeQuery = true) + List findByFormId(@Param("form_id") int form_id); + + // @Query(value = "SELECT * FROM RN_DYNAMIC_TRANSACTION WHERE FORM_ID=:form_id", + // nativeQuery = true) + // Optional findByFormId(@Param("form_id") int form_id); +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_Function_Register_Repository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_Function_Register_Repository.java new file mode 100644 index 0000000..2fc624d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_Function_Register_Repository.java @@ -0,0 +1,22 @@ +package com.realnet.fnd.repository; + +import java.util.List; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import com.realnet.fnd.entity.Rn_Function_Register; + +@Repository +public interface Rn_Function_Register_Repository extends JpaRepository { + // for pagination + Page findAll(Pageable p); + + @Query(value = "SELECT * FROM RN_FUNC_REGISTER WHERE MENU_ID =:menu_id" , nativeQuery = true) + List findByMenuId(@Param("menu_id") int menu_id); + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_InstanceTypeRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_InstanceTypeRepository.java new file mode 100644 index 0000000..3419ced --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_InstanceTypeRepository.java @@ -0,0 +1,11 @@ +package com.realnet.fnd.repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.fnd.entity.Rn_Instance_Type; + +@Repository +public interface Rn_InstanceTypeRepository extends JpaRepository { + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_LookUpRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_LookUpRepository.java new file mode 100644 index 0000000..aa3403d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_LookUpRepository.java @@ -0,0 +1,30 @@ +package com.realnet.fnd.repository; + +import java.io.IOException; +import java.util.List; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import com.realnet.fnd.entity.Rn_Lookup_Values; + +@Repository +public interface Rn_LookUpRepository extends JpaRepository { + // for pagination + Page findAll(Pageable p); + + @Query(value = "SELECT LOOKUP_CODE FROM RN_LOOKUP_VALUES_T WHERE LOOKUP_TYPE ='Form_ext'" , nativeQuery = true) + List findLookupValues(); + + @Query(value = "SELECT LOOKUP_CODE FROM RN_LOOKUP_VALUES_T WHERE LOOKUP_TYPE ='DataType'" , nativeQuery = true) + List findDataTypeValues(); + + + @Query(value = "SELECT * FROM RN_LOOKUP_VALUES_T WHERE LOOKUP_TYPE ='Form_ext'" , nativeQuery = true) + List findExtensions(); + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_Main_Menu_Repository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_Main_Menu_Repository.java new file mode 100644 index 0000000..1222879 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_Main_Menu_Repository.java @@ -0,0 +1,21 @@ +package com.realnet.fnd.repository; + +import java.util.List; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import com.realnet.fnd.entity.Rn_Main_Menu; + +@Repository +public interface Rn_Main_Menu_Repository extends JpaRepository { + // for pagination + Page findAll(Pageable p); + + @Query(value = "SELECT * FROM RN_MAIN_MENU WHERE ACCOUNT_ID =:acc_id" , nativeQuery = true) + List findByAccountId(@Param("acc_id") String account_id); // accountId +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_Menu_Group_Repository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_Menu_Group_Repository.java new file mode 100644 index 0000000..53c9f91 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_Menu_Group_Repository.java @@ -0,0 +1,17 @@ +package com.realnet.fnd.repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.fnd.entity.Rn_Menu_Group_Header; + +@Repository +public interface Rn_Menu_Group_Repository extends JpaRepository { + + // JPQL: @Query("SELECT e from RN_FORMS_SETUP_T e where e.FORM_ID =:form_id") + // NATIVE : @Query(value = "SELECT * FROM RN_FORMS_SETUP_T WHERE FORM_ID=:form_id" , nativeQuery = true) + +// @Query(value = "SELECT * FROM RN_FORMS_SETUP_T WHERE FORM_ID=:form_id", nativeQuery = true) +// List findByFormId(@Param("form_id") int form_id); + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_Menu_Register_Repository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_Menu_Register_Repository.java new file mode 100644 index 0000000..c0c8b3e --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_Menu_Register_Repository.java @@ -0,0 +1,21 @@ +package com.realnet.fnd.repository; + +import java.util.List; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import com.realnet.fnd.entity.Rn_Menu_Register; + +@Repository +public interface Rn_Menu_Register_Repository extends JpaRepository { + // for pagination + Page findAll(Pageable p); + + @Query(value = "SELECT * FROM RN_MENU_REGISTER WHERE ACCOUNT_ID =:acc_id" , nativeQuery = true) + List findByAccountId(@Param("acc_id") String account_id); // accountId +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository1/GrpMenuAccessRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository1/GrpMenuAccessRepository.java new file mode 100644 index 0000000..264de06 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository1/GrpMenuAccessRepository.java @@ -0,0 +1,90 @@ +package com.realnet.fnd.repository1; + +import java.util.List; +import java.util.Optional; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import com.realnet.fnd.entity1.GrpMenuAccess; +import com.realnet.fnd.entity1.GrpMenuAccesscompositeKey; + +@Repository +public interface GrpMenuAccessRepository extends JpaRepository { + + @Query(value = "SELECT * FROM sec_grp_menu_access a where a.usr_grp= ?1", nativeQuery = true) + GrpMenuAccess findByUsrGrp(Long usr_grp); + + @Query(value = "SELECT * FROM sec_grp_menu_access a where a.usr_grp= ?1 ORDER BY item_seq", nativeQuery = true) + List findAllByUsrGrp(Long usr_grp); + + @Query(value = "SELECT * FROM sec_grp_menu_access a where a.menu_item_id=?1", nativeQuery = true) + GrpMenuAccess findbymenuitemid(Long menu_item_id); + + @Query(value = "SELECT * FROM sec_grp_menu_access where child = 0 ", nativeQuery = true) + List findAllRoots(); + + @Query(value = "SELECT * FROM sec_grp_menu_access a where a.child=:parent", nativeQuery = true) + List findAllSubmenu(@Param("parent") Long parent); +// @Query(value="SELECT * FROM sec_grp_menu_access a where a.parent=:parent", nativeQuery = true) +// GrpMenuAccess findById(@Param("parent") Long parent); + +// @Query(value="SELECT * FROM sec_grp_menu_access where child = 0 and created_for =:created_for ", nativeQuery = true) +// List findAllRootsbyusrGrp(@Param("created_for") Long created_for); + + @Query(value = "SELECT * FROM sec_grp_menu_access where child = 0 and usr_grp =:usr_grp ", nativeQuery = true) + List findAllRootsbyusrGrp(@Param("usr_grp") Long usr_grp); + + @Query(value = "SELECT * FROM sec_grp_menu_access where menu_id = 0 and status= 'Enable' and usr_grp =:usr_grp ORDER BY item_seq;", nativeQuery = true) + List findAllRootsByMenuId(@Param("usr_grp") Long usr_grp); + + @Query(value = "SELECT * FROM sec_grp_menu_access a where a.menu_id=:menu_item_id and a.usr_grp =:usr_grp ORDER BY item_seq", nativeQuery = true) + List findAllSubmenuByMenuId(@Param("menu_item_id") Long menu_item_id, + @Param("usr_grp") Long usr_grp); + + @Query(value = "SELECT * FROM sec_grp_menu_access a where a.status= 'Enable' and a.menu_id=:menu_item_id and a.usr_grp =:usr_grp ORDER BY item_seq", nativeQuery = true) + List findAllSubmenuByMenuIdWithStatus(@Param("menu_item_id") Long menu_item_id, + @Param("usr_grp") Long usr_grp); + + @Query(value = "SELECT * FROM sec_grp_menu_access a where a.menu_item_id=:menu_item_id", nativeQuery = true) + GrpMenuAccess findById1(@Param("menu_item_id") Long menu_item_id); + +// it find list of menu for all usergroup + @Query(value = "SELECT * FROM sec_grp_menu_access a where a.menu_item_id=:menu_item_id", nativeQuery = true) + List findlist(@Param("menu_item_id") Long menu_item_id); + + @Query(value = "SELECT * FROM sec_grp_menu_access a where a.menu_item_id=:menu_item_id && a.usr_grp =:usr_grp", nativeQuery = true) + GrpMenuAccess findById2(@Param("menu_item_id") Long menu_item_id, @Param("usr_grp") Long usr_grp); + + @Query(value = "SELECT * FROM sec_grp_menu_access a where a.menu_item_id=:menu_item_id && a.usr_grp =:usr_grp", nativeQuery = true) + Optional findbygrpandmenuid(@Param("menu_item_id") Long menu_item_id, + @Param("usr_grp") Long usr_grp); + + @Query(value = "SELECT * FROM sec_grp_menu_access a where a.usr_grp =:usr_grp and a.menu_item_id=:menu_item_id", nativeQuery = true) + List findById(@Param("usr_grp") Long usr_grp, @Param("menu_item_id") Long menu_item_id); + + @Query(value = "SELECT * FROM sec_grp_menu_access a where a.usr_grp =:usr_grp and a.menu_item_id=:menu_item_id", nativeQuery = true) + GrpMenuAccess findSingle(@Param("usr_grp") Long usr_grp, @Param("menu_item_id") Long menu_item_id); + + @Query(value = "SELECT * FROM sec_grp_menu_access a where a.menu_item_id=:menu_item_id && a.usr_grp =:usr_grp", nativeQuery = true) + GrpMenuAccess findByUsrgrpAndMenuitemid(@Param("menu_item_id") Long menu_item_id, @Param("usr_grp") Long usr_grp); + + @Query(value = "SELECT * FROM sec_grp_menu_access a where a.menu_item_id=:menu_item_id", nativeQuery = true) + List findByGrpAndMenuid1(@Param("menu_item_id") Long menu_item_id); + + @Query(value = "SELECT * FROM sec_grp_menu_access a where a.menu_id = 0 && a.usr_grp =:usr_grp && a.menu_item_id=:menu_item_id ORDER BY item_seq;", nativeQuery = true) + GrpMenuAccess findAllRootsByMenuIdAndGrp(@Param("menu_item_id") Long menu_item_id, @Param("usr_grp") Long usr_grp); + + @Query(value = "SELECT * FROM sec_grp_menu_access a where a.menu_id=:menu_item_id", nativeQuery = true) + List findAllSubmenuByMenuitemid(@Param("menu_item_id") Long menu_item_id); + + @Query(value = "SELECT * FROM sec_grp_menu_access a where a.menu_id=:menu_item_id && a.usr_grp =:usr_grp ORDER BY item_seq", nativeQuery = true) + List findAllSubmenuByMenuitemidAndUsrGrp(@Param("menu_item_id") Long menu_item_id, + @Param("usr_grp") Long usr_grp); + + @Query(value = "SELECT * FROM sec_grp_menu_access a where a.menu_item_id=:menu_item_id", nativeQuery = true) + List findAllById(@Param("menu_item_id") Long menu_item_id); + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository1/MenuDetRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository1/MenuDetRepository.java new file mode 100644 index 0000000..71035eb --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository1/MenuDetRepository.java @@ -0,0 +1,272 @@ +package com.realnet.fnd.repository1; + +import java.util.List; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import com.realnet.fnd.entity1.MenuDet; +import com.realnet.fnd.entity1.MixMenuNew; + +@Repository +public interface MenuDetRepository extends JpaRepository{ + @Query(value="select a.menu_item_id,a.menu_item_desc, \n" + + " a.menu_id,b.m_create,b.m_visible,\n" + + " b.m_edit,b.m_query,b.m_delete\n" + + "from sec_menu_det a,sec_grp_menu_access b\n" + + "where b.menu_item_id=a.menu_item_id\n" + + "order by a.item_seq", + countQuery="select count(*) " + + "from sec_menu_det a,sec_grp_menu_access b\n" + + "where b.menu_item_id=a.menu_item_id\n" + + "order by a.item_seq",nativeQuery=true) + Page getAll(Pageable page); + + @Query(value="select a.menu_item_id,a.menu_item_desc, \n" + + " a.menu_id,b.m_create,b.m_visible,\n" + + " b.m_edit,b.m_query,b.m_delete\n" + + "from sec_menu_det a,sec_grp_menu_access b\n" + + "where b.menu_item_id=a.menu_item_id\n" + + "and b.usr_grp = ?1 " + + "and a.menu_id = ?2 " + + "order by a.item_seq",countQuery="select count(*) " + + "from sec_menu_det a,sec_grp_menu_access b\n" + + "where b.menu_item_id=a.menu_item_id\n" + + "and b.usr_grp = ?1 " + + "and a.menu_id = ?2 " + + "order by a.item_seq;" + ,nativeQuery = true) + List getById(Long usr_grp,Long menu_id); + +// @Query(value="select a.menu_item_id,a.menu_item_desc,\n" +// + " a.menu_id,b.m_create,b.m_visible,\n" +// + " b.m_edit,b.m_query,b.m_delete,\n" +// + " a.main_menu_action_name,a.main_menu_icon_name " +// + "from sec_menu_det a,sec_grp_menu_access b\n" +// + "where b.menu_item_id=a.menu_item_id\n" +// + "and b.usr_grp = ?1\n" +// + "and a.menu_id= ?2 " +// + "order by a.item_seq", +// countQuery="select count(*) " +// + "from sec_menu_det a,sec_grp_menu_access b\n" +// + "where b.menu_item_id=a.menu_item_id\n" +// + "and b.usr_grp = ?1" +// + "and a.menu_id= ?2 " +// + "order by a.item_seq", +// nativeQuery=true) +// List getByUserId(Long usr_grp,Long menu_id); + + + @Query(value="select a.menu_item_id menu_item_id,a.menu_item_desc menu_item_desc,\n" + + " a.menu_id menu_id,b.m_create m_create,b.m_visible m_visible,\n" + + " b.m_edit m_edit,b.m_query m_query,b.m_delete m_delete,\n" + + " a.main_menu_action_name main_menu_action_name,a.main_menu_icon_name main_menu_icon_name " + + "from sec_menu_det a,sec_grp_menu_access b\n" + + "where b.menu_item_id=a.menu_item_id\n" + + "and b.usr_grp =:usr_grp\n" + + "and a.menu_id=:menu_id " + + "order by a.item_seq", +// countQuery="select count(*) " +// + "from sec_menu_det a,sec_grp_menu_access b\n" +// + "where b.menu_item_id=a.menu_item_id\n" +// + "and b.usr_grp = ?1" +// + "and a.menu_id= ?2 " +// + "order by a.item_seq", + nativeQuery=true) + List getByUserId(Long usr_grp,Long menu_id); + + @Query(value="select a.menu_item_id menu_item_id,a.menu_item_desc menu_item_desc,\r\n" + + " a.menu_id menu_id,b.m_create m_create,b.m_visible m_visible,\r\n" + + " b.m_edit m_edit,b.m_query m_query,b.m_delete m_delete,\r\n" + + " a.main_menu_action_name main_menu_action_name,a.main_menu_icon_name main_menu_icon_name \r\n" + + " from sec_menu_det a,sec_grp_menu_access b \r\n" + , + nativeQuery=true) + List getallmenu(); + + @Query(value="select a.menu_item_id menu_item_id,a.menu_item_desc menu_item_desc,\r\n" + + " a.menu_id menu_id,b.m_create m_create,b.m_visible m_visible,\r\n" + + " b.m_edit m_edit,b.m_query m_query,b.m_delete m_delete\r\n" +// + " a.main_menu_action_name main_menu_action_name,a.main_menu_icon_name main_menu_icon_name \r\n" + + " from sec_menu_det a,sec_grp_menu_access b \r\n" + , + nativeQuery=true) + List allmenu(); + + + + @Query(value="select a.menu_item_id,a.menu_item_desc,\r\n" + + " a.menu_id,b.m_create,b.m_visible,\r\n" + + " b.m_edit,b.m_query,b.m_delete,\r\n" + + " a.main_menu_action_name,a.main_menu_icon_name \r\n" + + " from sec_menu_det a,sec_grp_menu_access b\r\n" + + " where a.menu_id=100", + nativeQuery = true) + List findEqual100(); + + @Query(value="select a.menu_item_id,a.menu_item_desc,\r\n" + + " a.menu_id,b.m_create,b.m_visible,\r\n" + + " b.m_edit,b.m_query,b.m_delete,\r\n" + + " a.main_menu_action_name,a.main_menu_icon_name \r\n" + + " from sec_menu_det a,sec_grp_menu_access b \r\n" + + " where a.menu_id=ANY(SELECT menu_id from sec_menu_det where menu_id >100 && menu_id< 200);", + nativeQuery = true) + List findGreater100(); + + @Query(value="select a.menu_item_id,a.menu_item_desc,\r\n" + + " a.menu_id,b.m_create,b.m_visible,\r\n" + + " b.m_edit,b.m_query,b.m_delete,\r\n" + + " a.main_menu_action_name,a.main_menu_icon_name \r\n" + + " from sec_menu_det a,sec_grp_menu_access b\r\n" + + " where a.menu_id=200", + nativeQuery = true) + List findEqual200(); + + @Query(value="select a.menu_item_id,a.menu_item_desc,\r\n" + + " a.menu_id,b.m_create,b.m_visible,\r\n" + + " b.m_edit,b.m_query,b.m_delete,\r\n" + + " a.main_menu_action_name,a.main_menu_icon_name \r\n" + + " from sec_menu_det a,sec_grp_menu_access b \r\n" + + " where a.menu_id=ANY(SELECT menu_id from sec_menu_det where menu_id >200 && menu_id< 300);", + nativeQuery = true) + List findGreater200(); + + + @Query(value="select a.menu_item_id,a.menu_item_desc,\r\n" + + " a.menu_id,b.m_create,b.m_visible,\r\n" + + " b.m_edit,b.m_query,b.m_delete,\r\n" + + " a.main_menu_action_name,a.main_menu_icon_name \r\n" + + " from sec_menu_det a,sec_grp_menu_access b\r\n" + + " where a.menu_id=300", + nativeQuery = true) + List findEqual300(); + + @Query(value="select a.menu_item_id,a.menu_item_desc,\r\n" + + " a.menu_id,b.m_create,b.m_visible,\r\n" + + " b.m_edit,b.m_query,b.m_delete,\r\n" + + " a.main_menu_action_name,a.main_menu_icon_name \r\n" + + " from sec_menu_det a,sec_grp_menu_access b \r\n" + + " where a.menu_id=ANY(SELECT menu_id from sec_menu_det where menu_id >300 && menu_id< 400);", + nativeQuery = true) + List findGreater300(); + + + @Query(value="select a.menu_item_id,a.menu_item_desc,\r\n" + + " a.menu_id,b.m_create,b.m_visible,\r\n" + + " b.m_edit,b.m_query,b.m_delete,\r\n" + + " a.main_menu_action_name,a.main_menu_icon_name \r\n" + + " from sec_menu_det a,sec_grp_menu_access b\r\n" + + " where a.menu_id=400", + nativeQuery = true) + List findEqual400(); + + @Query(value="select a.menu_item_id,a.menu_item_desc,\r\n" + + " a.menu_id,b.m_create,b.m_visible,\r\n" + + " b.m_edit,b.m_query,b.m_delete,\r\n" + + " a.main_menu_action_name,a.main_menu_icon_name \r\n" + + " from sec_menu_det a,sec_grp_menu_access b \r\n" + + " where a.menu_id=ANY(SELECT menu_id from sec_menu_det where menu_id >400 && menu_id< 500);", + nativeQuery = true) + List findGreater400(); + + @Query(value="select a.menu_item_id,a.menu_item_desc,\r\n" + + " a.menu_id,b.m_create,b.m_visible,\r\n" + + " b.m_edit,b.m_query,b.m_delete,\r\n" + + " a.main_menu_action_name,a.main_menu_icon_name \r\n" + + " from sec_menu_det a,sec_grp_menu_access b\r\n" + + " where a.menu_id=500", + nativeQuery = true) + List findEqual500(); + + @Query(value="select a.menu_item_id,a.menu_item_desc,\r\n" + + " a.menu_id,b.m_create,b.m_visible,\r\n" + + " b.m_edit,b.m_query,b.m_delete,\r\n" + + " a.main_menu_action_name,a.main_menu_icon_name \r\n" + + " from sec_menu_det a,sec_grp_menu_access b \r\n" + + " where a.menu_id=ANY(SELECT menu_id from sec_menu_det where menu_id >500 && menu_id< 600);", + nativeQuery = true) + List findGreater500(); + + @Query(value="select a.menu_item_id,a.menu_item_desc,\r\n" + + " a.menu_id,b.m_create,b.m_visible,\r\n" + + " b.m_edit,b.m_query,b.m_delete,\r\n" + + " a.main_menu_action_name,a.main_menu_icon_name \r\n" + + " from sec_menu_det a,sec_grp_menu_access b\r\n" + + " where a.menu_id=600", + nativeQuery = true) + List findEqual600(); + + @Query(value="select a.menu_item_id,a.menu_item_desc,\r\n" + + " a.menu_id,b.m_create,b.m_visible,\r\n" + + " b.m_edit,b.m_query,b.m_delete,\r\n" + + " a.main_menu_action_name,a.main_menu_icon_name \r\n" + + " from sec_menu_det a,sec_grp_menu_access b \r\n" + + " where a.menu_id=ANY(SELECT menu_id from sec_menu_det where menu_id >600 && menu_id< 700);", + nativeQuery = true) + List findGreater600(); + + @Query(value="SELECT * FROM sec_menu_det where menu_id=100", nativeQuery = true) + MenuDet findequalto100(); + + @Query(value="SELECT * FROM sec_menu_det a where a.menu_id=ANY(SELECT menu_id from sec_menu_det where menu_id >100 && menu_id< 200)", nativeQuery = true) + List findgreaterthan100(); + + @Query(value="SELECT * FROM sec_menu_det where menu_id=200", nativeQuery = true) + MenuDet findequalto200(); + + @Query(value="SELECT * FROM sec_menu_det a where a.menu_id=ANY(SELECT menu_id from sec_menu_det where menu_id >200 && menu_id< 300)", nativeQuery = true) + List findgreaterthan200(); + + @Query(value="SELECT * FROM sec_menu_det where menu_id=300", nativeQuery = true) + MenuDet findequalto300(); + + @Query(value="SELECT * FROM sec_menu_det a where a.menu_id=ANY(SELECT menu_id from sec_menu_det where menu_id >300 && menu_id< 400)", nativeQuery = true) + List findgreaterthan300(); + + @Query(value="SELECT * FROM sec_menu_det where menu_id=400", nativeQuery = true) + MenuDet findequalto400(); + + @Query(value="SELECT * FROM sec_menu_det a where a.menu_id=ANY(SELECT menu_id from sec_menu_det where menu_id >400 && menu_id< 500)", nativeQuery = true) + List findgreaterthan400(); + + @Query(value="SELECT * FROM sec_menu_det where menu_id=500", nativeQuery = true) + MenuDet findequalto500(); + + @Query(value="SELECT * FROM sec_menu_det a where a.menu_id=ANY(SELECT menu_id from sec_menu_det where menu_id >500 && menu_id< 600)", nativeQuery = true) + List findgreaterthan500(); + + @Query(value="SELECT * FROM sec_menu_det where menu_id=600", nativeQuery = true) + MenuDet findequalto600(); + + @Query(value="SELECT * FROM sec_menu_det a where a.menu_id=ANY(SELECT menu_id from sec_menu_det where menu_id >600 && menu_id< 700)", nativeQuery = true) + List findgreaterthan600(); + + @Query(value="SELECT * FROM sec_menu_det a where a.menu_id=?1", nativeQuery = true) + List findAllById(Long menu_id); + + @Query(value="SELECT * FROM sec_menu_det a where a.root_menudet_id is null", nativeQuery = true) + List findAllRoots(); + + @Query(value="SELECT * FROM sec_menu_det a where a.root_menudet_id=:menu_item_id", nativeQuery = true) + List findAllSubmenu(@Param("menu_item_id") Long menu_item_id); + + @Query(value="SELECT * FROM sec_menu_det a where a.root_menudet_id=:menu_item_id", nativeQuery = true) + List findAllSubCategoriesInRoot(@Param("menu_item_id") List menu_item_id); + + @Query(value="SELECT * FROM sec_menu_det a where a.menu_id = 0 ORDER BY item_seq ASC", nativeQuery = true) + List findAllRootsByMenuId(); + + @Query(value="SELECT * FROM sec_menu_det a where a.menu_id=:menu_item_id ORDER BY item_seq ASC", nativeQuery = true) + List findAllSubmenuByMenuId(@Param("menu_item_id") Long menu_item_id); + + @Query(value="select * from sec_menu_det where menu_item_id = :menu_item_id UNION select * from sec_menu_det where menu_id = :menu_item_id", nativeQuery = true) + List findAllSubmenuforusrgrp(@Param("menu_item_id") Long menu_item_id); + + @Query(value="SELECT `COLUMN_NAME` FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE `TABLE_SCHEMA`='realnet_CNSBE' AND `TABLE_NAME`=:TABLE_NAME", nativeQuery = true) + List findcolumnbytablename(@Param("TABLE_NAME") Object TABLE_NAME); + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository1/QueryRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository1/QueryRepository.java new file mode 100644 index 0000000..d661d0f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository1/QueryRepository.java @@ -0,0 +1,10 @@ +package com.realnet.fnd.repository1; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.fnd.entity1.Query; +@Repository +public interface QueryRepository extends JpaRepository { + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/CustomResponse.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/CustomResponse.java new file mode 100644 index 0000000..b5274ce --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/CustomResponse.java @@ -0,0 +1,15 @@ +package com.realnet.fnd.response; + +import java.util.List; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper = false) +public class CustomResponse extends PageResponse { + @ApiModelProperty(required = true, value = "") + private List items; + //private List items; +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/EntityResponse.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/EntityResponse.java new file mode 100644 index 0000000..8bb7ab2 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/EntityResponse.java @@ -0,0 +1,15 @@ +package com.realnet.fnd.response; + +import lombok.Data; + +@Data +public class EntityResponse { + + private String msg; + + public EntityResponse(String msg) { + super(); + this.msg = msg; + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/OperationResponse.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/OperationResponse.java new file mode 100644 index 0000000..b1ab421 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/OperationResponse.java @@ -0,0 +1,19 @@ +/** + This is the common structure for all responses + if the response contains a list(array) then it will have 'items' field + if the response contains a single item then it will have 'item' field + */ + + +package com.realnet.fnd.response; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data //for getters and setters +public class OperationResponse { + public enum ResponseStatusEnum {SUCCESS, ERROR, WARNING, NO_ACCESS}; + @ApiModelProperty(required = true) + private ResponseStatusEnum operationStatus; + private String operationMessage; +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/PageResponse.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/PageResponse.java new file mode 100644 index 0000000..9cb000b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/PageResponse.java @@ -0,0 +1,53 @@ +package com.realnet.fnd.response; + +import java.util.List; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Sort; + +import lombok.Getter; +import lombok.Setter; + +//@Data //for getters and setters +public class PageResponse extends OperationResponse { + @Getter @Setter private boolean first; + @Getter @Setter private boolean last; + @Getter @Setter private int currentPageNumber; + @Getter @Setter private int itemsInPage; + @Getter @Setter private int pageSize; + @Getter @Setter private int totalPages; + @Getter @Setter private long totalItems; + @Getter @Setter private Sort sort; + private List items; + + public void setPageStats(Page pg, boolean setDefaultMessage){ + this.first = pg.isFirst(); + this.last = pg.isLast(); + this.currentPageNumber = pg.getNumber(); + this.itemsInPage = pg.getNumberOfElements(); + this.pageSize = pg.getSize(); + this.totalPages = pg.getTotalPages(); + this.totalItems = pg.getTotalElements(); + //this.items = pg.getContent(); + this.sort = pg.getSort(); + if (setDefaultMessage == true){ + this.setOperationStatus(ResponseStatusEnum.SUCCESS); + this.setOperationMessage("Page " + (pg.getNumber()+ 1 ) + " of " + pg.getTotalPages() ); + } + } + + public void setPageTotal(int count, boolean setDefaultMessage){ + //this.items = list; + this.first = true; + this.last = true; + this.itemsInPage = count; + this.totalItems = count; + this.totalPages = 1; + this.pageSize = count; + if (setDefaultMessage == true){ + this.setOperationStatus(ResponseStatusEnum.SUCCESS); + this.setOperationMessage("Total " + count + " items "); + } + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_DynamicTransactionResponse.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_DynamicTransactionResponse.java new file mode 100644 index 0000000..aab0da1 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_DynamicTransactionResponse.java @@ -0,0 +1,16 @@ +package com.realnet.fnd.response; + +import java.util.List; + +import com.realnet.fnd.entity.Rn_Dynamic_Transaction; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper=false) +public class Rn_DynamicTransactionResponse extends PageResponse { + @ApiModelProperty(required = true, value = "") + private List items; +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_Forms_SetupResponse.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_Forms_SetupResponse.java new file mode 100644 index 0000000..2c5f1fd --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_Forms_SetupResponse.java @@ -0,0 +1,16 @@ +package com.realnet.fnd.response; + +import java.util.List; + +import com.realnet.fnd.entity.Rn_Forms_Setup; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper=false) +public class Rn_Forms_SetupResponse extends PageResponse { + @ApiModelProperty(required = true, value = "") + private List items; +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_Function_Register_Response.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_Function_Register_Response.java new file mode 100644 index 0000000..b7a0733 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_Function_Register_Response.java @@ -0,0 +1,16 @@ +package com.realnet.fnd.response; + +import java.util.List; + +import com.realnet.fnd.entity.Rn_Function_Register; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper = false) +public class Rn_Function_Register_Response extends PageResponse { + @ApiModelProperty(required = true, value = "") + private List items; +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_Main_Menu_Response.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_Main_Menu_Response.java new file mode 100644 index 0000000..70c3a4a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_Main_Menu_Response.java @@ -0,0 +1,16 @@ +package com.realnet.fnd.response; + +import java.util.List; + +import com.realnet.fnd.entity.Rn_Main_Menu; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper=false) +public class Rn_Main_Menu_Response extends PageResponse { + @ApiModelProperty(required = true, value = "") + private List items; +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_Menu_Group_Response.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_Menu_Group_Response.java new file mode 100644 index 0000000..c536780 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_Menu_Group_Response.java @@ -0,0 +1,16 @@ +package com.realnet.fnd.response; + +import java.util.List; + +import com.realnet.fnd.entity.Rn_Menu_Group_Header; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper=false) +public class Rn_Menu_Group_Response extends PageResponse { + @ApiModelProperty(required = true, value = "") + private List items; +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_Menu_Register_Response.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_Menu_Register_Response.java new file mode 100644 index 0000000..70a0e65 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_Menu_Register_Response.java @@ -0,0 +1,16 @@ +package com.realnet.fnd.response; + +import java.util.List; + +import com.realnet.fnd.entity.Rn_Menu_Register; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper=false) +public class Rn_Menu_Register_Response extends PageResponse { + @ApiModelProperty(required = true, value = "") + private List items; +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/SingleDataSeriseResponse.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/SingleDataSeriseResponse.java new file mode 100644 index 0000000..26223d8 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/SingleDataSeriseResponse.java @@ -0,0 +1,16 @@ +//This is a common http response model for providing data series + +package com.realnet.fnd.response; + +import java.util.List; + +import com.realnet.fnd.entity.SingleSerise; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper=false) +public class SingleDataSeriseResponse extends OperationResponse { + private List items; +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/ExtFieldService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/ExtFieldService.java new file mode 100644 index 0000000..847a2ad --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/ExtFieldService.java @@ -0,0 +1,26 @@ +package com.realnet.fnd.service; + +import java.util.List; + +import com.realnet.fnd.entity.Rn_Ext_Fields; + +public interface ExtFieldService { + List getAll(); + //Page getAll(Pageable p); + Rn_Ext_Fields getById(int id); + Rn_Ext_Fields save(Rn_Ext_Fields rn_ext_fields); + Rn_Ext_Fields updateById(int id, Rn_Ext_Fields rn_ext_fields); + boolean deleteById(int id); + +// // LOOKUP FIELDS (ATTRIBUTE, FLEX) +// List getLookupValues(); +// +// // TEXTFIELD, DROPDOWN ETC... +// List getDataTypeValues(); + + // BUILD HTML FOR EXTENSION + String buildExtensionByFormCode(String acc_id, String f_code, Integer formId); + + String stringReplace(String str, String start, String end, String replaceWith); + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/ExtFieldServiceImpl.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/ExtFieldServiceImpl.java new file mode 100644 index 0000000..b06699a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/ExtFieldServiceImpl.java @@ -0,0 +1,260 @@ +package com.realnet.fnd.service; + +import java.util.List; +import java.util.Optional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import com.realnet.exceptions.ResourceNotFoundException; +import com.realnet.fnd.entity.Rn_Ext_Fields; +import com.realnet.fnd.repository.ExtFieldRepository; +import com.realnet.fnd.repository.Rn_LookUpRepository; +import com.realnet.utils.WireFrameConstant; + +@Service +public class ExtFieldServiceImpl implements ExtFieldService { + + @Value("${angularProjectPath}") + private String angularProjectPath; + + @Value("${projectPath}") + private String projectPath; + + @Autowired + private ExtFieldRepository extFieldRepository; + + @Autowired + Rn_LookUpRepository lookUpRepository1; + + @Override + public List getAll() { + return extFieldRepository.findAll(); + } + +// @Override +// public Page getAll(Pageable page) { +// return extFieldRepository.findAll(page); +// } + + @Override + public Rn_Ext_Fields getById(int id) { + Rn_Ext_Fields rn_ext_fields = extFieldRepository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Extension Field not found :: " + id)); + return rn_ext_fields; + } + + @Override + public Rn_Ext_Fields save(Rn_Ext_Fields rn_ext_fields) { + Rn_Ext_Fields savedRn_Ext_Fields = extFieldRepository.save(rn_ext_fields); + return savedRn_Ext_Fields; + } + + @Override + public Rn_Ext_Fields updateById(int id, Rn_Ext_Fields extensionRequest) { + Rn_Ext_Fields old_ext_field = extFieldRepository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Extension Field not found :: " + id)); + + old_ext_field.setField_name(extensionRequest.getField_name()); + old_ext_field.setMapping(extensionRequest.getMapping()); + old_ext_field.setData_type(extensionRequest.getData_type()); + old_ext_field.setType(extensionRequest.getType()); + old_ext_field.setActive(extensionRequest.isActive()); + final Rn_Ext_Fields updated_ext_field = extFieldRepository.save(old_ext_field); + return updated_ext_field; + } + + @Override + public boolean deleteById(int id) { + if (!extFieldRepository.existsById(id)) { + throw new ResourceNotFoundException("Extension Field not found :: " + id); + } + Rn_Ext_Fields rn_ext_fields = extFieldRepository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Extension Field not found :: " + id)); + extFieldRepository.delete(rn_ext_fields); + return true; + } + +// @Override +// public List getLookupValues() { +// return lookUpRepository.findLookupValues(); +// } +// +// @Override +// public List getDataTypeValues() { +// return lookUpRepository.findDataTypeValues(); +// } + + @Override + public String buildExtensionByFormCode(String acc_id, String f_code, Integer formId) { + + Optional extensions = extFieldRepository.findById(formId); +// List extensions = extFieldRepository.getExtensionFieldByFormCode(acc_id, f_code); + StringBuilder extension_grid_form = new StringBuilder(); + StringBuilder extension_entry_form = new StringBuilder(); + + if (extensions == null || !extensions.isPresent()) { + throw new ResourceNotFoundException("Extension Fields Not Found"); + } else { + +// extension_entry_form.append("\n"); + // extension_code.append("
    \n" + "
    \n"); + +// for (Rn_Ext_Fields extension : extensions) { + // String form_code = extension.getForm_code(); + Rn_Ext_Fields extension = extensions.get(); + String type = extension.getType(); // ho, hl + String data_type = extension.getData_type(); + String mapping = extension.getMapping(); + String field_name = extension.getField_name(); + + String ext = ",\"extValue\":\"" + mapping + "\""; + + if (WireFrameConstant.DT_TEXTFIELD.equals(data_type)) { +// extension_entry_form.append("
    \r\n" + " \r\n" +// + " \r\n" + " \n"); + + extension_entry_form.append("{\"fieldName\":\"" + field_name + + "\",\"fieldType\":\"text\",\"fieldValue\":\"\",\"formCode\":\"" + f_code + "\"" + ext + "},"); + } + + if (WireFrameConstant.DT_DATE.equals(data_type)) { +// extension_entry_form.append(" \r\n" + " \r\n" +// + " \r\n" + " \n"); + extension_entry_form.append("{\"fieldName\":\"" + field_name + + "\",\"fieldType\":\"date\",\"fieldValue\":\"\",\"formCode\":\"" + f_code + "\"" + ext + "},"); + + } + + if (WireFrameConstant.DT_LONGTEXT.equals(data_type)) { +// extension_entry_form.append(" \r\n" + " \r\n" +// + " \r\n" + " \n"); +// + extension_entry_form.append("{\"fieldName\":\"" + field_name + + "\",\"fieldType\":\"textarea\",\"fieldValue\":\"\",\"formCode\":\"" + f_code + "\"" + ext + + "},"); + + } + + if (WireFrameConstant.FIELD_CHECKBOX.equals(data_type)) { +// extension_entry_form.append(" \r\n" + " \r\n" +// + " \r\n" + " \n"); + extension_entry_form.append("{\"fieldName\":\"" + field_name + + "\",\"fieldType\":\"checkbox\",\"fieldValue\":\"\",\"formCode\":\"" + f_code + "\"" + ext + + "},"); + + } + +// if (TypeConstants.FIELD_CHECKBOX.equals(data_type)) { +// extension_entry_form.append(" \r\n" + " \r\n" +// + " \r\n" + " \n"); +// } + if (WireFrameConstant.FIELD_AUTOCOMPLETE.equals(data_type)) { +// extension_entry_form.append(" \r\n" + " \r\n" +// + " \r\n" + " \n"); + extension_entry_form.append("{\"fieldName\":\"" + field_name + + "\",\"fieldType\":\"text\",\"fieldValue\":\"\",\"formCode\":\"" + f_code + "\"" + ext + "},"); + } + + // extension grid-view code + extension_grid_form.append("{prop: \"" + mapping + "\", name: \"" + field_name + "\", width: 200},\n"); + + // extension read-only code + + // extension update code + + } + extension_entry_form.deleteCharAt(extension_entry_form.length() - 1); + // extension_code.append("\n\n
    " + field_name +// + "
    " + field_name +// + "
    " + field_name +// + "
    " + field_name +// + "
    " + field_name +// + "
    " + field_name +// + "
    "); +// extension_entry_form.append("\n"); + +// FileWriter fw = null; +// BufferedWriter bw = null; +// try { +// +// // ENTRY FORM +//// String ngExtEntryPath = angularProjectPath +//// + "/src/app/pages/university/teacher/extensions/add-ext/teacher-add-extension.component.html"; +// +// String path = projectPath + "/cns-portal/pages"; +// +// String ngExtEntryPath = path + File.separator + f_code + "_ext.html"; +// +// File ngExtEntryFile1 = new File(path); +// if (!ngExtEntryFile1.exists()) { +// ngExtEntryFile1.mkdir(); +// } +// +// File ngExtEntryFile = new File(ngExtEntryPath); +// if (!ngExtEntryFile.exists()) { +// ngExtEntryFile.createNewFile(); +// } +// fw = new FileWriter(ngExtEntryFile.getAbsoluteFile()); +// bw = new BufferedWriter(fw); +// bw.write(extension_entry_form.toString()); +// bw.close(); +// +// // GRID VIEW FORM +//// final String start = "// EXTENSION COLUMN START"; +//// final String end = "// EXTENSION COLUMN END"; +//// String replaceWith = extension_grid_form.toString(); +//// +//// String ngExtGridPath = path + "/teacher-add-extension.component.ts"; +//// File ngExtGridFile = new File(ngExtGridPath); +//// String fileString = FileUtils.readFileToString(ngExtGridFile, StandardCharsets.UTF_8); +//// String finalString = stringReplace(fileString, start, end, replaceWith); +//// +//// bw = new BufferedWriter(new FileWriter(ngExtGridFile, false)); // replaced string +//// bw.write(finalString); +//// bw.close(); +// +// // UPDATE FORM +// +// // READ-ONLY FORM +// +// } catch (IOException e) { +// e.printStackTrace(); +// } + + return extension_entry_form.toString(); + } + + @Override + public String stringReplace(String str, String start, String end, String replaceWith) { + int i = str.indexOf(start); + while (i != -1) { + int j = str.indexOf(end, i + 1); + if (j != -1) { + /* + * @Include starting and ending string String data = str.substring(0, i + + * start.length()) + "\n" + replaceWith + "\n"; String temp = str.substring(j); + * + * @Not Include starting and ending string String data = str.substring(0, i) + + * "\n" + replaceWith + "\n"; String temp = str.substring(j + end.length()); + */ + String data = str.substring(0, i + start.length()) + "\n" + replaceWith + "\n"; + String temp = str.substring(j); + data += temp; + str = data; + i = str.indexOf(start, i + replaceWith.length() + end.length() + 1); + } else { + break; + } + } + return str; + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/FileStorageService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/FileStorageService.java new file mode 100644 index 0000000..a385565 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/FileStorageService.java @@ -0,0 +1,136 @@ +package com.realnet.fnd.service; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; + +import org.apache.commons.io.FilenameUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +//import com.realnet.codeextractor.service.Rn_Bcf_Extractor_Service; +import com.realnet.exceptions.StorageException; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.service1.AppUserServiceImpl; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +public class FileStorageService { + + //private static final Logger logger = LoggerFactory.getLogger(FileStorageService.class); + + @Autowired + private AppUserServiceImpl userService; + + @Autowired +// private Rn_Bcf_Extractor_Service extractorService; + + @Value("${projectPath}") + private String projectPath; + + public void uploadProfilePicture(MultipartFile file, String location) { + if (file.isEmpty()) { + throw new StorageException("Failed to store empty file"); + } + // create path for every new File + // File fileLoc = new File(location); + try { +// if(!fileLoc.exists()) { +// fileLoc.mkdir(); +// //System.out.println("Path Created..."); +// } + AppUser user = userService.getLoggedInUser(); + String UserId = String.valueOf(user.getUserId()); + String fileName = file.getOriginalFilename(); + + String ext = fileName.substring(fileName.lastIndexOf(".")); + String extension = FilenameUtils.getExtension(fileName); // lol + String newName = "profile-pic-" + UserId + ext; + + System.out.println(System.getProperty("java.io.tmpdir")); + File convFile = new File(System.getProperty("java.io.tmpdir")+System.getProperty("file.separator")+newName); + file.transferTo(convFile); + } catch (IOException e) { + String msg = String.format("Failed to store file %s", file.getName()); + log.info(msg); + throw new StorageException("Failed to store file ", e); + } + + } + + // ========================== BCF EXTRACTOR ============================= + // max size 100 mb + public void uploadFile(MultipartFile file, String location) { + if (file.isEmpty()) { + throw new StorageException("Failed to store empty file"); + } + try { + String fileName = file.getOriginalFilename(); + InputStream is = file.getInputStream(); + Files.copy(is, Paths.get(location + fileName), StandardCopyOption.REPLACE_EXISTING); + } catch (IOException e) { + String msg = String.format("Failed to store file : %s", file.getName()); + log.debug(msg); + throw new StorageException("Failed to store file", e); + } + + } + +// private static ArrayList fileList = new ArrayList(); +// +// public ArrayList listOFiles(String directory) throws IOException { +// File destDir = new File(directory); +// System.out.println("Destination Folder Path = " + directory); +// // ArrayList files = new ArrayList(); +// // Get all files from a directory. +// File[] fList = destDir.listFiles(); +// if (fList != null) { +// for (File file : fList) { +// if (file.isFile()) { +// fileList.add(file.getAbsolutePath()); +// // System.out.println("directory:" + file.getAbsolutePath()); +// } else if (file.isDirectory()) { +// listOFiles(file.getAbsolutePath()); +// } +// } +// } +// return fileList; +// } + + // =============== MOVE FILE FROM ONE DIRECTORY TO ANTHER ============== +// public void move(String fromDir, String toDir) throws IOException { +// File fromDirFile = new File(fromDir); +// File moveToFile = new File(toDir); +// +// String fileName = fromDirFile.getName(); +// +// // MOVE ALL FILES INTO PARENT DIRECTORY +// System.out.println("File name = " + fileName + "\n" + "Move to = " + toDir); +// fromDirFile.renameTo(new File(moveToFile, fromDirFile.getName())); +// } + + // ============== DELETE EMPTY DIRECTORY =========== +// public static void deleteEmptyDirectory(File dir) { +// if (dir.isDirectory()) { +// File[] fList = dir.listFiles(); +// if (fList != null) { +// for (File file : fList) { +// if (!file.isFile()) { +// System.out.println("Removing empty directory : " + file.getName()); +// file.delete(); +// deleteEmptyDirectory(file); +// } +// } +// dir.delete(); +// } +// } +// } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/RnGroupMenuLineServiec.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/RnGroupMenuLineServiec.java new file mode 100644 index 0000000..beb5c17 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/RnGroupMenuLineServiec.java @@ -0,0 +1,19 @@ +package com.realnet.fnd.service; + +import java.util.List; + +import com.realnet.fnd.entity.Rn_Menu_Group_Header; +import com.realnet.fnd.entity.Rn_Menu_Group_Line; + +public interface RnGroupMenuLineServiec { + + public Rn_Menu_Group_Line addToDb(Rn_Menu_Group_Line rn_Menu_Group_Line); + + public Rn_Menu_Group_Line getoneById(int id); + + public List getAll(); + + public Rn_Menu_Group_Line updateToDb(Rn_Menu_Group_Line rn_Menu_Group_Line); + +// public List getLinesByHeader(Rn_Menu_Group_Header rn_Menu_Group_Header); +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/RnGroupMenuLineServiecImpl.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/RnGroupMenuLineServiecImpl.java new file mode 100644 index 0000000..1ef3ca6 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/RnGroupMenuLineServiecImpl.java @@ -0,0 +1,49 @@ +package com.realnet.fnd.service; + +import java.util.List; +import java.util.Optional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.realnet.fnd.entity.Rn_Menu_Group_Header; +import com.realnet.fnd.entity.Rn_Menu_Group_Line; +import com.realnet.fnd.repository.RnGroupLineRepository; + +@Service +public class RnGroupMenuLineServiecImpl implements RnGroupMenuLineServiec { + + @Autowired + private RnGroupLineRepository r; + + @Override + public Rn_Menu_Group_Line addToDb(Rn_Menu_Group_Line rn_Menu_Group_Line) { + Rn_Menu_Group_Line addToDb = this.r.save(rn_Menu_Group_Line); + return addToDb; + } + + @Override + public Rn_Menu_Group_Line getoneById(int id) { + Optional findById = this.r.findById(id); + return findById.get(); + } + + @Override + public List getAll() { + List all = this.r.findAll(); + return all; + } + + @Override + public Rn_Menu_Group_Line updateToDb(Rn_Menu_Group_Line rn_Menu_Group_Line) { + Rn_Menu_Group_Line addToDb = this.r.save(rn_Menu_Group_Line); + return addToDb; + } + +// @Override +// public List getLinesByHeader(Rn_Menu_Group_Header rn_Menu_Group_Header) { +// List lineByHeader = this.r.findLineByHeader(rn_Menu_Group_Header); +// return lineByHeader; +// } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_DynamicTransactionService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_DynamicTransactionService.java new file mode 100644 index 0000000..732171e --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_DynamicTransactionService.java @@ -0,0 +1,26 @@ +package com.realnet.fnd.service; + +import java.util.List; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import com.realnet.fnd.entity.Rn_Dynamic_Transaction; + +public interface Rn_DynamicTransactionService { + List getAll(); + + Page getAll(Pageable p); + + List getByFormId(int form_id); + + Rn_Dynamic_Transaction getByIdAndFormId(int id, int form_id); + + + Rn_Dynamic_Transaction save(Rn_Dynamic_Transaction rn_dynamic_transaction); + + Rn_Dynamic_Transaction updateByFormId(int id, int form_id, Rn_Dynamic_Transaction rn_dynamic_transaction); + + boolean deleteById(int id); + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_DynamicTransactionServiceImpl.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_DynamicTransactionServiceImpl.java new file mode 100644 index 0000000..4ab937c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_DynamicTransactionServiceImpl.java @@ -0,0 +1,105 @@ +package com.realnet.fnd.service; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import com.realnet.exceptions.ResourceNotFoundException; +import com.realnet.fnd.entity.Rn_Dynamic_Transaction; +import com.realnet.fnd.repository.Rn_DynamicTransactionRepository; + +@Service +public class Rn_DynamicTransactionServiceImpl implements Rn_DynamicTransactionService { + + @Autowired + private Rn_DynamicTransactionRepository rn_dynamic_transactionRepository; + + @Override + public List getAll() { + return rn_dynamic_transactionRepository.findAll(); + } + + @Override + public Page getAll(Pageable page) { + return rn_dynamic_transactionRepository.findAll(page); + } + + @Override + public List getByFormId(int form_id) { + // Rn_Dynamic_Transaction rn_dynamic_transaction = + // rn_dynamic_transactionRepository.findById(id) + List rn_dynamic_transaction = rn_dynamic_transactionRepository.findByFormId(form_id); + return rn_dynamic_transaction; + } + + @Override + public Rn_Dynamic_Transaction save(Rn_Dynamic_Transaction rn_dynamic_transaction) { + Rn_Dynamic_Transaction savedRn_Dynamic_Transaction = rn_dynamic_transactionRepository + .save(rn_dynamic_transaction); + return savedRn_Dynamic_Transaction; + } + + @Override + public Rn_Dynamic_Transaction updateByFormId(int id, int form_id, Rn_Dynamic_Transaction txRequest) { + Rn_Dynamic_Transaction rn_dynamic_transaction = rn_dynamic_transactionRepository.findByIdAndFormId(id, form_id) + .orElseThrow(() -> new ResourceNotFoundException("Extension Field not found :: " + form_id)); + rn_dynamic_transaction.setUpdatedBy(txRequest.getUpdatedBy()); + // rn_dynamic_transaction.setForm_id(txRequest.getForm_id()); // modify needed + rn_dynamic_transaction.setForm_version(txRequest.getForm_version()); + + rn_dynamic_transaction.setComp1(txRequest.getComp1()); + rn_dynamic_transaction.setComp2(txRequest.getComp2()); + rn_dynamic_transaction.setComp3(txRequest.getComp3()); + rn_dynamic_transaction.setComp4(txRequest.getComp4()); + rn_dynamic_transaction.setComp5(txRequest.getComp5()); + rn_dynamic_transaction.setComp6(txRequest.getComp6()); + rn_dynamic_transaction.setComp7(txRequest.getComp7()); + rn_dynamic_transaction.setComp8(txRequest.getComp8()); + rn_dynamic_transaction.setComp9(txRequest.getComp9()); + rn_dynamic_transaction.setComp10(txRequest.getComp10()); + rn_dynamic_transaction.setComp11(txRequest.getComp11()); + rn_dynamic_transaction.setComp12(txRequest.getComp12()); + rn_dynamic_transaction.setComp13(txRequest.getComp13()); + rn_dynamic_transaction.setComp14(txRequest.getComp14()); + rn_dynamic_transaction.setComp15(txRequest.getComp15()); + rn_dynamic_transaction.setComp16(txRequest.getComp16()); + rn_dynamic_transaction.setComp17(txRequest.getComp17()); + rn_dynamic_transaction.setComp18(txRequest.getComp18()); + rn_dynamic_transaction.setComp19(txRequest.getComp19()); + rn_dynamic_transaction.setComp20(txRequest.getComp20()); + rn_dynamic_transaction.setComp21(txRequest.getComp21()); + rn_dynamic_transaction.setComp22(txRequest.getComp22()); + rn_dynamic_transaction.setComp23(txRequest.getComp23()); + rn_dynamic_transaction.setComp24(txRequest.getComp24()); + rn_dynamic_transaction.setComp25(txRequest.getComp25()); + rn_dynamic_transaction.setComp_l26(txRequest.getComp_l26()); + rn_dynamic_transaction.setComp_l27(txRequest.getComp_l27()); + rn_dynamic_transaction.setComp_l28(txRequest.getComp_l28()); + rn_dynamic_transaction.setComp_l29(txRequest.getComp_l29()); + rn_dynamic_transaction.setComp_l30(txRequest.getComp_l30()); + final Rn_Dynamic_Transaction updated_ext_field = rn_dynamic_transactionRepository.save(rn_dynamic_transaction); + return updated_ext_field; + } + + @Override + public boolean deleteById(int id) { + if (!rn_dynamic_transactionRepository.existsById(id)) { + throw new ResourceNotFoundException("Data not Exist = " + id); + } + Rn_Dynamic_Transaction rn_dynamic_transaction = rn_dynamic_transactionRepository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Data not found :: " + id)); + rn_dynamic_transactionRepository.delete(rn_dynamic_transaction); + return true; + } + + @Override + public Rn_Dynamic_Transaction getByIdAndFormId(int id, int form_id) { + Rn_Dynamic_Transaction rn_dynamic_transaction = rn_dynamic_transactionRepository.findByIdAndFormId(id, form_id) + .orElseThrow(() -> new ResourceNotFoundException("Data not found with id :: " + id + " and form_id ::" + form_id)); + return rn_dynamic_transaction; + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Forms_Setup_Service.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Forms_Setup_Service.java new file mode 100644 index 0000000..3ce6485 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Forms_Setup_Service.java @@ -0,0 +1,29 @@ +package com.realnet.fnd.service; + +import java.util.List; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import com.realnet.fnd.entity.Rn_Forms_Setup; + +public interface Rn_Forms_Setup_Service { + List getAll(); + + Page getAll(Pageable p); + + Rn_Forms_Setup getById(int id); + + Rn_Forms_Setup save(Rn_Forms_Setup rn_forms_setup); + + Rn_Forms_Setup updateById(int id, Rn_Forms_Setup rn_forms_setup); + + boolean deleteById(int id); + + List getByFormId(int form_id); + + void buildDynamicForm(int form_id); + + String stringReplace(String str, String start, String end, String replaceWith); + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Forms_Setup_ServiceImpl.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Forms_Setup_ServiceImpl.java new file mode 100644 index 0000000..0d8063b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Forms_Setup_ServiceImpl.java @@ -0,0 +1,302 @@ +package com.realnet.fnd.service; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.List; + +import org.apache.commons.io.FileUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import com.realnet.exceptions.ResourceNotFoundException; +import com.realnet.fnd.entity.Rn_Forms_Component_Setup; +import com.realnet.fnd.entity.Rn_Forms_Setup; +import com.realnet.fnd.repository.Rn_Forms_Setup_Repository; +import com.realnet.utils.WireFrameConstant; + +@Service +public class Rn_Forms_Setup_ServiceImpl implements Rn_Forms_Setup_Service { + + @Value("${angularProjectPath}") + private String angularProjectPath; + + @Autowired + private Rn_Forms_Setup_Repository rn_forms_setup_repository; + + @Override + public List getAll() { + return rn_forms_setup_repository.findAll(); + } + + @Override + public Page getAll(Pageable page) { + return rn_forms_setup_repository.findAll(page); + } + + @Override + public Rn_Forms_Setup getById(int id) { + Rn_Forms_Setup rn_forms_setup = rn_forms_setup_repository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Rn_Forms_Setup not found :: " + id)); + return rn_forms_setup; + } + + @Override + public Rn_Forms_Setup save(Rn_Forms_Setup rn_forms_setup) { + Rn_Forms_Setup savedRn_Forms_Setup = rn_forms_setup_repository.save(rn_forms_setup); + return savedRn_Forms_Setup; + } + + @Override + public Rn_Forms_Setup updateById(int id, Rn_Forms_Setup rn_forms_setupRequest) { + Rn_Forms_Setup old_rn_forms_setup = rn_forms_setup_repository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Rn_Forms_Setup not found :: " + id)); + old_rn_forms_setup.setButton_caption(rn_forms_setupRequest.getButton_caption()); + old_rn_forms_setup.setForm_desc(rn_forms_setupRequest.getForm_desc()); + old_rn_forms_setup.setForm_name(rn_forms_setupRequest.getForm_name()); + old_rn_forms_setup.setPage_event(rn_forms_setupRequest.getPage_event()); + old_rn_forms_setup.setRelated_to(rn_forms_setupRequest.getRelated_to()); + // line part + old_rn_forms_setup.setComponents(rn_forms_setupRequest.getComponents()); + // updated by + old_rn_forms_setup.setUpdatedBy(rn_forms_setupRequest.getUpdatedBy()); + final Rn_Forms_Setup updated_rn_forms_setup = rn_forms_setup_repository.save(old_rn_forms_setup); + return updated_rn_forms_setup; + } + + @Override + public boolean deleteById(int id) { + Rn_Forms_Setup rn_forms_setup = rn_forms_setup_repository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Rn_Forms_Setup not found :: " + id)); + rn_forms_setup_repository.delete(rn_forms_setup); + return true; + } + + @Override + public List getByFormId(int form_id) { + return rn_forms_setup_repository.findByFormId(form_id); + } + + @Override + public void buildDynamicForm(int form_id) + { + //HEADER + Rn_Forms_Setup rn_forms_setup = rn_forms_setup_repository.findById(form_id) + .orElseThrow(() -> new ResourceNotFoundException("Rn_Forms_Setup not found :: " + form_id)); + + //LINE + List components = rn_forms_setup.getComponents(); + String form_name = rn_forms_setup.getForm_name(); + String form_name_upper = form_name.toUpperCase(); + String buttonCaption = rn_forms_setup.getButton_caption(); + + StringBuilder dynamic_entry_form_html = new StringBuilder(); + StringBuilder dynamic_grid_view_form = new StringBuilder(); + StringBuilder dynamic_read_only_form = new StringBuilder(); + StringBuilder dynamic_edit_form = new StringBuilder(); + // add + dynamic_entry_form_html.append("
    \r\n" + + "

    ENTRY FORM

    \r\n" + + "\r\n" + + "
    \r\n" + + "

    studen info

    \r\n" + + "
    \n" + + " \r\n" + + "
    \r\n" + + " \r\n"); + + + // edit + dynamic_edit_form.append("
    \r\n" + + "

    EDIT FORM

    \r\n" + + "
    \r\n" + + "

    " + form_name_upper + "

    \r\n" + + "\r\n" + + "
    \r\n" + + " \r\n" + + "
    \n"); + + // read-only + dynamic_read_only_form.append("
    \n"); + + int loopCount = 0; + for(Rn_Forms_Component_Setup component: components) + { + int i = ++loopCount; + String label = component.getLabel(); + String type = component.getType(); + boolean mandatory = Boolean.parseBoolean(component.getMandatory()); + boolean readonly = Boolean.parseBoolean(component.getReadonly()); + //boolean b1=Boolean.parseBoolean(string); + String drop_value = component.getDrop_values(); + + System.out.println("Label Name::" + label); + // FOR MODIFICATION REFER : com.realnet.wfb.service: SpringMVCFieldTypeServiceImpl.java + if(WireFrameConstant.DT_TEXTFIELD.equalsIgnoreCase(type)) { + // ENTRY FORM (.html) + dynamic_entry_form_html.append("\r\n" + + " \r\n" + + " \r\n" + + " \r\n"); + } else if (readonly) { + dynamic_entry_form_html.append(" style=\"width:180px\" readonly>\r\n" + + " \r\n" + + " \r\n"); + } else { + dynamic_entry_form_html.append(" style=\"width:180px\">\r\n" + + " \r\n" + + " \r\n"); + } + + // UPDATE FORM + dynamic_edit_form.append("\r\n" + + " \r\n" + + " \r\n" + + " \r\n"); + + } + + if(WireFrameConstant.DT_LONGTEXT.equalsIgnoreCase(type)) { + System.out.println("LONG TEXT i =" + i); + dynamic_entry_form_html.append(" \r\n" + + " \r\n" + + " \r\n" + + " \n"); + } + + + if (WireFrameConstant.FIELD_CHECKBOX.equalsIgnoreCase(type)) { + dynamic_entry_form_html.append(" \r\n" + + " \r\n" + + " \r\n" + " \n"); + } + + if (WireFrameConstant.FIELD_AUTOCOMPLETE.equalsIgnoreCase(type)) { + dynamic_entry_form_html.append(" \r\n" + " \r\n" + + " \r\n" + " \n"); + } + + // GRID VIEW FORM (.ts) + dynamic_grid_view_form.append("{prop:\"comp" + i + "\" , name: \"" + label + "\" , width:120 },\r\n"); + + // READ-ONLY FORM + dynamic_read_only_form.append("\r\n" + + " \r\n" + + " \r\n" + + " \r\n"); + + } // LOOP END + + // ADD + dynamic_entry_form_html.append("\n
    " + label + ": \r\n" + + " \r\n" + + "
    " + label + ":
    " + label + ":
    " + label + + "
    " + label + + "
    " + label + " {{ dynamicForm.comp" + i + " }}
    \r\n" + + "
    \r\n" + + " \r\n" + + "
    \r\n" + + "
    \r\n" + + "
    \r\n"); + + + // UPDATE + dynamic_edit_form.append(" \r\n" + + "
    \r\n" + + " \r\n" + + " \r\n" + + " \r\n" + + "\r\n"); + + // READ-ONLY + dynamic_read_only_form.append(" \r\n"); + + FileWriter fw = null; + BufferedWriter bw = null; + try { + + // ENTRY FORM + String ngDynamicEntryFormHtmlPath = angularProjectPath + + "/src/app/pages/dynamic-form/add/add-dynamic-form.component.html"; + File ngDynamicEntryFormHtmlFile = new File(ngDynamicEntryFormHtmlPath); + if (!ngDynamicEntryFormHtmlFile.exists()) { + ngDynamicEntryFormHtmlFile.createNewFile(); + } + fw = new FileWriter(ngDynamicEntryFormHtmlFile.getAbsoluteFile()); + bw = new BufferedWriter(fw); + bw.write(dynamic_entry_form_html.toString()); + bw.close(); + + // UPDATE FORM + String ngDynamicEditFormHtmlPath = angularProjectPath + + "/src/app/pages/dynamic-form/edit/edit-dynamic-form.component.html"; + File ngDynamicEditFormHtmlFile = new File(ngDynamicEditFormHtmlPath); + if (!ngDynamicEditFormHtmlFile.exists()) { + ngDynamicEditFormHtmlFile.createNewFile(); + } + fw = new FileWriter(ngDynamicEditFormHtmlFile.getAbsoluteFile()); + bw = new BufferedWriter(fw); + bw.write(dynamic_edit_form.toString()); + bw.close(); + + // GRID VIEW FORM + final String grid_form_start = "// DYNAMIC FORM GRID START"; + final String grid_form_end = "// DYNAMIC FORM GRID END"; + String grid_form_replaceWith = dynamic_grid_view_form.toString(); + String ngDynamicGridFormTsPath = angularProjectPath + + "/src/app/pages/dynamic-form/all/all-dynamic-form.component.ts"; + File ngDynamicGridFormTsFile = new File(ngDynamicGridFormTsPath); + String grid_fileString = FileUtils.readFileToString(ngDynamicGridFormTsFile, StandardCharsets.UTF_8); + String grid_finalString = stringReplace(grid_fileString, grid_form_start, grid_form_end, grid_form_replaceWith); + + bw = new BufferedWriter(new FileWriter(ngDynamicGridFormTsFile, false)); // replaced string + bw.write(grid_finalString); + bw.close(); + + // READ-ONLY FORM + final String read_only_form_start = ""; + final String read_only_form_end = ""; + String read_only_form_replaceWith = dynamic_read_only_form.toString(); + String ngDynamicReadOnlyFormHtmlPath = angularProjectPath + + "/src/app/pages/dynamic-form/read-only/read-only-dynamic-form.component.html"; + File ngDynamicReadOnlyFormHtmlFile = new File(ngDynamicReadOnlyFormHtmlPath); + String read_only_fileString = FileUtils.readFileToString(ngDynamicReadOnlyFormHtmlFile, StandardCharsets.UTF_8); + String read_only_finalString = stringReplace(read_only_fileString, read_only_form_start, read_only_form_end, read_only_form_replaceWith); + + bw = new BufferedWriter(new FileWriter(ngDynamicReadOnlyFormHtmlFile, false)); // replaced string + bw.write(read_only_finalString); + bw.close(); + + } catch (IOException e) { + System.out.println("error is .." + e); + } + } + + @Override + public String stringReplace(String str, String start, String end, String replaceWith) { + int i = str.indexOf(start); + while (i != -1) { + int j = str.indexOf(end, i + 1); + if (j != -1) { + String data = str.substring(0, i + start.length()) + "\n" + replaceWith + "\n"; + String temp = str.substring(j); + data += temp; + str = data; + i = str.indexOf(start, i + replaceWith.length() + end.length() + 1); + } else { + break; + } + } + return str; + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Function_Register_Service.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Function_Register_Service.java new file mode 100644 index 0000000..3e3e185 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Function_Register_Service.java @@ -0,0 +1,21 @@ +package com.realnet.fnd.service; + +import java.util.List; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import com.realnet.fnd.entity.Rn_Function_Register; + +public interface Rn_Function_Register_Service { + List getAll(); + Page getAll(Pageable p); + Rn_Function_Register getById(int id); + Rn_Function_Register save(Rn_Function_Register rn_function_register); + Rn_Function_Register updateById(int id, Rn_Function_Register rn_function_register); + boolean deleteById(int id); + + List getByMenuId(int menu_id); + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Function_Register_ServiceImpl.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Function_Register_ServiceImpl.java new file mode 100644 index 0000000..298d828 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Function_Register_ServiceImpl.java @@ -0,0 +1,81 @@ +package com.realnet.fnd.service; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import com.realnet.exceptions.ResourceNotFoundException; +import com.realnet.fnd.entity.Rn_Function_Register; +import com.realnet.fnd.repository.Rn_Function_Register_Repository; + +@Service +public class Rn_Function_Register_ServiceImpl implements Rn_Function_Register_Service { + + @Autowired + private Rn_Function_Register_Repository rn_function_register_repository; + + @Override + public List getAll() { + return rn_function_register_repository.findAll(); + } + + @Override + public Page getAll(Pageable page) { + return rn_function_register_repository.findAll(page); + } + + @Override + public Rn_Function_Register getById(int id) { + Rn_Function_Register rn_function_register = rn_function_register_repository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Menu not found :: " + id)); + return rn_function_register; + } + + @Override + public Rn_Function_Register save(Rn_Function_Register rn_function_register) { + Rn_Function_Register savedRn_Function_Register = rn_function_register_repository.save(rn_function_register); + return savedRn_Function_Register; + } + + @Override + public Rn_Function_Register updateById(int id, Rn_Function_Register functionRequest) { + Rn_Function_Register old_function = rn_function_register_repository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Menu not found :: " + id)); + + old_function.setMenu_id(functionRequest.getMenu_id()); + old_function.setFunction_name(functionRequest.getFunction_name()); + old_function.setFunction_action_name(functionRequest.getFunction_action_name()); + old_function.setFunction_icon(functionRequest.getFunction_icon()); + old_function.setEnd_date(functionRequest.getEnd_date()); + old_function.setEnable_flag(functionRequest.getEnable_flag()); + //This is for line part + // old_function.setStudents(functionRequest.getStudents()); // need to improve + old_function.setUpdatedBy(functionRequest.getUpdatedBy()); + final Rn_Function_Register updated_function = rn_function_register_repository.save(old_function); + return updated_function; + } + + @Override + public boolean deleteById(int id) { + if (!rn_function_register_repository.existsById(id)) { + throw new ResourceNotFoundException("Rn_Menu not exist"); + } + Rn_Function_Register rn_function_register = rn_function_register_repository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Menu not found :: " + id)); + rn_function_register_repository.delete(rn_function_register); + return true; + } + + @Override + public List getByMenuId(int menu_id) { +// List functions = rn_function_register_repository.findByMenuId(menu_id); +// if(functions.isEmpty()) { +// throw new ResourceNotFoundException("Rn_Function_Register Is Empty"); +// } + return rn_function_register_repository.findByMenuId(menu_id); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Main_Menu_Service.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Main_Menu_Service.java new file mode 100644 index 0000000..4029dec --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Main_Menu_Service.java @@ -0,0 +1,25 @@ +package com.realnet.fnd.service; + +import java.util.List; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import com.realnet.fnd.entity.Rn_Main_Menu; + +public interface Rn_Main_Menu_Service { + List getAll(); + + Page getAll(Pageable p); + + List getByAccountId(String account_id); + + Rn_Main_Menu getById(int id); + + Rn_Main_Menu save(Rn_Main_Menu rn_Main_Menu); + + Rn_Main_Menu updateById(int id, Rn_Main_Menu rn_main_menu); + + boolean deleteById(int id); + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Main_Menu_ServiceImpl.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Main_Menu_ServiceImpl.java new file mode 100644 index 0000000..9ab3f64 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Main_Menu_ServiceImpl.java @@ -0,0 +1,79 @@ +package com.realnet.fnd.service; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import com.realnet.exceptions.ResourceNotFoundException; +import com.realnet.fnd.entity.Rn_Main_Menu; +import com.realnet.fnd.repository.Rn_Main_Menu_Repository; + +@Service +public class Rn_Main_Menu_ServiceImpl implements Rn_Main_Menu_Service { + + @Autowired + private Rn_Main_Menu_Repository rn_menu_register_repository; + + @Override + public List getAll() { + return rn_menu_register_repository.findAll(); + } + + @Override + public Page getAll(Pageable page) { + return rn_menu_register_repository.findAll(page); + } + + @Override + public List getByAccountId(String account_id) { + List rn_menu_register = rn_menu_register_repository.findByAccountId(account_id); + if (rn_menu_register.isEmpty()) { + throw new ResourceNotFoundException("Menu not found With Account id :: " + account_id); + } + return rn_menu_register; + } + + @Override + public Rn_Main_Menu getById(int id) { + Rn_Main_Menu rn_menu_register = rn_menu_register_repository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Menu not found :: " + id)); + return rn_menu_register; + } + + @Override + public Rn_Main_Menu save(Rn_Main_Menu rn_menu_register) { + Rn_Main_Menu savedRn_Main_Menu = rn_menu_register_repository.save(rn_menu_register); + return savedRn_Main_Menu; + } + + @Override + public Rn_Main_Menu updateById(int id, Rn_Main_Menu menuRequest) { + Rn_Main_Menu old_menu = rn_menu_register_repository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Menu not found :: " + id)); + + old_menu.setMenu_name(menuRequest.getMenu_name()); + old_menu.setMenu_action_link(menuRequest.getMenu_action_link()); + old_menu.setMenu_icon(menuRequest.getMenu_icon()); + old_menu.setMenu_type(menuRequest.getMenu_type()); + // This is for line part // need to improve + old_menu.setSub_menus(menuRequest.getSub_menus()); + old_menu.setUpdatedBy(menuRequest.getUpdatedBy()); + final Rn_Main_Menu updated_menu = rn_menu_register_repository.save(old_menu); + return updated_menu; + } + + @Override + public boolean deleteById(int id) { + if (!rn_menu_register_repository.existsById(id)) { + throw new ResourceNotFoundException("Rn_Menu not exist"); + } + Rn_Main_Menu rn_menu_register = rn_menu_register_repository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Menu not found :: " + id)); + rn_menu_register_repository.delete(rn_menu_register); + return true; + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Menu_Group_Service.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Menu_Group_Service.java new file mode 100644 index 0000000..a343d60 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Menu_Group_Service.java @@ -0,0 +1,29 @@ +package com.realnet.fnd.service; + +import java.util.List; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import com.realnet.fnd.entity.Rn_Menu_Group_Header; + +public interface Rn_Menu_Group_Service { + List getAll(); + + Page getAll(Pageable p); + + Rn_Menu_Group_Header getById(Long id); + + Rn_Menu_Group_Header save(Rn_Menu_Group_Header rn_menu_group_header); + + Rn_Menu_Group_Header updateById(Long id, Rn_Menu_Group_Header rn_menu_group_header); + + boolean deleteById(Long id); + + //List getByFormId(int form_id); + + //Rn_Main_Menu loadmenuGroupByUser(int menu_group_id); + + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Menu_Group_ServiceImpl.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Menu_Group_ServiceImpl.java new file mode 100644 index 0000000..1fdddad --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Menu_Group_ServiceImpl.java @@ -0,0 +1,86 @@ +package com.realnet.fnd.service; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import com.realnet.exceptions.ResourceNotFoundException; +import com.realnet.fnd.entity.Rn_Menu_Group_Header; +import com.realnet.fnd.repository.Rn_Menu_Group_Repository; + +@Service +public class Rn_Menu_Group_ServiceImpl implements Rn_Menu_Group_Service { + + + @Autowired + private Rn_Menu_Group_Repository rn_menu_group_repository; + + @Override + public List getAll() { + return rn_menu_group_repository.findAll(); + } + + @Override + public Page getAll(Pageable page) { + return rn_menu_group_repository.findAll(page); + } + + @Override + public Rn_Menu_Group_Header getById(Long id) { + Rn_Menu_Group_Header rn_forms_setup = rn_menu_group_repository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Rn_Menu_Group not found :: " + id)); + return rn_forms_setup; + } + + @Override + public Rn_Menu_Group_Header save(Rn_Menu_Group_Header rn_menu_group_header) { + Rn_Menu_Group_Header savedMenu_Group = rn_menu_group_repository.save(rn_menu_group_header); + return savedMenu_Group; + } + + @Override + public Rn_Menu_Group_Header updateById(Long id, Rn_Menu_Group_Header menu_groupRequest) { + Rn_Menu_Group_Header old_rn_menu_group = rn_menu_group_repository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Rn_Menu_Group not found :: " + id)); + old_rn_menu_group.setMenu_name(menu_groupRequest.getMenu_name()); + old_rn_menu_group.setDescription(menu_groupRequest.getDescription()); +// old_rn_menu_group.setActive(menu_groupRequest.getActive()); + old_rn_menu_group.setStart_date(menu_groupRequest.getStart_date()); + old_rn_menu_group.setEnd_date(menu_groupRequest.getEnd_date()); + // line part + old_rn_menu_group.setMenu_group_lines(menu_groupRequest.getMenu_group_lines()); + // updated by + old_rn_menu_group.setUpdatedBy(menu_groupRequest.getUpdatedBy()); + final Rn_Menu_Group_Header updated_rn_forms_setup = rn_menu_group_repository.save(old_rn_menu_group); + return updated_rn_forms_setup; + } + + @Override + public boolean deleteById(Long id) { + Rn_Menu_Group_Header rn_forms_setup = rn_menu_group_repository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Rn_Menu_Group_Header not found :: " + id)); + rn_menu_group_repository.delete(rn_forms_setup); + return true; + } + + // this is not done +// @Override +// public Rn_Main_Menu loadmenuGroupByUser(int menu_group_id) { +// Rn_Menu_Group_Header menu_group_header = getById(menu_group_id); +// List menu_group_lines = menu_group_header.getMenu_group_lines(); +// for(Rn_Menu_Group_Line menu_group_line : menu_group_lines) { +// int menu_id = menu_group_line.getMenu_id(); +// +// } +// return null; +// } + + /* + * @Override public List getByFormId(int form_id) { return + * rn_menu_group_repository.findByFormId(form_id); } + */ + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Menu_Register_Service.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Menu_Register_Service.java new file mode 100644 index 0000000..6d92595 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Menu_Register_Service.java @@ -0,0 +1,19 @@ +package com.realnet.fnd.service; + +import java.util.List; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import com.realnet.fnd.entity.Rn_Menu_Register; + +public interface Rn_Menu_Register_Service { + List getAll(); + Page getAll(Pageable p); + List getByAccountId(String account_id); + Rn_Menu_Register getById(int id); + Rn_Menu_Register save(Rn_Menu_Register rn_Menu_Register); + Rn_Menu_Register updateById(int id, Rn_Menu_Register rn_Menu_Register); + boolean deleteById(int id); + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Menu_Register_ServiceImpl.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Menu_Register_ServiceImpl.java new file mode 100644 index 0000000..9d346b4 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Menu_Register_ServiceImpl.java @@ -0,0 +1,82 @@ +package com.realnet.fnd.service; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import com.realnet.exceptions.ResourceNotFoundException; +import com.realnet.fnd.entity.Rn_Menu_Register; +import com.realnet.fnd.repository.Rn_Menu_Register_Repository; + +@Service +public class Rn_Menu_Register_ServiceImpl implements Rn_Menu_Register_Service { + + @Autowired + private Rn_Menu_Register_Repository rn_menu_register_repository; + + @Override + public List getAll() { + return rn_menu_register_repository.findAll(); + } + + @Override + public Page getAll(Pageable page) { + return rn_menu_register_repository.findAll(page); + } + + @Override + public List getByAccountId(String account_id) { + List rn_menu_register = rn_menu_register_repository.findByAccountId(account_id); + if(rn_menu_register.isEmpty()) { + throw new ResourceNotFoundException("Menus not found With Account id :: " + account_id); + } + return rn_menu_register; + } + + @Override + public Rn_Menu_Register getById(int id) { + Rn_Menu_Register rn_menu_register = rn_menu_register_repository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Menu not found :: " + id)); + return rn_menu_register; + } + + @Override + public Rn_Menu_Register save(Rn_Menu_Register rn_menu_register) { + Rn_Menu_Register savedRn_Menu_Register = rn_menu_register_repository.save(rn_menu_register); + return savedRn_Menu_Register; + } + + @Override + public Rn_Menu_Register updateById(int id, Rn_Menu_Register menuRequest) { + Rn_Menu_Register old_menu = rn_menu_register_repository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Menu not found :: " + id)); + + old_menu.setMain_menu_name(menuRequest.getMain_menu_name()); + old_menu.setMain_menu_action_name(menuRequest.getMain_menu_action_name()); + old_menu.setMain_menu_icon(menuRequest.getMain_menu_icon()); + old_menu.setEnable_flag(menuRequest.getEnable_flag()); + old_menu.setEnd_date(menuRequest.getEnd_date()); + //This is for line part + // old_menu.setStudents(menuRequest.getStudents()); // need to improve + old_menu.setUpdatedBy(menuRequest.getUpdatedBy()); + final Rn_Menu_Register updated_menu = rn_menu_register_repository.save(old_menu); + return updated_menu; + } + + @Override + public boolean deleteById(int id) { + if (!rn_menu_register_repository.existsById(id)) { + throw new ResourceNotFoundException("Rn_Menu not exist"); + } + Rn_Menu_Register rn_menu_register = rn_menu_register_repository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Menu not found :: " + id)); + rn_menu_register_repository.delete(rn_menu_register); + return true; + } + + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service1/GrpMenuAccessServiceImpl.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service1/GrpMenuAccessServiceImpl.java new file mode 100644 index 0000000..0c26709 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service1/GrpMenuAccessServiceImpl.java @@ -0,0 +1,25 @@ +package com.realnet.fnd.service1; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import com.realnet.fnd.entity1.GrpMenuAccess; +import com.realnet.fnd.repository1.GrpMenuAccessRepository; + +@Service +public class GrpMenuAccessServiceImpl { + private GrpMenuAccessRepository grpMenuAccessRepository; + @Autowired + public GrpMenuAccessServiceImpl(GrpMenuAccessRepository grpMenuAccessRepository) { + super(); + this.grpMenuAccessRepository = grpMenuAccessRepository; + } + public List getAll(Pageable page){ + List l = grpMenuAccessRepository.findAll(page).getContent(); + return l; + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service1/MenuDetServiceImpl.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service1/MenuDetServiceImpl.java new file mode 100644 index 0000000..04bea5c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service1/MenuDetServiceImpl.java @@ -0,0 +1,33 @@ +package com.realnet.fnd.service1; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import com.realnet.fnd.entity1.MenuDet; +import com.realnet.fnd.repository1.MenuDetRepository; + +@Service +public class MenuDetServiceImpl { + private MenuDetRepository menuDetRepository; + @Autowired + public MenuDetServiceImpl(MenuDetRepository menuDetRepository) { + super(); + this.menuDetRepository = menuDetRepository; + } + public List getAll(){ + return menuDetRepository.findAll(); + } + public List getAllObject(Pageable page){ + List l = menuDetRepository.getAll(page).getContent(); + return l; + } + public List getById(Long usrGrp,Long menuId){ + return menuDetRepository.getById(usrGrp, menuId); + } + public List getByUserId(Long usrGrp,Long menuId) { + return menuDetRepository.getByUserId(usrGrp,menuId); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service1/SecmenuDetailService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service1/SecmenuDetailService.java new file mode 100644 index 0000000..0d359c8 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service1/SecmenuDetailService.java @@ -0,0 +1,135 @@ +package com.realnet.fnd.service1; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.realnet.fnd.entity1.GrpMenuAccess; +import com.realnet.fnd.entity1.MenuDet; +import com.realnet.fnd.repository1.GrpMenuAccessRepository; +import com.realnet.fnd.repository1.MenuDetRepository; +import com.realnet.users.entity1.AppUserRole; +import com.realnet.users.repository1.AppUserRoleRepository; + +@Service +public class SecmenuDetailService { + + @Autowired + private MenuDetRepository menuDetRepository; + + @Autowired + private AppUserRoleRepository appUserRoleRepository; + + @Autowired + private GrpMenuAccessRepository grpMenuAccessRepository; + + public MenuDet customsecmenuadd(String tablename, String menuActionLink, Long menuId) { + + MenuDet menuDet = new MenuDet(); + String origTableName = tablename.replaceAll("_", " "); + + menuDet.setMenuId(menuId); + menuDet.setItemSeq(8001l); + menuDet.setMain_menu_icon_name(tablename); + menuDet.setMenuItemDesc(origTableName); + menuDet.setModuleName(tablename); + menuDet.setMain_menu_action_name(menuActionLink); + + menuDet.setStatus("Enable"); + + MenuDet save = menuDetRepository.save(menuDet); + + sync(menuId, new GrpMenuAccess()); + + System.out.println(save.getMenuItemDesc() + " menu inserted"); + + return save; + + } + +// sync service + public List sync(Long gmenuid, GrpMenuAccess gr) { + + List list = new ArrayList<>(); + MenuDet formenu = menuDetRepository.findById(gmenuid).orElseThrow(null); + + List all = grpMenuAccessRepository.findByGrpAndMenuid1(formenu.getMenuItemId()); + + for (GrpMenuAccess a : all) { + + a.setMenuItemId(formenu); + a.setItemSeq(formenu.getItemSeq()); + a.setMenuItemDesc(formenu.getMenuItemDesc()); + a.setModuleName(formenu.getModuleName()); + a.setStatus(formenu.getStatus()); + a.setMain_menu_action_name(formenu.getMain_menu_action_name()); + a.setMain_menu_icon_name(formenu.getMain_menu_icon_name()); + a.setMenuId(formenu.getMenuId()); + GrpMenuAccess save = grpMenuAccessRepository.save(a); + list.add(save); + } + + List submenu = menuDetRepository.findAllSubmenuByMenuId(gmenuid); + for (int i = 0; i < submenu.size(); i++) { + MenuDet m = menuDetRepository.findById(submenu.get(i).getMenuItemId()).orElseThrow(null); + List li = grpMenuAccessRepository.findlist(m.getMenuItemId()); + + if (li.isEmpty()) { + List grp = grpMenuAccessRepository.findAllById(gmenuid); + + for (GrpMenuAccess a : grp) { + AppUserRole app = appUserRoleRepository.findById(a.getUsrGrp().getUsrGrp()).orElseThrow(null); + gr.setUsrGrp(app); + gr.setMenuItemId(m); + + gr.setItemSeq(m.getItemSeq()); + gr.setMenuItemDesc(m.getMenuItemDesc()); + gr.setModuleName(m.getModuleName()); + gr.setStatus(m.getStatus()); + gr.setMain_menu_action_name(m.getMain_menu_action_name()); + gr.setMain_menu_icon_name(m.getMain_menu_icon_name()); + gr.setMenuId(m.getMenuId()); + + gr.setMCreate("true"); + gr.setMDelete("true"); + gr.setMEdit("true"); + gr.setMQuery("true"); + gr.setMVisible("true"); + gr.setIsdisable("true"); + gr.setMexport("true"); + + gr.setCreatedAt(new Date()); + gr.setUpdatedAt(new Date()); + + GrpMenuAccess save2 = grpMenuAccessRepository.save(gr); + list.add(save2); + } + + } + + else { + for (GrpMenuAccess g : li) { + + g.setMenuItemId(m); + + g.setItemSeq(m.getItemSeq()); + g.setMenuItemDesc(m.getMenuItemDesc()); + g.setModuleName(m.getModuleName()); + g.setStatus(m.getStatus()); + g.setMain_menu_action_name(m.getMain_menu_action_name()); + g.setMain_menu_icon_name(m.getMain_menu_icon_name()); + g.setMenuId(m.getMenuId()); + + GrpMenuAccess save1 = grpMenuAccessRepository.save(g); + list.add(save1); + } + } + } + return list; + + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/helper/CnsHelper.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/helper/CnsHelper.java new file mode 100644 index 0000000..54c2291 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/helper/CnsHelper.java @@ -0,0 +1,222 @@ +package com.realnet.helper; + +import java.nio.charset.StandardCharsets; + +import org.apache.commons.codec.binary.Base64; +import org.slf4j.Logger; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.client.RestTemplate; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.realnet.utils.Port_Constant; + +public class CnsHelper { + + static Logger log = org.slf4j.LoggerFactory.getLogger(CnsHelper.class); + + // CONNECTOR CALL + public static String callconnector(String name) throws JsonProcessingException { + + String token = null; + ResponseEntity u = null; + RestTemplate restTemplate = new RestTemplate(); + String url = Port_Constant.BACKEND_PORTAL_DOMAIN + "/token/Sure_Connectbyname/" + name; + +// + try { + + u = restTemplate.getForEntity(url, Object.class); + + } catch (Exception e) { + + System.out.println(" token get error " + e); + + // TODO: handle exception + } + Object object = u.getBody(); + + if (object != null) { + + ObjectMapper mapper = new ObjectMapper(); + String str = mapper.writeValueAsString(object); + + JsonParser parser = new JsonParser(); + JsonElement element = parser.parse(str); + + JsonObject obj = element.getAsJsonObject(); + JsonElement tok = obj.get("access_token"); + System.out.println("token is == " + token); + token = tok.getAsString(); + } else { + System.out.println(" empty totek get ..."); + } + return token; + } + + public static ResponseEntity run(String urll, String param, String method, String token, String username, + String password) { + + log.info("executing no parameters"); + + if (method.equalsIgnoreCase("DELETE")) { + Object body = DELETE(urll); + + return new ResponseEntity<>(body, HttpStatus.OK); + } else { + Object object = callmethod(urll, param, method, token, username, password); + + System.out.println(object); + return new ResponseEntity<>(object, HttpStatus.OK); + + } + } + + public static boolean DELETE(String url) { + RestTemplate restTemplate = new RestTemplate(); + + restTemplate.delete(url, Object.class); + + return true; + + } + + // CALL METHOD + public static Object callmethod(String url, String param, String method, String token, String username, + String password) { + + if (method.equalsIgnoreCase("GET")) { + ResponseEntity get = GET(url); + Object body = get.getBody(); + System.out.println(body); + return get.getBody(); + } + + else if (method.equalsIgnoreCase("POST")) { + + ResponseEntity post; + if (username != null && password != null) { + post = POSTForBasicAuth(url, param, username, password); + + } else { + + post = POST(url, param, token); + } + Object body = post.getBody(); + System.out.println(body); + + return post.getBody(); + + } else if (method.equalsIgnoreCase("PUT")) { + ResponseEntity put = PUT(url, param, token); + Object body = put.getBody(); + System.out.println(body); + + return put.getBody(); + + } else { + return null; + } + + } + + public static ResponseEntity GET(String get) { + RestTemplate restTemplate = new RestTemplate(); + + ResponseEntity u = restTemplate.getForEntity(get, Object.class); + int statusCodeValue = u.getStatusCodeValue(); + System.out.println(statusCodeValue); + + return u; + + } + + public static ResponseEntity GET(String get, String token) { + RestTemplate restTemplate = new RestTemplate(); + String resourceUrl = get; + String token1 = "Bearer " + token; + HttpHeaders headers = getHeaders(); + headers.set("Authorization", token1); + HttpEntity request = new HttpEntity(headers); + ResponseEntity u = restTemplate.exchange(resourceUrl, HttpMethod.GET, request, Object.class); + + int statusCodeValue = u.getStatusCodeValue(); + System.out.println(statusCodeValue); + + return u; + + } + + public static ResponseEntity POST(String jobinfo, Object user, String token) { + RestTemplate restTemplate = new RestTemplate(); + String resourceUrl = jobinfo; + String token1 = "Bearer " + token; + HttpHeaders headers = getHeaders(); + headers.set("Authorization", token1); + HttpEntity request = new HttpEntity(user, headers); + ResponseEntity res = restTemplate.postForEntity(resourceUrl, request, Object.class); + + return res; + + } + + public static ResponseEntity POSTForBasicAuth(String jobinfo, Object user, String username, + String password) { + + System.out.println(" call basic auth.."); + RestTemplate restTemplate = new RestTemplate(); + String resourceUrl = jobinfo; + + String auth = username + ":" + password; + byte[] encodedAuth = Base64.encodeBase64(auth.getBytes(StandardCharsets.US_ASCII)); + String authHeader = "Basic " + new String(encodedAuth); + + HttpHeaders headers = getHeaders(); + + headers.set("Authorization", authHeader); + + HttpEntity request = new HttpEntity<>(user.toString(), headers); + ResponseEntity res = null; + try { + + res = restTemplate.postForEntity(resourceUrl, request, Object.class); + } catch (Exception e) { + + System.out.println(" call basic auth error " + e); + // TODO: handle exception + } + + return res; + + } + + public static ResponseEntity PUT(String jobinfo, Object user, String token) { + RestTemplate restTemplate = new RestTemplate(); + String resourceUrl = jobinfo; + String token1 = "Bearer " + token; + HttpHeaders headers = getHeaders(); + headers.set("Authorization", token1); + HttpEntity request = new HttpEntity(user, headers); +// ResponseEntity res = restTemplate.put(resourceUrl, request, Object.class); + ResponseEntity res = restTemplate.exchange(resourceUrl, HttpMethod.PUT, request, Object.class); + + return res; + + } + + private static HttpHeaders getHeaders() { + HttpHeaders headers = new HttpHeaders(); + headers.set("Content-Type", MediaType.APPLICATION_JSON_VALUE); + headers.set("Accept", MediaType.APPLICATION_JSON_VALUE); + return headers; + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging/LogEntity.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging/LogEntity.java new file mode 100644 index 0000000..096563b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging/LogEntity.java @@ -0,0 +1,31 @@ +package com.realnet.logging; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +import lombok.Data; + +@Data +@Entity +@Table(name= "LOGS") +public class LogEntity { + + @Id + @Column(name="USER_ID") + private Long userId; + + @Column(name="DATED") + private String dated; + + @Column(name="LOGGER") + private String logger; + + @Column(name="LAVEL") + private String lavel; + + @Column(name="MESSAGE") + private String message; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging/LogExecutionTime.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging/LogExecutionTime.java new file mode 100644 index 0000000..4743378 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging/LogExecutionTime.java @@ -0,0 +1,12 @@ +package com.realnet.logging; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +public @interface LogExecutionTime { + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging/LoggingAspect.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging/LoggingAspect.java new file mode 100644 index 0000000..c775758 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging/LoggingAspect.java @@ -0,0 +1,145 @@ +package com.realnet.logging; + +import java.util.concurrent.TimeUnit; + +import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.AfterReturning; +import org.aspectj.lang.annotation.AfterThrowing; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Pointcut; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +import lombok.Data; + +@Data +@Component +public class LoggingAspect { + + Logger logger = LoggerFactory.getLogger(LoggingAspect.class); + + // static Logger logger = LogManager.getLogger(LoggingAspect.class.getName()); + + /* + * 1. (..) zero or more || (*) one or more args + * 2. @Before("execution(* com.realnet.*.*(..))") + * 3. getTarger() returns the Object name + */ + +// @Before("packagePointcut()") +// public void beforeMethodCall(JoinPoint joinPoint) throws JsonProcessingException { +// String className = joinPoint.getTarget().getClass().toString(); // com.realnet.controller.Rn_InstructorController +// String methodName = joinPoint.getSignature().getName(); //// getInstructors +// String methodSignature = joinPoint.getSignature().toString(); +// +// // Rn_InstructorResponse com.realnet.controller.Rn_InstructorController.getInstructors(Integer,Integer) +// //System.out.println(methodSignature); +// String method = getMethodSignature(methodSignature); +// logger.info("Executing " + className + " : " + method); +// +// Object[] args = joinPoint.getArgs(); +// // object into json format +// ObjectMapper mapper = new ObjectMapper(); +// String json = mapper.writeValueAsString(args); +// logger.debug("Arguments: " + json); +// } + + // handle before after together + @Around("anyClasses()") + public Object LoggingAdvice(ProceedingJoinPoint pjp) throws Throwable { + String className = pjp.getTarget().getClass().toString(); + // String methodName = pjp.getSignature().getName(); + String methodSignature = pjp.getSignature().toString(); + String methodName = methodSignature(methodSignature); + Object[] args = pjp.getArgs(); + // object into json format + ObjectMapper mapper = new ObjectMapper(); + String json = mapper.writeValueAsString(args); + logger.info("Executing : " + className + " : " + methodName); + logger.debug("Arguments: " + args); + Object object = pjp.proceed(); + logger.info("Execution complete: " + className + " : " + methodName); + logger.debug(className + " : " + methodName + " Response: " + json); + return object; + } + + + @AfterReturning("anyClasses()") + public void afterMethodCall(JoinPoint joinPoint) throws JsonProcessingException { + String className = joinPoint.getTarget().getClass().toString(); + String methodSignature = joinPoint.getSignature().toString(); + String methodName = methodSignature(methodSignature); + Object[] args = joinPoint.getArgs(); + // object into json format + ObjectMapper mapper = new ObjectMapper(); + String json = mapper.writeValueAsString(args); + logger.info("Successfully Executed: " + className + " : " + methodName); + } + + // handle exception + @AfterThrowing(pointcut = "anyClasses()", throwing = "ex") + public void errorHandling(JoinPoint joinPoint, Exception ex) throws JsonProcessingException { + String className = joinPoint.getTarget().getClass().toString(); + // String methodName = joinPoint.getSignature().getName(); + String methodSignature = joinPoint.getSignature().toString(); + String methodName = methodSignature(methodSignature); + Object[] args = joinPoint.getArgs(); + // object into json format + ObjectMapper mapper = new ObjectMapper(); + String json = mapper.writeValueAsString(args); + logger.debug(className + " : " + methodName + "Arguments: " + json); + logger.error("Some Exception Happens: " + className + " : " + methodName); + logger.error(ex.getMessage()); + } + + // any package, any class, any method inside com.realnet + @Pointcut("execution(* com.realnet.*.*.*(..)) && !@annotation(com.realnet.logging.NoLogging)") + public void packagePointcut() { + } + // any public class + @Pointcut("within(com.realnet..*) && !@annotation(com.realnet.logging.NoLogging)") + private void anyClasses() {} + + + // problem in config class + @Pointcut("!within(com.realnet.config..*)") + private void configOperations() { + } + + @Around("@annotation(com.realnet.logging.LogExecutionTime)") + public Object logExecutionTime(ProceedingJoinPoint joinPoint) throws Throwable { + long start = System.currentTimeMillis(); + + Object proceed = joinPoint.proceed(); + + long executionTime = System.currentTimeMillis() - start; + + long seconds = TimeUnit.MILLISECONDS.toSeconds(executionTime); + long minutes = (executionTime/1000)/60; + + System.out.println(joinPoint.getSignature() + " executed in " + seconds + "sec(" + minutes + " Mins)"); + return proceed; + } + + + + + static String methodSignature(String name) { + name = name.substring(name.lastIndexOf(".") + 1); + return name; + } + + + +// // any public class +// @Pointcut("execution(public * *(..))") +// private void anyPublicOperation() {} +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging/NoLogging.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging/NoLogging.java new file mode 100644 index 0000000..bebdce1 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging/NoLogging.java @@ -0,0 +1,11 @@ +package com.realnet.logging; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +public @interface NoLogging { +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging/SecurityNoLogging.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging/SecurityNoLogging.java new file mode 100644 index 0000000..933716b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging/SecurityNoLogging.java @@ -0,0 +1,11 @@ +package com.realnet.logging; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface SecurityNoLogging { +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/ExceptionLoggingController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/ExceptionLoggingController.java new file mode 100644 index 0000000..cd8da91 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/ExceptionLoggingController.java @@ -0,0 +1,92 @@ +//package com.realnet.logging1; +// +//import java.io.File; +//import java.io.FileWriter; +//import java.nio.file.FileSystems; +//import java.nio.file.Path; +//import java.nio.file.Paths; +// +//import javax.servlet.http.HttpSession; +// +//import org.slf4j.Logger; +//import org.slf4j.LoggerFactory; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.boot.web.servlet.error.ErrorController; +//import org.springframework.http.HttpStatus; +//import org.springframework.http.ResponseEntity; +//import org.springframework.web.bind.annotation.ExceptionHandler; +//import org.springframework.web.bind.annotation.RestControllerAdvice; +// +//import com.realnet.config.HttpLoggingFilter; +//import com.realnet.users.service1.AppUserServiceImpl; +// +//@RestControllerAdvice +//public class ExceptionLoggingController implements ErrorController{ +// private static final String ERROR_PATH = "/error"; +// private final Logger LOGGER = LoggerFactory.getLogger(getClass()); +// @Autowired +// private AppUserServiceImpl appUserServiceImpl; +// +// public ExceptionLoggingController(AppUserServiceImpl appUserServiceImpl) { +// super(); +// this.appUserServiceImpl = appUserServiceImpl; +// } +// +// @ExceptionHandler(Exception.class) +// public ResponseEntity internalServerEror(Exception exception,HttpSession session){ +// StackTraceElement[] e = exception.getStackTrace(); +// System.out.println(e[0].getMethodName()); +// System.out.println(e[0].getClassName()); +// LOGGER.error("Unhandled Error By "+appUserServiceImpl.getLoggedInUser().getUsername()+" = "+exception.getMessage()); +// LOGGER.error("Request Info = "+HttpLoggingFilter.logInfo+"Error at Mehod= "+e[0].getMethodName()+" In Class= "+e[0].getClassName()); +// if(session.getAttribute("generate_log").equals("Y")) { +// try { +// if (session.getAttribute("LogginLevel").equals("error")) { +// Path root = FileSystems.getDefault().getPath("").toAbsolutePath(); +// Path filePath = Paths.get(root.toString(),"logs",session.getAttribute("LogFileName").toString()); +// File f=filePath.toFile(); +// // File f = new File("/home/jboss/EAP-7.1.0/logs/sysadmin2_5463783.log"); +// FileWriter fw = new FileWriter(f,true); +// StringBuilder logInfo = HttpLoggingFilter.logInfo; +// logInfo.append(" [RESPONSE:").append(" ERROR]").append(" [ERROR AT ").append(e[0].getMethodName()) +// .append(" IN CLASS ").append(e[0].getClassName()).append("]"); +// fw.write(logInfo + "\n"); +// fw.close(); +// } else if (session.getAttribute("LogginLevel").equals("debug")) { +// Path root = FileSystems.getDefault().getPath("").toAbsolutePath(); +// Path filePath = Paths.get(root.toString(),"logs",session.getAttribute("LogFileName").toString()); +// File f=filePath.toFile(); +// // File f = new File("/home/jboss/EAP-7.1.0/logs/sysadmin2_5463783.log"); +// FileWriter fw = new FileWriter(f,true); +// StringBuilder logInfo = HttpLoggingFilter.logInfo; +// logInfo.append(" [RESPONSE:").append(" DEBUG]").append(" [ERROR AT ").append(e[0].getMethodName()) +// .append(" IN CLASS ").append(e[0].getClassName()).append("]"); +// fw.write(logInfo + "\n"); +// fw.close(); +// HttpLoggingFilter.logged=true; +// } else if (session.getAttribute("LogginLevel").equals("warn")) { +// Path root = FileSystems.getDefault().getPath("").toAbsolutePath(); +// Path filePath = Paths.get(root.toString(),"logs",session.getAttribute("LogFileName").toString()); +// File f=filePath.toFile(); +// // File f = new File("/home/jboss/EAP-7.1.0/logs/sysadmin2_5463783.log"); +// FileWriter fw = new FileWriter(f,true); +// StringBuilder logInfo = HttpLoggingFilter.logInfo; +// logInfo.append(" [RESPONSE:").append(" WARN]").append(" [ERROR AT ").append(e[0].getMethodName()) +// .append(" IN CLASS ").append(e[0].getClassName()).append("]"); +// fw.write(logInfo + "\n"); +// fw.close(); +// } +// } catch (Exception e1) { +// +// } +// } +// return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR); +// } +// +// @Override +// public String getErrorPath() { +// // TODO Auto-generated method stub +// return ERROR_PATH; +// } +// +//} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/PatternLayoutWithUserContext.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/PatternLayoutWithUserContext.java new file mode 100644 index 0000000..55f1f0e --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/PatternLayoutWithUserContext.java @@ -0,0 +1,12 @@ +package com.realnet.logging1; + +import ch.qos.logback.classic.PatternLayout; + +public class PatternLayoutWithUserContext extends PatternLayout { + static { + PatternLayout.defaultConverterMap.put( + "user", UserConverter.class.getName()); + PatternLayout.defaultConverterMap.put( + "session", SessionConverter.class.getName()); + } +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/SessionConverter.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/SessionConverter.java new file mode 100644 index 0000000..52954cd --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/SessionConverter.java @@ -0,0 +1,18 @@ +package com.realnet.logging1; + +import org.springframework.web.context.request.RequestAttributes; +import org.springframework.web.context.request.RequestContextHolder; + +import ch.qos.logback.classic.pattern.ClassicConverter; +import ch.qos.logback.classic.spi.ILoggingEvent; + +public class SessionConverter extends ClassicConverter { + @Override + public String convert(ILoggingEvent event) { + RequestAttributes attrs = RequestContextHolder.getRequestAttributes(); + if (attrs != null) { + return attrs.getSessionId(); + } + return "NO_SESSION"; + } +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/UserConverter.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/UserConverter.java new file mode 100644 index 0000000..f72cbe2 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/UserConverter.java @@ -0,0 +1,18 @@ +package com.realnet.logging1; + +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; + +import ch.qos.logback.classic.pattern.ClassicConverter; +import ch.qos.logback.classic.spi.ILoggingEvent; + +public class UserConverter extends ClassicConverter { + @Override + public String convert(ILoggingEvent event) { + Authentication auth = SecurityContextHolder.getContext().getAuthentication(); + if (auth != null) { + return auth.getName(); + } + return "NO_USER"; + } +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/controller/AppUserLogController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/controller/AppUserLogController.java new file mode 100644 index 0000000..ddc9cea --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/controller/AppUserLogController.java @@ -0,0 +1,183 @@ +package com.realnet.logging1.controller; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.time.Instant; +import java.util.Date; +import java.util.List; + +import javax.servlet.http.HttpSession; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.logging1.entity.AppUserLog; +import com.realnet.logging1.service.LoggingService; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.service1.AppUserServiceImpl; + +@RestController +@CrossOrigin(origins = "*", maxAge = 3600) +@RequestMapping(value="/log" ) +public class AppUserLogController { + private LoggingService loggingService; + private AppUserServiceImpl appUserServiceImpl; + @Autowired + public AppUserLogController(LoggingService loggingService, + AppUserServiceImpl appUserServiceImpl) { + super(); + this.loggingService = loggingService; + this.appUserServiceImpl=appUserServiceImpl; + } + + @GetMapping("/getAll") + public ResponseEntity getAllLog(){ + List l = loggingService.getAll(); + return new ResponseEntity<>(l,HttpStatus.OK); + } + @GetMapping("/getOne/{id}") + public ResponseEntity getOne(@PathVariable("id") Long id){ + AppUserLog a = loggingService.getOne(id); + if(a!=null) { + return new ResponseEntity<>(a,HttpStatus.OK); + } + return new ResponseEntity<>("Not Found",HttpStatus.BAD_REQUEST); + } + @GetMapping("/startLogging/{username}/{mode}") + public ResponseEntity addOne(@PathVariable("username") String username,@PathVariable("mode")String mode,HttpSession session){ + AppUser a = appUserServiceImpl.getByUserName(username).orElse(null); + DateFormat simple =new SimpleDateFormat("dd MMM yyyy HH:mm:ss"); + if(a!=null) { + AppUserLog l = loggingService.getOne(a.getUserId()); + if(l!=null) { + l.setGenerateLog("Y"); + if(mode!=null) { + l.setLogLevel(mode); + } + loggingService.update(l); + session.setAttribute("generate_log","Y"); + Object a1 = new Object() { + private String message="Will now Start logging"; + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + }; + return new ResponseEntity<>(a1,HttpStatus.OK); + }else { + long ut1 = Instant.now().getEpochSecond(); + AppUserLog p =new AppUserLog(); + p.setUserName(a.getUsername()); + p.setGenerateLog("Y"); + p.setLogFileName(a.getUsername()+ut1+".log"); + p.setLogLevel("info"); + if(mode!=null) { + p.setLogLevel(mode); + } + p.setGenerateLog("Y"); + p.setCreatedOn(new Date()); + p.setCreatedOnFormated(simple.format(new Date())); + loggingService.add(p); + session.setAttribute("generate_log","Y"); + Object a1 = new Object() { + private String message="Will now Start logging"; + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + }; + return new ResponseEntity<>(a1,HttpStatus.OK); + } + } + Object a1 = new Object() { + private String message="No user found with this username"; + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + }; + return new ResponseEntity<>(a1,HttpStatus.OK); + } + @GetMapping("/stopLogging/{username}") + public ResponseEntity stopLog(@PathVariable("username") String username,HttpSession session){ + AppUser a = appUserServiceImpl.getByUserName(username).orElse(null); + DateFormat simple =new SimpleDateFormat("dd MMM yyyy HH:mm:ss"); + if(a!=null) { + AppUserLog l = loggingService.getOne(a.getUserId()); + if(l!=null) { + l.setGenerateLog("N"); + loggingService.add(l); + session.setAttribute("generate_log","N"); + Object a1 = new Object() { + private String message="Will now Stop logging from next session"; + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + }; + return new ResponseEntity<>(a1,HttpStatus.OK); + }else { + long ut1 = Instant.now().getEpochSecond(); + //AppUserLog p = new AppUserLog(c,a.getUsername(),"Y",a.getUsername()+ut1+".log","info",null,null); + AppUserLog p =new AppUserLog(); + p.setUserName(a.getUsername()); + p.setLogFileName(a.getUsername()+ut1+".log"); + p.setLogLevel("info"); + p.setGenerateLog("N"); + p.setCreatedOn(new Date()); + p.setCreatedOnFormated(simple.format(new Date())); + loggingService.add(p); + session.setAttribute("generate_log","N"); + Object a1 = new Object() { + private String message="Will now Stop logging from next session"; + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + }; + return new ResponseEntity<>(a1,HttpStatus.OK); + } + } + Object a1 = new Object() { + private String message="No user found with this username"; + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + }; + return new ResponseEntity<>(a1,HttpStatus.OK); + } + + + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/controller/AppUserLogController2.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/controller/AppUserLogController2.java new file mode 100644 index 0000000..8960bd9 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/controller/AppUserLogController2.java @@ -0,0 +1,75 @@ +package com.realnet.logging1.controller; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; + +import javax.servlet.http.HttpServletRequest; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.io.Resource; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + + +import com.realnet.logging1.entity.AppUserLog; +import com.realnet.logging1.repository.AppUserLogginRepository; +import com.realnet.logging1.service.LoggingService; +import com.realnet.utils.Constant; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@RestController +@CrossOrigin(origins = "*", maxAge = 3600) +@RequestMapping(value = "/log2") +public class AppUserLogController2 { + private LoggingService loggingService; + + @Value("${projectPath}") + private String projectPath; + + @Autowired + private AppUserLogginRepository logginRepository; + + @Autowired + public AppUserLogController2(LoggingService loggingService) { + super(); + this.loggingService = loggingService; + } + + @GetMapping("/downloadLog/{filename}") + public ResponseEntity sendFile(@PathVariable("filename") String filename, HttpServletRequest request) + throws Exception { + // AppUser a = appUserServiceImpl.getByUserName(username).orElse(null); + Resource resource = loggingService.loadFileAsResource(filename); + if (resource != null) { + String contentType = null; + try { + contentType = request.getServletContext().getMimeType(resource.getFile().getAbsolutePath()); + } catch (IOException ex) { + throw new Exception("Could not find log file for file: " + filename); + } + // Fallback to the default content type if type could not be determined + if (contentType == null) { + contentType = "application/octet-stream"; + } + return ResponseEntity.ok().contentType(MediaType.parseMediaType(contentType)) + .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + resource.getFilename() + "\"") + .body(resource); + } else { + return new ResponseEntity<>("File could not be loaded", HttpStatus.BAD_REQUEST); + } + } + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/entity/AppUserLog.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/entity/AppUserLog.java new file mode 100644 index 0000000..0a0aa9e --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/entity/AppUserLog.java @@ -0,0 +1,46 @@ +package com.realnet.logging1.entity; + +import java.sql.Blob; +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; +import javax.persistence.Transient; + +import lombok.AllArgsConstructor; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +@Entity +@Table(name="app_user_log") +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode +@ToString +public class AppUserLog { + @Id + @GeneratedValue(generator = "appUserLog_gen") + @SequenceGenerator(name="appUserLog_gen", sequenceName="app_user_log_sequence",initialValue = 1, allocationSize = 1) + private Long logId; + @Column(unique = true) + private String userName; + private String generateLog="N"; + private String logFileName; + private String logLevel="info"; + private Date createdOn; + @Transient + private Blob file; + @Transient + private Long filesizeCurrent; + @Transient + private String createdOnFormated; +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/repository/AppUserLogginRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/repository/AppUserLogginRepository.java new file mode 100644 index 0000000..d4e4f2d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/repository/AppUserLogginRepository.java @@ -0,0 +1,16 @@ +package com.realnet.logging1.repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import com.realnet.logging1.entity.AppUserLog; + +@Repository +public interface AppUserLogginRepository extends JpaRepository{ + List findByUserName(String userName); +// @Query(value="select Max(*) from app") +// long getMax(); +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/service/LoggingService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/service/LoggingService.java new file mode 100644 index 0000000..395ad1c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/service/LoggingService.java @@ -0,0 +1,125 @@ +package com.realnet.logging1.service; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.nio.file.FileSystems; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.sql.Blob; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.List; + +import javax.sql.rowset.serial.SerialBlob; + +import org.apache.commons.io.FileUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.Resource; +import org.springframework.core.io.UrlResource; +import org.springframework.stereotype.Service; + +import com.realnet.logging1.entity.AppUserLog; +import com.realnet.logging1.repository.AppUserLogginRepository; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.service1.AppUserServiceImpl; + +@Service +public class LoggingService { + + + private AppUserLogginRepository appUserLogginRepository; + private AppUserServiceImpl appUserServiceImpl; + + @Autowired + public LoggingService(AppUserLogginRepository appUserLogginRepository, AppUserServiceImpl appUserServiceImpl) { + super(); + this.appUserLogginRepository = appUserLogginRepository; + this.appUserServiceImpl = appUserServiceImpl; + } + + public AppUserLog generate(AppUser appUser) throws IOException { + long id = 1; + List l = appUserLogginRepository.findByUserName(appUser.getUsername()); + if (l.size() > 0) { + AppUserLog log = l.get(0); + if (log != null) { + // For local machine testing + Path root = FileSystems.getDefault().getPath("").toAbsolutePath(); + Path filePath = Paths.get(root.toString(), "logs", log.getLogFileName()); + File f = new File(filePath.toString()); + // For prod server + // File f = new File("/home/jboss/EAP-7.1.0/logs/"+this.user_log_file_nam); + if (!f.exists()) { + f.createNewFile(); + } + + return log; + + } + } + + return null; + } + + public AppUserLog add(AppUserLog appUserLog) { + return appUserLogginRepository.save(appUserLog); + } + + public List getAll() { + List a = appUserLogginRepository.findAll(); + DateFormat simple = new SimpleDateFormat("dd MMM yyyy HH:mm:ss"); + a.forEach(o -> { + try { + byte[] fileContent = null; + Path root = FileSystems.getDefault().getPath("").toAbsolutePath(); + Path filePath = Paths.get(root.toString(), "logs", o.getLogFileName()); + File f = new File(filePath.toString()); + fileContent = FileUtils.readFileToByteArray(f); + long size_kb = (Files.size(filePath)) / 1024; + long size_mb = size_kb / 1024; + o.setFilesizeCurrent(size_mb); + Blob b = new SerialBlob(fileContent); + o.setCreatedOnFormated(simple.format(o.getCreatedOn())); + o.setFile(b); + } catch (Exception e) { + o.setFile(null); + o.setFilesizeCurrent(null); + o.setCreatedOnFormated(null); + } + }); + return a; + } + + public AppUserLog getOne(Long id) { + AppUser user = appUserServiceImpl.getById(id).orElse(null); + if (user != null) { + List l = appUserLogginRepository.findByUserName(user.getUsername()); + if (l.size() > 0) { + return l.get(0); + } + } + return null; + } + + public AppUserLog update(AppUserLog appUserLog) { + return appUserLogginRepository.save(appUserLog); + } + + public Resource loadFileAsResource(String fileName) { + try { + Path root = FileSystems.getDefault().getPath("").toAbsolutePath(); + Path filePath = Paths.get(root.toString(), "logs", fileName); + Resource resource = new UrlResource(filePath.toUri()); + if (resource.exists()) { + return resource; + } else { + return null; + } + } catch (MalformedURLException ex) { + return null; + } + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/Controller/RbController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/Controller/RbController.java new file mode 100644 index 0000000..5796f05 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/Controller/RbController.java @@ -0,0 +1,73 @@ +package com.realnet.rb.Controller; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.realnet.rb.repository.Rn_report_builder_repository; +import com.realnet.rb.service.Rn_rb_tables_service; + +@RestController +public class RbController { + + @Autowired + private Rn_report_builder_repository rn_table_repository; + @Autowired + private Rn_rb_tables_service rn_table_service; + +// get all databse list available + @GetMapping("/Table_list") + @ResponseBody + public List getdatabase() { + List list = rn_table_repository.getdatabaseList(); + return list; + } + + // get all table list available + @GetMapping("/Table_list/{table_schema}") + @ResponseBody + public List gettableList(@PathVariable String table_schema) { + List list = rn_table_repository.getListOftables(table_schema); +// List list = rn_table_service.getListOftable(table_schema); + return list; + } + + // get all column list available + @GetMapping("/Table_list/{table_schema}/{TABLE_NAME}") + @ResponseBody + public List getallcolumnlist(@PathVariable String table_schema, @PathVariable String TABLE_NAME) { + List list = rn_table_service.getColumnAliasList1(table_schema, TABLE_NAME); + return list; + } + + // create database + @GetMapping("/createdatabase/{table_schema}") + @ResponseBody + public List createdatabase(@PathVariable String table_schema) throws JsonProcessingException { + + List list = rn_table_service.createdatabase(table_schema); + return list; + + } + + // get all column list available + @GetMapping("/AllTable_list/{table_schema}") + @ResponseBody + public List getallcolwithalltable(@PathVariable String table_schema, @RequestParam String str) { + List arrayList = rn_table_service.getallcolwithalltable(table_schema, str); + return arrayList; + } + + @GetMapping("/Alias_Table_list/{table_names}") + @ResponseBody + public List getallcolfromalltable(@PathVariable String table_names) { + List columnNames = rn_table_service.getColumnAliasList2(table_names); + return columnNames; + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/Controller/Rn_report_builder_Controller.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/Controller/Rn_report_builder_Controller.java new file mode 100644 index 0000000..475b901 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/Controller/Rn_report_builder_Controller.java @@ -0,0 +1,860 @@ +package com.realnet.rb.Controller; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileWriter; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.List; +import java.util.Map; + +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.exceptions.ResourceNotFoundException; +import com.realnet.fnd.entity.Error; +import com.realnet.fnd.entity.ErrorPojo; +import com.realnet.fnd.entity.Success; +import com.realnet.fnd.entity.SuccessPojo; +import com.realnet.rb.entity.RnTableListDto; +import com.realnet.rb.entity.Rn_Rb_Adhoc; +import com.realnet.rb.entity.Rn_Rb_Date_String; +import com.realnet.rb.entity.Rn_Rb_Std_Param; +import com.realnet.rb.entity.Rn_Rb_Where_Param; +import com.realnet.rb.entity.Rn_rb_Column; +import com.realnet.rb.entity.Rn_rb_Tables; +import com.realnet.rb.entity.Rn_report_builder; +import com.realnet.rb.response.Rn_adhocParamResponse; +import com.realnet.rb.response.Rn_columnResponse; +import com.realnet.rb.response.Rn_dateParamResponse; +import com.realnet.rb.response.Rn_report_builder_response; +import com.realnet.rb.response.Rn_stdParamResponse; +import com.realnet.rb.response.Rn_tableResponse; +import com.realnet.rb.response.Rn_whereParamResponse; +import com.realnet.rb.service.Rn_rb_adhoc_param_service; +import com.realnet.rb.service.Rn_rb_column_service; +import com.realnet.rb.service.Rn_rb_date_param_service; +import com.realnet.rb.service.Rn_rb_std_param_service; +import com.realnet.rb.service.Rn_rb_tables_service; +import com.realnet.rb.service.Rn_rb_where_param_service; +import com.realnet.rb.service.Rn_report_builder_service; +import com.realnet.utils.Constant; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; + +@RestController +@RequestMapping(value = "/api", produces = MediaType.APPLICATION_JSON_VALUE) +@Api(tags = { "Rn_report_builder" }) +public class Rn_report_builder_Controller { + + @Autowired + private Rn_report_builder_service rn_report_builder_service; + + @Autowired + private Rn_rb_tables_service rn_table_service; + + @Autowired + private Rn_rb_column_service rn_column_service; + + @Autowired + private Rn_rb_where_param_service where_param_service; + + @Autowired + private Rn_rb_date_param_service date_param_service; + + @Autowired + private Rn_rb_adhoc_param_service adhoc_param_service; + + @Autowired + private Rn_rb_std_param_service std_param_service; + + @Value("${projectPath}") + private String projectPath; + + // GET ALL Data for grid view + @ApiOperation(value = "List of Reports", response = Rn_report_builder_response.class) + @GetMapping("/report-builder") + public Rn_report_builder_response getMenuGroups( + @RequestParam(value = "page", defaultValue = "0", required = false) Integer page, + @RequestParam(value = "size", defaultValue = "20", required = false) Integer size) { + // sorted data + Pageable paging = PageRequest.of(page, size, Sort.by("createdAt").descending()); + Page result = rn_report_builder_service.getAll(paging); + + Rn_report_builder_response resp = new Rn_report_builder_response(); + resp.setPageStats(result, true); + resp.setItems(result.getContent()); + return resp; + } + + // Save report +// @ApiOperation(value = "Save A New Report", response = Rn_report_builder.class) +// @PostMapping("/report-builder") +// public ResponseEntity createReport( +// +// @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, +// +// @Valid @RequestBody Rn_report_builder rn_report_builder) { +// Rn_report_builder savedReport = rn_report_builder_service.save(rn_report_builder); +// return ResponseEntity.status(HttpStatus.CREATED).body(savedReport); +// } + + // GET data my module id +// @ApiOperation(value = "List of Reports", response = CustomResponse.class) +// @GetMapping("/report-builder-by-id") +// public CustomResponse getWireframes(@RequestParam(value = "moduleId") Integer moduleId, +// @RequestParam(value = "page", defaultValue = "0", required = false) Integer page, +// @RequestParam(value = "size", defaultValue = "20", required = false) Integer size) { +// Rn_Module_Setup module = moduleService.getById(moduleId); +// List headers = module.getRn_report_builder(); +// // sorted data +// // System.out.println(headers); +// Pageable paging = PageRequest.of(page, size, Sort.by(Constant.SORT_BY_CREATION_DATE).descending()); +// Page result = new PageImpl<>(headers, paging, headers.size()); +// CustomResponse resp = new CustomResponse(); +// resp.setPageStats(result, true); +// resp.setItems(result.getContent()); +// return resp; +// } + + @ApiOperation(value = "List of Reports", response = Rn_report_builder.class) + @GetMapping("/report-data") + public ResponseEntity getFLFDetails(@RequestParam(value = "report_id") Integer report_id) { + Rn_report_builder flf_header = rn_report_builder_service.getById(report_id); + if (flf_header == null) { + ErrorPojo errorPojo = new ErrorPojo(); + Error error = new Error(); + error.setTitle(Constant.FLF_API_TITLE); + error.setMessage(Constant.NOT_FOUND_EXCEPTION); + errorPojo.setError(error); + return new ResponseEntity(errorPojo, HttpStatus.EXPECTATION_FAILED); + } + // else { + return new ResponseEntity(flf_header, HttpStatus.OK); + // } + + } + + /*--------- save report------------ */ +// @ApiOperation(value = "Add new Report") +// @PostMapping(value = "/report-builder") +// public ResponseEntity saveReport(@RequestParam(value = "moduleId") Integer moduleId, +// @Valid @RequestBody Rn_reportDTO report) throws IOException { +// System.out.println("report controller start" + report.getReport_name()); +// +// Rn_reportDTO status = rn_report_builder_service.saveReport(report, moduleId); +// if (status) { +// SuccessPojo successPojo = new SuccessPojo(); +// Success success = new Success(); +// success.setTitle(Constant.REPORT_API_TITLE); +// success.setMessage(Constant.REPORT_CREATED_SUCCESSFULLY); +// successPojo.setSuccess(success); +// +// return new ResponseEntity(successPojo, HttpStatus.CREATED); +// } else { +// ErrorPojo errorPojo = new ErrorPojo(); +// Error error = new Error(); +// error.setTitle(Constant.REPORT_API_TITLE); +// error.setMessage(Constant.REPORT_NOT_CREATED); +// errorPojo.setError(error); +// return new ResponseEntity(errorPojo, HttpStatus.EXPECTATION_FAILED); +// } +// } + + @ApiOperation(value = "Add new Report") + @PostMapping(value = "/report-builder") + public ResponseEntity saveReport(@RequestParam(value = "moduleId") Integer moduleId, + @Valid @RequestBody Rn_report_builder report) throws IOException { + System.out.println("report controller start" + report.getReport_name()); + + System.out.println("service name" + report.getServicename()); + + Rn_report_builder status = rn_report_builder_service.saveReport(report, moduleId); + if (status.getId() != 0) { + return ResponseEntity.status(HttpStatus.OK).body(status); + } else { + return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("you have inserted wrong data"); + } + } + + /* + * @ApiOperation(value = "Add A Tables", response = Rn_tableResponse.class) + * + * @PostMapping("/add-tables") public ResponseEntity + * createDynamicTx( + * + * @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String + * authToken, + * + * @RequestParam(value = "reportId") Integer reportId, @Valid @RequestBody + * Rn_report_builder rn_tables) { Rn_rb_Tables tt = new Rn_rb_Tables(); + * tt.setTables_id(reportId); + * + * System.out.println("Report id::" + reportId); + * + * for(Rn_report_builder rn_table:rn_tables) { rn_table.setReport_id(reportId); + * } + * + * Rn_report_builder savedTables = rn_table_service.save(rn_tables); if + * (savedTables == null) { throw new + * ResourceNotFoundException("Tables Not Saved"); } return + * ResponseEntity.status(HttpStatus.CREATED).body(savedTables); } + */ + + // Save tables + @ApiOperation(value = "Add A Tables", response = Rn_tableResponse.class) + @PostMapping("/add-alltables") + public ResponseEntity> createTables( + + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + + @RequestParam(value = "reportId") Integer reportId, @Valid @RequestBody List rn_tables) { + + System.out.println("Report id::" + reportId); + + for (Rn_rb_Tables rn_table : rn_tables) { + System.out.println("table name::" + rn_table.getTable_name()); + System.out.println("table alias name::" + rn_table.getTable_allias_name()); + rn_table.setReport_id(reportId); + } + List savedTables = rn_table_service.save(rn_tables); + if (savedTables == null) { + throw new ResourceNotFoundException("Tables Not Saved"); + } + return ResponseEntity.status(HttpStatus.CREATED).body(savedTables); + } + + // Save Columns + @ApiOperation(value = "Add A Columns", response = Rn_columnResponse.class) + @PostMapping("/add-allcolumn") + public ResponseEntity> createColumn( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @RequestParam(value = "reportId") Integer reportId, @Valid @RequestBody List rn_tables) { + + System.out.println("Report id::" + reportId); + + for (Rn_rb_Column rn_table : rn_tables) { + rn_table.setReport_id(reportId); + } + List savedTables = rn_column_service.save(rn_tables); + if (savedTables == null) { + throw new ResourceNotFoundException("Tables Not Saved"); + } + return ResponseEntity.status(HttpStatus.CREATED).body(savedTables); + } + + // save where param + @ApiOperation(value = "Add A where param", response = Rn_whereParamResponse.class) + @PostMapping("/add-where-param") + public ResponseEntity> createWhereParam( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @RequestParam(value = "reportId") Integer reportId, @Valid @RequestBody List rn_tables) { + + System.out.println("Report id::" + reportId); + + for (Rn_Rb_Where_Param rn_table : rn_tables) { + rn_table.setReport_id(reportId); + } + List savedTables = where_param_service.save(rn_tables); + if (savedTables == null) { + throw new ResourceNotFoundException("Tables Not Saved"); + } + return ResponseEntity.status(HttpStatus.CREATED).body(savedTables); + } + + // save date param + @ApiOperation(value = "Add A Date param", response = Rn_dateParamResponse.class) + @PostMapping("/add-date-param") + public ResponseEntity> createDateParam( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @RequestParam(value = "reportId") Integer reportId, @Valid @RequestBody List rn_tables) { + + System.out.println("Report id::" + reportId); + StringBuilder sb = new StringBuilder(); + int count = 0; + for (Rn_Rb_Date_String rn_table : rn_tables) { + count++; + rn_table.setReport_id(reportId); + // sb.append(""); + if (count == 1) { + sb.append(rn_table.getCol_date_query()); + } else { + sb.append("," + rn_table.getCol_date_query()); + } + + } + String date_string = sb.toString(); + System.out.println("Date query:" + date_string); + // update report table + Rn_report_builder updatedFunction = rn_report_builder_service.updateById(reportId, date_string); + + List savedTables = date_param_service.save(rn_tables); + if (savedTables == null) { + throw new ResourceNotFoundException("Tables Not Saved"); + } + return ResponseEntity.status(HttpStatus.CREATED).body(savedTables); + } + + // save adhoc param + @ApiOperation(value = "Add A Adhoc param", response = Rn_adhocParamResponse.class) + @PostMapping("/add-adhoc-param") + public ResponseEntity> createAdhocParam( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @RequestParam(value = "reportId") Integer reportId, @Valid @RequestBody List rn_tables) { + + System.out.println("Report id::" + reportId); + StringBuilder sb = new StringBuilder(); + int count = 0; + for (Rn_Rb_Adhoc rn_table : rn_tables) { + count++; + rn_table.setReport_id(reportId); + // sb.append(""); + if (count == 1) { + sb.append(rn_table.getColumn_name()); + } else { + sb.append("," + rn_table.getColumn_name()); + } + + } + String date_string = sb.toString(); + Rn_report_builder updatedFunction = rn_report_builder_service.updateByIdAdhoc(reportId, date_string); + + List savedTables = adhoc_param_service.save(rn_tables); + if (savedTables == null) { + throw new ResourceNotFoundException("Tables Not Saved"); + } + return ResponseEntity.status(HttpStatus.CREATED).body(savedTables); + } + + // save std param + @ApiOperation(value = "Add A std param", response = Rn_stdParamResponse.class) + @PostMapping("/add-std-param") + public ResponseEntity> createStdParam( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @RequestParam(value = "reportId") Integer reportId, @Valid @RequestBody List rn_tables) { + + System.out.println("Report id::" + reportId); + StringBuilder sb = new StringBuilder(); + for (Rn_Rb_Std_Param rn_table : rn_tables) { + rn_table.setReport_id(reportId); + sb.append(rn_table.getCol_std_para_query() + ","); + } + String date_string = sb.toString(); + Rn_report_builder updatedFunction = rn_report_builder_service.updateByIdGridHeaders(reportId, date_string); + + List savedTables = std_param_service.save(rn_tables); + if (savedTables == null) { + throw new ResourceNotFoundException("Tables Not Saved"); + } + return ResponseEntity.status(HttpStatus.CREATED).body(savedTables); + } + + // save std param +// @ApiOperation(value = "Add A query", response = Rn_stdParamResponse.class) +// @PostMapping("/add-master-query") +// public ResponseEntity updateMasterQuery(@RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, +// @RequestParam(value = "reportId") Integer reportId) { +// +// System.out.println("Report id::" + reportId); +// StringBuilder sb=new StringBuilder(); +// sb.append("select * from table"); +// String date_string=sb.toString(); +// Rn_report_builder updatedQuery = rn_report_builder_service.updateByIdQuery(reportId, date_string); +// +// //List savedTables = std_param_service.save(rn_tables); +// if (updatedQuery == null) { +// throw new ResourceNotFoundException("Tables Not Saved"); +// } +// return ResponseEntity.status(HttpStatus.CREATED).body(updatedQuery); +// } + + @ApiOperation(value = "Update A Report", response = Rn_report_builder.class) + @PutMapping("/add-master-query/{id}") + public ResponseEntity updateFunction( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @PathVariable(value = "id") Integer id, @Valid @RequestBody Rn_report_builder rn_function_register) { + System.out.println("report id::::" + id); + Rn_report_builder updatedFunction = rn_report_builder_service.updateByIdQuery(id, rn_function_register); + return ResponseEntity.status(HttpStatus.ACCEPTED).body(updatedFunction); + } + + // get list of tables available in database + @ApiOperation(value = "Get Table List ", response = RnTableListDto.class) + @GetMapping("/table-list") + @ResponseBody + public List getTableList() { + // List technologyStack = + // technologyStackService.getAll(); + List activeTechDTO = rn_table_service.getListOfTables(); + return activeTechDTO; + } + + // get all table list available in realnet_cnsbe database + @ApiOperation(value = "Get Table List ", response = RnTableListDto.class) + @GetMapping("/Table_list") + @ResponseBody + public List gettableList() { + // List technologyStack = + // technologyStackService.getAll(); + List activeTechDTO = rn_table_service.getListOftables(); + return activeTechDTO; + } + + // get list of tables available in database by id + @ApiOperation(value = "Get Table List ", response = RnTableListDto.class) + @GetMapping("/table-list/{id}") + @ResponseBody + public List getTableListAlise(@PathVariable(value = "id") int id) { + // List technologyStack = + // technologyStackService.getAll(); + List activeTechDTO = rn_table_service.getListOfColumns(id); + return activeTechDTO; + } + + // get list of column + @ApiOperation(value = "Get Table List ", response = Rn_Rb_Where_Param.class) + @GetMapping("/column-list/{id}") + @ResponseBody + public List getColumnList(@PathVariable(value = "id") int id) { + // List technologyStack = + // technologyStackService.getAll(); + List activeTechDTO = rn_table_service.getColumnList(id); + return activeTechDTO; + } + + @ApiOperation(value = "Get Column alias List ", response = Rn_Rb_Where_Param.class) + @GetMapping("/column_alias_list/{id}") + @ResponseBody + public List getColumnAliasList(@PathVariable(value = "id") String id) { + System.out.println("Table alis name:" + id); + List activeTechDTO = rn_table_service.getColumnAliasList(id); + return activeTechDTO; + } + + @ApiOperation(value = "Get A Query", response = Rn_report_builder.class) + @GetMapping("/master-query/{id}") + public ResponseEntity getProjectDetails(@PathVariable(value = "id") int id) { + Rn_report_builder bcf_tech_stack = rn_report_builder_service.getById(id); + // Map extractorMap = + // Collections.singletonMap("extractior", bcf_extractor); + // return new ResponseEntity>(extractorMap, + // HttpStatus.OK); + // return ResponseEntity.ok().body(bcf_extractor); + return new ResponseEntity(bcf_tech_stack, HttpStatus.OK); + + } + + @ApiOperation(value = "Get A Report", response = Rn_report_builder.class) + @GetMapping("/edit-report/{id}") + public ResponseEntity getReport(@PathVariable(value = "id") int id) { + Rn_report_builder reportList = rn_report_builder_service.getById(id); // Map + // extractorMap = + return new ResponseEntity(reportList, HttpStatus.OK); + + } + +// @ApiOperation(value = "Get Table List ") +// @GetMapping("/master-query-data") +// @ResponseBody +// public List getQueryData(@RequestParam(value = "sql_query") String query) { +// //List technologyStack = technologyStackService.getAll(); +// System.out.println("Calling controleer"); +// MasterResponse resp=new MasterResponse(); +// List activeTechDTO = rn_report_builder_service.getQueryData(query); +// resp.setItems(activeTechDTO); +// +// return activeTechDTO; +// } + + @ApiOperation(value = "Get Table List ") + @GetMapping("/master-query-data") + @ResponseBody + public List> getQueryData(@RequestParam(value = "sql_query") String query) { + // List technologyStack = + // technologyStackService.getAll(); + System.out.println("Calling controleer"); + List> activeTechDTO = rn_report_builder_service.getQueryData(query); + return activeTechDTO; + } + + @GetMapping(value = "/build_report") + public ResponseEntity build_wireframe(@RequestParam("id") Integer id) throws IOException { + System.out.println("Calling build controller"); + Rn_report_builder reportList = rn_report_builder_service.getById(id); + System.out.println(reportList); + String report_name = reportList.getReport_name(); + String date_string = reportList.getDate_string(); + String add_param_string = reportList.getAdd_param_string(); + String std_param = reportList.getStd_param_view(); + + StringBuilder tsFile = new StringBuilder(); + StringBuilder htmlFile = new StringBuilder(); + StringBuilder cssFile = new StringBuilder(); + + tsFile.append("import { Component, OnInit } from '@angular/core';\r\n" + + "import { ActivatedRoute, Router } from '@angular/router';\r\n" + + "import { FormBuilder, FormGroup, FormControl } from '@angular/forms';\r\n" + + "import { ValidationError } from 'src/app/models/ValidationError';\r\n" + + "import { QueryRunnerService } from 'src/app/services/api/query-runner.service';\r\n" + + "import { ReportBuilderService } from 'src/app/services/api/report-builder.service';\r\n" + "\r\n" + + "@Component({\r\n" + " selector: '" + report_name + "',\r\n" + " templateUrl: './" + report_name + + ".component.html',\r\n" + " styleUrls: ['./" + report_name + ".component.scss']\r\n" + "})\r\n" + + "export class " + report_name + " implements OnInit {\r\n" + "\r\n" + + " public entryForm: FormGroup;\r\n" + " submitted = false;\r\n" + " basic: boolean = false;\r\n" + + " fieldErrors: ValidationError[] = [];\r\n" + " report_id: number;\r\n" + " columns: any[];\r\n" + + " rows:any[];\r\n" + " \r\n" + " constructor(private _fb: FormBuilder,\r\n" + + " private router: Router,\r\n" + " private route: ActivatedRoute,\r\n" + + " private queryRunnerService: QueryRunnerService,\r\n" + + " private reportBuilderService: ReportBuilderService) { }\r\n" + " \r\n" + + " date_list = [\r\n" + " \r\n" + " ];\r\n" + " adhoc_list = [\r\n" + " \r\n" + + " ];\r\n" + " ngOnInit(): void {\r\n" + " this.route.queryParams.subscribe(params => {\r\n" + + " this.report_id = +params['report_id'];\r\n" + " });\r\n" + + " console.log(\"Report id:\",this.report_id);\r\n" + " \r\n" + + " this.getById(this.report_id);\r\n" + " this.entryForm = this._fb.group({\r\n" + + " date_para:[null],\r\n" + " from_date:[null],\r\n" + " adhoc_para:[null],\r\n" + + " condition:[null],\r\n" + " value_1:[null],\r\n" + " value_2:[null],\r\n" + + " para_pane: [null]\r\n" + " });\r\n" + " }\r\n" + "\r\n" + "\r\n" + "\r\n" + + " onSubmit(){\r\n" + " console.log(\"Para value:\",this.entryForm.value.para_pane);\r\n" + + " var condition=this.entryForm.value.para_pane;\r\n" + " \r\n" + + " this.queryRunnerService.getById(this.report_id).subscribe((data) => \r\n" + " {\r\n" + + " var dates = [];\r\n" + " var adhoc_param = [];\r\n" + + " console.log(\"Complete query with contion::\",data.master_select+condition);\r\n" + + " \r\n" + + " this.reportBuilderService.getMasterData(data.master_select+condition).subscribe((data) => {\r\n" + + " this.rows = data;\r\n" + " var j;\r\n" + " var cart = [];\r\n" + + " \r\n" + " \r\n" + " for(var i = 0; i < data.length; i++) \r\n" + + " { \r\n" + " var columnsIn = data[i]; \r\n" + " if(i==1)\r\n" + + " {\r\n" + " for(var key in columnsIn)\r\n" + " { \r\n" + + " j={prop:key , name: key};\r\n" + " cart.push(j)\r\n" + + " \r\n" + " } \r\n" + " }\r\n" + " }\r\n" + + " this.columns = cart;\r\n" + " \r\n" + " });\r\n" + " });\r\n" + "\r\n" + + " }\r\n" + "\r\n" + " getById(id: number) {\r\n" + + " console.log(\"Report Id under getby id method::\",id);\r\n" + " \r\n" + + " this.queryRunnerService.getById(id).subscribe((data) => \r\n" + " {\r\n" + + " var dates = [];\r\n" + " var adhoc_param = [];\r\n" + + " this.reportBuilderService.getMasterData(data.master_select).subscribe((data) => {\r\n" + + " this.rows = data;\r\n" + " var j;\r\n" + " var cart = [];\r\n" + + " \r\n" + " \r\n" + " for(var i = 0; i < data.length; i++) \r\n" + + " { \r\n" + " var columnsIn = data[i]; \r\n" + " if(i==1)\r\n" + + " {\r\n" + " for(var key in columnsIn)\r\n" + " { \r\n" + + " j={prop:key , name: key};\r\n" + " cart.push(j)\r\n" + + " \r\n" + " } \r\n" + " }\r\n" + " }\r\n" + + " this.columns = cart;\r\n" + " \r\n" + " });\r\n" + "\r\n" + + " //for date list param\r\n" + " var str = data.date_string;\r\n" + + " var myarray = str.split(',');\r\n" + " for(var i = 0; i < myarray.length; i++)\r\n" + + " {\r\n" + " console.log(myarray[i]);\r\n" + + " // this.date_list[myarray[i]+\",\"];\r\n" + " dates.push(myarray[i])\r\n" + + " }\r\n" + " this.date_list=dates\r\n" + "\r\n" + " //for adhoc param\r\n" + + " var str2 = data.add_param_string;\r\n" + " var adhoc = str2.split(',');\r\n" + + " for(var i = 0; i < adhoc.length; i++)\r\n" + " {\r\n" + + " adhoc_param.push(adhoc[i])\r\n" + " }\r\n" + + " this.adhoc_list=adhoc_param\r\n" + " \r\n" + " });\r\n" + "\r\n" + "\r\n" + + " }\r\n" + "\r\n" + " dateColumn:string;\r\n" + " addDateParam(name:string){\r\n" + + " this.dateColumn=name;\r\n" + " }\r\n" + " \r\n" + " v :string;\r\n" + + " onDateChange(date:string){\r\n" + " this.v=\" and \"+this.dateColumn+\"=\"+date;\r\n" + + " }\r\n" + "\r\n" + " onAddDate() {\r\n" + + " ( this.entryForm.controls['para_pane']).setValue(this.v);\r\n" + " }\r\n" + + "\r\n" + " finalCondition:string;\r\n" + " adhocColumn:string;\r\n" + + " addAdhocParam(name:string){\r\n" + " console.log(name);\r\n" + + " this.adhocColumn=name;\r\n" + " }\r\n" + "\r\n" + " condition:string;\r\n" + + " addCondition(name:string){\r\n" + " if(name==\"EQUAL\")\r\n" + + " console.log(name);\r\n" + " this.condition=name;\r\n" + " }\r\n" + "\r\n" + + " valu1:string;\r\n" + " addValue1(name:string){\r\n" + " console.log(name);\r\n" + + " this.valu1=name;\r\n" + " }\r\n" + "\r\n" + " valu2:string;\r\n" + + " addValue2(name:string){\r\n" + " \r\n" + " this.valu2=name;\r\n" + " }"); + + StringBuilder stdVar = new StringBuilder(); + StringBuilder stdIfCondition = new StringBuilder(); + StringBuilder stdValConcat = new StringBuilder(); + StringBuilder stdHtmlFields = new StringBuilder(); + + if (std_param != null) { + String[] stdParaList = std_param.split(","); + + for (int i = 0; i < stdParaList.length; i++) { + System.out.println("Std variable:" + stdParaList[i]); + int j = i + 1; + tsFile.append("\nstd" + j + ":string;\r\n" + " \n addStd" + j + "(name:string){\r\n" + + " \n \r\n" + " \n this.std" + j + "=\" and " + stdParaList[i] + "=\"+name;\r\n" + + " \n}"); + stdVar.append("\n strString" + j + ":string;"); + stdIfCondition.append("if(this.std" + j + "!==null || this.std" + j + "!==undefined){\r\n" + + " this.strString" + j + "=this.v+this.std" + j + ";\r\n" + " }else{\r\n" + + " this.strString" + j + "=this.v;\r\n" + " }"); + if (i == 0) { + stdValConcat.append("this.strString" + j + ""); + } else { + stdValConcat.append("+this.strString" + j + ""); + } + + stdHtmlFields.append("\n\n
    \r\n" + + " \n \r\n" + + " \n
    "); + + } + } + + tsFile.append(stdVar); + if (std_param != null) { + tsFile.append(" onAddstdPara() {\r\n" + stdIfCondition + + " ( this.entryForm.controls['para_pane']).setValue(" + stdValConcat + ");\r\n" + + " }"); + } + + tsFile.append("stdParamCmplt:string;\r\n" + " onAddAdhoc() {\r\n" + " console.log(this.v);\r\n" + + " \r\n"); + if (std_param != null) { + tsFile.append(" this.stdParamCmplt=" + stdValConcat + ";\r\n"); + } + tsFile.append(" this.finalCondition=this.v+\" and \"+this.adhocColumn+this.condition+this.valu1;\r\n" + + " if(this.condition===\"BETWEEN\"){\r\n" + + " this.finalCondition=this.v+this.stdParamCmplt+\" and \"+this.adhocColumn+\" \"+this.condition+\" \"+this.valu1+\" AND \"+this.valu2;\r\n" + + " }else{\r\n" + + " this.finalCondition=this.v+this.stdParamCmplt+\" and \"+this.adhocColumn+this.condition+this.valu1;\r\n" + + " }\r\n" + " \r\n" + + " ( this.entryForm.controls['para_pane']).setValue(this.finalCondition);\r\n" + + " }\r\n" + "\r\n" + " \r\n" + "\r\n" + "\r\n" + " \r\n" + "}"); + + htmlFile.append("
    \r\n" + "

    Query Parameters

    \r\n" + "
    \r\n" + + "
    \r\n" + "
    \r\n"); + + if (date_string != null && date_string != "null") { + htmlFile.append(" \r\n" + + " \r\n" + + "
    \r\n" + + "
    \r\n" + + " \r\n" + + "
    \r\n" + + "
    \r\n" + + " \r\n" + + " \r\n" + + " \r\n" + "
    \r\n" + + " \r\n" + "
    \r\n" + + "
    \r\n" + + " \r\n" + + " \r\n" + + "
    "); + } + + if (std_param != null) { + htmlFile.append("\r\n" + + "
    \r\n" + stdHtmlFields + "
    \r\n" + + "
    \r\n" + + " \r\n" + + " \r\n" + + "
    "); + } + + if (add_param_string != null) { + htmlFile.append(" \r\n" + + " \r\n" + + "
    \r\n" + + "
    \r\n" + + " \r\n" + + " \r\n" + "
    \r\n" + "\r\n" + + "
    \r\n" + + " \r\n" + "
    \r\n" + "\r\n" + + "
    \r\n" + + " \r\n" + "
    \r\n" + + " \r\n" + "
    \r\n" + + "
    \r\n" + + "
    \r\n" + + " \r\n" + "
    \r\n" + "
    \r\n" + + "
    \r\n" + + " \r\n" + + " \r\n" + "
    \r\n" + + "\r\n"); + } + htmlFile.append("
    \r\n" + + "
    \r\n" + + " \r\n" + + " \r\n" + + "
    \r\n" + "
    \r\n" + + "
    \r\n" + + " \r\n" + "
    \r\n" + + "\r\n" + "
    \r\n" + "\r\n" + "\r\n" + "
    \r\n" + + "

    Query Result

    \r\n" + "
    \r\n" + "\r\n" + "
    \r\n" + + "\r\n" + " \r\n" + " \r\n" + + "
    "); + + cssFile.append("$bg-color: #dddddd;\r\n" + "\r\n" + ".button1::after {\r\n" + " content: none;\r\n" + "}\r\n" + + ".button1:hover::after {\r\n" + " content: \"ADD ROWS\";\r\n" + "}\r\n" + "\r\n" + ".section {\r\n" + + " background-color: $bg-color;\r\n" + " height: 40px;\r\n" + "}\r\n" + "\r\n" + ".section p {\r\n" + + " //color: white;\r\n" + " padding: 10px;\r\n" + " font-size: 18px;\r\n" + "}\r\n" + "\r\n" + + ".clr-input {\r\n" + " color: #212529;\r\n" + " border: 1px solid #ced4da;\r\n" + + " border-radius: 0.25rem;\r\n" + " padding: 0.75rem 0.75rem;\r\n" + " margin-top: 3px;\r\n" + + " width: 100%;\r\n" + " margin-bottom: 10px;\r\n" + "}\r\n" + "\r\n" + ".center {\r\n" + + " text-align: center;\r\n" + "}\r\n" + ""); + + FileWriter fw = null; + BufferedWriter bw = null; + try { + // create component folder + File file = new File(projectPath + "/webui/src/app/pages/" + report_name + "/"); + System.out.println("Ganesh File Path = " + file.getAbsolutePath()); + File dir = new File(file.getParent()); + if (!file.exists()) { + file.mkdirs(); + } + + // create ts file + File file2 = new File( + projectPath + "/webui/src/app/pages/" + report_name + "/" + report_name + ".component.ts"); + File dir2 = new File(file.getParent()); + if (!dir2.exists()) { + dir2.mkdirs(); + } + if (!file2.exists()) { + file2.createNewFile(); + } + + fw = new FileWriter(file2.getAbsoluteFile()); + bw = new BufferedWriter(fw); + bw.write(tsFile.toString()); + bw.close(); + + // create html file + File file3 = new File( + projectPath + "/webui/src/app/pages/" + report_name + "/" + report_name + ".component.html"); + File dir3 = new File(file.getParent()); + if (!dir3.exists()) { + dir3.mkdirs(); + } + if (!file3.exists()) { + file3.createNewFile(); + } + + fw = new FileWriter(file3.getAbsoluteFile()); + bw = new BufferedWriter(fw); + bw.write(htmlFile.toString()); + bw.close(); + + // create css file + File file4 = new File( + projectPath + "/webui/src/app/pages/" + report_name + "/" + report_name + ".component.scss"); + File dir4 = new File(file.getParent()); + if (!dir4.exists()) { + dir4.mkdirs(); + } + if (!file4.exists()) { + file4.createNewFile(); + } + + fw = new FileWriter(file4.getAbsoluteFile()); + bw = new BufferedWriter(fw); + bw.write(cssFile.toString()); + bw.close(); + + // update the rounting file + System.out.println("In an static files loop"); + File fileTest = new File(projectPath + "/webui/src/app/app-routing.module.ts"); + Path path = Paths.get(projectPath + "/webui/src/app/app-routing.module.ts"); + StringBuilder code = new StringBuilder(); + List lines = Files.readAllLines(path, StandardCharsets.UTF_8); + String importstr = "import { " + report_name + " } from './pages/" + report_name + "/" + report_name + + ".component';\n//add_import"; + String routestr = "{ path: '" + report_name + "' , component: " + report_name + + "},\n//add_routingreport"; + + for (String line2 : lines) { + if (line2.startsWith("//add_import")) { + line2 = "import { " + report_name + " } from './pages/" + report_name + "/" + report_name + + ".component';\n//add_import"; + } + + if (line2.startsWith("//add_routingreport")) { + line2 = "{ path: '" + report_name + "' , component: " + report_name + "},\n//add_routingreport"; + } + + code.append(line2 + "\n"); + } + // System.out.println(code); + bw = new BufferedWriter(new FileWriter(fileTest)); // replaced string + bw.write(code.toString()); + bw.close(); + // update rout +// Path path1 = Paths.get(projectPath + "/webui/src/app/app-routing.module.ts"); + + // update the module file + File fileModule = new File(projectPath + "/webui/src/app/app.module.ts"); + Path pathModule = Paths.get(projectPath + "/webui/src/app/app.module.ts"); + StringBuilder codeModule = new StringBuilder(); + List linesModule = Files.readAllLines(pathModule, StandardCharsets.UTF_8); + for (String line3 : linesModule) { + if (line3.startsWith("//add_module_import")) { + line3 = "import { " + report_name + " } from './pages/" + report_name + "/" + report_name + + ".component';\n//add_module_import"; + } + + if (line3.startsWith("//add_module")) { + line3 = "" + report_name + ",\n//add_module"; + } + codeModule.append(line3 + "\n"); + } + bw = new BufferedWriter(new FileWriter(fileModule)); // replaced string + bw.write(codeModule.toString()); + bw.close(); + + } catch (FileNotFoundException e) { + e.printStackTrace(); + ErrorPojo errorPojo = new ErrorPojo(); + Error error = new Error(); + error.setTitle(Constant.FORM_BUILDER_API_TITLE); + error.setMessage(Constant.FORM_BUILD_FAILURE); + errorPojo.setError(error); + return new ResponseEntity(errorPojo, HttpStatus.EXPECTATION_FAILED); + } + SuccessPojo successPojo = new SuccessPojo(); + Success success = new Success(); + success.setTitle(Constant.FORM_BUILDER_API_TITLE); + success.setMessage(Constant.FORM_BUILD_SUCCESS); + successPojo.setSuccess(success); + return new ResponseEntity(successPojo, HttpStatus.OK); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/Controller/servicereportcontroller.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/Controller/servicereportcontroller.java new file mode 100644 index 0000000..9e61172 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/Controller/servicereportcontroller.java @@ -0,0 +1,72 @@ +package com.realnet.rb.Controller; + +import java.io.IOException; + +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.rb.entity.Rn_report_builder; +import com.realnet.rb.repository.Rn_report_builder_repository; +import com.realnet.rb.service.Rn_report_builder_service; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; + +@RestController +@RequestMapping(value = "/api", produces = MediaType.APPLICATION_JSON_VALUE) +@Api(tags = { "Rn_report_builder" }) +public class servicereportcontroller { + + @Autowired + Rn_report_builder_repository reportrepo; + + + + @Autowired + private Rn_report_builder_service rn_report_builder_service; + + + @ApiOperation(value = "Add new Report") + @PostMapping(value = "/report-builder_service") + public ResponseEntity saveReport(@RequestParam(value = "moduleId") Integer moduleId, + @Valid @RequestBody Rn_report_builder report) throws IOException { + System.out.println("report controller start" + report.getReport_name() ); + + System.out.println("service name" + report.getServicename()); + + + Rn_report_builder status = rn_report_builder_service.saveReportservice(report, moduleId); + if (status.getId()!=0) { + return ResponseEntity.status(HttpStatus.OK).body(status); + } else { + return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("you have inserted wrong data"); + } + } + + + + @ApiOperation(value = "Update A Report", response = Rn_report_builder.class) + @PutMapping("/updatereport/{id}") + public ResponseEntity updateFunction( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @PathVariable(value = "id") Integer id, @Valid @RequestBody Rn_report_builder report) { + System.out.println("report id::::"+id); + Rn_report_builder updatedFunction = rn_report_builder_service.updatereport(id, report); + return ResponseEntity.status(HttpStatus.ACCEPTED).body(updatedFunction); + } + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/entity/RnTableListDto.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/entity/RnTableListDto.java new file mode 100644 index 0000000..4c6867b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/entity/RnTableListDto.java @@ -0,0 +1,37 @@ +package com.realnet.rb.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +@Entity +@Table(name = "RN_TABLE_LIST") +public class RnTableListDto { + //private int id; + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "ID") + private int id; + + @Column(name = "TABLE_NAME") + private String table_name; + + public String getTable_name() { + return table_name; + } + + public void setTable_name(String table_name) { + this.table_name = table_name; + } + + public RnTableListDto() { + + } + + public RnTableListDto(String table_name) { + this.table_name = table_name; + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/entity/Rn_Rb_Adhoc.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/entity/Rn_Rb_Adhoc.java new file mode 100644 index 0000000..6d49b98 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/entity/Rn_Rb_Adhoc.java @@ -0,0 +1,77 @@ +package com.realnet.rb.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +@Entity +@Table(name = "RN_RB_ADHOCK_PARAM_T") + +public class Rn_Rb_Adhoc { + + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "ID") + private int id; + + @Column(name = "REPORT_ID") + private int report_id; + + @Column(name = "TABLE_ALLIAS_NAME") + private String table_allias_name; + + @Column(name = "COLUMN_NAME") + private String column_name; + + @Column(name = "COLUMN_ALLIAS_NAME") + private String column_allias_name; + + + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public int getReport_id() { + return report_id; + } + + public void setReport_id(int report_id) { + this.report_id = report_id; + } + + public String getTable_allias_name() { + return table_allias_name; + } + + public void setTable_allias_name(String table_allias_name) { + this.table_allias_name = table_allias_name; + } + + public String getColumn_name() { + return column_name; + } + + public void setColumn_name(String column_name) { + this.column_name = column_name; + } + + public String getColumn_allias_name() { + return column_allias_name; + } + + public void setColumn_allias_name(String column_allias_name) { + this.column_allias_name = column_allias_name; + } + + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/entity/Rn_Rb_Date_String.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/entity/Rn_Rb_Date_String.java new file mode 100644 index 0000000..bf53fbf --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/entity/Rn_Rb_Date_String.java @@ -0,0 +1,98 @@ +package com.realnet.rb.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +@Entity +@Table(name = "RN_RB_DATE_PARAM_T") +public class Rn_Rb_Date_String +{ + + + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "DATE_ID") + private int date_id; + + @Column(name = "REPORT_ID") + private int report_id; + + @Column(name = "COL_TABLE_ALIES_NAME_DATE") + private String col_table_alies_name_date; + + + @Column(name = "COL_DATE_QUERY") + private String col_date_query; + + + @Column(name = "COLUMN_ALIAS_DATE_QUERY") + private String column_alias_date_query; + + + public int getDate_id() { + return date_id; + } + + + public void setDate_id(int date_id) { + this.date_id = date_id; + } + + + public int getReport_id() { + return report_id; + } + + + public void setReport_id(int report_id) { + this.report_id = report_id; + } + + + public String getCol_table_alies_name_date() { + return col_table_alies_name_date; + } + + + public void setCol_table_alies_name_date(String col_table_alies_name_date) { + this.col_table_alies_name_date = col_table_alies_name_date; + } + + + public String getCol_date_query() { + return col_date_query; + } + + + public void setCol_date_query(String col_date_query) { + this.col_date_query = col_date_query; + } + + + public String getColumn_alias_date_query() { + return column_alias_date_query; + } + + + public void setColumn_alias_date_query(String column_alias_date_query) { + this.column_alias_date_query = column_alias_date_query; + } + + + + + + + + + + + + +} + diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/entity/Rn_Rb_Std_Param.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/entity/Rn_Rb_Std_Param.java new file mode 100644 index 0000000..74b1d44 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/entity/Rn_Rb_Std_Param.java @@ -0,0 +1,102 @@ +package com.realnet.rb.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +@Entity +@Table(name = "RN_RB_STD_PARAM_T") +public class Rn_Rb_Std_Param +{ + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "STD_ID") + private int std_id; + + + @Column(name = "REPORT_ID") + private int report_id; + + @Column(name = "col_table_alies_name_std_para") + private String col_table_alies_name_std_para; + + + @Column(name = "col_std_para_query") + private String col_std_para_query; + + @Column(name = "FIELD_TYPE") + private String field_type; + + + @Column(name = "SP_FOR_DD") + private String sp_for_dd; + + + + + + public int getStd_id() { + return std_id; + } + + public void setStd_id(int std_id) { + this.std_id = std_id; + } + + public int getReport_id() { + return report_id; + } + + public void setReport_id(int report_id) { + this.report_id = report_id; + } + + public String getCol_table_alies_name_std_para() { + return col_table_alies_name_std_para; + } + + public void setCol_table_alies_name_std_para(String col_table_alies_name_std_para) { + this.col_table_alies_name_std_para = col_table_alies_name_std_para; + } + + public String getCol_std_para_query() { + return col_std_para_query; + } + + public void setCol_std_para_query(String col_std_para_query) { + this.col_std_para_query = col_std_para_query; + } + + public String getField_type() { + return field_type; + } + + public void setField_type(String field_type) { + this.field_type = field_type; + } + + + + public String getSp_for_dd() { + return sp_for_dd; + } + + public void setSp_for_dd(String sp_for_dd) { + this.sp_for_dd = sp_for_dd; + } + + + + + + + + + + +} + diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/entity/Rn_Rb_Where_Param.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/entity/Rn_Rb_Where_Param.java new file mode 100644 index 0000000..7b206b8 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/entity/Rn_Rb_Where_Param.java @@ -0,0 +1,120 @@ +package com.realnet.rb.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +@Entity +@Table(name = "RN_RB_WHERE_PARAM_T") +public class Rn_Rb_Where_Param +{ + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "WHERE_ID") + private int where_id; + + @Column(name = "REPORT_ID") + private int report_id; + + @Column(name = "EXPLECITY") + private String explecity; + + @Column(name = "WHERE_COLOUMN1_TBL_ALIAS_NAME") + private String where_coloumn1_tbl_alias_name; + + @Column(name = "WHERE_COLOUMN") + private String where_coloumn; + + @Column(name = "WHERE_CONDITION") + private String where_condition; + + @Column(name = "SWITCH_CONTROL") + private String switch_control; + + @Column(name = "WHERE_COLOUMN2_TBL_ALIAS_NAME") + private String where_coloumn2_tbl_alias_name; + + @Column(name = "WHERE_COLOUMN2") + private String where_coloumn2; + + + + public int getWhere_id() { + return where_id; + } + + public void setWhere_id(int where_id) { + this.where_id = where_id; + } + + public int getReport_id() { + return report_id; + } + + public void setReport_id(int report_id) { + this.report_id = report_id; + } + + public String getExplecity() { + return explecity; + } + + public void setExplecity(String explecity) { + this.explecity = explecity; + } + + public String getWhere_coloumn1_tbl_alias_name() { + return where_coloumn1_tbl_alias_name; + } + + public void setWhere_coloumn1_tbl_alias_name(String where_coloumn1_tbl_alias_name) { + this.where_coloumn1_tbl_alias_name = where_coloumn1_tbl_alias_name; + } + + public String getWhere_coloumn() { + return where_coloumn; + } + + public void setWhere_coloumn(String where_coloumn) { + this.where_coloumn = where_coloumn; + } + + public String getWhere_condition() { + return where_condition; + } + + public void setWhere_condition(String where_condition) { + this.where_condition = where_condition; + } + + public String getSwitch_control() { + return switch_control; + } + + public void setSwitch_control(String switch_control) { + this.switch_control = switch_control; + } + + public String getWhere_coloumn2_tbl_alias_name() { + return where_coloumn2_tbl_alias_name; + } + + public void setWhere_coloumn2_tbl_alias_name(String where_coloumn2_tbl_alias_name) { + this.where_coloumn2_tbl_alias_name = where_coloumn2_tbl_alias_name; + } + + public String getWhere_coloumn2() { + return where_coloumn2; + } + + public void setWhere_coloumn2(String where_coloumn2) { + this.where_coloumn2 = where_coloumn2; + } + + + +} + diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/entity/Rn_rb_Column.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/entity/Rn_rb_Column.java new file mode 100644 index 0000000..8cef29c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/entity/Rn_rb_Column.java @@ -0,0 +1,108 @@ +package com.realnet.rb.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +@Entity +@Table(name = "RN_RB_COLUMN_T") +public class Rn_rb_Column { + + + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "ID") + private int id; + + + @Column(name = "REPORT_ID") + private int report_id; + + @Column(name = "COLUMN_NAME") + private String column_name; + + @Column(name = "COLUMN_ALLIAS_NAME") + private String column_allias_name; + + @Column(name = "ASC_DESC") + private String asc_desc; + + @Column(name = "TABLE_ALLIES_NAME") + private String table_allies_name; + + + + public int getReport_id() { + return report_id; + } + + public void setReport_id(int report_id) { + this.report_id = report_id; + } + + + + public String getColumn_allias_name() { + return column_allias_name; + } + + public void setColumn_allias_name(String column_allias_name) { + this.column_allias_name = column_allias_name; + } + + public String getAsc_desc() { + return asc_desc; + } + + public void setAsc_desc(String asc_desc) { + this.asc_desc = asc_desc; + } + + @Column(name = "FUNCTIONS") + private String functions; + + public String getFunctions() { + return functions; + } + + public void setFunctions(String functions) { + this.functions = functions; + } + + + + public String getTable_allies_name() { + return table_allies_name; + } + + public void setTable_allies_name(String table_allies_name) { + this.table_allies_name = table_allies_name; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + + + public String getColumn_name() { + return column_name; + } + + public void setColumn_name(String column_name) { + this.column_name = column_name; + } + + } + + + + diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/entity/Rn_rb_Tables.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/entity/Rn_rb_Tables.java new file mode 100644 index 0000000..9ebf6c3 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/entity/Rn_rb_Tables.java @@ -0,0 +1,77 @@ +package com.realnet.rb.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + +import com.fasterxml.jackson.annotation.JsonBackReference; +import com.realnet.fnd.entity.Rn_Forms_Setup; + +@Entity +@Table(name = "RN_RB_TABLES_T") +public class Rn_rb_Tables { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "TABLES_ID") + private int tables_id; + + public int getTables_id() { + return tables_id; + } + + public void setTables_id(int tables_id) { + this.tables_id = tables_id; + } + + + public int getReport_id() { + return report_id; + } + + public void setReport_id(int report_id) { + this.report_id = report_id; + } + + + @Column(name = "REPORT_ID") + private int report_id; + + + @Column(name = "TABLE_NAME") + private String table_name; + + public String getTable_name() { + return table_name; + } + + public void setTable_name(String table_name) { + this.table_name = table_name; + } + + @Column(name = "TABLE_ALLIAS_NAME") + private String table_allias_name; + + public String getTable_allias_name() { + return table_allias_name; + } + + public void setTable_allias_name(String table_allias_name) { + this.table_allias_name = table_allias_name; + } + + /* + * @ManyToOne(fetch = FetchType.LAZY, optional = false) + * + * @JoinColumn(name = "", nullable = false) + * + * @JsonBackReference private RnDtoTables dtoTables; + */ + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/entity/Rn_reportDTO.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/entity/Rn_reportDTO.java new file mode 100644 index 0000000..359c3cb --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/entity/Rn_reportDTO.java @@ -0,0 +1,14 @@ +package com.realnet.rb.entity; +import lombok.Data; + +@Data +public class Rn_reportDTO { + + String id; + String report_name; + String description; + String report_tags; + + + } + diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/entity/Rn_report_builder.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/entity/Rn_report_builder.java new file mode 100644 index 0000000..b45eb1d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/entity/Rn_report_builder.java @@ -0,0 +1,98 @@ +package com.realnet.rb.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +import com.realnet.fnd.entity.Rn_Who_Columns; + +import lombok.Data; +import lombok.ToString; + +@Data +@ToString(exclude = { "module" }) +@Entity +@Table(name = "RN_RB_REPORTS_T") +public class Rn_report_builder extends Rn_Who_Columns { + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "ID") + private int id; + +// +// @ManyToOne(fetch = FetchType.LAZY,cascade=CascadeType.ALL) +// @JoinColumn(name = "MODULE_ID",insertable = false, updatable = false) +// @JsonBackReference +// private Rn_Module_Setup module; +// +// + + @Column(name = "REPORT_NAME") + private String report_name; + + @Column(name = "DESCRIPTION") + private String description; + + @Column(name = "REPORT_TAGS") + private String report_tags; + + @Column(name = "DATE_STRING") + private String date_string; + + @Column(name = "ADD_PARAM_STRING") + private String add_param_string; + + @Column(name = "MASTER_SELECT") + private String master_select; + + @Column(name = "GRID_HEADERS") + private String grid_headers; + + @Column(name = "STD_PARAM_VIEW") + private String std_param_view; + + @Column(name = "GRID_VALUES") + private String grid_values; + + @Column(name = "MODEL_STRING") + private String model_string; + + @Column(name = "MODULE_ID") + private int module_id; + + @Column(name = "uiname") + private String uiname; + + @Column(name = "ServiceName") + private String servicename; + + @Column(name = "ReportType") + private String reporttype; + + @Column(name = "PROJECT_ID") + private int project_id; + + @Column(name = "IS_BUILD") + private String is_build; + + @Column(name = "IS_UPDATED") + private String is_updated; + + /* + * @OneToMany(mappedBy = "rn_report_builder", cascade = CascadeType.ALL) + * + * @JsonManagedReference private List components; + * + * + * public List getComponents() { return components; } + * + * public void setComponents(List components) { this.components = + * components; } + */ + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/repository/RnTableDtoRepo.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/repository/RnTableDtoRepo.java new file mode 100644 index 0000000..e3b0c69 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/repository/RnTableDtoRepo.java @@ -0,0 +1,17 @@ +package com.realnet.rb.repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import com.realnet.rb.entity.RnTableListDto; +import com.realnet.rb.entity.Rn_rb_Column; + +@Repository +public interface RnTableDtoRepo extends JpaRepository +{ + //@Query(value = "SELECT table_name FROM information_schema.tables", nativeQuery = true) + //List getTableList(); +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/repository/Rn_column_Repository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/repository/Rn_column_Repository.java new file mode 100644 index 0000000..8296310 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/repository/Rn_column_Repository.java @@ -0,0 +1,22 @@ +package com.realnet.rb.repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import com.realnet.rb.entity.Rn_rb_Column; +import com.realnet.rb.response.Rn_columnDTO; + +@Repository +public interface Rn_column_Repository extends JpaRepository +{ + @Query(value = "SELECT * from rn_rb_column_t WHERE REPORT_ID=:id", nativeQuery = true) + List getList(@Param("id") int id); + + @Query(value = "SELECT * from rn_rb_column_t WHERE REPORT_ID=:id", nativeQuery = true) + List getColumnByReport(@Param("id") int id); + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/repository/Rn_rb_adhoc_repository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/repository/Rn_rb_adhoc_repository.java new file mode 100644 index 0000000..c24acad --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/repository/Rn_rb_adhoc_repository.java @@ -0,0 +1,11 @@ +package com.realnet.rb.repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.rb.entity.Rn_Rb_Adhoc; + +@Repository +public interface Rn_rb_adhoc_repository extends JpaRepository{ + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/repository/Rn_rb_date_param_repository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/repository/Rn_rb_date_param_repository.java new file mode 100644 index 0000000..eacf133 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/repository/Rn_rb_date_param_repository.java @@ -0,0 +1,11 @@ +package com.realnet.rb.repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.rb.entity.Rn_Rb_Date_String; + +@Repository +public interface Rn_rb_date_param_repository extends JpaRepository{ + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/repository/Rn_rb_std_repository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/repository/Rn_rb_std_repository.java new file mode 100644 index 0000000..b04d8ad --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/repository/Rn_rb_std_repository.java @@ -0,0 +1,11 @@ +package com.realnet.rb.repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.rb.entity.Rn_Rb_Std_Param; + +@Repository +public interface Rn_rb_std_repository extends JpaRepository{ + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/repository/Rn_rb_where_param_repository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/repository/Rn_rb_where_param_repository.java new file mode 100644 index 0000000..f3a0943 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/repository/Rn_rb_where_param_repository.java @@ -0,0 +1,19 @@ +package com.realnet.rb.repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import com.realnet.rb.entity.Rn_Rb_Where_Param; + +@Repository +public interface Rn_rb_where_param_repository extends JpaRepository +{ + + @Query(value = "SELECT * from rn_rb_where_param_t WHERE REPORT_ID=:id", nativeQuery = true) + List getWhereByReport(@Param("id") int id); + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/repository/Rn_report_builder_repository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/repository/Rn_report_builder_repository.java new file mode 100644 index 0000000..0cb3c1f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/repository/Rn_report_builder_repository.java @@ -0,0 +1,36 @@ +package com.realnet.rb.repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import com.realnet.rb.entity.Rn_report_builder; + +@Repository +public interface Rn_report_builder_repository extends JpaRepository{ + + + //@Query(value = ":query", nativeQuery = true) + // List getQueryData(@Param("sql_query") String query); + + @Query(value = "SELECT * from rn_rb_reports_t WHERE id=:id", nativeQuery = true) + List getByReportId(@Param("id") int id); + + @Query(value= "SELECT * from rn_rb_reports_t WHERE report_type='service' and id=:id",nativeQuery = true) + List getreportbyservice(@Param("id") int id); + + @Query(value= "select schema_name from information_schema.schemata",nativeQuery = true) + List getdatabaseList(); + + @Query(value= "SELECT table_name FROM information_schema.tables WHERE table_schema =?1",nativeQuery = true) + List getListOftables(String table_schema); + + @Query(value= "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE `TABLE_SCHEMA`=:'TABLE_SCHEMA' AND `TABLE_NAME`=:'TABLE_NAME';",nativeQuery = true) + List getallcolumnlist(@Param("TABLE_SCHEMA") Object table_schema, @Param("TABLE_NAME") Object tABLE_NAME); + + @Query(value = "SELECT count(id) FROM realnet_CNSBE.rn_rb_reports_t where module_id=?1", nativeQuery = true) + String count_report(Integer moduleId); +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/repository/Rn_tables_Repository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/repository/Rn_tables_Repository.java new file mode 100644 index 0000000..3b9f0aa --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/repository/Rn_tables_Repository.java @@ -0,0 +1,21 @@ +package com.realnet.rb.repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import com.realnet.rb.entity.Rn_rb_Column; +import com.realnet.rb.entity.Rn_rb_Tables; + +@Repository +public interface Rn_tables_Repository extends JpaRepository +{ + + @Query(value = "SELECT * from rn_rb_tables_t WHERE REPORT_ID=:id", nativeQuery = true) + List getTablesByReport(@Param("id") int id); + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/response/MasterResponse.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/response/MasterResponse.java new file mode 100644 index 0000000..962106f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/response/MasterResponse.java @@ -0,0 +1,15 @@ +package com.realnet.rb.response; +import java.util.List; + +import com.realnet.fnd.response.PageResponse; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper=false) +public class MasterResponse extends PageResponse { + @ApiModelProperty(required = true, value = "") + private List items; +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/response/Rn_adhocParamResponse.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/response/Rn_adhocParamResponse.java new file mode 100644 index 0000000..6734d33 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/response/Rn_adhocParamResponse.java @@ -0,0 +1,19 @@ +package com.realnet.rb.response; + +import java.util.List; + +import com.realnet.rb.entity.Rn_Rb_Adhoc; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper=false) +public class Rn_adhocParamResponse { + + + + @ApiModelProperty(required = true, value = "") + private List items; +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/response/Rn_columnDTO.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/response/Rn_columnDTO.java new file mode 100644 index 0000000..81f4acf --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/response/Rn_columnDTO.java @@ -0,0 +1,13 @@ +package com.realnet.rb.response; + +import lombok.Data; + +@Data +public class Rn_columnDTO { + + private int id; + private String Name; + + } + + diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/response/Rn_columnResponse.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/response/Rn_columnResponse.java new file mode 100644 index 0000000..a8d1f61 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/response/Rn_columnResponse.java @@ -0,0 +1,19 @@ +package com.realnet.rb.response; + +import java.util.List; + +import com.realnet.rb.entity.Rn_rb_Column; +import com.realnet.rb.entity.Rn_rb_Tables; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper=false) +public class Rn_columnResponse { + + @ApiModelProperty(required = true, value = "") + private List items; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/response/Rn_dateParamResponse.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/response/Rn_dateParamResponse.java new file mode 100644 index 0000000..793745a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/response/Rn_dateParamResponse.java @@ -0,0 +1,20 @@ +package com.realnet.rb.response; + +import java.util.List; + +import com.realnet.rb.entity.Rn_Rb_Date_String; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + + +@Data +@EqualsAndHashCode(callSuper=false) +public class Rn_dateParamResponse { + + + + @ApiModelProperty(required = true, value = "") + private List items; +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/response/Rn_report_builder_response.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/response/Rn_report_builder_response.java new file mode 100644 index 0000000..ee7c61b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/response/Rn_report_builder_response.java @@ -0,0 +1,17 @@ +package com.realnet.rb.response; + +import java.util.List; + +import com.realnet.fnd.response.PageResponse; +import com.realnet.rb.entity.Rn_report_builder; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper=false) +public class Rn_report_builder_response extends PageResponse { + @ApiModelProperty(required = true, value = "") + private List items; +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/response/Rn_stdParamResponse.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/response/Rn_stdParamResponse.java new file mode 100644 index 0000000..e3b9389 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/response/Rn_stdParamResponse.java @@ -0,0 +1,19 @@ +package com.realnet.rb.response; + +import java.util.List; + +import com.realnet.rb.entity.Rn_Rb_Std_Param; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper=false) +public class Rn_stdParamResponse { + + + + @ApiModelProperty(required = true, value = "") + private List items; +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/response/Rn_tableResponse.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/response/Rn_tableResponse.java new file mode 100644 index 0000000..0e74116 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/response/Rn_tableResponse.java @@ -0,0 +1,19 @@ +package com.realnet.rb.response; + +import java.util.List; + +import com.realnet.rb.entity.Rn_rb_Tables; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper=false) +public class Rn_tableResponse { + + @ApiModelProperty(required = true, value = "") + private List items; + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/response/Rn_whereParamResponse.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/response/Rn_whereParamResponse.java new file mode 100644 index 0000000..e6398a9 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/response/Rn_whereParamResponse.java @@ -0,0 +1,20 @@ +package com.realnet.rb.response; + +import java.util.List; + +import com.realnet.rb.entity.Rn_Rb_Where_Param; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + + +@Data +@EqualsAndHashCode(callSuper=false) +public class Rn_whereParamResponse { + + + + @ApiModelProperty(required = true, value = "") + private List items; +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_adhoc_param_service.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_adhoc_param_service.java new file mode 100644 index 0000000..f02a514 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_adhoc_param_service.java @@ -0,0 +1,10 @@ +package com.realnet.rb.service; + +import java.util.List; + +import com.realnet.rb.entity.Rn_Rb_Adhoc; + +public interface Rn_rb_adhoc_param_service { + List save(List rn_tables); + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_adhoc_param_serviceImpl.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_adhoc_param_serviceImpl.java new file mode 100644 index 0000000..97f14e2 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_adhoc_param_serviceImpl.java @@ -0,0 +1,23 @@ +package com.realnet.rb.service; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.realnet.rb.entity.Rn_Rb_Adhoc; +import com.realnet.rb.repository.Rn_rb_adhoc_repository; + +@Service +public class Rn_rb_adhoc_param_serviceImpl implements Rn_rb_adhoc_param_service{ + + @Autowired + private Rn_rb_adhoc_repository rn_repo; + + @Override + public List save(List rn_tables) { + List savedTables = rn_repo + .saveAll(rn_tables); + return savedTables; + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_column_service.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_column_service.java new file mode 100644 index 0000000..0bd6401 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_column_service.java @@ -0,0 +1,12 @@ +package com.realnet.rb.service; + +import java.util.List; + +import com.realnet.rb.entity.Rn_rb_Column; +import com.realnet.rb.response.Rn_columnDTO; + +public interface Rn_rb_column_service { + + List save(List rn_tables); + List getListOfColumns(int id); +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_column_serviceImpl.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_column_serviceImpl.java new file mode 100644 index 0000000..bf3a974 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_column_serviceImpl.java @@ -0,0 +1,31 @@ +package com.realnet.rb.service; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.realnet.rb.entity.Rn_rb_Column; +import com.realnet.rb.repository.Rn_column_Repository; +import com.realnet.rb.response.Rn_columnDTO; + +@Service +public class Rn_rb_column_serviceImpl implements Rn_rb_column_service{ + + + @Autowired + private Rn_column_Repository rn_repo; + + @Override + public List save(List rn_tables) { + List savedTables = rn_repo + .saveAll(rn_tables); + return savedTables; + } + + @Override + public List getListOfColumns(int id) { + List getList=rn_repo.getList(id); + return getList; + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_date_param_service.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_date_param_service.java new file mode 100644 index 0000000..d7a7605 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_date_param_service.java @@ -0,0 +1,10 @@ +package com.realnet.rb.service; + +import java.util.List; + +import com.realnet.rb.entity.Rn_Rb_Date_String; + +public interface Rn_rb_date_param_service { + List save(List rn_tables); + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_date_param_serviceImpl.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_date_param_serviceImpl.java new file mode 100644 index 0000000..bdef7ed --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_date_param_serviceImpl.java @@ -0,0 +1,24 @@ +package com.realnet.rb.service; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.realnet.rb.entity.Rn_Rb_Date_String; +import com.realnet.rb.repository.Rn_rb_date_param_repository; + +@Service +public class Rn_rb_date_param_serviceImpl implements Rn_rb_date_param_service{ + + @Autowired + private Rn_rb_date_param_repository rn_repo; + + @Override + public List save(List rn_tables) { + List savedTables = rn_repo + .saveAll(rn_tables); + return savedTables; + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_std_param_service.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_std_param_service.java new file mode 100644 index 0000000..2cbd8f5 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_std_param_service.java @@ -0,0 +1,10 @@ +package com.realnet.rb.service; + +import java.util.List; + +import com.realnet.rb.entity.Rn_Rb_Std_Param; + +public interface Rn_rb_std_param_service { + List save(List rn_tables); + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_std_param_serviceImpl.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_std_param_serviceImpl.java new file mode 100644 index 0000000..ed5f1bf --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_std_param_serviceImpl.java @@ -0,0 +1,24 @@ +package com.realnet.rb.service; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.realnet.rb.entity.Rn_Rb_Std_Param; +import com.realnet.rb.repository.Rn_rb_std_repository; + +@Service +public class Rn_rb_std_param_serviceImpl implements Rn_rb_std_param_service{ + + + @Autowired + private Rn_rb_std_repository rn_repo; + + @Override + public List save(List rn_tables) { + List savedTables = rn_repo + .saveAll(rn_tables); + return savedTables; + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_tables_service.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_tables_service.java new file mode 100644 index 0000000..bc31112 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_tables_service.java @@ -0,0 +1,36 @@ +package com.realnet.rb.service; + +import java.util.List; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.realnet.rb.entity.Rn_rb_Tables; +import com.realnet.rb.entity.Rn_report_builder; + +public interface Rn_rb_tables_service { + Rn_report_builder save(Rn_report_builder rn_tables); + + List save(List rn_tables); + + List getListOfTables(); + + List getListOfColumns(int id); + + List getColumnList(int id); + + List getColumnAliasList(String name); + + List getListOftables(); + + List getdatabaseList(); + + List getColumnAliasList1(String table_schema, String tABLE_NAME); + + List getListOftable(String table_schema); + + List getColumnAliasList2(String tableName); + + List createdatabase(String tableName) throws JsonProcessingException; + + List getallcolwithalltable(String table_schema, String str); + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_tables_serviceImpl.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_tables_serviceImpl.java new file mode 100644 index 0000000..f7632ed --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_tables_serviceImpl.java @@ -0,0 +1,346 @@ +package com.realnet.rb.service; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.realnet.rb.entity.Rn_rb_Tables; +import com.realnet.rb.entity.Rn_report_builder; +import com.realnet.rb.repository.Rn_report_builder_repository; +import com.realnet.rb.repository.Rn_tables_Repository; + +@Service +public class Rn_rb_tables_serviceImpl implements Rn_rb_tables_service { + + @Autowired + private Rn_report_builder_repository rn_table_repository; + + @Autowired + private Rn_tables_Repository rn_repo; + + @Value("${spring.datasource.username}") + private String userName; + + @Value("${spring.datasource.password}") + private String password; + + @Value("${spring.datasource.url}") + private String url; + + @Override + public Rn_report_builder save(Rn_report_builder rn_tables) { + Rn_report_builder savedTables = rn_table_repository.save(rn_tables); + return savedTables; + } + + @Override + public List save(List rn_tables) { + List savedTables = rn_repo.saveAll(rn_tables); + return savedTables; + } + + @Override + public List getListOfTables() { + + String url = null; + String userName = null; + String password = null; + + String query = "SELECT table_name FROM information_schema.tables WHERE table_schema = 'realnet_CNSBE'"; + List list = new ArrayList(); + + try (Connection con = DriverManager.getConnection(url, userName, password); + + Statement stmt = con.createStatement()) { + ResultSet rs = stmt.executeQuery(query); + System.out.println("table list is" + rs); + while (rs.next()) { + String coffeeName = rs.getString("table_name"); + list.add(coffeeName); + } + } catch (SQLException e) { + e.printStackTrace(); + } + return list; + } + + @Override + public List getListOfColumns(int id) { + // Connection con = null; + // Connection con=null; + + String url = null; + String userName = null; + String password = null; + + String query = "SELECT table_allias_name FROM rn_rb_tables_t WHERE report_id=" + id + ""; + List list = new ArrayList(); + try (Connection con = DriverManager.getConnection(url, userName, password); + + Statement stmt = con.createStatement()) { + ResultSet rs = stmt.executeQuery(query); + while (rs.next()) { + String coffeeName = rs.getString("table_allias_name"); + list.add(coffeeName); + } + } catch (SQLException e) { + e.printStackTrace(); + } + return list; + } + + @Override + public List getColumnList(int id) { + + String url = null; + String userName = null; + String password = null; + + String query = "SELECT column_name FROM rn_rb_column_t WHERE report_id=" + id + ""; + List list = new ArrayList(); + try (Connection con = DriverManager.getConnection(url, userName, password); + + Statement stmt = con.createStatement()) { + ResultSet rs = stmt.executeQuery(query); + while (rs.next()) { + String coffeeName = rs.getString("column_name"); + list.add(coffeeName); + } + } catch (SQLException e) { + e.printStackTrace(); + } + return list; + } + + @Override + public List getColumnAliasList(String name) { + + String url = null; + String userName = null; + String password = null; + + String query = "SELECT column_name FROM information_schema.columns WHERE TABLE_SCHEMA='realnet_CNSBE' and table_name = '" + + name + "' "; + List list = new ArrayList(); + try (Connection con = DriverManager.getConnection(url, userName, password); + + Statement stmt = con.createStatement()) { + ResultSet rs = stmt.executeQuery(query); + while (rs.next()) { + String coffeeName = rs.getString("column_name"); + list.add(name + "." + coffeeName); + } + } catch (SQLException e) { + e.printStackTrace(); + } + return list; + } + + // get all column + @Override + public List getColumnAliasList1(String table_schema, String tABLE_NAME) { + + String url = null; + String userName = null; + String password = null; + + String query = "SELECT column_name FROM information_schema.columns WHERE TABLE_SCHEMA='" + table_schema + + "' and table_name = '" + tABLE_NAME + "' "; + List list = new ArrayList(); + try (Connection con = DriverManager.getConnection(url, userName, password); + + Statement stmt = con.createStatement()) { + ResultSet rs = stmt.executeQuery(query); + while (rs.next()) { + String coffeeName = rs.getString("column_name"); + list.add(coffeeName); + } + } catch (SQLException e) { + e.printStackTrace(); + } + return list; + } + + // get all table list from databse + @Override + public List getListOftable(String table_schema) { + + String url = null; + String userName = null; + String password = null; + + String query = "SELECT table_name FROM information_schema.tables WHERE table_schema='" + table_schema + "' "; + + List list = new ArrayList(); + try (Connection con = DriverManager.getConnection(url, userName, password); + + Statement stmt = con.createStatement()) { + ResultSet rs = stmt.executeQuery(query); + while (rs.next()) { + String coffeeName = rs.getString("table_name"); + list.add(coffeeName); + } + } catch (SQLException e) { + e.printStackTrace(); + } + return list; + } + + @Override + public List getListOftables() { + + String url = null; + String userName = null; + String password = null; + + String query = "SELECT table_name FROM information_schema.tables WHERE table_schema = 'realnet_CNSBE'"; + List list = new ArrayList(); + try (Connection con = DriverManager.getConnection(url, userName, password); + + Statement stmt = con.createStatement()) { + ResultSet rs = stmt.executeQuery(query); + System.out.println("table list is" + rs); + while (rs.next()) { + String coffeeName = rs.getString("table_name"); + list.add(coffeeName); + } + } catch (SQLException e) { + e.printStackTrace(); + } + return list; + } + + @Override + public List getdatabaseList() { + + String url = null; + String userName = null; + String password = null; + + String query = "select schema_name from information_schema.schemata"; + List list = new ArrayList(); + try (Connection con = DriverManager.getConnection(url, userName, password); + + Statement stmt = con.createStatement()) { + ResultSet rs = stmt.executeQuery(query); + System.out.println("table list is" + rs); + while (rs.next()) { + String coffeeName = rs.getString("table_name"); + list.add(coffeeName); + } + } catch (SQLException e) { + e.printStackTrace(); + } + return list; + } + + @Override + public List getColumnAliasList2(String tableNames) { + + String url = null; + String userName = null; + String password = null; + + List list = new ArrayList<>(); + String[] tableArray = tableNames.split(","); + int tableIndex = 1; // Initialize the table index + for (int i = 0; i < tableArray.length; i++) { + String tableName = tableArray[i].trim(); + String tableAlias = generateTableAlias(tableIndex); + String query = "SELECT CONCAT('" + tableAlias + + "', column_name) AS full_column_name FROM information_schema.columns WHERE table_name = '" + + tableName + "'"; + try (Connection con = DriverManager.getConnection(url, userName, password); + Statement stmt = con.createStatement()) { + ResultSet rs = stmt.executeQuery(query); + while (rs.next()) { + String columnName = rs.getString("full_column_name"); + list.add(columnName); + } + } catch (SQLException e) { + e.printStackTrace(); + } + tableIndex++; + } + return list; + } + + // Method to generate the table alias based on the table index + private String generateTableAlias(int tableIndex) { + StringBuilder sb = new StringBuilder(); + // Calculate the suffix based on the table index + int suffixIndex = (tableIndex - 1) / 26; // e.g., 0 for table 1-26, 1 for table 27-52, etc. + // Add prefix to the table alias + sb.append((char) ('a' + (tableIndex - 1) % 26)); + // Add suffix to the table alias + for (int i = 0; i < suffixIndex; i++) { + sb.append('a'); + } + sb.append('.'); + return sb.toString(); + } + + @Override + public List createdatabase(String table_schema) throws JsonProcessingException { + + String query = "CREATE SCHEMA " + table_schema + ";"; + + List list = new ArrayList(); + try (Connection con = DriverManager.getConnection(url, userName, password); // conn.str + + Statement stmt = con.createStatement()) { + int rs = stmt.executeUpdate(query); + + list.add(rs); + + } catch (SQLException e) { + e.printStackTrace(); + } finally { + } + return list; + + } + + @Override + public List getallcolwithalltable(String table_schema, String str) { + ArrayList tables = new ArrayList<>(); + + String liString = "," + str; + int i = 0; + do { + + int lastIndexOf = liString.lastIndexOf(","); + + String substring = liString.substring(lastIndexOf + 1); + tables.add(substring); + + System.out.println(substring); + + liString = liString.substring(0, lastIndexOf); + + System.out.println("step " + i + " = " + liString); + i++; + + } while (liString.contains(",")); + + ArrayList arrayList = new ArrayList<>(); + for (String TABLE_NAME : tables) { + List list = getColumnAliasList1(table_schema, TABLE_NAME); + if (!list.isEmpty()) { + list.forEach(l -> arrayList.add(l)); + } + + } + return arrayList; + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_where_param_service.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_where_param_service.java new file mode 100644 index 0000000..236e123 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_where_param_service.java @@ -0,0 +1,12 @@ +package com.realnet.rb.service; + +import java.util.List; + +import com.realnet.rb.entity.Rn_Rb_Where_Param; +import com.realnet.rb.entity.Rn_rb_Column; + +public interface Rn_rb_where_param_service { + + List save(List rn_tables); + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_where_param_serviceImpl.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_where_param_serviceImpl.java new file mode 100644 index 0000000..5a47ab7 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_rb_where_param_serviceImpl.java @@ -0,0 +1,25 @@ +package com.realnet.rb.service; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.realnet.rb.entity.Rn_Rb_Where_Param; +import com.realnet.rb.entity.Rn_rb_Tables; +import com.realnet.rb.repository.Rn_rb_where_param_repository; + +@Service +public class Rn_rb_where_param_serviceImpl implements Rn_rb_where_param_service{ + + @Autowired + private Rn_rb_where_param_repository rn_repo; + + @Override + public List save(List rn_tables) { + List savedTables = rn_repo + .saveAll(rn_tables); + return savedTables; + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_report_builder_service.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_report_builder_service.java new file mode 100644 index 0000000..9057423 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_report_builder_service.java @@ -0,0 +1,33 @@ +package com.realnet.rb.service; + +import java.util.List; +import java.util.Map; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import com.realnet.rb.entity.Rn_reportDTO; +import com.realnet.rb.entity.Rn_report_builder; + + +public interface Rn_report_builder_service { + + Page getAll(Pageable p); + Rn_report_builder save(Rn_report_builder rn_report_builder); + boolean saveReport(Rn_reportDTO report, int moduleId); + Rn_report_builder saveReport(Rn_report_builder report, int moduleId); + Rn_report_builder saveReportservice(Rn_report_builder report, int moduleId); + Rn_report_builder updateById(int id, String date_string); + public Rn_report_builder updateByIdAdhoc(int id, String date_string); + public Rn_report_builder updateByIdGridHeaders(int id, String date_string); + public Rn_report_builder updateByIdQuery(int id, Rn_report_builder rn_report); + Rn_report_builder getById(int id); + List getByReportId(int id); + + public Rn_report_builder updatereport(int reportid,Rn_report_builder reportdata); + + List> getQueryData(String query); + + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_report_builder_serviceIpml.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_report_builder_serviceIpml.java new file mode 100644 index 0000000..7d8c0ef --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/rb/service/Rn_report_builder_serviceIpml.java @@ -0,0 +1,386 @@ +package com.realnet.rb.service; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.HashMap; +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.Value; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.realnet.CredentialDatabase.Service.SurevaultService; +import com.realnet.exceptions.ResourceNotFoundException; +import com.realnet.rb.entity.Rn_Rb_Where_Param; +import com.realnet.rb.entity.Rn_rb_Column; +import com.realnet.rb.entity.Rn_rb_Tables; +import com.realnet.rb.entity.Rn_reportDTO; +import com.realnet.rb.entity.Rn_report_builder; +import com.realnet.rb.repository.Rn_column_Repository; +import com.realnet.rb.repository.Rn_rb_where_param_repository; +import com.realnet.rb.repository.Rn_report_builder_repository; +import com.realnet.rb.repository.Rn_tables_Repository; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.service1.AppUserServiceImpl; +import com.realnet.utils.Constant; + +@Service +public class Rn_report_builder_serviceIpml implements Rn_report_builder_service{ + @Autowired + private Rn_report_builder_repository rn_report_builder_repository; + + @Autowired + private AppUserServiceImpl userService; + + @Autowired + private Rn_column_Repository columnRepo; + + @Autowired + private Rn_tables_Repository tableRepo; + + @Autowired + private Rn_rb_where_param_repository whereRepo; + +// @Value("${spring.datasource.username}") +// private String userName; +// +// @Value("${spring.datasource.password}") +// private String password; +// +// @Value("${spring.datasource.url}") +// private String url; + + @Autowired + private SurevaultService databaseCredentialsService; + + + @Override + public Page getAll(Pageable page) { + return rn_report_builder_repository.findAll(page); + } + + @Override + public Rn_report_builder save(Rn_report_builder rn_report_builder) { + Rn_report_builder savereport = rn_report_builder_repository.save(rn_report_builder); + return savereport; + } + + @Override + public Rn_report_builder getById(int id) { + Rn_report_builder bcf_extractor = rn_report_builder_repository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException(Constant.NOT_FOUND_EXCEPTION + " :" + id)); + return bcf_extractor; + } + + @Override + public List getByReportId(int id) { + List bcf_extractor = rn_report_builder_repository.getByReportId(id); + return bcf_extractor; + } + + @Override + public boolean saveReport(Rn_reportDTO report, int moduleId) { + AppUser user = userService.getLoggedInUser(); + Long userId = user.getUserId(); + //Long accountId = user.getSys_account().getId(); + + String report_name = report.getReport_name(); + String desc = report.getDescription(); + String tags=report.getReport_tags(); + + + Rn_report_builder reportBuilder=new Rn_report_builder(); + reportBuilder.setReport_name(report_name); + reportBuilder.setDescription(desc); + reportBuilder.setReport_tags(tags); + reportBuilder.setModule_id(moduleId); + save(reportBuilder); + return true; + } + + @Override + public Rn_report_builder saveReport(Rn_report_builder report, int moduleId) { + AppUser user = userService.getLoggedInUser(); + Long userId = user.getUserId(); + //Long accountId = user.getSys_account().getId(); + + String report_name = report.getReport_name(); + String desc = report.getDescription(); + String tags=report.getReport_tags(); + + + Rn_report_builder reportBuilder=new Rn_report_builder(); + reportBuilder.setReport_name(report_name); + reportBuilder.setDescription(desc); + reportBuilder.setReport_tags(tags); + reportBuilder.setModule_id(moduleId); + reportBuilder.setIs_build("N"); + reportBuilder.setIs_updated("N"); + + + return save(reportBuilder); + } + + + @Override + public Rn_report_builder updateById(int id, String date_string) { + + Rn_report_builder rn_builder = rn_report_builder_repository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException(Constant.NOT_FOUND_EXCEPTION + " :" + id)); + rn_builder.setDate_string(date_string); + + final Rn_report_builder updatedProject = rn_report_builder_repository.save(rn_builder); + return updatedProject; + } + + @Override + public Rn_report_builder updateByIdAdhoc(int id, String param_string) { + + Rn_report_builder rn_builder = rn_report_builder_repository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException(Constant.NOT_FOUND_EXCEPTION + " :" + id)); + rn_builder.setAdd_param_string(param_string); + + final Rn_report_builder updatedProject = rn_report_builder_repository.save(rn_builder); + return updatedProject; + } + + @Override + public Rn_report_builder updateByIdGridHeaders(int id, String param_string) { + + Rn_report_builder rn_builder = rn_report_builder_repository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException(Constant.NOT_FOUND_EXCEPTION + " :" + id)); + rn_builder.setGrid_headers(param_string); + rn_builder.setGrid_values(param_string); + + final Rn_report_builder updatedProject = rn_report_builder_repository.save(rn_builder); + return updatedProject; + } + + @Override + public Rn_report_builder updateByIdQuery(int id, Rn_report_builder param_string) { + + Rn_report_builder rn_builder = rn_report_builder_repository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException(Constant.NOT_FOUND_EXCEPTION + " :" + id)); + + StringBuilder sb=new StringBuilder(); + StringBuilder sb2=new StringBuilder(); + StringBuilder sb3=new StringBuilder(); + + //get tables + List tableList=tableRepo.getTablesByReport(id); + for (int i = 0; i < tableList.size(); i++) { + String table_name=tableList.get(i).getTable_name(); + String table_allias_name=tableList.get(i).getTable_allias_name(); + if(i ==0) + { + sb.append(table_name+" "+table_allias_name); + }else{ + sb.append(","+table_name+" "+table_allias_name); + } + } + + //get columns + List columnList=columnRepo.getColumnByReport(id); + for (int i = 0; i < columnList.size(); i++) { + String column_name=columnList.get(i).getColumn_name(); + String table_allies_name=columnList.get(i).getTable_allies_name(); + String column_allias_name=columnList.get(i).getColumn_allias_name(); + String asc_desc=columnList.get(i).getAsc_desc(); + String function=columnList.get(i).getFunctions(); + if(function != null && !function.isEmpty()) + { + sb2.append(function+"("+table_allies_name+"."+column_name+")"+column_allias_name); + + }else + { + if(i ==0) + { + sb2.append(column_name+" "+column_allias_name); + }else{ + sb2.append(","+column_name+" "+column_allias_name); + } + } + + } + //where condition + List whereList=whereRepo.getWhereByReport(id); + for (int i = 0; i < whereList.size(); i++) { + String explecity=whereList.get(i).getExplecity(); + String table_column_name1=whereList.get(i).getWhere_coloumn1_tbl_alias_name(); + String column1=whereList.get(i).getWhere_coloumn(); + String condition=whereList.get(i).getWhere_condition(); + String switch_control=whereList.get(i).getSwitch_control(); + String table_column_name2=whereList.get(i).getWhere_coloumn2_tbl_alias_name(); + String column2=whereList.get(i).getWhere_coloumn2_tbl_alias_name(); + + if(explecity!=null) { + sb3.append(" and "+table_column_name1+"."+column1+"="+table_column_name2+"."+column2); + } + else { + sb3.append(""); + } + + + } + + String sql6="select "+sb2+" from "+sb+" where 1=1 "+sb3+""; + + + + //sb.append("select book.author author_1,gb_records_t.name name_2,book.title title_3 from book book,gb_records_t gb_records_t where 1=1 "); + //String master_query=sb.toString(); + + rn_builder.setMaster_select(sql6); + final Rn_report_builder updatedProject = rn_report_builder_repository.save(rn_builder); + return updatedProject; + } + + + +// @Override +// public List getQueryData(String query) { +// String sql_query = query; +// List list=new ArrayList(); +// try ( +// Connection con =DriverManager.getConnection(url,userName,password); +// +// //Statement stmt = con.createStatement(); +// PreparedStatement ps = con.prepareStatement(query);) { +// ResultSet rs = ps.executeQuery(); +// java.sql.ResultSetMetaData rsm = rs.getMetaData(); +// System.out.println("matadata::"+rsm); +// int rscount = rsm.getColumnCount(); +// while (rs.next()) { +// for (int i = 1; i <= rscount; i++) { +// String data= rs.getString(i); +// list.add(data); +// } +// } +// +// } catch (SQLException e) { +// e.printStackTrace(); +// } +// return list; +// } + + + @Override + public List> getQueryData(String query) { + String sql_query = query; + List> list = new ArrayList<>(); + String url=null; + String userName=null; + String password=null; + try { + userName = databaseCredentialsService.getSurevaultCredentials("databaseuserName"); + url = databaseCredentialsService.getSurevaultCredentials("databaseUrl"); + password = databaseCredentialsService.getSurevaultCredentials("databasePassword"); + + } catch (JsonProcessingException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + try ( + + // JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); + + + Connection con =DriverManager.getConnection(url,userName,password); + + //Statement stmt = con.createStatement(); + PreparedStatement ps = con.prepareStatement(query);) { + ResultSet rs = ps.executeQuery(); + java.sql.ResultSetMetaData rsm = rs.getMetaData(); + System.out.println("matadata::"+rsm); + int rscount = rsm.getColumnCount(); + while (rs.next()) { + Map row = new HashMap<>(); + for (int i = 1; i <= rscount; i++) { + //String data= rs.getString(i); + //list.add(data); + String colName = rsm.getColumnName(i); + Object colVal = rs.getObject(i); + row.put(colName,colVal); + } + list.add(row); + + } + + } catch (SQLException e) { + e.printStackTrace(); + } + return list; + } + + @Override + public Rn_report_builder saveReportservice(Rn_report_builder report, int moduleId) { + AppUser user = userService.getLoggedInUser(); + Long userId = user.getUserId(); + //Long accountId = user.getSys_account().getId(); + + String report_name = report.getReport_name(); + String desc = report.getDescription(); + String tags=report.getReport_tags(); + String servicename=report.getServicename(); + + + Rn_report_builder reportBuilder=new Rn_report_builder(); + reportBuilder.setReport_name(report_name); + reportBuilder.setDescription(desc); + reportBuilder.setReport_tags(tags); + reportBuilder.setModule_id(moduleId); + reportBuilder.setIs_build("N"); + reportBuilder.setIs_updated("N"); + reportBuilder.setServicename(servicename); + + + return save(reportBuilder); + } + + @Override + public Rn_report_builder updatereport(int reportid,Rn_report_builder reportdata) { + + Rn_report_builder oldrn_builder = rn_report_builder_repository.findById(reportid) + .orElseThrow(() -> new ResourceNotFoundException(Constant.NOT_FOUND_EXCEPTION + " :" + reportid)); + + oldrn_builder.setReport_name(reportdata.getReport_name()); + oldrn_builder.setReport_tags(reportdata.getReport_tags()); + oldrn_builder.setDescription(reportdata.getDescription()); + oldrn_builder.setServicename(reportdata.getServicename()); + + + Rn_report_builder newreport = rn_report_builder_repository.save(oldrn_builder); + + + return newreport; + + + } + + + + + + + + + +// @Override +// public List getQueryData(String query) { +// List queryResult = rn_report_builder_repository.getQueryData(query) +// .orElseThrow(() -> new ResourceNotFoundException(Constant.NOT_FOUND_EXCEPTION + " :" + id)); +// return queryResult; +// } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/realm/Controllers/RealmController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/realm/Controllers/RealmController.java new file mode 100644 index 0000000..31d7f56 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/realm/Controllers/RealmController.java @@ -0,0 +1,75 @@ +package com.realnet.realm.Controllers; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.realm.Entity.Realm; +import com.realnet.realm.Services.RealmService; + +@RequestMapping(value = "/Realm") +//@CrossOrigin("*") +@RestController +public class RealmController { + @Autowired + private RealmService Service; + + @Value("${projectPath}") + private String projectPath; + + @PostMapping("/Realm") + public Realm Savedata(@RequestBody Realm data) { + Realm save = Service.Savedata(data); + + return save; + } + + @PutMapping("/Realm/{id}") + public Realm update(@RequestBody Realm data, @PathVariable Long id) { + Realm update = Service.update(data, id); + return update; + } + +// get all with pagination + @GetMapping("/Realm/getall/page") + public Page getall(@RequestParam(value = "page", required = false) Integer page, + @RequestParam(value = "size", required = false) Integer size) { + Pageable paging = PageRequest.of(page, size); + Page get = Service.getAllWithPagination(paging); + + return get; + + } + + @GetMapping("/Realm") + public List getdetails() { + List get = Service.getdetails(); + return get; + } + + @GetMapping("/Realm/{id}") + public Realm getdetailsbyId(@PathVariable Long id) { + Realm get = Service.getdetailsbyId(id); + return get; + } + + @DeleteMapping("/Realm/{id}") + public void delete_by_id(@PathVariable Long id) { + Service.delete_by_id(id); + + } + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/realm/Entity/Realm.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/realm/Entity/Realm.java new file mode 100644 index 0000000..2af74d0 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/realm/Entity/Realm.java @@ -0,0 +1,32 @@ +package com.realnet.realm.Entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +import com.realnet.WhoColumn.Entity.Who_column; + +import lombok.Data; + +@Entity +@Data +public class Realm extends Who_column { + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String realm_name; + + private Long touser_id; + private Long fromuser_id; + + private Integer realm_id; + private String totable; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/realm/Repository/RealmRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/realm/Repository/RealmRepository.java new file mode 100644 index 0000000..ccfdf7e --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/realm/Repository/RealmRepository.java @@ -0,0 +1,17 @@ +package com.realnet.realm.Repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import com.realnet.realm.Entity.Realm; + +@Repository +public interface RealmRepository extends JpaRepository { + + @Query(value = "select * from realm where touser_id=?1", nativeQuery = true) + List findBytouserId(Long touser_id); + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/realm/Services/RealmService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/realm/Services/RealmService.java new file mode 100644 index 0000000..a25eef2 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/realm/Services/RealmService.java @@ -0,0 +1,67 @@ +package com.realnet.realm.Services; + +import java.util.List; +import java.util.Optional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import com.realnet.api_registery.Entity.Api_registery_header; +import com.realnet.exceptions.ResourceNotFoundException; +import com.realnet.realm.Entity.Realm; +import com.realnet.realm.Repository.RealmRepository; + +@Service +public class RealmService { + @Autowired + private RealmRepository realmRepository; + + public Realm Savedata(Realm data) { + + Realm save = realmRepository.save(data); + return save; + } + +// get all with pagination + public Page getAllWithPagination(Pageable page) { + return realmRepository.findAll(page); + } + + public List getdetails() { + return (List) realmRepository.findAll(); + } + + public Realm getdetailsbyId(Long id) { + return realmRepository.findById(id).get(); + } + + public void delete_by_id(Long id) { + realmRepository.deleteById(id); + } + + public Realm update(Realm data, Long id) { + Optional old1 = realmRepository.findById(id); + + if (old1.isPresent()) { + + Realm old = old1.get(); + + old.setRealm_name(data.getRealm_name()); + + final Realm test = realmRepository.save(old); + return test; + } else { + throw new ResourceNotFoundException("not found"); + } + + } + + public List findByUserId(Long userId) { + + List list = realmRepository.findBytouserId(userId); + return list; + + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Controller/Report_buildercontroller.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Controller/Report_buildercontroller.java new file mode 100644 index 0000000..b0ddf79 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Controller/Report_buildercontroller.java @@ -0,0 +1,144 @@ +package com.realnet.report_builder.Controller; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.report_builder.Entity.ReportQueryDataDTO; +import com.realnet.report_builder.Entity.Rp_Line; +import com.realnet.report_builder.Entity.Rp_builder; +import com.realnet.report_builder.Repository.ReportRepository; +import com.realnet.report_builder.Service.Report_builderService; + +@RestController +public class Report_buildercontroller { + + @Autowired + private Report_builderService report_builderService; + + @Autowired + private ReportRepository reportRepository; + + // save report builder + @PostMapping("/Report_builder") + + public Rp_builder Savedata(@RequestBody Rp_builder dashbord_Header) { + Rp_builder dash = report_builderService.Savedata(dashbord_Header) ; + return dash; + } + + // get all report builder + @GetMapping("/Report_builder") + public List getdetails() { + List dash = report_builderService.getdetails(); + return dash; + } + + // get all report line + @GetMapping("/Report_line") + public List get_all_lines() { + List dash = report_builderService.get_all_lines(); + return dash; + } + + + + // get report builder by module id + @GetMapping("/get_by_module_id") + public List get_by_module_id(@RequestParam(value = "module_id") int module_id) { + + List module = report_builderService.get_by_module_id(module_id); + return module; + + } + + // get report builder by id + @GetMapping("/Report_builder/{id}") + public Rp_builder getdetailsbyId(@PathVariable int id ) { + Rp_builder dash = report_builderService.getdetailsbyId(id); + return dash; + } + + // update report builder by id + @PutMapping("/Report_builder/{id}") + public Rp_builder update_dashboard_header(@PathVariable int id,@RequestBody Rp_builder dashbord_Header) { + Rp_builder dash = report_builderService.update_dashboard_header(id,dashbord_Header); + return dash; + } + +// update report builder line by id + + @PutMapping("/Report_line/{id}") + public Rp_Line update_Dashbord1_Lineby_id(@PathVariable int id, + @RequestBody Rp_Line dashbord1_Line ) { + + Rp_Line dash = report_builderService.update_Dashbord1_Lineby_id(id,dashbord1_Line); + return dash; + + } + + // save report line + @PostMapping("/Report_line") + public Rp_Line update_Dashbord1_Line(@RequestBody Rp_Line dashbord1_Line ) { + Rp_Line dash1 = report_builderService.update_Dashbord1_Line(dashbord1_Line); + return dash1; + } + + // delete report builder by id + @DeleteMapping("/Report_builder/{id}") + public void delete_by_id(@PathVariable int id ) { + report_builderService.delete_by_id(id); + + } + +// GET NUMBERS OF IDLIST of report builder + + @GetMapping("/GetReportBuilderOb") + public List getobject() { + return this.reportRepository.findCount(); + + } + + @PostMapping("/getQuery") + public ResponseEntity getQueryBydata(@RequestBody ReportQueryDataDTO data){ + List tables = data.getTables(); + List columns = data.getColumns(); + List conditions = data.getConditions(); + + String Query = "SELECT "; + for(int i=0;i tables; + private List columns; + private List conditions; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Entity/Rp_Line.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Entity/Rp_Line.java new file mode 100644 index 0000000..3538f34 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Entity/Rp_Line.java @@ -0,0 +1,40 @@ +package com.realnet.report_builder.Entity; + + + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.Table; +import com.fasterxml.jackson.annotation.JsonBackReference; + +import lombok.Data; +import lombok.ToString; +@ToString(exclude = {"rp_builder"}) +@Data +@Entity +@Table +public class Rp_Line extends Rp_Who_collumn { + + + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Integer id; + + private String header_id; + + @Column(length = 5000) + private String Model; + + @JsonBackReference + @ManyToOne + private Rp_builder rp_builder; + + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Entity/Rp_Who_collumn.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Entity/Rp_Who_collumn.java new file mode 100644 index 0000000..10f00df --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Entity/Rp_Who_collumn.java @@ -0,0 +1,46 @@ +package com.realnet.report_builder.Entity; + +import java.io.Serializable; +import java.util.Date; +import javax.persistence.Column; +import javax.persistence.EntityListeners; +import javax.persistence.MappedSuperclass; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import lombok.Data; + +@Data +@MappedSuperclass +@EntityListeners(AuditingEntityListener.class) +public class Rp_Who_collumn implements Serializable{ + + private static final long serialVersionUID = 1L; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "CREATED_AT", nullable = false, updatable = false) + @CreatedDate + private Date createdAt; + + // @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createdAt; + + + @Column(name = "CREATED_BY", updatable = false) + private Long createdBy; + + @Column(name = "UPDATED_BY") + private Long updatedBy; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "UPDATED_AT", nullable = false) + @LastModifiedDate + private Date updatedAt; + + @Column(name = "ACCOUNT_ID") + private Long accountId; + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Entity/Rp_builder.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Entity/Rp_builder.java new file mode 100644 index 0000000..d769a61 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Entity/Rp_builder.java @@ -0,0 +1,69 @@ +package com.realnet.report_builder.Entity; + + + +import java.util.ArrayList; +import java.util.List; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.OneToMany; + +import com.fasterxml.jackson.annotation.JsonManagedReference; + +import lombok.Data; +import lombok.ToString; + +@ToString(exclude = {"rp_Line"}) +@Entity +@Data +public class Rp_builder extends Rp_Who_collumn{ + + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "ID") + private Integer id; + + +// ============================== + @Column(name = "IS_BUILD") + private boolean build; + + @Column(name = "MENU_NAME") + private String menuName; + + @Column(name = "IS_UPDATED") + private boolean updated; + + private String tech_Stack; + + private String report_builder_name; + + private int module_id; + + private String description; + + private String secuirity_profile; + + private String page_size; + + + + @JsonManagedReference + @OneToMany( cascade=CascadeType.ALL, mappedBy ="rp_builder" ) + private List rp_Line = new ArrayList<>(); + + + + + + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Repository/ReportRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Repository/ReportRepository.java new file mode 100644 index 0000000..6fb79f0 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Repository/ReportRepository.java @@ -0,0 +1,25 @@ +package com.realnet.report_builder.Repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.report_builder.Entity.Rp_builder; + +@Repository +public interface ReportRepository extends CrudRepository { + + Rp_builder findById(int id); + + @Query(value = " select * from rp_builder where module_id=?1", nativeQuery = true) + List findbyModule(int module_id); + + @Query(value = "select count(id) from rp_builder", nativeQuery = true) + public List findCount(); + + @Query(value = "SELECT count(id) FROM rp_builder where module_id=?1", nativeQuery = true) + Object count_report(Integer moduleId); + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Repository/Rp_lineRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Repository/Rp_lineRepository.java new file mode 100644 index 0000000..400a032 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Repository/Rp_lineRepository.java @@ -0,0 +1,13 @@ +package com.realnet.report_builder.Repository; + +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.report_builder.Entity.Rp_Line; + +@Repository +public interface Rp_lineRepository extends CrudRepository { + + Rp_Line findById(int id); + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Service/Report_builderService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Service/Report_builderService.java new file mode 100644 index 0000000..dd8e6d0 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Service/Report_builderService.java @@ -0,0 +1,81 @@ +package com.realnet.report_builder.Service; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.realnet.report_builder.Entity.Rp_Line; +import com.realnet.report_builder.Entity.Rp_builder; +import com.realnet.report_builder.Repository.ReportRepository; +import com.realnet.report_builder.Repository.Rp_lineRepository; + +@Service +public class Report_builderService { + + @Autowired + private ReportRepository reportRepository; + + @Autowired + private Rp_lineRepository rp_lineRepository; + + public Rp_builder Savedata(Rp_builder dashbord_Header) { + return reportRepository.save(dashbord_Header); + } + + public List getdetails() { + // TODO Auto-generated method stub + return (List) reportRepository.findAll(); + } + + public Rp_builder getdetailsbyId(int id) { + // TODO Auto-generated method stub + return reportRepository.findById(id); + } + + public void delete_by_id(int id) { + // TODO Auto-generated method stub + reportRepository.deleteById(id); + } + + public Rp_builder update_dashboard_header(int id, Rp_builder rp) { + Rp_builder bi = reportRepository.findById(id); + + bi.setAccountId(rp.getAccountId()); + bi.setDescription(rp.getDescription()); + bi.setMenuName(rp.getMenuName()); + bi.setModule_id(rp.getModule_id()); + bi.setPage_size(rp.getPage_size()); + bi.setReport_builder_name(rp.getReport_builder_name()); + + return reportRepository.save(bi); + } + + public Rp_Line update_Dashbord1_Line(Rp_Line dashbord1_Line) { + // TODO Auto-generated method stub + return rp_lineRepository.save(dashbord1_Line); + } + + public List get_by_module_id(int module_id) { + // TODO Auto-generated method stub + return (List) reportRepository.findbyModule(module_id); + } + + public List get_all_lines() { + // TODO Auto-generated method stub + return (List) rp_lineRepository.findAll(); + } + + public Rp_Line update_Dashbord1_Lineby_id(int id, Rp_Line dashbord1_Line) { + + Rp_Line oldline = rp_lineRepository.findById(id); +// .orElseThrow(() -> new ResourceNotFoundException(Constant.NOT_FOUND_EXCEPTION + " :" + id)); + + oldline.setAccountId(dashbord1_Line.getAccountId()); + oldline.setHeader_id(dashbord1_Line.getHeader_id()); + oldline.setModel(dashbord1_Line.getModel()); + final Rp_Line newline = rp_lineRepository.save(oldline); + return newline; + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/session/Repository/TokenRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/session/Repository/TokenRepository.java new file mode 100644 index 0000000..cba5a8a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/session/Repository/TokenRepository.java @@ -0,0 +1,16 @@ +package com.realnet.session.Repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.realnet.session.entity.Token; + +public interface TokenRepository extends JpaRepository { + List findByUsername(String username); + + List findByToken(String token); + + + void deleteByUsername(String username); +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/session/Service/TokenBlacklistService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/session/Service/TokenBlacklistService.java new file mode 100644 index 0000000..1da27f5 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/session/Service/TokenBlacklistService.java @@ -0,0 +1,69 @@ +package com.realnet.session.Service; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.realnet.session.Repository.TokenRepository; +import com.realnet.session.entity.Token; + +@Service +public class TokenBlacklistService { + + @Autowired + private TokenRepository tokenRepository; + + private Set blacklistedTokens = new HashSet<>(); + + public void blacklistToken(String token) { + blacklistedTokens.add(token); + } + +// public boolean isTokenBlacklisted(String token) { +// return blacklistedTokens.contains(token); +// } + + private Map> userTokenBlacklist = new HashMap<>(); + + public void blacklistToken(String username, String token) { + userTokenBlacklist.computeIfAbsent(username, k -> new HashSet<>()).add(token); + } + + // Blacklist all tokens for a given user + public void blacklistTokensForUser(String username) { + // Fetch all tokens from the DB for the user + List tokensToBlacklist = tokenRepository.findByUsername(username); + + // Add all tokens to the blacklist + for (Token token : tokensToBlacklist) { + blacklistedTokens.add(token.getToken()); + } + + tokenRepository.findByUsername(username).forEach(user -> tokenRepository.delete(user)); + // Delete tokens from DB after blacklisting +// tokenRepository.deleteByUsername(username); + } + + public boolean isTokenBlacklisted(String token) { + // Iterate over blacklisted tokens and check if this token is blacklisted + + boolean istoken = false; + boolean anyMatch = userTokenBlacklist.values().stream().anyMatch(set -> set.contains(token)); + if (anyMatch) { + istoken = anyMatch; + + } + List list = tokenRepository.findByToken(token); + + if (list.isEmpty()) { + istoken = true; + } + + return istoken; + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/session/controller/SessionController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/session/controller/SessionController.java new file mode 100644 index 0000000..61902c5 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/session/controller/SessionController.java @@ -0,0 +1,528 @@ +package com.realnet.session.controller; + +import java.io.IOException; +import java.net.InetAddress; +import java.net.NetworkInterface; +import java.net.UnknownHostException; +import java.security.SecureRandom; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Optional; +import java.util.Set; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.slf4j.MDC; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.session.SessionInformation; +import org.springframework.security.core.session.SessionRegistry; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.context.request.RequestContextHolder; + +import com.realnet.config.EmailService; +import com.realnet.config.TokenProvider; +import com.realnet.fnd.response.EntityResponse; +import com.realnet.fnd.response.OperationResponse; +import com.realnet.fnd.response.OperationResponse.ResponseStatusEnum; +import com.realnet.logging1.entity.AppUserLog; +import com.realnet.logging1.service.LoggingService; +import com.realnet.session.Repository.TokenRepository; +import com.realnet.session.Service.TokenBlacklistService; +import com.realnet.session.entity.AboutWork; +import com.realnet.session.entity.SessionItem; +import com.realnet.session.entity.Token; +import com.realnet.session.response.SessionResponse; +import com.realnet.users.entity.LoginUser; +import com.realnet.users.entity.Role; +import com.realnet.users.entity.Sys_Accounts; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.entity1.AppUserRole; +import com.realnet.users.entity1.AppUserSessions; +import com.realnet.users.entity1.Registration; +import com.realnet.users.response.MessageResponse; +import com.realnet.users.service.AboutWorkService; +import com.realnet.users.service1.AppUserServiceImpl; +import com.realnet.users.service1.AppUserSessionsServiceImpl; +import com.realnet.users.service1.SysAccountService; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiResponse; +import io.swagger.annotations.ApiResponses; +import springfox.documentation.annotations.ApiIgnore; + +/* +This is a dummy rest controller, for the purpose of documentation (/session) path is map to a filter + - This will only be invoked if security is disabled + - If Security is enabled then SessionFilter.java is invoked + - Enabling and Disabling Security is done at config/applicaton.properties 'security.ignored=/**' +*/ +//@ApiIgnore +@Api(tags = { "Authentication" }) +//@CrossOrigin(origins = "http://localhost:4200", maxAge = 3600) +@CrossOrigin("*") +@RestController +@RequestMapping(value = "/token", produces = MediaType.APPLICATION_JSON_VALUE) +public class SessionController { + + private final Logger LOGGER = LoggerFactory.getLogger(getClass()); + + @Autowired + private AuthenticationManager authenticationManager; + + @Autowired + private LoggingService loggingService; + @Autowired + private TokenProvider jwtTokenUtil; + + @Autowired + private AppUserServiceImpl appUserServiceImpl; + + @Autowired + private AppUserServiceImpl userService; + + @Autowired + private EmailService emailService; + + @Autowired + private AboutWorkService aboutworkservice; + + @Autowired + private SysAccountService sysAccountService; + + @Autowired + private AppUserSessionsServiceImpl appUserSessionsServiceImpl; + +// @ApiIgnore + @ApiResponses(value = { + @ApiResponse(code = 200, message = "Will return a security token, which must be passed in every request", response = SessionResponse.class) }) + @RequestMapping(value = "/session", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE) + @ResponseBody + public SessionResponse newSession(@RequestBody LoginUser loginRequest, HttpServletRequest request, + HttpSession session1) { + + AppUser user = userService.findUserByEmail(loginRequest.getEmail()); + + Boolean active = user.isActive(); + if (active == null || !active) { + SessionResponse resp = new SessionResponse(); + resp.setOperationStatus(ResponseStatusEnum.ERROR); + resp.setOperationMessage("Inactive User"); + return resp; + } + + Long account_id = user.getAccount().getAccount_id(); + Sys_Accounts account = sysAccountService.getBYId(account_id); + Boolean activeAcc = account.getActive(); + if (activeAcc == null || !activeAcc) { + SessionResponse resp = new SessionResponse(); + resp.setOperationStatus(ResponseStatusEnum.ERROR); + resp.setOperationMessage("Inactive Account"); + return resp; + } + + try { + + final Authentication authentication = authenticationManager.authenticate( + new UsernamePasswordAuthenticationToken(loginRequest.getEmail(), loginRequest.getPassword())); + + SecurityContextHolder.getContext().setAuthentication(authentication); + + final String token = jwtTokenUtil.generateToken(authentication); + + System.out.println("authentication.getName() =>" + authentication.getName()); // email + + AppUser loggedInUser = userService.getLoggedInUser(); + MDC.put("USER", loggedInUser.getUsername()); + AppUserRole usrGrp = loggedInUser.getUsrGrp(); + String groupName = usrGrp.getGroupName(); + // System.out.println("/session logged in user -> " + loggedInUser); + +// List loggedInUserRoles = new ArrayList(); + StringBuilder roleString = new StringBuilder(); + roleString.append(groupName); +// .forEach(role -> { +//// loggedInUserRoles.add(role.getName()); +// roleString.append(role.getName() + ", "); +// }); + // String role = roleString.toString().substring(0, + // roleString.toString().lastIndexOf(",")); + // List roleList = Arrays.asList(role.split("\\s*,\\s*")); + + SessionResponse resp = new SessionResponse(); + SessionItem sessionItem = new SessionItem(); + sessionItem.setToken(token); + sessionItem.setUserId(loggedInUser.getUserId()); + sessionItem.setFullname(loggedInUser.getFullName()); + sessionItem.setFirstName(loggedInUser.getFullName()); + // sessionItem.setUsername(loggedInUser.getUsername()); + sessionItem.setEmail(loggedInUser.getEmail()); + // sessionItem.setRoles(roleList); + Set roles = loggedInUser.getRoles(); + List roleList = new ArrayList<>(); + for (Role ro : roles) { + roleList.add(ro.getDescription()); + } + sessionItem.setRoles(roleList); + // sessionItem.setRoles(loggedInUser.getUsrGrp().getGroupName()); + resp.setOperationStatus(ResponseStatusEnum.SUCCESS); + resp.setOperationMessage("Login Success"); + resp.setItem(sessionItem); + + InetAddress ip; + StringBuilder sb = new StringBuilder(); + try { + ip = InetAddress.getLocalHost(); + System.out.println("Current IP address : " + ip.getHostAddress()); + NetworkInterface network = NetworkInterface.getByInetAddress(ip); + byte[] mac = network.getHardwareAddress(); + System.out.print("Current MAC address : "); + + for (int i = 0; i < mac.length; i++) { + sb.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? ":" : "")); + } + System.out.println(sb.toString()); + } catch (Exception e) { + System.out.println("error is .." + e); + } + + AppUserSessions session = new AppUserSessions(); + + session.setUserId(loggedInUser); + session.setLastAccessDate(new Date()); + session.setLogintime(new Date()); +// session.setLogouttime(new Date()); + session.setSessionId(RequestContextHolder.currentRequestAttributes().getSessionId()); + // String ip = request.getHeader("X-Forward-For"); + // String ip = getClientIp(); + // String ip = getClientIp(request); + String ip1 = request.getRemoteAddr(); + session.setClientIp(ip1); + session.setMacid(sb.toString()); + appUserSessionsServiceImpl.add(session); + AppUserLog s = loggingService.generate(loggedInUser); + // AppUserLog s = null; + if (s != null) { + session1.setAttribute("LogginLevel", s.getLogLevel()); + session1.setAttribute("generate_log", s.getGenerateLog()); + session1.setAttribute("LogFileName", s.getLogFileName()); + } else { + session1.setAttribute("generate_log", "N"); + } + + saveTokenForUser(user.getUsername(), user.getUserId(), token); + + return resp; + } catch (Exception e) { + LOGGER.error("Login Failed " + e.getMessage()); + System.out.print(e.getMessage()); + SessionResponse resp = new SessionResponse(); + resp.setOperationStatus(ResponseStatusEnum.ERROR); + resp.setOperationMessage("Login Failed"); + return resp; + } + + } + + @Autowired + private TokenRepository tokenRepository; // Injecting the token repository + + // Method to save the token + public void saveTokenForUser(String username, Long userId, String token) { + Token newToken = new Token(); + newToken.setUsername(username); + newToken.setUserId(userId); + + newToken.setToken(token); + newToken.setCreatedAt(LocalDateTime.now()); + tokenRepository.save(newToken); // Save token in DB + } + +// //logout +// @GetMapping("/logout") +// public ResponseEntity logoutUser(@RequestParam("sessionId") String sessionId) throws IOException { +// // Find the session by session ID in the database +// AppUserSessions userSession = appUserSessionsServiceImpl.findBySessionId(sessionId); +// +// if (userSession != null) { +// +// +// if (userSession.getLogouttime() != null) { +// +// return new ResponseEntity<>("Session not found or already invalidated", HttpStatus.BAD_REQUEST); +// } +// +// // Update logout time in the database and mark the session as invalid +// userSession.setLogouttime(new Date()); +// appUserSessionsServiceImpl.update(userSession); // Update the session record in the database +// +// +// // Clear the Spring Security context to ensure the user is logged out at the security level +// SecurityContextHolder.clearContext(); +// +// return new ResponseEntity<>("Logged out successfully, session ID: " + sessionId, HttpStatus.OK); +// } else { +// // If the session is not found in the database +// return new ResponseEntity<>("Invalid session ID", HttpStatus.NOT_FOUND); +// } +// } + + // logout + @GetMapping("/logout") + public ResponseEntity logoutUser(HttpSession session2) throws IOException { + +// if(session1.getAttribute("generate_log").equals("Y")) { +// Path root = FileSystems.getDefault().getPath("").toAbsolutePath(); +// Path filePath = Paths.get(root.toString(),"logs",session1.getAttribute("LogFileName").toString()); +// File f=filePath.toFile(); +// FileWriter fw = new FileWriter(f,true); +// fw.write("Logout\n"); +// fw.close(); +// } + +// String sessionId = RequestContextHolder.currentRequestAttributes().getSessionId(); +// AppUserSessions session = appUserSessionsRepository.findBySessionId(session2.toString()); +// session.setLogouttime(new Date()); +// appUserSessionsServiceImpl.add(session); + return new ResponseEntity<>("Logged out succesfully", HttpStatus.OK); + } + // logout + + public String getClientIp(HttpServletRequest request) { + final String LOCALHOST_IPV4 = "127.0.0.1"; + final String LOCALHOST_IPV6 = "0:0:0:0:0:0:0:1"; + String ipAddress = request.getHeader("X-Forwarded-For"); + if (StringUtils.isEmpty(ipAddress) || "unknown".equalsIgnoreCase(ipAddress)) { + ipAddress = request.getHeader("Proxy-Client-IP"); + } + + if (StringUtils.isEmpty(ipAddress) || "unknown".equalsIgnoreCase(ipAddress)) { + ipAddress = request.getHeader("WL-Proxy-Client-IP"); + } + + if (StringUtils.isEmpty(ipAddress) || "unknown".equalsIgnoreCase(ipAddress)) { + ipAddress = request.getRemoteAddr(); + if (LOCALHOST_IPV4.equals(ipAddress) || LOCALHOST_IPV6.equals(ipAddress)) { + try { + InetAddress inetAddress = InetAddress.getLocalHost(); + ipAddress = inetAddress.getHostAddress(); + } catch (UnknownHostException e) { + System.out.println("error is .." + e); + } + } + } + + if (!StringUtils.isEmpty(ipAddress) && ipAddress.length() > 15 && ipAddress.indexOf(",") > 0) { + ipAddress = ipAddress.substring(0, ipAddress.indexOf(",")); + } + + return ipAddress; + } + + @ApiOperation(value = "Send Email For OTP") + @PostMapping("/user/send_email") + public ResponseEntity userviaadmin(HttpServletRequest request, @RequestBody Registration reg) { + String email = reg.getEmail(); + AppUser appUser = new AppUser(); + + AppUser user = userService.findUserByEmail(email); + if (user != null && user.isIsComplete()) { + return ResponseEntity.badRequest().body(new MessageResponse(email + " already exist")); + } else { + if (user != null && !user.isIsComplete()) { + appUser = user; + } +// Random random = new Random(); + SecureRandom random = new SecureRandom(); + + int otp = 100000 + random.nextInt(900000); + userService.adduserbyemail(appUser, String.valueOf(otp), email); + + String subject = "Email Verification"; + String url = String.valueOf(otp); + emailService.sendEmail(email, subject, url); + return new ResponseEntity<>(new EntityResponse("Otp send successfully"), HttpStatus.OK); + } + + } + +// RESEND OTP + @PostMapping("/user/resend_otp") + public ResponseEntity resendotp(@RequestParam String email) { + + AppUser user = userService.findUserByEmail(email); + if (user == null) { + return ResponseEntity.badRequest().body(new MessageResponse(email + " not exist")); + } else { +// Random random = new Random(); + SecureRandom random = new SecureRandom(); + + int otp = 100000 + random.nextInt(900000); + userService.resendotp(otp, email); + String subject = "Email Verification"; + String url = String.valueOf(otp); + emailService.sendEmail(email, subject, url); + return new ResponseEntity<>(new EntityResponse("resend Otp send successfully"), HttpStatus.OK); + } + + } + +// OTP VERIFICATION + @PostMapping("/user/otp_verification") + public ResponseEntity otpverfication(@RequestParam String email, @RequestParam String otp) { + email = email.replaceAll(" ", "+"); + AppUser user = userService.findUserByEmail(email); + if (user == null) { + return ResponseEntity.badRequest().body(new MessageResponse(user + " not exist")); + } + String random_no = user.getRandom_no(); + if (random_no.equalsIgnoreCase(otp)) { + return new ResponseEntity<>(new EntityResponse("OTP Verified"), HttpStatus.OK); + } else { + return new ResponseEntity<>(new EntityResponse("Wrong OTP"), HttpStatus.BAD_REQUEST); + } + } +// user Registration + + @PostMapping("/addOneAppUser") + public ResponseEntity addOneUser(@RequestBody Registration reg) { + System.out.println(reg); +// if (appUserRepository.findByEmail(reg.getEmail()) != null) { +// return ResponseEntity.badRequest().body(new MessageResponse("email already exist")); +// } + AppUser a = appUserServiceImpl.addOneUser(reg); + return new ResponseEntity<>(a, HttpStatus.OK); + } + + @ApiOperation(value = "Add new cluodnsure", response = OperationResponse.class) + @PostMapping("/aboutwork") + public AppUser addNewCustomer(@RequestBody AboutWork aboutWork) { + + System.out.println("about work controller started"); + + // save acccount info + AboutWork about = aboutworkservice.adddata(aboutWork); + Sys_Accounts sys = new Sys_Accounts(); + sys.setAccount_id(about.getId()); + sysAccountService.save(sys); + + // save user with accout id + AppUser user = new AppUser(); + user.setChangePassw(aboutWork.getPassword()); + user.setEmail(aboutWork.getEmail()); + user.setMob_no(aboutWork.getMobile()); + AppUser userResister = userService.userResister(user, about.getId()); + return userResister; + } + + // GET USER BY USERID // TOKEN FREE + @GetMapping("/getuser/{id}") + public ResponseEntity getChatUserById(@PathVariable Long id) { + AppUser u = appUserServiceImpl.getById(id).get(); + return new ResponseEntity<>(u, HttpStatus.OK); + } + +// all session logout + + @Autowired + private SessionRegistry sessionRegistry; + + @DeleteMapping("/api/logout-user/{userId}") + public String logoutUserSessions(@PathVariable Long userId) { + + Optional oneUser = userService.getOneUser(userId); + + if (!oneUser.isPresent()) { + return "User not found"; // Agar user nahi mila + + } + String username = oneUser.get().getUsername(); + // Get all logged-in users (principals) + List allPrincipals = sessionRegistry.getAllPrincipals(); + + for (Object principal : allPrincipals) { + if (principal instanceof org.springframework.security.core.userdetails.UserDetails) { + org.springframework.security.core.userdetails.UserDetails user = (org.springframework.security.core.userdetails.UserDetails) principal; + + if (user.getUsername().equals(username)) { + List sessions = sessionRegistry.getAllSessions(user, false); + for (SessionInformation session : sessions) { + session.expireNow(); // Expire the session + } + return "All sessions for user '" + username + "' have been logged out."; + } + } + + } + + return "User not found!.."; // Agar user nahi mila + } + + @Autowired + private TokenBlacklistService tokenBlacklistService; + + @PostMapping("/api/deactivate-user/{userId}") + public String deactivateUser(@PathVariable Long userId) { + Optional userOptional = userService.getOneUser(userId); + + if (!userOptional.isPresent()) { + return "User not found"; + } + + AppUser user = userOptional.get(); + user.setActive(false); // Set user as inactive + userService.insertOrSaveUser(user); // Save user state in the database + + // Step 1: Invalidate JWT Tokens (Blacklist) + String username = user.getUsername(); + tokenBlacklistService.blacklistTokensForUser(username); // Add all user tokens to blacklist + + // Step 2: Expire all sessions for the user + expireUserSessions(username); + + return "User '" + username + "' has been deactivated and logged out from all sessions."; + } + + private void expireUserSessions(String username) { + // Get all logged-in users (principals) + List allPrincipals = sessionRegistry.getAllPrincipals(); + + for (Object principal : allPrincipals) { + if (principal instanceof org.springframework.security.core.userdetails.UserDetails) { + org.springframework.security.core.userdetails.UserDetails userDetails = (org.springframework.security.core.userdetails.UserDetails) principal; + + // If username matches, expire all sessions + if (userDetails.getUsername().equals(username)) { + List sessions = sessionRegistry.getAllSessions(userDetails, false); + for (SessionInformation session : sessions) { + session.expireNow(); // Expire the session to log the user out + } + } + } + } + } + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/session/entity/AboutWork.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/session/entity/AboutWork.java new file mode 100644 index 0000000..e154e88 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/session/entity/AboutWork.java @@ -0,0 +1,32 @@ +package com.realnet.session.entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +import lombok.Data; + +@Data +@Entity +@Table(name = "Accounts") +public class AboutWork { + + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id ; + private String name; + + private String password; + private Long mobile; + private String email; + private String companyname; + private String pancard; + private String working; + private String managing_work; +// @OneToOne(mappedBy = "user",fetch = FetchType.LAZY, +// cascade = CascadeType.ALL) +// private User user; +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/session/entity/SessionItem.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/session/entity/SessionItem.java new file mode 100644 index 0000000..95cc277 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/session/entity/SessionItem.java @@ -0,0 +1,18 @@ +package com.realnet.session.entity; + +import java.util.List; + +import lombok.Data; + +@Data +public class SessionItem { + private String token; + private Long userId; + private String fullname; + private String username; + private String email; + private String firstName; + private List roles; + //private String roles; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/session/entity/Token.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/session/entity/Token.java new file mode 100644 index 0000000..c0d061d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/session/entity/Token.java @@ -0,0 +1,25 @@ +package com.realnet.session.entity; + +import javax.persistence.*; + +import lombok.Data; + +import java.time.LocalDateTime; + +@Entity +@Data +public class Token { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private Long userId; + private String username; + + private String token; + + private LocalDateTime createdAt; + + // Getters and setters +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/session/entity/VersionModel.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/session/entity/VersionModel.java new file mode 100644 index 0000000..db25839 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/session/entity/VersionModel.java @@ -0,0 +1,11 @@ +package com.realnet.session.entity; + +import lombok.Data; + +@Data // For Getters and Setters +public class VersionModel { + private String version = null; + private Integer major = null; + private Integer minor = null; + private Integer patch = null; +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/session/response/SessionResponse.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/session/response/SessionResponse.java new file mode 100644 index 0000000..181aa16 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/session/response/SessionResponse.java @@ -0,0 +1,15 @@ +package com.realnet.session.response; + +import com.realnet.fnd.response.OperationResponse; +import com.realnet.session.entity.SessionItem; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper=false) +public class SessionResponse extends OperationResponse { + @ApiModelProperty(required = true, value = "") + private SessionItem item; +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sqlworkbech/Controller/SqlController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sqlworkbech/Controller/SqlController.java new file mode 100644 index 0000000..f9a0250 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sqlworkbech/Controller/SqlController.java @@ -0,0 +1,74 @@ +package com.realnet.sqlworkbech.Controller; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.sqlworkbech.Entity.SqlModel; +import com.realnet.sqlworkbech.Repository.SqlRepository; + +@RequestMapping("/SqlworkbenchSqlcont") +@RestController +public class SqlController { + + @Autowired + private SqlRepository sqlRepository; + +// CREATE DATA + @PostMapping("/sql") + public SqlModel create(@RequestBody SqlModel sqlModel) { + SqlModel sql = sqlRepository.save(sqlModel); + return sql; + } + +// UPDATE BY ID + @PutMapping("/sql/{id}") + public SqlModel update(@PathVariable Long id, @RequestBody SqlModel sqlModel) { + SqlModel newsq = sqlRepository.findById(id).orElseThrow(null); + newsq.setConn_string(sqlModel.getConn_string()); + newsq.setDriver_class_name(sqlModel.getDriver_class_name()); + newsq.setUsername(sqlModel.getUsername()); + newsq.setPassword(sqlModel.getPassword()); + newsq.setName(sqlModel.getName()); + newsq.setType(sqlModel.getType()); + newsq.setDescription(sqlModel.getDescription()); + newsq.setActive(sqlModel.isActive()); + + SqlModel sql = sqlRepository.save(newsq); + return sql; + } + +// GET BY ID + @GetMapping("/sql/{id}") + public SqlModel getbyid(@PathVariable Long id) { + SqlModel newsq = sqlRepository.findById(id).orElseThrow(null); + return newsq; + } + +// GET ALL + @PreAuthorize("hasAnyRole('ADMIN','ProjectManager','SYSADMIN')") + @GetMapping("/sql") + public ResponseEntity getall() { + List sql = sqlRepository.findAll(); + return new ResponseEntity<>(sql, HttpStatus.OK); + } + +// DELETE BY ID + @DeleteMapping("/sql/{id}") + public void delete(@PathVariable Long id) { + SqlModel newsq = sqlRepository.findById(id).orElseThrow(null); + sqlRepository.delete(newsq); + + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sqlworkbech/Entity/SqlModel.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sqlworkbech/Entity/SqlModel.java new file mode 100644 index 0000000..e3212a3 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sqlworkbech/Entity/SqlModel.java @@ -0,0 +1,29 @@ +package com.realnet.sqlworkbech.Entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +import lombok.Data; + +@Entity +@Data +public class SqlModel { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String conn_string; + private String username; + private String password; + private String driver_class_name; + + private String name; + private String type; + private String description; + private boolean active; + + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sqlworkbech/Repository/SqlRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sqlworkbech/Repository/SqlRepository.java new file mode 100644 index 0000000..4f0877f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sqlworkbech/Repository/SqlRepository.java @@ -0,0 +1,13 @@ +package com.realnet.sqlworkbech.Repository; + +import org.checkerframework.common.util.report.qual.ReportCreation; +import org.hibernate.metamodel.model.convert.spi.JpaAttributeConverter; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.sqlworkbech.Entity.SqlModel; + +@Repository +public interface SqlRepository extends JpaRepository{ + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/startCoder/Controller/StarCoderController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/startCoder/Controller/StarCoderController.java new file mode 100644 index 0000000..15007da --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/startCoder/Controller/StarCoderController.java @@ -0,0 +1,22 @@ +package com.realnet.startCoder.Controller; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.startCoder.Services.StarCoderService; + +@RestController +@RequestMapping("/codegen") +public class StarCoderController { + + @Autowired + private StarCoderService starCoderService; + + @PostMapping + public String generateCode(@RequestBody String prompt) { + return starCoderService.generateCode(prompt); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/startCoder/Services/StarCoderService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/startCoder/Services/StarCoderService.java new file mode 100644 index 0000000..8f8adb7 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/startCoder/Services/StarCoderService.java @@ -0,0 +1,27 @@ +package com.realnet.startCoder.Services; + +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +@Service +public class StarCoderService { + + private static final String MODEL_API_URL = "http://localhost:8000"; + + public String generateCode(String prompt) { + RestTemplate restTemplate = new RestTemplate(); + HttpHeaders headers = new HttpHeaders(); + headers.add("Content-Type", "application/json"); + + String requestBody = String.format("{\"inputs\": \"%s\"}", prompt); + HttpEntity request = new HttpEntity<>(requestBody, headers); + + ResponseEntity response = restTemplate.exchange(MODEL_API_URL, HttpMethod.POST, request, String.class); + + return response.getBody(); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/stepperworkflow/Controllers/Stepper_table_configController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/stepperworkflow/Controllers/Stepper_table_configController.java new file mode 100644 index 0000000..85aa6d8 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/stepperworkflow/Controllers/Stepper_table_configController.java @@ -0,0 +1,103 @@ +package com.realnet.stepperworkflow.Controllers; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.fnd.response.EntityResponse; +import com.realnet.stepperworkflow.Entity.Stepper_table_config; +import com.realnet.stepperworkflow.Services.Stepper_table_configService; + +@RequestMapping(value = "/Stepper_table_config") +@CrossOrigin("*") +@RestController +public class Stepper_table_configController { + @Autowired + private Stepper_table_configService Service; + + @Value("${projectPath}") + private String projectPath; + + @PostMapping("/Stepper_table_config") + public Stepper_table_config Savedata(@RequestParam Integer stepperId, @RequestParam Integer tableId, + @RequestParam String tableName) { + Stepper_table_config save = Service.Savedata(stepperId, tableId, tableName); + + System.out.println("data saved..." + save + "\n"); + + return save; + } + + @PutMapping("/Stepper_table_config/{id}") + public Stepper_table_config update(@RequestBody Stepper_table_config data, @PathVariable Integer id) { + Stepper_table_config update = Service.update(data, id); + System.out.println("data update..." + update); + return update; + } + +// get all with pagination + @GetMapping("/Stepper_table_config/getall/page") + public Page getall(@RequestParam(value = "page", required = false) Integer page, + @RequestParam(value = "size", required = false) Integer size) { + Pageable paging = PageRequest.of(page, size); + Page get = Service.getAllWithPagination(paging); + + return get; + + } + + @GetMapping("/Stepper_table_config/tableId") + public List getAll(@RequestParam Integer stepper_id, @RequestParam Integer table_id) { + List get = Service.getAll(stepper_id, table_id); + return get; + } + + @GetMapping("/Stepper_table_config/stepId/{stepper_id}") + public List getAll(@PathVariable Integer stepper_id) { + List get = Service.getAll(stepper_id); + return get; + } + + @GetMapping("/Stepper_table_config") + public List getdetails() { + List get = Service.getdetails(); + return get; + } +// get all without authentication + + @GetMapping("/token/Stepper_table_config") + public List getallwioutsec() { + List get = Service.getdetails(); + return get; + } + + @GetMapping("/Stepper_table_config/{id}") + public Stepper_table_config getdetailsbyId(@PathVariable Integer id) { + Stepper_table_config get = Service.getdetailsbyId(id); + return get; + } + + @DeleteMapping("/Stepper_table_config/{id}") + public ResponseEntity delete_by_id(@PathVariable Integer id) { + Service.delete_by_id(id); + return new ResponseEntity<>(new EntityResponse("Deleted"), HttpStatus.OK); + + } + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/stepperworkflow/Controllers/Stepper_workflowController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/stepperworkflow/Controllers/Stepper_workflowController.java new file mode 100644 index 0000000..e350cb7 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/stepperworkflow/Controllers/Stepper_workflowController.java @@ -0,0 +1,90 @@ +package com.realnet.stepperworkflow.Controllers; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.fnd.response.EntityResponse; +import com.realnet.stepperworkflow.Entity.Stepper_workflow; +import com.realnet.stepperworkflow.Services.Stepper_workflowService; + +@RequestMapping(value = "/Stepper_workflow") +@CrossOrigin("*") +@RestController +public class Stepper_workflowController { + @Autowired + private Stepper_workflowService Service; + + @Value("${projectPath}") + private String projectPath; + + @PostMapping("/Stepper_workflow") + public Stepper_workflow Savedata(@RequestBody Stepper_workflow data) { + Stepper_workflow save = Service.Savedata(data); + + System.out.println("data saved..." + save); + + return save; + } + + @PutMapping("/Stepper_workflow/{id}") + public Stepper_workflow update(@RequestBody Stepper_workflow data, @PathVariable Integer id) { + Stepper_workflow update = Service.update(data, id); + System.out.println("data update..." + update); + return update; + } + +// get all with pagination + @GetMapping("/Stepper_workflow/getall/page") + public Page getall(@RequestParam(value = "page", required = false) Integer page, + @RequestParam(value = "size", required = false) Integer size) { + Pageable paging = PageRequest.of(page, size); + Page get = Service.getAllWithPagination(paging); + + return get; + + } + + @GetMapping("/Stepper_workflow") + public List getdetails() { + List get = Service.getdetails(); + return get; + } +// get all without authentication + + @GetMapping("/token/Stepper_workflow") + public List getallwioutsec() { + List get = Service.getdetails(); + return get; + } + + @GetMapping("/Stepper_workflow/{id}") + public Stepper_workflow getdetailsbyId(@PathVariable Integer id) { + Stepper_workflow get = Service.getdetailsbyId(id); + return get; + } + + @DeleteMapping("/Stepper_workflow/{id}") + public ResponseEntity delete_by_id(@PathVariable Integer id) { + Service.delete_by_id(id); + return new ResponseEntity<>(new EntityResponse("Deleted"), HttpStatus.OK); + + } + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/stepperworkflow/Entity/Stepper_table_config.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/stepperworkflow/Entity/Stepper_table_config.java new file mode 100644 index 0000000..653f364 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/stepperworkflow/Entity/Stepper_table_config.java @@ -0,0 +1,30 @@ +package com.realnet.stepperworkflow.Entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +import com.realnet.WhoColumn.Entity.Extension; + +import lombok.Data; + +@Entity +@Data +public class Stepper_table_config extends Extension { + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Integer id; + + private String table_name; + + private int table_id; + + private int stepper_id; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/stepperworkflow/Entity/Stepper_workflow.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/stepperworkflow/Entity/Stepper_workflow.java new file mode 100644 index 0000000..041e0a2 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/stepperworkflow/Entity/Stepper_workflow.java @@ -0,0 +1,33 @@ +package com.realnet.stepperworkflow.Entity; + import lombok.*; +import com.realnet.WhoColumn.Entity.Extension; + import javax.persistence.*; + import java.time.LocalDateTime; + import java.util.*; + + + + + + + @Entity + @Data + public class Stepper_workflow extends Extension { + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Integer id; + +private String name; + +@Column(length = 2000) +private String description; + +private boolean active; + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/stepperworkflow/Repository/Stepper_table_configRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/stepperworkflow/Repository/Stepper_table_configRepository.java new file mode 100644 index 0000000..edf8b1a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/stepperworkflow/Repository/Stepper_table_configRepository.java @@ -0,0 +1,30 @@ +package com.realnet.stepperworkflow.Repository; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import org.springframework.stereotype.Repository; +import java.util.*; + +import com.realnet.stepperworkflow.Entity.Stepper_table_config; + +@Repository +public interface Stepper_table_configRepository extends JpaRepository { + + @Query(value = "select * from stepper_table_config where created_by=?1", nativeQuery = true) + List findAll(Long creayedBy); + + @Query(value = "select * from stepper_table_config where created_by=?1", nativeQuery = true) + Page findAll(Pageable page, Long creayedBy); + + @Query(value = "select * from stepper_table_config where stepper_id=?1 && table_id=?2", nativeQuery = true) + List getAllBysteAndTbId(Integer stepper_id, Integer table_id); + + @Query(value = "select * from stepper_table_config where stepper_id=?1", nativeQuery = true) + List getAllBystepId(Integer stepper_id); + + @Query(value = "select * from stepper_table_config where stepper_id=?1 && table_name=?2 order by id desc", nativeQuery = true) + Stepper_table_config getBystepIdAndtabname(Integer stepper_id, String table_name); +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/stepperworkflow/Repository/Stepper_workflowRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/stepperworkflow/Repository/Stepper_workflowRepository.java new file mode 100644 index 0000000..9ed5f5f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/stepperworkflow/Repository/Stepper_workflowRepository.java @@ -0,0 +1,21 @@ +package com.realnet.stepperworkflow.Repository; + +import java.util.List; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import com.realnet.stepperworkflow.Entity.Stepper_workflow; + +@Repository +public interface Stepper_workflowRepository extends JpaRepository { + + @Query(value = "select * from stepper_workflow where created_by=?1", nativeQuery = true) + List findAll(Long creayedBy); + + @Query(value = "select * from stepper_workflow where created_by=?1", nativeQuery = true) + Page findAll(Pageable page, Long creayedBy); +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/stepperworkflow/Services/Stepper_table_configService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/stepperworkflow/Services/Stepper_table_configService.java new file mode 100644 index 0000000..c6b4695 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/stepperworkflow/Services/Stepper_table_configService.java @@ -0,0 +1,90 @@ +package com.realnet.stepperworkflow.Services; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import com.realnet.stepperworkflow.Entity.Stepper_table_config; +import com.realnet.stepperworkflow.Repository.Stepper_table_configRepository; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.service1.AppUserServiceImpl; + +@Service +public class Stepper_table_configService { + @Autowired + private Stepper_table_configRepository Repository; + @Autowired + private AppUserServiceImpl userService; + + public Stepper_table_config Savedata(Integer stepperId, Integer tableId, String tableName) { + + Stepper_table_config config = Repository.getBystepIdAndtabname(stepperId, tableName); + + Stepper_table_config data = config != null ? config : new Stepper_table_config(); + + data.setStepper_id(stepperId); + data.setTable_id(tableId); + data.setTable_name(tableName); + + data.setUpdatedBy(getUser().getUserId()); + data.setCreatedBy(getUser().getUserId()); + data.setAccountId(getUser().getAccount().getAccount_id()); + Stepper_table_config save = Repository.save(data); + return save; + } + +// get all with pagination + public Page getAllWithPagination(Pageable page) { + return Repository.findAll(page, getUser().getUserId()); + } + + public List getdetails() { + List all = Repository.findAll(getUser().getUserId()); + + return all; + } + +// get ALl By table Id and stepper Id + public List getAll(Integer stepper_id, Integer table_id) { + List all = Repository.getAllBysteAndTbId(stepper_id, table_id); + + return all; + } + +// get ALl By table Id and stepper Id + public List getAll(Integer stepper_id) { + List all = Repository.getAllBystepId(stepper_id); + + return all; + } + + public Stepper_table_config getdetailsbyId(Integer id) { + return Repository.findById(id).get(); + } + + public void delete_by_id(Integer id) { + Repository.deleteById(id); + } + + public Stepper_table_config update(Stepper_table_config data, Integer id) { + Stepper_table_config old = Repository.findById(id).get(); + old.setTable_name(data.getTable_name()); + + old.setTable_id(data.getTable_id()); + + old.setStepper_id(data.getStepper_id()); + + final Stepper_table_config test = Repository.save(old); + data.setUpdatedBy(getUser().getUserId()); + return test; + } + + public AppUser getUser() { + AppUser user = userService.getLoggedInUser(); + return user; + + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/stepperworkflow/Services/Stepper_workflowService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/stepperworkflow/Services/Stepper_workflowService.java new file mode 100644 index 0000000..5b3b2f5 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/stepperworkflow/Services/Stepper_workflowService.java @@ -0,0 +1,76 @@ +package com.realnet.stepperworkflow.Services; + +import com.realnet.stepperworkflow.Repository.Stepper_workflowRepository; +import com.realnet.stepperworkflow.Entity.Stepper_workflow; +import java.util.*; + +import org.springframework.beans.factory.annotation.Autowired; +import com.realnet.SequenceGenerator.Service.SequenceService; +import org.springframework.data.domain.Page; +import com.realnet.realm.Entity.Realm; +import com.realnet.realm.Services.RealmService; +import org.springframework.data.domain.Pageable; +import org.springframework.http.*; +import com.realnet.users.service1.AppUserServiceImpl; +import com.realnet.users.entity1.AppUser; + +import org.springframework.stereotype.Service; + +@Service +public class Stepper_workflowService { + @Autowired + private Stepper_workflowRepository Repository; + @Autowired + private AppUserServiceImpl userService; + @Autowired + private RealmService realmService; + + public Stepper_workflow Savedata(Stepper_workflow data) { + + data.setUpdatedBy(getUser().getUserId()); + data.setCreatedBy(getUser().getUserId()); + data.setAccountId(getUser().getAccount().getAccount_id()); + + Stepper_workflow save = Repository.save(data); + return save; + } + +// get all with pagination + public Page getAllWithPagination(Pageable page) { + return Repository.findAll(page, getUser().getUserId()); + } + + public List getdetails() { + List realm = realmService.findByUserId(getUser().getUserId()); + List all = Repository.findAll(getUser().getUserId()); + + return all; + } + + public Stepper_workflow getdetailsbyId(Integer id) { + return Repository.findById(id).get(); + } + + public void delete_by_id(Integer id) { + Repository.deleteById(id); + } + + public Stepper_workflow update(Stepper_workflow data, Integer id) { + Stepper_workflow old = Repository.findById(id).get(); + old.setName(data.getName()); + + old.setDescription(data.getDescription()); + + old.setActive(data.isActive()); + + final Stepper_workflow test = Repository.save(old); + data.setUpdatedBy(getUser().getUserId()); + return test; + } + + public AppUser getUser() { + AppUser user = userService.getLoggedInUser(); + return user; + + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/controller/SysParamController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/controller/SysParamController.java new file mode 100644 index 0000000..45a6661 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/controller/SysParamController.java @@ -0,0 +1,218 @@ +package com.realnet.sysparameter.controller; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.servlet.http.HttpSession; +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; +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.multipart.MultipartFile; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.common.net.HttpHeaders; +import com.realnet.exceptions.ResourceNotFoundException; +import com.realnet.sysparameter.entity.SysParamEntity; +import com.realnet.sysparameter.entity.SysParamUpload; +import com.realnet.sysparameter.repository.SysParamRepository; +import com.realnet.sysparameter.service.SysParamService; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; + +@RestController +@RequestMapping(value = "/sysparam") +@Api(tags = { "sysparameter" }) +public class SysParamController { + + @Autowired + private SysParamService sysparamService; + + @Autowired + private SysParamRepository sysParamRepo; + + @Value("${projectPath}") + private String projectPath; + + // GET BY ID + @ApiOperation(value = "Get A system parameters", response = SysParamEntity.class) + @GetMapping("/getSysParams/{id}") + public ResponseEntity getSystemParamDetails(@PathVariable(value = "id") int id) { + SysParamEntity sysparameter = sysparamService.getById(id); + if (sysparameter == null) { + throw new ResourceNotFoundException("system parameter not found with id " + id); + } + return ResponseEntity.ok().body(sysparameter); + } + + // ADD SYSTEM PARAMETER + @ApiOperation(value = "Add New system parameters") + @PostMapping(value = "/addSysParams", consumes = { "application/json" }) + public ResponseEntity saveFavourite(@RequestBody SysParamEntity sysparam, HttpSession session1) + throws IOException { + + SysParamEntity savedsysparam = sysparamService.save(sysparam); + System.out.println("save system parameter id" + savedsysparam); + + if (savedsysparam == null) { + throw new ResourceNotFoundException("system parameter not saved "); + } + return ResponseEntity.ok().body(savedsysparam); + } + + // UPDATE + @ApiOperation(value = "update a system parameters", response = SysParamEntity.class) + @PutMapping("/updateSysParams/{id}") + public ResponseEntity updateSystemParameter( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @PathVariable(value = "id") Integer id, @Valid @RequestBody SysParamEntity sysparam) { + SysParamEntity updatedsale = sysparamService.updateSysParamById(id, sysparam); + if (updatedsale == null || id != updatedsale.getId()) { + throw new ResourceNotFoundException("system parameter not found with id " + id); + } + return ResponseEntity.status(HttpStatus.ACCEPTED).body(updatedsale); + } + + // UPDATE logo on project + @PutMapping("/logo/updateSysParams/{sys_id}") + public ResponseEntity updateLogo(@PathVariable(value = "sys_id") Integer sys_id, + @Valid @RequestBody SysParamEntity sysparam) throws JsonProcessingException { + SysParamEntity updatedsale = sysparamService.updatelogo(sys_id, sysparam); + if (updatedsale == null || sys_id != updatedsale.getId()) { + throw new ResourceNotFoundException("system parameter not found with id " + sys_id); + } + return ResponseEntity.status(HttpStatus.ACCEPTED).body(updatedsale); + } + + @PostMapping("/uploadimage") +// public ResponseEntity fileupload( +// +// @RequestParam("image") MultipartFile image) throws IOException { +// +// String filename = this.sysparamService.uplaodImage(path,image); +//// System.out.println("Original Image Byte Size - " + file.getBytes().length); +//// CardImage img = new CardImage(file.getOriginalFilename(), file.getContentType(), +//// compressBytes(file.getBytes())); +//// this.imageRepository.save(img); +// +// return new ResponseEntity<>(filename, HttpStatus.OK); +// } + + public ResponseEntity uploadProfilePic(@RequestParam("imageFile") MultipartFile file) throws IOException { + SysParamEntity sys = new SysParamEntity(); + String uploadPath = projectPath.concat("/src/main/resources/logo/"); + System.out.println("UPLOAD PATH = " + uploadPath); + + boolean success = sysparamService.upload_logo(file, uploadPath); + + String fileName = file.getOriginalFilename(); +// String head = fileName.substring(0, fileName.indexOf(".")); + String ext = fileName.substring(fileName.lastIndexOf(".")); + String fileNewName = "profile-pic-" + ext; + + System.out.println( + "UPLOAD PATH = " + uploadPath + "\nFILE NAME = " + fileNewName + "\nFile Size = " + file.getSize()); + sys.setUpload_Logo(fileNewName); + Map res = new HashMap(); + if (success) { + res.put("success", success); + return new ResponseEntity<>(res, HttpStatus.OK); + } else { + res.put("success", success); + return new ResponseEntity<>(res, HttpStatus.BAD_REQUEST); + } + } + +// save data nad upload files + @PostMapping("/Sysupload") + public ResponseEntity add(@RequestParam String o1, @RequestParam Map attachmentsfile) + throws IOException { + SysParamEntity sysParamEntity; + sysParamEntity = new ObjectMapper().readValue(o1, SysParamEntity.class); + SysParamEntity order = sysparamService.save(sysParamEntity); + + if (!attachmentsfile.isEmpty()) { +// long cLong = 1; + ArrayList attachments = new ArrayList(); + for (Map.Entry e : attachmentsfile.entrySet()) { + + System.out.println(e.getKey()); + SysParamUpload a = new SysParamUpload(); + a.setSysParamEntity(order); + a.setAttachmentId(order.getId()); + a.setAttachment(e.getValue().getBytes()); + a.setAttachmentType(e.getValue().getContentType()); + a.setAttachmentFilename(e.getValue().getOriginalFilename()); + attachments.add(a); + order.setUpload_Logo(a.getAttachmentFilename()); +// cLong++; + + } + sysparamService.addallattachments(attachments); + + } + + return new ResponseEntity<>(order, HttpStatus.OK); + + } + + @PutMapping("/Sysupload/{id}") + public ResponseEntity update(@RequestParam String o1, @RequestParam Map attachmentsfile, + @PathVariable int id) throws IOException { + SysParamEntity sysparam; + sysparam = new ObjectMapper().readValue(o1, SysParamEntity.class); + SysParamEntity order = sysparamService.updateSysParamById(id, sysparam); + + if (!attachmentsfile.isEmpty()) { +// long cLong = 1; + ArrayList attachments = new ArrayList(); + for (Map.Entry e : attachmentsfile.entrySet()) { + + System.out.println(e.getKey()); + SysParamUpload a = new SysParamUpload(); + a.setSysParamEntity(order); + a.setAttachmentId(order.getId()); + a.setAttachment(e.getValue().getBytes()); + a.setAttachmentType(e.getValue().getContentType()); + a.setAttachmentFilename(e.getValue().getOriginalFilename()); + attachments.add(a); + order.setUpload_Logo(a.getAttachmentFilename()); +// cLong++; + + } + sysparamService.addallattachments(attachments); + + } + + return new ResponseEntity<>(order, HttpStatus.OK); + + } + +// GET JSON WITH PHOTO BY ID + @GetMapping("/sysparam/{id}") + + public ResponseEntity GETSYS(@PathVariable int id) { + SysParamEntity pm = sysParamRepo.findById(id).orElseThrow(() -> new ResourceNotFoundException("id not found")); + + List attachments = sysparamService.getallattachmentsbyid(id); + pm.setSysParamUploads(attachments); + + return new ResponseEntity<>(pm, HttpStatus.OK); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/entity/SysParamEntity.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/entity/SysParamEntity.java new file mode 100644 index 0000000..e51d6d3 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/entity/SysParamEntity.java @@ -0,0 +1,118 @@ +package com.realnet.sysparameter.entity; + +import java.util.List; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.OneToMany; +import javax.persistence.Table; +import javax.persistence.Transient; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +@Entity +@Table(name = "System_paramaters") +@ToString +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +public class SysParamEntity { + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + @Column(name = "ID") + private int id; + + @Column(name = "SCHEDULER_TIME") + private int schedulerTime; + + @Column(name = "LEASE_TAX_CODE") + private String leaseTaxCode; + + @Column(name = "VESSEL_CONF_PROCESSLIMIT") + private int vesselConfProcessLimit; + + @Column(name = "ROW_TO_DISPLAY") + private int rowToDisplay; + + @Column(name = "LINK_TO_DISPLAY") + private int linkToDisplay; + + @Column(name = "ROW_TO_ADD") + private int rowToAdd; + + @Column(name = "LOV_ROW_TO_DISPLAY") + private int lovRowToDisplay; + + @Column(name = "LOV_LINK_TO_DISPLAY") + private int lovLinkToDisplay; + + @Column(name = "OID_SERVER_NAME") + private String oidserverName; + + @Column(name = "OID_BASE") + private String oidBase; + + @Column(name = "OID_ADMIN_USER") + private String oidAdminUser; + + @Column(name = "OID_SERVER_PORT") + private int oidServerPort; + + @Column(name = "USER_DEFAULT_GROUP") + private int userDefaultGroup; + + @Column(name = "DEFAULT_DEPARTMENT") + private String defaultDepartment; + + @Column(name = "DEFAULT_POSITION") + private String defaultPosition; + + @Column(name = "SINGLE_CHARGE") + private String singleCharge; + + @Column(name = "FIRST_DAYOF_THE_WEEK") + private String firstDayOftheWeek; + + @Column(name = "HOUR_PER_SHIFT") + private int hourPerShift; + + @Column(name = "CN_BILLING_FREQUENCY") + private int cnBillingFrequency; + + @Column(name = "BILLING_DEPARTMENT_CODE") + private String billingDepartmentCode; + + @Column(name = "BASE_PRICE_LIST") + private String basePriceList; + + @Column(name = "NONCONTAINER_SERVICEORDER_AUTO_APPDEPCODE") + private String nonContainerServiceOrder; + + @Column(name = "EDI_MAE_SCHEDULER_ONOFF") + private int EdiMaeSchedulerONOFF; + + @Column(name = "EDI_SCHEDULER_ONOFF") + private String EdiSchedulerONOFF; + + private String upload_Logo; + private String upload_Logo_name; + + private String upload_Logo_path; + + private String Company_Display_Name; + + private boolean isRegitrationAllowed=true; + + @Transient + @OneToMany(cascade = CascadeType.ALL) + private List sysParamUploads; +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/entity/SysParamUpload.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/entity/SysParamUpload.java new file mode 100644 index 0000000..a9f3644 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/entity/SysParamUpload.java @@ -0,0 +1,46 @@ +package com.realnet.sysparameter.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Lob; +import javax.persistence.ManyToOne; + + + +import lombok.Data; + +@Entity +@Data +public class SysParamUpload { + + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private int attachmentId; + + @Lob + @Column(nullable = true) + private byte[] attachment; + + @Column(nullable = true) + private String attachmentType; + + @Column(nullable = true) + private String attachmentFilename; + + @Column(nullable = false) + private String cancelStatus="N"; + +// private String createdBy; + + @Column(nullable = true) + private String updatedBy; + + private String externalFlag; + + @ManyToOne + private SysParamEntity sysParamEntity; +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/repository/SysParamRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/repository/SysParamRepository.java new file mode 100644 index 0000000..fa51e22 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/repository/SysParamRepository.java @@ -0,0 +1,11 @@ +package com.realnet.sysparameter.repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.sysparameter.entity.SysParamEntity; + +@Repository +public interface SysParamRepository extends JpaRepository { + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/repository/SysparamUploadRepo.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/repository/SysparamUploadRepo.java new file mode 100644 index 0000000..6a03f25 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/repository/SysparamUploadRepo.java @@ -0,0 +1,16 @@ +package com.realnet.sysparameter.repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import com.realnet.sysparameter.entity.SysParamUpload; + +@Repository +public interface SysparamUploadRepo extends JpaRepository { + @Query(value= "SELECT * FROM sys_param_upload WHERE sys_param_entity_id=?1", nativeQuery=true) + List findAllById(int sys_param_entity_id); + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/response/SysParamResponse.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/response/SysParamResponse.java new file mode 100644 index 0000000..6bef6ac --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/response/SysParamResponse.java @@ -0,0 +1,18 @@ +package com.realnet.sysparameter.response; + +import java.util.List; + +import com.realnet.fnd.response.PageResponse; +import com.realnet.sysparameter.entity.SysParamEntity; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper = false) +public class SysParamResponse extends PageResponse{ + + @ApiModelProperty(required = true, value = "") + private List systemParam; +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/service/SysParamService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/service/SysParamService.java new file mode 100644 index 0000000..7c60d72 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/service/SysParamService.java @@ -0,0 +1,28 @@ +package com.realnet.sysparameter.service; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import org.springframework.web.multipart.MultipartFile; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.realnet.sysparameter.entity.SysParamEntity; +import com.realnet.sysparameter.entity.SysParamUpload; + +public interface SysParamService { + + public SysParamEntity getById(int id); + + SysParamEntity save(SysParamEntity sysparam); + + public SysParamEntity updateSysParamById(int id, SysParamEntity sysparam); + + public SysParamEntity updatelogo(int id, SysParamEntity sysparam) throws JsonProcessingException ; + + public boolean upload_logo(MultipartFile file, String uploadPath); + + public List addallattachments(List attachments); + + public List getallattachmentsbyid(int id); +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/service/SysParamServiceImpl.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/service/SysParamServiceImpl.java new file mode 100644 index 0000000..99e1982 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/service/SysParamServiceImpl.java @@ -0,0 +1,175 @@ +package com.realnet.sysparameter.service; + +import java.io.File; +import java.io.IOException; +import java.util.List; + +import org.apache.commons.io.FilenameUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.realnet.exceptions.ResourceNotFoundException; +import com.realnet.exceptions.StorageException; +import com.realnet.sysparameter.entity.SysParamEntity; +import com.realnet.sysparameter.entity.SysParamUpload; +import com.realnet.sysparameter.repository.SysParamRepository; +import com.realnet.sysparameter.repository.SysparamUploadRepo; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +public class SysParamServiceImpl implements SysParamService { + + @Autowired + private SysParamRepository sysParamRepo; + + @Autowired + private SysparamUploadRepo sysparamUploadRepo; + + @Override + public SysParamEntity getById(int id) { + // TODO Auto-generated method stub + SysParamEntity sysparam = sysParamRepo.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("favourite not found :: " + id)); + return sysparam; + } + + @Override + public SysParamEntity save(SysParamEntity sysparam) { + // TODO Auto-generated method stub + SysParamEntity savedParam = sysParamRepo.save(sysparam); + return savedParam; + } + + @Override + public SysParamEntity updateSysParamById(int id, SysParamEntity sysparam) { + // TODO Auto-generated method stub + SysParamEntity NewSysparam = sysParamRepo.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("sysprameter not found :: " + id)); + NewSysparam.setRegitrationAllowed(sysparam.isRegitrationAllowed()); + + NewSysparam.setSchedulerTime(sysparam.getSchedulerTime()); + NewSysparam.setLeaseTaxCode(sysparam.getLeaseTaxCode()); + NewSysparam.setVesselConfProcessLimit(sysparam.getVesselConfProcessLimit()); + NewSysparam.setRowToDisplay(sysparam.getRowToDisplay()); + NewSysparam.setLinkToDisplay(sysparam.getLinkToDisplay()); + NewSysparam.setRowToAdd(sysparam.getRowToAdd()); + NewSysparam.setLovRowToDisplay(sysparam.getLovRowToDisplay()); + NewSysparam.setLovLinkToDisplay(sysparam.getLovLinkToDisplay()); + NewSysparam.setOidserverName(sysparam.getOidserverName()); + NewSysparam.setOidBase(sysparam.getOidBase()); + NewSysparam.setOidAdminUser(sysparam.getOidAdminUser()); + NewSysparam.setOidServerPort(sysparam.getOidServerPort()); + NewSysparam.setUserDefaultGroup(sysparam.getUserDefaultGroup()); + NewSysparam.setDefaultDepartment(sysparam.getDefaultDepartment()); + NewSysparam.setDefaultPosition(sysparam.getDefaultPosition()); + NewSysparam.setSingleCharge(sysparam.getSingleCharge()); + NewSysparam.setFirstDayOftheWeek(sysparam.getFirstDayOftheWeek()); + NewSysparam.setHourPerShift(sysparam.getHourPerShift()); + NewSysparam.setCnBillingFrequency(sysparam.getCnBillingFrequency()); + NewSysparam.setBillingDepartmentCode(sysparam.getBillingDepartmentCode()); + NewSysparam.setBasePriceList(sysparam.getBasePriceList()); + NewSysparam.setNonContainerServiceOrder(sysparam.getNonContainerServiceOrder()); + NewSysparam.setEdiMaeSchedulerONOFF(sysparam.getEdiMaeSchedulerONOFF()); + NewSysparam.setEdiSchedulerONOFF(sysparam.getEdiSchedulerONOFF()); + NewSysparam.setCompany_Display_Name(sysparam.getCompany_Display_Name()); + sysParamRepo.save(NewSysparam); + + return NewSysparam; + } + + @Override + public SysParamEntity updatelogo(int id, SysParamEntity sysparam) throws JsonProcessingException { + // TODO Auto-generated method stub + SysParamEntity NewSysparam = sysParamRepo.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("sysprameter not found :: " + id)); + +// Rn_Project_Setup project_Setup = rn_ProjectSetup_Service.getById(project_id); + + if (sysparam.getUpload_Logo_name() != null && sysparam.getUpload_Logo_path() != null) { + + NewSysparam.setUpload_Logo_name(sysparam.getUpload_Logo_name()); + NewSysparam.setUpload_Logo_path(sysparam.getUpload_Logo_path()); + +// project_Setup.setUpload_Logo_name(sysparam.getUpload_Logo_name()); +// project_Setup.setUpload_Logo_path(sysparam.getUpload_Logo_path()); + } + if (sysparam.getCompany_Display_Name() != null) { + + NewSysparam.setCompany_Display_Name(sysparam.getCompany_Display_Name()); + +// project_Setup.setCompany_Display_Name(sysparam.getCompany_Display_Name()); + + } + + SysParamEntity save = sysParamRepo.save(NewSysparam); + + return save; + } + + @Override + public boolean upload_logo(MultipartFile file, String uploadPath) { + if (file.isEmpty()) { + throw new StorageException("Failed to store empty file"); + } + try { + String fileName = file.getOriginalFilename(); + + String ext = fileName.substring(fileName.lastIndexOf(".")); + String extension = FilenameUtils.getExtension(fileName); // lol + String newName = "profile-pic-" + ext; + + System.out.println(System.getProperty("java.io.tmpdir")); + File convFile = new File( + System.getProperty("java.io.tmpdir") + System.getProperty("file.separator") + newName); + file.transferTo(convFile); + return true; + } catch (IOException e) { + String msg = String.format("Failed to store file %s", file.getName()); + log.info(msg); + return false; + } + + } + + @Override + public List addallattachments(List attachments) { + + for (SysParamUpload at : attachments) { + sysparamUploadRepo.save(at); + } + return attachments; + } + + @Override + + public List getallattachmentsbyid(int sys_param_entity_id) { + + List list = sysparamUploadRepo.findAllById(sys_param_entity_id); + return list; + } + + public SysParamEntity updateCompNameAndLogo(int id, SysParamEntity sysparam) throws JsonProcessingException { + // TODO Auto-generated method stub + SysParamEntity NewSysparam = sysParamRepo.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("sysprameter not found :: " + id)); + + if (sysparam.getUpload_Logo() != null) { + + NewSysparam.setUpload_Logo(sysparam.getUpload_Logo()); + + } + if (sysparam.getCompany_Display_Name() != null) { + + NewSysparam.setCompany_Display_Name(sysparam.getCompany_Display_Name()); + + } + + SysParamEntity save = sysParamRepo.save(NewSysparam); + + return save; + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/controller/Controller.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/controller/Controller.java new file mode 100644 index 0000000..d537aff --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/controller/Controller.java @@ -0,0 +1,258 @@ +////package com.realnet.excel.controller; +//package com.realnet.template.controller; +// +//import java.io.ByteArrayInputStream; +//import java.io.ByteArrayOutputStream; +//import java.io.IOException; +// +//import org.apache.poi.ss.usermodel.Cell; +//import org.apache.poi.ss.usermodel.Row; +//import org.apache.poi.ss.usermodel.Sheet; +//import org.apache.poi.ss.usermodel.Workbook; +//import org.apache.poi.xssf.usermodel.XSSFWorkbook; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.core.io.InputStreamResource; +//import org.springframework.http.HttpHeaders; +//import org.springframework.http.HttpStatus; +//import org.springframework.http.MediaType; +//import org.springframework.http.ResponseEntity; +//import org.springframework.web.bind.annotation.DeleteMapping; +//import org.springframework.web.bind.annotation.GetMapping; +//import org.springframework.web.bind.annotation.PathVariable; +//import org.springframework.web.bind.annotation.PostMapping; +//import org.springframework.web.bind.annotation.RequestMapping; +//import org.springframework.web.bind.annotation.RequestParam; +//import org.springframework.web.bind.annotation.RestController; +//import org.springframework.web.multipart.MultipartFile; +// +//import com.fasterxml.jackson.core.JsonProcessingException; +//import com.fasterxml.jackson.databind.JsonMappingException; +//import com.realnet.template.entity.TemplateFileUpload; +//import com.realnet.template.repository.TemplatedataRepo; +//import com.realnet.template.service.FileUploadService; +//import com.realnet.users.entity1.AppUser; +//import com.realnet.users.service1.AppUserServiceImpl; +// +//@RestController +//@RequestMapping("api/template") +//public class Controller { +// @Autowired +// private TemplatedataRepo temprepo; +// +// @Autowired +// FileUploadService fileupload; +// @Autowired +// private AppUserServiceImpl userService; +//// +//// @Autowired +//// private FileUploadService fileUploadService; +// +//// @Autowired +//// private CommFileuploadhelper fileuploadhelper; +// +// @GetMapping("/demo/download/{file_type}") +// public ResponseEntity demoTemplate(@PathVariable String file_type) throws IOException { +// +// if (file_type.equalsIgnoreCase("Customer")) { +// +// String filename = "Customer" + ".xlsx"; +// String[] header = { "Priority Name", "Description", "Is Active", "Effective Start Date", +// "Effective End date" }; +// ByteArrayInputStream in = demoTemplate(header, file_type); +// InputStreamResource file = new InputStreamResource(in); +// return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + filename) +// .contentType(MediaType.parseMediaType("application/vnd.ms-excel")).body(file); +// +// } else if (file_type.equalsIgnoreCase("impact")) { +// +// String filename = "Sr_impact2_t" + ".xlsx"; +// String[] header = { "Impact Name", "Description", "Is Active", "Effective Start Date", +// "Effective End date" }; +// ByteArrayInputStream in = demoTemplate(header, file_type); +// InputStreamResource file = new InputStreamResource(in); +// return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + filename) +// .contentType(MediaType.parseMediaType("application/vnd.ms-excel")).body(file); +// +// } +// +// return new ResponseEntity("Not Found", HttpStatus.BAD_REQUEST); +// +// } +// +// public static ByteArrayInputStream demoTemplate(String[] HEADERs, String file_type) throws IOException { +// String SHEET = file_type; +// Workbook workbook = new XSSFWorkbook(); +// ByteArrayOutputStream out = new ByteArrayOutputStream(); +// Sheet sheet = workbook.createSheet(SHEET); +// Row headerRow = sheet.createRow(0); +// for (int col = 0; col < HEADERs.length; col++) { +// Cell cell = headerRow.createCell(col); +// cell.setCellValue(HEADERs[col]); +// } +// workbook.write(out); +// return new ByteArrayInputStream(out.toByteArray()); +// +// } +// +// @GetMapping("/getalltemplate") +// public ResponseEntity getALlTemplate() { +// return new ResponseEntity<>(temprepo.findAll(), HttpStatus.ACCEPTED); +// } +// +// @GetMapping("/gettemplatebyid/{id}") +// public ResponseEntity getTemplateById(@PathVariable Long id) { +// return new ResponseEntity<>(fileupload.getTemplatebyid(id), HttpStatus.ACCEPTED); +// } +// +// @PostMapping("/save/{entityName}") +// public ResponseEntity post(@RequestParam(required = false) MultipartFile file, @PathVariable String entityName) +// throws JsonMappingException, JsonProcessingException { +// +// TemplateFileUpload job; +// AppUser loggedInUser = userService.getLoggedInUser(); +// +//// job = new ObjectMapper().readValue(entityName, TemplateFileUpload.class); +// +// if (file != null) { +// System.out.println(file.getOriginalFilename()); +// +//// boolean f = +//// fileUploadService.uploadFile(file); +// +// fileupload.uploadFile(file, loggedInUser.getUserId(), entityName); +// +// } +// +// else { +// System.out.println("erro"); +// } +// +//// TemplateFileUpload save = temprepo.save(job); +// +// return new ResponseEntity<>(HttpStatus.OK); +// +// } +// +// @DeleteMapping("/deletetemplate/{id}") +// public ResponseEntity deleteTemplateFileUploadById(@PathVariable Long id) { +// try { +// fileupload.deleteTemplateFileUploadById(id); +// return ResponseEntity.ok("Template file deleted successfully"); +// } catch (Exception e) { +// // Handle exceptions, e.g., if the entity with the given ID is not found +// return ResponseEntity.badRequest().body("Failed to delete template file: " + e.getMessage()); +// } +// } +// +//// @PostMapping("/save/{filetype}") +//// public ResponseEntity uploadFile(@RequestParam MultipartFile file, @PathVariable String filetype) +//// throws IOException, ParseException { +//// BufferedReader br; +//// InputStream is = file.getInputStream(); +//// br = new BufferedReader(new InputStreamReader(is)); +//// String file_name = file.getOriginalFilename(); +//// AppUser loggedInUser = userService.getLoggedInUser(); +//// +//// if (filetype.equalsIgnoreCase("priority")) { +//// +//// if (file_name.contains("Sr_priority2_t")) { +//// +//// String[] header = { "Priority Name", "Description", "Is Active", "Effective Start Date", +//// "Effective End date" }; +//// ArrayList prioritylist = new ArrayList(); +//// +//// Workbook workbook = WorkbookFactory.create(is); +//// +////// Create a DataFormatter to format and get each cell's value as String +//// DataFormatter dataFormatter = new DataFormatter(); +//// +//// Sheet sheet = workbook.getSheetAt(0); +//// +//// // Getting number of columns in the Sheet +//// int cols = sheet.getRow(0).getLastCellNum(); +//// +//// fileupload.uploadFile(file, loggedInUser.getUserId(), filetype); +//// +//// for (Row row : sheet) { +//// +//// if (row.getRowNum() == 0) { +//// for (int i = 0; i < cols; i++) { +//// String value = dataFormatter.formatCellValue(row.getCell(i)); +//// +//// if (!header[i].equalsIgnoreCase(value)) { +//// +//// return new ResponseEntity<>( +//// "priority file Should have \"" + header + " \"in the header in excel file", +//// HttpStatus.BAD_REQUEST); +//// } +//// } +//// +//// } +//// +//// if (row.getRowNum() != 0) { +//// Date date = row.getCell(3).getDateCellValue(); +//// Date date2 = row.getCell(4).getDateCellValue(); +//// +//// Sr_priority2_t priority = new Sr_priority2_t(); +//// priority.setPriority_name(dataFormatter.formatCellValue(row.getCell(0))); +//// priority.setDescription(dataFormatter.formatCellValue(row.getCell(1))); +//// priority.setActive(Boolean.valueOf(dataFormatter.formatCellValue(row.getCell(2)))); +//// +//// priority.setEffective_start_date(date); +//// priority.setEffective_end_date(date2); +//// priorityrepo.save(priority); +//// +//// prioritylist.add(priority); +//// } +//// +//// } +////// priorityrepo.saveAll(prioritylist); +//// workbook.close(); +//// +////// +//// +//// return new ResponseEntity<>("File Uploaded", HttpStatus.ACCEPTED); +//// } +//// return new ResponseEntity<>("File name should contain Sr_priority2_t", HttpStatus.BAD_REQUEST); +//// +//// } +//// +//// return new ResponseEntity<>("Something Went Wrong please try again....!!!!! ", HttpStatus.BAD_REQUEST); +//// +//// } +//// +////// Download template data in excel Files +//// +//// @GetMapping("/download/{file_type}") +//// +//// public ResponseEntity getFile(@PathVariable String file_type) throws IOException { +//// +//// if (file_type.equalsIgnoreCase("priority")) { +//// +//// String filename = "Sr_priority2_t" + ".xlsx"; +//// String[] header = { "Priority Name", "Description", "Is Active", "Effective Start Date", +//// "Effective End date" }; +//// List findAll = priorityrepo.findAll(); +//// ByteArrayInputStream in = templateByte(findAll, header); +//// InputStreamResource file = new InputStreamResource(in); +//// return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + filename) +//// .contentType(MediaType.parseMediaType("application/vnd.ms-excel")).body(file); +//// +//// } else if (file_type.equalsIgnoreCase("impact")) { +//// +//// String filename = "Sr_impact2_t" + ".xlsx"; +//// String[] header = { "Impact Name", "Description", "Is Active", "Effective Start Date", +//// "Effective End date" }; +//// List findAll = impactrepo.findAll(); +//// ByteArrayInputStream in = templateByte3(findAll, header); +//// InputStreamResource file = new InputStreamResource(in); +//// return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + filename) +//// .contentType(MediaType.parseMediaType("application/vnd.ms-excel")).body(file); +//// +//// } +//// +//// return new ResponseEntity("Not Found", HttpStatus.BAD_REQUEST); +//// +//// } +// +//} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/controller/DynamicTemplateController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/controller/DynamicTemplateController.java new file mode 100644 index 0000000..d3e4455 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/controller/DynamicTemplateController.java @@ -0,0 +1,332 @@ +package com.realnet.template.controller; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.Set; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.ss.usermodel.WorkbookFactory; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.json.simple.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.ByteArrayResource; +import org.springframework.core.io.InputStreamResource; +import org.springframework.core.io.Resource; +import org.springframework.dao.DataIntegrityViolationException; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.mock.web.MockMultipartFile; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +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.multipart.MultipartFile; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.realnet.template.entity.TemplateFileUpload; +import com.realnet.template.repository.TemplatedataRepo; +import com.realnet.template.service.DynamicTemplateService; + +@RestController +@RequestMapping("api/dynamic") +public class DynamicTemplateController { + @Autowired + private JdbcTemplate jdbcTemplate; + @Autowired + private TemplatedataRepo temprepo; + @Autowired + private DynamicTemplateService dynamicTemplateService; + + @PostMapping("/templatetojsondata") + public ResponseEntity> saveTemplateInJson(@RequestParam("file") MultipartFile file) + throws IOException { + List jsonList = dynamicTemplateService.processTemplate(file); + return new ResponseEntity<>(jsonList, HttpStatus.OK); + } + + @PostMapping("/templatetojson/{id}") + public ResponseEntity convertFileToJson(@PathVariable Long id) throws IOException { + // Retrieve the TemplateFileUpload entity based on the provided ID + Optional fileUploadOptional = temprepo.findById(id); + + TemplateFileUpload fileUpload = fileUploadOptional.get(); + String location = fileUpload.getFile_location(); + String fileName = fileUpload.getFile_changed_name() + ".xlsx"; + String filePath = location + File.separator + "processingfile" + File.separator + fileName; + File file = new File(filePath); + if (!file.exists()) { + // Handle the case where the file is not found in the specified location + return ResponseEntity.notFound().build(); + } + MultipartFile multipartFile = new MockMultipartFile(fileName, new FileInputStream(file)); + List jsonList = dynamicTemplateService.processTemplate(multipartFile); + return ResponseEntity.ok(jsonList); + + } + + @GetMapping("/getHeaders/{id}") + public ResponseEntity> getFileHeaders(@PathVariable Long id) throws IOException { + Optional fileUploadOptional = temprepo.findById(id); + + TemplateFileUpload fileUpload = fileUploadOptional.get(); + String location = fileUpload.getFile_location(); + String fileName = fileUpload.getFile_changed_name() + ".xlsx"; + String filePath = location + File.separator + "processingfile" + File.separator + fileName; + File file = new File(filePath); + if (!file.exists()) { + return ResponseEntity.notFound().build(); + } + Workbook workbook = WorkbookFactory.create(file); + Sheet sheet = workbook.getSheetAt(0); + Row headerRow = sheet.getRow(0); + List headers = new ArrayList<>(); + for (Cell cell : headerRow) { + String header = cell.getStringCellValue(); + headers.add(header); + } + workbook.close(); + return ResponseEntity.ok(headers); + } + + @PostMapping("/jsonkeychange") + public ResponseEntity changeKeysOfJson(@RequestParam String newjson, @RequestParam String body) + throws IOException { + JsonParser parser = new JsonParser(); + JsonArray newKeysArray = parser.parse(newjson).getAsJsonArray(); + JsonElement bodyElement = parser.parse(body); + JsonArray bodyArray = bodyElement.getAsJsonArray(); + List> jsonList = new ArrayList<>(); // Use Object type to handle booleans + for (JsonElement bodyElement1 : bodyArray) { + JsonObject bodyObject = bodyElement1.getAsJsonObject(); + Map map = new HashMap<>(); // Use Object type to handle booleans + for (JsonElement newKeyElement : newKeysArray) { + JsonObject newKeyObject = newKeyElement.getAsJsonObject(); + String originalKey = newKeyObject.get("headerName").getAsString(); + String newKey = newKeyObject.get("value").getAsString(); + if (bodyObject.has(originalKey)) { + JsonElement valueElement = bodyObject.get(originalKey); + // Check if the value is a string representation of boolean + if (valueElement.isJsonPrimitive() && valueElement.getAsJsonPrimitive().isString()) { + String value = valueElement.getAsString().toLowerCase(); // Convert to lowercase + // Convert "true" or "false" to boolean type + if (value.equals("true") || value.equals("false")) { + boolean boolValue = Boolean.parseBoolean(value); + map.put(newKey, boolValue); + continue; // Skip further processing for this key + } + } + String value = valueElement.getAsString(); + map.put(newKey, value); + } + } + jsonList.add(map); + } + return new ResponseEntity<>(jsonList, HttpStatus.ACCEPTED); + } + + @PostMapping("/DownloadExcel/{entityName}") + public ResponseEntity importdatadownloadexcel(@PathVariable String entityName, + @RequestBody List> data) { + List> processedData = new ArrayList<>(); + try { + String convertedTableName = entityName; + String sql = getInsertQuery1(convertedTableName, data.get(0)); + for (int i = 0; i < data.size(); i++) { + Map row = data.get(i); + Map processedRow = new HashMap<>(); + try { + Object[] values = new Object[row.size() + 5]; // +5 for the additional columns + int index = 0; + for (Object value : row.values()) { + values[index++] = value; + } + values[index++] = new Timestamp(System.currentTimeMillis()); // created_at + values[index++] = null; // created_by + values[index++] = null; // updated_by + values[index++] = new Timestamp(System.currentTimeMillis()); // updated_at + values[index] = null; // account_id + jdbcTemplate.update(sql, values); + processedRow.putAll(row); + processedRow.put("Status", "Success"); + processedRow.put("Exception", "NA"); + } catch (DataIntegrityViolationException e) { + processedRow.putAll(row); + processedRow.put("Status", "Error"); + String exceptionMessage = extractExceptionMessage1(e); + processedRow.put("Exception", exceptionMessage); + } + processedData.add(processedRow); + } + if (!processedData.isEmpty()) { + Workbook workbook = new XSSFWorkbook(); + Sheet sheet = workbook.createSheet("Failed Records"); + // Add column headers to the worksheet + Row headerRow = sheet.createRow(0); + int columnIndex = 0; + for (String key : processedData.get(0).keySet()) { + Cell cell = headerRow.createCell(columnIndex++); + cell.setCellValue(key); + } + // Add data rows to the worksheet + int rowIndex = 1; + for (Map row : processedData) { + Row dataRow = sheet.createRow(rowIndex++); + columnIndex = 0; + for (Object value : row.values()) { + Cell cell = dataRow.createCell(columnIndex++); + cell.setCellValue(value.toString()); + } + } + // Write the workbook to a file + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + workbook.write(outputStream); + ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray()); + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.parseMediaType("application/vnd.ms-excel")); + headers.set(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=failed_records.xlsx"); + Resource resource = new InputStreamResource(inputStream); + return ResponseEntity.ok().headers(headers).body(resource); + } + return ResponseEntity.ok().body(null); + } catch (Exception e) { + return ResponseEntity.badRequest().body(null); + } + } + + private String extractExceptionMessage1(DataIntegrityViolationException e) { + String errorMessage = e.getMessage(); + int startIndex = errorMessage.indexOf("Incorrect "); + int endIndex = errorMessage.indexOf("at row"); + if (startIndex != -1 && endIndex != -1) { + return errorMessage.substring(startIndex, endIndex).trim(); + } + return errorMessage; + } + + private String convertTableName1(String tableName) { + switch (tableName.toLowerCase()) { + case "priority": + return "sr_priority2_t"; + case "impact": + return "sr_impact2_t"; + case "urgency": + return "Sr_urgency_t"; + case "category": + return "sr_category2_t"; + case "state": + return "sr_state_t"; + case "contact_type": + return "sr_contact_type_t"; + case "customer": + return "sr_customer_t"; + case "handler": + return "sr_handler_t"; + default: + return tableName; + } + } + + private String getInsertQuery1(String tableName, Map data) { + StringBuilder sqlBuilder = new StringBuilder(); + sqlBuilder.append("INSERT INTO "); + sqlBuilder.append(tableName); + sqlBuilder.append(" ("); + sqlBuilder.append(String.join(", ", data.keySet())); + sqlBuilder.append(", created_at, created_by, updated_by, updated_at, account_id) VALUES ("); + sqlBuilder.append(String.join(", ", Collections.nCopies(data.size(), "?"))); + sqlBuilder.append(", ?, ?, ?, ?, ?)"); + return sqlBuilder.toString(); + } + + private void createTableIfNotExists(String tableName, Map data) { + StringBuilder sqlBuilder = new StringBuilder(); + sqlBuilder.append("CREATE TABLE IF NOT EXISTS "); + sqlBuilder.append(tableName); + sqlBuilder.append(" ("); + // Check if "id" field exists in the data map + if (data.containsKey("id")) { + // Add "id" column as the first column + sqlBuilder.append("id INT PRIMARY KEY, "); + } + for (Map.Entry entry : data.entrySet()) { + String columnName = entry.getKey(); + Object columnValue = entry.getValue(); + // Skip adding "id" field again + if (columnName.equalsIgnoreCase("id")) { + continue; + } + if (columnName.equalsIgnoreCase("date") || columnName.equalsIgnoreCase("dob")) { + sqlBuilder.append(columnName).append(" DATE, "); + } else { + sqlBuilder.append(columnName).append(" VARCHAR(255), "); + } + } + sqlBuilder.delete(sqlBuilder.length() - 2, sqlBuilder.length()); // Remove the last comma and space + sqlBuilder.append(")"); + jdbcTemplate.execute(sqlBuilder.toString()); + } + + @GetMapping("/columns/{tableName}") + public List getColumnNames(@PathVariable String tableName) { + Set columnNamesSet = new HashSet<>(); + String convertedTableName = convertTableName(tableName); + List columnNames = jdbcTemplate.queryForList( + "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = ?", + new Object[] { convertedTableName }, String.class); + // Exclude specific column names + List excludedColumns = Arrays.asList("id", "account_id", "updated_at", "created_at", "created_by", + "updated_by"); + for (String columnName : columnNames) { + if (!excludedColumns.contains(columnName)) { + columnNamesSet.add(columnName); + } + } + return new ArrayList<>(columnNamesSet); + } + + private String convertTableName(String tableName) { + switch (tableName.toLowerCase()) { + case "customer": + return "customer_master_t"; + case "impact": + return "sr_impact2_t"; + case "urgency": + return "Sr_urgency_t"; + case "category": + return "sr_category2_t"; + case "state": + return "sr_state_t"; + case "contact_type": + return "sr_contact_type_t"; + + case "handler": + return "sr_handler_t"; + default: + return tableName; + } + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/controller/ExcelController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/controller/ExcelController.java new file mode 100644 index 0000000..ccf2648 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/controller/ExcelController.java @@ -0,0 +1,319 @@ +//package com.realnet.excel.controller; +package com.realnet.template.controller; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; + +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.io.InputStreamResource; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.realnet.template.entity.TemplateFileUpload; +import com.realnet.template.repository.TemplatedataRepo; +import com.realnet.template.service.CSVService; +import com.realnet.template.service.FileUploadService; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.service1.AppUserServiceImpl; + +@RestController +@RequestMapping("api/template") +public class ExcelController { + @Autowired + private TemplatedataRepo temprepo; + + @Autowired + FileUploadService fileupload; + @Autowired + private AppUserServiceImpl userService; + + @GetMapping("/demo/download/{file_type}") + public ResponseEntity demoTemplate(@PathVariable String file_type) throws IOException { + + if (file_type.equalsIgnoreCase("Customer")) { + + String filename = "Customer" + ".xlsx"; + String[] header = { "Priority Name", "Description", "Is Active", "Effective Start Date", + "Effective End date" }; + ByteArrayInputStream in = demoTemplate(header, file_type); + InputStreamResource file = new InputStreamResource(in); + return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + filename) + .contentType(MediaType.parseMediaType("application/vnd.ms-excel")).body(file); + + } else if (file_type.equalsIgnoreCase("impact")) { + + String filename = "Sr_impact2_t" + ".xlsx"; + String[] header = { "Impact Name", "Description", "Is Active", "Effective Start Date", + "Effective End date" }; + ByteArrayInputStream in = demoTemplate(header, file_type); + InputStreamResource file = new InputStreamResource(in); + return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + filename) + .contentType(MediaType.parseMediaType("application/vnd.ms-excel")).body(file); + + } + + return new ResponseEntity("Not Found", HttpStatus.BAD_REQUEST); + + } + + public static ByteArrayInputStream demoTemplate(String[] HEADERs, String file_type) throws IOException { + String SHEET = file_type; + Workbook workbook = new XSSFWorkbook(); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + Sheet sheet = workbook.createSheet(SHEET); + Row headerRow = sheet.createRow(0); + for (int col = 0; col < HEADERs.length; col++) { + Cell cell = headerRow.createCell(col); + cell.setCellValue(HEADERs[col]); + } + workbook.write(out); + return new ByteArrayInputStream(out.toByteArray()); + + } + + @Autowired + private CSVService csvService; + @Value("${projectPath}") + private String projectpath; + +// download Template In Excel + @GetMapping("/download-csv") + public ResponseEntity downloadCSV(@RequestParam String tableName) throws IOException { + + System.out.println("downloading start.."); + String processString = processString(tableName); + String filename = csvService.generateCSV(processString.toLowerCase()); + + System.out.println("file generate.."); + + String baseFilePath = projectpath + File.separator + filename; + + Path zipFilePath = Paths.get(baseFilePath); + try { + byte[] Content = Files.readAllBytes(zipFilePath); + + ByteArrayInputStream in = new ByteArrayInputStream(Content); + InputStreamResource file = new InputStreamResource(in); +// ByteArrayResource resource = new ByteArrayResource(zipContent); + + HttpHeaders headers = new HttpHeaders(); + headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + filename); + headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); + + return ResponseEntity.ok().headers(headers).contentLength(Content.length).body(file); + } catch (IOException e) { + e.printStackTrace(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null); + } + + } + + public String processString(String input) { + if (input == null || input.isEmpty()) { + return input; + } + + StringBuilder result = new StringBuilder(); + result.append(input.charAt(0)); // Append the first character as is + + for (int i = 1; i < input.length(); i++) { + char currentChar = input.charAt(i); + char prevChar = input.charAt(i - 1); + + if (Character.isUpperCase(currentChar) && prevChar == '_') { + result.append(Character.toLowerCase(currentChar)); + } else if (Character.isUpperCase(currentChar)) { + result.append('_').append(Character.toLowerCase(currentChar)); + } else { + result.append(currentChar); + } + } + + return result.toString(); + } + + @GetMapping("/getalltemplate") + public ResponseEntity getALlTemplate() { + return new ResponseEntity<>(temprepo.findAll(), HttpStatus.ACCEPTED); + } + + @GetMapping("/gettemplatebyid/{id}") + public ResponseEntity getTemplateById(@PathVariable Long id) { + return new ResponseEntity<>(fileupload.getTemplatebyid(id), HttpStatus.ACCEPTED); + } + + @PostMapping("/save/{entityName}") + public ResponseEntity post(@RequestParam(required = false) MultipartFile file, @PathVariable String entityName) + throws JsonMappingException, JsonProcessingException { + + TemplateFileUpload job; + AppUser loggedInUser = userService.getLoggedInUser(); + +// job = new ObjectMapper().readValue(entityName, TemplateFileUpload.class); + + if (file != null) { + System.out.println(file.getOriginalFilename()); + +// boolean f = +// fileUploadService.uploadFile(file); + + fileupload.uploadFile(file, loggedInUser.getUserId(), entityName); + + } + + else { + System.out.println("erro"); + } + +// TemplateFileUpload save = temprepo.save(job); + + return new ResponseEntity<>(HttpStatus.OK); + + } + + @DeleteMapping("/deletetemplate/{id}") + public ResponseEntity deleteTemplateFileUploadById(@PathVariable Long id) { + try { + fileupload.deleteTemplateFileUploadById(id); + return ResponseEntity.ok("Template file deleted successfully"); + } catch (Exception e) { + // Handle exceptions, e.g., if the entity with the given ID is not found + return ResponseEntity.badRequest().body("Failed to delete template file: " + e.getMessage()); + } + } + +// @PostMapping("/save/{filetype}") +// public ResponseEntity uploadFile(@RequestParam MultipartFile file, @PathVariable String filetype) +// throws IOException, ParseException { +// BufferedReader br; +// InputStream is = file.getInputStream(); +// br = new BufferedReader(new InputStreamReader(is)); +// String file_name = file.getOriginalFilename(); +// AppUser loggedInUser = userService.getLoggedInUser(); +// +// if (filetype.equalsIgnoreCase("priority")) { +// +// if (file_name.contains("Sr_priority2_t")) { +// +// String[] header = { "Priority Name", "Description", "Is Active", "Effective Start Date", +// "Effective End date" }; +// ArrayList prioritylist = new ArrayList(); +// +// Workbook workbook = WorkbookFactory.create(is); +// +//// Create a DataFormatter to format and get each cell's value as String +// DataFormatter dataFormatter = new DataFormatter(); +// +// Sheet sheet = workbook.getSheetAt(0); +// +// // Getting number of columns in the Sheet +// int cols = sheet.getRow(0).getLastCellNum(); +// +// fileupload.uploadFile(file, loggedInUser.getUserId(), filetype); +// +// for (Row row : sheet) { +// +// if (row.getRowNum() == 0) { +// for (int i = 0; i < cols; i++) { +// String value = dataFormatter.formatCellValue(row.getCell(i)); +// +// if (!header[i].equalsIgnoreCase(value)) { +// +// return new ResponseEntity<>( +// "priority file Should have \"" + header + " \"in the header in excel file", +// HttpStatus.BAD_REQUEST); +// } +// } +// +// } +// +// if (row.getRowNum() != 0) { +// Date date = row.getCell(3).getDateCellValue(); +// Date date2 = row.getCell(4).getDateCellValue(); +// +// Sr_priority2_t priority = new Sr_priority2_t(); +// priority.setPriority_name(dataFormatter.formatCellValue(row.getCell(0))); +// priority.setDescription(dataFormatter.formatCellValue(row.getCell(1))); +// priority.setActive(Boolean.valueOf(dataFormatter.formatCellValue(row.getCell(2)))); +// +// priority.setEffective_start_date(date); +// priority.setEffective_end_date(date2); +// priorityrepo.save(priority); +// +// prioritylist.add(priority); +// } +// +// } +//// priorityrepo.saveAll(prioritylist); +// workbook.close(); +// +//// +// +// return new ResponseEntity<>("File Uploaded", HttpStatus.ACCEPTED); +// } +// return new ResponseEntity<>("File name should contain Sr_priority2_t", HttpStatus.BAD_REQUEST); +// +// } +// +// return new ResponseEntity<>("Something Went Wrong please try again....!!!!! ", HttpStatus.BAD_REQUEST); +// +// } +// +//// Download template data in excel Files +// +// @GetMapping("/download/{file_type}") +// +// public ResponseEntity getFile(@PathVariable String file_type) throws IOException { +// +// if (file_type.equalsIgnoreCase("priority")) { +// +// String filename = "Sr_priority2_t" + ".xlsx"; +// String[] header = { "Priority Name", "Description", "Is Active", "Effective Start Date", +// "Effective End date" }; +// List findAll = priorityrepo.findAll(); +// ByteArrayInputStream in = templateByte(findAll, header); +// InputStreamResource file = new InputStreamResource(in); +// return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + filename) +// .contentType(MediaType.parseMediaType("application/vnd.ms-excel")).body(file); +// +// } else if (file_type.equalsIgnoreCase("impact")) { +// +// String filename = "Sr_impact2_t" + ".xlsx"; +// String[] header = { "Impact Name", "Description", "Is Active", "Effective Start Date", +// "Effective End date" }; +// List findAll = impactrepo.findAll(); +// ByteArrayInputStream in = templateByte3(findAll, header); +// InputStreamResource file = new InputStreamResource(in); +// return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + filename) +// .contentType(MediaType.parseMediaType("application/vnd.ms-excel")).body(file); +// +// } +// +// return new ResponseEntity("Not Found", HttpStatus.BAD_REQUEST); +// +// } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/controller/HtmlToPngController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/controller/HtmlToPngController.java new file mode 100644 index 0000000..928e30e --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/controller/HtmlToPngController.java @@ -0,0 +1,150 @@ +package com.realnet.template.controller; + +import java.io.FileOutputStream; +import java.io.IOException; + +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; +import org.springframework.util.Base64Utils; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/token") +public class HtmlToPngController { + +// @PostMapping(value = "/generate-file", produces = MediaType.TEXT_PLAIN_VALUE) +// public ResponseEntity generateFileFromHtml(@RequestParam String fileType, @RequestBody String htmlContent) { +// try { +// String fileExtension = ""; +// String renderedContent = ""; +// +// // Determine file extension and render content based on the fileType parameter +// if ("png".equalsIgnoreCase(fileType)) { +// fileExtension = "png"; +// BufferedImage image = renderHtmlToImage(htmlContent); +// File outputfile = new File("output.png"); +// ImageIO.write(image, "png", outputfile); +// renderedContent = "Image"; +// } else { +// return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("Unsupported file type."); +// } +// +// // Return the file path or URL in the response +// String filePath = "output." + fileExtension; +// if (!StringUtils.isEmpty(filePath)) { +// return ResponseEntity.ok().body(renderedContent + " saved successfully at: " + filePath); +// } else { +// return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save the " + renderedContent + "."); +// } +// } catch (IOException e) { +// e.printStackTrace(); +// return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error occurred while saving the file."); +// } +// } +// +// private BufferedImage renderHtmlToImage(String htmlContent) { +// JEditorPane editorPane = new JEditorPane(); +// editorPane.setContentType("text/html"); +// editorPane.setText(htmlContent); +// +// // Wait for the component to be rendered +// editorPane.setSize(new Dimension(1200, 800)); +// editorPane.setPreferredSize(new Dimension(1200, 800)); +// editorPane.setMinimumSize(new Dimension(1200, 800)); +// editorPane.setMaximumSize(new Dimension(1200, 800)); +// +// BufferedImage image = new BufferedImage(1200, 800, BufferedImage.TYPE_INT_ARGB); +// Graphics2D g2d = image.createGraphics(); +// editorPane.print(g2d); +// g2d.dispose(); +// +// return image; +// } + + + @PostMapping("/saveImageFromHtml") + public String saveImageFromHtml(@RequestBody String html) { + try { + // Parse HTML string + Document doc = Jsoup.parse(html); + + // Find img elements + Elements imgElements = doc.select("img"); + + // Iterate through img elements + for (Element imgElement : imgElements) { + // Get Base64 encoded image data from src attribute + String src = imgElement.attr("src"); + String base64Data = src.replaceFirst("^data:image/png;base64,", ""); + + // Decode Base64 string to byte array + byte[] imageData = Base64Utils.decodeFromString(base64Data); + + // Write byte array to PNG file + FileOutputStream fos = new FileOutputStream("image.png"); + fos.write(imageData); + fos.close(); + } + + return "Image saved successfully!"; + } catch (IOException e) { + e.printStackTrace(); + return "Failed to save image!"; + } + } + + + @PostMapping("/saveImageFromHtmlFileType") + public String saveImageFromHtml( + @RequestParam String fileType, + @RequestBody String html + ) { + try { + // Parse HTML string + Document doc = Jsoup.parse(html); + + // Find img elements + Elements imgElements = doc.select("img"); + + // Iterate through img elements + for (Element imgElement : imgElements) { + // Get Base64 encoded image data from src attribute + String src = imgElement.attr("src"); + String base64Data = src.replaceFirst("^data:image/png;base64,", ""); + + // Decode Base64 string to byte array + byte[] imageData = Base64Utils.decodeFromString(base64Data); + + // Determine file extension and content type + String fileExtension; + String contentType; + if ("png".equalsIgnoreCase(fileType)) { + fileExtension = ".png"; + contentType = "image/png"; + } else if ("svg".equalsIgnoreCase(fileType)) { + fileExtension = ".svg"; + contentType = "image/svg+xml"; + } else { + return "Unsupported file type!"; + } + + // Write byte array to file + String filename = "image" + fileExtension; + FileOutputStream fos = new FileOutputStream(filename); + fos.write(imageData); + fos.close(); + } + + return "Image saved successfully!"; + } catch (IOException e) { + e.printStackTrace(); + return "Failed to save image!"; + } + } +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/controller/ImageUploadController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/controller/ImageUploadController.java new file mode 100644 index 0000000..28c5374 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/controller/ImageUploadController.java @@ -0,0 +1,111 @@ +package com.realnet.template.controller; + +import java.util.Date; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +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.multipart.MultipartFile; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.realnet.FileUpload.helper.Fileupload_helper; +import com.realnet.template.entity.ImageUpload; +import com.realnet.template.service.ImageUploadService; + + +@RequestMapping("api/template/imageUpload") +@RestController +public class ImageUploadController { + + @Autowired + private JdbcTemplate jdbcTemplate; + + @Value("${projectPath}") + private String projectPath; + + public final String UPLOAD_DIREC = "/Files"; + + @Autowired + private Fileupload_helper fileuploadhelper; + + @Autowired + private ImageUploadService imageUploadService; + + @PostMapping("/ImageUpload") + public ResponseEntity save(@RequestParam String data, @RequestParam MultipartFile file) throws Exception { + + Date date = new Date(); + String str = date.getTime() + "_"; + + ImageUpload docs; + + docs = new ObjectMapper().readValue(data, ImageUpload.class); + + if (!file.isEmpty()) { + System.out.println(file.getOriginalFilename()); + + boolean f = fileuploadhelper.uploadFilewithtimestamp(file, str); + + if (f) { + System.out.println("file uploaded successfully"); + int lastIndexOf = file.getOriginalFilename().lastIndexOf("."); + String filetype = file.getOriginalFilename().substring(lastIndexOf + 1); + docs.setFilename(str + file.getOriginalFilename()); + + docs.setFilePath(projectPath + UPLOAD_DIREC); + + } + + else { + docs.setFilename("No file uploaded"); + System.out.println(" no file uploaded "); + + } + + } else { + docs.setFilename("No file found"); + System.out.println(" no file uploaded "); + + } + ImageUpload saveddata = imageUploadService.Savedata(docs); + + return new ResponseEntity<>(saveddata, HttpStatus.OK); + } + + @GetMapping("/ImageUpload") + public List getdetails() { + List get = imageUploadService.getdetails(); + return get; + } + + @GetMapping("/ImageUpload/{id}") + public ImageUpload getdetailsbyId(@PathVariable Long id) { + ImageUpload get = imageUploadService.getdetailsbyId(id); + return get; + + } + + @DeleteMapping("/ImageUpload/{id}") + public void delete_by_id(@PathVariable Long id) { + imageUploadService.delete_by_id(id); + + } + + @PutMapping("/ImageUpload/{id}") + public ImageUpload update(@RequestBody ImageUpload data, @PathVariable Long id) { + ImageUpload update = imageUploadService.update(data, id); + return update; + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/controller/ImportDataRequest.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/controller/ImportDataRequest.java new file mode 100644 index 0000000..bb25bb4 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/controller/ImportDataRequest.java @@ -0,0 +1,25 @@ +package com.realnet.template.controller; + +import java.util.List; +import java.util.Map; + +public class ImportDataRequest { + private List> Site; + private List> Customer; + + public List> getSite() { + return Site; + } + + public void setSite(List> site) { + Site = site; + } + + public List> getCustomer() { + return Customer; + } + + public void setCustomer(List> customer) { + Customer = customer; + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/entity/ImageUpload.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/entity/ImageUpload.java new file mode 100644 index 0000000..ebe0b34 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/entity/ImageUpload.java @@ -0,0 +1,34 @@ +package com.realnet.template.entity; + + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + + + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Entity +@AllArgsConstructor +@NoArgsConstructor +public class ImageUpload { + + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private Long user_id; + + private String dataImportName; + + private String filename; + + private String filePath; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/entity/TemplateFileUpload.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/entity/TemplateFileUpload.java new file mode 100644 index 0000000..5135327 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/entity/TemplateFileUpload.java @@ -0,0 +1,36 @@ +package com.realnet.template.entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +import com.realnet.WhoColumn.Entity.Who_column; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Entity +@AllArgsConstructor +@NoArgsConstructor +public class TemplateFileUpload extends Who_column { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private Long user_id; + private String file_name; + private String file_changed_name; + private String file_location; + private String file_type; + private Integer status; + private String entity_name; + private boolean isProcessed; + + private String DownloadfileName; + private String DownloadfileLocation; + + private String name; +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/repository/ImageUploadRepo.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/repository/ImageUploadRepo.java new file mode 100644 index 0000000..bcaea8f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/repository/ImageUploadRepo.java @@ -0,0 +1,11 @@ +package com.realnet.template.repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.template.entity.ImageUpload; + +@Repository +public interface ImageUploadRepo extends JpaRepository { + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/repository/TemplatedataRepo.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/repository/TemplatedataRepo.java new file mode 100644 index 0000000..7beb311 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/repository/TemplatedataRepo.java @@ -0,0 +1,19 @@ +package com.realnet.template.repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import com.realnet.template.entity.TemplateFileUpload; + +public interface TemplatedataRepo extends JpaRepository { + + @Query(value = "select * from template_file_upload where file_name =?1", nativeQuery = true) + TemplateFileUpload getbyFileName(String fileName); + + @Query("SELECT t FROM TemplateFileUpload t WHERE t.entity_name IS NOT NULL AND t.isProcessed = false ORDER BY t.id ASC") + List findUnprocessedRecordsOrderedByIdAsc(); + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/service/CSVService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/service/CSVService.java new file mode 100644 index 0000000..08785f0 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/service/CSVService.java @@ -0,0 +1,58 @@ +package com.realnet.template.service; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.util.List; + +import javax.persistence.EntityManager; +import javax.persistence.Query; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import com.opencsv.CSVWriter; + +@Service +public class CSVService { + + @Value("${projectPath}") + private String projectpath; + @Autowired + private EntityManager entityManager; + + public String generateCSV(String tableName) throws IOException { + // Get column names dynamically + String columnQuery = "SELECT column_name FROM information_schema.columns WHERE table_name = :tableName"; + Query query = entityManager.createNativeQuery(columnQuery); + query.setParameter("tableName", tableName); + + List columnNames = query.getResultList(); + + // Query the table data +// String dataQuery = "SELECT * FROM " + tableName; // for all record + String dataQuery = "SELECT * FROM " + tableName + " LIMIT 1"; // for only one record + + Query dataQueryExec = entityManager.createNativeQuery(dataQuery); + List resultList = dataQueryExec.getResultList(); + + // Write to CSV + String pathString = projectpath; + String filename = "file" + System.currentTimeMillis() + ".csv"; + String filePath = pathString + File.separator + filename; // Update this path as needed + try (CSVWriter writer = new CSVWriter(new FileWriter(filePath))) { + writer.writeNext(columnNames.toArray(new String[0])); + + for (Object[] row : resultList) { + String[] rowArray = new String[row.length]; + for (int i = 0; i < row.length; i++) { + rowArray[i] = row[i] != null ? row[i].toString() : ""; + } + writer.writeNext(rowArray); + } + } + + return filename; + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/service/DynamicTemplateService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/service/DynamicTemplateService.java new file mode 100644 index 0000000..6600186 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/service/DynamicTemplateService.java @@ -0,0 +1,105 @@ +package com.realnet.template.service; + +import org.apache.poi.ss.usermodel.*; +import org.json.simple.JSONObject; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.List; + +@Service +public class DynamicTemplateService { + +// public List processTemplate(MultipartFile file) throws IOException { +// BufferedReader br; +// InputStream is = file.getInputStream(); +// br = new BufferedReader(new InputStreamReader(is)); +// +// Workbook workbook = WorkbookFactory.create(is); +// +// DataFormatter dataFormatter = new DataFormatter(); +// +// Sheet sheet = workbook.getSheetAt(0); +// +// int cols = sheet.getRow(0).getLastCellNum(); +// int firstRowNum = sheet.getFirstRowNum(); +// +// List keys = new ArrayList<>(); +// List jsonList = new ArrayList<>(); +// +// for (Row row : sheet) { +// if (row.getRowNum() == firstRowNum) { +// for (int i = 0; i < cols; i++) { +// String value = dataFormatter.formatCellValue(row.getCell(i)); +// keys.add(value); +// } +// } else { +// JSONObject object = new JSONObject(); +// +// for (int i = 0; i < cols; i++) { +// String key = keys.get(i); +// String value = dataFormatter.formatCellValue(row.getCell(i)); +// object.put(key, value); +// } +// +// jsonList.add(object); +// } +// } +// +// workbook.close(); +// +// return jsonList; +// } +// String fromSheet=dh; +// String fromacolumn= + + + public List processTemplate(MultipartFile file) throws IOException { + InputStream is = file.getInputStream(); + Workbook workbook = WorkbookFactory.create(is); + Sheet sheet = workbook.getSheetAt(0); + DataFormatter dataFormatter = new DataFormatter(); + + List keys = new ArrayList<>(); + List jsonList = new ArrayList<>(); + + for (Row row : sheet) { + if (row.getRowNum() == 0) { + // Read the header row and populate the keys list + for (Cell cell : row) { + String value = dataFormatter.formatCellValue(cell); + keys.add(value); + } + } else { + // Skip the row if all cells are empty + boolean allCellsEmpty = true; + JSONObject object = new JSONObject(); + + for (int i = 0; i < keys.size(); i++) { + String key = keys.get(i); + Cell cell = row.getCell(i); + String value = dataFormatter.formatCellValue(cell); + + object.put(key, value); + + if (!value.isEmpty()) { + allCellsEmpty = false; + } + } + + if (!allCellsEmpty) { + jsonList.add(object); + } + } + } + + workbook.close(); + return jsonList; + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/service/ExcelDataService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/service/ExcelDataService.java new file mode 100644 index 0000000..4154748 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/service/ExcelDataService.java @@ -0,0 +1,96 @@ +//package com.realnet.excel.service; +// +//import java.io.IOException; +//import java.util.ArrayList; +//import java.util.List; +// +//import org.apache.poi.EncryptedDocumentException; +//import org.apache.poi.ss.usermodel.Cell; +//import org.apache.poi.ss.usermodel.DataFormatter; +//import org.apache.poi.ss.usermodel.Row; +//import org.apache.poi.ss.usermodel.Sheet; +//import org.apache.poi.ss.usermodel.Workbook; +//import org.apache.poi.ss.usermodel.WorkbookFactory; +//import org.springframework.stereotype.Service; +// +//import com.realnet.excel.entity.ExcelFileUpload; +// +//@Service +//public class ExcelDataService { +// +// Workbook workbook; +// +// public List getExcelDataAsList() { +// +// List list = new ArrayList(); +// +// // Create a DataFormatter to format and get each cell's value as String +// DataFormatter dataFormatter = new DataFormatter(); +// +// // Create the Workbook +//// try { +//// workbook = WorkbookFactory.create(); +//// } catch (EncryptedDocumentException | IOException e) { +//// e.printStackTrace(); +//// } +// +// // Retrieving the number of sheets in the Workbook +// System.out.println("-------Workbook has '" + workbook.getNumberOfSheets() + "' Sheets-----"); +// +// // Getting the Sheet at index zero +// Sheet sheet = workbook.getSheetAt(0); +// +// // Getting number of columns in the Sheet +// int noOfColumns = sheet.getRow(0).getLastCellNum(); +// System.out.println("-------Sheet has '"+noOfColumns+"' columns------"); +// +// // Using for-each loop to iterate over the rows and columns +// for (Row row : sheet) { +// for (Cell cell : row) { +// String cellValue = dataFormatter.formatCellValue(cell); +// list.add(cellValue); +// } +// } +// +// // filling excel data and creating list as List +// List invList = createList(list, noOfColumns); +// +// // Closing the workbook +// try { +// workbook.close(); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// +// return invList; +// } +// +// private List createList(List excelData, int noOfColumns) { +// +// ArrayList invList = new ArrayList(); +// +// int i = noOfColumns; +// do { +// ExcelFileUpload inv = new ExcelFileUpload(); +// +//// inv.setName(excelData.get(i)); +//// inv.setAmount(Double.valueOf(excelData.get(i + 1))); +//// inv.setNumber(excelData.get(i + 2)); +//// inv.setReceivedDate(excelData.get(i + 3)); +// +// invList.add(inv); +// i = i + (noOfColumns); +// +// } while (i < excelData.size()); +// return invList; +// } +// +//// public int saveExcelData(List invoices) { +//// invoices = repo.saveAll(invoices); +//// return invoices.size(); +//// } +// + + +//} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/service/FileUploadService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/service/FileUploadService.java new file mode 100644 index 0000000..2913ead --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/service/FileUploadService.java @@ -0,0 +1,104 @@ +package com.realnet.template.service; + +import java.io.File; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; +import org.springframework.web.multipart.MultipartFile; + +import com.realnet.template.entity.TemplateFileUpload; +import com.realnet.template.repository.TemplatedataRepo; + +@Service +public class FileUploadService { + + @Autowired + private TemplatedataRepo repo; + + @Value("${projectPath}") + private String projectPath; + + public String uploadFile(MultipartFile file, Long user_id, String entityname) { + try { + + String filepath = "import-data"; + + String file_name = file.getOriginalFilename(); + String substring = file_name.substring(0, file_name.lastIndexOf(".")); + + String str = substring + System.currentTimeMillis(); + +// String location =System.getProperty("user.dir")+filepath; + String location = projectPath + File.separator + filepath; + File dir2 = new File(location); + if (!dir2.exists()) { + dir2.mkdir(); + } + + String file_name2 = file.getOriginalFilename(); + + File staticdir2 = new File(location + "/incomingfile"); + if (!staticdir2.exists()) { + staticdir2.mkdir(); + } + String getpath2 = staticdir2.getAbsolutePath(); + System.out.println(getpath2); + + Path copyLocation2 = Paths.get(staticdir2 + File.separator + StringUtils.cleanPath(file_name2)); + + Files.copy(file.getInputStream(), copyLocation2, StandardCopyOption.REPLACE_EXISTING); + + File staticdir = new File(location + "/processingfile"); + if (!staticdir.exists()) { + staticdir.mkdir(); + } + String getpath = staticdir.getAbsolutePath(); + System.out.println(getpath); + + Path copyLocation = Paths.get(staticdir + File.separator + StringUtils.cleanPath(str + ".xlsx")); + + Files.copy(file.getInputStream(), copyLocation, StandardCopyOption.REPLACE_EXISTING); + + TemplateFileUpload exceldata = new TemplateFileUpload(); + exceldata.setFile_location(location); + + exceldata.setFile_name(file.getOriginalFilename()); + exceldata.setFile_changed_name(str); + // exceldata.setFile_type(file_type); + exceldata.setEntity_name(entityname); + exceldata.setUser_id(user_id); + repo.save(exceldata); + + System.out.println("-----------------------saving data----------------"); + return location; + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException("Could not store file " + file.getOriginalFilename() + ". Please try again!"); + } + + } + + public TemplateFileUpload getTemplatebyid(Long Id) { + TemplateFileUpload one = repo.getOne(Id); + return one; + + } + + public void deleteTemplateFileUploadById(Long id) { + // Check if the entity with the given ID exists + if (repo.existsById(id)) { + repo.deleteById(id); + } + } + + public TemplateFileUpload getFileById(Long id) { + // Use your JPA repository to retrieve the file by its ID + return repo.findById(id).orElse(null); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/service/ImageUploadService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/service/ImageUploadService.java new file mode 100644 index 0000000..d984e50 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/template/service/ImageUploadService.java @@ -0,0 +1,41 @@ +package com.realnet.template.service; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.realnet.template.entity.ImageUpload; +import com.realnet.template.repository.ImageUploadRepo; + +@Service +public class ImageUploadService { + + @Autowired + private ImageUploadRepo Repository; + + public ImageUpload Savedata(ImageUpload data) { + return Repository.save(data); + } + + public List getdetails() { + return (List) Repository.findAll(); + } + + public ImageUpload getdetailsbyId(Long id) { + return Repository.findById(id).get(); + } + + public void delete_by_id(Long id) { + Repository.deleteById(id); + } + + public ImageUpload update(ImageUpload data, Long id) { + ImageUpload old = Repository.findById(id).get(); + // old.setTransactionDate(data.getTransactionDate()); +// old.setTransactionAmount(data.isTransactionAmount()); + final ImageUpload test = Repository.save(old); + return test; + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/CompanyDto.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/CompanyDto.java new file mode 100644 index 0000000..0000a61 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/CompanyDto.java @@ -0,0 +1,15 @@ +package com.realnet.userDTO; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class CompanyDto implements Serializable { + private static final long serialVersionUID = 1L; + private String userEmail; // for load the user who is responsible + private String companyName; + private String workspace; + private String gstNumber; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Email.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Email.java new file mode 100644 index 0000000..5ea7e2d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Email.java @@ -0,0 +1,94 @@ +package com.realnet.userDTO; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@AllArgsConstructor +@NoArgsConstructor +@Getter +@Setter +public class Email extends Rn_Who_Columns { + + /** + * + */ + private static final long serialVersionUID = 1L; + private Long userId; + private String email1; + private String email2; + private String email3; + private String email4; + + private Long id; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + +// private String password; + +// @ManyToOne(fetch = FetchType.LAZY) +// @JoinColumn(name = "ACCOUNT_ID") +// @JsonBackReference +// private Sys_Accounts sys_account; + + //public String getPassword() { +// return password; +// } +// public void setPassword(String password) { +// this.password = password; +// } + // public Sys_Accounts getSys_account() { +// return sys_account; +// } +// public void setSys_account(Sys_Accounts sys_account) { +// this.sys_account = sys_account; +// } + public Long getUserId() { + return userId; + } + + public void setUserId(Long userId) { + this.userId = userId; + } + + public String getEmail1() { + return email1; + } + + public void setEmail1(String email1) { + this.email1 = email1; + } + + public String getEmail2() { + return email2; + } + + public void setEmail2(String email2) { + this.email2 = email2; + } + + public String getEmail3() { + return email3; + } + + public void setEmail3(String email3) { + this.email3 = email3; + } + + public String getEmail4() { + return email4; + } + + public void setEmail4(String email4) { + this.email4 = email4; + } + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/EmailRequest.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/EmailRequest.java new file mode 100644 index 0000000..240a638 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/EmailRequest.java @@ -0,0 +1,8 @@ +package com.realnet.userDTO; + +import lombok.Data; + +@Data +public class EmailRequest { + private String email; +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Login.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Login.java new file mode 100644 index 0000000..ce469c0 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Login.java @@ -0,0 +1,13 @@ +package com.realnet.userDTO; + + +import lombok.Data; + +@Data +public class Login { + + private String username = ""; + + private String password = ""; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/LoginUser.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/LoginUser.java new file mode 100644 index 0000000..094cf50 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/LoginUser.java @@ -0,0 +1,37 @@ +package com.realnet.userDTO; + +public class LoginUser { + + //private String username; + private String email; + private String password; + + /* + * public String getUsername() { return username; } + * + * public void setUsername(String username) { this.username = username; } + */ + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + +// @Override +// public String toString() { +// return "LoginUser [email=" + email + ", password=" + password + "]"; +// } + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/PasswordResetRequest.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/PasswordResetRequest.java new file mode 100644 index 0000000..f0033cd --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/PasswordResetRequest.java @@ -0,0 +1,9 @@ +package com.realnet.userDTO; + +import lombok.Data; + +@Data +public class PasswordResetRequest { + private String oldPassword; + private String newPassword; +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Provider.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Provider.java new file mode 100644 index 0000000..1e9b1b1 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Provider.java @@ -0,0 +1,5 @@ +package com.realnet.userDTO; + +public enum Provider { + LOCAL, GOOGLE +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Rn_Who_AccId_Column.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Rn_Who_AccId_Column.java new file mode 100644 index 0000000..0c97887 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Rn_Who_AccId_Column.java @@ -0,0 +1,76 @@ +package com.realnet.userDTO; + +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.Date; + +@MappedSuperclass +@EntityListeners(AuditingEntityListener.class) +public class Rn_Who_AccId_Column implements Serializable { + private static final long serialVersionUID = 1L; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "CREATED_AT", nullable = false, updatable = false) + @CreatedDate + private Date createdAt; + + // @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createdAt; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "UPDATED_AT", nullable = false) + @LastModifiedDate + private Date updatedAt; + + @Column(name = "CREATED_BY", updatable = false) + private Long createdBy; + + @Column(name = "UPDATED_BY") + private Long updatedBy; + + @Column(name = "ACCOUNT_ID") + private Long accountId; + + public Date getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(Date createdAt) { + this.createdAt = createdAt; + } + + public Date getUpdatedAt() { + return updatedAt; + } + + public void setUpdatedAt(Date updatedAt) { + this.updatedAt = updatedAt; + } + + public Long getCreatedBy() { + return createdBy; + } + + public void setCreatedBy(Long createdBy) { + this.createdBy = createdBy; + } + + public Long getUpdatedBy() { + return updatedBy; + } + + public void setUpdatedBy(Long updatedBy) { + this.updatedBy = updatedBy; + } + + public Long getAccountId() { + return accountId; + } + + public void setAccountId(Long accountId) { + this.accountId = accountId; + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Rn_Who_Columns.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Rn_Who_Columns.java new file mode 100644 index 0000000..98cec7c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Rn_Who_Columns.java @@ -0,0 +1,60 @@ +package com.realnet.userDTO; + +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.Date; + +@MappedSuperclass +@EntityListeners(AuditingEntityListener.class) +public class Rn_Who_Columns implements Serializable { + private static final long serialVersionUID = 1L; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "CREATED_AT", nullable = false, updatable = false) + @CreatedDate + private Date createdAt; + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "UPDATED_AT", nullable = false) + @LastModifiedDate + private Date updatedAt; + @Column(name = "CREATED_BY", updatable = false) + private Long createdBy; + @Column(name = "UPDATED_BY") + private Long updatedBy; + + public Date getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(Date createdAt) { + this.createdAt = createdAt; + } + + public Date getUpdatedAt() { + return updatedAt; + } + + public void setUpdatedAt(Date updatedAt) { + this.updatedAt = updatedAt; + } + + public Long getCreatedBy() { + return createdBy; + } + + public void setCreatedBy(Long createdBy) { + this.createdBy = createdBy; + } + + public Long getUpdatedBy() { + return updatedBy; + } + + public void setUpdatedBy(Long updatedBy) { + this.updatedBy = updatedBy; + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Role.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Role.java new file mode 100644 index 0000000..c3740f7 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Role.java @@ -0,0 +1,59 @@ +package com.realnet.userDTO; + +import java.util.Set; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@AllArgsConstructor +@NoArgsConstructor +@Getter +@Setter +public class Role { + private Long id; + + private String name; + + private String description; + + private Set users; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public Set getUsers() { + return users; + } + + public void setUsers(Set users) { + this.users = users; + } + + + + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/RoleUpdateDto.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/RoleUpdateDto.java new file mode 100644 index 0000000..aaac0fe --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/RoleUpdateDto.java @@ -0,0 +1,36 @@ +package com.realnet.userDTO; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +public class RoleUpdateDto { + + private Long userId; + + private String[] roles; + + public Long getUserId() { + return userId; + } + + public RoleUpdateDto setUserId(Long userId) { + this.userId = userId; + return this; + } + + public String[] getRoles() { + return roles; + } + + public RoleUpdateDto setRoles(String[] roles) { + this.roles = roles; + return this; + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Sys_Accounts.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Sys_Accounts.java new file mode 100644 index 0000000..c0e9989 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Sys_Accounts.java @@ -0,0 +1,23 @@ +package com.realnet.userDTO; + +import java.util.List; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +@Data +@ToString(exclude="users") +@EqualsAndHashCode(callSuper=false) +public class Sys_Accounts { + private Long id; + + private String companyName; + + private String workspace; + + private String gstNumber; + + private List users; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/User.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/User.java new file mode 100644 index 0000000..91b1fa5 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/User.java @@ -0,0 +1,98 @@ +package com.realnet.userDTO; + +import java.util.Set; + +import lombok.AllArgsConstructor; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +//@Data +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@ToString(exclude = "sys_account") +@EqualsAndHashCode(callSuper = false) +public class User extends Rn_Who_Columns { // implements Comparable + /** + * + */ + private static final long serialVersionUID = 1L; + + + private Long userId; + + private String firstName; + + private String lastName; + + private String fullName; + + private String email; + + private String username; + + private String password; + + // added = 7.12.20 + private int menu_group_id; + + private String status; // for invitation + + private String department; + + private String about; + private String photos; + + private String role; + + // private String company; + + private int securityProviderId; + + private int defaultCustomerId; + + private String phone; + + private String address1; + + private String address2; + private String country; + + private String postal; + + private boolean enabled; + private boolean isBlocked; + private String secretQuestion; + private String secretAnswer; + private boolean enableBetaTesting; + private boolean enableRenewal; + private String pancard; + + private String working; + + private String managing_work; + + private Long checknumber; + + private Provider provider; + + private Set roles; + + + private Sys_Accounts sys_account; + + +// public void setChecknumber(long nextLong) { +// this.checknumber=nextLong; +// +// } + +// @Column(name = "Accounts_id") +// private int account_id; + + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/UserDto.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/UserDto.java new file mode 100644 index 0000000..3b0a0fc --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/UserDto.java @@ -0,0 +1,26 @@ +package com.realnet.userDTO; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.io.Serializable; +import java.util.Set; + +@Data +public class UserDto implements Serializable { + private static final long serialVersionUID = 1L; +// private String username; +// private String password; + private String firstName; + private String lastName; + private String password; + private String email; + private String fullName; + private String department; + private int menuGroupId; + @JsonIgnore + private String phone; + @JsonIgnore + private Set roles; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/UserProfileDTO.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/UserProfileDTO.java new file mode 100644 index 0000000..8f64f14 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/UserProfileDTO.java @@ -0,0 +1,21 @@ +package com.realnet.userDTO; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class UserProfileDTO implements Serializable { + /** + * + */ + private static final long serialVersionUID = 1L; + + private String fullName; + private String pronounce; + private String role; + private String department; + private String about; + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/controller/UserListController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/controller/UserListController.java new file mode 100644 index 0000000..6c3eed5 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/controller/UserListController.java @@ -0,0 +1,175 @@ +package com.realnet.userlist.controller; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.List; +import java.util.Optional; +import java.util.zip.DataFormatException; +import java.util.zip.Deflater; +import java.util.zip.Inflater; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.http.ResponseEntity.BodyBuilder; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +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.multipart.MultipartFile; + +import com.realnet.userlist.entity.UserImage; +import com.realnet.userlist.entity.UserList; +import com.realnet.userlist.repository.UserImageRepository; +import com.realnet.userlist.service.UserListService; + +import io.swagger.annotations.Api; + +@RestController +@CrossOrigin(origins = "http://localhost:4200", maxAge = 3600) +//@CrossOrigin("*") +@RequestMapping(value = "/user_list", produces=org.springframework.http.MediaType.APPLICATION_JSON_VALUE) +@Api(tags = {"/user_list"}) +public class UserListController { + + @Autowired + private UserImageRepository userImageRepository; + + @Autowired + private UserListService userListService; + + @PostMapping("/create") + public ResponseEntity add(@RequestBody UserList user){ + UserList addToDb = this.userListService.addToDb(user); + return ResponseEntity.ok(addToDb); + } + + @PutMapping("/update") + public ResponseEntity update(@RequestBody UserList user){ + UserList updateToDb = this.userListService.updateToDb(user); + return ResponseEntity.ok(updateToDb); + } + + @GetMapping("/get-one/{id}") + public ResponseEntity getOne(@PathVariable("id") Long id){ + UserList oneById = this.userListService.getOneById(id); + return ResponseEntity.ok(oneById); + } + + @GetMapping("/get-all") + public List getAll(){ + List allFromDb = this.userListService.getAllFromDb(); + return allFromDb; + } + + @DeleteMapping("/delete/{id}") + public void delete(@PathVariable("id") Long id) { + System.out.println("Request came to delete API.."); + + // parsing Long value into String and then call get image by user's id API. + String rawId = String.valueOf(id); + Optional findByUser = this.userImageRepository.findByUser(rawId); + + // delete users image before deleting user. + this.userImageRepository.deleteById(findByUser.get().getId()); + + // delete user after deleting profile image. + this.userListService.deleteFromDbById(id); + } + + @PostMapping("/upload") + public BodyBuilder uplaodImage(@RequestParam("imageFile") MultipartFile file, + @RequestParam("user_id") Long user_id) throws IOException { + + System.out.println("Original Image Byte Size - " + file.getBytes().length); + UserImage file1 = new UserImage(file.getOriginalFilename(), file.getContentType(), + compressBytes(file.getBytes())); + + file1.setFilename(file.getOriginalFilename()); + file1.setType(file.getContentType()); + file1.setUser_id(String.valueOf(user_id)); + + this.userImageRepository.save(file1); + return ResponseEntity.status(HttpStatus.OK); + } + + @GetMapping("/get/{user}") + public UserImage getImage(@PathVariable("user") Integer user_id) throws Exception { + + System.out.println("Id of User is: " + user_id); + String rawId = String.valueOf(user_id); + + Optional retrievedImage = null; + try { + retrievedImage = userImageRepository.findByUser(rawId); + } catch (Exception e) { + System.out.println("No image found for this user"); + } + +// if(retrievedImage == null) { +// throw new Exception("No image found for this user"); +// } + UserImage img = new UserImage(retrievedImage.get().getFilename(), retrievedImage.get().getType(), + decompressBytes(retrievedImage.get().getPicByte())); + return img; + } + +// @GetMapping("/get/{imageName}") +// public UserImage getImage(@PathVariable("imageName") String imageName) throws IOException { +// +// System.out.println("Name of file is: " + imageName); +// +// final Optional retrievedImage = userImageRepository.findByFilename(imageName); +// UserImage img = new UserImage(retrievedImage.get().getFilename(), retrievedImage.get().getType(), +// decompressBytes(retrievedImage.get().getPicByte())); +// return img; +// } +// + // compress the image bytes before storing it in the database + public static byte[] compressBytes(byte[] data) { + Deflater deflater = new Deflater(); + deflater.setInput(data); + deflater.finish(); + + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(data.length); + byte[] buffer = new byte[1024]; + while (!deflater.finished()) { + int count = deflater.deflate(buffer); + outputStream.write(buffer, 0, count); + } + try { + outputStream.close(); + } catch (IOException e) { + } + System.out.println("Compressed Image Byte Size - " + outputStream.toByteArray().length); + + return outputStream.toByteArray(); + } + + // uncompress the image bytes before returning it to the angular application + public static byte[] decompressBytes(byte[] data) { + Inflater inflater = new Inflater(); + inflater.setInput(data); + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(data.length); + byte[] buffer = new byte[1024]; + try { + while (!inflater.finished()) { + int count = inflater.inflate(buffer); + outputStream.write(buffer, 0, count); + } + outputStream.close(); + } catch (IOException ioe) { + } catch (DataFormatException e) { + } + return outputStream.toByteArray(); + } + + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/entity/UserImage.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/entity/UserImage.java new file mode 100644 index 0000000..acc7000 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/entity/UserImage.java @@ -0,0 +1,89 @@ +package com.realnet.userlist.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + +@Entity +@Table(name = "user_image") +public class UserImage { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; + private String filename; + private String type; + private String user; + + @Column(name = "picByte", length = 5000) + private byte[] picByte; + +// @ManyToOne(fetch = FetchType.EAGER) +// private UserList userlist; + + public UserImage() { + + } + + public UserImage(String name, String type, byte[] picByte) { + this.filename = name; + this.type = type; + this.picByte = picByte; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getFilename() { + return filename; + } + + public void setFilename(String filename) { + this.filename = filename; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getUser_id() { + return user; + } + + public void setUser_id(String user_id) { + this.user = user_id; + } + + public byte[] getPicByte() { + return picByte; + } + + public void setPicByte(byte[] picByte) { + this.picByte = picByte; + } + +// public UserList getUserlist() { +// return userlist; +// } +// +// public void setUserlist(UserList userlist) { +// this.userlist = userlist; +// } + +// + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/entity/UserList.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/entity/UserList.java new file mode 100644 index 0000000..1771acf --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/entity/UserList.java @@ -0,0 +1,411 @@ +package com.realnet.userlist.entity; + +import java.util.ArrayList; +import java.util.List; + +import javax.persistence.CascadeType; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.OneToMany; +import javax.persistence.Table; + +import com.fasterxml.jackson.annotation.JsonIgnore; + +@Entity +@Table(name = "user_list") +public class UserList { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; + + private String user_id; + private String name; + private String gender; + private String dob; + private String email; + private String username; + private String password; + private String firstname; + private String lastname; + private String security_provider_id; + private String default_customer_id; + private String company; + private String phone; + private String address1; + private String address2; + private String country; + private String postal; + private String role; + private String other_roles; + private boolean is_active; + private boolean is_blocked; + private String secret_question; + private String secret_answer; + private boolean enable_beta_testing; + private boolean enable_renewal; + private String created_at; + private String created_by; + private String updated_at; + private String updated_by; + private String about; + private String department; + private String fullname; + private String photos; + private String status; + private String account_id; + private String checknumber; + private String managing_work; + private String pancard; + private String working; + private int menu_group; + +// @OneToMany(mappedBy = "userlist", cascade = CascadeType.ALL, fetch = FetchType.LAZY) +// @JsonIgnore +// private List img = new ArrayList<>(); + + public UserList() {} + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + + public int getMenu_group() { + return menu_group; + } + + public void setMenu_group(int menu_group) { + this.menu_group = menu_group; + } + + public String getUser_id() { + return user_id; + } + + public void setUser_id(String user_id) { + this.user_id = user_id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getGender() { + return gender; + } + + public void setGender(String gender) { + this.gender = gender; + } + + public String getDob() { + return dob; + } + + public void setDob(String dob) { + this.dob = dob; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getFirstname() { + return firstname; + } + + public void setFirstname(String firstname) { + this.firstname = firstname; + } + + public String getLastname() { + return lastname; + } + + public void setLastname(String lastname) { + this.lastname = lastname; + } + + public String getSecurity_provider_id() { + return security_provider_id; + } + + public void setSecurity_provider_id(String security_provider_id) { + this.security_provider_id = security_provider_id; + } + + public String getDefault_customer_id() { + return default_customer_id; + } + + public void setDefault_customer_id(String default_customer_id) { + this.default_customer_id = default_customer_id; + } + + public String getCompany() { + return company; + } + + public void setCompany(String company) { + this.company = company; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getAddress1() { + return address1; + } + + public void setAddress1(String address1) { + this.address1 = address1; + } + + public String getAddress2() { + return address2; + } + + public void setAddress2(String address2) { + this.address2 = address2; + } + + public String getCountry() { + return country; + } + + public void setCountry(String country) { + this.country = country; + } + + public String getPostal() { + return postal; + } + + public void setPostal(String postal) { + this.postal = postal; + } + + public String getRole() { + return role; + } + + public void setRole(String role) { + this.role = role; + } + + public String getOther_roles() { + return other_roles; + } + + public void setOther_roles(String other_roles) { + this.other_roles = other_roles; + } + + public boolean isIs_active() { + return is_active; + } + + public void setIs_active(boolean is_active) { + this.is_active = is_active; + } + + public boolean isIs_blocked() { + return is_blocked; + } + + public void setIs_blocked(boolean is_blocked) { + this.is_blocked = is_blocked; + } + + public String getSecret_question() { + return secret_question; + } + + public void setSecret_question(String secret_question) { + this.secret_question = secret_question; + } + + public String getSecret_answer() { + return secret_answer; + } + + public void setSecret_answer(String secret_answer) { + this.secret_answer = secret_answer; + } + + public boolean isEnable_beta_testing() { + return enable_beta_testing; + } + + public void setEnable_beta_testing(boolean enable_beta_testing) { + this.enable_beta_testing = enable_beta_testing; + } + + public boolean isEnable_renewal() { + return enable_renewal; + } + + public void setEnable_renewal(boolean enable_renewal) { + this.enable_renewal = enable_renewal; + } + + public String getCreated_at() { + return created_at; + } + + public void setCreated_at(String created_at) { + this.created_at = created_at; + } + + public String getCreated_by() { + return created_by; + } + + public void setCreated_by(String created_by) { + this.created_by = created_by; + } + + public String getUpdated_at() { + return updated_at; + } + + public void setUpdated_at(String updated_at) { + this.updated_at = updated_at; + } + + public String getUpdated_by() { + return updated_by; + } + + public void setUpdated_by(String updated_by) { + this.updated_by = updated_by; + } + + public String getAbout() { + return about; + } + + public void setAbout(String about) { + this.about = about; + } + + public String getDepartment() { + return department; + } + + public void setDepartment(String department) { + this.department = department; + } + + public String getFullname() { + return fullname; + } + + public void setFullname(String fullname) { + this.fullname = fullname; + } + + public String getPhotos() { + return photos; + } + + public void setPhotos(String photos) { + this.photos = photos; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getAccount_id() { + return account_id; + } + + public void setAccount_id(String account_id) { + this.account_id = account_id; + } + + public String getChecknumber() { + return checknumber; + } + + public void setChecknumber(String checknumber) { + this.checknumber = checknumber; + } + + public String getManaging_work() { + return managing_work; + } + + public void setManaging_work(String managing_work) { + this.managing_work = managing_work; + } + + public String getPancard() { + return pancard; + } + + public void setPancard(String pancard) { + this.pancard = pancard; + } + + public String getWorking() { + return working; + } + + public void setWorking(String working) { + this.working = working; + } + +// public List getImg() { +// return img; +// } +// +// public void setImg(List img) { +// this.img = img; +// } + + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/repository/UserImageRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/repository/UserImageRepository.java new file mode 100644 index 0000000..7f89bf5 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/repository/UserImageRepository.java @@ -0,0 +1,17 @@ +package com.realnet.userlist.repository; + +import java.util.Optional; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.realnet.userlist.entity.UserImage; + +public interface UserImageRepository extends JpaRepository { + + Optional findByid(String user_id); + + Optional findByFilename(String filename); + + Optional findByUser(String user); + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/repository/UserListRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/repository/UserListRepository.java new file mode 100644 index 0000000..cc876a5 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/repository/UserListRepository.java @@ -0,0 +1,9 @@ +package com.realnet.userlist.repository; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.realnet.userlist.entity.UserList; + +public interface UserListRepository extends JpaRepository { + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/service/UserListService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/service/UserListService.java new file mode 100644 index 0000000..dd4cdb7 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/service/UserListService.java @@ -0,0 +1,20 @@ +package com.realnet.userlist.service; + +import java.util.List; + +import com.realnet.userlist.entity.UserList; + + +public interface UserListService { + + public UserList addToDb(UserList userList); + + public UserList updateToDb(UserList userList); + + public UserList getOneById(Long id); + + public List getAllFromDb(); + + public void deleteFromDbById(Long id); + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/service/impl/UserListServiceImpl.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/service/impl/UserListServiceImpl.java new file mode 100644 index 0000000..0c61f13 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/service/impl/UserListServiceImpl.java @@ -0,0 +1,49 @@ +package com.realnet.userlist.service.impl; + +import java.util.List; +import java.util.Optional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.realnet.userlist.entity.UserList; +import com.realnet.userlist.repository.UserListRepository; +import com.realnet.userlist.service.UserListService; + +@Service +public class UserListServiceImpl implements UserListService { + + @Autowired + private UserListRepository userListRepository; + + @Override + public UserList addToDb(UserList userList) { + UserList save = this.userListRepository.save(userList); + return save; + } + + @Override + public UserList updateToDb(UserList userList) { + UserList save = this.userListRepository.save(userList); + return save; + } + + @Override + public UserList getOneById(Long id) { + Optional findById = this.userListRepository.findById(id); + return findById.get(); + } + + @Override + public List getAllFromDb() { + List findAll = this.userListRepository.findAll(); + return findAll; + } + + @Override + public void deleteFromDbById(Long id) { + this.userListRepository.deleteById(id); + System.out.println("Deletion success..."); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller/RoleController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller/RoleController.java new file mode 100644 index 0000000..5b9b023 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller/RoleController.java @@ -0,0 +1,138 @@ +package com.realnet.users.controller; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.users.entity.Role; +import com.realnet.users.repository.RoleRepo; +import com.realnet.users.service.RoleService; +import com.realnet.users.service1.AppUserService; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@RestController +@RequestMapping(value = "/api") // , produces = MediaType.APPLICATION_JSON_VALUE) +@Api(tags = { "Role Assignment" }) +public class RoleController { + + @Autowired(required=false) + private AppUserService userService; + + @Autowired + private RoleService roleService; + + @Autowired + private RoleRepo roleRepo; + + // GET profile details + @ApiOperation(value = "Gets All Roles", response = Role.class) + @GetMapping("/roles") + public ResponseEntity getAllRoles(@RequestParam(value = "page", defaultValue = "0", required = false) Integer page, + @RequestParam(value = "size", defaultValue = "20", required = false) Integer size) { + //Pageable paging = PageRequest.of(page, size, Sort.by("created_at").descending()); + //Page result = roleService.getAll(paging); + List roles = roleService.getRoles(); + return ResponseEntity.ok().body(roles); + } + + // GET USER BY ID ADDED BY ADMIN + @ApiOperation(value = "Get Roles Id", response = Role.class) + @GetMapping("/roles/{id}") + public ResponseEntity getRolesById(@PathVariable(value = "id") Long id) { + Role role = roleService.getRoleById(id); + return ResponseEntity.ok().body(role); + } + + /* ========WORKING CODE ======= */ + // add or remove a Role on a user + @GetMapping("org-users/{id}/add-roles/{roleId}") + public ResponseEntity addRole(@PathVariable("id") Long id, @PathVariable("roleId") Long roleId) { + roleService.addRole(id, roleId); + Map res = new HashMap(); + res.put("message", "Role Added Succcessfully"); + return ResponseEntity.ok(res); + } + + @GetMapping("org-users/{id}/remove-roles/{roleId}") + public ResponseEntity removeRole(@PathVariable("id") Long id, @PathVariable("roleId") Long roleId) { + roleService.removeRole(id, roleId); + Map res = new HashMap(); + res.put("message", "Role removed Succcessfully"); + return ResponseEntity.ok(res); + } + +// ADD NEW ROLE + @PostMapping("/roles") + public ResponseEntity add(@RequestBody Role role) { + Role save = roleRepo.save(role); + + return ResponseEntity.ok(save); + } + + // =================================== + +// @ApiOperation(value = "Assign roles to an user", response = ServiceResponse.class) +// @ApiResponses(value = { +// @ApiResponse(code = 200, message = "Roles successfully assigned to user!"), //response = UserResponse.class), +// @ApiResponse(code = 401, message = Constants.UNAUTHORIZED_MESSAGE), //response = BadRequestResponse.class), +// @ApiResponse(code = 403, message = Constants.FORBIDDEN_MESSAGE), //response = BadRequestResponse.class), +// @ApiResponse(code = 422, message = Constants.INVALID_DATA_MESSAGE) //, response = InvalidDataResponse.class), +// }) +// @PreAuthorize("hasRole('ROLE_ADMIN')") +// @PutMapping("/assign") +// public ResponseEntity assignRoles(@Valid @RequestBody RoleUpdateDto roleUpdateDto) { +// User user = userService.getById(roleUpdateDto.getUserId()); +// +// Arrays.stream(roleUpdateDto.getRoles()).forEach(role -> { +// Role roleObject = roleRepo.findByName(role); +// //if (roleObject != null && !user.hasRole(role)) { +// user.addRole(roleObject); +// } +// }); +// +// userService.update(user); +// +// return ResponseEntity.ok().body(user); +// } +// +// @ApiOperation(value = "Assign roles to an user", response = ServiceResponse.class) +// @ApiResponses(value = { +// @ApiResponse(code = 200, message = "Roles successfully assigned to user!"), // response = UserResponse.class), +// @ApiResponse(code = 401, message = Constants.UNAUTHORIZED_MESSAGE), // response = BadRequestResponse.class), +// @ApiResponse(code = 403, message = Constants.FORBIDDEN_MESSAGE), //response = BadRequestResponse.class), +// @ApiResponse(code = 422, message = Constants.INVALID_DATA_MESSAGE)//, response = InvalidDataResponse.class), +// }) +// @PreAuthorize("hasRole('ROLE_ADMIN')") +// @PutMapping("/revoke") +// public ResponseEntity revokeRoles(@Valid @RequestBody RoleUpdateDto roleUpdateDto) { +// User user = userService.findById(roleUpdateDto.getUserId()); +// +// Arrays.stream(roleUpdateDto.getRoles()).forEach(role -> { +// Role roleObject = roleService.findByName(role); +// +// if (roleObject != null && user.hasRole(role)) { +// user.removeRole(roleObject); +// } +// }); +// +// userService.update(user); +// +// return ResponseEntity.ok().body(user); +// } +//} + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller/UserController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller/UserController.java new file mode 100644 index 0000000..b03cf67 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller/UserController.java @@ -0,0 +1,432 @@ +package com.realnet.users.controller; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.Base64; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +import javax.servlet.http.HttpServletRequest; +import javax.validation.Valid; + +import org.apache.commons.io.FilenameUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +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.multipart.MultipartFile; + +import com.realnet.config.EmailService; +import com.realnet.fnd.service.FileStorageService; +import com.realnet.users.entity.PasswordResetRequest; +import com.realnet.users.entity.PasswordResetToken; +import com.realnet.users.entity.Sys_Accounts; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.repository1.AppUserRepository; +import com.realnet.users.repository1.passwordTokenRepository; +import com.realnet.users.response.MessageResponse; +import com.realnet.users.service1.AppUserServiceImpl; +import com.realnet.utils.Port_Constant; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@RestController +@RequestMapping(value = "/api") // , produces = MediaType.APPLICATION_JSON_VALUE) +@Api(tags = { "User Mnagement" }) +public class UserController { + + @Autowired + private AppUserServiceImpl userService; + @Autowired + private AppUserRepository appUserRepository; + + @Autowired + private BCryptPasswordEncoder bcryptEncoder; + + @Autowired + private passwordTokenRepository passwordTokenRepository; + + @Autowired + private FileStorageService fileStorageService; + + private EmailService emailService; + + @Autowired + public UserController(AppUserServiceImpl appUserServiceImpl, EmailService emailService) { + super(); + this.emailService = emailService; + } + + @Value("${projectPath}") + private String projectPath; + + // GET profile details (ADMIN, USER BOTH, WHO IS LOGGED IN) + @ApiOperation(value = "Gets current user information", response = AppUser.class) + @GetMapping("/user-profile") + public ResponseEntity getUserProfile() { + AppUser user = userService.getLoggedInUser(); + return ResponseEntity.ok().body(user); + } + + // UPDATE (ADMIN, USER BOTH, WHO IS LOGGED IN) +// @ApiOperation(value = "Update current user information", response = User.class) +// @PutMapping("/user-profile") +// public ResponseEntity updateUserProfile(@Valid @RequestBody UserProfileDTO userRequest) { +// String loggedInUserEmail = userService.getLoggedInUserEmail(); +// AppUser user = userService.updateAppUserDto(userRequest); +// return new ResponseEntity<>(user, HttpStatus.ACCEPTED); +// } + + // UPLOAD IMAGE + @PostMapping("/upload") + public ResponseEntity uploadProfilePic(@RequestParam("imageFile") MultipartFile file) throws IOException { + AppUser user = userService.getLoggedInUser(); + // String userId = Long.toString(user.getUserId()); + String userId = String.valueOf(user.getUserId()); + System.out.println("USER ID = " + userId); + // String uploadPath = + // projectPath.concat("/src/main/resources/uploaded-picture/" + userId + "/"); + String uploadPath = projectPath.concat("/src/main/resources/uploaded-picture/"); + System.out.println("UPLOAD PATH = " + uploadPath); + + fileStorageService.uploadProfilePicture(file, uploadPath); + + String fileName = file.getOriginalFilename(); + // String head = fileName.substring(0, fileName.indexOf(".")); + String ext = fileName.substring(fileName.lastIndexOf(".")); + String fileNewName = "profile-pic-" + userId + ext; + + System.out.println( + "UPLOAD PATH = " + uploadPath + "\nFILE NAME = " + fileNewName + "\nFile Size = " + file.getSize()); + user.setPhotoName(fileNewName); + boolean success = userService.insertOrSaveUser(user); + Map res = new HashMap(); + if (success) { + res.put("success", success); + return new ResponseEntity<>(res, HttpStatus.OK); + } else { + res.put("success", success); + return new ResponseEntity<>(res, HttpStatus.BAD_REQUEST); + } + } + + // GET IMAGE + @GetMapping("/retrieve-image") + public ResponseEntity getProfilePic() { + AppUser user = userService.getLoggedInUser(); + String imageName = user.getPhotoName(); + String imagePath = System.getProperty("java.io.tmpdir") + System.getProperty("file.separator") + imageName; + File file = new File(imagePath); + Map res = new HashMap(); + + String encodeBase64 = null; + try { + String ext = FilenameUtils.getExtension(file.getName()); + FileInputStream fis = new FileInputStream(file); + // byte[] media = IOUtils.toByteArray(fis); + byte[] bytes = new byte[(int) file.length()]; + fis.read(bytes); + encodeBase64 = Base64.getEncoder().encodeToString(bytes); + String data = "data:/image/" + ext + ";base64," + encodeBase64; + fis.close(); + res.put("image", data); + return new ResponseEntity<>(res, HttpStatus.OK); + } catch (IOException e) { + log.debug("File Not Found Exception Handled: {}", e.getMessage()); + res.put("image", "Not Found"); + return new ResponseEntity<>(res, HttpStatus.NOT_FOUND); + } + } + + // ====================USER ACCOUNT DETAILS================ + // ########## NEED MOD ########## + // GET ADMIN profile details (admin accounts) + @ApiOperation(value = "Get User Account Details", response = Sys_Accounts.class) + @GetMapping("/user-account") + public ResponseEntity getUserAccountDetails() { + AppUser user = userService.getLoggedInUser(); + Sys_Accounts sys_account = user.getAccount(); + System.out.println("Company Details : " + sys_account); + return ResponseEntity.ok().body(sys_account); + } + + // =========== reset password ============= + @ApiOperation(value = "Reset Password", response = PasswordResetRequest.class) + @PostMapping("/reset-password") + public ResponseEntity resetPassword(@Valid @RequestBody PasswordResetRequest passwordResetReq) { + AppUser reset = userService.resetPassword(passwordResetReq.getUserId(), passwordResetReq.getHash(), + passwordResetReq.getNewPassword()); + System.out.println("resetPassword() Controller : RESET ? " + reset); + Map res = new HashMap(); + if (reset != null) { + res.put("reset", reset); + return new ResponseEntity<>(res, HttpStatus.ACCEPTED); + } else { + res.put("reset", reset); + return new ResponseEntity<>(res, HttpStatus.BAD_REQUEST); + } + } +// new Reset password +// by Gaurav + + @ApiOperation(value = "Reset Password", response = PasswordResetRequest.class) + @PostMapping("/reset_password") + public ResponseEntity resetPasswordnew(@Valid @RequestBody PasswordResetRequest passwordResetReq) { + ResponseEntity reset = userService.resetPasswordnew(passwordResetReq); + return reset; + + } + + @ApiOperation(value = "Forgot password", response = PasswordResetRequest.class) + @PostMapping("/forgot_password") + public ResponseEntity forgotpassword(@Valid @RequestBody PasswordResetRequest passwordResetReq) { + ResponseEntity reset = userService.forgotpassword(passwordResetReq); + return reset; + } + +// Reset password by email sending + @PostMapping("/resources/forgotpassword") + public ResponseEntity resetPassword(HttpServletRequest request, @RequestParam("email") String email) { + AppUser user = userService.findUserByEmail(email); + if (user == null) { + return ResponseEntity.badRequest().body(new MessageResponse(email + " not found")); + } else { + String token = UUID.randomUUID().toString(); + userService.createPasswordResetTokenForUser(user, token); + + String em = user.getEmail(); + String subject = "Pass reset"; + String url = Port_Constant.FRONTEND_PORTAL_DOMAIN + "/#/forgotresetpassword/" + token; + // String url = "http://surecns.ml:30165/#/forgotresetpassword/" + token; +// String url = "http://localhost:9191/api" + "/resources/savePassword/" + token; + emailService.constructEmail(em, subject, url); + return new ResponseEntity<>("Email sent success", HttpStatus.OK); + } + + } + + // get email save link + @PostMapping("/resources/savePassword/{token}") + public ResponseEntity savePassword(@PathVariable String token, + @Valid @RequestBody PasswordResetRequest passwordResetReq) { + + PasswordResetToken resetToken = passwordTokenRepository.findByToken(token); + if (resetToken == null) { + return ResponseEntity.badRequest().body(new MessageResponse("Token expire")); + } + +// AppUser a = appUserRepository.findById(resetToken.getUser().getUserId()).orElse(null); + AppUser a = appUserRepository.findByEmail(resetToken.getUser().getEmail()); + + if (a != null) { + + if (passwordResetReq.getNewPassword().equals(passwordResetReq.getConfirmPassword())) { + + a.setUserPassw(bcryptEncoder.encode(passwordResetReq.getNewPassword())); + a.setPwdChangedCnt(a.getPwdChangedCnt() != null ? (long) 1 + a.getPwdChangedCnt() : (long) 1); + a.setLastPwdChangedDate(new Date()); + a.setChangePassw(passwordResetReq.getNewPassword()); + + appUserRepository.save(a); + passwordTokenRepository.delete(resetToken); + return new ResponseEntity<>(a, HttpStatus.OK); + } + return ResponseEntity.badRequest().body(new MessageResponse("password and confirm password not match")); + } + return ResponseEntity.badRequest().body(new MessageResponse("user not found")); + } + +// String result = userService.validatePasswordResetToken(token); +// +// +// if(result != null) { +// return null; +// } +// AppUser reset = userService.forgotpassword(passwordResetReq); +// System.out.println("resetPassword() Controller : RESET ? " + reset); +// Map res = new HashMap(); +// if (reset!=null) { +// res.put("reset", reset); +// return new ResponseEntity<>(res, HttpStatus.ACCEPTED); +// } else { +// res.put("reset", reset); +// return new ResponseEntity<>(res, HttpStatus.BAD_REQUEST); +// } + +// } + +// AppUser user = userService.getUserByPasswordResetToken(token); +// +// +//// AppUser user = userService.getUserByPasswordResetToken(passwordDto.getToken()); +// if(user != null) { +// userService.changeUserPassword(user, passwordDto.getNewPassword()); +// +// } +// +// return new ResponseEntity<>(user,HttpStatus.OK); +// } + + @GetMapping("/get-one/{userId}") + public ResponseEntity getOne(@PathVariable("userId") Long userId) { + AppUser byId = this.userService.getById(userId).orElse(null); + return ResponseEntity.ok(byId); + } + // ############=== NEED MODIFICATION ========###### + + // GET profile details (user ADDED BY ADMIN) +// @ApiOperation(value = "Get Company User Details", response = User.class) +// @GetMapping("/org-users") +// public ResponseEntity getUsersByAccount(@RequestParam(value = "page", defaultValue = "0", required = false) Integer page, +// @RequestParam(value = "size", defaultValue = "20", required = false) Integer size) { +// AppUser adminUser = userService.getLoggedInUser(); +// // Sys_Accounts Sys_Account = adminUser.getCompany(); +// Sys_Accounts sys_account = adminUser.getSys_account(); +//// Long account_id = Sys_Account.getId(); +// +//// List users = userService.getUsersByAccountId(account_id); +// // OR +//// Sys_Accounts company = companyService.getById(account_id); +//// List users = company.getUsers(); +// System.out.println("Company Details : " + sys_account); +// Long accId = adminUser.getSys_account().getId(); +// Pageable paging = PageRequest.of(page, size, Sort.by("created_at").descending()); +// +// // invited user list will show here +// List invitedUsers = userRepo.findByAccountIdAndStatus(accId, UserConstant.STATUS_INVITED, paging); +// +// +// return ResponseEntity.ok().body(invitedUsers); +// } + + // GET USER BY ID (ADDED BY ADMIN) +// @ApiOperation(value = "Get Company User By Id", response = User.class) +// @GetMapping("/org-users/{id}") +// public ResponseEntity getUserById(@PathVariable(value = "id") Long id) { +// User user = userService.getById(id); +// if (user == null) { +// throw new ResourceNotFoundException("User Not Found ::" + id); +// } +// return ResponseEntity.ok().body(user); +// } + + // SAVE A USER BY ADMIN +// @ApiOperation(value = "Add A New Company User", response = User.class) +// @PostMapping("/org-users") +// public ResponseEntity createUser(@Valid @RequestBody User userReq) throws MessagingException, IOException { +// +// // admin will invite and create user with default value +// User user = userService.createUserByAdmin(userReq); +// +// // ====EMAIL CODE==== +// User admin = userService.getLoggedInUser(); +// String from = admin.getEmail(); // from is not working +// String to = userReq.getEmail(); +// String subject = "Invitation To Collaborate"; +// String text = "Dear " + userReq.getFirstName() + ",
    " + "You have an Invitation from " +// + admin.getFullName() + ". Please Follow the steps below.
    " +// + "1. Log on to https://localhost:4200/login
    " +// + "2. Log on to the system with the following User Name and Password.
    " +// + "3. User Name : " + userReq.getEmail() + " Password : " + userReq.getPassword() + "
    " +// + "4. Change the existing system generated password and coninue."; +//// try { +//// //emailService.sendSimpleMessage(from, to, subject, text); +//// } catch (MailException mailException) { +//// System.out.println(mailException); +//// } +// emailService.sendEmailWithAttachment(to, subject, text); +// +// return ResponseEntity.status(HttpStatus.CREATED).body(user); +// } + + // UPDATE USER ADDED BY ADMIN +// @ApiOperation(value = "Update A Company User", response = User.class) +// @PutMapping("/org-users/{id}") +// public ResponseEntity updateUser(@PathVariable(value = "id") Long id, @Valid @RequestBody User user) { +// User updatedUser = userService.updateById(id, user); +// return ResponseEntity.status(HttpStatus.ACCEPTED).body(updatedUser); +// } + + // DELETE USER ADDED BY ADMIN +// @DeleteMapping("/org-users/{id}") +// public ResponseEntity> deleteUser(@PathVariable(value = "id") Long id) { +// boolean deleted = userService.deleteById(id); +// Map response = new HashMap<>(); +// response.put("deleted", Boolean.TRUE); +// // response.put("deleted", deleted); +// return ResponseEntity.status(HttpStatus.OK).body(response); +// } +// // ==== access by admin done + +// @ApiOperation(value = "Gets current user information", response = UserResponse.class) +// @RequestMapping(value = "/user", method = RequestMethod.GET, produces = {"application/json"}) +// public UserResponse getUserInformation(@RequestParam(value = "name", required = false) String userIdParam, HttpServletRequest req) { +// +// String loggedInUserName = userService.getLoggedInUserName(); +// +// User user; +// boolean provideUserDetails = false; +// +// if (Strings.isNullOrEmpty(userIdParam)) { +// provideUserDetails = true; +// user = userService.getLoggedInUser(); +// } +// else if (loggedInUserName.equals(userIdParam)) { +// provideUserDetails = true; +// user = userService.getLoggedInUser(); +// } +// else { +// //Check if the current user is superuser then provide the details of requested user +// provideUserDetails = true; +// user = userService.getUserInfoByUserId(userIdParam); +// } +// +// UserResponse resp = new UserResponse(); +// if (provideUserDetails) { +// resp.setOperationStatus(ResponseStatusEnum.SUCCESS); +// } +// else { +// resp.setOperationStatus(ResponseStatusEnum.NO_ACCESS); +// resp.setOperationMessage("No Access"); +// } +// resp.setData(user); +// return resp; +// } +// +// +// +// // @Secured({"ROLE_ADMIN", "ROLE_USER"}) +// @PreAuthorize("hasRole('ADMIN')") +// @RequestMapping(value = "/users", method = RequestMethod.GET) +// public List listUser() { +// return userService.getAll(); +// } +// +// // @Secured("ROLE_USER") +// // @PreAuthorize("hasRole('USER')") +// // @PreAuthorize("hasAnyRole('USER', 'ADMIN')") +// // @PreAuthorize("hasRole('ADMIN') && hasRole('USER')") +// @PreAuthorize("hasRole('USER')") +// @RequestMapping(value = "/users/{id}", method = RequestMethod.GET) +// public User getOne(@PathVariable(value = "id") Long id) { +// return userService.getById(id); +// } + /* + * @RequestMapping(value = "/signup", method = RequestMethod.POST) public User + * saveUser(@RequestBody UserDto user) { return userService.save(user); } + */ +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/AppUserController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/AppUserController.java new file mode 100644 index 0000000..9d245b0 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/AppUserController.java @@ -0,0 +1,366 @@ +package com.realnet.users.controller1; + +import java.util.Date; +import java.util.HashSet; +import java.util.List; +import java.util.Optional; +import java.util.Set; +import java.util.UUID; + +import javax.servlet.http.HttpServletRequest; +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.security.core.session.SessionInformation; +import org.springframework.security.core.session.SessionRegistry; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.realnet.config.EmailService; +import com.realnet.fnd.response.EntityResponse; +import com.realnet.session.Service.TokenBlacklistService; +import com.realnet.userDTO.User; +import com.realnet.users.entity.PasswordResetRequest; +import com.realnet.users.entity.Role; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.entity1.AppUserDto; +import com.realnet.users.entity1.AppUserRole; +import com.realnet.users.entity1.Registration; +import com.realnet.users.entity1.SignUp; +import com.realnet.users.repository.RoleRepo; +import com.realnet.users.repository1.AppUserRepository; +import com.realnet.users.repository1.AppUserRoleRepository; +import com.realnet.users.response.MessageResponse; +import com.realnet.users.service1.AppUserServiceImpl; +import com.realnet.utils.Port_Constant; + +import io.swagger.annotations.ApiOperation; + +@RestController +@RequestMapping(value = "/api") +public class AppUserController { + + @Autowired + private AppUserServiceImpl userService; + @Autowired + private BCryptPasswordEncoder bcryptEncoder; + @Autowired + private AppUserRepository appUserRepository; + + @Autowired + private RoleRepo roleRepo; + @Autowired + private AppUserRoleRepository appUserRoleRepository; + + private AppUserServiceImpl appUserServiceImpl; + + @Autowired + private EmailService emailService; + + @Autowired + public AppUserController(AppUserServiceImpl appUserServiceImpl, EmailService emailService) { + super(); + this.appUserServiceImpl = appUserServiceImpl; + this.emailService = emailService; + } + +// get all active users + @GetMapping("/getAllAppUser") + public ResponseEntity getAllUsers( + @RequestParam(value = "page", defaultValue = "0", required = false) Integer page, + @RequestParam(value = "size", defaultValue = "1000", required = false) Integer size) { + Pageable p = PageRequest.of(page, size); + List u = appUserServiceImpl.getAllAppUsers(p); + return new ResponseEntity<>(u, HttpStatus.OK); + } + +// get all users including inactive + @GetMapping("/all-users") + public List getAll() { + System.out.println("Request came to API.."); + List usersAll = this.userService.getAllUsers(); + return usersAll; + } + + @GetMapping("/getOneAppUser/{id}") + public ResponseEntity getOneAppUser(@PathVariable("id") Long id) { + Optional a = appUserServiceImpl.getOneUser(id); + if (a.get() != null) { + return new ResponseEntity<>(a.get(), HttpStatus.OK); + } + return new ResponseEntity<>("User not found", HttpStatus.OK); + } + +// set iser active inactive + @GetMapping("/getOneAppUser/active/{id}") + public ResponseEntity getOneAppUser(@PathVariable("id") Long id, @RequestParam Boolean active) { + Optional a = appUserServiceImpl.getOneUser(id); + + if (a.get() != null) { + a.get().setActive(active); + + boolean insertOrSaveUser = appUserServiceImpl.insertOrSaveUser(a.get()); + + return new ResponseEntity<>(a.get(), HttpStatus.OK); + } + return new ResponseEntity<>("User not found", HttpStatus.OK); + } + + @PostMapping("/addOneAppUser") + public ResponseEntity addOneUser(@RequestBody Registration reg) { + if (appUserRepository.findByEmail(reg.getEmail()) != null) { + return ResponseEntity.badRequest().body(new MessageResponse("email already exist")); + } + AppUser a = appUserServiceImpl.addOneUser(reg); + return new ResponseEntity<>(a, HttpStatus.OK); + } + + @GetMapping("/test") + public void test() { + System.out.println("Aaa"); + } + + @PostMapping("/addOneAppUserCustom") + public ResponseEntity addOneUserCustom(@RequestBody User appUser) { + System.out.println("aaaaa"); + System.out.println(appUser); + AppUser a = appUserServiceImpl.addOneUserCustom(appUser); + System.out.println(a); + return new ResponseEntity<>(HttpStatus.OK); + } + + @PutMapping("/updateAppUser") + public ResponseEntity updateOneUser(@RequestBody AppUser appUser) { + AppUser a = appUserServiceImpl.updateOneUser(appUser); + return new ResponseEntity<>(a, HttpStatus.OK); + } + +// update app user + @PutMapping("/updateAppUserDto/{userId}") + public ResponseEntity updateAppUser(@PathVariable Long userId, @RequestBody AppUserDto appUserDto) { + AppUser a = appUserServiceImpl.updateAppUserDto(userId, appUserDto); + if (a != null) { + return new ResponseEntity<>(a, HttpStatus.OK); + } + return new ResponseEntity<>("No user found", HttpStatus.BAD_REQUEST); + } + + @PostMapping("/resetPasswordEmail/{userId}") + public ResponseEntity sendEmailForResetPassword(@PathVariable("userId") Long userId) { + AppUser a = appUserServiceImpl.getUserInfoByUserId(userId); + // random string + String hash = appUserServiceImpl.generateRandomHash(8); + if (a != null) { + String email = a.getEmail(); + String subject = "Pass reset"; + String link = "http://" + hash + "/" + String.valueOf(a.getUserId()); + emailService.sendSimpleMessage(null, email, subject, link); + return new ResponseEntity<>("Email sent success", HttpStatus.OK); + } + return new ResponseEntity<>("User not found", HttpStatus.BAD_REQUEST); + } + + @PostMapping("/resetPassword/{userId}/{hash}") + public ResponseEntity resetPassword(@PathVariable("userId") Long userId, @PathVariable("hash") String hash, + @RequestBody PasswordResetRequest passwordResetRequest) { + + AppUser a = appUserServiceImpl.resetPassword(userId, hash, passwordResetRequest.getNewPassword()); + if (a != null) { + return new ResponseEntity<>("Password Reset Successfull", HttpStatus.OK); + } + return new ResponseEntity<>("Password Not changed", HttpStatus.BAD_REQUEST); + } + + @GetMapping("/token/getchatuser_byid/{id}") + public ResponseEntity getChatUserById(@PathVariable Long id) { + AppUser u = appUserRepository.findByUserId(id); + return new ResponseEntity<>(u, HttpStatus.OK); + } + + @DeleteMapping("/delete_usr/{user_id}") + public ResponseEntity deleteusr(@PathVariable Long user_id) { + Optional r = appUserRepository.findById(user_id); + r.get().setActive(false); + AppUser save = appUserRepository.save(r.get()); + + return new ResponseEntity<>(save, HttpStatus.OK); + + } + + // By Gk + // ADD USER VIA ADMIN + @ApiOperation(value = "Add user Via Admin") + @PostMapping("/userviaadmin") + public ResponseEntity userviaadmin(HttpServletRequest request, @RequestParam("email") String email) + throws JsonProcessingException { + AppUser loggedInUser = userService.getLoggedInUser(); + Long account_id = loggedInUser.getAccount().getAccount_id(); + + AppUser appUser = new AppUser(); + + AppUser user = userService.findUserByEmail(email); + if (user != null && user.isIsComplete()) { + return ResponseEntity.badRequest().body(new MessageResponse(email + " already exist")); + } + + if (user != null) { + appUser = user; + + } + String token = UUID.randomUUID().toString(); + + userService.adduserviaadmin(appUser, token, email, account_id); + + String subject = "add user"; + + String url = Port_Constant.FRONTEND_PORTAL_DOMAIN + "/#/adduser/" + token; + // String url = "http://localhost:4200/#/adduser/" +token; + // String url = "http://surecns.ml:30165/#/adduser/" +token; +// String url = "http://" + Port_Constant.LOCAL_HOST + ":" + Port_Constant.BACKEND_PORT_9191 + "/api" +// + "/admin/adduser/" + token; + + emailService.sendEmail(email, subject, url); + return new ResponseEntity<>(new EntityResponse("Email sent success"), HttpStatus.OK); + + } + + // get email make user VIA ADMIN + @PostMapping("/admin/adduser/{token}") + public ResponseEntity saveuser(@PathVariable String token, @Valid @RequestBody SignUp signUp) { + + AppUser a = appUserRepository.findByToken(token); + + if (a != null) { + + if (signUp.getPassword().equals(signUp.getConfirm_password())) { + + a.setFullName(signUp.getFirst_name() + " " + signUp.getLast_name()); + a.setMob_no(signUp.getMob_no()); + a.setUserPassw(bcryptEncoder.encode(signUp.getPassword())); + a.setPwdChangedCnt(a.getPwdChangedCnt() != null ? (long) 1 + a.getPwdChangedCnt() : (long) 1); + a.setLastPwdChangedDate(new Date()); + a.setChangePassw(signUp.getPassword()); + a.setIsComplete(true); + a.setActive(true); + + long r = 42; + AppUserRole grp = appUserRoleRepository.findById(r).orElse(null); + a.setUsrGrp(grp); +// Set strRoles = a.getRoles(); + Set roles = new HashSet<>(); + +// if (strRoles == null) { + String role1 = "ROLE_Developer"; + Role userRole = roleRepo.findByName(role1); + roles.add(userRole); + a.setRoles(roles); +// } + a.setRandom_no(null); + AppUser save = appUserRepository.save(a); + return new ResponseEntity<>(save, HttpStatus.CREATED); + + } + return ResponseEntity.badRequest().body(new MessageResponse("password and confirm password not match")); + } + + return ResponseEntity.ok().body(new MessageResponse("registration already done")); + } + + // By Gk + // ADD GUEST VIA ADMIN + @ApiOperation(value = "Add user Via Admin") + @PostMapping("/guest_via_admin") + public ResponseEntity guestviaadmin(HttpServletRequest request, @RequestParam("email") String email) + throws JsonProcessingException { + + AppUser loggedInUser = userService.getLoggedInUser(); + String fullName = loggedInUser.getFullName(); + Long account_id = loggedInUser.getAccount().getAccount_id(); + AppUser appUser = new AppUser(); + + if (email.contains(" ")) { + // Replace whitespace with '+' + email = email.replace(" ", "+"); + } + + AppUser user = userService.findUserByEmail(email); + if (user != null && user.isIsComplete()) { + return ResponseEntity.badRequest().body(new MessageResponse(email + " already exist")); + } + + if (user != null) { + appUser = user; + + } + String token = UUID.randomUUID().toString(); + userService.addguestviaadmin(appUser, token, email, account_id); + +// String subject = "add guest"; + String url = Port_Constant.FRONTEND_PORTAL_DOMAIN + "/#/addguest/" + token; + + // String url = "http://localhost:4200/#/addguest/" +token; + // String url = "http://surecns.ml:30165/#/addguest/" +token; +// String url = "http://" + Port_Constant.LOCAL_HOST + ":" + Port_Constant.BACKEND_PORT_9191 + "/api" +// + "/admin/addguest/" + token; + + String subject = "Guest Registration.."; + emailService.sendEmail(email, subject, url); + return new ResponseEntity<>(new EntityResponse("Email sent success"), HttpStatus.OK); + + } + + // get email ADD GUEST VIA ADMIN + @PostMapping("/admin/addguest/{token}") + public ResponseEntity saveguest(@PathVariable String token, @Valid @RequestBody SignUp signUp) { + + AppUser a = appUserRepository.findByToken(token); + + if (a != null) { + + if (signUp.getPassword().equals(signUp.getConfirm_password())) { + + a.setFullName(signUp.getFirst_name() + " " + signUp.getLast_name()); + a.setMob_no(signUp.getMob_no()); + a.setUserPassw(bcryptEncoder.encode(signUp.getPassword())); + a.setPwdChangedCnt(a.getPwdChangedCnt() != null ? (long) 1 + a.getPwdChangedCnt() : (long) 1); + a.setLastPwdChangedDate(new Date()); + a.setChangePassw(signUp.getPassword()); + a.setIsComplete(true); + a.setActive(true); + long r = 45; + AppUserRole grp = appUserRoleRepository.findById(r).orElse(null); + a.setUsrGrp(grp); +// Set strRoles = a.getRoles(); + Set roles = new HashSet<>(); + +// if (strRoles == null) { + String role1 = "ROLE_GUEST"; + Role userRole = roleRepo.findByName(role1); + roles.add(userRole); + a.setRoles(roles); +// } + a.setRandom_no(null); + AppUser save = appUserRepository.save(a); + return new ResponseEntity<>(save, HttpStatus.CREATED); + + } + return ResponseEntity.badRequest().body(new MessageResponse("password and confirm password not match")); + } + + return ResponseEntity.ok().body(new MessageResponse("registration already done")); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/AppUserGrpController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/AppUserGrpController.java new file mode 100644 index 0000000..34b1be5 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/AppUserGrpController.java @@ -0,0 +1,88 @@ +package com.realnet.users.controller1; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.List; +import java.util.Optional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.users.entity1.AppUserRole; +import com.realnet.users.repository1.AppUserRoleRepository; +import com.realnet.users.service1.AppUserRoleServiceImpl; + +@RestController +@RequestMapping(value = "/api") +public class AppUserGrpController { + private AppUserRoleServiceImpl appUserRoleServiceImpl; + + @Autowired + private AppUserRoleRepository appUserRoleRepository; + + + @Autowired + public AppUserGrpController(AppUserRoleServiceImpl appUserRoleServiceImpl) { + super(); + this.appUserRoleServiceImpl = appUserRoleServiceImpl; + } + + @GetMapping("/getAllUsrGrp") + public ResponseEntity getAll() { + DateFormat simple = new SimpleDateFormat("dd MMM yyyy HH:mm:ss"); + List l = appUserRoleServiceImpl.getAll(); + for (AppUserRole o : l) { + if (o.getCreatedate() != null) { + o.setCreateDateFormated(simple.format(o.getCreatedate())); + } + if (o.getUpdatedate() != null) { + o.setUpdateDateFormated(simple.format(o.getUpdatedate())); + } + } + return new ResponseEntity<>(l, HttpStatus.OK); + } + + @GetMapping("/getOneUsrGrp/{id}") + public ResponseEntity getOne(@PathVariable("id") Long id) { + DateFormat simple = new SimpleDateFormat("dd MMM yyyy HH:mm:ss"); + Optional r = appUserRoleServiceImpl.getOne(id); + if (r.get() != null) { + if (r.get().getCreatedate() != null) { + r.get().setCreateDateFormated(simple.format(r.get().getCreatedate())); + } + if (r.get().getUpdatedate() != null) { + r.get().setUpdateDateFormated(simple.format(r.get().getUpdatedate())); + } + return new ResponseEntity<>(r.get(), HttpStatus.OK); + } + return new ResponseEntity<>("not found", HttpStatus.BAD_REQUEST); + } + + @PostMapping("/addOneUsrGrp") + public ResponseEntity addOne(@RequestBody AppUserRole appUserRole) { + AppUserRole a = appUserRoleServiceImpl.addOne(appUserRole); + return new ResponseEntity<>(a, HttpStatus.OK); + } + + @PostMapping("/updateOneUsrGrp") + public ResponseEntity updateOne(@RequestBody AppUserRole appUserRole) { + AppUserRole a = appUserRoleServiceImpl.addOne(appUserRole); + return new ResponseEntity<>(a, HttpStatus.OK); + } + + @DeleteMapping("/delete_usrgrp/{id}") + public ResponseEntity deleteusrgroup(@PathVariable("id") Long id) { + AppUserRole r = appUserRoleServiceImpl.getOne(id).get(); + appUserRoleRepository.delete(r); + + return new ResponseEntity<>("deleted", HttpStatus.OK); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/AppuserSessionController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/AppuserSessionController.java new file mode 100644 index 0000000..5481a2c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/AppuserSessionController.java @@ -0,0 +1,61 @@ +package com.realnet.users.controller1; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.fnd.entity.Error; +import com.realnet.fnd.entity.ErrorPojo; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.entity1.AppUserSessions; +import com.realnet.users.repository1.AppUserSessionsRepository; +import com.realnet.utils.Constant; + +@RestController +@RequestMapping(value = "/user1/session") // , produces = MediaType.APPLICATION_JSON_VALUE) +public class AppuserSessionController { + + @Value("${projectPath}") + private String projectPath; + + @Autowired + private AppUserSessionsRepository sessionsRepository; + + + + //get all app user session + @GetMapping("/getAll") + public ResponseEntity getAllLog() { + List l = sessionsRepository.findAll(); + return new ResponseEntity<>(l, HttpStatus.OK); + } + + //delete session by userid + @DeleteMapping("/delete/{userId}") + public ResponseEntity getOne(@PathVariable("userId") AppUser userId) { + List a = sessionsRepository.findByUserId(userId); + + for (AppUserSessions appUserSessions : a) { + sessionsRepository.delete(appUserSessions); + } + + if (a != null) { + return new ResponseEntity<>("deleted", HttpStatus.OK); + } + return new ResponseEntity<>("Not Found", HttpStatus.BAD_REQUEST); + } + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/PositonAndDepartmentController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/PositonAndDepartmentController.java new file mode 100644 index 0000000..619bb5f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/PositonAndDepartmentController.java @@ -0,0 +1,53 @@ +package com.realnet.users.controller1; + +import java.util.List; +import java.util.Optional; + +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.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.users.entity1.AppUserDepartment; +import com.realnet.users.entity1.AppUserPosition; +import com.realnet.users.service1.PositionAndDepartmentServiceImpl; + +@RestController +@RequestMapping(value = "/api") +public class PositonAndDepartmentController { + private PositionAndDepartmentServiceImpl positionAndDepartmentServiceImpl; + @Autowired + public PositonAndDepartmentController(PositionAndDepartmentServiceImpl positionAndDepartmentServiceImpl) { + super(); + this.positionAndDepartmentServiceImpl = positionAndDepartmentServiceImpl; + } + @GetMapping("/getAllDepartments") + public ResponseEntity getAll(){ + List l = positionAndDepartmentServiceImpl.getAll(); + return new ResponseEntity<>(l,HttpStatus.OK); + } + @GetMapping("/getDepartment/{id}") + public ResponseEntity getOne(@PathVariable("id") String id){ + Optional o = positionAndDepartmentServiceImpl.getOne(id); + if(o.get()!=null) { + return new ResponseEntity<>(o.get(),HttpStatus.OK); + } + return new ResponseEntity<>("Department not found",HttpStatus.BAD_REQUEST); + } + @GetMapping("/getAllPositions") + public ResponseEntity getAllPosition(){ + List l = positionAndDepartmentServiceImpl.getAllPosition(); + return new ResponseEntity<>(l,HttpStatus.OK); + } + @GetMapping("/getPosition/{id}") + public ResponseEntity getOnePosition(@PathVariable("id") String id){ + Optional o = positionAndDepartmentServiceImpl.getOnePosition(id); + if(o.get()!=null) { + return new ResponseEntity<>(o.get(),HttpStatus.OK); + } + return new ResponseEntity<>("Position not found",HttpStatus.BAD_REQUEST); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/SysAccountController.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/SysAccountController.java new file mode 100644 index 0000000..01fd520 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/SysAccountController.java @@ -0,0 +1,80 @@ +package com.realnet.users.controller1; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.session.entity.AboutWork; +import com.realnet.users.entity.Sys_Accounts; +import com.realnet.users.repository.AboutWorkRepo; +import com.realnet.users.repository.SysAccountRepo; +import com.realnet.users.service1.SysAccountService; + +@RequestMapping("/token/users/sysaccount") +@RestController +public class SysAccountController { + + @Autowired + private SysAccountRepo sysAccountRepo; + + @Autowired + private AboutWorkRepo aboutWorkRepo; + + @Autowired + private SysAccountService accountService; + + @PostMapping("/savesysaccount") + public Sys_Accounts save(@RequestBody Sys_Accounts sys_Accounts) { + Sys_Accounts save = accountService.save(sys_Accounts); + + System.out.println("created account data is .." + save); + return save; + } + + @PutMapping("/savesysaccount/{accId}") + public Sys_Accounts updte(@PathVariable Long accId, @RequestBody Sys_Accounts sys_Accounts) { + Sys_Accounts save = accountService.update(accId, sys_Accounts); + + System.out.println("created account data is .." + save); + return save; + } + + @PostMapping("/addaccountcusto") + public AboutWork addaccountcusto(@RequestBody AboutWork aWork) { + + System.out.println("Here"); + AboutWork work = new AboutWork(); + work.setCompanyname(aWork.getCompanyname()); + work.setEmail(aWork.getEmail()); + work.setManaging_work(aWork.getManaging_work()); + work.setMobile(aWork.getMobile()); + work.setName(aWork.getName()); + work.setPancard(aWork.getPancard()); + work.setPassword(aWork.getPassword()); + work.setWorking(aWork.getWorking()); + + AboutWork save = aboutWorkRepo.save(work); + return save; + } + + @GetMapping("/sysaccount") + public List getall() { + + List getall = sysAccountRepo.findAll(); + return getall; + } + + @DeleteMapping("/deleteaccount") + public void deleteaccount() { + aboutWorkRepo.deleteAll(); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/WorkSpaceController1.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/WorkSpaceController1.java new file mode 100644 index 0000000..77d3c3a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/WorkSpaceController1.java @@ -0,0 +1,121 @@ +package com.realnet.users.controller1; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.Workspaceuser.Entity.Sec_team_members; +import com.realnet.Workspaceuser.Entity.Sec_teams; +import com.realnet.Workspaceuser.Repository.SecWorkspaceUserRepo; +import com.realnet.Workspaceuser.Repository.Sec_team_MemberRepository; +import com.realnet.Workspaceuser.Repository.Sec_teams_Repository; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.repository1.AppUserRepository; +import com.realnet.users.response.MessageResponse; +import com.realnet.users.service1.AppUserServiceImpl; + +@RestController +@RequestMapping("/User_workSpace") +public class WorkSpaceController1 { + @Autowired + private AppUserServiceImpl userService; + + @Autowired + private AppUserRepository appUserRepository; + @Autowired + private Sec_teams_Repository sec_teams_Repository; + + @Autowired + private Sec_team_MemberRepository memberRepository; + + @Autowired + private SecWorkspaceUserRepo secWorkspaceUserRepo; + + // GET ALL USER by account id attach from loggedin user + @GetMapping("/GetAll/AccountId") + public ResponseEntity getall() { + AppUser loggedInUser = userService.getLoggedInUser(); + Long account_id = loggedInUser.getAccount().getAccount_id(); + + List li = appUserRepository.getall(account_id); + return new ResponseEntity<>(li, HttpStatus.OK); + } + + // ADD USER TO SPECIFIC TEAM + @PostMapping("/add_team/{id}/{userId}") + public ResponseEntity addteam(@RequestBody Sec_team_members team_mem, @PathVariable int id, + @PathVariable Long userId) { + Sec_team_members members = memberRepository.findteammember(id, userId); + if (members == null) { + + Sec_teams team = sec_teams_Repository.findById(id); + if (team != null) { + + AppUser user = appUserRepository.findById(userId).orElseThrow(null); + + team_mem.setTeam_id(team.getId()); + team_mem.setMember_name(user.getFullName()); + team_mem.setMember_id(user.getUserId()); + Sec_team_members save = memberRepository.save(team_mem); + + return new ResponseEntity<>(save, HttpStatus.OK); + + } else + return ResponseEntity.badRequest().body(new MessageResponse("team not found")); + } else + return ResponseEntity.badRequest().body(new MessageResponse("member already added")); + } + + // REMOVE MEMBER FROM TEAM + @DeleteMapping("/RemoveMember/{id}/{userId}") + public MessageResponse removemember(@PathVariable int id, @PathVariable Long userId) { + Sec_team_members members = memberRepository.findteammember(id, userId); + if (members != null) { + memberRepository.delete(members); + return new MessageResponse("deleted"); + } else + + return new MessageResponse("member not found"); + } + + // GET ALL USER ADD BY ADMIN + @GetMapping("/GetAllUser") + public ResponseEntity GetUser() { + AppUser loggedInUser = userService.getLoggedInUser(); + Long account_id = loggedInUser.getAccount().getAccount_id(); + + List li = appUserRepository.getalluser(account_id); + return new ResponseEntity<>(li, HttpStatus.OK); + } + + // GET ALL GUEST ADD BY ADMIN + @GetMapping("/GetAllGuest") + public ResponseEntity Getguest() { + AppUser loggedInUser = userService.getLoggedInUser(); + Long account_id = loggedInUser.getAccount().getAccount_id(); + + List li = appUserRepository.getallguest(account_id); + return new ResponseEntity<>(li, HttpStatus.OK); + } + + // GET ALL TEAM MEMBER FROM SPECIFIC TEAM + @GetMapping("/GetAllMember/{team_id}") + public ResponseEntity GetAllteamMember(@PathVariable int team_id) { + + List li = memberRepository.getallteam(team_id); + if (li == null) { + return ResponseEntity.badRequest().body(new MessageResponse("team not found")); + } else + return new ResponseEntity<>(li, HttpStatus.OK); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/CompanyDto.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/CompanyDto.java new file mode 100644 index 0000000..4fccdc4 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/CompanyDto.java @@ -0,0 +1,15 @@ +package com.realnet.users.entity; + +import java.io.Serializable; + +import lombok.Data; + +@Data +public class CompanyDto implements Serializable { + private static final long serialVersionUID = 1L; + private String userEmail; // for load the user who is responsible + private String companyName; + private String workspace; + private String gstNumber; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/CustomUserDetails.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/CustomUserDetails.java new file mode 100644 index 0000000..49c56a7 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/CustomUserDetails.java @@ -0,0 +1,77 @@ +//package com.realnet.users.entity; +// +//import java.util.Collection; +//import java.util.HashSet; +//import java.util.Set; +// +//import org.springframework.security.core.GrantedAuthority; +//import org.springframework.security.core.authority.SimpleGrantedAuthority; +//import org.springframework.security.core.userdetails.UserDetails; +// +//import com.fasterxml.jackson.annotation.JsonIgnore; +//import com.realnet.users.entity1.AppUser; +// +//import lombok.ToString; +// +//@ToString +//public class CustomUserDetails implements UserDetails { +// private static final long serialVersionUID = 3163073361116831556L; +// +// private AppUser user; +//// public User getUser() { +//// return user; +//// } +//// public void setUser(User user) { +//// this.user = user; +//// } +// +// public CustomUserDetails(AppUser user) { +// super(); +// this.user = user; +// } +// +// @Override +// public Collection getAuthorities() { +// Set authorities = new HashSet<>(); +// user.getRoles().forEach(role -> { +// authorities.add(new SimpleGrantedAuthority("ROLE_" + role.getName())); +// }); +// return authorities; +// } +// +// @Override +// public String getPassword() { +// return user.getPassword(); +// } +// +// @Override +// public String getUsername() { +// //return user.getUsername(); +// return user.getEmail(); +// } +// +// @JsonIgnore +// @Override +// public boolean isAccountNonExpired() { +// return true; +// } +// +// @JsonIgnore +// @Override +// public boolean isAccountNonLocked() { +// return true; +// } +// +// @JsonIgnore +// @Override +// public boolean isCredentialsNonExpired() { +// return true; +// } +// +// @JsonIgnore +// @Override +// public boolean isEnabled() { +// return true; +// } +// +//} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/ERole.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/ERole.java new file mode 100644 index 0000000..5d7cacf --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/ERole.java @@ -0,0 +1,14 @@ +package com.realnet.users.entity; + +public enum ERole { + ROLE_USER, + ROLE_ADMIN, + ROLE_REVIEWER, + ROLE_COLLABORATOR, + ROLE_ProjectManager, + ROLE_Scum_master, + ROLE_Developer, + ROLE_Tester, + ROLE_DevOps + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/Email.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/Email.java new file mode 100644 index 0000000..78d46b5 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/Email.java @@ -0,0 +1,89 @@ +package com.realnet.users.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; + +import com.fasterxml.jackson.annotation.JsonBackReference; +import com.realnet.fnd.entity.Rn_Who_Columns; + +import lombok.Data; + + +@Entity +public class Email extends Rn_Who_Columns { + + @Id + @Column(name = "user_id") + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long userId; + private String email1; + private String email2; + private String email3; + private String email4; + + private Long id; + public Long getId() { + return id; + } + public void setId(Long id) { + this.id = id; + } + +// private String password; + +// @ManyToOne(fetch = FetchType.LAZY) +// @JoinColumn(name = "ACCOUNT_ID") +// @JsonBackReference +// private Sys_Accounts sys_account; + +//public String getPassword() { +// return password; +// } +// public void setPassword(String password) { +// this.password = password; +// } + // public Sys_Accounts getSys_account() { +// return sys_account; +// } +// public void setSys_account(Sys_Accounts sys_account) { +// this.sys_account = sys_account; +// } + public Long getUserId() { + return userId; + } + public void setUserId(Long userId) { + this.userId = userId; + } + public String getEmail1() { + return email1; + } + public void setEmail1(String email1) { + this.email1 = email1; + } + public String getEmail2() { + return email2; + } + public void setEmail2(String email2) { + this.email2 = email2; + } + public String getEmail3() { + return email3; + } + public void setEmail3(String email3) { + this.email3 = email3; + } + public String getEmail4() { + return email4; + } + public void setEmail4(String email4) { + this.email4 = email4; + } + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/EmailRequest.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/EmailRequest.java new file mode 100644 index 0000000..fb55795 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/EmailRequest.java @@ -0,0 +1,8 @@ +package com.realnet.users.entity; + +import lombok.Data; + +@Data +public class EmailRequest { + private String email; +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/GenericResponse.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/GenericResponse.java new file mode 100644 index 0000000..f58d128 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/GenericResponse.java @@ -0,0 +1,20 @@ +package com.realnet.users.entity; + +public class GenericResponse { + private String message; + private String error; + + + + public GenericResponse(String message) { + super(); + this.message = message; + } + + public GenericResponse(String message, String error) { + super(); + this.message = message; + this.error = error; + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/Login.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/Login.java new file mode 100644 index 0000000..e306b9f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/Login.java @@ -0,0 +1,15 @@ +package com.realnet.users.entity; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class Login { + + @ApiModelProperty(example = "demo", required = true) + private String username = ""; + + @ApiModelProperty(example = "demo", required = true) + private String password = ""; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/LoginUser.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/LoginUser.java new file mode 100644 index 0000000..7a18f6b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/LoginUser.java @@ -0,0 +1,18 @@ +package com.realnet.users.entity; + +import lombok.Data; + +@Data +public class LoginUser { + + // private String username; + private String email; + private String password; + + /* + * public String getUsername() { return username; } + * + * public void setUsername(String username) { this.username = username; } + */ + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/PasswordResetRequest.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/PasswordResetRequest.java new file mode 100644 index 0000000..6dfaf3b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/PasswordResetRequest.java @@ -0,0 +1,16 @@ +package com.realnet.users.entity; + +import lombok.Data; + +@Data +public class PasswordResetRequest { + + private Long userId; + private String email; + + private String oldPassword; + private String newPassword; + private String token; + private String hash; + private String confirmPassword; +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/PasswordResetToken.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/PasswordResetToken.java new file mode 100644 index 0000000..2092a2f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/PasswordResetToken.java @@ -0,0 +1,52 @@ +package com.realnet.users.entity; + +import java.util.Date; + +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.OneToOne; + +import com.realnet.users.entity1.AppUser; + +import lombok.Data; +@Data +@Entity +public class PasswordResetToken { + + private static final int EXPIRATION = 60 * 24; + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; + + private String token; + + @OneToOne(targetEntity = AppUser.class, fetch = FetchType.EAGER) +// @JoinColumn(nullable = false, name = "user_id") + private AppUser user; + + private Date expiryDate; + + public PasswordResetToken( AppUser user,String token) { + super(); + this.token = token; + this.user = user; + } + public PasswordResetToken( String token) { + super(); + this.token = token; +// this.user = user; + } + + public PasswordResetToken() { + super(); + // TODO Auto-generated constructor stub + } + + + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/Role.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/Role.java new file mode 100644 index 0000000..013d6b4 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/Role.java @@ -0,0 +1,98 @@ +package com.realnet.users.entity; + +import java.util.Set; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.ManyToMany; + +import com.fasterxml.jackson.annotation.JsonBackReference; +import com.realnet.users.entity1.AppUser; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +@Data +@Entity +public class Role { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column + private String name; + + @Column + private String description; + +// @JsonBackReference +// @ManyToMany(fetch = FetchType.EAGER, mappedBy = "roles", cascade = { CascadeType.PERSIST, CascadeType.DETACH, +// CascadeType.MERGE, CascadeType.REFRESH }) +// private Set users; + + @JsonBackReference + @ManyToMany(fetch = FetchType.EAGER, mappedBy = "roles", cascade = { CascadeType.PERSIST, CascadeType.DETACH, + CascadeType.MERGE, CascadeType.REFRESH }) + private Set appusers; + + +// public Long getId() { +// return id; +// } +// +// public void setId(Long id) { +// this.id = id; +// } +// +// public String getName() { +// return name; +// } +// +// public void setName(String name) { +// this.name = name; +// } +// +// public String getDescription() { +// return description; +// } +// +// public void setDescription(String description) { +// this.description = description; +// } +// +// public Set getUsers() { +// return users; +// } +// +// public void setUsers(Set users) { +// this.users = users; +// } +// +// public Role(Long id, String name, String description, Set users) { +// super(); +// this.id = id; +// this.name = name; +// this.description = description; +// this.users = users; +// } + + public Role() { + + // TODO Auto-generated constructor stub + } + + + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/RoleUpdateDto.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/RoleUpdateDto.java new file mode 100644 index 0000000..c5b5152 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/RoleUpdateDto.java @@ -0,0 +1,36 @@ +package com.realnet.users.entity; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; + +import io.swagger.annotations.ApiModelProperty; + +public class RoleUpdateDto { + + @ApiModelProperty(notes = "User identifier", required = true) + @NotBlank(message = "The userId is required") + private Long userId; + + @ApiModelProperty(notes = "Array of roles to give to an user", required = true) + @NotEmpty(message = "The field must have at least one item") + private String[] roles; + + public Long getUserId() { + return userId; + } + + public RoleUpdateDto setUserId(Long userId) { + this.userId = userId; + return this; + } + + public String[] getRoles() { + return roles; + } + + public RoleUpdateDto setRoles(String[] roles) { + this.roles = roles; + return this; + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/Sys_Accounts.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/Sys_Accounts.java new file mode 100644 index 0000000..7d5eedf --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/Sys_Accounts.java @@ -0,0 +1,54 @@ +package com.realnet.users.entity; + +import java.util.List; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.OneToMany; +import javax.persistence.Table; + +import com.fasterxml.jackson.annotation.JsonManagedReference; +import com.realnet.users.entity1.AppUser; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +@Data +@ToString(exclude = "users") +@EqualsAndHashCode(callSuper = false) +@Entity +@Table(name = "sys_accounts") +public class Sys_Accounts { + @Id + @Column(name = "id") + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long account_id; + + @Column(name = "company_name") + private String companyName; + + @Column(name = "workspace") + private String workspace; + + @Column(name = "gst_no") + private String gstNumber; + + private String mobile; + private String email; + + private String pancard; + private String working; + + private Boolean active; + + @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) + @JsonManagedReference + private List users; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/UserDto.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/UserDto.java new file mode 100644 index 0000000..a677c12 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/UserDto.java @@ -0,0 +1,27 @@ +package com.realnet.users.entity; + +import java.io.Serializable; +import java.util.Set; + +import com.fasterxml.jackson.annotation.JsonIgnore; + +import lombok.Data; + +@Data +public class UserDto implements Serializable { + private static final long serialVersionUID = 1L; +// private String username; +// private String password; + private String firstName; + private String lastName; + private String password; + private String email; + private String fullName; + private String department; + private int menuGroupId; + @JsonIgnore + private String phone; + @JsonIgnore + private Set roles; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/UserProfileDTO.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/UserProfileDTO.java new file mode 100644 index 0000000..6d26cc8 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/UserProfileDTO.java @@ -0,0 +1,21 @@ +package com.realnet.users.entity; + +import java.io.Serializable; + +import lombok.Data; + +@Data +public class UserProfileDTO implements Serializable { + /** + * + */ + private static final long serialVersionUID = 1L; + + private String fullName; + private String pronounce; + private String role; + private String department; + private String about; + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUser.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUser.java new file mode 100644 index 0000000..10b316a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUser.java @@ -0,0 +1,172 @@ +package com.realnet.users.entity1; + +import java.io.Serializable; +import java.sql.Blob; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.Set; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.JoinTable; +import javax.persistence.ManyToMany; +import javax.persistence.ManyToOne; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; +import javax.persistence.Transient; + +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; + +import com.fasterxml.jackson.annotation.JsonBackReference; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.realnet.users.entity.PasswordResetToken; +import com.realnet.users.entity.Role; +import com.realnet.users.entity.Sys_Accounts; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +@Entity +@Table(name = "SEC_USERS") +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@ToString +public class AppUser implements Serializable { + /** + * + */ + private static final long serialVersionUID = 1L; + @Id + @Column(name = "user_id") + @GeneratedValue(generator = "SecUsers_gen") + @SequenceGenerator(name = "SecUsers_gen", sequenceName = "sec_users_sequencs", initialValue = 10007300, allocationSize = 1) + private Long userId; + + @Column(name = "user_name", unique = true) + private String username; + + private String userPassw; + private String title; + private String shortName; + private String fullName; + private Date expiryDate; + private String daysMth; + private Long noDaysMth; + private String status; + private String changePassw; + + private String createby; + +// @Temporal(TemporalType.TIMESTAMP) + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + @Column(name = "createdate", nullable = false, updatable = false) + @CreatedDate + private LocalDateTime createdate; + + private String updateby; + + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + @Temporal(TemporalType.TIMESTAMP) + @LastModifiedDate + private Date updatedate; + + @ManyToOne + @JoinColumn(name = "usr_grp") + private AppUserRole usrGrp; + + private String langCode; + + private String firstLogin; + + @ManyToOne + @JoinColumn(name = "position_code") + private AppUserPosition positionCode; + + @ManyToOne + @JoinColumn(name = "department_code") + private AppUserDepartment departmentCode; + + @JsonBackReference + @ManyToOne + private Sys_Accounts Account; + + private String email; + private String notification; + private Long customerId; + private String password1; + private String password2; + private String password3; + private String password4; + private Long pwdChangedCnt; + private Date lastPwdChangedDate; +// private Blob photo; + private String photoName; + + private String provider; + private String country; + private String depString; + private boolean isBlocked; + private String about; + private Long checknumber; + private String working; + private String accesstype; +// private Integer access_duration; +// +// @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-mm-yyyy") +// private Date access_till_date; + + private String random_no; + private Long mob_no; + + private boolean IsComplete; + + private boolean active; + + @Column(name = "multitime") + private String multitime; + + private String multilingual; + + @Transient + private String customerNumer; + @Transient + private String positionCodeString; + @Transient + private String departmentCodeString; + + // @Transient + private Long usrGrpId; + @Transient + private String confirmPassword; + @Transient + private String usrGrpName; + @Transient + private StringBuilder totalLogInfo; + +// private String tshirtsize; + + @Transient + @JsonIgnore + private PasswordResetToken pass; + + @ManyToMany(targetEntity = Role.class, fetch = FetchType.EAGER, cascade = { CascadeType.PERSIST, CascadeType.DETACH, + CascadeType.ALL, CascadeType.REFRESH }) + @JoinTable(name = "SECUSER_ROLES", joinColumns = { @JoinColumn(name = "SECUSER_ID") }, inverseJoinColumns = { + @JoinColumn(name = "ROLE_ID") }) + private Set roles; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserDepartment.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserDepartment.java new file mode 100644 index 0000000..f37f77c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserDepartment.java @@ -0,0 +1,39 @@ +package com.realnet.users.entity1; + +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +@Entity +@Table(name="DEPARTMENT") +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@ToString +public class AppUserDepartment { + @Id + @Column(name="department_code") + private String departmentCode; + private String active; + private String description; + @Column(name="created_on") + private Date createdOn; + @Column(name="created_by") + private String createdBy; + @Column(name="created_on",updatable = false,insertable = false) + private Date updatedOn; + @Column(name="updated_by") + private String updatedBy; + private Long id; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserDto.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserDto.java new file mode 100644 index 0000000..638d067 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserDto.java @@ -0,0 +1,25 @@ +package com.realnet.users.entity1; + +import lombok.Data; + +@Data +public class AppUserDto { + private Long userId; + private String username; + private String userPassw; + private String title; + private String shortName; + private String fullName; + private String status; + + private String positionCodeId; + private String departmentCodeId; + private Long usrGrpId; + private Long customerId; + private String email; + private String notification; + private Long mob_no; + private boolean active; + private String tshirtsize; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserLoginHist.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserLoginHist.java new file mode 100644 index 0000000..6da367b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserLoginHist.java @@ -0,0 +1,42 @@ +package com.realnet.users.entity1; + +import java.io.Serializable; +import java.util.Date; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.OneToOne; +import javax.persistence.Table; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +@Entity +@Table(name="USERLOGINHIST") +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@ToString +public class AppUserLoginHist implements Serializable{ + /** + * + */ + private static final long serialVersionUID = 1L; + @Id + @OneToOne + @JoinColumn(name="user_id") + private AppUser userId; + private Date lastLoginDate; + private Date lastPasswordChgDate; + private Long lastPasswordFailNo; + private String createBy; + private Date createDate; + private String updateBy; + private Date updateDate; + private Long expiryReminder; +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserPasswlog.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserPasswlog.java new file mode 100644 index 0000000..9cc84b9 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserPasswlog.java @@ -0,0 +1,45 @@ +package com.realnet.users.entity1; + +import java.io.Serializable; +import java.util.Date; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.IdClass; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + +import lombok.AllArgsConstructor; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +@Entity +@Table(name="USERPASSWLOG") +@IdClass(AppUserPasswlogCompositeKey.class) +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@ToString +@EqualsAndHashCode +public class AppUserPasswlog implements Serializable{ + /** + * + */ + private static final long serialVersionUID = 1L; + @Id + @ManyToOne + @JoinColumn(name="user_id") + private AppUser userId; + @Id + private String userPassw; + private String createBy; + @Id + private Date createDate; + private String updateBy; + private Date updateDate; +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserPasswlogCompositeKey.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserPasswlogCompositeKey.java new file mode 100644 index 0000000..19aebcc --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserPasswlogCompositeKey.java @@ -0,0 +1,27 @@ +package com.realnet.users.entity1; + +import java.io.Serializable; +import java.util.Date; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Data +@Getter +@Setter +@EqualsAndHashCode +@AllArgsConstructor +@NoArgsConstructor +public class AppUserPasswlogCompositeKey implements Serializable{ + /** + * + */ + private static final long serialVersionUID = 1L; + private Long userId; + private String userPassw; + private Date createDate; +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserPosition.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserPosition.java new file mode 100644 index 0000000..813871e --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserPosition.java @@ -0,0 +1,31 @@ +package com.realnet.users.entity1; + +import java.util.Date; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +@Entity +@Table(name="POSITION") +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@ToString +public class AppUserPosition { + @Id + private String positionCode; + private String active; + private String description; + private Date createdOn; + private String createdBy; + private Date updatedOn; + private String updatedBy; +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserPrinciple.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserPrinciple.java new file mode 100644 index 0000000..f6c1f2d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserPrinciple.java @@ -0,0 +1,105 @@ +package com.realnet.users.entity1; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.authority.SimpleGrantedAuthority; +import org.springframework.security.core.userdetails.UserDetails; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.realnet.users.entity.Role; + +public class AppUserPrinciple implements UserDetails{ + + /** + * + */ + private static final long serialVersionUID = 1L; + private AppUser u; + public AppUserPrinciple(AppUser u) { + super(); + this.u = u; + } + + +// private String username; +// @JsonIgnore +// private String password; +// private String role; +// +// public AppUserPrinciple( String username, String password,String role +// ) { +// this.username = username; +// this.password = password; +// this.role = role; +// } + + + + @Override + public Collection getAuthorities() { +// Set authorities = new HashSet<>(); +// authorities.add(new SimpleGrantedAuthority("ROLE_"+u.getUsrGrp().getGroupName())); +//// u.getUsrGrp().forEach(role->{ +//// authorities.add(new SimpleGrantedAuthority("ROLE_"+role.getGroupName())); +//// }); +// return authorities; + + //FROM GK +// List authorities = u.getRoles().stream().map(role-> new SimpleGrantedAuthority(role.getName())).collect(Collectors.toList()); +// authorities.add(new SimpleGrantedAuthority("ROLE_"+role)); +// return authorities; + + Set roles = u.getRoles(); + List authorities = new ArrayList<>(); + + for (Role role : roles) { +// authorities.add(new SimpleGrantedAuthority(role.getName().getDeclaringClass().getName())); + authorities.add(new SimpleGrantedAuthority(role.getName())); + } + + return authorities; + } + + @Override + public String getPassword() { + // TODO Auto-generated method stub + return u.getUserPassw(); + } + + @Override + public String getUsername() { + // TODO Auto-generated method stub + return u.getUsername(); + } + + @Override + public boolean isAccountNonExpired() { + // TODO Auto-generated method stub + return true; + } + + @Override + public boolean isAccountNonLocked() { + // TODO Auto-generated method stub + return true; + } + + @Override + public boolean isCredentialsNonExpired() { + // TODO Auto-generated method stub + return true; + } + + @Override + public boolean isEnabled() { + // TODO Auto-generated method stub + return true; + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserRole.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserRole.java new file mode 100644 index 0000000..7b8f96a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserRole.java @@ -0,0 +1,67 @@ +package com.realnet.users.entity1; + +import java.io.Serializable; +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EntityListeners; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; +import javax.persistence.Transient; + +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; +import org.springframework.data.jpa.repository.config.EnableJpaAuditing; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +@Entity +@Table(name="SEC_USER_GROUP") +@EnableJpaAuditing +@EntityListeners(AuditingEntityListener.class) +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@ToString +public class AppUserRole implements Serializable{ + /** + * + */ + private static final long serialVersionUID = 1L; + @Id + @Column(name="usr_grp") + @GeneratedValue(generator = "SecUserGrp_gen") + @SequenceGenerator(name="SecUserGrp_gen", sequenceName="sec_user_group_id",initialValue = 40, allocationSize = 1) + private Long usrGrp; //auto generate +// @Transient +// @ManyToOne(fetch=FetchType.LAZY,cascade = CascadeType.ALL) +// private AppUser appUser; + private String groupName; //will come + private String groupDesc; //will come + private String createby; + @Temporal(TemporalType.TIMESTAMP) + @CreatedDate + private Date createdate; + @Temporal(TemporalType.TIMESTAMP) + @LastModifiedDate + private Date updatedate; + private String updateby; + private String status; //will come but need to change + private Long groupLevel; //will come + @Transient + private String createDateFormated; + @Transient + private String updateDateFormated; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserSessions.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserSessions.java new file mode 100644 index 0000000..94e08c3 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserSessions.java @@ -0,0 +1,51 @@ +package com.realnet.users.entity1; + +import java.io.Serializable; +import java.util.Date; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.IdClass; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + +import com.fasterxml.jackson.annotation.JsonFormat; + +import lombok.AllArgsConstructor; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +@Entity +@Table(name="SEC_USER_SESSIONS") +@IdClass(AppUserSessionsCompositeKey.class) +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@ToString +@EqualsAndHashCode +public class AppUserSessions implements Serializable{ + /** + * + */ + private static final long serialVersionUID = 1L; + @Id + @ManyToOne + @JoinColumn(name="user_id") + private AppUser userId; + @Id + private String sessionId; + @Id + private String clientIp; + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private Date lastAccessDate; + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private Date logintime; + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private Date logouttime; + private String macid; +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserSessionsCompositeKey.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserSessionsCompositeKey.java new file mode 100644 index 0000000..6ec8958 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserSessionsCompositeKey.java @@ -0,0 +1,26 @@ +package com.realnet.users.entity1; + +import java.io.Serializable; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Data +@Getter +@Setter +@EqualsAndHashCode +@AllArgsConstructor +@NoArgsConstructor +public class AppUserSessionsCompositeKey implements Serializable{ + /** + * + */ + private static final long serialVersionUID = 1L; + private Long userId; + private String sessionId; + private String clientIp; +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUser_who_column.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUser_who_column.java new file mode 100644 index 0000000..1bbc16f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUser_who_column.java @@ -0,0 +1,52 @@ +package com.realnet.users.entity1; + +import java.io.Serializable; +import java.util.Date; +import javax.persistence.Column; +import javax.persistence.EntityListeners; +import javax.persistence.MappedSuperclass; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import com.fasterxml.jackson.annotation.JsonFormat; + +import lombok.Data; + +@Data +@MappedSuperclass +@EntityListeners(AuditingEntityListener.class) +public class AppUser_who_column implements Serializable{ + + private static final long serialVersionUID = 1L; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "CREATED_AT", nullable = false, updatable = false) + @CreatedDate + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private Date createdAt; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "UPDATED_AT", nullable = false) + @LastModifiedDate + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private Date updatedAt; + + // @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createdAt; + + +// @Column(name = "CREATED_BY", updatable = false) +// private Long createdBy; + +// @Column(name = "UPDATED_BY") +// private Long updatedBy; + + + +// @Column(name = "ACCOUNT_ID") +// private Long accountId; + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/Registration.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/Registration.java new file mode 100644 index 0000000..16dc1a0 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/Registration.java @@ -0,0 +1,35 @@ +package com.realnet.users.entity1; + +import javax.persistence.Lob; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; + +import lombok.Data; + +@Data +public class Registration { + + private String first_name; + + private String last_name; + + private Long mob_no; + + private String email; + + private Long account_id; + + private Long usrGrpId; + + @NotBlank + @Size(min = 6, max = 40) + private String new_password; + + private String confirm_password; + private String accesstype; + + private String gender; + private String date_of_birth; + @Lob + private String how_you_know_aboutus; +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/SignUp.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/SignUp.java new file mode 100644 index 0000000..b52a808 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/SignUp.java @@ -0,0 +1,24 @@ +package com.realnet.users.entity1; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; + +import lombok.Data; + +@Data +public class SignUp { + + private String first_name; + + private String last_name; + + private Long mob_no; + +// private Set role; + @NotBlank + @Size(min = 6, max = 40) + private String password; + + private String confirm_password; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository/AboutWorkRepo.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository/AboutWorkRepo.java new file mode 100644 index 0000000..0f3dfe6 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository/AboutWorkRepo.java @@ -0,0 +1,19 @@ +package com.realnet.users.repository; + +import java.util.Optional; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.session.entity.AboutWork; +import com.realnet.users.entity.Email; + +@Repository +public interface AboutWorkRepo extends JpaRepository{ + + +// Optional findById(Long id); + + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository/CompanyRepo.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository/CompanyRepo.java new file mode 100644 index 0000000..82a9037 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository/CompanyRepo.java @@ -0,0 +1,10 @@ +package com.realnet.users.repository; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.realnet.users.entity.Sys_Accounts; + +public interface CompanyRepo extends JpaRepository { + Sys_Accounts findByCompanyName(String company_name); + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository/RoleRepo.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository/RoleRepo.java new file mode 100644 index 0000000..4238333 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository/RoleRepo.java @@ -0,0 +1,15 @@ +package com.realnet.users.repository; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.JpaRepository; + +import com.realnet.users.entity.Role; + +public interface RoleRepo extends JpaRepository { + // for pagination + Page findAll(Pageable p); + Role findByName(String name); + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository/SysAccountRepo.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository/SysAccountRepo.java new file mode 100644 index 0000000..c5f9bfb --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository/SysAccountRepo.java @@ -0,0 +1,13 @@ +package com.realnet.users.repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.users.entity.Sys_Accounts; + +@Repository +public interface SysAccountRepo extends JpaRepository { + + Sys_Accounts findByEmail(String email); + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository/UserRepo.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository/UserRepo.java new file mode 100644 index 0000000..e0df3ae --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository/UserRepo.java @@ -0,0 +1,47 @@ +//package com.realnet.users.repository; +// +//import java.util.List; +//import java.util.Optional; +// +//import javax.validation.Valid; +// +//import org.springframework.data.domain.Pageable; +//import org.springframework.data.jpa.repository.JpaRepository; +//import org.springframework.data.jpa.repository.Query; +//import org.springframework.data.repository.query.Param; +// +//import com.realnet.session.entity.AboutWork; +//import com.realnet.users.entity.User; +//import com.realnet.users.entity1.AppUser; +// +//public interface UserRepo extends JpaRepository { +// User findByUsername(String username); +// +// User findByEmail(String email); +// +// Optional findByUsernameAndPassword(String username, String password); +// // @Query("SELECT CASE WHEN COUNT(c) > 0 THEN true ELSE false END FROM User p WHERE p.email = :email") +// +// Boolean existsByEmail(String email); +// +// // need modification +// @Query(value = "SELECT * FROM USER WHERE ACCOUNT_ID =:accId AND STATUS =:status", nativeQuery = true) +// List findByAccountIdAndStatus(@Param("accId") Long id, @Param("status") String status, Pageable pageable); +// +// @Query(value = "delete from user_roles where users_id= :user_id", nativeQuery = true) +// void deleteRelation(@Param("user_id") Long user_id); +// +// +// @Query(value = "SELECT * FROM USER WHERE user_id =:user_id AND checknumber =:checknumber", nativeQuery = true) +// User exitbychecknumber(@Param("user_id") Long user_id,@Param("checknumber") Long checknumber); +// +// // List findByAccountIdAndStatus(Long id, String status); +// +//// @Query("SELECT CASE WHEN COUNT(c) > 0 THEN true ELSE false END FROM User c WHERE c.name = :name") +//// Boolean existsByName(@Param("name") String name); +// +//// User findById(int acc_id); +// +//// public List findAll(); +// +//} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/AppUserDepartmentRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/AppUserDepartmentRepository.java new file mode 100644 index 0000000..c896a37 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/AppUserDepartmentRepository.java @@ -0,0 +1,11 @@ +package com.realnet.users.repository1; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.users.entity1.AppUserDepartment; + +@Repository +public interface AppUserDepartmentRepository extends JpaRepository{ + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/AppUserPositionRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/AppUserPositionRepository.java new file mode 100644 index 0000000..41497fc --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/AppUserPositionRepository.java @@ -0,0 +1,11 @@ +package com.realnet.users.repository1; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.users.entity1.AppUserPosition; + +@Repository +public interface AppUserPositionRepository extends JpaRepository{ + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/AppUserRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/AppUserRepository.java new file mode 100644 index 0000000..7ab4f65 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/AppUserRepository.java @@ -0,0 +1,72 @@ +package com.realnet.users.repository1; + +import java.math.BigDecimal; +import java.util.List; +import java.util.Optional; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import com.realnet.fnd.entity1.GrpMenuAccess; +import com.realnet.users.entity1.AppUser; + +@Repository +public interface AppUserRepository extends JpaRepository { + + Optional findByUsername(String username); + +// AppUser findByEmail(String email); + + Optional findByUsernameAndUserPassw(String username, String userPassw); + + Boolean existsByEmail(String email); + + @Query(value = "SELECT customer_number FROM be_cust_master WHERE customer_id = ?1", countQuery = "SELECT count(*) FROM be_cust_master WHERE customer_id = ?1", nativeQuery = true) + String getCustomerNumber(BigDecimal customerId); + + @Query(value = "select refcodedesc from refcodedet where reftype = ?1 and refcode = ?2", countQuery = "select refcodedesc from refcodedet where reftype = ?1 and refcode = ?2", nativeQuery = true) + String getStatus(String tableName, String code); + + @Query(value = "SELECT * FROM sec_users a where a.email =?1", nativeQuery = true) + AppUser findByEmail(String email); + + @Query(value = "SELECT * FROM sec_users a where a.user_name =?1", nativeQuery = true) + AppUser findByUserName(String email); + + @Query(value = "SELECT * FROM sec_users a where a.random_no = ?1", nativeQuery = true) + AppUser findByToken(String random_no); + + @Query(value = "SELECT * FROM sec_grp_menu_access a where a.usr_grp= ?1", nativeQuery = true) + GrpMenuAccess findByUsrGrp(Long usr_grp); + + @Query(value = "SELECT * FROM sec_users a where a.account_id =?1", nativeQuery = true) + List getall(Long account_id); + + @Query(value = "SELECT * FROM sec_users a where a.usr_grp=42 and a.account_id =?1", nativeQuery = true) + List getalluser(Long account_id); + + @Query(value = "SELECT * FROM sec_users a where a.usr_grp=45 and a.account_id =?1", nativeQuery = true) + List getallguest(Long account_id); + + @Query(value = "SELECT * FROM sec_users a where a.user_id =?1", nativeQuery = true) + AppUser findByUserId(Long id); + + @Query(value = "SELECT * FROM sec_users where user_name LIKE CONCAT('%', :keyword, '%')", nativeQuery = true) + List SearchByKeyword(@Param("keyword") String keyword); + + @Query(value = "SELECT * FROM sec_users a where a.active =true", nativeQuery = true) + Page getallusers(Pageable page); + + @Query(value = "SELECT * FROM sec_users a where a.user_id =?1 && access_till_date >= NOW();", nativeQuery = true) + AppUser findusertilldate(Long id); + + List findByFullNameContaining(String keyword); + +// @Query(value = "SELECT * FROM realnet_CNSBE.secuser_roles a.secuser_id =?1", nativeQuery = true) +// List getseuserroles(Long secuser_id); + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/AppUserRoleRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/AppUserRoleRepository.java new file mode 100644 index 0000000..3af437e --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/AppUserRoleRepository.java @@ -0,0 +1,11 @@ +package com.realnet.users.repository1; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.users.entity1.AppUserRole; + +@Repository +public interface AppUserRoleRepository extends JpaRepository{ + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/AppUserSessionsRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/AppUserSessionsRepository.java new file mode 100644 index 0000000..b60d9a0 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/AppUserSessionsRepository.java @@ -0,0 +1,20 @@ +package com.realnet.users.repository1; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import com.realnet.users.entity1.AppUser; +import com.realnet.users.entity1.AppUserSessions; +import com.realnet.users.entity1.AppUserSessionsCompositeKey; + +@Repository +public interface AppUserSessionsRepository extends JpaRepository{ + + List findByUserId(AppUser userId); + + @Query(value = "SELECT * FROM realnet_CNSBE.sec_user_sessions where session_id = ?1",nativeQuery = true) + AppUserSessions findBySessionId(String sessionId); +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/passwordTokenRepository.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/passwordTokenRepository.java new file mode 100644 index 0000000..cbda7bf --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/passwordTokenRepository.java @@ -0,0 +1,23 @@ +package com.realnet.users.repository1; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +import com.realnet.users.entity.PasswordResetToken; + +public interface passwordTokenRepository extends JpaRepository { + +// @Query(value = "SELECT * FROM password_reset_token a where a.token =?1", nativeQuery = true) +// +// Optional findByToken(String token); + +// @Query(value = "SELECT * FROM password_reset_token a where a.token = ?1", nativeQuery = true) +// +// PasswordResetToken findByToken(String token); + + @Query(value="SELECT * FROM password_reset_token a where a.token=:token", nativeQuery = true) + PasswordResetToken findByToken(@Param("token") String token); + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/response/MessageResponse.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/response/MessageResponse.java new file mode 100644 index 0000000..21acd23 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/response/MessageResponse.java @@ -0,0 +1,17 @@ +package com.realnet.users.response; + +public class MessageResponse { + private String message; + + public MessageResponse(String message) { + this.message = message; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/response/ServiceResponse.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/response/ServiceResponse.java new file mode 100644 index 0000000..ce53ae5 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/response/ServiceResponse.java @@ -0,0 +1,29 @@ +package com.realnet.users.response; + +public class ServiceResponse { + private int status; + + private Object data; + + public ServiceResponse(int status, Object data) { + this.status = status; + this.data = data; + } + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } + + public Object getData() { + return data; + } + + public void setData(Object result) { + this.data = result; + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/response/UserItem.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/response/UserItem.java new file mode 100644 index 0000000..44acb0a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/response/UserItem.java @@ -0,0 +1,12 @@ +package com.realnet.users.response; + +import lombok.Data; + +@Data +public class UserItem { + private Long userId; + private String firstName; + private String fullname; + private String email; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/response/UserResponse.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/response/UserResponse.java new file mode 100644 index 0000000..6c67d88 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/response/UserResponse.java @@ -0,0 +1,15 @@ +package com.realnet.users.response; + +import com.realnet.fnd.response.OperationResponse; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper = false) +public class UserResponse extends OperationResponse { + @ApiModelProperty(required = true, value = "") + private UserItem item; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/AboutServiceImple.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/AboutServiceImple.java new file mode 100644 index 0000000..63fc28e --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/AboutServiceImple.java @@ -0,0 +1,132 @@ +package com.realnet.users.service; + +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.stereotype.Service; + +import com.realnet.exceptions.ResourceNotFoundException; +import com.realnet.session.entity.AboutWork; +import com.realnet.users.entity.Email; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.repository.AboutWorkRepo; +import com.realnet.utils.Constant; + + +@Service +public class AboutServiceImple implements AboutWorkService { + + @Autowired + private AboutWorkRepo aboutworkrepo; + + @Autowired + private BCryptPasswordEncoder bcryptEncoder; + + @Override + public AboutWork adddata(AboutWork data) { + // TODO Auto-generated method stub + + AboutWork a=new AboutWork(); + a.setId(data.getId()); + a.setName(data.getName()); + + + AppUser user =new AppUser(); + user.setChangePassw(data.getPassword()); + user.setEmail(data.getEmail()); +// user.setPhone(data.getMobile()); + + + + AboutWork about=aboutworkrepo.save(a); + + + return about; + } + + @Override + public AboutWork updateById(Long id, @Valid AboutWork about) { + AboutWork oldUser = aboutworkrepo.findById(id) + .orElseThrow(() -> new ResourceNotFoundException(Constant.NOT_FOUND_EXCEPTION + " :" + id)); + oldUser.setName(about.getName()); + oldUser.setMobile(about.getMobile()); + oldUser.setEmail(about.getEmail()); + oldUser.setPassword(bcryptEncoder.encode(about.getPassword())); + oldUser.setCompanyname(about.getCompanyname()); + oldUser.setPancard(about.getPancard()); + AboutWork updatedUser = aboutworkrepo.save(oldUser); + return updatedUser; + } + + @Override + public AboutWork updateById2(Long id, @Valid AboutWork about) { + AboutWork oldUser = aboutworkrepo.findById(id) + .orElseThrow(() -> new ResourceNotFoundException(Constant.NOT_FOUND_EXCEPTION + " :" + id)); + + oldUser.setCompanyname(about.getCompanyname()); + oldUser.setPancard(about.getPancard()); + AboutWork updatedUser = aboutworkrepo.save(oldUser); + return updatedUser; + } + + + @Override + public AboutWork updateById3(Long id, @Valid AboutWork about) { + AboutWork oldUser = aboutworkrepo.findById(id) + .orElseThrow(() -> new ResourceNotFoundException(Constant.NOT_FOUND_EXCEPTION + " :" + id)); + oldUser.setWorking(about.getWorking()); + AboutWork updatedUser = aboutworkrepo.save(oldUser); + return updatedUser; + } + + + @Override + public AboutWork adddata(Email email) { + // TODO Auto-generated method stub + AboutWork a=new AboutWork(); + a.setId(email.getId()); + + AboutWork about=aboutworkrepo.save(a); + return about; + } + +// @Override +// public AboutWork adddata(Email email) { +// +// AboutWork a=new AboutWork(); +// a.setId(email.getUserId()); +// a.setName(email.getEmail1()); +// a.setName(email.getEmail2()); +// a.setName(email.getEmail3()); +// a.setName(email.getEmail4()); +// +// +// +// User user =new User(); +// user.setPassword(email.getPassword()); +// user.setEmail(email.getEmail1()); +// user.setEmail(email.getEmail2()); +// user.setEmail(email.getEmail3()); +// user.setEmail(email.getEmail4()); +//AboutWork about=aboutworkrepo.save(a); +// +// +// return about; +// } + +// @Override +// public AboutWork updateById(Long id, @Valid AboutWork aboutWork) { +// // TODO Auto-generated method stub +// +// AboutWork oldUser = aboutworkrepo.findById(id) +// .orElseThrow(() -> new ResourceNotFoundException(Constant.NOT_FOUND_EXCEPTION + " :" + id)); +// +// oldUser.setCompanyname(aboutWork.getCompanyname()); +// +// final AboutWork updatedUser = aboutworkrepo.save(oldUser); +// return updatedUser; +// } + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/AboutWorkService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/AboutWorkService.java new file mode 100644 index 0000000..e4ee966 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/AboutWorkService.java @@ -0,0 +1,23 @@ +package com.realnet.users.service; + +import com.realnet.session.entity.AboutWork; +import com.realnet.users.entity.Email; + +public interface AboutWorkService { + public AboutWork adddata(AboutWork data); + + public AboutWork updateById(Long id, AboutWork about); + public AboutWork updateById2(Long id, AboutWork about); + public AboutWork updateById3(Long id, AboutWork about); + + public AboutWork adddata(Email email); + +// public AboutWork adddata(Email email); + +// public AboutWork adddata(Email email); + +// public AboutWork updateById(Long id, @Valid AboutWork aboutWork); + +// User adddata(User data); + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/CompanyService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/CompanyService.java new file mode 100644 index 0000000..db2198b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/CompanyService.java @@ -0,0 +1,21 @@ +package com.realnet.users.service; + +import java.util.List; + +import com.realnet.users.entity.CompanyDto; +import com.realnet.users.entity.Sys_Accounts; + +public interface CompanyService { + // creating new company + Sys_Accounts companyResister(CompanyDto company); + + public boolean insertOrSaveCompany(Sys_Accounts company); + // company registration + + List getAll(); + + public Sys_Accounts getById(Long id); + + void delete(long id); + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/CompanyServiceImpl.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/CompanyServiceImpl.java new file mode 100644 index 0000000..67c1901 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/CompanyServiceImpl.java @@ -0,0 +1,98 @@ +//package com.realnet.users.service; +// +//import java.util.List; +// +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.stereotype.Service; +// +//import com.realnet.users.entity.CompanyDto; +//import com.realnet.users.entity.Sys_Accounts; +//import com.realnet.users.entity.User; +//import com.realnet.users.repository.CompanyRepo; +//import com.realnet.users.repository.RoleRepo; +//import com.realnet.users.repository.UserRepo; +// +//import lombok.extern.slf4j.Slf4j; +// +//@Slf4j +//@Service +//public class CompanyServiceImpl implements CompanyService { +// +// @Autowired +// private UserRepo userRepo; +// +// @Autowired +// private RoleRepo roleRepo; +// +// @Autowired +// private CompanyRepo companyRepo; +// +// public List getAll() { +// return companyRepo.findAll(); +// +// } +// +// @Override +// public void delete(long id) { +// companyRepo.deleteById(id); +// } +// +// @Override +// public Sys_Accounts getById(Long id) { +// return companyRepo.findById(id).get(); +// } +// +// public boolean addNewCompany(Sys_Accounts company) { +// boolean exists = companyRepo.existsById(company.getAccount_id()); +// if (exists) { +// return false; +// } else { +// return this.insertOrSaveCompany(company); +// +// } +// } +// +//// public User resister(UserDto user) { +//// User newUser = new User(); +//// newUser.setEmail(user.getEmail()); +//// newUser.setFirstName(user.getFirstName()); +//// newUser.setLastName(user.getLastName()); +//// Role admin_role = roleRepo.findByName("ADMIN"); +//// Role user_role = roleRepo.findByName("USER"); +//// Role billing_role = roleRepo.findByName("BILLING"); +//// Set roles = new HashSet(); +//// roles.add(admin_role); +//// roles.add(user_role); +//// roles.add(billing_role); +//// newUser.setRoles(roles); +//// return userRepo.save(newUser); +//// } +// +// //########## MOD NEEDED ########## +// @Override +// public Sys_Accounts companyResister(CompanyDto company) { +// Sys_Accounts newCompany = new Sys_Accounts(); +// newCompany.setCompanyName(company.getCompanyName()); +// newCompany.setGstNumber(company.getGstNumber()); +// newCompany.setWorkspace(company.getWorkspace()); +// log.info("companyResister() -> CompanyDto : {}", newCompany); +// Sys_Accounts savedCompany = companyRepo.save(newCompany); +// log.info("companyResister() -> savedCompany : {}", savedCompany); +// +// String userEmail = company.getUserEmail(); +// log.info("companyResister() -> userEmail : {}", userEmail); +// User user = userRepo.findByEmail(userEmail); +// //user.setCompany(savedCompany); +// user.setSys_account(savedCompany); +// userRepo.save(user); +// log.info("companyResister() -> savedUser : {}", user); +// return savedCompany; +// } +// +// @Override +// public boolean insertOrSaveCompany(Sys_Accounts company) { +// this.companyRepo.save(company); +// return true; +// } +// +//} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/RoleService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/RoleService.java new file mode 100644 index 0000000..da25b0d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/RoleService.java @@ -0,0 +1,29 @@ +package com.realnet.users.service; + +import java.util.List; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.http.ResponseEntity; + +import com.realnet.users.entity.Role; +import com.realnet.users.entity1.AppUser; + +public interface RoleService { + + public List getRoles(); + + public Page getAll(Pageable page); + + public Role getRoleById(Long id); + + ResponseEntity addRole(Role role); + + ResponseEntity deleteRole(Long id); + + ResponseEntity updateRole(Long id, Role role); + + // add or remove a Role on a user + public AppUser addRole(Long id, Long roleId); + public AppUser removeRole(Long id, Long roleId); +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/RoleServiceImpl.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/RoleServiceImpl.java new file mode 100644 index 0000000..b271a97 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/RoleServiceImpl.java @@ -0,0 +1,173 @@ +package com.realnet.users.service; + +import java.util.HashSet; +import java.util.List; +import java.util.Optional; +import java.util.Set; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; + +import com.realnet.exceptions.InvalidUserDataException; +import com.realnet.exceptions.ResourceNotFoundException; +import com.realnet.users.entity.Role; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.repository.RoleRepo; +import com.realnet.users.repository1.AppUserRepository; +import com.realnet.users.service1.AppUserService; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +public class RoleServiceImpl implements RoleService { // UserDetailsService, + + @Autowired + private AppUserRepository userRepository; + @Autowired(required=false) + private AppUserService userService; + + + + @Autowired + private RoleRepo roleRepository; + + @Override + public List getRoles() { + return roleRepository.findAll(); + } + + @Override + public Page getAll(Pageable page) { + return roleRepository.findAll(page); + } + + @Override + public Role getRoleById(Long id) { + Role role = roleRepository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Role not found :: " + id)); + return role; + } + + @Override + public ResponseEntity addRole(Role role) { + Role newRole = new Role(); + newRole.setName(role.getName()); + newRole.setDescription(role.getDescription()); + Set roleList = new HashSet<>(); + roleList.add(newRole); + // for(int i=0; i< role.getUsers().size(); i++){ + for (AppUser user : role.getAppusers()) { + // if(!userRepository.findByEmail(role.getUsers().get(i).getEmail()).isPresent()) + // { + AppUser usr = userRepository.findByEmail(user.getEmail()); + if (usr != null) { + AppUser newUser = user; + newUser.setRoles(roleList); + AppUser savedUser = userRepository.save(newUser); + if (!userRepository.findById(savedUser.getUserId()).isPresent()) + return ResponseEntity.unprocessableEntity().body("Role Creation Failed"); + } else + return ResponseEntity.unprocessableEntity().body("User with email Id is already Present"); + } + return ResponseEntity.ok("Successfully created Role"); + + } + + @Override + public ResponseEntity deleteRole(Long id) { + if (roleRepository.findById(id).isPresent()) { + if (roleRepository.getOne(id).getAppusers().size() == 0) { + roleRepository.deleteById(id); + if (roleRepository.findById(id).isPresent()) { + return ResponseEntity.unprocessableEntity().body("Failed to delete the specified record"); + } else + return ResponseEntity.ok().body("Successfully deleted specified record"); + } else + return ResponseEntity.unprocessableEntity() + .body("Failed to delete, Please delete the users associated with this role"); + } else + return ResponseEntity.unprocessableEntity().body("No Records Found"); + } + + @Override + public ResponseEntity updateRole(Long id, Role role) { + if (roleRepository.findById(id).isPresent()) { + Role newRole = roleRepository.findById(id).get(); + newRole.setName(role.getName()); + newRole.setDescription(role.getDescription()); + Role savedRole = roleRepository.save(newRole); + if (roleRepository.findById(savedRole.getId()).isPresent()) + return ResponseEntity.accepted().body("Role saved successfully"); + else + return ResponseEntity.badRequest().body("Failed to update Role"); + } else + return ResponseEntity.unprocessableEntity().body("Specified Role not found"); + } + + + public void addUserRole(AppUser user, long roleId) { + Optional roleOpt = roleRepository.findById(roleId); + if (!roleOpt.isPresent()) { + throw new ResourceNotFoundException("Role cannot be null"); + } + user.getRoles().add(roleOpt.get()); + } + + /* ==== WORKING CODE ==== */ + @Override + public AppUser addRole(Long id, Long roleId) { + // check user + Optional userOpt = userRepository.findById(id); + if (!userOpt.isPresent()) { + throw new ResourceNotFoundException(String.format("User not found with Id = %s", id)); + } + AppUser user = userOpt.get(); + // check role + Optional roleOpt = roleRepository.findById(roleId); + if (!roleOpt.isPresent()) { + throw new ResourceNotFoundException(String.format("Role not found with Id = %s", roleId)); + } + Role role = roleOpt.get(); + + // ==== MOD ==== + // check if user already have that role... + if(user.getRoles().contains(role)) { + throw new InvalidUserDataException(String.format("Role %s already exists with the User = %s", roleId, id)); + } + user.getRoles().add(role); +// user.setUpdateby(userService.getLoggedInUserId()); + userRepository.save(user); + log.info(String.format("Added role %s on user id = %s", role.getName(), user.getUserId())); + return user; + } + @Override + public AppUser removeRole(Long id, Long roleId) { + // check user + Optional userOpt = userRepository.findById(id); + if (!userOpt.isPresent()) { + throw new ResourceNotFoundException(String.format("User not found with Id = %s", id)); + } + AppUser user = userOpt.get(); + // check role + Optional roleOpt = roleRepository.findById(roleId); + if (!roleOpt.isPresent()) { + throw new ResourceNotFoundException(String.format("Role not found with Id = %s", roleId)); + } + Role role = roleOpt.get(); + user.getRoles().remove(role); + + // === MOD NEEDED + if(user.getRoles().isEmpty()) { + throw new InvalidUserDataException(String.format("User %s Must Have a Single Role", id)); + //user.setRoles(roleRepository.findByName("USER")); + } +// user.setUpdatedBy(userService.getLoggedInUserId()); + userRepository.save(user); + log.info(String.format("Removed role %s on user id = %s", role.getName(), user.getUserId())); + return user; + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/UserService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/UserService.java new file mode 100644 index 0000000..22b630c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/UserService.java @@ -0,0 +1,94 @@ +//package com.realnet.users.service; +// +//import java.util.List; +// +//import javax.validation.Valid; +// +//import com.realnet.session.entity.AboutWork; +//import com.realnet.users.entity.User; +//import com.realnet.users.entity.UserDto; +//import com.realnet.users.entity.UserProfileDTO; +// +//public interface UserService { +// public boolean insertOrSaveUser(User user); +// +// public List getAllUsers(); +// +// // company registration +// List getAll(); +// +// void delete(long id); +// +// // Optional getByUserNameAndPassword(String username, String password); +// User getByUserNameAndPassword(String username, String password); +// +// User getByUserName(String username); +// +// User getByEmail(String email); +// +// User getById(Long id); +// +// boolean existsByEmail(String email); +// +// // update by username +// User updateByEmail(String email, UserProfileDTO userProfile); +// +// // get logged in user details +// String getLoggedInUserEmail(); +// +// Long getLoggedInUserId(); +// +// Long getLoggedInUserAccountId(); +// +// User getLoggedInUser(); +// +// User getUserInfoByUserId(Long userId); +// +// // creating new user (sign up user as ADMIN) +// User userResister(UserDto user); +// +// // --- USERS ADDED BY ADMIN --- +// User createUserByAdmin(User user); +//// List getUsersByAccountId(Long id); +// //List getUsersByCompanyId(Long id); // need mod +// public User updateById(Long id, User UserRequest); +// boolean deleteById(Long id); +// +// boolean changePassword(String oldPassword, String newPassword); +// +// public void sendEmail(String email,Long id,Long checkNo); +// +// public User adddata(AboutWork about); +// +// public User updateById(Long id, @Valid AboutWork aboutWork); +// public User updateById2(Long id, @Valid AboutWork aboutWork); +// +// public User userResister(User user, Long id); +// +// +// User updateByIdWorkingId(Long id, @Valid AboutWork aboutWork); +// +// User updateByMangingWork(Long id, @Valid AboutWork aboutWork); +// +// public User userResisteremail(User user); +// +// public void sendEmail2(String email1, Long userId, Long checknumber); +// +// public void sendEmail3(String email2, Long userId, Long checknumber); +// +// public void sendEmail4(String email3, Long userId, Long checknumber); +// +// public void sendEmail5(String email4, Long userId, Long checknumber); +// +// //public boolean exitbychecknumber(Long userId, Long checknumber); +// public User exitbychecknumber(Long userId, Long checknumber); +// +// public User save(User user); +// +// +// +//// public List save(List about); +// +// +// +//} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/AppUserRoleServiceImpl.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/AppUserRoleServiceImpl.java new file mode 100644 index 0000000..9860598 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/AppUserRoleServiceImpl.java @@ -0,0 +1,44 @@ +package com.realnet.users.service1; + +import java.util.List; +import java.util.Optional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Sort; +import org.springframework.stereotype.Service; + +import com.realnet.users.entity1.AppUserRole; +import com.realnet.users.repository1.AppUserRoleRepository; + +@Service +public class AppUserRoleServiceImpl { + private AppUserRoleRepository appUserRoleRepository; + private AppUserServiceImpl appUserServiceImpl; + @Autowired + public AppUserRoleServiceImpl(AppUserRoleRepository appUserRoleRepository, + AppUserServiceImpl appUserServiceImpl) { + super(); + this.appUserRoleRepository = appUserRoleRepository; + this.appUserServiceImpl = appUserServiceImpl; + + } + public List getAll(){ + + return appUserRoleRepository.findAll(Sort.by(Sort.Direction.ASC, "usrGrp")); + } + public Optional getOne(Long id){ + return appUserRoleRepository.findById(id); + } + public AppUserRole addOne(AppUserRole appUserRole) { +// String createdBy = appUserServiceImpl.getLoggedInUser().getUsername(); +// String updatedBy = createdBy; +// appUserRole.setCreateby(createdBy); +// appUserRole.setUpdateby(updatedBy); + return appUserRoleRepository.save(appUserRole); + } + public AppUserRole updateOne(AppUserRole appUserRole) { + String updatedBy = appUserServiceImpl.getLoggedInUser().getUsername(); + appUserRole.setUpdateby(updatedBy); + return appUserRoleRepository.save(appUserRole); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/AppUserService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/AppUserService.java new file mode 100644 index 0000000..7af18ee --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/AppUserService.java @@ -0,0 +1,85 @@ +package com.realnet.users.service1; + +import java.util.List; +import java.util.Optional; + + +import com.realnet.users.entity1.AppUser; + +public interface AppUserService { + public boolean insertOrSaveUser(AppUser appUser); + + public List getAllUsers(); + + // company registration + List getAll(); + + void delete(long id); + + // Optional getByUserNameAndPassword(String username, String password); + AppUser getByUserNameAndPassword(String username, String userPassw); + + Optional getByUserName(String username); + + AppUser getByEmail(String email); + + Optional getById(Long id); + + boolean existsByEmail(String email); + + // update by username +// User updateByEmail(String email, UserProfileDTO userProfile); + + // get logged in user details + String getLoggedInUserEmail(); + + Long getLoggedInUserId(); + + Long getLoggedInUserAccountId(); + + AppUser getLoggedInUser(); + + AppUser getUserInfoByUserId(Long userId); + + // creating new user (sign up user as ADMIN) + AppUser userResister(AppUser appUser); + + // --- USERS ADDED BY ADMIN --- + AppUser createUserByAdmin(AppUser appUser); +// List getUsersByAccountId(Long id); + //List getUsersByCompanyId(Long id); // need mod +// public User updateById(Long id, User UserRequest); + boolean deleteById(Long id); + +// boolean changePassword(String oldPassword, String newPassword); + + public void sendEmail(String email,Long id,Long checkNo); + + //public User adddata(AboutWork about); + +// public User updateById(Long id, @Valid AboutWork aboutWork); +// public User updateById2(Long id, @Valid AboutWork aboutWork); + + public AppUser userResister(AppUser user, Long id); + + +// User updateByIdWorkingId(Long id, @Valid AboutWork aboutWork); + +// User updateByMangingWork(Long id, @Valid AboutWork aboutWork); + +// public User userResisteremail(User user); +// +// public void sendEmail2(String email1, Long userId, Long checknumber); +// +// public void sendEmail3(String email2, Long userId, Long checknumber); +// +// public void sendEmail4(String email3, Long userId, Long checknumber); +// +// public void sendEmail5(String email4, Long userId, Long checknumber); +// + //public boolean exitbychecknumber(Long userId, Long checknumber); + //public User exitbychecknumber(Long userId, Long checknumber); + +// public User save(User user); + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/AppUserServiceImpl.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/AppUserServiceImpl.java new file mode 100644 index 0000000..98482dc --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/AppUserServiceImpl.java @@ -0,0 +1,709 @@ +package com.realnet.users.service1; + +import java.math.BigDecimal; +import java.security.SecureRandom; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.HashSet; +import java.util.List; +import java.util.Optional; +import java.util.Set; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; + +import com.realnet.exceptions.ResourceNotFoundException; +import com.realnet.userDTO.User; +import com.realnet.users.entity.PasswordResetRequest; +import com.realnet.users.entity.PasswordResetToken; +import com.realnet.users.entity.Role; +import com.realnet.users.entity.Sys_Accounts; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.entity1.AppUserDepartment; +import com.realnet.users.entity1.AppUserDto; +import com.realnet.users.entity1.AppUserPosition; +import com.realnet.users.entity1.AppUserPrinciple; +import com.realnet.users.entity1.AppUserRole; +import com.realnet.users.entity1.Registration; +import com.realnet.users.repository.RoleRepo; +import com.realnet.users.repository.SysAccountRepo; +import com.realnet.users.repository1.AppUserDepartmentRepository; +import com.realnet.users.repository1.AppUserPositionRepository; +import com.realnet.users.repository1.AppUserRepository; +import com.realnet.users.repository1.AppUserRoleRepository; +import com.realnet.users.repository1.passwordTokenRepository; + +import lombok.extern.slf4j.Slf4j; + +@Service +@Slf4j +public class AppUserServiceImpl implements UserDetailsService, AppUserService { + + @Autowired + private RoleRepo roleRepo; + + @Autowired + private SysAccountRepo sysAccountRepo; + + private passwordTokenRepository passwordTokenRepository; + private AppUserRepository appUserRepository; + private AppUserRoleRepository appUserRoleRepository; + private AppUserPositionRepository appUserPositionRepository; + private AppUserDepartmentRepository appUserDepartmentRepository; + private BCryptPasswordEncoder bcryptEncoder; + + @Autowired + public AppUserServiceImpl(AppUserRepository appUserRepository, BCryptPasswordEncoder bCryptPasswordEncoder, + AppUserRoleRepository appUserRoleRepository, AppUserPositionRepository appUserPositionRepository, + AppUserDepartmentRepository appUserDepartmentRepository, passwordTokenRepository passwordTokenRepository) { + super(); + this.appUserRepository = appUserRepository; + this.bcryptEncoder = bCryptPasswordEncoder; + this.appUserRoleRepository = appUserRoleRepository; + this.appUserPositionRepository = appUserPositionRepository; + this.appUserDepartmentRepository = appUserDepartmentRepository; + this.passwordTokenRepository = passwordTokenRepository; + } + + @Override + public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { + Optional user = appUserRepository.findByUsername(username); + if (user.get() == null) { + throw new UsernameNotFoundException("Invalid Email or password."); + } + AppUserPrinciple appUserPrinciple = new AppUserPrinciple(user.get()); + + return appUserPrinciple; + } + + public List getAllAppUsers(Pageable page) { + Page p = appUserRepository.getallusers(page); + List l = p.getContent(); + for (AppUser o : l) { + if (o.getCustomerId() != null) { + o.setCustomerNumer(appUserRepository.getCustomerNumber(BigDecimal.valueOf(o.getCustomerId()))); + } + if (o.getUsrGrp() != null) { + o.setUsrGrpId(o.getUsrGrp().getUsrGrp()); + o.setUsrGrpName(o.getUsrGrp().getGroupName()); + o.setUsrGrp(null); + } + if (o.getPositionCode() != null) { + o.setPositionCodeString(o.getPositionCode().getPositionCode()); + o.setPositionCode(null); + } + if (o.getDepartmentCode() != null) { + o.setDepartmentCodeString(o.getDepartmentCode().getDepartmentCode()); + o.setDepartmentCode(null); + } +// if(o.getStatus()!=null) { +// String s = getStatus("USRST",o.getStatus()); +// if(s!=null) { +// o.setStatus(s); +// } +// } + } + return l; + } + + public AppUser addOneUser(Registration reg) { + AppUser appUser = findUserByEmail(reg.getEmail()); + if (reg.getNew_password().equals(reg.getConfirm_password())) { + +// appUser.setEmail(reg.getEmail()); + appUser.setUsername(reg.getEmail()); + + AppUserRole r = null; + if (reg.getUsrGrpId() != null) { + r = appUserRoleRepository.findById(reg.getUsrGrpId()).orElse(null); + } + + if (r != null) { + appUser.setUsrGrp(r); + } + + Sys_Accounts account = sysAccountRepo.findById(reg.getAccount_id()).orElseThrow(null); + appUser.setAccount(account); + appUser.setFullName(reg.getFirst_name() + " " + reg.getLast_name()); + appUser.setMob_no(reg.getMob_no()); + appUser.setChangePassw(reg.getNew_password()); + appUser.setUserPassw(bcryptEncoder.encode(reg.getNew_password())); + appUser.setIsComplete(true); + appUser.setActive(true); + + appUser.setAccesstype(reg.getAccesstype()); + Set strRoles = appUser.getRoles(); + Set roles = new HashSet<>(); + + if (strRoles.isEmpty()) { + String role1 = "ROLE_ADMIN"; + Role userRole = roleRepo.findByName(role1); + roles.add(userRole); + appUser.setRoles(roles); + } + } + + AppUser save = appUserRepository.save(appUser); +// System.out.println("saved user is .." + save); + + return save; + } + + public AppUser addOneUserCustom(User ppUser) { + AppUser appUser = new AppUser(); + appUser.setUsername(ppUser.getUsername()); + appUser.setFullName(ppUser.getFullName()); + appUser.setEmail(ppUser.getEmail()); + appUser.setUserPassw(bcryptEncoder.encode(ppUser.getPassword())); + appUser.setChangePassw(ppUser.getPassword()); + appUser.setShortName(ppUser.getFirstName()); + appUser.setUsrGrpName(ppUser.getRole()); + appUser.setAbout(ppUser.getAbout()); +// appUser.setProvider( ppUser.getProvider().name()); + appUser.setCountry(ppUser.getCountry()); + appUser.setBlocked(false); + appUser.setIsComplete(true); + appUser.setActive(true); + + appUser.setChecknumber(ppUser.getChecknumber()); + appUser.setUsrGrp(appUserRoleRepository.findById(42l).get()); + Sys_Accounts account = sysAccountRepo.findByEmail(ppUser.getEmail()); + if (account != null) { + appUser.setAccount(account); + } else { + appUser.setAccount(sysAccountRepo.findById(1l).get()); + + } + + appUser.setUsrGrp(appUserRoleRepository.findById(46l).orElse(null)); + + Set roles = new HashSet<>(); + String role1 = "ROLE_ADMIN"; + Role userRole = roleRepo.findByName(role1); + roles.add(userRole); + appUser.setRoles(roles); + if (appUserRepository.findByEmail(ppUser.getEmail()) != null) { + return null; + } + return appUserRepository.save(appUser); + } + + public Optional getOneUser(Long id) { + Optional o = appUserRepository.findById(id); + if (o.get() != null) { + // o.get().setCustomerNumer(appUserRepository.getCustomerNumber(o.get().getCustomerId())); + if (o.get().getCustomerId() != null) { + o.get().setCustomerNumer( + appUserRepository.getCustomerNumber(BigDecimal.valueOf(o.get().getCustomerId()))); + } + if (o.get().getUsrGrp() != null) { + o.get().setUsrGrpId(o.get().getUsrGrp().getUsrGrp()); + o.get().setUsrGrpName(o.get().getUsrGrp().getGroupName()); + o.get().setUsrGrp(null); + } + if (o.get().getPositionCode() != null) { + o.get().setPositionCodeString(o.get().getPositionCode().getPositionCode()); + o.get().setPositionCode(null); + } + if (o.get().getDepartmentCode() != null) { + o.get().setDepartmentCodeString(o.get().getDepartmentCode().getDepartmentCode()); + o.get().setDepartmentCode(null); + } + } + return o; + } + + @Override + public boolean insertOrSaveUser(AppUser appUser) { + // TODO Auto-generated method stub + appUserRepository.save(appUser); + return true; + } + + @Override + public List getAllUsers() { + // TODO Auto-generated method stub + List users = appUserRepository.findAll(); + // users.forEach(o->o.setCustomerNumer(appUserRepository.getCustomerNumber(o.getCustomerId()))); + return users; + } + + @Override + public List getAll() { + // TODO Auto-generated method stub + List list = new ArrayList<>(); + appUserRepository.findAll().iterator().forEachRemaining(list::add); + // list.forEach(o->o.setCustomerNumer(appUserRepository.getCustomerNumber(o.getCustomerId()))); + return list; + } + + @Override + public void delete(long id) { + appUserRepository.deleteById(id); + } + + @Override + public AppUser getByUserNameAndPassword(String username, String password) { + // TODO Auto-generated method stub + String userPassw = bcryptEncoder.encode(password); + AppUser user = appUserRepository.findByUsernameAndUserPassw(username, userPassw).orElse(null); + return user; + } + + @Override + public Optional getByUserName(String username) { + // TODO Auto-generated method stub + return appUserRepository.findByUsername(username); + } + + @Override + public AppUser getByEmail(String email) { + // TODO Auto-generated method stub + AppUser user = appUserRepository.findByEmail(email); + return user; + } + + @Override + public Optional getById(Long id) { + // TODO Auto-generated method stub + return appUserRepository.findById(id); + } + + @Override + public boolean existsByEmail(String email) { + // TODO Auto-generated method stub + return appUserRepository.existsByEmail(email); + } + + @Override + public String getLoggedInUserEmail() { + // TODO Auto-generated method stub + Authentication auth = SecurityContextHolder.getContext().getAuthentication(); + if (auth == null) { + return "noSession"; + } + return auth.getName(); + } + + @Override + public Long getLoggedInUserId() { + // TODO Auto-generated method stub + String loggedInUserEmail = this.getLoggedInUserEmail(); + AppUser appUser = appUserRepository.findByEmail(loggedInUserEmail); + Long id = appUser.getUserId(); + return id; + } + + @Override + public Long getLoggedInUserAccountId() { + // TODO Auto-generated method stub + return null; + } + + @Override + public AppUser getLoggedInUser() { + String loggedInUserName = this.getLoggedInUserEmail(); + Optional user = appUserRepository.findByUsername(loggedInUserName); + + if (user.isPresent()) { + return user.get(); + + } else { + return null; + } +// log.info("getLoggedInUser() : {} ", user.get()); + } + + @Override + public AppUser getUserInfoByUserId(Long userId) { + // TODO Auto-generated method stub + AppUser user = appUserRepository.findById(userId).orElse(null); + return user; + } + + @Override + public AppUser userResister(AppUser appUser) { + // TODO Auto-generated method stub + appUser.setUserPassw(bcryptEncoder.encode(appUser.getUserPassw())); + return appUserRepository.save(appUser); + } + + @Override + public AppUser createUserByAdmin(AppUser appUser) { + appUser.setUserPassw(bcryptEncoder.encode(appUser.getUserPassw())); + return appUserRepository.save(appUser); + } + + @Override + public boolean deleteById(Long id) { + // TODO Auto-generated method stub + if (!appUserRepository.existsById(id)) { + throw new ResourceNotFoundException("User not exists"); + } + appUserRepository.deleteById(id); + return true; + } + + @Override + public void sendEmail(String email, Long id, Long checkNo) { + // TODO Auto-generated method stub + + } + + public User userResister(User user, Long id) { + // TODO Auto-generated method stub + return null; + } + + public AppUser updateOneUser(AppUser appUser) { + return appUserRepository.save(appUser); + } + + public AppUser updateAppUserDto(Long userId, AppUserDto appUserDto) { + AppUser a = appUserRepository.findById(userId).orElse(null); + if (a != null) { + String encodedPass1 = bcryptEncoder.encode(appUserDto.getUserPassw()); + if (a.getUserPassw() != encodedPass1) { + a.setUserPassw(encodedPass1); + a.setPwdChangedCnt((long) 0); + a.setPwdChangedCnt(a.getPwdChangedCnt() + 1); + a.setLastPwdChangedDate(new Date()); + } + a.setUsername(appUserDto.getUsername() != null ? appUserDto.getUsername() : a.getUsername()); + a.setTitle(appUserDto.getTitle() != null ? appUserDto.getTitle() : a.getTitle()); + a.setShortName(appUserDto.getShortName() != null ? appUserDto.getShortName() : a.getShortName()); + a.setFullName(appUserDto.getFullName() != null ? appUserDto.getFullName() : a.getFullName()); + a.setStatus(appUserDto.getStatus() != null ? appUserDto.getStatus() : a.getStatus()); + a.setCustomerId(appUserDto.getCustomerId() != null ? appUserDto.getCustomerId() : a.getCustomerId()); + a.setEmail(appUserDto.getEmail() != null ? appUserDto.getEmail() : a.getEmail()); + a.setNotification( + appUserDto.getNotification() != null ? appUserDto.getNotification() : a.getNotification()); + +// if (appUserDto.getTshirtsize() != null) { +// a.setTshirtsize(appUserDto.getTshirtsize()); +// } + a.setMob_no(appUserDto.getMob_no()); + a.setActive(appUserDto.isActive()); + + if (appUserDto.getUsrGrpId() != null) { + if (a.getUsrGrp().getUsrGrp() != appUserDto.getUsrGrpId()) { + AppUserRole role = appUserRoleRepository.findById(appUserDto.getUsrGrpId()).orElse(null); + if (role != null) { + a.setUsrGrp(role); + } + } + } + if (appUserDto.getPositionCodeId() != null) { + if (!a.getPositionCode().getPositionCode().equals(appUserDto.getPositionCodeId())) { + AppUserPosition position = appUserPositionRepository.findById(appUserDto.getPositionCodeId()) + .orElse(null); + if (position != null) { + a.setPositionCode(position); + } + } + } + if (appUserDto.getDepartmentCodeId() != null) { + if (!a.getDepartmentCode().getDepartmentCode().equals(appUserDto.getDepartmentCodeId())) { + AppUserDepartment department = appUserDepartmentRepository + .findById(appUserDto.getDepartmentCodeId()).orElse(null); + if (department != null) { + a.setDepartmentCode(department); + } + } + } + a.setUpdateby(getLoggedInUser().getFullName()); + appUserRepository.save(a); + return a; + } + return null; + } + + public AppUser resetPassword(Long userId, String hash, String newPassword) { + AppUser a = appUserRepository.findById(userId).orElse(null); + if (a != null) { + if (a.getPassword4().equals(hash)) { + a.setUserPassw(bcryptEncoder.encode(newPassword)); + a.setPwdChangedCnt(a.getPwdChangedCnt() != null ? (long) 1 + a.getPwdChangedCnt() : (long) 1); + a.setLastPwdChangedDate(new Date()); +// a.setPassword4(null); + appUserRepository.save(a); + return a; + } + return null; + } + return null; + } +// +//// By Gaurav +//// RESET PASSWORD WITH CONFIRM PASSWORD +// +// public AppUser resetPasswordnew(PasswordResetRequest p) { +// AppUser a = appUserRepository.findById(p.getUserId()).orElse(null); +// +// if (a != null) { +// if (bcryptEncoder.matches(p.getOldPassword(), a.getUserPassw())) { +// +// if (p.getNewPassword().equals(p.getConfirmPassword())) { +// +// a.setUserPassw(bcryptEncoder.encode(p.getNewPassword())); +// a.setPwdChangedCnt(a.getPwdChangedCnt() != null ? (long) 1 + a.getPwdChangedCnt() : (long) 1); +// a.setLastPwdChangedDate(new Date()); +// a.setChangePassw(p.getNewPassword()); +// +// appUserRepository.save(a); +// return a; +// } +// return null; +// } +// return null; +// } +// return null; +// } +// +//// By Gaurav +//// FORGOT PASSWORD +// +// public AppUser forgotpassword(PasswordResetRequest p) { +// AppUser a = appUserRepository.findById(p.getUserId()).orElse(null); +// +// if (a != null) { +// +// if (p.getNewPassword().equals(p.getConfirmPassword())) { +// +// a.setUserPassw(bcryptEncoder.encode(p.getNewPassword())); +// a.setPwdChangedCnt(a.getPwdChangedCnt() != null ? (long) 1 + a.getPwdChangedCnt() : (long) 1); +// a.setLastPwdChangedDate(new Date()); +// a.setChangePassw(p.getNewPassword()); +// +// appUserRepository.save(a); +// return a; +// } +// return null; +// } +// return null; +// +// } + +// By Gaurav +// RESET PASSWORD WITH CONFIRM PASSWORD + + public ResponseEntity resetPasswordnew(PasswordResetRequest p) { + AppUser a = appUserRepository.findById(p.getUserId()).orElse(null); + + if (a == null) { + + System.out.println("User Is Empty! "); + return new ResponseEntity<>("User Is Empty!", HttpStatus.BAD_REQUEST); + + } + if (!bcryptEncoder.matches(p.getOldPassword(), a.getUserPassw())) { + System.out.println("Old Password is Not Right! "); + + return new ResponseEntity<>("Old Password is Not Right!", HttpStatus.BAD_REQUEST); + + } + if (!p.getNewPassword().equals(p.getConfirmPassword())) { + System.out.println("new And Confirm Passowrd Should Be Equal! "); + + return new ResponseEntity<>("new And Confirm Passowrd Should Be Equal!", HttpStatus.BAD_REQUEST); + + } + + a.setUserPassw(bcryptEncoder.encode(p.getNewPassword())); + a.setPwdChangedCnt(a.getPwdChangedCnt() != null ? (long) 1 + a.getPwdChangedCnt() : (long) 1); + a.setLastPwdChangedDate(new Date()); + a.setChangePassw(p.getNewPassword()); + + AppUser save = appUserRepository.save(a); + System.out.println("Password changed Successfully.. "); + + return new ResponseEntity<>("Password changed Successfully", HttpStatus.ACCEPTED); + + } + +// By Gaurav +// FORGOT PASSWORD + + public ResponseEntity forgotpassword(PasswordResetRequest p) { + + AppUser a = appUserRepository.findByEmail(p.getEmail()); + + if (a == null) { + + System.out.println("User Is Empty! "); + return new ResponseEntity<>("User Is Empty!", HttpStatus.BAD_REQUEST); + + } + + if (!p.getNewPassword().equals(p.getConfirmPassword())) { + System.out.println("new And Confirm Passowrd Should Be Equal! "); + + return new ResponseEntity<>("new And Confirm Passowrd Should Be Equal!", HttpStatus.BAD_REQUEST); + + } + + a.setUserPassw(bcryptEncoder.encode(p.getNewPassword())); + a.setPwdChangedCnt(a.getPwdChangedCnt() != null ? (long) 1 + a.getPwdChangedCnt() : (long) 1); + a.setLastPwdChangedDate(new Date()); + a.setChangePassw(p.getNewPassword()); + + appUserRepository.save(a); + AppUser save = appUserRepository.save(a); + System.out.println("Password changed Successfully.. "); + + return new ResponseEntity<>(save, HttpStatus.ACCEPTED); + + } + + public String generateRandomHash(int len) { + String chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk" + "lmnopqrstuvwxyz!@#$%&"; +// Random rnd = new Random(); + SecureRandom rnd = new SecureRandom(); + + StringBuilder sb = new StringBuilder(len); + for (int i = 0; i < len; i++) + sb.append(chars.charAt(rnd.nextInt(chars.length()))); + return sb.toString(); + } + + public String getStatus(String tableName, String code) { + String s = appUserRepository.getStatus(tableName, code); + if (StringUtils.hasText(s)) { + return s; + } + return null; + } + + @Override + public AppUser userResister(AppUser user, Long id) { + // TODO Auto-generated method stub + return null; + } + + // method for forgot password by email + + public AppUser findUserByEmail(String email) { + AppUser user = appUserRepository.findByEmail(email); + + return user; + } + +// public void createPasswordResetTokenForUser(AppUser user, String token) { +// PasswordResetToken myToken = new PasswordResetToken(user,token); +// passwordTokenRepository.save(myToken); +// } + + public void createPasswordResetTokenForUser(AppUser user, String token) { + AppUser user1 = appUserRepository.findByEmail(user.getEmail()); + + PasswordResetToken myToken = new PasswordResetToken(token); + myToken.setUser(user1); + passwordTokenRepository.save(myToken); + } + + // ADD USER VIA ADMIN + public void adduserbyemail(AppUser user, String token, String email) { + + user.setRandom_no(token); + user.setUsername(email); + user.setEmail(email); + + if (user.getCreatedate() == null) { + user.setCreatedate(LocalDateTime.now()); + } + + appUserRepository.save(user); + + } + +// resend otp for verification + public void resendotp(int otp, String email) { + AppUser user = findUserByEmail(email); + + user.setRandom_no(String.valueOf(otp)); + + appUserRepository.save(user); + + } + + // ADD USER VIA ADMIN + public void adduserviaadmin(AppUser user, String token, String email, Long account_id) { + Sys_Accounts accounts = sysAccountRepo.findById(account_id).orElseThrow(null); + + user.setRandom_no(token); + user.setUsername(email); + user.setEmail(email); + user.setAccount(accounts); + if (user.getCreatedate() == null) { + user.setCreatedate(LocalDateTime.now()); + } + + appUserRepository.save(user); + + } + + // ADD GUEST VIA ADMIN + public void addguestviaadmin(AppUser user, String token, String email, Long account_id) { + Sys_Accounts accounts = sysAccountRepo.findById(account_id).orElseThrow(null); + + user.setRandom_no(token); + user.setUsername(email); + user.setEmail(email); + user.setAccount(accounts); + if (user.getCreatedate() == null) { + user.setCreatedate(LocalDateTime.now()); + } +// user.setAccess_duration(access_duration); +// +// Calendar c = Calendar.getInstance(); +// c.setTime(new Date()); +// c.add(Calendar.DATE, access_duration); +// +//// SimpleDateFormat dateFormat = new SimpleDateFormat(); +//// String format = dateFormat.format(c.getTime()); +// +// user.setAccess_till_date(c.getTime()); + appUserRepository.save(user); + + } + + public String validatePasswordResetToken(String token) { + final PasswordResetToken passToken = passwordTokenRepository.findByToken(token); + + return !isTokenFound(passToken) ? "invalidToken" : isTokenExpired(passToken) ? "expired" : null; + } + + private boolean isTokenFound(PasswordResetToken passToken) { + return passToken != null; + } + + private boolean isTokenExpired(PasswordResetToken passToken) { + final Calendar cal = Calendar.getInstance(); + return passToken.getExpiryDate().before(cal.getTime()); + } + + public void changeUserPassword(AppUser user, String newPassword) { + user.setUserPassw(bcryptEncoder.encode(newPassword)); + appUserRepository.save(user); + } + + public AppUser getUserByPasswordResetToken(String token) { + AppUser token2 = appUserRepository.findByToken(token); + return token2; + } + + // end method for forgot password +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/AppUserSessionsServiceImpl.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/AppUserSessionsServiceImpl.java new file mode 100644 index 0000000..fa1c700 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/AppUserSessionsServiceImpl.java @@ -0,0 +1,23 @@ +package com.realnet.users.service1; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.realnet.users.entity1.AppUserSessions; +import com.realnet.users.repository1.AppUserSessionsRepository; + +@Service +public class AppUserSessionsServiceImpl { + private AppUserSessionsRepository appUserSessionsRepository; + @Autowired + public AppUserSessionsServiceImpl(AppUserSessionsRepository appUserSessionsRepository) { + super(); + this.appUserSessionsRepository = appUserSessionsRepository; + } + public AppUserSessions newSession(AppUserSessions appUserSessions) { + return appUserSessionsRepository.save(appUserSessions); + } + public AppUserSessions add(AppUserSessions session) { + return appUserSessionsRepository.save(session); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/PositionAndDepartmentServiceImpl.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/PositionAndDepartmentServiceImpl.java new file mode 100644 index 0000000..ae759e9 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/PositionAndDepartmentServiceImpl.java @@ -0,0 +1,37 @@ +package com.realnet.users.service1; + +import java.util.List; +import java.util.Optional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.realnet.users.entity1.AppUserDepartment; +import com.realnet.users.entity1.AppUserPosition; +import com.realnet.users.repository1.AppUserDepartmentRepository; +import com.realnet.users.repository1.AppUserPositionRepository; + +@Service +public class PositionAndDepartmentServiceImpl { + private AppUserDepartmentRepository appUserDepartmentRepository; + private AppUserPositionRepository appUserPositionRepository; + @Autowired + public PositionAndDepartmentServiceImpl(AppUserDepartmentRepository appUserDepartmentRepository, + AppUserPositionRepository appUserPositionRepository) { + super(); + this.appUserDepartmentRepository = appUserDepartmentRepository; + this.appUserPositionRepository = appUserPositionRepository; + } + public List getAll(){ + return appUserDepartmentRepository.findAll(); + } + public List getAllPosition(){ + return appUserPositionRepository.findAll(); + } + public Optional getOne(String departmentCode){ + return appUserDepartmentRepository.findById(departmentCode); + } + public Optional getOnePosition(String positionCode){ + return appUserPositionRepository.findById(positionCode); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/SysAccountService.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/SysAccountService.java new file mode 100644 index 0000000..289aac8 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/SysAccountService.java @@ -0,0 +1,95 @@ +package com.realnet.users.service1; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.itextpdf.text.pdf.PdfStructTreeController.returnType; +import com.realnet.users.entity.Sys_Accounts; +import com.realnet.users.repository.SysAccountRepo; + +@Service +public class SysAccountService { + + @Autowired + private SysAccountRepo sysAccountRepo; + + public Sys_Accounts save(Sys_Accounts sys) { + + Sys_Accounts account = findByEmail(sys.getEmail()); + if (account != null) { + + } + + sys.setActive(true); + Sys_Accounts accounts = sysAccountRepo.save(sys); + + return accounts; + + } + +// update sysaccount + + public Sys_Accounts update(Long accountId, Sys_Accounts request) { + + Sys_Accounts account = sysAccountRepo.findById(accountId).get(); + // account_id generally auto-generated hai, update me change nahi karenge + + if (request.getCompanyName() != null) { + account.setCompanyName(request.getCompanyName()); + } + + if (request.getWorkspace() != null) { + account.setWorkspace(request.getWorkspace()); + } + + if (request.getGstNumber() != null) { + account.setGstNumber(request.getGstNumber()); + } + + if (request.getMobile() != null) { + account.setMobile(request.getMobile()); + } + + if (request.getEmail() != null) { + account.setEmail(request.getEmail()); + } + + if (request.getPancard() != null) { + account.setPancard(request.getPancard()); + } + + if (request.getWorking() != null) { + account.setWorking(request.getWorking()); + } + + if (request.getActive() != null) { + account.setActive(request.getActive()); + } + + Sys_Accounts save = sysAccountRepo.save(account); + + return save; + + } + + public List getall() { + + List getall = sysAccountRepo.findAll(); + return getall; + } + + public Sys_Accounts getBYId(Long account_id) { + + Sys_Accounts accounts = sysAccountRepo.findById(account_id).get(); + return accounts; + } + + public Sys_Accounts findByEmail(String email) { + + Sys_Accounts accounts = sysAccountRepo.findByEmail(email); + return accounts; + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/utils/Constant.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/utils/Constant.java new file mode 100644 index 0000000..b93f5e1 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/utils/Constant.java @@ -0,0 +1,283 @@ +package com.realnet.utils; + +public final class Constant { + + // SORT BY + public final static String SORT_BY_CREATION_DATE = "createdAt"; + public final static String SORT_BY_CREATION_DATE_NATIVE_QUERY = "created_at"; + + // --------------------------------------Error Type + public final static String ERROR_TYPE_HIBERNATE = "Hibernate Exception"; + public final static String ERROR_TYPE_DB = "Database Exception"; + public final static String ERROR_TYPE_EXCEPTION = "Other Exception"; + public final static String ERROR_TYPE_CONTROLLER = "Controller Exception"; + public final static String ERROR_TYPE_HTTP = "HTTP Error"; + + public final static String NOT_FOUND_EXCEPTION = "Data Not Found "; + public final static String NOT_EXIST_EXCEPTION = "Data Not Exist "; + + // --------------------------------------Error Status + public final static String ERROR_LEVEL_FAILURE = "Failure"; + public final static String ERROR_LEVEL_SUCCESS = "Success"; + + // --------------------------------------DB Error Code + public final static int ERROR_CODE_SERVER = 404; + public final static int ERROR_CODE_SERVER_AUTH = 401; + public final static int ERROR_CODE_DB = 500; + public final static int ERROR_CODE_DATA = 201; + public final static int SUCCESS_CODE = 200; + public final static int ERROR_CODE_VALIDATION = 301; + public final static int ERROR_CODE_VERYFICATION = 403; + + // --------------------------------------REAL IT API RESPONSE MESSEGES + public final static String EXTRACTOR_API_TITLE = "Extractor"; + public final static String EXTRACTOR_CREATED_SUCCESSFULLY = "Extractor added Successfully !"; + public final static String EXTRACTOR_UPDATED_SUCCESSFULLY = "Extractor updated Successfully !"; + public final static String EXTRACTOR_DELETED_SUCCESSFULLY = "Extractor deleted Successfully !"; + public final static String EXTRACTOR_NOT_DELETED = "Extractor not deleted"; + public final static String EXTRACTOR_NOT_CREATED = "Extractor not Added !"; + public final static String EXTRACTOR_NOT_UPDATED = "Extractor not updated !"; + + + public final static String STATIC_EXTRACTION_SUCCESS = "Static Extraction Completed !"; + public final static String DYNAMIC_EXTRACTION_SUCCESS = "Dynamic Extraction Completed !"; + public final static String STATIC_EXTRACTION_FAILED = "Static Extraction Failed !"; + public final static String DYNAMIC_EXTRACTION_FAILED = "Dynamic Extraction Failed !"; + + // RULE + public final static String RULE_LIBRARY_API_TITLE = "Rule Library"; + public final static String RULE_CREATED_SUCCESSFULLY = "Rule added Successfully !"; + public final static String RULE_UPDATED_SUCCESSFULLY = "Ruler updated Successfully !"; + public final static String RULE_DELETED_SUCCESSFULLY = "Rule deleted Successfully !"; + public final static String RULE_NOT_DELETED = "Rule not deleted"; + public final static String RULE_NOT_CREATED = "Rule not Added !"; + public final static String RULE_NOT_UPDATED = "Rule not updated !"; + + // EXCEPTION RULE + public final static String EXCEPTION_RULE_LIBRARY_API_TITLE = "Exception Rule Library"; + public final static String EXCEPTION_RULE_CREATED_SUCCESSFULLY = "Exception Rule added Successfully !"; + public final static String EXCEPTION_RULE_UPDATED_SUCCESSFULLY = "Exception Rule updated Successfully !"; + public final static String EXCEPTION_RULE_DELETED_SUCCESSFULLY = "Exception Rule deleted Successfully !"; + + public final static String EXCEPTION_RULE_NOT_DELETED = "Exception Rule not deleted"; + public final static String EXCEPTION_RULE_NOT_CREATED = "Exception Rule not Added !"; + public final static String EXCEPTION_RULE_NOT_UPDATED = "Exception Rule not updated !"; + + // TECHNOLOGY STACK + public final static String TECHNOLOGY_STACK_API_TITLE = "Technology Stack"; + public final static String TECHNOLOGY_STACK_CREATED_SUCCESSFULLY = "Technology Stack saved Successfully !"; + public final static String TECHNOLOGY_STACK_UPDATED_SUCCESSFULLY = "Technology Stack updated Successfully !"; + public final static String TECHNOLOGY_STACK_DELETED_SUCCESSFULLY = "Technology Stack deleted Successfully !"; + public final static String TECHNOLOGY_STACK_NOT_DELETED = "Technology Stack not deleted"; + public final static String TECHNOLOGY_STACK_NOT_CREATED = "Technology Stack not Added !"; + public final static String TECHNOLOGY_STACK_NOT_UPDATED = "Technology Stack not updated !"; + public final static String UNZIP_EXCEPTION = "There is a problem while Unziping"; + + // PROJECT SETUP + public final static String PROJECT_SETUP_API_TITLE = "Project Setup"; + public final static String PROJECT_CREATED_SUCCESSFULLY = "Project saved Successfully !"; + public final static String PROJECT__UPDATED_SUCCESSFULLY = "Project updated Successfully !"; + public final static String PROJECT_DELETED_SUCCESSFULLY = "Project deleted Successfully !"; + public final static String PROJECT_NOT_DELETED = "Project not deleted"; + public final static String PROJECT_NOT_CREATED = "Project not Added !"; + public final static String PROJECT_NOT_UPDATED = "Project not updated !"; + public final static String PROJECT_COPY_SUCCESS = "Project Copy Success !"; + public final static String PROJECT_COPY_FAILURE = "Project Copy Failed !"; + + // MODULE SETUP + public final static String MODULE_SETUP_API_TITLE = "Module Setup"; + public final static String MODULE_CREATED_SUCCESSFULLY = "Module saved Successfully !"; + public final static String MODULE_UPDATED_SUCCESSFULLY = "Module updated Successfully !"; + public final static String MODULE_DELETED_SUCCESSFULLY = "Module deleted Successfully !"; + public final static String MODULE_NOT_DELETED = "Module not deleted"; + public final static String MODULE_NOT_CREATED = "Module not Added !"; + public final static String MODULE_NOT_UPDATED = "Module not updated !"; + public final static String MODULE_COPY_SUCCESS = "Module Copy Success !"; + public final static String MODULE_COPY_FAILURE = "Module Copy Failed !"; + + // WIREFRAME APIS + public final static String WIREFRAME_API_TITLE = "Wireframe Setup"; + public final static String WIREFRAME_CREATED_SUCCESSFULLY = "Wireframe saved Successfully !"; + public final static String WIREFRAME_UPDATED_SUCCESSFULLY = "Wireframe updated Successfully !"; + public final static String WIREFRAME_DELETED_SUCCESSFULLY = "Wireframe deleted Successfully !"; + public final static String WIREFRAME_NOT_DELETED = "Wireframe not deleted"; + public final static String WIREFRAME_NOT_CREATED = "Wireframe not Added !"; + public final static String WIREFRAME_NOT_UPDATED = "Wireframe not updated !"; + + //REPORT APIS + public final static String REPORT_API_TITLE = "report Setup"; + public final static String REPORT_CREATED_SUCCESSFULLY = "Report saved Successfully !"; + public final static String REPORT_UPDATED_SUCCESSFULLY = "Report updated Successfully !"; + public final static String REPORT_DELETED_SUCCESSFULLY = "Report deleted Successfully !"; + public final static String REPORT_NOT_DELETED = "Report not deleted"; + public final static String REPORT_NOT_CREATED = "Report not Added !"; + public final static String REPORT_NOT_UPDATED = "Report not updated !"; + + + + public final static String WIREFRAME_BUTTON_ADDED = "Wireframe Button Added !"; + public final static String WIREFRAME_SECTION_ADDED = "Wireframe Section Added !"; + public final static String WIREFRAME_FIELD_ADDED_IN_SECTION = "Wireframe Field Added In Section !"; + public final static String WIREFRAME_FIELD_NOT_ADDED_IN_SECTION = "Wireframe Field Not Added"; + public final static String WIREFRAME_FIELD_NAME_CHANGE_SUCCESS = "Wireframe Field Name Changed"; + public final static String WIREFRAME_FIELD_NAME_CHANGE_FAILURE = "Wireframe Field Name Not Changed"; + public final static String WIREFRAME_COPY_SUCCESS = "Wireframe Copy Success !"; + public final static String WIREFRAME_COPY_FAILURE = "Wireframe Copy Failed !"; + + public final static String WIREFRAME_SECTION_DELETE_SUCCESS = "Section Deleted Successfully !"; + public final static String WIREFRAME_SECTION_DELETE_FAILURE = "Section Deletion Failure !"; + public final static String WIREFRAME_FIELD_DELETE_SUCCESS = "Section Deleted Successfully !"; + public final static String WIREFRAME_FIELD_DELETE_FAILURE = "Section Deletion Failure !"; + + // LOOKUP + public final static String LOOKUP_API_TITLE = "Lookup"; + public final static String LOOKUP_CREATED_SUCCESSFULLY = "Lookup saved Successfully !"; + public final static String LOOKUP_UPDATED_SUCCESSFULLY = "Lookup updated Successfully !"; + public final static String LOOKUP_DELETED_SUCCESSFULLY = "Lookup deleted Successfully !"; + public final static String LOOKUP_NOT_DELETED = "Lookup not deleted"; + public final static String LOOKUP_NOT_CREATED = "Lookup not Added !"; + public final static String LOOKUP_NOT_UPDATED = "Lookup not updated !"; + + // ACTION BUILDER + public final static String ACTION_BUILDER_API_TITLE = "Action Builder"; + public final static String ACTION_CREATED_SUCCESSFULLY = "Action saved Successfully !"; + public final static String ACTION_UPDATED_SUCCESSFULLY = "Action updated Successfully !"; + public final static String ACTION_DELETED_SUCCESSFULLY = "Action deleted Successfully !"; + public final static String ACTION_NOT_DELETED = "Action not deleted"; + public final static String ACTION_NOT_CREATED = "Action not Added !"; + public final static String ACTION_NOT_UPDATED = "Action not updated !"; + public final static String ACTION_CFF_LAYOUT_SUCCESS = "Layout Created Successfully!"; + public final static String ACTION_CFF_LAYOUT_FAILURE = "Layout Not Created!"; + public final static String ACTION_CFF_DATA_SUCCESS = "Data Added Successfully!"; + public final static String ACTION_CFF_DATA_FAILURE = "Data Not Added!"; + + // MASTER BUILDER CONTROLLER + public final static String MASTER_BUILDER_API_TITLE = "Master Builder"; + public final static String MASTER_BUILDER_SUCCESS = "Master Builder created Successfully!"; + public final static String MASTER_BUILDER_FAILURE = "Master Builder Not Created!"; + + // FORM BUILDER + public final static String FORM_BUILDER_API_TITLE = "Form Builder"; + public final static String FORM_BUILD_SUCCESS = "Form created Successfully!"; + public final static String FORM_BUILD_FAILURE = "Form Not Created!"; + public final static String FORM_DELETE_SUCCESS = "Form Deleted!"; + public final static String FORM_DELETE_FAILURE = "Form Not Delete!"; + + // QUERY BUILDER + public final static String QUERY_API_TITLE = "Create Query"; + public final static String QUERY_CREATE_SUCCESS = "Table created Successfully!"; + public final static String QUERY_CREATE_FAILURE = "Table Not Created!"; + + // FILE OPERATION + public final static String FILE_OPERATION_API_TITLE = "File Operation"; + public final static String FILE_CODE_SAVE_SUCCESSFULLY = "Code Save Successfully!"; + public final static String FILE_NOT_FOUND_EXCEPTION = "File Not Found!"; + public final static String FILE_CODE_SAVE_FAILURE = "Code Not Saved!"; + public final static String FILE_LIST_API_TITLE = "File List"; + public final static String FILE_LIST_IS_EMPTY = "File List Is Empty"; + + // FLF + public final static String FLF_API_TITLE = "FLF"; + public final static String FLF_CREATED_SUCCESSFULLY = "FLF saved Successfully !"; + public final static String FLF_UPDATED_SUCCESSFULLY = "FLF updated Successfully !"; + public final static String FLF_DELETED_SUCCESSFULLY = "FLF deleted Successfully !"; + public final static String FLF_NOT_DELETED = "FLF not deleted"; + public final static String FLF_NOT_CREATED = "FLF not Added !"; + public final static String FLF_NOT_UPDATED = "FLF not updated !"; + + + + + // --------------------------------------Success another + public final static String USER_ADDED_SUCCESSFULLY = "User added Successfully !"; + public final static String USER_INFO_UPDATED_SUCCESSFULLY = "User info update successfully !"; + public final static String ERROR_MESSAGE_SAME_OLD_NEW_PWD = "Old and New Password are same"; + public final static String USER_DOES_NOT_EXIST = "UserName does not exist."; + public final static String USER_DELETE_TITLE = "User Deleted"; + public final static String USER_DELETED_SUCCESSFULLY = "User deleted Successfully !"; + public final static String ERROR_MESSAGE_AUTH_FAILED = "Authentication failed"; + public final static String ERROR_MESSAGE_USER_NAME_AND_PASS = "Please check username and password"; + public final static String USER_LOFOUT_TITLE = "Auth Session"; + public final static String USER_LOG_OUT_SUCCESSFULLY = "User Loged Out successfully !"; + public final static String ERROR_LOG_OUT_MESSAGE = "Session does not exist."; + public final static String ERROR_MOBILE_NO_VERIFICATION = "Mobile number is not register."; + public final static String VERYFICATION_CODE_ACCEPTED = "Code accepted. Phone now marked verified"; + public final static String ERROR_VERYFICATION_MESSAGE = "Code not accepted or Invalide OTP"; + public final static String PROFILE_PIC_ADDED_SUCCESSFULLY = "Pic added Successfully !"; + public final static String ERROR_PROFILE_PIC_FAILED_TO_UPLOAD = "Pic failed to add."; + public final static String FAILED_TO_DELETED_USER = "User info does not exist."; + public final static String PICTURE_TITLE = "Picture"; + +// public final static String PROFILE_PIC_DELETED_SUCCESSFULLY = "Pic delted Successfully !"; +// public final static String PROFILE_API_TITLE = "Profile Pic"; +// public final static String ERROR_PROFILE_PIC_FAILED_TO_DELETE = "Profile Picture does not exist"; +// +// public final static String CONTACT_API_TITLE = "Contacts Uploaded"; +// public final static String CONTACTS_UPLOADED_SUCCESS_MESSAGE = "Contacts uploaded successfully !"; +// public final static String FAILED_TO_UPLOADED_CONTACTS = "Failed to uploaded contacts"; +// +// public final static String GROUP_WITH_USERS_CREATED_SUCCESSFULLY = "Group with users created Successfully !"; +// public final static String FAILED_TO_CREATE_GROUP_WITH_USERS = "Failed to create group with users."; +// +// public final static String GROUP_API_TITLE = "Group"; +// public final static String GROUP_NOT_FOUND_MSG = "There is no any group."; +// public final static String GROUP_CREATED_SUCCESSFULLY_MESSAGE = "Group added Successfully !"; +// public final static String FAILED_TO_CREATE_GROUP_MESSAGE = "Failed to create group."; +// public final static String GROUP_NAME_UPDATED_SUCCESSFULLY = "Group name updated Successfully !"; +// public final static String FAILED_TO_UPDATE_GROUP_NAME_MESSAGE = "Failed to upload group name."; +// public final static String USER_DELETED_FROM_GROUP_SUCCESSFULLY = "User deleted from group Successfully !"; +// public final static String FAILED_TO_DELETE_USER_FROM_GROUP = "Failed to delete user from group."; +// public final static String GROUP_DELETED_SUCCESSFULLY = "User deleted from group Successfully !"; +// public final static String FAILED_TO_DELETE_GROUP = "Failed to delete group."; +// +// public final static String CHAT_MESSAGE_TITLE = "Message"; +// public final static String MESSAGE_SEND_SUCCESSFULLY = "Message sent Successfully !"; +// public final static String FAILED_TO_SEND_MESSAGE = "Failed to send message."; +// public final static String FAILED_TO_DELETE_MESSAGE = "Failed to Delete"; +// +// public final static String NOTIFICATIONS_MESSAGE_TITLE = "Notification"; +// public final static String NOTIFICATIONS_MESSAGE_SET_SUCCESSFULLY = "Notifications preferences set successfully !"; +// public final static String NOTIFICATIONS_FAILED_TO_SET_MESSAGE = "Failed to set preferences."; +// +// public final static String SOCIAL_MESSAGE_TITLE = "Social Network"; +// public final static String SOCIAL_FAILED_TO_SET_MESSAGE = "Failed to link social network site."; +// +// public final static String LIVE_LOCATION_MESSAGE_TITLE = "Live Location"; +// public final static String LIVE_LOCATION_FAILED_TO_SET_MESSAGE = "Failed to set current location."; +// public final static String LIVE_LOCATION_FAILED_TO_GET_MESSAGE = "There is no active sharing sessions."; +// public final static String LIVE_LOCATION_DELETED = "Current live location sharing session deleted."; + + public final static String PIC_UPLOADED_TITLE = "Profile Picture"; + public final static String PIC_UPLOAD_FAILED = "You failed to upload "; + + public final static String PICTURE_CATEGORY = "full"; + public final static String IMAGE_STORAGE_PATH = "D:\\image\\cyooTempFiles\\"; + + public final static String USER_TITLE = "User"; + public final static String USER_NAME_EMAIL_IN_USE = "Username/Email already taken."; + public final static String USER_NAME_EMAIL_NOT_IN_USE = "Username/Email not taken."; + public final static String EMAIL_ID_IN_USE = "Email already taken."; + public final static String USER_NOT_IN_USE = "Username not taken."; + public final static String EMAIL_NOT_IN_USE = "Email not taken."; + + // ======================================================================================== + + /* + * Group group = new Group(); group.setGroupId(2); + * group.setGroupName("friends"); group.setCreatedBy("Munta"); + * group.setCreatedDateTime("2014-11-22 12:45:34"); group.setIsDelete(0); + * + * Set grList = new HashSet(); + * + * GroupUser groupUser = new GroupUser(); groupUser.setId(1); + * groupUser.setGroupId(4); groupUser.setUserName("Jake4"); + * groupUser.setAddedDateTime("2014-11-22 12:45:34"); grList.add(groupUser); + * + * groupUser = new GroupUser(); groupUser.setId(5); groupUser.setGroupId(2); + * groupUser.setUserName("Jake5"); + * groupUser.setAddedDateTime("2014-11-22 12:45:34"); grList.add(groupUser); + * + * group.setGroupUserList(grList); + */ + +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/utils/Port_Constant.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/utils/Port_Constant.java new file mode 100644 index 0000000..9d94631 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/utils/Port_Constant.java @@ -0,0 +1,113 @@ +package com.realnet.utils; + +import javax.annotation.PostConstruct; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; +import org.springframework.web.client.RestTemplate; + +@Component +public class Port_Constant { + + public static String BACKEND_PORTAL_DOMAIN; + public static String FRONTEND_PORTAL_DOMAIN; + public static String SUREOPS_DOMAIN; + public static String JOBPRO_DOMAIN; + public static String APP_BUILD_DOMAIN; + public static String SURE_SERVE_DOMAIN; + public static String SURE_SETU_DOMAIN; + public static String FARM_SCRIPT_RUNNER_DOMAIN; + public static String DEPLOYMENT_TYPE; + public static String FARM_IP_ADDRESS_online; + public static String CONTROL_CENTRE_PORT; + public static String CONTROL_CENTRE_MASTER_PORT; + public static String CONTROL_CENTRE_MASTER_IP; + public static String LOCALHOST; + public static String SUREOPS_LOCALHOST; + public static String APPBUILD_LOCALHOST; + public static String SURE_VAULT_DOMAIN; + public static String GITEA_DB_NAME; + public static String GITEA_DOMAIN; + public static String GITEA_USERNAME; + public static String GITEA_URL; + public static String PROTOCOL; + public static String SONAR_QUBE_DOMAIN; + public static String SONAR_QUBE_Username; + + public static String SONAR_QUBE_password; + public static String DOMAIN; + +// SETTER + + private final RestTemplate restTemplate = new RestTemplate(); + + // Type ('dev', 'prod') + private final String type = "dev"; + + @Value("${BACKEND_PORTAL_DOMAIN}") + private String backendPortalDomain; + + // @PostConstruct is used to make API calls and initialize the constants for the + // entire application during startup. + @PostConstruct + public void initializeConstantsFromApi() { + +// BACKEND_PORTAL_DOMAIN = getUrlFromApi("Backend_portal_domain"); +// String backendPortalDomain = getBackendPortalUrl(); +// System.out.println("Fetched BACKEND_PORTAL_DOMAIN: " + backendPortalDomain); + + if (backendPortalDomain != null) { + BACKEND_PORTAL_DOMAIN = backendPortalDomain; + System.out.println("Fetched BACKEND_PORTAL_DOMAIN from properties file: " + backendPortalDomain); + + FRONTEND_PORTAL_DOMAIN = getUrlFromApi(backendPortalDomain, "Frontend_portal_domain"); + System.out.println("FRONTEND_PORTAL_DOMAIN: " + FRONTEND_PORTAL_DOMAIN); + SUREOPS_DOMAIN = getUrlFromApi(backendPortalDomain, "SUREOPS_DOMAIN"); + JOBPRO_DOMAIN = getUrlFromApi(backendPortalDomain, "JOBPRO_DOMAIN"); + APP_BUILD_DOMAIN = getUrlFromApi(backendPortalDomain, "APP_BUILD_DOMAIN"); + SURE_SERVE_DOMAIN = getUrlFromApi(backendPortalDomain, "SURE_SERVE_DOMAIN"); + SURE_SETU_DOMAIN = getUrlFromApi(backendPortalDomain, "SURE_SETU_DOMAIN"); + FARM_SCRIPT_RUNNER_DOMAIN = getUrlFromApi(backendPortalDomain, "FARM_SCRIPT_RUNNER_DOMAIN"); + DEPLOYMENT_TYPE = getUrlFromApi(backendPortalDomain, "DEPLOYMENT_TYPE"); + FARM_IP_ADDRESS_online = getUrlFromApi(backendPortalDomain, "FARM_IP_ADDRESS_online"); + CONTROL_CENTRE_PORT = getUrlFromApi(backendPortalDomain, "CONTROL_CENTRE_PORT"); + CONTROL_CENTRE_MASTER_PORT = getUrlFromApi(backendPortalDomain, "CONTROL_CENTRE_MASTER_PORT"); + CONTROL_CENTRE_MASTER_IP = getUrlFromApi(backendPortalDomain, "CONTROL_CENTRE_MASTER_IP"); + LOCALHOST = getUrlFromApi(backendPortalDomain, "Localhost"); + SUREOPS_LOCALHOST = getUrlFromApi(backendPortalDomain, "SUREOPS_LOCALHOST"); + APPBUILD_LOCALHOST = getUrlFromApi(backendPortalDomain, "APPBUILD_LOCALHOST"); + SURE_VAULT_DOMAIN = getUrlFromApi(backendPortalDomain, "SURE_VAULT_DOMAIN"); + GITEA_DOMAIN = getUrlFromApi(backendPortalDomain, "GITEA_DOMAIN"); + GITEA_USERNAME = getUrlFromApi(backendPortalDomain, "GITEA_USERNAME"); + + GITEA_URL = getUrlFromApi(backendPortalDomain, "GITEA_URL"); + + GITEA_DB_NAME = getUrlFromApi(backendPortalDomain, "GITEA_DB_NAME"); + + PROTOCOL = getUrlFromApi(backendPortalDomain, "PROTOCOL"); + SONAR_QUBE_DOMAIN = getUrlFromApi(backendPortalDomain, "SONAR_QUBE_DOMAIN"); + SONAR_QUBE_Username = getUrlFromApi(backendPortalDomain, "SONAR_QUBE_Username"); + + SONAR_QUBE_password = getUrlFromApi(backendPortalDomain, "SONAR_QUBE_password"); + DOMAIN = getUrlFromApi(backendPortalDomain, "DOMAIN"); + + } else { + System.out.println("Error: BACKEND_PORTAL_DOMAIN could not be fetched."); + } + } + + private String getUrlFromApi(String backendPortalDomain, String serviceName) { + try { + // Use the provided backendPortalDomain to construct the full URL + String baseUrl = backendPortalDomain + "/token/HealthCheckup/DeploymentUrl/Deployment_url/"; + String url = baseUrl + type + "/" + serviceName; + String Object = restTemplate.getForObject(url, String.class); // Fetch URL from API + + System.out.println(serviceName + " : " + Object); + return Object; + } catch (Exception e) { + System.out.println("Error fetching URL for " + serviceName + ": " + e.getMessage()); + return null; + } + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/utils/WireFrameConstant.java b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/utils/WireFrameConstant.java new file mode 100644 index 0000000..542e305 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/java/com/realnet/utils/WireFrameConstant.java @@ -0,0 +1,54 @@ +package com.realnet.utils; + +public class WireFrameConstant { + + public static enum FormType { + header_only, + line_only, + header_line, + multiline + } + + public static final String HEADER_ONLY = "header_only"; + public static final String LINE_ONLY = "line_only"; + public static final String HEADER_LINE = "header_line"; + public static final String MULTILINE = "multiline"; + + public static final String HEADER_TYPE = "header"; + public static final String LINE_TYPE = "line"; + + public static final String ID = "id"; + public static final String DT_PK = "PRI"; + public static final String DT_INTEGER = "int"; + public static final String DT_DOUBLE = "double"; + public static final String DT_LONGTEXT = "longtext"; + public static final String DT_VARCHAR = "varchar"; + public static final String DT_DATE_TIME = "datetime"; + public static final String DT_NULL = "N"; + + public static final String SECTION = "section"; + public static final String LINE_SECTION = "line_section"; + public static final String LABEL = "label"; + public static final String COLUMN = "column"; + public static final String BUTTON = "button"; + + + + public static final String DT_TEXTFIELD = "textfield"; + public static final String DT_LINE_TEXTFIELD = "l_textfield"; +// public static final String DT_LONGTEXT = "longtext"; + public static final String DT_DATE = "date"; + public static final String FIELD_CHECKBOX = "checkbox"; + public static final String FIELD_RADIOBUTTON = "radiobutton"; + public static final String FIELD_AUTOCOMPLETE = "autocomplete"; + + public static final String BASIC = "basic"; + public static final String ADDITIONAL = "addtional"; + + public static final String DT_MULTISELECT = "multiselect"; + + + + +} + diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/resources/MyprojectUI_view.properties b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/resources/MyprojectUI_view.properties new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/resources/application.properties b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/resources/application.properties new file mode 100644 index 0000000..44c3ee1 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/resources/application.properties @@ -0,0 +1,105 @@ +# File is used by sprigboot +server.contextPath=/* +server.port=9292 +spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,classpath:/webui/ + +spring.banner.location=classpath:banner_txt.txt + +#Temporary disable security to enable it remove this +#security.ignored=/** + +springfox.documentation.swagger.v2.path=/api-docs +spring.jackson.date-format=yyyy-MM-dd + +chatgpt.api.url=https://api.openai.com/v1/completions +chatgpt.api.key=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 + + + +System.Net.ServicePointManager.Expect100Continue = false; + +#spring.jpa.hibernate.ddl-auto=none +#spring.jpa.hibernate.ddl-auto=update +#spring.datasource.continue-on-error=false + +# **** MY SQL DATABASE CONNECTION **** + +spring.datasource.url=jdbc:mysql://realit-prod.cj462uqsa4mz.ap-south-1.rds.amazonaws.com:3306/realnet_CNSBENEW?createDatabaseIfNotExist=true +spring.datasource.username=cnsdev +spring.datasource.password=cnsdevprod1212 + +spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver + +spring.jpa.hibernate.ddl-auto=update +spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect +# Prefix Path + +#spring.jpa.show-sql=true +spring.jpa.properties.hibernate.format_sql=true +spring.jpa.properties.hibernate.proc.param_null_passing=true + +# **********paytm dependency ****** +razorpay.api.key=rzp_test_xVnrBUjJWTEH0r +razorpay.api.secret=evTXkIFcgpVtiLa1P7M7CIox + +#***** MAIL SENDER +spring.mail.host=smtp.gmail.com +spring.mail.username=realitmailsender@gmail.com +spring.mail.password=epnmhzsccotnyozf +spring.mail.port=587 +#spring.mail.properties.mail.smtp.auth=true +spring.mail.properties.mail.smtp.starttls.enable=true +spring.mail.properties.mail.smtp.starttls.required=true + +# JACKSON +spring.jackson.serialization.FAIL_ON_EMPTY_BEANS=false + + +spring.mail.properties.mail.smtp.auth = true +spring.mail.properties.mail.smtp.socketFactory.port = 465 +spring.mail.properties.mail.smtp.socketFactory.class = javax.net.ssl.SSLSocketFactory +spring.mail.properties.mail.smtp.socketFactory.fallback = false + +#******* MULTIPART RESOLVER +spring.servlet.multipart.enabled=true +spring.servlet.multipart.max-file-size=100MB +spring.servlet.multipart.max-request-size=100MB + +#***************OAUTH2 SOCIAL LOGIN ********* +# Social login provider props +spring.security.oauth2.client.registration.google.clientId=437023664181-0lm0ipgip3qbhga4nd7o4128jv4g2nv9.apps.googleusercontent.com +spring.security.oauth2.client.registration.google.clientSecret=I1HPyUqdJ9UONu45W1_wwfww +spring.security.oauth2.client.registration.google.scope=profile, email + + +spring.security.oauth2.client.registration.linkedin.clientId= +spring.security.oauth2.client.registration.linkedin.clientSecret= +spring.security.oauth2.client.registration.linkedin.client-authentication-method=post +spring.security.oauth2.client.registration.linkedin.authorization-grant-type=authorization_code +spring.security.oauth2.client.registration.linkedin.scope=r_liteprofile, r_emailaddress +spring.security.oauth2.client.registration.linkedin.redirect-uri={baseUrl}/login/oauth2/code/{registrationId} +spring.security.oauth2.client.registration.linkedin.client-name=Linkedin +spring.security.oauth2.client.registration.linkedin.provider=linkedin +spring.security.oauth2.client.provider.linkedin.authorization-uri=https://www.linkedin.com/oauth/v2/authorization +spring.security.oauth2.client.provider.linkedin.token-uri=https://www.linkedin.com/oauth/v2/accessToken +spring.security.oauth2.client.provider.linkedin.user-info-uri=https://api.linkedin.com/v2/me +spring.security.oauth2.client.provider.linkedin.user-name-attribute=id +linkedin.email-address-uri=https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~)) +app.auth.tokenSecret=926D96C90030DD58429D2751AC1BDBBC +app.auth.tokenExpirationMsec=864000000 + # After successfully authenticating with the OAuth2 Provider, + # we'll be generating an auth token for the user and sending the token to the + # redirectUri mentioned by the frontend client in the /oauth2/authorization request. + # We're not using cookies because they won't work well in mobile clients. +app.oauth2.authorizedRedirectUris=http://localhost:8081/oauth2/redirect,myandroidapp://oauth2/redirect,myiosapp://oauth2/redirect + + +# projectPath=@project.basedir@ +# angularProjectPath=@project.basedir@/webui + +projectPath=/data +angularProjectPath=/data/webui +BACKEND_PORTAL_DOMAIN=http://157.66.191.31:30166 + + + diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/resources/banner_txt.txt b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/resources/banner_txt.txt new file mode 100644 index 0000000..5c9c817 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/resources/banner_txt.txt @@ -0,0 +1,11 @@ +******************************************************************* +******************************************************************* + __ _ ____ __ __ __ + / \ \ | |__****** / ___| **** ****_ \ \ \ \ \ \ + / / \ \ | '_ \ / _ \ \___ \| | | | '__|/ _ \ \ \ \ \ \ \ + \ \ / / | |_) | __/ ___) | |_| | | | __/ / / / / / / + \ /_/ |_.__/ \___| |____/ \__,_|_| \___| /_/ /_/ /_/ + *** *** ***** +******************************************************************* +::SPRING BOOT:: CNS Version::v1.1.0 RELEASE +******************************************************************* \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/resources/data.sql b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/resources/data.sql new file mode 100644 index 0000000..77daec5 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/resources/data.sql @@ -0,0 +1,2023 @@ +/* Instructor */ +insert into RN_INSTRUCTOR (ID, FIRST_NAME, LAST_NAME, EMAIL, CREATED_AT, UPDATED_AT) values + (1, 'rajdeep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (2, 'sandipan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (3, 'niladri', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (4, 'abhishek', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (5, 'sayandeep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (6, 'titas', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (7, 'dip', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (8, 'asif', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (9, 'anushree', 'sanyal', 'anus@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (10, 'trisha', 'das', 'trisha@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (11, 'avijit', 'chakraborty', 'avijit@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (12, 'dona', 'sen', 'dona@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (13, 'disha', 'maitra', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (14, 'sasa', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (15, 'vvvv', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (16, 'qqqq', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (17, 'saaaaayasndeep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (18, 'lllll', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (19, 'kkkkk', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (20, 'ffffff', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (21, 'rajaaQdesep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (22, 'sandaaQipsan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (23, 'nilaaQadri', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (24, 'abQhaaishek', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (25, 'sayanaadeep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (26, 'tiaatas', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (27, 'dittp', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (28, 'attsif', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (29, 'anutttshree', 'sanyal', 'anus@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (30, 'trigggsha', 'das', 'trisha@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (31, 'avijgggit', 'chakraborty', 'avijit@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (32, 'dogggna', 'sen', 'dona@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (33, 'rgggajdeep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (34, 'sangggdipan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (35, 'nifgfladri', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (36, 'abhisfgfhek', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (37, 'safgfgyandeep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (38, 'titfgfas', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (39, 'dfgfip', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (40, 'asifgff', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (41, 'fggfrajdeep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (42, 'fgfgsandipan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (43, 'ncxilgbgadri', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (44, 'adghghbhishek', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (45, 'sayandhyyueep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (46, 'teritas', 'mereaity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (47, 'dipere', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (48, 'asifcc', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (49, 'anushrccee', 'sanyal', 'anus@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (50, 'trishawww', 'das', 'trisha@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (51, 'avijiqqt', 'chakraborty', 'avijit@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (52, 'qqqdona', 'sen', 'dona@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (53, 'rajqqqdeep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (54, 'sandipqqqqan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (55, 'niladriwww', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (56, 'abhishewwwk', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (57, 'sayandeepbbb', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (58, 'tbbbitas', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (59, 'dbbbip', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (60, 'asbbbif', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (61, 'rajdeAFep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (62, 'sanSDFipan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (63, 'nilaSDFdri', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (64, 'abhiSDFshek', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (65, 'sayaSDndeep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (66, 'tiAStas', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (67, 'diASp', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (68, 'aASsif', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (69, 'anuASshree', 'sanyal', 'anus@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (70, 'triASsha', 'das', 'trisha@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (71, 'avASCijit', 'chakraborty', 'avijit@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (72, 'donVa', 'sen', 'dona@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (73, 'rajCVdeep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (74, 'saVndipan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (75, 'nilVadri', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (76, 'abChishek', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (77, 'saCyandeep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (78, 'titCas', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (79, 'diCp', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (80, 'asCif', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (81, 'rajdeCep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (82, 'saSndCipan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (83, 'nilCadri', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (84, 'abhSCshek', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (85, 'saSyCandeep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (86, 'titSasCE', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (87, 'diCp', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (88, 'asEif', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (89, 'anEushree', 'sanyal', 'anus@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (90, 'triEsha', 'das', 'trisha@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (91, 'avEijit', 'chakraborty', 'avijit@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (92, 'donEa', 'sen', 'dona@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (93, 'raEjdeep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (94, 'sanEdipan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (95, 'niladEri', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (96, 'abhEishek', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (97, 'sayEandeep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (98, 'tEitas', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (99, 'dEip', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (100, 'aEsif', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (101, 'rajSSdeep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (102, 'sandSSipan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (103, 'nilaLSSdri', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (104, 'abLhishek', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (105, 'saLyandeep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (106, 'tLitas', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (107, 'diLp', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (108, 'aLsif', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (109, 'anLushree', 'sanyal', 'anus@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (110, 'triLsha', 'das', 'trisha@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (111, 'aviLjit', 'chakraborty', 'avijit@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (112, 'doLna', 'sen', 'dona@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (113, 'rajLdeep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (114, 'sandLipan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (115, 'niULladri', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (116, 'aLbhUishek', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (117, 'sLLUayandeep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (118, 'tiLUtas', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (119, 'diUp', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (120, 'asUif', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'); + + +/* User */ +insert into user (user_id, password, first_name, last_name, email, company, phone, address1, address2, country, postal, role, is_active, is_blocked, security_provider_id, default_customer_id, secret_question, secret_answer, enable_beta_testing, enable_renewal) values +('demo' , 'demo' , 'Mrinmoy' , 'Majumdar', 'arivera2@joomla.org' , 'Abshire Inc', '7-(740)701-4547', '80429 Garrison Crossing', '4967' , 'USA' , '64890', 'USER' , 1, 0, 10001, 20000, 'Diverse' , 'Yellow' , 0, 0), +('admin' , '$2b$10$AkngMoFbJhllHomzUFdwAehsPzbHxY31XXtWTr0Cnpo9OYs7enn0q' , 'Theresa' , 'Russell' , 'trussell1@about.me' , 'Glover, Adams and Bins', '383-(779)851-3208', '30874 Graceland Terrace', '99152' , 'USA' , '51065', 'ADMIN', 1, 0, 10001, 20000, 'knowledge base', 'Mauv' , 1, 0), +('user' , '$2b$10$AK/siGGl4ITIq0dZHDck0uAyLJHkGPOeLBSAyUL8j5OU5vlf79wjq' , 'Virginia' , 'Reynolds', 'vreynolds0@slashdot.org', 'Rippin, Osinski and Beatty', '84-(228)809-9998', '0118 Burrows Plaza', '496' , 'USA' , '94086', 'USER' , 1, 0, 10001, 20000, 'Innovative' , 'Turquoise', 1, 1), +('jowens3' , 'jowens3' , 'Judy' , 'Owens' , 'jowens3@hp.com' , 'Altenwerth, Fisher and Heidenreich', '30-(772)268-8227', '98 Loeprich Way', '447', 'Greece' , null , 'USER' , 0, 0, 10001, 20001, 'capacity' , 'Fuscia' , 1, 1), +('kburns4' , 'kburns4' , 'Kelly' , 'Burns' , 'kburns4@icio.us' , 'McCullough-Morar', '86-(857)185-5740', '1638 Basil Alley', '56297' , 'China' , null , 'ADMIN', 1, 0, 10000, 20002, 'user-facing' , 'Crimson', 1, 1), +('jshaw5' , 'jshaw5' , 'Julie' , 'Shaw' , 'jshaw5@opera.com' , 'Steuber-Okuneva', '1-(871)375-6188', '389 Myrtle Pass', '41444' , 'Canada' , null , 'ADMIN', 1, 1, 10000, 20000, 'software' , 'Green' , 0, 1), +('pgilbert6' , 'pgilbert6', 'Peter' , 'Gilbert' , 'pgilbert6@eepurl.com' , 'Robel Inc', '52-(372)555-4687', '11522 Fuller Avenue', '5' , 'Mexico' , '39230', 'ADMIN', 1, 1, 10000, 20000, 'multi-state' , 'Puce' , 1, 1), +('jjacobs7' , 'jjacobs7' , 'Justin' , 'Jacobs' , 'jjacobs7@google.co.uk' , 'Harris-Bashirian', '963-(199)359-2552', '95012 Hanover Street', '2377' , 'India' , null , 'USER' , 1, 0, 10000, 20002, 'motivating' , 'Crimson', 1, 0), +('kbennett8' , 'kbennett8', 'Kevin' , 'Bennett' , 'kbennett8@hostgator.com', 'Leannon Inc', '62-(892)710-5713', '459 Coleman Drive', '397' , 'Indonesia' , null , 'ADMIN', 0, 0, 10001, 20000, 'Exclusive' , 'Purple' , 1, 1), +('cmurphy9' , 'cmurphy9' , 'Chris' , 'Murphy' , 'cmurphy9@over-blog.com' , 'Mosciski LLC', '64-(272)961-0086', '2 Ludington Point', '7' , 'New Zealand', null , 'ADMIN', 0, 1, 10000, 20000, 'empowering' , 'Maroon' , 0, 1); + +/* Employees */ +insert into employees (id, last_name, first_name, email, phone, address1, address2, city, state, postal_code, country, avatar, job_title, department, manager_id) values + (201, 'Harris' , 'George' , 'gharris0@pagesperso-orange.fr', '1-(210)270-8536', '2 Bayside Drive', null, 'San Antonio', 'Texas', '78240', 'United States', 'https://robohash.org/modilaboriosammolestiae.bmp?size=50x50&set=set1', 'Administrative Assistant I', 'Toys', null) +,(202, 'Hayes' , 'Rachel' , 'rhayes1@si.edu', '1-(971)797-2729', '30 Anhalt Street', null, 'Portland', 'Oregon', '97232', 'United States', 'https://robohash.org/seddistinctiodolorem.jpg?size=50x50&set=set1', 'Design Engineer', 'Books', null) +,(203, 'Palmer' , 'Anthony', 'apalmer2@posterous.com', '1-(702)984-2108', '02809 4th Pass', null, 'North Las Vegas', 'Nevada', '89036', 'United States', 'https://robohash.org/vitaererumdolore.png?size=50x50&set=set1', 'Health Coach II', 'Toys', null) +,(204, 'Alvarez' , 'Laura' , 'lalvarez3@time.com', '1-(518)328-2658', '647 Lakeland Road', null, 'Albany', 'New York', '12210', 'United States', 'https://robohash.org/nobisplaceatquisquam.jpg?size=50x50&set=set1', 'Computer Systems Analyst II', 'Health', null) +,(205, 'Reynolds', 'Annie' , 'areynolds4@nasa.gov', '1-(775)838-2203', '163 Carey Street', null, 'Reno', 'Nevada', '89550', 'United States', 'https://robohash.org/praesentiumdoloremrerum.png?size=50x50&set=set1', 'Senior Quality Engineer', 'Kids', null) +,(206, 'Henry' , 'Joe' , 'jhenry5@bbb.org', '1-(682)563-2229', '1 Harper Circle', null, 'Fort Worth', 'Texas', '76178', 'United States', 'https://robohash.org/earumiurevoluptas.jpg?size=50x50&set=set1', 'Chief Design Engineer', 'Electronics', null) +,(207, 'Willis' , 'Willie' , 'wwillis6@berkeley.edu', '1-(317)654-6888', '641 Kropf Parkway', null, 'Indianapolis', 'Indiana', '46216', 'United States', 'https://robohash.org/suntsitnecessitatibus.png?size=50x50&set=set1', 'Structural Analysis Engineer', 'Shoes', null) +,(208, 'Lawrence', 'Keith' , 'klawrence7@discovery.com', '1-(501)583-8851', '2184 Melby Crossing', null, 'Little Rock', 'Arkansas', '72222', 'United States', 'https://robohash.org/delenitiomnisconsequatur.jpg?size=50x50&set=set1', 'VP Quality Control', 'Outdoors', null) +,(209, 'Johnston', 'Tina' , 'tjohnston8@alexa.com', '1-(901)128-9976', '72 Hauk Road', null, 'Memphis', 'Tennessee', '38114', 'United States', 'https://robohash.org/voluptasautmaiores.png?size=50x50&set=set1', 'Assistant Media Planner', 'Electronics', null) +,(210, 'Burns' , 'Lisa' , 'lburns9@taobao.com', '1-(585)113-8402', '99 Manufacturers Drive', null, 'Rochester', 'New York', '14624', 'United States', 'https://robohash.org/illumsinttempore.jpg?size=50x50&set=set1', 'Operator', 'Industrial', null) +,(211, 'Stone' , 'Howard' , 'hstonea@ucsd.edu', '1-(202)958-2516', '03 Anthes Center', null, 'Washington', 'District of Columbia', '20425', 'United States', 'https://robohash.org/eautet.bmp?size=50x50&set=set1', 'Account Executive', 'Electronics', null) +,(212, 'Brown' , 'Julie' , 'jbrownb@squidoo.com', '1-(217)741-6449', '37574 4th Drive', null, 'Springfield', 'Illinois', '62705', 'United States', 'https://robohash.org/laborumtotameveniet.png?size=50x50&set=set1', 'Analog Circuit Design manager', 'Electronics', null) +,(213, 'Turner' , 'Edward' , 'eturnerc@theatlantic.com', '1-(701)353-1996', '3 Bultman Circle', null, 'Fargo', 'North Dakota', '58122', 'United States', 'https://robohash.org/sedutporro.png?size=50x50&set=set1', 'Structural Engineer', 'Computers', null) +,(214, 'Nichols' , 'Douglas', 'dnicholsd@fda.gov', '1-(302)771-6486', '5150 Holmberg Way', null, 'Wilmington', 'Delaware', '19805', 'United States', 'https://robohash.org/blanditiiscommodiet.png?size=50x50&set=set1', 'Editor', 'Outdoors', null) +,(215, 'Gilbert' , 'Jessica', 'jgilberte@infoseek.co.jp', '1-(320)607-0289', '32 Summit Park', null, 'Saint Cloud', 'Minnesota', '56372', 'United States', 'https://robohash.org/providentaccusamussed.bmp?size=50x50&set=set1', 'Account Executive', 'Baby', null) +,(216, 'Hernandez', 'Kathy' , 'khernandezf@shinystat.com', '1-(210)733-3380', '24 Merrick Way', null, 'San Antonio', 'Texas', '78225', 'United States', 'https://robohash.org/utfaciliset.png?size=50x50&set=set1', 'Junior Executive', 'Movies', null) +,(217, 'Sullivan', 'Lillian', 'lsullivang@flavors.me', '1-(904)885-2053', '42 Manufacturers Pass', null, 'Jacksonville', 'Florida', '32215', 'United States', 'https://robohash.org/quiaetaut.jpg?size=50x50&set=set1', 'Engineer I', 'Sports', null) +,(218, 'Jenkins' , 'Frances', 'fjenkinsh@huffingtonpost.com', '1-(512)764-3809', '69255 Dakota Plaza', null, 'Austin', 'Texas', '78769', 'United States', 'https://robohash.org/voluptatemnamaliquam.bmp?size=50x50&set=set1', 'Developer IV', 'Baby', null) +,(219, 'Myers' , 'Roger' , 'rmyersi@alexa.com', '1-(480)583-9583', '3 Eagle Crest Place', null, 'Gilbert', 'Arizona', '85297', 'United States', 'https://robohash.org/consequaturutquo.png?size=50x50&set=set1', 'Account Executive', 'Beauty', null) +,(220, 'Hunter' , 'Bonnie' , 'bhunterj@ucsd.edu', '1-(320)933-5140', '99 Arapahoe Terrace', null, 'Saint Cloud', 'Minnesota', '56372', 'United States', 'https://robohash.org/etfacilisquo.bmp?size=50x50&set=set1', 'Analog Circuit Design manager', 'Baby', null); + +/* Products */ +insert into products (id, product_code, product_name, description, standard_cost, list_price, target_level, reorder_level, minimum_reorder_quantity, quantity_per_unit, discontinued, category) values + (601, 'P1' , 'Nikon D810' , null, 1167.09, 1123.39, 75 , 10, 10, 50, 1, 'Camera') +,(602, 'P2' , 'Canon EOS 5D Mark IV' , null, 1382.83, 1293.84, 90 , 15, 15, 56, 0, 'Camera') +,(603, 'P3' , 'Dell XPS 13' , null, 1482.83, 1393.84, 95 , 20, 30, 56, 0, 'Laptop') +,(604, 'P4' , 'iPad Air' , null, 382.83 , 293.84 , 180, 75, 50, 56, 0, 'Tablet') +,(605, 'P5' , 'Acer Aspire S 13' , null, 882.83 , 793.84 , 40 , 15, 15, 56, 0, 'Laptop') +,(606, 'P6' , 'Nexus 6' , null, 633.88 , 511.7 , 75 , 10, 20, 79, 1, 'Phone' ) +,(607, 'P7' , 'ThinkPad T365' , null, 1441.02, 1308.98, 100, 30, 10, 92, 1, 'Laptop') +,(608, 'P8' , 'Moto Z' , null, 538.44 , 462.34 , 75 , 20, 20, 54, 1, 'Phone' ) +,(609, 'P9' , 'HTC 10' , null, 547.58 , 481.83 , 50 , 5 , 15, 58, 1, 'Tablet') +,(610, 'P10', 'MacBook Pro 13.3' , null, 1625.81, 1576.61, 120, 40, 30, 11, 1, 'Laptop') +,(611, 'P11', 'Nikon D500' , null, 867.09 , 723.39 , 75 , 25, 15, 50, 1, 'Camera') +,(612, 'P12', 'Pentax K-1' , null, 882.83 , 793.84 , 50 , 10, 5 , 56, 0, 'Camera') +,(613, 'P13', 'Asus Zenbook Ux305' , null, 1182.83, 1093.84, 55 , 10, 5 , 56, 0, 'Laptop') +,(614, 'P14', 'HP Envy m7-n109dx 17.3', null, 1382.83, 1293.84, 50 , 10, 10, 56, 0, 'Laptop') +,(615, 'P15', 'Microsft Surface Book' , null, 1682.83, 1593.84, 200, 80, 50, 56, 0, 'Tablet') +,(616, 'P16', 'Apple iPhone 7' , null, 833.88 , 711.76 , 250, 100,50, 79, 1, 'Phone' ) +,(617, 'P17', 'Google Pixel' , null, 641.02 , 608.98 , 100, 30 ,20, 92, 1, 'Phone' ) +,(618, 'P18', 'Samsung Galaxy S7' , null, 538.44 , 562.34 , 75 , 15, 10, 54, 1, 'Phone' ) +,(619, 'P19', 'Samasung Note' , null, 547.58 , 481.83 , 75 , 15, 15, 58, 1, 'Tablet') +,(620, 'P20', 'Chromebook 11.6' , null, 1078.81, 1008.61, 80 , 14, 10, 11, 1, 'Laptop'); + +/* Customers */ +insert into customers (id, last_name, first_name, email, company, phone, address1, address2, city, state, postal_code, country) values + (1 , 'Gray' , 'Clarence' , 'cgray0@rambler.ru' , 'Jetpulse' , '1-(260)615-5114', '02937 Merrick Avenue' , null, 'Fort Wayne', 'Indiana', '46805', 'United States') +,(2 , 'Cooper' , 'Emily' , 'ecooper1@macromedia.com' , 'Skippad' , '1-(251)614-5034', '60 Forster Crossing' , null, 'Mobile', 'Alabama', '36605', 'United States') +,(3 , 'Wilson' , 'George' , 'gwilson2@xinhuanet.com' , 'Riffpath' , '1-(901)445-9881', '52 Browning Center' , null, 'Memphis', 'Tennessee', '38181', 'United States') +,(4 , 'Mcdonald', 'Michael' , 'mmcdonald3@twitter.com' , 'Feedfire' , '1-(419)743-7314', '85093 Jackson Park' , null, 'Toledo', 'Ohio', '43610', 'United States') +,(5 , 'Tucker' , 'Lori' , 'ltucker4@etsy.com' , 'Oyondu' , '1-(202)381-2663', '0706 Heffernan Pass' , null, 'Washington', 'District of Columbia', '20380', 'United States') +,(6 , 'Hansen' , 'Lois' , 'lhansen5@stumbleupon.com', 'Yozio' , '1-(315)385-6866', '2 Ruskin Pass' , null, 'Syracuse', 'New York', '13251', 'United States') +,(7 , 'Grant' , 'Frances' , 'fgrant6@yale.edu' , 'Eire' , '1-(863)799-9068', '61402 Morning Court' , null, 'Lakeland', 'Florida', '33811', 'United States') +,(8 , 'Lewis' , 'Catherine', 'clewis7@unesco.org' , 'Realpoint', '1-(915)208-4997', '775 Messerschmidt Junction', null, 'El Paso', 'Texas', '88563', 'United States') +,(9 , 'Rogers' , 'Edward' , 'erogers8@guardian.co.uk' , 'Quinu' , '1-(971)934-2404', '7074 Montana Place' , null, 'Portland', 'Oregon', '97271', 'United States') +,(10, 'Owens' , 'Tina' , 'towens9@earthlink.net' , 'Blogtag' , '1-(712)989-9002', '59039 Sachtjen Street', null, 'Sioux City', 'Iowa', '51105', 'United States') +,(11, 'Peterson', 'Fred' , 'fpetersona@home.pl' , 'Meedoo' , '1-(202)228-9380', '55 Knutson Street', null, 'Washington', 'District of Columbia', '20099', 'United States') +,(12, 'Cox' , 'Jason' , 'jcoxb@slashdot.org' , 'Tagcat' , '1-(651)991-0172', '19 Hoffman Avenue', null, 'Saint Paul', 'Minnesota', '55114', 'United States') +,(13, 'Perez' , 'Paul' , 'pperezc@ask.com' , 'Kazu' , '1-(405)290-7944', '6336 Continental Circle', null, 'Oklahoma City', 'Oklahoma', '73167', 'United States') +,(14, 'Duncan' , 'Anthony' , 'aduncand@disqus.com' , 'Aibox' , '1-(727)705-8400', '17794 Northport Point', null, 'Clearwater', 'Florida', '33763', 'United States') +,(15, 'Graham' , 'Sean' , 'sgrahame@google.com.br' , 'Tekfly' , '1-(901)443-0731', '47493 Reinke Drive', null, 'Memphis', 'Tennessee', '38131', 'United States') +,(16, 'Simpson' , 'Jose' , 'jsimpsonf@youtube.com' , 'Youspan' , '1-(518)381-4659', '498 Carey Lane', null, 'Albany', 'New York', '12262', 'United States') +,(17, 'Simmons' , 'Frances' , 'fsimmonsg@webster.com' ,'Feednation', '1-(251)473-1327', '44102 Montana Crossing', null, 'Mobile', 'Alabama', '36641', 'United States') +,(18, 'Schmidt' , 'John' , 'jschmidth@vinaora.com' , 'Topicblab', '1-(202)945-2079', '384 Goodland Pass', null, 'Washington', 'District of Columbia', '20210', 'United States') +,(19, 'West' , 'Roger' , 'rwesti@cornell.edu' , 'Skilith' , '1-(716)707-3907', '74 Nancy Pass', null, 'Buffalo', 'New York', '14215', 'United States') +,(20, 'Fields' , 'Jesse' , 'jfieldsj@shop-pro.jp' , 'Vinte' , '1-(617)810-9493', '602 Laurel Park', null, 'Boston', 'Massachusetts', '02203', 'United States') +,(21, 'Patterson', 'Kathy' , 'kpattersonk@machines.org', 'Brainverse', '1-(806)803-9725', '67063 Spenser Junction', null, 'Amarillo', 'Texas', '79188', 'United States') +,(22, 'Bell' , 'Stephanie', 'sbelll@gravatar.com' , 'DabZ' , '1-(801)924-1975', '05 Gina Crossing', null, 'Salt Lake City', 'Utah', '84145', 'United States') +,(23, 'Turner' , 'Martha' , 'mturnerm@hp.com' , 'Yadel' , '1-(225)880-9134', '97789 Scofield Point', null, 'Baton Rouge', 'Louisiana', '70894', 'United States') +,(24, 'Ross' , 'Richard' , 'rrossn@weebly.com' , 'Voolith' , '1-(415)690-1916', '19 Briar Crest Alley', null, 'San Francisco', 'California', '94164', 'United States') +,(25, 'Stephens', 'Stephanie', 'sstephenso@times.co.uk' , 'BlogXS' , '1-(501)827-1408', '63291 Huxley Drive', null, 'North Little Rock', 'Arkansas', '72118', 'United States') +,(26, 'Sanchez' , 'Diane' , 'dsanchezp@sun.com' , 'Tagtune' , '1-(315)979-6793', '13 Oneill Junction', null, 'Syracuse', 'New York', '13224', 'United States') +,(27, 'Lawrence', 'Douglas' , 'dlawrenceq@flickr.com' , 'Browsetype', '1-(610)622-4045', '83224 Mallard Center', null, 'Philadelphia', 'Pennsylvania', '19109', 'United States') +,(28, 'Hansen' , 'Lori' , 'lhansenr@patch.com' , 'Einti' , '1-(915)266-1989', '48410 Westport Circle', null, 'El Paso', 'Texas', '88546', 'United States') +,(29, 'Medina' , 'Robert' , 'rmedinas@uiuc.edu' , 'Tambee' , '1-(216)752-7216', '0562 Muir Trail', null, 'Cleveland', 'Ohio', '44197', 'United States') +,(30, 'Harrison', 'Shawn' , 'sharrisont@webnode.com' , 'Youopia' , '1-(205)595-8085', '20 Mayer Center', null, 'Birmingham', 'Alabama', '35205', 'United States') +,(31, 'Alexander', 'Julia' , 'jalexanderu@netsol.com' , 'Oodoo' , '1-(864)349-2185', '61859 West Point', null, 'Greenville', 'South Carolina', '29610', 'United States') +,(32, 'Stanley', 'Victor' , 'vstanleyv@wikipedia.org' , 'Centimia' , '1-(561)507-7317', '08229 Glacier Hill Avenue', null, 'Boynton Beach', 'Florida', '33436', 'United States') +,(33, 'Wheeler', 'Dennis' , 'dwheelerw@indiatimes.com', 'Dynabox' , '1-(419)889-2883', '409 American Ash Plaza', null, 'Lima', 'Ohio', '45807', 'United States') +,(34, 'Frazier', 'Rachel' , 'rfrazierx@sfgate.com' , 'Skivee' , '1-(314)249-1796', '7 Waxwing Court', null, 'Saint Louis', 'Missouri', '63131', 'United States') +,(35, 'Brooks' , 'Shawn' , 'sbrooksy@mediafire.com' , 'Omba' , '1-(971)854-8478', '614 Monica Terrace', null, 'Portland', 'Oregon', '97240', 'United States') +,(36, 'Coleman', 'Frank' , 'fcolemanz@un.org' , 'Agimba' , '1-(318)446-4337', '4 Browning Park', null, 'Shreveport', 'Louisiana', '71151', 'United States') +,(37, 'Wright' , 'Frank' , 'fwright10@flickr.com' , 'Meedoo' , '1-(504)852-2553', '03446 Sheridan Trail', null, 'New Orleans', 'Louisiana', '70183', 'United States') +,(38, 'Perkins', 'Tina' , 'tperkins11@va.gov' , 'Rhybox' , '1-(571)497-0755', '62 Grayhawk Lane', null, 'Fairfax', 'Virginia', '22036', 'United States') +,(39, 'Griffin', 'Ruth' , 'rgriffin12@pcworld.com' , 'Trudoo' , '1-(504)312-7448', '29701 Jenifer Junction', null, 'Metairie', 'Louisiana', '70033', 'United States') +,(40, 'Sanchez', 'Sean' , 'ssanchez13@bandcamp.com' , 'Chatterpoint', '1-(316)535-7647', '10 Stuart Road', null, 'Wichita', 'Kansas', '67260', 'United States') +,(41, 'Harris' , 'Linda' , 'lharris14@ask.com' , 'Blogpad' , '1-(913)258-6547', '17635 Elka Alley', null, 'Shawnee Mission', 'Kansas', '66205', 'United States') +,(42, 'Wood' , 'George' , 'gwood15@imdb.com' , 'Feednation' , '1-(865)482-7169', '210 Anhalt Drive', null, 'Knoxville', 'Tennessee', '37924', 'United States') +,(43, 'Bennett', 'Nancy' , 'nbennett16@netsol.com' , 'Yodo' , '1-(210)749-3167', '97861 Harper Pass', null, 'San Antonio', 'Texas', '78260', 'United States') +,(44, 'Pierce' , 'Jesse' , 'jpierce17@cyberchimps.com', 'Divanoodle' , '1-(501)518-2300', '0 Columbus Terrace', null, 'Little Rock', 'Arkansas', '72231', 'United States') +,(45, 'Larson' , 'Jerry' , 'jlarson18@ustream.tv' , 'Kazu' , '1-(916)702-0977', '0422 Merry Court', null, 'Sacramento', 'California', '95852', 'United States') +,(46, 'Williams', 'Norma' , 'nwilliams19@spiegel.de' , 'Yacero' , '1-(562)631-4036', '5779 Burning Wood Crossing', null, 'Long Beach', 'California', '90847', 'United States') +,(47, 'Kelley' , 'Louis' , 'lkelley1a@wsj.com' , 'Linkbuzz' , '1-(432)286-2200', '04321 Northport Pass', null, 'Odessa', 'Texas', '79764', 'United States') +,(48, 'Mason' , 'Ruby' , 'rmason1b@census.gov' , 'Trudeo' , '1-(763)835-7627', '99219 5th Place', null, 'Monticello', 'Minnesota', '55565', 'United States') +,(49, 'Carr' , 'Nicole' , 'ncarr1c@yellowbook.com' , 'Plajo' , '1-(330)154-9245', '41 Monica Parkway', null, 'Youngstown', 'Ohio', '44511', 'United States') +,(50, 'Franklin', 'Michelle' , 'mfranklin1d@ucoz.com' , 'Wikivu' , '1-(405)751-8906', '62 Rutledge Alley', null, 'Oklahoma City', 'Oklahoma', '73147', 'United States') +,(51, 'Hawkins', 'Larry' , 'lhawkins1e@typepad.com' , 'Tagpad' , '1-(240)796-9270', '48 Columbus Road', null, 'Hagerstown', 'Maryland', '21747', 'United States') +,(52, 'Adams' , 'Lillian' , 'ladams1f@smugmug.com' , 'Avamm' , '1-(419)394-2363', '69708 West Avenue', null, 'Toledo', 'Ohio', '43605', 'United States') +,(53, 'Williamson', 'Janice' , 'jwilliamson1g@sbwire.com', 'Wordware' , '1-(212)576-0309', '311 Clemons Crossing', null, 'New York City', 'New York', '10090', 'United States') +,(54, 'Mitchell', 'Lisa' , 'lmitchell1h@live.com' , 'Trudoo' , '1-(225)794-6979', '17242 Eagan Terrace', null, 'Baton Rouge', 'Louisiana', '70820', 'United States') +,(55, 'Lawrence', 'Anna' , 'alawrence1i@manage.com' , 'Pixope' , '1-(818)505-8262', '51241 Tennessee Point', null, 'Santa Monica', 'California', '90405', 'United States') +,(56, 'Scott' , 'Margaret' , 'mscott1j@arizona.edu' , 'Mynte' , '1-(202)265-0994', '117 Arapahoe Crossing', null, 'Washington', 'District of Columbia', '20051', 'United States') +,(57, 'Harper' , 'Timothy' , 'tharper1k@loc.gov' , 'Trudoo' , '1-(212)348-5025', '137 Commercial Court', null, 'New York City', 'New York', '10175', 'United States') +,(58, 'Frazier' , 'Mary' , 'mfrazier1l@mapy.cz' , 'Photobug' , '1-(214)939-0299', '281 Briar Crest Way', null, 'Garland', 'Texas', '75049', 'United States') +,(59, 'Young' , 'Margaret' , 'myoung1m@ehow.com' , 'Realmix' , '1-(318)144-2666', '537 Memorial Way', null, 'Shreveport', 'Louisiana', '71105', 'United States') +,(60, 'Sullivan', 'Phyllis' , 'psullivan1n@jiathis.com' , 'Demivee' , '1-(518)361-7505', '117 Onsgard Crossing', null, 'Albany', 'New York', '12227', 'United States') +,(61, 'Knight' , 'Roy' , 'rknight1o@qq.com' , 'Meezzy' , '1-(478)438-2599', '60 Kinsman Drive', null, 'Macon', 'United Kingdom', '31210', 'United States') +,(62, 'Ruiz' , 'Andrea' , 'aruiz1p@domainmarket.com', 'Fivespan' , '1-(415)374-7204', '55455 Heffernan Plaza', null, 'San Francisco', 'California', '94142', 'United States') +,(63, 'Hayes' , 'Heather' , 'hhayes1q@odnoklasniki.ru', 'Twitternation', '1-(615)919-6350', '31 Banding Plaza', null, 'Jackson', 'Mississippi', '39296', 'United States') +,(64, 'Chapman' , 'Roy' , 'rchapman1r@theguardian.com', 'BlogXS' , '1-(941)329-4488', '27487 Fair Oaks Crossing', null, 'Sarasota', 'Florida', '34233', 'United States') +,(65, 'Moore' , 'Daniel' , 'dmoore1s@google.co.uk' , 'Twitterbridge', '1-(408)838-8747', '52377 Everett Court', null, 'San Jose', 'California', '95194', 'United States') +,(66, 'Day' , 'Amy' , 'aday1t@indiegogo.com' , 'Brainverse' , '1-(336)903-6679', '50107 Northport Circle', null, 'Winston Salem', 'North Carolina', '27157', 'United States') +,(67, 'Kelley' , 'Jesse' , 'jkelley1u@who.int' , 'Zoomzone' , '1-(304)183-6041', '31740 Bayside Trail', null, 'Huntington', 'West Virginia', '25711', 'United States') +,(68, 'Andrews' , 'Andrea' , 'aandrews1v@patch.com' , 'Fanoodle' , '1-(206)996-3516', '544 Lakewood Gardens Alley', null, 'Seattle', 'Washington', '98148', 'United States') +,(69, 'Willis' , 'Robert' , 'rwillis1w@si.edu' , 'Tazz' , '1-(678)738-3382', '0998 Bellgrove Circle', null, 'Duluth', 'United Kingdom', '30195', 'United States') +,(70, 'Reid' , 'Daniel' , 'dreid1x@miitbeian.gov.cn', 'Babbleblab', '1-(786)539-0220', '2 New Castle Avenue', null, 'Miami', 'Florida', '33111', 'United States') +,(71, 'Roberts' , 'Louise' , 'lroberts1y@cpanel.net' , 'Skippad' , '1-(316)418-5043', '598 Mayfield Road', null, 'Wichita', 'Kansas', '67210', 'United States') +,(72, 'Harrison', 'Margaret' , 'mharrison1z@globe.ne.jp' , 'Zoovu' , '1-(775)625-5357', '636 Maple Point', null, 'Reno', 'Nevada', '89550', 'United States') +,(73, 'Chapman' , 'Peter' , 'pchapman20@eventbrite.com', 'Linkbuzz' , '1-(574)707-4449', '1 Vermont Plaza', null, 'South Bend', 'Indiana', '46620', 'United States') +,(74, 'Tucker' , 'Willie' , 'wtucker21@hubpages.com' , 'Eazzy' , '1-(814)593-2963', '3 Dryden Trail', null, 'Erie', 'Pennsylvania', '16505', 'United States') +,(75, 'Bradley' , 'Adam' , 'abradley22@cnet.com' , 'Yabox' , '1-(903)334-0845', '15 Veith Center', null, 'Tyler', 'Texas', '75705', 'United States') +,(76, 'Armstrong', 'Juan' , 'jarmstrong23@archive.org', 'Gevee' , '1-(916)285-8157', '95 Claremont Crossing', null, 'Sacramento', 'California', '95865', 'United States') +,(77, 'Payne' , 'Kenneth' , 'kpayne24@com.com' , 'Skinte' , '1-(770)150-8423', '75 Beilfuss Court', null, 'Alpharetta', 'United Kingdom', '30022', 'United States') +,(78, 'Jacobs' , 'Louis' , 'ljacobs25@intel.com' , 'Photolist' , '1-(404)386-3449', '542 Browning Park', null, 'Atlanta', 'United Kingdom', '30343', 'United States') +,(79, 'Cooper' , 'Marilyn' , 'mcooper26@whitehouse.gov', 'Yotz' , '1-(520)875-3539', '03 Transport Point', null, 'Tucson', 'Arizona', '85710', 'United States') +,(80, 'Watkins' , 'William' , 'wwatkins27@pbs.org' , 'Brightbean', '1-(719)568-3678', '0316 La Follette Drive', null, 'Colorado Springs', 'Colorado', '80920', 'United States') +,(81, 'Baker' , 'Douglas' , 'dbaker28@exblog.jp' , 'Voonix' , '1-(619)121-6070', '99 Kedzie Terrace', null, 'Chula Vista', 'California', '91913', 'United States') +,(82, 'Cunningham','Daniel' , 'dcunningham29@oakley.com', 'Leexo' , '1-(619)609-6206', '53540 Hallows Place', null, 'San Diego', 'California', '92137', 'United States') +,(83, 'Mitchell', 'Edward' , 'emitchell2a@amazon.com' , 'Jatri' , '1-(502)427-5275', '3 Jana Junction', null, 'Louisville', 'Kentucky', '40280', 'United States') +,(84, 'Matthews', 'Adam' , 'amatthews2b@live.com' , 'Muxo' , '1-(316)764-9074', '5 Arapahoe Plaza', null, 'Wichita', 'Kansas', '67220', 'United States') +,(85, 'Jacobs' , 'Diane' , 'djacobs2c@jimdo.com' , 'Youspan' , '1-(804)398-4775', '6 Moose Street', null, 'Richmond', 'Virginia', '23285', 'United States') +,(86, 'Frazier' , 'Mary' , 'mfrazier2d@forbes.com' , 'Zoomdog' , '1-(716)502-4243', '713 Continental Trail', null, 'Buffalo', 'New York', '14210', 'United States') +,(87, 'Howard' , 'Anthony' , 'ahoward2e@disqus.com' , 'Katz' , '1-(805)800-7968', '006 Elka Center', null, 'Bakersfield', 'California', '93311', 'United States') +,(88, 'Kelly' , 'Anna' , 'akelly2f@unc.edu' , 'Trilia' , '1-(804)117-9707', '292 Browning Circle', null, 'Richmond', 'Virginia', '23228', 'United States') +,(89, 'Clark' , 'Kathy' , 'kclark2g@businesswire.com' , 'Gigabox' , '1-(831)755-4869', '45 Walton Parkway', null, 'Salinas', 'California', '93907', 'United States') +,(90, 'Carpenter', 'Gerald' , 'gcarpenter2h@foxnews.com' , 'Yakidoo' , '1-(213)344-9608', '84560 Stephen Parkway', null, 'Los Angeles', 'California', '90055', 'United States') +,(91, 'Hart' , 'Albert' , 'ahart2i@scribd.com' , 'Jaloo' , '1-(415)201-5281', '0 Washington Place', null, 'Oakland', 'California', '94611', 'United States') +,(92, 'Young' , 'Julia' , 'jyoung2j@craigslist.org' , 'Oloo' , '1-(615)660-1203', '0623 Gale Drive', null, 'Jackson', 'Mississippi', '39210', 'United States') +,(93, 'Pierce' , 'Tammy' , 'tpierce2k@psu.edu' , 'Ntags' , '1-(703)772-3155', '501 Leroy Parkway', null, 'Washington', 'District of Columbia', '20041', 'United States') +,(94, 'Washington', 'Ronald' , 'rwashington2l@drupal.org' , 'Livetube' , '1-(202)828-6093', '6220 Del Sol Alley', null, 'Washington', 'District of Columbia', '20551', 'United States') +,(95, 'Carter' , 'Alan' , 'acarter2m@simplemachines.org', 'Centizu' , '1-(952)234-1678', '043 Sunnyside Center', null, 'Young America', 'Minnesota', '55551', 'United States') +,(96, 'Freeman' , 'Stephanie', 'sfreeman2n@redcross.org' , 'Feednation' , '1-(504)126-8245', '1120 Veith Parkway', null, 'New Orleans', 'Louisiana', '70165', 'United States') +,(97, 'Price' , 'Sara' , 'sprice2o@irs.gov' , 'Izio' , '1-(415)668-5714', '96394 Bonner Hill', null, 'San Francisco', 'California', '94116', 'United States') +,(98, 'Parker' , 'Emily' , 'eparker2p@4shared.com' , 'Skalith' , '1-(330)637-4894', '0 Old Shore Center', null, 'Akron', 'Ohio', '44310', 'United States') +,(99, 'Chavez' , 'Jeremy' , 'jchavez2q@businessweek.com' , 'Topicware' , '1-(515)769-2045', '8584 Jay Street', null, 'Des Moines', 'Iowa', '50335', 'United States') +,(100, 'Kim' , 'Pamela' , 'pkim2r@stumbleupon.com' , 'Photolist' , '1-(510)144-4318', '3688 Gerald Trail', null, 'Sacramento', 'California', '95823', 'United States'); + +/* LOOK UP VALUES */ + + +/* orders */ +insert into orders (id, employee_id, customer_id, order_date, shipped_date, ship_name, ship_address1, ship_address2, ship_city, ship_state, ship_postal_code, ship_country, shipping_fee, payment_type, paid_date, order_status) values + (4001, 204, 40, '2016-04-05', '2016-11-06', 'Jean Fuller', '93 Spohn Place', null, 'Manggekompo', null, null, 'Indonesia', 8.14, 'Card', '2016-10-12', 'On Hold') +,(4002, 204, 95, '2017-01-29', '2016-05-28', 'Diane Holmes', '46 Eliot Trail', null, 'Virginia Beach', 'Virginia', '23459', 'United States', 1.55, 'Check', '2016-06-27', 'Shipped') +,(4003, 218, 54, '2016-08-19', '2016-12-08', 'Jerry Frazier', '23 Sundown Junction', null, 'Obodivka', null, null, 'Ukraine', 2.29, 'Cash', '2016-09-27', 'On Hold') +,(4004, 204, 69, '2016-09-25', '2016-12-24', 'Denise Freeman', '4909 Beilfuss Hill', null, 'Nova Venécia', null, '29830-000', 'Brazil', 4.77, 'Check', '2016-07-04', 'New') +,(4005, 215, 10, '2017-03-14', '2016-03-19', 'Jonathan Gordon', '7 Ludington Court', null, 'Sukamaju', null, null, 'Indonesia', 8.78, 'Check', '2016-03-22', 'On Hold') +,(4006, 211, 23, '2016-08-14', '2016-12-05', 'Sean Carter', '859 Dahle Plaza', null, 'Dayou', null, null, 'China', 9.43, 'Cash', '2016-08-21', 'New') +,(4007, 204, 92, '2017-01-02', '2016-07-09', 'Alice Warren', '5 Fuller Center', null, 'Log pri Brezovici', null, '1358', 'India', 3.25, 'Cash', '2016-03-24', 'Shipped') +,(4008, 205, 20, '2016-05-15', '2016-09-12', 'Andrea Hamilton', '99 Blue Bill Park Junction', null, 'Liangshui', null, null, 'China', 7.04, 'Check', '2016-09-02', 'On Hold') +,(4009, 219, 58, '2016-11-27', '2017-03-02', 'Wanda Hill', '907 Sundown Court', null, 'Pedra Azul', null, '39970-000', 'Brazil', 4.35, 'Cash', '2016-09-27', 'On Hold') +,(4010, 218, 57, '2016-09-11', '2017-02-26', 'Carolyn Foster', '0 Charing Cross Court', null, 'Chicago', 'Illinois', '60609', 'United States', 1.23, 'Cash', '2016-08-09', 'Complete') +,(4011, 207, 3 , '2017-03-01', '2016-08-04', 'Timothy Warren', '19 John Wall Parkway', null, 'Lyon', 'Rhône-Alpes', '69362 CEDEX 07', 'France', 9.57, 'Card', '2016-05-08', 'Complete') +,(4012, 210, 59, '2016-12-31', '2016-08-08', 'Kathleen Marshall', '2 Swallow Circle', null, 'Cunliji', null, null, 'China', 9.03, 'Cash', '2016-04-23', 'On Hold') +,(4013, 204, 57, '2017-01-11', '2017-02-13', 'Jane Ortiz', '1136 Kedzie Alley', null, 'Eirado', 'Viana do Castelo', '4990-540', 'Portugal', 8.9, 'Check', '2016-10-26', 'Shipped') +,(4014, 212, 26, '2016-09-23', '2016-05-13', 'Carolyn Martinez', '954 Kropf Court', null, 'Ibitinga', null, '14940-000', 'Brazil', 4.57, 'Card', '2016-09-11', 'New') +,(4015, 201, 86, '2016-11-04', '2016-10-03', 'Debra Willis', '89 Grasskamp Road', null, 'San Francisco', null, '8501', 'Philippines', 3.53, 'Card', '2016-10-05', 'New') +,(4016, 208, 17, '2016-04-17', '2016-03-22', 'Sharon Little', '27501 Sommers Junction', null, 'San Juan Opico', null, null, 'India', 6.87, 'Card', '2017-01-08', 'Complete') +,(4017, 205, 73, '2016-07-03', '2016-09-26', 'Nancy Hughes', '1 John Wall Avenue', null, 'La Libertad', null, null, 'Argentina', 4.67, 'Check', '2017-02-01', 'New') +,(4018, 213, 16, '2016-12-01', '2016-06-08', 'Sara Knight', '98248 Tony Pass', null, 'Val-d''Or', 'Québec', 'J9P', 'Canada', 9.52, 'Card', '2016-08-06', 'New') +,(4019, 209, 10, '2016-04-18', '2016-04-25', 'Russell Wood', '3 Commercial Point', null, 'Rokietnica', null, '62-090', 'Poland', 6.8, 'Card', '2017-01-20', 'On Hold') +,(4020, 216, 1 , '2016-07-23', '2017-02-23', 'Aaron Grant', '15477 Farwell Circle', null, 'Yongyang', null, null, 'China', 3.17, 'Cash', '2016-08-11', 'Complete') +,(4021, 209, 38, '2016-12-16', '2017-02-14', 'Ryan Foster', '9218 Leroy Avenue', null, 'Mogapinyana', null, null, 'India', 3.34, 'Cash', '2016-06-21', 'On Hold') +,(4022, 207, 91, '2016-07-18', '2016-04-06', 'Peter Montgomery', '570 Londonderry Pass', null, 'Mathakola', null, null, 'India', 8.11, 'Card', '2016-10-27', 'New') +,(4023, 209, 39, '2016-07-15', '2017-02-02', 'Lawrence Schmidt', '371 Acker Drive', null, 'Mesa', 'Arizona', '85205', 'United States', 1.39, 'Cash', '2016-10-27', 'Complete') +,(4024, 219, 51, '2016-12-08', '2017-01-03', 'Eric Gray', '4608 Farmco Point', null, 'Gemblengmulyo', null, null, 'Indonesia', 8.76, 'Card', '2016-05-13', 'Complete') +,(4025, 204, 77, '2016-09-24', '2017-01-20', 'Gloria Green', '62 Sunnyside Park', null, 'Itararé', null, '18460-000', 'Brazil', 7.75, 'Cash', '2017-02-06', 'On Hold') +,(4026, 215, 73, '2016-09-15', '2016-12-24', 'Nicholas Price', '5672 Ruskin Hill', null, 'Maimará', null, '4624', 'Argentina', 9.11, 'Card', '2016-07-22', 'On Hold') +,(4027, 208, 98, '2016-05-31', '2016-07-14', 'Doris Watson', '133 Gina Street', null, 'Bantiran', null, null, 'Indonesia', 3.0, 'Cash', '2016-10-08', 'Complete') +,(4028, 217, 39, '2016-05-10', '2016-04-07', 'Linda Foster', '40382 4th Terrace', null, 'Agrelo', 'Braga', '4730-300', 'Portugal', 2.39, 'Cash', '2016-09-11', 'Complete') +,(4029, 212, 52, '2016-09-14', '2016-12-21', 'Anthony Spencer', '02 Esker Junction', null, 'El Ocotón', null, null, 'Canada', 7.72, 'Check', '2016-09-23', 'Shipped') +,(4030, 218, 74, '2016-05-08', '2016-07-21', 'James Kennedy', '7460 Westport Hill', null, 'Köln', 'Nordrhein-Westfalen', '51107', 'Germany', 6.16, 'Cash', '2016-11-27', 'Shipped') +,(4031, 214, 4 , '2016-05-31', '2017-03-03', 'Theresa Robinson', '44 Havey Way', null, 'Qingtong', null, null, 'China', 5.02, 'Check', '2017-03-15', 'New') +,(4032, 201, 81, '2016-07-05', '2016-11-18', 'Jesse Ray', '68 Derek Hill', null, 'Azogues', null, null, 'Argentina', 5.41, 'Check', '2016-10-16', 'New') +,(4033, 203, 15, '2016-09-07', '2016-06-09', 'Harold Fields', '2 Vermont Terrace', null, 'Mogocha', null, '673732', 'Russia', 2.38, 'Check', '2016-03-30', 'Complete') +,(4034, 217, 11, '2016-08-19', '2016-12-08', 'Larry Watkins', '629 Waxwing Avenue', null, 'Krasnyy Oktyabr’', null, '398526', 'Russia', 5.23, 'Cash', '2016-07-01', 'On Hold') +,(4035, 205, 51, '2016-11-29', '2016-09-02', 'Debra Marshall', '23578 Arizona Junction', null, 'Juhut', null, null, 'Indonesia', 1.59, 'Card', '2016-06-17', 'Shipped') +,(4036, 217, 56, '2016-10-21', '2017-02-13', 'Todd Stephens', '63633 Columbus Avenue', null, 'Paccho', null, null, 'Peru', 5.09, 'Cash', '2016-04-25', 'New') +,(4037, 219, 60, '2016-09-22', '2016-11-08', 'Jean Webb', '0916 Grover Way', null, 'Kuršėnai', null, '81001', 'Denmark', 8.66, 'Cash', '2016-09-30', 'Shipped') +,(4038, 213, 3 , '2016-06-01', '2016-10-07', 'Heather Snyder', '44 Grayhawk Court', null, 'Haenam', null, null, 'Finland', 5.33, 'Cash', '2016-06-30', 'Complete') +,(4039, 201, 28, '2017-02-19', '2016-11-25', 'Janet Howard', '5351 Barby Trail', null, 'Shanghu', null, null, 'China', 9.18, 'Check', '2017-03-16', 'On Hold') +,(4040, 215, 74, '2016-09-14', '2016-06-23', 'Aaron Wheeler', '08 Burrows Avenue', null, 'Tân Sơn', null, null, 'Vietnam', 3.36, 'Card', '2017-03-05', 'New') +,(4041, 204, 79, '2016-09-27', '2017-02-15', 'Lori Watkins', '3 Pennsylvania Court', null, 'Victoria', null, 'VCT', 'India', 9.41, 'Card', '2016-08-12', 'New') +,(4042, 205, 92, '2016-11-03', '2016-05-11', 'Alice Miller', '7895 Amoth Avenue', null, 'Mae Lao', null, '57250', 'Thailand', 2.11, 'Cash', '2016-08-06', 'Shipped') +,(4043, 212, 82, '2016-11-17', '2016-04-19', 'Marilyn Nguyen', '25203 Meadow Ridge Plaza', null, 'Nine', 'Braga', '4775-446', 'Portugal', 6.03, 'Cash', '2016-05-07', 'On Hold') +,(4044, 218, 55, '2016-06-26', '2016-08-15', 'Ashley West', '08621 Porter Lane', null, 'Kingsport', 'Tennessee', '37665', 'United States', 8.23, 'Cash', '2016-12-17', 'New') +,(4045, 217, 53, '2016-05-07', '2017-02-25', 'Julia Fernandez', '91519 Harbort Way', null, 'Issoire', 'Auvergne', '63504 CEDEX', 'France', 1.14, 'Check', '2016-10-27', 'Complete') +,(4046, 211, 78, '2016-12-11', '2017-02-15', 'Willie Sims', '683 Caliangt Parkway', null, 'Balazar', 'Braga', '4805-005', 'Portugal', 6.57, 'Card', '2017-02-13', 'On Hold') +,(4047, 201, 77, '2016-05-20', '2017-02-19', 'Samuel Burke', '25 Grover Lane', null, 'Housuo', null, null, 'China', 6.99, 'Cash', '2016-08-12', 'New') +,(4048, 217, 72, '2016-11-06', '2016-09-29', 'Patricia Green', '29791 Thierer Street', null, 'Campamento', null, '052027', 'Argentina', 3.33, 'Check', '2016-03-24', 'Complete') +,(4049, 210, 98, '2016-08-24', '2016-04-16', 'Nicole Washington', '68 Monica Point', null, 'Cikaung', null, null, 'Indonesia', 5.78, 'Check', '2016-04-30', 'Complete') +,(4050, 215, 26, '2016-10-07', '2016-11-03', 'Marie Bryant', '36611 Schlimgen Place', null, 'Villa Francisca', null, '10215', 'Canada', 4.11, 'Check', '2016-07-29', 'Complete') +,(4051, 212, 51, '2016-05-19', '2017-03-16', 'Brandon Lane', '5 Duke Center', null, 'Soutinho', 'Porto', '4650-530', 'Portugal', 9.62, 'Check', '2016-11-28', 'Shipped') +,(4052, 205, 9 , '2016-07-19', '2016-09-05', 'Pamela Ferguson', '0 Mockingbird Crossing', null, 'Jefferson City', 'Missouri', '65105', 'United States', 9.98, 'Card', '2016-12-08', 'Shipped') +,(4053, 210, 42, '2016-04-09', '2017-02-05', 'Gloria Edwards', '8275 Sage Plaza', null, 'Yilkiqi', null, null, 'China', 5.21, 'Cash', '2016-11-10', 'On Hold') +,(4054, 211, 70, '2017-02-28', '2017-02-11', 'John Cole', '4679 Trailsway Circle', null, 'Sanlanbahai', null, null, 'China', 4.42, 'Card', '2017-01-06', 'Complete') +,(4055, 208, 65, '2017-01-11', '2017-02-14', 'Bobby Butler', '314 Jenna Crossing', null, 'Malusac', null, '2005', 'Philippines', 7.37, 'Cash', '2017-03-15', 'Shipped') +,(4056, 220, 15, '2016-07-12', '2016-09-06', 'Anthony Lane', '1 Packers Avenue', null, 'Batambak', null, null, 'Indonesia', 5.41, 'Card', '2016-11-21', 'On Hold') +,(4057, 220, 76, '2016-05-05', '2016-04-19', 'Karen Ray', '891 Raven Street', null, 'Chinju', null, null, 'Finland', 4.71, 'Cash', '2017-02-11', 'On Hold') +,(4058, 216, 90, '2017-01-26', '2016-12-19', 'Martha Gonzalez', '8695 Mandrake Place', null, 'Maythalūn', null, null, 'India', 1.75, 'Card', '2017-03-16', 'On Hold') +,(4059, 212, 43, '2016-09-20', '2017-02-11', 'Judy Daniels', '154 Lukken Court', null, 'Luoqiao', null, null, 'China', 4.63, 'Check', '2016-11-09', 'On Hold') +,(4060, 207, 80, '2016-04-29', '2016-07-01', 'Jane Stevens', '43 Kingsford Pass', null, 'Dobruševo', null, '7514', 'Denmark', 1.96, 'Cash', '2016-09-02', 'On Hold') +,(4061, 214, 89, '2016-10-09', '2016-09-09', 'Emily Miller', '5 Pearson Lane', null, 'East London', null, '5688', 'South Africa', 2.14, 'Card', '2016-06-10', 'Complete') +,(4062, 220, 8 , '2016-12-01', '2017-03-09', 'Sarah Johnson', '30 Chinook Lane', null, 'Selishche', null, '180536', 'Russia', 3.76, 'Card', '2016-11-18', 'On Hold') +,(4063, 220, 48, '2017-03-05', '2016-11-30', 'Carolyn Reyes', '72 Michigan Pass', null, 'Sukasenang', null, null, 'Indonesia', 6.52, 'Cash', '2016-05-20', 'Shipped') +,(4064, 214, 31, '2016-07-19', '2016-08-16', 'Kathryn Coleman', '43358 Packers Court', null, 'Przystajń', null, '42-141', 'Poland', 1.68, 'Card', '2016-12-13', 'Complete') +,(4065, 205, 41, '2016-12-09', '2016-03-20', 'Clarence Graham', '1675 Starling Point', null, 'Zangbawa', null, null, 'China', 5.82, 'Cash', '2016-07-08', 'Complete') +,(4066, 205, 41, '2016-05-25', '2016-11-15', 'David Harris', '00 Warner Court', null, 'Kabba', null, null, 'Netherlands', 7.24, 'Cash', '2016-09-24', 'New') +,(4067, 218, 13, '2016-07-24', '2016-12-06', 'Ruth Fields', '88567 Golf Course Plaza', null, 'Mauá', null, '09300-000', 'Brazil', 6.82, 'Cash', '2017-01-26', 'New') +,(4068, 206, 11, '2016-05-04', '2016-07-10', 'Todd Butler', '88 Graedel Point', null, 'Jablah', null, null, 'India', 3.83, 'Cash', '2016-06-17', 'On Hold') +,(4069, 215, 55, '2016-12-22', '2016-03-28', 'Catherine Perkins', '95 Troy Parkway', null, 'Frampol', null, '23-440', 'Poland', 7.6, 'Check', '2016-08-24', 'Shipped') +,(4070, 220, 40, '2016-10-17', '2016-12-01', 'Jeffrey Rodriguez', '3393 Weeping Birch Court', null, 'Burunday', null, null, 'Denmark', 2.52, 'Cash', '2016-09-06', 'Shipped') +,(4071, 218, 70, '2017-03-16', '2016-12-09', 'Rachel Butler', '79327 Ridgeway Circle', null, 'Dupnitsa', null, '2680', 'Denmark', 6.25, 'Check', '2016-04-02', 'Complete') +,(4072, 205, 45, '2017-01-22', '2016-05-15', 'Robin Fisher', '0 Susan Court', null, 'Morohongō', null, '357-0211', 'Japan', 4.42, 'Card', '2017-03-06', 'Complete') +,(4073, 217, 94, '2017-01-25', '2016-04-11', 'Ruth Carpenter', '4 Glacier Hill Road', null, 'Ngrejo', null, null, 'Indonesia', 4.9, 'Cash', '2016-08-13', 'On Hold') +,(4074, 219, 27, '2017-01-06', '2017-01-03', 'Irene Kelly', '0 Comanche Junction', null, 'Chao', null, null, 'Peru', 5.32, 'Check', '2016-11-20', 'On Hold') +,(4075, 214, 44, '2016-06-24', '2016-12-20', 'Douglas Sims', '81709 Helena Park', null, 'Dongmaku', null, null, 'China', 3.35, 'Card', '2017-02-27', 'Complete') +,(4076, 216, 27, '2016-09-23', '2016-10-05', 'Kenneth Rose', '5316 Dottie Way', null, 'Olszówka', null, '62-641', 'Poland', 2.63, 'Cash', '2016-05-27', 'Shipped') +,(4077, 211, 84, '2016-11-24', '2016-08-04', 'Jimmy Morgan', '42187 Shoshone Center', null, 'Saltsjöbaden', 'Stockholm', '133 41', 'Sweden', 1.11, 'Cash', '2016-09-09', 'On Hold') +,(4078, 202, 57, '2016-05-28', '2016-06-02', 'Annie Vasquez', '5 Lien Junction', null, 'Al Qaţn', null, null, 'South Africa', 2.73, 'Check', '2016-11-14', 'On Hold') +,(4079, 202, 64, '2016-07-05', '2016-05-20', 'Henry Mccoy', '58 Nelson Circle', null, 'Tsaghkahovit', null, null, 'India', 3.29, 'Card', '2016-08-18', 'Shipped') +,(4080, 216, 44, '2017-02-20', '2016-10-08', 'Norma Graham', '27 Heffernan Pass', null, 'Cairima', null, null, 'China', 7.02, 'Check', '2017-03-06', 'Complete') +,(4081, 218, 60, '2017-03-16', '2016-08-06', 'Albert Wright', '572 Vahlen Place', null, 'Drahovo', null, null, 'Ukraine', 4.92, 'Check', '2017-01-29', 'New') +,(4082, 219, 15, '2016-12-26', '2017-02-17', 'Jane Wells', '21 Merchant Way', null, 'Acacías', null, '507009', 'Argentina', 6.53, 'Card', '2016-06-04', 'Complete') +,(4083, 212, 61, '2016-06-24', '2016-03-23', 'Jesse Mitchell', '4060 Carioca Drive', null, 'Ntoroko', null, null, 'South Africa', 9.41, 'Cash', '2016-10-19', 'On Hold') +,(4084, 216, 3 , '2016-08-20', '2017-02-15', 'Carlos Brooks', '868 Pankratz Trail', null, 'Bat Khela', null, '18351', 'Iran', 1.0, 'Check', '2016-12-22', 'On Hold') +,(4085, 209, 25, '2016-12-03', '2016-06-01', 'Christopher Williamson', '8874 Starling Plaza', null, 'Tarbes', 'Midi-Pyrénées', '65951 CEDEX 9', 'France', 4.15, 'Card', '2017-02-04', 'New') +,(4086, 205, 2 , '2016-06-19', '2016-08-26', 'Joseph Wells', '7223 Carpenter Road', null, 'Chitral', null, '17200', 'Iran', 5.31, 'Card', '2016-07-22', 'Shipped') +,(4087, 216, 96, '2016-06-04', '2016-12-31', 'Teresa Thomas', '908 Ramsey Junction', null, 'Dzerzhinskiy', null, '140083', 'Russia', 4.29, 'Cash', '2017-03-03', 'Shipped') +,(4088, 203, 35, '2016-09-21', '2017-01-08', 'Scott Gomez', '70537 Tennessee Crossing', null, 'Bồng Sơn', null, null, 'Vietnam', 6.93, 'Cash', '2017-01-01', 'New') +,(4089, 210, 18, '2017-02-17', '2016-10-28', 'Nicole Miller', '0 Jackson Place', null, 'Šilheřovice', null, '747 15', 'Czech Republic', 5.64, 'Card', '2016-11-17', 'On Hold') +,(4090, 201, 8 , '2016-11-12', '2016-06-02', 'Donald Nguyen', '7320 Bunting Pass', null, 'Namioka', null, '953-0062', 'Japan', 7.07, 'Cash', '2016-09-29', 'Complete') +,(4091, 212, 67, '2016-04-08', '2016-11-21', 'Shawn Myers', '1844 Esch Plaza', null, 'Gračec', null, '10370', 'Canada', 4.84, 'Card', '2016-03-17', 'New') +,(4092, 220, 16, '2017-01-12', '2016-08-04', 'Daniel Armstrong', '2 Donald Alley', null, 'La Colorada', null, null, 'Denmark', 2.98, 'Check', '2016-12-08', 'Shipped') +,(4093, 203, 60, '2016-04-17', '2016-05-10', 'Henry Gonzales', '23848 6th Center', null, 'Guayatá', null, '153047', 'Argentina', 1.54, 'Check', '2016-04-18', 'New') +,(4094, 209, 37, '2016-08-07', '2016-04-26', 'Stephanie Snyder', '1152 Morning Park', null, 'Zhitan', null, null, 'China', 9.76, 'Card', '2016-05-23', 'New') +,(4095, 205, 46, '2016-09-01', '2017-02-25', 'Joan Butler', '98050 Mitchell Point', null, 'Bun Barat', null, null, 'Indonesia', 9.57, 'Card', '2017-01-25', 'Shipped') +,(4096, 211, 92, '2017-01-02', '2016-12-06', 'Gloria Murray', '8 Vidon Terrace', null, 'Rumenka', null, null, 'India', 5.33, 'Card', '2016-12-28', 'Shipped') +,(4097, 210, 66, '2016-07-04', '2016-05-30', 'Dorothy Simpson', '0 Pearson Point', null, 'Yevpatoriya', null, null, 'Ukraine', 3.52, 'Check', '2016-04-28', 'Complete') +,(4098, 219, 59, '2016-09-27', '2016-12-17', 'Katherine Brooks', '921 Anhalt Place', null, 'Rietavas', null, '90018', 'Denmark', 5.29, 'Check', '2016-12-19', 'Complete') +,(4099, 207, 65, '2016-07-06', '2016-10-11', 'Linda Reid', '89712 Dryden Point', null, 'Bronnitsy', null, '142451', 'Russia', 5.68, 'Card', '2016-07-08', 'New') +,(4100, 212, 61, '2016-04-14', '2016-05-02', 'Richard Carpenter', '17032 Melrose Crossing', null, 'White River', null, '1256', 'South Africa', 7.22, 'Card', '2016-08-03', 'Shipped') +,(4101, 206, 23, '2016-03-28', '2016-12-01', 'Clarence Coleman', '9167 Valley Edge Point', null, 'Guocun', null, null, 'China', 5.86, 'Check', '2016-08-19', 'Shipped') +,(4102, 202, 16, '2016-07-26', '2017-01-18', 'Kevin Dunn', '178 Park Meadow Avenue', null, 'Mlonggo', null, null, 'Indonesia', 4.15, 'Check', '2016-08-03', 'Complete') +,(4103, 211, 65, '2017-01-17', '2016-11-09', 'Keith Lopez', '689 Anthes Pass', null, 'Cibanten', null, null, 'Indonesia', 8.25, 'Check', '2016-10-15', 'Shipped') +,(4104, 218, 86, '2017-03-12', '2016-05-25', 'Chris Wright', '57974 Riverside Junction', null, 'Ban Mai', null, '80000', 'Thailand', 4.85, 'Cash', '2016-05-08', 'New') +,(4105, 215, 57, '2016-07-03', '2016-05-03', 'Michael Snyder', '93 Ohio Hill', null, 'Bryan', 'Texas', '77806', 'United States', 3.54, 'Card', '2016-08-10', 'Shipped') +,(4106, 210, 2 , '2017-03-07', '2016-09-18', 'David Day', '5024 Summerview Circle', null, 'Itapira', null, '13970-000', 'Brazil', 3.6, 'Cash', '2017-01-20', 'On Hold') +,(4107, 218, 4 , '2016-10-10', '2016-09-02', 'Lisa Kim', '4892 Huxley Center', null, 'Tanjungagung', null, null, 'Indonesia', 6.23, 'Cash', '2016-06-11', 'On Hold') +,(4108, 214, 26, '2016-06-02', '2016-10-05', 'Teresa Ellis', '1569 Mariners Cove Terrace', null, 'Maszkienice', null, '32-854', 'Poland', 7.65, 'Check', '2016-04-14', 'On Hold') +,(4109, 201, 51, '2016-10-07', '2017-02-02', 'Jimmy Lawson', '2165 Bluestem Center', null, 'Kampungbaru', null, null, 'Indonesia', 1.73, 'Check', '2016-09-30', 'Shipped') +,(4110, 215, 4 , '2016-08-21', '2017-02-05', 'Jerry Murray', '40070 Anderson Court', null, 'Vicente Guerrero', 'Veracruz Llave', '92440', 'Mexico', 1.57, 'Card', '2016-06-26', 'New') +,(4111, 210, 56, '2016-07-06', '2016-09-19', 'Joan Adams', '5322 Goodland Avenue', null, 'Paris 17', 'Île-de-France', '75853 CEDEX 17', 'France', 7.52, 'Cash', '2016-05-07', 'New') +,(4112, 214, 77, '2016-09-04', '2016-10-19', 'Chris Young', '7 Clove Center', null, 'Gongjiahe', null, null, 'China', 3.31, 'Card', '2016-11-06', 'New') +,(4113, 217, 62, '2016-07-18', '2016-09-30', 'Norma Oliver', '6002 Rieder Road', null, 'Lingbei', null, null, 'China', 8.85, 'Check', '2016-09-25', 'Complete') +,(4114, 213, 72, '2016-08-01', '2016-09-12', 'Douglas Day', '88 Helena Drive', null, 'Alcoutim', 'Faro', '8970-055', 'Portugal', 5.52, 'Card', '2016-12-19', 'New') +,(4115, 220, 6 , '2016-11-13', '2017-02-22', 'Janet James', '820 Westend Place', null, 'Springfield', 'Massachusetts', '01129', 'United States', 4.72, 'Cash', '2016-03-21', 'On Hold') +,(4116, 201, 72, '2016-09-01', '2016-09-07', 'Martha Lee', '2 Donald Hill', null, 'Majiang', null, null, 'China', 4.39, 'Cash', '2016-12-10', 'Shipped') +,(4117, 202, 40, '2017-02-04', '2016-12-09', 'Benjamin Cruz', '02989 Morningstar Avenue', null, 'Gīvī', null, null, 'Iran', 1.77, 'Check', '2017-01-29', 'Complete') +,(4118, 213, 48, '2016-12-24', '2017-01-06', 'Diane Porter', '7 Kensington Center', null, 'Pingyi', null, null, 'China', 4.69, 'Check', '2016-05-31', 'On Hold') +,(4119, 205, 69, '2016-06-30', '2016-05-01', 'Brandon Myers', '80411 Victoria Center', null, 'Punsu', null, null, 'Indonesia', 7.8, 'Cash', '2016-12-28', 'New') +,(4120, 220, 63, '2016-11-11', '2016-10-30', 'Beverly Garza', '2750 Sullivan Place', null, 'San Jose', null, '8427', 'Philippines', 8.15, 'Check', '2016-09-23', 'Shipped') +,(4121, 220, 32, '2016-05-05', '2016-09-05', 'Cynthia Simpson', '0731 Clarendon Point', null, 'Pomichna', null, null, 'Ukraine', 5.56, 'Card', '2017-02-23', 'On Hold') +,(4122, 201, 38, '2016-04-24', '2016-07-30', 'Janet West', '4800 Dottie Parkway', null, 'Tân Kỳ', null, null, 'Vietnam', 2.63, 'Cash', '2016-06-17', 'On Hold') +,(4123, 214, 24, '2016-04-04', '2016-06-11', 'Kevin Stone', '85 Duke Avenue', null, 'Shemonaīkha', null, null, 'Denmark', 9.99, 'Card', '2016-09-24', 'On Hold') +,(4124, 210, 9 , '2016-09-01', '2016-06-18', 'Amy Austin', '80663 Almo Park', null, 'Zaječov', null, '267 63', 'Czech Republic', 3.58, 'Card', '2016-08-29', 'Complete') +,(4125, 206, 78, '2017-02-09', '2016-07-07', 'Gregory Greene', '6 Commercial Junction', null, 'Hudong', null, null, 'China', 7.34, 'Cash', '2016-12-26', 'New') +,(4126, 215, 48, '2016-07-30', '2016-12-25', 'Laura Woods', '115 Ramsey Plaza', null, 'Allentown', 'Pennsylvania', '18105', 'United States', 4.92, 'Check', '2016-09-28', 'On Hold') +,(4127, 220, 19, '2016-03-29', '2016-05-27', 'Stephanie Reed', '452 Grayhawk Way', null, 'Sicheng', null, null, 'China', 1.1, 'Card', '2017-03-14', 'Shipped') +,(4128, 208, 64, '2016-06-03', '2016-08-13', 'Craig Gonzalez', '6028 West Street', null, 'Kliteh', null, null, 'Indonesia', 1.73, 'Cash', '2016-06-23', 'Complete') +,(4129, 201, 28, '2016-09-05', '2016-04-03', 'Raymond Gomez', '4 Stone Corner Place', null, 'Chechenglu', null, null, 'China', 4.32, 'Card', '2016-06-29', 'Complete') +,(4130, 215, 83, '2016-11-14', '2016-09-13', 'Kenneth Taylor', '7 Nevada Way', null, 'Alīpur', null, '34451', 'Iran', 5.07, 'Card', '2016-11-28', 'Complete') +,(4131, 203, 76, '2017-02-01', '2017-01-04', 'Jose Peters', '2493 Saint Paul Crossing', null, 'Bofuer', null, null, 'Indonesia', 9.85, 'Card', '2016-11-18', 'New') +,(4132, 207, 67, '2016-09-02', '2017-03-10', 'Martin West', '7251 Prairieview Place', null, 'Espinillo', null, '3460', 'Argentina', 7.9, 'Card', '2017-02-05', 'New') +,(4133, 208, 78, '2016-08-27', '2016-12-26', 'Louise Dunn', '4076 East Trail', null, 'Caramanta', null, '056047', 'Argentina', 1.28, 'Cash', '2016-12-22', 'Shipped') +,(4134, 209, 93, '2016-06-27', '2016-04-10', 'Gregory Stanley', '67 Namekagon Crossing', null, 'Pasarkayu', null, null, 'Indonesia', 2.83, 'Check', '2016-09-17', 'Complete') +,(4135, 206, 60, '2016-03-23', '2016-06-19', 'Ronald Palmer', '21 Old Shore Place', null, 'Tujing', null, null, 'China', 9.01, 'Check', '2016-12-22', 'New') +,(4136, 209, 10, '2016-11-07', '2016-11-21', 'Harry Robinson', '740 Toban Court', null, 'Liujiage', null, null, 'China', 7.13, 'Card', '2016-09-20', 'New') +,(4137, 214, 83, '2016-05-20', '2016-04-08', 'Joan Torres', '5167 Laurel Drive', null, 'Nirji', null, null, 'China', 9.81, 'Card', '2016-09-13', 'Complete') +,(4138, 207, 47, '2016-07-17', '2016-10-03', 'Carlos Jones', '4 Fuller Lane', null, 'Detroit', 'Michigan', '48258', 'United States', 8.02, 'Card', '2016-11-16', 'On Hold') +,(4139, 214, 92, '2016-07-17', '2017-01-23', 'Terry Freeman', '738 Vernon Road', null, 'Veverská Bítýška', null, '664 71', 'Czech Republic', 1.93, 'Check', '2016-04-04', 'Complete') +,(4140, 204, 92, '2016-06-09', '2016-05-06', 'Rose Hunt', '3242 Bunting Trail', null, 'Schaumburg', 'Illinois', '60193', 'United States', 7.65, 'Check', '2016-07-03', 'On Hold') +,(4141, 214, 12, '2016-11-19', '2017-03-16', 'Harry Reid', '395 Hauk Road', null, 'Rudky', null, null, 'Ukraine', 5.23, 'Card', '2017-01-18', 'On Hold') +,(4142, 212, 88, '2016-12-25', '2016-12-14', 'Fred Olson', '9311 Old Gate Park', null, 'Hejiabao', null, null, 'China', 4.02, 'Check', '2016-05-16', 'New') +,(4143, 217, 79, '2016-06-14', '2016-08-25', 'Paul Arnold', '08347 Comanche Pass', null, 'Bukovec', null, '739 84', 'Czech Republic', 6.02, 'Card', '2016-05-08', 'New') +,(4144, 216, 56, '2016-06-03', '2016-07-22', 'Carolyn Woods', '55 Stoughton Pass', null, 'Shengmi', null, null, 'China', 7.32, 'Card', '2016-07-27', 'New') +,(4145, 218, 84, '2016-07-02', '2016-11-05', 'Craig Schmidt', '2 Stephen Plaza', null, 'Arhust', null, null, 'Japan', 3.31, 'Check', '2016-06-17', 'New') +,(4146, 219, 13, '2016-09-02', '2017-01-29', 'Antonio Jordan', '452 Clemons Court', null, 'København', 'Region Hovedstaden', '1787', 'Denmark', 4.84, 'Card', '2016-11-10', 'Complete') +,(4147, 212, 51, '2016-10-19', '2017-01-20', 'Carol Evans', '1649 Crescent Oaks Road', null, 'Roubaix', 'Nord-Pas-de-Calais', '59100', 'France', 7.71, 'Card', '2017-03-08', 'On Hold') +,(4148, 217, 26, '2016-04-16', '2016-11-28', 'Steven Torres', '73679 Morning Drive', null, 'Ayotupas', null, null, 'Japan', 7.0, 'Card', '2016-06-12', 'On Hold') +,(4149, 215, 1 , '2017-02-06', '2016-10-27', 'Louis Watson', '03 Golf View Way', null, 'Madaoua', null, null, 'United Kingdom', 4.45, 'Check', '2016-07-22', 'Complete') +,(4150, 210, 100,'2017-01-14', '2016-11-12', 'Robin Reynolds', '5 Hagan Hill', null, 'Huacaschuque', null, null, 'Peru', 7.37, 'Check', '2017-02-09', 'New') +,(4151, 217, 24, '2016-09-06', '2016-10-11', 'Julia Gilbert', '3 Manitowish Avenue', null, 'Passos', 'Viana do Castelo', '4990-770', 'Portugal', 1.76, 'Card', '2016-07-16', 'New') +,(4152, 210, 90, '2016-05-26', '2016-07-14', 'Chris Chavez', '0 Birchwood Plaza', null, 'Odivelas', 'Lisboa', '2675-080', 'Portugal', 8.35, 'Cash', '2017-02-05', 'On Hold') +,(4153, 220, 79, '2016-10-27', '2016-08-14', 'Adam Morrison', '04510 West Circle', null, 'Weda', null, null, 'Japan', 8.84, 'Check', '2016-10-05', 'On Hold') +,(4154, 210, 57, '2017-02-21', '2016-09-28', 'Doris Snyder', '37027 Hintze Parkway', null, 'Vakhrushi', null, '613110', 'Russia', 2.75, 'Cash', '2016-12-02', 'Complete') +,(4155, 202, 24, '2017-02-03', '2016-08-03', 'Lisa Fisher', '919 Warner Circle', null, 'Kanbe', null, null, 'India', 2.48, 'Check', '2016-12-23', 'New') +,(4156, 213, 89, '2017-01-26', '2016-06-25', 'Gloria Murphy', '6750 Hansons Center', null, 'Saint Petersburg', null, '190990', 'Russia', 2.88, 'Cash', '2017-01-31', 'On Hold') +,(4157, 219, 83, '2016-08-03', '2016-06-15', 'Sara Mcdonald', '88365 Namekagon Park', null, 'Maofan', null, null, 'China', 4.69, 'Cash', '2016-09-22', 'New') +,(4158, 202, 79, '2016-08-13', '2016-10-08', 'John Barnes', '41 Springs Plaza', null, 'Carangola', null, '36800-000', 'Brazil', 4.84, 'Check', '2016-11-25', 'New') +,(4159, 215, 84, '2016-11-30', '2017-02-27', 'Bobby Matthews', '39153 Kipling Trail', null, 'Now Zād', null, null, 'Germany', 7.56, 'Cash', '2016-09-25', 'Shipped') +,(4160, 216, 40, '2016-07-27', '2016-12-05', 'Robin Greene', '899 Waubesa Alley', null, 'Vellinge', 'Skåne', '235 93', 'Sweden', 4.17, 'Card', '2016-12-22', 'New') +,(4161, 211, 91, '2017-03-12', '2016-09-11', 'Joseph Long', '3 Nobel Terrace', null, 'Bukabu', null, null, 'Japan', 2.26, 'Card', '2016-10-26', 'On Hold') +,(4162, 204, 94, '2016-10-08', '2016-09-26', 'Lisa Rodriguez', '880 Arizona Terrace', null, 'Elena', null, '5815', 'Argentina', 3.13, 'Cash', '2016-06-15', 'Shipped') +,(4163, 208, 49, '2017-02-23', '2016-06-05', 'Douglas Parker', '79 Mariners Cove Plaza', null, 'Şafāshahr', null, null, 'Iran', 1.83, 'Cash', '2016-10-26', 'On Hold') +,(4164, 201, 23, '2016-10-31', '2017-01-07', 'Laura Stewart', '97911 Meadow Ridge Road', null, 'Hexi', null, null, 'China', 1.24, 'Check', '2017-03-08', 'Shipped') +,(4165, 202, 27, '2017-01-07', '2016-10-05', 'Matthew Jordan', '29 Lakewood Trail', null, 'Kalkal Barat', null, null, 'Japan', 9.19, 'Card', '2016-09-03', 'Shipped') +,(4166, 218, 61, '2016-03-31', '2017-03-03', 'Denise Mason', '79 Carberry Alley', null, 'Vạn Giã', null, null, 'Vietnam', 7.78, 'Card', '2016-03-23', 'New') +,(4167, 220, 56, '2016-11-12', '2016-06-18', 'Phillip Castillo', '9910 Reindahl Parkway', null, 'Shangyanzhuang', null, null, 'China', 2.48, 'Card', '2016-07-14', 'Complete') +,(4168, 201, 41, '2016-07-10', '2016-07-29', 'Dorothy Nelson', '8 Hermina Terrace', null, 'Petrolina', null, '56300-000', 'Brazil', 1.52, 'Check', '2016-11-11', 'Shipped') +,(4169, 218, 100,'2016-12-18', '2016-12-02', 'Lawrence Willis', '21 Northland Trail', null, 'Bukor', null, null, 'India', 2.28, 'Card', '2017-01-06', 'New') +,(4170, 218, 6 , '2016-10-31', '2016-10-20', 'Jonathan Banks', '5748 Kings Hill', null, 'Tianning', null, null, 'China', 5.71, 'Check', '2016-06-02', 'Shipped') +,(4171, 211, 93, '2016-11-16', '2017-01-20', 'Gary Green', '001 Straubel Point', null, 'Huangshapu', null, null, 'China', 3.6, 'Cash', '2016-12-12', 'Complete') +,(4172, 203, 46, '2016-10-16', '2016-09-08', 'Nancy Bryant', '367 Gateway Park', null, 'Zhutang', null, null, 'China', 2.19, 'Cash', '2017-02-15', 'Shipped') +,(4173, 208, 72, '2016-08-27', '2016-04-09', 'Jeremy Rose', '8 Service Lane', null, 'Jinshandian', null, null, 'China', 8.09, 'Check', '2017-01-18', 'On Hold') +,(4174, 212, 88, '2016-06-25', '2016-08-21', 'Rebecca Gibson', '74 American Crossing', null, 'Canmang', null, null, 'China', 1.31, 'Card', '2017-02-08', 'New') +,(4175, 208, 75, '2017-02-28', '2017-01-03', 'Marilyn Hanson', '676 Service Crossing', null, 'Racławice', null, '32-222', 'Poland', 2.88, 'Check', '2017-02-18', 'New') +,(4176, 204, 1 , '2016-09-23', '2016-08-16', 'Denise Hanson', '8 Lakewood Crossing', null, 'Huaizhong', null, null, 'China', 9.48, 'Card', '2016-12-30', 'On Hold') +,(4177, 204, 20, '2017-03-02', '2016-12-27', 'John Shaw', '4752 Meadow Ridge Lane', null, 'Sosnovo-Ozerskoye', null, '612955', 'Russia', 7.17, 'Check', '2016-06-21', 'On Hold') +,(4178, 202, 30, '2016-03-20', '2016-10-17', 'Russell Fernandez', '5941 Esch Lane', null, 'Shuiyang', null, null, 'China', 1.04, 'Check', '2017-01-05', 'On Hold') +,(4179, 202, 27, '2017-01-14', '2016-07-31', 'Annie Ruiz', '67778 Butterfield Trail', null, 'Qalyūb', null, null, 'Germany', 5.51, 'Card', '2016-05-12', 'Shipped') +,(4180, 208, 1 , '2017-03-16', '2016-04-04', 'Ashley Gonzales', '88504 Johnson Street', null, 'Salingogan', null, '6417', 'Philippines', 7.56, 'Check', '2016-07-26', 'Shipped') +,(4181, 203, 70, '2016-03-25', '2016-11-06', 'Richard George', '54 3rd Circle', null, 'Haibeitou', null, null, 'China', 1.99, 'Cash', '2016-09-05', 'New') +,(4182, 219, 69, '2016-04-11', '2017-02-03', 'David Harris', '2 Menomonie Pass', null, 'Oslo', 'Oslo', '0188', 'Greece', 1.93, 'Check', '2016-11-30', 'Shipped') +,(4183, 211, 25, '2016-12-08', '2016-11-16', 'Catherine Reynolds', '302 Autumn Leaf Parkway', null, 'Lameiras', 'Lisboa', '2715-145', 'Portugal', 6.68, 'Cash', '2016-04-02', 'Shipped') +,(4184, 217, 73, '2016-06-19', '2016-11-29', 'Donald Moreno', '690 Laurel Park', null, 'Sinisian', null, '4212', 'Philippines', 3.1, 'Check', '2017-01-06', 'New') +,(4185, 210, 34, '2016-07-03', '2016-05-23', 'Ryan Thomas', '45044 Harper Place', null, 'Madīnat Lab‘ūs', null, null, 'South Africa', 6.31, 'Cash', '2016-06-27', 'Complete') +,(4186, 206, 91, '2016-05-26', '2016-09-09', 'Ruby Lynch', '8350 Karstens Parkway', null, 'Puyo', null, null, 'Argentina', 6.07, 'Check', '2016-05-10', 'Shipped') +,(4187, 208, 64, '2016-05-31', '2016-10-16', 'Linda Robinson', '6069 Chive Plaza', null, 'Joutseno', null, '54101', 'Finland', 3.11, 'Card', '2016-05-15', 'Shipped') +,(4188, 216, 41, '2017-02-07', '2016-03-28', 'Bonnie Morris', '2611 Comanche Junction', null, 'Lacombe', 'Alberta', 'T4L', 'Canada', 2.53, 'Check', '2016-08-31', 'New') +,(4189, 206, 51, '2016-12-20', '2016-12-08', 'Dennis Gardner', '2348 Blue Bill Park Crossing', null, 'Ngkiong', null, null, 'Japan', 5.1, 'Check', '2016-11-28', 'New') +,(4190, 220, 54, '2016-08-06', '2016-08-27', 'Carolyn Matthews', '817 Ohio Point', null, 'Orekhovo-Zuyevo', null, '142609', 'Russia', 7.52, 'Card', '2016-03-22', 'On Hold') +,(4191, 207, 96, '2016-07-03', '2016-06-18', 'Jesse Parker', '3 Eastwood Terrace', null, 'Berezovo', null, null, 'Ukraine', 6.64, 'Check', '2016-05-07', 'New') +,(4192, 216, 18, '2016-06-05', '2017-01-11', 'Ann Gilbert', '6 Oak Valley Lane', null, 'Caijiang', null, null, 'China', 3.72, 'Cash', '2016-11-17', 'On Hold') +,(4193, 208, 22, '2016-06-26', '2017-02-22', 'Martha Hawkins', '57581 Union Road', null, 'Ilinden', null, '1041', 'Denmark', 5.64, 'Cash', '2016-05-23', 'On Hold') +,(4194, 207, 42, '2017-02-03', '2017-01-08', 'Jeffrey Hart', '83 Green Ridge Point', null, 'Wangcheng', null, null, 'China', 1.15, 'Check', '2016-12-07', 'Shipped') +,(4195, 217, 28, '2016-10-18', '2016-05-01', 'Joseph Riley', '54373 Coleman Street', null, 'Karangbungur', null, null, 'Japan', 5.9, 'Cash', '2016-04-23', 'Complete') +,(4196, 207, 78, '2016-07-09', '2016-07-15', 'Brian Dean', '9 Stone Corner Hill', null, 'Dambulla', null, '21100', 'United Kingdom', 5.15, 'Check', '2016-07-09', 'On Hold') +,(4197, 204, 38, '2016-07-19', '2016-04-13', 'Christine Campbell', '47302 Porter Junction', null, 'Dananshan', null, null, 'China', 6.74, 'Card', '2016-11-07', 'Complete') +,(4198, 201, 7 , '2017-03-02', '2016-08-16', 'Ruth Mcdonald', '401 Erie Avenue', null, 'Borkowice', null, '26-422', 'Poland', 3.24, 'Cash', '2016-04-17', 'New') +,(4199, 216, 87, '2016-12-14', '2017-03-05', 'Jean Armstrong', '450 Sullivan Avenue', null, 'Carpenter', null, '2009', 'Philippines', 4.25, 'Cash', '2016-07-11', 'Complete') +,(4200, 218, 8 , '2017-02-01', '2016-04-17', 'Gary Price', '775 Butterfield Lane', null, 'Vaasa', null, '66999', 'Finland', 5.36, 'Card', '2016-07-09', 'Shipped') +,(4201, 217, 77, '2016-11-10', '2016-11-13', 'Carolyn Scott', '5878 Badeau Lane', null, 'Kazanskaya', null, '396614', 'Russia', 7.94, 'Card', '2016-12-09', 'New') +,(4202, 204, 10, '2016-08-12', '2016-03-21', 'Earl Anderson', '9 Roth Court', null, 'Governor’s Harbour', null, null, 'Canada', 2.47, 'Card', '2016-08-06', 'Complete') +,(4203, 204, 54, '2016-05-26', '2016-04-18', 'Elizabeth Kelley', '70 Burrows Street', null, 'Fucheng', null, null, 'China', 9.94, 'Cash', '2016-08-24', 'Shipped') +,(4204, 208, 58, '2017-03-09', '2016-04-17', 'Julia Wilson', '46476 Burning Wood Crossing', null, 'Koper', null, '6600', 'India', 3.82, 'Card', '2016-08-26', 'New') +,(4205, 208, 85, '2016-05-04', '2016-03-18', 'Jeffrey Oliver', '39 Tennessee Avenue', null, 'Jejkowice', null, '44-290', 'Poland', 7.22, 'Card', '2016-09-23', 'Shipped') +,(4206, 220, 8 , '2016-06-16', '2017-01-03', 'Angela Walker', '579 Miller Street', null, 'Hà Tĩnh', null, null, 'Vietnam', 1.04, 'Check', '2016-05-18', 'Complete') +,(4207, 212, 55, '2016-07-04', '2016-11-09', 'Karen Hansen', '953 Manufacturers Pass', null, 'Lysekil', 'Västra Götaland', '453 35', 'Sweden', 8.81, 'Check', '2016-03-18', 'New') +,(4208, 217, 96, '2016-10-26', '2016-07-11', 'Patricia West', '1 Browning Alley', null, 'Huayang', null, null, 'China', 7.54, 'Card', '2016-09-15', 'New') +,(4209, 203, 71, '2016-08-04', '2017-01-01', 'Phillip Gardner', '30438 Mariners Cove Way', null, 'Phu Khiao', null, '36110', 'Thailand', 3.03, 'Check', '2016-03-31', 'Shipped') +,(4210, 207, 30, '2017-03-08', '2016-07-21', 'Fred Howard', '45981 Hovde Trail', null, 'Suncheon', null, null, 'Finland', 1.13, 'Check', '2016-07-14', 'On Hold') +,(4211, 217, 57, '2016-05-28', '2017-03-11', 'George Wagner', '24863 Messerschmidt Road', null, 'Ningzhong', null, null, 'China', 6.5, 'Check', '2016-07-26', 'New') +,(4212, 213, 19, '2016-11-28', '2016-06-09', 'Clarence Russell', '85 Kropf Circle', null, 'Ouro Branco', null, '59347-000', 'Brazil', 6.88, 'Check', '2016-04-02', 'On Hold') +,(4213, 217, 51, '2016-06-25', '2016-05-25', 'Jane Johnston', '1708 Corscot Pass', null, 'Şafāshahr', null, null, 'Iran', 9.16, 'Cash', '2016-10-12', 'Complete') +,(4214, 203, 88, '2017-02-19', '2016-03-25', 'John Adams', '100 Hollow Ridge Way', null, 'Satita', null, null, 'India', 3.01, 'Cash', '2016-11-19', 'Shipped') +,(4215, 202, 12, '2017-01-26', '2016-10-07', 'Diana Graham', '12 Esch Park', null, 'Krasnokamensk', null, '662955', 'Russia', 9.29, 'Check', '2016-06-10', 'Shipped') +,(4216, 211, 66, '2016-07-19', '2016-11-30', 'John Henry', '448 Hanover Trail', null, 'Phitsanulok', null, '65000', 'Thailand', 7.23, 'Card', '2016-09-22', 'Shipped') +,(4217, 218, 98, '2016-11-20', '2016-11-12', 'Donna Bradley', '92136 Arkansas Avenue', null, 'Balong Wetan', null, null, 'Japan', 7.79, 'Card', '2016-12-18', 'New') +,(4218, 206, 5 , '2016-05-04', '2016-08-19', 'Kevin Harper', '2911 Laurel Point', null, 'Patapan', null, null, 'Japan', 1.52, 'Card', '2016-03-20', 'On Hold') +,(4219, 205, 76, '2016-11-15', '2016-12-12', 'Margaret Hanson', '9603 Northridge Junction', null, 'Mwembe', null, null, 'India', 4.76, 'Cash', '2017-03-14', 'Shipped') +,(4220, 206, 62, '2016-12-30', '2016-10-23', 'Henry Bradley', '84 Lake View Plaza', null, 'Zheleznovodsk', null, '357408', 'Russia', 8.08, 'Cash', '2017-02-23', 'Complete') +,(4221, 218, 91, '2016-08-07', '2016-08-31', 'Jane Fowler', '2484 Hoepker Hill', null, 'Huangcun', null, null, 'China', 9.34, 'Card', '2017-01-10', 'Complete') +,(4222, 207, 19, '2016-05-22', '2016-06-25', 'Kimberly Peterson', '5851 Carey Crossing', null, 'Pochuta', null, '04008', 'Japan', 9.16, 'Card', '2016-04-25', 'Shipped') +,(4223, 203, 69, '2017-02-13', '2016-09-18', 'Nicholas Simpson', '9 Hudson Way', null, 'Chashan', null, null, 'China', 5.37, 'Check', '2017-01-01', 'On Hold') +,(4224, 214, 71, '2017-02-28', '2016-06-18', 'Carol Rodriguez', '78 Grayhawk Place', null, 'Luntas', null, null, 'Indonesia', 1.76, 'Card', '2016-10-06', 'Shipped') +,(4225, 207, 34, '2017-03-06', '2016-07-20', 'Jessica Mason', '65 Merrick Lane', null, 'Křižanov', null, '789 01', 'Czech Republic', 9.75, 'Card', '2016-12-28', 'New') +,(4226, 209, 74, '2016-06-04', '2017-01-15', 'Jeffrey Sims', '05441 Wayridge Pass', null, 'Rennes', 'Bretagne', '35047 CEDEX 9', 'France', 9.09, 'Check', '2016-05-19', 'Shipped') +,(4227, 205, 74, '2016-09-09', '2017-01-06', 'Arthur Simmons', '733 Logan Circle', null, 'Dzhankoy', null, null, 'Ukraine', 2.51, 'Check', '2017-01-25', 'New') +,(4228, 207, 52, '2017-01-30', '2017-01-08', 'Kevin Williams', '3561 6th Trail', null, 'Narganá', null, null, 'Denmark', 7.32, 'Cash', '2016-06-24', 'On Hold') +,(4229, 209, 76, '2016-05-05', '2016-07-11', 'Joe Stewart', '0314 Ryan Parkway', null, 'San Jose', 'Oaxaca', '69570', 'Mexico', 9.28, 'Check', '2016-05-06', 'Shipped') +,(4230, 214, 2 , '2016-09-19', '2016-09-08', 'Walter Barnes', '80695 Stone Corner Road', null, 'Busdi', null, '6210', 'Philippines', 5.97, 'Check', '2016-07-19', 'Shipped') +,(4231, 211, 55, '2016-08-27', '2016-10-04', 'Sean Holmes', '91 Becker Drive', null, 'Gezan', null, null, 'China', 3.81, 'Check', '2016-06-14', 'Shipped') +,(4232, 209, 14, '2016-04-01', '2017-03-06', 'Sandra Perez', '45373 Buhler Park', null, 'Ust’-Kut', null, '162176', 'Russia', 4.25, 'Cash', '2017-01-22', 'Shipped') +,(4233, 205, 96, '2016-09-27', '2016-07-03', 'Sara Kelly', '73457 Buhler Court', null, 'Sima', null, null, 'Canada', 7.2, 'Card', '2016-12-14', 'Complete') +,(4234, 217, 74, '2016-11-22', '2017-01-18', 'Edward Reid', '02 Westport Trail', null, 'Tchaourou', null, null, 'India', 3.5, 'Cash', '2016-12-25', 'New') +,(4235, 206, 69, '2016-03-17', '2016-10-29', 'Betty Cook', '83578 Ohio Avenue', null, 'Stockholm', 'Stockholm', '101 22', 'Sweden', 6.17, 'Check', '2016-09-02', 'On Hold') +,(4236, 217, 97, '2017-02-06', '2016-07-01', 'Diana Ellis', '49 Jenna Circle', null, 'Yanshan', null, null, 'China', 6.06, 'Check', '2016-07-16', 'Complete') +,(4237, 216, 17, '2016-11-30', '2016-10-02', 'Donald Miller', '8581 Farragut Junction', null, 'Yosowilangun', null, null, 'Indonesia', 8.9, 'Check', '2016-11-01', 'Complete') +,(4238, 203, 21, '2017-02-09', '2016-12-14', 'Eric Coleman', '9242 Badeau Street', null, 'Caiyuan', null, null, 'China', 4.1, 'Check', '2016-06-07', 'Shipped') +,(4239, 213, 23, '2016-09-15', '2016-11-04', 'Heather Vasquez', '454 Gale Hill', null, 'Susoh', null, null, 'Indonesia', 1.59, 'Check', '2016-10-25', 'New') +,(4240, 208, 2 , '2016-05-28', '2016-05-21', 'Martin Sims', '30 Bunting Center', null, 'Efeng', null, null, 'China', 1.92, 'Cash', '2016-12-15', 'Complete') +,(4241, 202, 85, '2017-02-05', '2016-08-13', 'Catherine Washington', '637 Hermina Court', null, 'San Francisco', 'Jalisco', '46175', 'Mexico', 6.49, 'Card', '2016-12-20', 'On Hold') +,(4242, 204, 17, '2016-10-04', '2016-05-13', 'Gary Kennedy', '2 Grasskamp Point', null, 'Famaillá', null, '4132', 'Argentina', 9.78, 'Card', '2016-12-03', 'Complete') +,(4243, 205, 86, '2016-04-15', '2016-05-25', 'Pamela Parker', '43642 Utah Point', null, 'Santa Rosa', 'Nuevo Leon', '67803', 'Mexico', 1.78, 'Card', '2017-02-16', 'Shipped') +,(4244, 208, 3 , '2016-08-02', '2017-03-13', 'Michelle Russell', '947 Jenna Place', null, 'Kinshasa', null, null, 'Canada', 8.43, 'Cash', '2016-04-13', 'New') +,(4245, 210, 32, '2016-06-16', '2016-07-14', 'Lois Jenkins', '1 Pepper Wood Road', null, 'Kallinge', 'Blekinge', '372 53', 'Sweden', 4.77, 'Cash', '2016-03-17', 'On Hold') +,(4246, 203, 39, '2017-02-04', '2016-08-08', 'Kelly Ramirez', '20490 Eagle Crest Circle', null, 'Baraba', null, '623509', 'Russia', 8.65, 'Cash', '2016-10-04', 'Complete') +,(4247, 202, 24, '2016-05-05', '2016-11-26', 'Harold Gray', '9033 Elmside Plaza', null, 'N’dalatando', null, null, 'Netherlands', 2.78, 'Cash', '2016-07-24', 'New') +,(4248, 210, 16, '2017-01-27', '2017-03-14', 'Dennis Fisher', '4 Sage Road', null, 'Niederanven', null, 'L-6948', 'United Kingdom', 1.26, 'Check', '2016-05-12', 'On Hold') +,(4249, 203, 20, '2016-07-21', '2016-12-08', 'Antonio Wells', '99743 Algoma Hill', null, 'Mūdīyah', null, null, 'South Africa', 4.36, 'Card', '2016-05-28', 'Complete') +,(4250, 217, 88, '2016-05-31', '2016-10-17', 'William Gonzales', '3258 Holy Cross Way', null, 'Yangdun', null, null, 'China', 7.06, 'Check', '2016-04-13', 'New') +,(4251, 211, 1 , '2017-03-04', '2016-10-27', 'Ronald Ward', '5 Logan Terrace', null, 'Tanahmerah', null, null, 'Indonesia', 4.38, 'Card', '2016-09-22', 'On Hold') +,(4252, 217, 87, '2016-12-29', '2016-09-18', 'Gloria Boyd', '10 Grayhawk Hill', null, 'Boromlya', null, null, 'Ukraine', 4.84, 'Cash', '2016-08-01', 'On Hold') +,(4253, 212, 99, '2017-02-02', '2016-04-28', 'Raymond Scott', '3 Donald Trail', null, 'Lakshmīpur', null, '1553', 'Canada', 8.37, 'Cash', '2016-12-06', 'On Hold') +,(4254, 201, 7 , '2016-11-28', '2016-04-11', 'Arthur Hamilton', '95 Doe Crossing Avenue', null, 'Purwosari', null, null, 'Indonesia', 6.84, 'Card', '2016-06-14', 'Shipped') +,(4255, 220, 100,'2016-09-30', '2016-10-08', 'Jean Wagner', '5690 Meadow Valley Alley', null, 'Svedala', 'Skåne', '233 94', 'Sweden', 8.57, 'Check', '2017-01-06', 'Shipped') +,(4256, 218, 78, '2016-04-28', '2016-04-03', 'Kimberly Rose', '6067 Twin Pines Hill', null, 'Capinzal', null, '89665-000', 'Brazil', 6.07, 'Check', '2016-05-18', 'New') +,(4257, 213, 44, '2016-11-04', '2016-03-28', 'Doris Foster', '170 Chive Court', null, 'Lang', null, null, 'China', 1.72, 'Card', '2016-10-20', 'Shipped') +,(4258, 208, 46, '2017-01-11', '2016-09-25', 'Teresa Reynolds', '3 Prairie Rose Alley', null, 'Tashang', null, null, 'China', 4.84, 'Card', '2016-10-16', 'On Hold') +,(4259, 215, 89, '2016-07-07', '2016-12-29', 'Christine Turner', '0746 Heffernan Center', null, 'Henggang', null, null, 'China', 6.81, 'Cash', '2016-08-21', 'New') +,(4260, 210, 23, '2016-10-26', '2017-02-10', 'Jimmy Jordan', '903 Anniversary Trail', null, 'Elaiochóri', null, null, 'Greece', 9.66, 'Cash', '2017-01-10', 'Complete') +,(4261, 207, 20, '2016-11-07', '2017-02-17', 'Andrew Baker', '3 Pennsylvania Park', null, 'Kansas City', 'Missouri', '64130', 'United States', 5.46, 'Cash', '2016-11-20', 'Complete') +,(4262, 203, 32, '2017-02-21', '2016-11-17', 'Diana Dixon', '18520 Maryland Drive', null, 'Santa Catalina', null, '2701', 'Philippines', 4.66, 'Card', '2017-01-09', 'On Hold') +,(4263, 210, 10, '2017-02-28', '2017-02-26', 'Karen Miller', '5608 Moose Court', null, 'Torres Vedras', 'Lisboa', '2560-234', 'Portugal', 5.71, 'Card', '2016-11-30', 'New') +,(4264, 214, 39, '2017-01-09', '2016-10-24', 'Angela Austin', '9659 Vera Point', null, 'Santiaoshi', null, null, 'China', 6.59, 'Check', '2016-05-07', 'Shipped') +,(4265, 203, 3 , '2016-11-11', '2016-11-22', 'Steve Snyder', '7626 Hoepker Junction', null, 'Wulan Hada', null, null, 'China', 5.67, 'Cash', '2017-01-01', 'New') +,(4266, 218, 94, '2016-04-06', '2016-10-02', 'Kevin Daniels', '24 Chinook Point', null, 'Bhairāhawā', null, null, 'United Kingdom', 8.21, 'Card', '2016-05-12', 'Shipped') +,(4267, 203, 58, '2016-11-14', '2016-03-28', 'Patricia Welch', '60375 Corry Street', null, 'Solidaridad', 'Veracruz Llave', '94330', 'Mexico', 2.77, 'Card', '2017-02-02', 'On Hold') +,(4268, 218, 2 , '2016-07-02', '2016-08-14', 'Wanda Reynolds', '965 Calypso Circle', null, 'Dera Bugti', null, '80100', 'Iran', 8.86, 'Check', '2017-01-30', 'On Hold') +,(4269, 216, 47, '2017-03-11', '2016-07-16', 'Harold Williamson', '14332 Texas Junction', null, 'Mzimba', null, null, 'India', 2.47, 'Cash', '2016-06-01', 'Shipped') +,(4270, 213, 62, '2016-11-09', '2017-02-07', 'Juan Fox', '17 Eagan Crossing', null, 'Xiayang', null, null, 'China', 7.63, 'Card', '2017-02-17', 'Shipped') +,(4271, 211, 70, '2016-04-16', '2016-04-26', 'Ryan Long', '0 Harper Circle', null, 'Blagoveshchenka', null, '658670', 'Russia', 3.2, 'Card', '2016-09-10', 'Complete') +,(4272, 206, 29, '2016-03-25', '2016-10-07', 'Frank Cole', '07 Westend Place', null, 'Laixi', null, null, 'China', 1.93, 'Cash', '2016-05-01', 'New') +,(4273, 209, 25, '2016-05-06', '2016-04-13', 'Tammy Wilson', '74278 Grim Pass', null, 'Åkersberga', 'Stockholm', '184 70', 'Sweden', 2.83, 'Card', '2016-10-29', 'Complete') +,(4274, 206, 82, '2017-02-07', '2017-03-06', 'Joan Gonzales', '40 Stephen Street', null, 'Tlogoagung', null, null, 'Indonesia', 3.44, 'Check', '2016-10-14', 'Complete') +,(4275, 203, 91, '2016-10-10', '2016-11-04', 'Jeffrey Hughes', '38 Toban Plaza', null, 'Privas', 'Rhône-Alpes', '07004 CEDEX', 'France', 8.33, 'Card', '2016-04-23', 'On Hold') +,(4276, 210, 89, '2016-05-14', '2016-09-03', 'Rachel Martin', '08 Lake View Hill', null, 'Sandgerði', null, '245', 'India', 2.07, 'Cash', '2016-06-07', 'Complete') +,(4277, 208, 97, '2016-04-06', '2016-07-02', 'Laura Harper', '1 Dexter Street', null, 'Xintaimen', null, null, 'China', 8.08, 'Check', '2016-05-11', 'Shipped') +,(4278, 215, 3 , '2017-03-04', '2017-03-08', 'Annie Rivera', '5975 Debra Park', null, 'Canchaque', null, null, 'Peru', 5.65, 'Check', '2016-04-09', 'Complete') +,(4279, 201, 6 , '2017-03-01', '2016-08-06', 'Pamela Graham', '2 Monument Avenue', null, 'Danxi', null, null, 'China', 2.05, 'Check', '2016-05-23', 'New') +,(4280, 202, 35, '2017-02-04', '2016-06-09', 'Joseph Jenkins', '00001 Fairfield Center', null, 'Mashtūl as Sūq', null, null, 'Germany', 5.32, 'Card', '2016-12-28', 'New') +,(4281, 203, 76, '2016-05-19', '2016-07-29', 'Eugene Garcia', '8308 Onsgard Lane', null, 'Limoncito', null, null, 'India', 4.07, 'Card', '2016-10-20', 'Shipped') +,(4282, 204, 27, '2016-07-20', '2016-09-26', 'Kevin Anderson', '8 Thierer Center', null, 'Saint-Étienne', 'Rhône-Alpes', '42963 CEDEX 9', 'France', 4.88, 'Card', '2016-07-21', 'Complete') +,(4283, 214, 50, '2016-11-27', '2016-06-14', 'Robin Parker', '51949 Forster Parkway', null, 'Laval', 'Pays de la Loire', '53009 CEDEX', 'France', 1.04, 'Check', '2016-04-20', 'Complete') +,(4284, 214, 74, '2016-11-29', '2016-12-08', 'Kelly Palmer', '2 Hauk Hill', null, 'Östersund', 'Jämtland', '831 17', 'Sweden', 4.26, 'Card', '2016-10-08', 'Complete') +,(4285, 214, 76, '2016-10-22', '2016-05-05', 'Diane Freeman', '5441 Petterle Way', null, 'El Tambo', null, null, 'Peru', 7.17, 'Check', '2016-09-27', 'New') +,(4286, 209, 96, '2016-11-08', '2016-08-26', 'Kathleen Adams', '423 Talisman Point', null, 'Kurume', null, '963-8846', 'Japan', 1.99, 'Cash', '2016-05-19', 'On Hold') +,(4287, 204, 76, '2016-10-18', '2017-01-15', 'Teresa Mendoza', '818 Atwood Lane', null, 'Mosteiro', 'Viana do Castelo', '4980-125', 'Portugal', 3.29, 'Cash', '2016-10-03', 'On Hold') +,(4288, 210, 45, '2016-10-15', '2016-12-14', 'Irene Anderson', '4 Rutledge Alley', null, 'Saparua', null, null, 'Indonesia', 4.35, 'Card', '2016-10-13', 'On Hold') +,(4289, 209, 61, '2017-02-12', '2016-07-15', 'Terry Bennett', '351 Johnson Circle', null, 'Quiling', null, '2902', 'Philippines', 6.77, 'Card', '2016-07-20', 'New') +,(4290, 203, 1 , '2017-03-02', '2016-08-25', 'Ronald Mccoy', '73609 Waywood Center', null, 'Zheleznodorozhnyy', null, '238411', 'Russia', 1.05, 'Cash', '2016-06-10', 'New') +,(4291, 211, 73, '2016-09-13', '2016-04-17', 'Andrew Matthews', '820 Lawn Crossing', null, 'Japeri', null, '26400-000', 'Brazil', 1.22, 'Cash', '2016-09-08', 'New') +,(4292, 215, 15, '2016-12-26', '2016-10-04', 'Melissa Chapman', '88384 Ohio Park', null, 'Dayr al Ghuşūn', null, null, 'India', 9.89, 'Check', '2016-08-14', 'Shipped') +,(4293, 210, 18, '2016-11-23', '2016-12-12', 'Russell Griffin', '6 Eliot Lane', null, 'Changshu City', null, null, 'China', 9.37, 'Check', '2016-05-10', 'On Hold') +,(4294, 206, 95, '2016-06-24', '2017-01-21', 'Jeffrey Gray', '04078 Hudson Drive', null, 'Luangwa', null, null, 'India', 2.58, 'Cash', '2016-06-15', 'Shipped') +,(4295, 215, 85, '2016-10-23', '2017-01-29', 'Lori Frazier', '724 Logan Drive', null, 'Gent', 'Vlaanderen', '9052', 'Denmark', 8.59, 'Cash', '2017-01-01', 'New') +,(4296, 217, 83, '2016-04-08', '2017-02-07', 'Joan Ortiz', '90 Merchant Avenue', null, 'Irasan', null, '3120', 'Philippines', 4.64, 'Card', '2016-09-01', 'Complete') +,(4297, 211, 29, '2016-07-13', '2017-02-06', 'John Stanley', '680 Artisan Pass', null, 'Borås', 'Västra Götaland', '504 75', 'Sweden', 1.77, 'Cash', '2016-07-12', 'On Hold') +,(4298, 208, 65, '2016-12-28', '2016-04-19', 'Dorothy Bell', '397 Kim Place', null, 'Zhongxin', null, null, 'China', 1.2, 'Check', '2017-01-28', 'On Hold') +,(4299, 201, 43, '2017-01-12', '2016-08-07', 'Doris Ramirez', '181 Prentice Terrace', null, 'Severnyy', null, '141707', 'Russia', 2.65, 'Card', '2016-08-13', 'Shipped') +,(4300, 207, 27, '2016-11-10', '2016-11-01', 'Elizabeth Harrison', '067 Talisman Trail', null, 'Guangang', null, null, 'China', 4.78, 'Check', '2016-04-30', 'On Hold') +,(4301, 206, 64, '2016-08-14', '2017-01-13', 'Judith Howard', '55095 Sloan Alley', null, 'Longhua', null, null, 'China', 1.93, 'Card', '2016-10-29', 'New') +,(4302, 213, 33, '2017-01-19', '2016-05-23', 'Julia Simpson', '87375 Londonderry Parkway', null, 'Fufang', null, null, 'China', 9.23, 'Card', '2016-11-15', 'Shipped') +,(4303, 220, 49, '2016-08-01', '2016-04-23', 'Elizabeth Bell', '60 Ridgeview Trail', null, 'Infantas', 'Braga', '4810-578', 'Portugal', 3.22, 'Check', '2017-02-01', 'Complete') +,(4304, 217, 56, '2016-09-07', '2016-08-13', 'Ernest Andrews', '231 Graceland Terrace', null, 'Pindamonhangaba', null, '12400-000', 'Brazil', 2.77, 'Card', '2016-04-04', 'On Hold') +,(4305, 219, 44, '2016-06-11', '2016-03-27', 'Jeffrey Lopez', '76434 Havey Court', null, 'Khvalovo', null, '187435', 'Russia', 8.84, 'Cash', '2016-04-14', 'Shipped') +,(4306, 212, 16, '2016-05-29', '2016-12-31', 'Ralph Weaver', '15 Armistice Alley', null, 'Odienné', null, null, 'Canada', 7.1, 'Card', '2017-01-09', 'Shipped') +,(4307, 210, 16, '2016-10-19', '2017-01-10', 'Mary Stevens', '1928 Aberg Park', null, 'Dzwola', null, '23-304', 'Poland', 4.04, 'Card', '2016-08-24', 'Complete') +,(4308, 220, 50, '2016-09-23', '2016-09-16', 'Douglas Welch', '9 Ryan Circle', null, 'Babakanloa', null, null, 'Indonesia', 1.11, 'Card', '2016-10-13', 'Shipped') +,(4309, 217, 99, '2016-10-17', '2017-01-01', 'Raymond Cruz', '0402 Burning Wood Alley', null, 'Bucay', null, '2805', 'Philippines', 9.27, 'Cash', '2016-06-02', 'Complete') +,(4310, 219, 65, '2016-04-14', '2016-05-14', 'Sara Frazier', '43 Truax Terrace', null, 'Halton', 'England', 'LS9', 'United Kingdom', 5.56, 'Check', '2016-12-04', 'New') +,(4311, 220, 17, '2017-02-03', '2016-07-09', 'Sarah Lane', '414 Gina Point', null, 'Fulong', null, null, 'China', 3.35, 'Cash', '2016-12-27', 'New') +,(4312, 205, 77, '2017-02-27', '2016-04-10', 'Michelle Bradley', '16664 Towne Point', null, 'Yangchun', null, null, 'China', 8.64, 'Cash', '2017-01-28', 'Complete') +,(4313, 210, 68, '2016-08-29', '2016-10-27', 'Marie Porter', '7802 Hovde Plaza', null, 'Redakodi', null, null, 'Indonesia', 1.97, 'Cash', '2016-11-08', 'Complete') +,(4314, 207, 41, '2016-08-08', '2016-08-31', 'Melissa Moore', '438 Mendota Way', null, 'Bensonville', null, null, 'United Kingdom', 7.97, 'Cash', '2017-01-17', 'New') +,(4315, 212, 96, '2016-08-08', '2016-07-27', 'Katherine Bell', '76 Manley Park', null, 'Xagmakajor', null, null, 'China', 7.49, 'Cash', '2016-03-29', 'New') +,(4316, 209, 67, '2016-09-26', '2017-02-03', 'Katherine Elliott', '86 Nelson Point', null, 'Boavista', 'Aveiro', '4520-104', 'Portugal', 1.92, 'Card', '2016-04-28', 'Complete') +,(4317, 219, 40, '2016-10-09', '2016-12-21', 'Dorothy Rose', '75962 Basil Drive', null, 'Pécs', 'Baranya', '7610', 'Denmark', 3.23, 'Card', '2017-02-21', 'Shipped') +,(4318, 209, 68, '2017-01-15', '2017-01-03', 'Larry Hicks', '5985 Crest Line Road', null, 'Lingqiao', null, null, 'China', 2.77, 'Check', '2017-01-20', 'Complete') +,(4319, 214, 55, '2016-07-14', '2017-03-05', 'Paula Rodriguez', '6 Lawn Court', null, 'Simajia', null, null, 'China', 6.33, 'Check', '2016-04-08', 'Shipped') +,(4320, 203, 83, '2016-12-26', '2016-10-07', 'Sharon Richards', '43297 Rigney Avenue', null, 'Salto', null, null, 'India', 7.32, 'Check', '2016-09-14', 'Complete') +,(4321, 215, 29, '2016-12-27', '2016-07-21', 'Craig Day', '22 Thierer Center', null, 'Alberton', 'Prince Edward Island', 'P7K', 'Canada', 5.32, 'Check', '2016-04-02', 'On Hold') +,(4322, 207, 80, '2016-12-06', '2016-05-21', 'Donna Butler', '4149 Bartelt Point', null, 'Carbonear', 'Newfoundland and Labrador', 'A1Y', 'Canada', 3.1, 'Check', '2016-10-03', 'New') +,(4323, 216, 31, '2016-06-27', '2017-03-13', 'Carolyn Ferguson', '97225 Bartelt Avenue', null, 'Tinalmud', null, '1531', 'Philippines', 7.11, 'Cash', '2016-05-22', 'Complete') +,(4324, 212, 78, '2016-05-19', '2016-11-14', 'Peter Romero', '22977 Westridge Terrace', null, 'Toulouse', 'Midi-Pyrénées', '31029 CEDEX 4', 'France', 2.97, 'Check', '2016-09-09', 'Shipped') +,(4325, 213, 73, '2017-02-18', '2016-09-22', 'Jose Greene', '40351 Rusk Place', null, 'Vila Nova de Gaia', 'Porto', '4400-005', 'Portugal', 5.76, 'Cash', '2016-12-12', 'Shipped') +,(4326, 208, 62, '2017-02-14', '2016-11-13', 'Betty Anderson', '8403 Melody Center', null, 'Būsh', null, null, 'Germany', 9.56, 'Check', '2016-10-08', 'Shipped') +,(4327, 220, 56, '2016-09-06', '2016-08-17', 'Amanda Frazier', '47 Dapin Center', null, 'Pasirmanggu', null, null, 'Indonesia', 2.25, 'Card', '2016-07-11', 'On Hold') +,(4328, 201, 24, '2016-10-29', '2017-01-25', 'Douglas Foster', '6953 Stoughton Avenue', null, 'Bokhan', null, '669310', 'Russia', 1.26, 'Card', '2016-07-06', 'Complete') +,(4329, 206, 33, '2017-03-09', '2017-03-12', 'Louis Brown', '76 Little Fleur Park', null, 'Shazhenxi', null, null, 'China', 3.4, 'Check', '2016-08-09', 'Complete') +,(4330, 205, 61, '2016-04-14', '2016-09-26', 'Elizabeth Butler', '82 Springview Road', null, 'Kimito', null, '11710', 'Finland', 1.92, 'Card', '2016-10-18', 'Shipped') +,(4331, 220, 39, '2016-06-10', '2016-04-07', 'Albert Flores', '19 Talmadge Hill', null, 'Almelo', 'Provincie Overijssel', '7604', 'Netherlands', 4.23, 'Check', '2016-12-15', 'Shipped') +,(4332, 217, 47, '2016-10-25', '2016-09-28', 'Kimberly Fowler', '0 Trailsway Crossing', null, 'Iwata', null, '925-0145', 'Japan', 8.14, 'Check', '2016-06-06', 'On Hold') +,(4333, 209, 12, '2016-12-25', '2016-10-31', 'Joe Powell', '5 Everett Drive', null, 'Bergen', 'Hordaland', '5895', 'Greece', 8.02, 'Cash', '2016-09-05', 'Shipped') +,(4334, 219, 1 , '2016-08-12', '2017-02-18', 'Virginia Collins', '78693 Cordelia Point', null, 'San Benito', null, '8423', 'Philippines', 8.4, 'Cash', '2017-01-06', 'Complete') +,(4335, 220, 59, '2017-02-26', '2016-11-05', 'Mary Howard', '5 Golf View Street', null, 'Gjinkar', null, null, 'Canada', 3.54, 'Card', '2016-06-09', 'Complete') +,(4336, 220, 19, '2017-02-09', '2017-01-26', 'Ronald Stevens', '57 Old Shore Crossing', null, 'Bureng', null, null, 'United Kingdom', 8.21, 'Card', '2016-12-21', 'On Hold') +,(4337, 204, 59, '2016-05-14', '2016-07-08', 'James Evans', '44078 Warner Drive', null, 'Amurzet', null, '679230', 'Russia', 9.35, 'Card', '2016-07-22', 'Complete') +,(4338, 213, 96, '2016-09-02', '2016-11-10', 'Willie Snyder', '361 Stone Corner Pass', null, 'Sindangsari', null, null, 'Indonesia', 9.32, 'Check', '2016-04-10', 'Complete') +,(4339, 220, 30, '2017-03-04', '2016-08-16', 'Julie Black', '2922 Grasskamp Alley', null, 'Cotonou', null, null, 'India', 9.14, 'Cash', '2017-03-07', 'Shipped') +,(4340, 206, 17, '2016-11-18', '2016-11-24', 'Roy Olson', '4 Shopko Hill', null, 'Binagadi', null, null, 'India', 5.22, 'Check', '2016-10-14', 'Shipped') +,(4341, 202, 28, '2016-11-18', '2017-02-18', 'Evelyn Lawrence', '90 Crownhardt Center', null, 'Bayshint', null, null, 'Japan', 7.25, 'Check', '2016-12-16', 'On Hold') +,(4342, 209, 37, '2016-10-30', '2016-06-07', 'John Rodriguez', '69 Golf View Avenue', null, 'Hezuoqiao', null, null, 'China', 8.23, 'Cash', '2016-11-05', 'On Hold') +,(4343, 203, 51, '2016-04-09', '2016-12-17', 'Ruth Kim', '0027 Dunning Pass', null, 'Kuteynykove', null, null, 'Ukraine', 2.46, 'Cash', '2016-03-28', 'New') +,(4344, 217, 34, '2016-12-16', '2016-10-11', 'Shawn Patterson', '36 Little Fleur Circle', null, 'Xiekou', null, null, 'China', 6.43, 'Cash', '2016-03-27', 'New') +,(4345, 213, 59, '2016-10-30', '2016-07-10', 'Nancy Jones', '47088 Crowley Junction', null, 'Promna', null, '26-803', 'Poland', 5.67, 'Cash', '2016-12-02', 'Complete') +,(4346, 217, 70, '2016-12-27', '2016-10-06', 'Deborah Bishop', '1 Summer Ridge Circle', null, 'Bunobogu', null, null, 'Indonesia', 7.57, 'Cash', '2016-09-19', 'New') +,(4347, 203, 30, '2016-05-26', '2016-08-14', 'Steve Hunt', '4393 Summer Ridge Crossing', null, 'Hošťka', null, '348 06', 'Czech Republic', 5.78, 'Cash', '2016-12-30', 'Shipped') +,(4348, 203, 9 , '2016-04-14', '2016-10-19', 'Betty Black', '23 Nova Junction', null, 'Sępólno Krajeńskie', null, '89-400', 'Poland', 8.55, 'Cash', '2016-09-23', 'New') +,(4349, 211, 95, '2017-01-28', '2016-04-13', 'Gregory Wood', '96 Grasskamp Point', null, 'Psará', null, null, 'Greece', 8.47, 'Cash', '2016-12-18', 'Shipped') +,(4350, 218, 97, '2016-03-22', '2016-04-13', 'Martin Martinez', '5 Towne Crossing', null, 'Kista', 'Stockholm', '164 45', 'Sweden', 8.07, 'Check', '2016-05-15', 'On Hold') +,(4351, 215, 80, '2016-06-20', '2016-11-05', 'Margaret Cook', '82 Eggendart Junction', null, 'Omuthiya', null, null, 'India', 9.71, 'Cash', '2016-09-18', 'Shipped') +,(4352, 211, 15, '2016-09-02', '2017-01-23', 'Justin Myers', '6734 Continental Drive', null, 'Tadabliro', null, null, 'Indonesia', 2.23, 'Cash', '2016-05-12', 'New') +,(4353, 216, 77, '2016-10-09', '2016-07-31', 'Jane Ruiz', '2743 Harbort Center', null, 'Pasar', null, null, 'Indonesia', 4.88, 'Cash', '2016-06-04', 'New') +,(4354, 202, 53, '2017-03-15', '2016-06-21', 'Philip Bradley', '6 Bartillon Park', null, 'Aimorés', null, '35200-000', 'Brazil', 5.01, 'Cash', '2016-05-16', 'New') +,(4355, 220, 14, '2017-01-03', '2016-05-07', 'Phillip White', '1 Schurz Crossing', null, 'Tuzhai', null, null, 'China', 7.06, 'Check', '2016-10-18', 'New') +,(4356, 208, 85, '2016-12-26', '2016-07-28', 'George Ryan', '92 Morrow Road', null, 'Nijmegen', 'Provincie Gelderland', '6519', 'Netherlands', 5.76, 'Cash', '2016-12-14', 'New') +,(4357, 208, 73, '2016-04-06', '2016-04-01', 'Evelyn Rose', '134 Milwaukee Lane', null, 'Tiechang', null, null, 'China', 5.37, 'Cash', '2016-12-19', 'Shipped') +,(4358, 202, 77, '2016-04-14', '2016-10-21', 'Janet Robertson', '09309 Dottie Park', null, 'Ljubešćica', null, '42222', 'Canada', 5.27, 'Cash', '2016-06-07', 'On Hold') +,(4359, 202, 35, '2016-05-08', '2017-01-27', 'Diana Perry', '95535 Lotheville Center', null, 'Kvasice', null, '768 21', 'Czech Republic', 7.1, 'Card', '2016-07-27', 'New') +,(4360, 210, 86, '2016-11-23', '2016-10-12', 'Todd Elliott', '6737 Melrose Road', null, 'Catumbela', null, null, 'Netherlands', 2.19, 'Check', '2016-04-05', 'Shipped') +,(4361, 209, 45, '2016-04-07', '2016-06-30', 'Emily Dean', '143 Ridge Oak Alley', null, 'Diriá', null, null, 'United Kingdom', 1.33, 'Cash', '2016-12-31', 'Complete') +,(4362, 208, 88, '2016-05-08', '2016-04-14', 'Eric Simpson', '8113 Graceland Junction', null, 'Borovoy', null, '309135', 'Russia', 3.81, 'Card', '2016-06-21', 'Shipped') +,(4363, 211, 84, '2016-12-31', '2016-06-05', 'Alan Chapman', '461 Westport Center', null, 'Inayauan', null, '3336', 'Philippines', 8.62, 'Card', '2017-03-03', 'Complete') +,(4364, 205, 100,'2016-09-10', '2017-02-19', 'Denise Dixon', '066 Gerald Avenue', null, 'Venëv', null, '301320', 'Russia', 4.82, 'Check', '2016-04-22', 'Shipped') +,(4365, 211, 7 , '2017-03-09', '2017-03-16', 'Douglas Nelson', '03051 Grasskamp Way', null, 'Póvoa', 'Vila Real', '4870-130', 'Portugal', 1.67, 'Check', '2016-08-30', 'Complete') +,(4366, 213, 24, '2016-04-25', '2016-06-06', 'Louis Frazier', '65 Buhler Circle', null, 'Bīleh Savār', null, null, 'Iran', 9.53, 'Check', '2016-12-20', 'Complete') +,(4367, 207, 8 , '2016-09-24', '2016-04-06', 'Theresa Stanley', '487 Birchwood Point', null, 'T’et’ri Tsqaro', null, null, 'United Kingdom', 5.06, 'Cash', '2016-04-08', 'New') +,(4368, 207, 76, '2016-12-21', '2016-05-03', 'Sean Chapman', '3917 Miller Pass', null, 'Andaray', null, null, 'Peru', 4.36, 'Check', '2016-07-25', 'New') +,(4369, 215, 90, '2016-03-30', '2017-01-03', 'Eugene Brooks', '137 1st Hill', null, 'Independencia', 'Tamaulipas', '89888', 'Mexico', 9.56, 'Check', '2017-01-23', 'Shipped') +,(4370, 204, 33, '2016-12-17', '2016-10-22', 'Joan Martin', '24 Hayes Point', null, 'Dobrzeń Wielki', null, '46-081', 'Poland', 8.87, 'Cash', '2016-07-09', 'Shipped') +,(4371, 204, 13, '2016-12-11', '2016-05-07', 'Martha Mendoza', '0 Sommers Point', null, 'Jiamachi', null, null, 'China', 1.53, 'Check', '2016-08-05', 'On Hold') +,(4372, 211, 90, '2016-10-27', '2017-02-14', 'Joan Allen', '64 Bluestem Drive', null, 'Conde', 'Braga', '4815-019', 'Portugal', 2.66, 'Card', '2016-09-25', 'Shipped') +,(4373, 208, 81, '2016-08-20', '2017-03-16', 'Tammy Richards', '15541 Ramsey Alley', null, 'Gunungkendeng', null, null, 'Indonesia', 5.66, 'Cash', '2016-05-03', 'Shipped') +,(4374, 216, 19, '2017-01-22', '2016-09-10', 'Andrea Medina', '3 Goodland Pass', null, 'Ḩarīb', null, null, 'South Africa', 1.03, 'Card', '2016-10-12', 'Shipped') +,(4375, 213, 8 , '2016-09-13', '2016-12-21', 'Antonio Carpenter', '453 Duke Point', null, 'Rouen', 'Haute-Normandie', '76029 CEDEX', 'France', 5.11, 'Cash', '2017-01-26', 'Complete') +,(4376, 207, 83, '2016-11-29', '2016-04-13', 'Jeffrey Smith', '7 Old Shore Center', null, 'Licuan', null, '2500', 'Philippines', 8.55, 'Cash', '2016-11-08', 'New') +,(4377, 216, 13, '2016-11-06', '2016-10-08', 'Mark Perkins', '57 Troy Court', null, 'Mojimán', null, null, 'Canada', 2.03, 'Card', '2017-01-06', 'Shipped') +,(4378, 219, 4 , '2016-08-05', '2017-03-04', 'Louis Jordan', '5 Armistice Street', null, 'Labège', 'Midi-Pyrénées', '31673 CEDEX', 'France', 3.61, 'Cash', '2016-12-07', 'New') +,(4379, 218, 66, '2017-02-26', '2016-11-18', 'Fred Johnson', '4 Dovetail Crossing', null, 'Santa Cruz', null, null, 'India', 1.08, 'Cash', '2016-04-02', 'Complete') +,(4380, 201, 27, '2016-09-01', '2016-05-08', 'Rose Harvey', '8 Canary Plaza', null, 'Pingtan', null, null, 'China', 6.9, 'Check', '2016-12-09', 'Complete') +,(4381, 209, 89, '2017-02-04', '2016-08-30', 'Christine Thomas', '008 Carberry Alley', null, 'Logung', null, null, 'Indonesia', 6.13, 'Card', '2016-05-09', 'On Hold') +,(4382, 204, 47, '2016-08-11', '2016-12-27', 'Juan Reed', '4337 Del Sol Hill', null, 'Dayeuhluhur', null, null, 'Indonesia', 7.76, 'Card', '2016-06-15', 'New') +,(4383, 215, 30, '2016-08-07', '2016-07-22', 'Diane Gray', '899 Oneill Pass', null, 'Alegrete', null, '97540-000', 'Brazil', 5.62, 'Cash', '2016-12-26', 'Complete') +,(4384, 212, 88, '2016-07-23', '2016-05-07', 'Louise Baker', '46092 Kedzie Court', null, 'Ban Mo', null, '18130', 'Thailand', 4.0, 'Card', '2016-07-11', 'Complete') +,(4385, 203, 62, '2017-02-20', '2016-10-01', 'Paul Thompson', '77444 Northwestern Pass', null, 'Francisco I Madero', 'Coahuila De Zaragoza', '26010', 'Mexico', 3.99, 'Check', '2016-12-23', 'Shipped') +,(4386, 218, 26, '2016-09-02', '2016-06-10', 'Anne Kim', '67814 Buena Vista Court', null, 'Sanjie', null, null, 'China', 9.61, 'Card', '2016-04-05', 'New') +,(4387, 219, 20, '2017-03-05', '2016-12-19', 'Matthew Gutierrez', '33055 Evergreen Crossing', null, 'Cusco', null, null, 'Peru', 6.52, 'Check', '2017-02-17', 'Shipped') +,(4388, 219, 71, '2016-09-06', '2016-05-24', 'Janet Hernandez', '9243 Forest Run Parkway', null, 'Ulanov', null, null, 'Ukraine', 3.04, 'Cash', '2016-09-20', 'New') +,(4389, 207, 2 , '2016-04-25', '2017-02-16', 'Louis Chapman', '878 Roth Alley', null, 'Kusak', null, '423430', 'Russia', 5.78, 'Cash', '2017-02-18', 'On Hold') +,(4390, 218, 64, '2016-09-25', '2016-09-22', 'Joe Carpenter', '56 Artisan Park', null, 'Xinjiang', null, null, 'China', 8.2, 'Card', '2016-12-01', 'On Hold') +,(4391, 218, 64, '2016-07-30', '2016-07-23', 'Charles Harper', '7 Sutherland Road', null, 'Tatarbunary', null, null, 'Ukraine', 4.62, 'Cash', '2016-06-29', 'Shipped') +,(4392, 206, 92, '2016-05-05', '2016-07-17', 'Craig Reynolds', '3 Erie Park', null, 'East End', null, null, 'Canada', 2.03, 'Check', '2017-02-03', 'New') +,(4393, 212, 45, '2016-06-29', '2016-06-17', 'Raymond Mcdonald', '792 Brown Trail', null, 'Yangfang', null, null, 'China', 4.44, 'Card', '2017-02-27', 'Complete') +,(4394, 211, 87, '2016-09-28', '2016-04-03', 'Sandra Medina', '7 Eagan Circle', null, 'Baratleke', null, null, 'Indonesia', 4.34, 'Cash', '2017-01-05', 'Complete') +,(4395, 203, 57, '2016-08-18', '2017-03-05', 'Sean Carpenter', '33 Dottie Park', null, 'Sokal’', null, null, 'Ukraine', 5.39, 'Cash', '2017-02-22', 'On Hold') +,(4396, 203, 87, '2016-06-19', '2016-07-10', 'Alice Ferguson', '0399 Dixon Hill', null, 'Privolzhskiy', null, '413138', 'Russia', 8.74, 'Cash', '2016-12-23', 'New') +,(4397, 216, 61, '2016-08-01', '2016-12-25', 'Diana Nguyen', '5052 Rigney Junction', null, 'Guaynabo', 'Pr', '00971', 'Germany', 5.36, 'Check', '2016-07-12', 'On Hold') +,(4398, 211, 52, '2016-12-04', '2016-05-11', 'Earl Gutierrez', '32 Summit Avenue', null, 'Maqbanah', null, null, 'South Africa', 5.82, 'Cash', '2016-07-21', 'New') +,(4399, 208, 71, '2016-05-16', '2017-02-25', 'Gloria Gordon', '5 Prentice Trail', null, 'Xichang', null, null, 'China', 3.2, 'Card', '2016-05-24', 'Complete') +,(4400, 218, 7 , '2016-09-06', '2016-03-21', 'Robert Wheeler', '83 Logan Circle', null, 'Zhongshan', null, null, 'China', 9.15, 'Cash', '2016-08-16', 'Shipped') +,(4401, 210, 53, '2016-09-05', '2016-05-01', 'Walter Williamson', '8459 American Plaza', null, 'Santo Rosario', null, '3114', 'Philippines', 7.71, 'Check', '2017-01-25', 'New') +,(4402, 216, 92, '2016-10-10', '2016-03-28', 'Jonathan James', '164 Bonner Hill', null, 'Vale de Mendiz', 'Vila Real', '5085-105', 'Portugal', 2.96, 'Card', '2016-07-15', 'Shipped') +,(4403, 212, 12, '2016-09-15', '2016-11-11', 'Judy Williams', '207 Scofield Place', null, 'Lawa-an', null, '5706', 'Philippines', 9.68, 'Check', '2016-04-30', 'On Hold') +,(4404, 213, 83, '2016-04-25', '2016-05-14', 'Amy Olson', '84189 Schurz Circle', null, 'Ogoja', null, null, 'Netherlands', 5.18, 'Card', '2016-11-02', 'Complete') +,(4405, 209, 7 , '2016-12-01', '2016-08-30', 'Donna Vasquez', '82460 Ridgeway Hill', null, 'La Guacamaya', null, null, 'Canada', 5.32, 'Card', '2017-02-11', 'Complete') +,(4406, 209, 66, '2016-09-14', '2016-05-13', 'Susan Jacobs', '17 Morningstar Lane', null, 'Chedao', null, null, 'China', 4.12, 'Cash', '2016-11-11', 'New') +,(4407, 214, 57, '2016-05-04', '2016-06-03', 'Kathryn Burns', '116 Hollow Ridge Park', null, 'Comagascas', null, '1950', 'Philippines', 1.05, 'Cash', '2017-01-28', 'New') +,(4408, 201, 64, '2017-02-11', '2016-06-08', 'Doris Bennett', '090 Lien Place', null, 'Luotang', null, null, 'China', 1.35, 'Cash', '2016-12-16', 'Complete') +,(4409, 209, 41, '2017-02-28', '2016-09-05', 'Cynthia Robertson', '6 Eliot Center', null, 'Abu Dhabi', null, null, 'Denmark', 4.21, 'Check', '2017-01-01', 'New') +,(4410, 215, 24, '2016-08-28', '2016-10-30', 'Jonathan Parker', '0 Weeping Birch Hill', null, 'Cienfuegos', null, null, 'Denmark', 1.69, 'Card', '2017-01-21', 'Shipped') +,(4411, 206, 10, '2016-08-30', '2016-12-06', 'Bobby Foster', '8279 Ridgeview Place', null, 'Cruz Alta', null, '98000-000', 'Brazil', 7.5, 'Cash', '2016-09-09', 'On Hold') +,(4412, 205, 65, '2016-12-13', '2017-02-27', 'Phyllis Moore', '806 Acker Drive', null, 'Paoay', null, '2902', 'Philippines', 4.63, 'Cash', '2017-01-11', 'Shipped') +,(4413, 211, 2 , '2016-12-05', '2016-12-07', 'Kevin Gordon', '00875 Sherman Lane', null, 'Wansheng', null, null, 'China', 2.7, 'Card', '2016-07-31', 'New') +,(4414, 219, 25, '2017-02-08', '2016-06-22', 'Jack Mccoy', '2 Killdeer Center', null, 'Gresik', null, null, 'Indonesia', 4.1, 'Check', '2017-03-05', 'On Hold') +,(4415, 220, 9 , '2017-01-02', '2016-08-28', 'Margaret Fuller', '1960 Parkside Hill', null, 'Kafr Zaytā', null, null, 'India', 1.09, 'Cash', '2016-08-07', 'New') +,(4416, 214, 100,'2017-01-07', '2017-02-07', 'Melissa Nichols', '6 Lakewood Gardens Avenue', null, 'Stockholm', 'Stockholm', '113 90', 'Sweden', 4.1, 'Cash', '2016-03-31', 'On Hold') +,(4417, 210, 87, '2017-01-23', '2016-12-14', 'William Webb', '84 Mifflin Junction', null, 'Kanungu', null, null, 'South Africa', 4.38, 'Card', '2016-05-05', 'Complete') +,(4418, 213, 29, '2017-01-05', '2017-02-07', 'Anne Gonzales', '7 Myrtle Plaza', null, 'Davila', null, '2012', 'Philippines', 5.45, 'Cash', '2016-05-23', 'Shipped') +,(4419, 212, 94, '2016-10-19', '2016-12-20', 'Kathleen Graham', '22 Forest Run Hill', null, 'Mollepampa', null, null, 'Peru', 5.86, 'Check', '2016-07-31', 'Shipped') +,(4420, 201, 32, '2016-11-29', '2016-09-24', 'Diana Sanders', '8925 Kennedy Parkway', null, 'San Miguel de Tucumán', null, '4137', 'Argentina', 3.71, 'Cash', '2016-08-10', 'Complete') +,(4421, 208, 58, '2017-03-02', '2016-04-03', 'Willie Wright', '60 Old Shore Alley', null, 'Jinjiang', null, null, 'China', 6.72, 'Card', '2016-10-09', 'Shipped') +,(4422, 206, 59, '2016-04-19', '2016-12-29', 'Frank Evans', '785 Little Fleur Center', null, 'El Triunfo', null, null, 'Argentina', 9.43, 'Check', '2016-05-13', 'New') +,(4423, 209, 68, '2016-08-22', '2016-11-20', 'Phillip Carter', '6398 John Wall Center', null, 'Shouxihu', null, null, 'China', 4.22, 'Check', '2016-10-18', 'New') +,(4424, 205, 31, '2016-10-05', '2016-10-09', 'Lillian Gomez', '17560 Melrose Point', null, 'Milwaukee', 'Wisconsin', '53205', 'United States', 1.16, 'Check', '2016-04-17', 'On Hold') +,(4425, 202, 7 , '2016-07-24', '2017-02-22', 'John Ortiz', '45 Vera Place', null, 'Kiel', 'Schleswig-Holstein', '24109', 'Germany', 5.86, 'Cash', '2016-10-13', 'On Hold') +,(4426, 214, 80, '2016-10-04', '2016-09-01', 'Brandon Fields', '94792 Jackson Hill', null, 'San Juan', 'Pr', '00918', 'Germany', 2.54, 'Check', '2016-12-19', 'On Hold') +,(4427, 209, 23, '2016-06-23', '2016-04-29', 'Willie Hart', '20 Sloan Terrace', null, 'Mount Darwin', null, null, 'India', 3.71, 'Cash', '2016-09-22', 'Complete') +,(4428, 211, 7 , '2016-09-07', '2016-10-28', 'Walter Montgomery', '67285 Crowley Road', null, 'Wailolong', null, null, 'Indonesia', 9.79, 'Check', '2016-04-05', 'Complete') +,(4429, 217, 10, '2017-03-02', '2016-11-27', 'Sara Williamson', '72 Monterey Circle', null, 'Salvacion', null, '1114', 'Philippines', 3.33, 'Card', '2016-05-18', 'On Hold') +,(4430, 210, 12, '2017-02-18', '2016-03-17', 'Wayne Sanders', '21302 Valley Edge Pass', null, 'Balakasap', null, null, 'Indonesia', 2.18, 'Card', '2016-06-02', 'New') +,(4431, 220, 80, '2016-10-01', '2016-09-28', 'Cynthia Allen', '1 Karstens Avenue', null, 'Santo António das Areias', 'Portalegre', '7330-254', 'Portugal', 3.4, 'Cash', '2016-08-21', 'New') +,(4432, 211, 95, '2017-02-04', '2016-03-17', 'Jonathan Hughes', '93993 Fairview Junction', null, 'Buje', null, '52460', 'Canada', 5.19, 'Cash', '2016-10-01', 'New') +,(4433, 208, 67, '2017-02-11', '2016-06-01', 'Gerald Wright', '77811 Dennis Point', null, 'Hohoe', null, null, 'United Kingdom', 3.25, 'Card', '2016-07-15', 'New') +,(4434, 201, 53, '2016-12-25', '2017-01-07', 'Roy Anderson', '182 High Crossing Terrace', null, 'Bajiazi', null, null, 'China', 8.8, 'Card', '2017-02-11', 'Shipped') +,(4435, 207, 3 , '2016-05-30', '2016-04-07', 'Brenda Wright', '98 Kim Drive', null, 'Lillehammer', 'Oppland', '2605', 'Greece', 5.76, 'Cash', '2017-02-02', 'On Hold') +,(4436, 204, 29, '2016-07-19', '2016-07-05', 'Philip Price', '16 Brown Plaza', null, 'Čapljina', null, null, 'India', 9.62, 'Cash', '2016-11-05', 'On Hold') +,(4437, 210, 80, '2016-10-13', '2016-04-24', 'Michelle Webb', '4160 Everett Point', null, 'Waepana', null, null, 'Indonesia', 9.54, 'Cash', '2016-07-11', 'Complete') +,(4438, 209, 6 , '2016-12-31', '2017-01-27', 'Heather Fields', '10 Fairview Center', null, 'Złotniki Kujawskie', null, '88-180', 'Poland', 1.81, 'Cash', '2017-03-15', 'Shipped') +,(4439, 216, 53, '2017-02-01', '2016-09-12', 'Ryan Long', '0 Gateway Avenue', null, 'Pizhanka', null, '613380', 'Russia', 9.34, 'Cash', '2016-07-02', 'New') +,(4440, 211, 25, '2017-02-03', '2016-10-13', 'Joyce Stewart', '61 Burrows Street', null, 'Kushelevka', null, '658381', 'Russia', 6.4, 'Cash', '2017-01-29', 'On Hold') +,(4441, 215, 93, '2016-03-21', '2016-11-17', 'Walter Arnold', '97613 Pond Avenue', null, 'Looc', null, '5507', 'Philippines', 1.09, 'Cash', '2016-10-05', 'Shipped') +,(4442, 214, 10, '2016-05-10', '2016-05-31', 'Irene Simmons', '36 Larry Court', null, 'Rozhdestveno', null, '399768', 'Russia', 4.82, 'Check', '2017-01-13', 'Complete') +,(4443, 208, 19, '2017-02-09', '2017-02-05', 'Christina Mccoy', '1482 Rockefeller Point', null, 'Rybatskoye', null, '196851', 'Russia', 1.62, 'Cash', '2016-09-14', 'Shipped') +,(4444, 210, 98, '2017-02-15', '2016-05-17', 'Marie Fowler', '04 Prairie Rose Junction', null, 'Chicago', 'Illinois', '60604', 'United States', 7.47, 'Card', '2017-02-22', 'Complete') +,(4445, 218, 32, '2017-02-12', '2016-05-20', 'Louise Bell', '3 Charing Cross Pass', null, 'Selce', null, '1219', 'Denmark', 4.47, 'Cash', '2016-04-01', 'New') +,(4446, 209, 25, '2016-09-22', '2016-12-03', 'Barbara Black', '697 Oneill Drive', null, 'Shanghang', null, null, 'China', 4.66, 'Check', '2016-11-09', 'On Hold') +,(4447, 209, 100,'2016-08-26', '2017-01-16', 'James Holmes', '77 Marcy Court', null, 'Estreito', null, '65975-000', 'Brazil', 9.85, 'Check', '2016-12-04', 'On Hold') +,(4448, 210, 72, '2016-06-25', '2016-12-07', 'Kenneth Williams', '6400 Milwaukee Hill', null, 'Wanshan', null, null, 'China', 3.66, 'Card', '2016-06-09', 'On Hold') +,(4449, 213, 16, '2016-12-13', '2016-08-07', 'Joshua Jacobs', '8 Judy Park', null, 'Ágios Andréas', null, null, 'Greece', 3.81, 'Cash', '2016-07-07', 'Complete') +,(4450, 216, 100,'2016-12-21', '2017-02-13', 'Aaron Sanders', '1 Dakota Court', null, 'Huayllo', null, null, 'Peru', 7.59, 'Cash', '2016-04-22', 'On Hold') +,(4451, 211, 50, '2016-08-22', '2016-06-05', 'Eugene Scott', '03 Golden Leaf Point', null, 'Stírion', null, null, 'Greece', 8.99, 'Card', '2017-02-25', 'New') +,(4452, 220, 86, '2016-05-07', '2016-07-20', 'Cynthia Phillips', '820 Merchant Way', null, 'Mrongi Daja', null, null, 'Indonesia', 2.21, 'Check', '2016-04-27', 'On Hold') +,(4453, 213, 58, '2016-10-30', '2016-03-22', 'Martin Reed', '14 Meadow Vale Alley', null, 'Jiangdong', null, null, 'China', 3.58, 'Cash', '2017-02-12', 'Complete') +,(4454, 206, 98, '2016-05-14', '2016-11-07', 'Janet Porter', '74391 Ronald Regan Park', null, 'Lamakera Dua', null, null, 'Indonesia', 9.86, 'Check', '2016-06-12', 'New') +,(4455, 204, 2 , '2016-03-28', '2016-04-11', 'Amanda Duncan', '047 Jenna Road', null, 'Tungawan', null, '7018', 'Philippines', 2.04, 'Card', '2016-07-09', 'New') +,(4456, 211, 58, '2016-08-05', '2016-11-19', 'Joseph Henderson', '14 Morningstar Pass', null, 'Kolobolon', null, null, 'Indonesia', 6.44, 'Check', '2016-05-24', 'New') +,(4457, 215, 21, '2017-02-15', '2016-06-11', 'Cynthia Bishop', '066 Surrey Pass', null, 'Hưng Yên', null, null, 'Vietnam', 1.61, 'Check', '2016-07-05', 'Shipped') +,(4458, 211, 10, '2016-08-08', '2016-08-06', 'Craig Andrews', '7 Mariners Cove Court', null, 'Tuanchengshan', null, null, 'China', 8.4, 'Cash', '2016-12-15', 'New') +,(4459, 211, 71, '2016-05-13', '2017-02-19', 'Steve Warren', '6702 Delladonna Point', null, 'Pražmo', null, '739 04', 'Czech Republic', 8.29, 'Card', '2016-06-29', 'New') +,(4460, 214, 5 , '2016-12-21', '2016-06-21', 'Brenda Mills', '77934 Prairieview Way', null, 'Huafeng', null, null, 'China', 6.76, 'Cash', '2016-07-08', 'New') +,(4461, 212, 34, '2016-04-27', '2016-07-22', 'Randy Wright', '9 Thackeray Way', null, 'Dvůr Králové nad Labem', null, '544 01', 'Czech Republic', 9.45, 'Card', '2016-03-20', 'Shipped') +,(4462, 202, 47, '2016-10-31', '2016-06-30', 'Michelle Ramirez', '0152 Old Shore Road', null, 'Pulaupinang', null, null, 'Indonesia', 2.42, 'Card', '2016-09-05', 'New') +,(4463, 209, 86, '2016-07-30', '2016-04-29', 'Frank Duncan', '67 Buell Terrace', null, 'Krasne', null, null, 'Ukraine', 2.71, 'Card', '2016-06-22', 'Complete') +,(4464, 204, 62, '2017-03-01', '2017-03-11', 'Carlos Warren', '978 Merrick Circle', null, 'Penghua', null, null, 'China', 7.29, 'Cash', '2016-03-22', 'Shipped') +,(4465, 202, 87, '2016-06-23', '2016-11-15', 'Tina Gardner', '0 Mcguire Terrace', null, 'Cangqian', null, null, 'China', 2.17, 'Card', '2016-06-01', 'New') +,(4466, 220, 31, '2016-06-04', '2016-06-08', 'Stephen Turner', '17 Leroy Plaza', null, 'Pedaringan', null, null, 'Indonesia', 8.89, 'Check', '2016-05-09', 'Shipped') +,(4467, 210, 35, '2016-05-21', '2016-09-26', 'Melissa Wilson', '61199 Forest Center', null, 'Krmelín', null, '739 24', 'Czech Republic', 2.35, 'Card', '2016-06-20', 'On Hold') +,(4468, 216, 50, '2016-09-10', '2016-12-02', 'Billy Harper', '8940 Fisk Parkway', null, 'San Jose', 'California', '95113', 'United States', 3.98, 'Cash', '2016-10-04', 'Complete') +,(4469, 207, 22, '2016-06-03', '2016-11-06', 'Carl Davis', '5 Lindbergh Street', null, 'Taling Chan', null, '10170', 'Thailand', 4.71, 'Card', '2017-02-03', 'New') +,(4470, 211, 64, '2016-06-16', '2016-05-26', 'Gerald Henry', '2221 Porter Crossing', null, 'Mozdok', null, '363759', 'Russia', 9.57, 'Cash', '2016-10-11', 'Shipped') +,(4471, 206, 25, '2016-07-27', '2016-08-24', 'Debra Garza', '65379 Sunnyside Trail', null, 'Jiadingzhen', null, null, 'China', 1.06, 'Check', '2016-06-23', 'On Hold') +,(4472, 204, 18, '2016-08-30', '2016-10-09', 'Margaret Rodriguez', '3202 Marquette Point', null, 'Oranzherei', null, '416368', 'Russia', 3.35, 'Check', '2016-06-18', 'On Hold') +,(4473, 212, 88, '2016-10-29', '2016-05-25', 'William Burke', '46 Kingsford Center', null, 'San Juan', null, '11301', 'Denmark', 3.85, 'Check', '2017-02-12', 'Shipped') +,(4474, 217, 9 , '2017-02-19', '2016-05-29', 'Larry Myers', '731 Packers Point', null, 'Trelleborg', 'Skåne', '231 68', 'Sweden', 4.46, 'Card', '2016-06-19', 'New') +,(4475, 202, 40, '2016-11-03', '2016-04-25', 'Virginia Hall', '141 Rowland Way', null, 'Aoji-ri', null, null, 'Denmark', 7.58, 'Check', '2016-11-13', 'Shipped') +,(4476, 211, 16, '2017-03-07', '2016-10-14', 'Doris Berry', '60 Rusk Lane', null, 'Al Qamşīyah', null, null, 'India', 1.8, 'Check', '2016-03-19', 'On Hold') +,(4477, 210, 87, '2016-12-04', '2016-03-22', 'Juan Richards', '3830 Randy Parkway', null, 'Nakhon Nayok', null, '26120', 'Thailand', 1.22, 'Card', '2016-08-05', 'Complete') +,(4478, 203, 34, '2017-01-28', '2016-09-27', 'Kimberly Fox', '34957 Elka Way', null, 'Santiago', null, '97700-000', 'Brazil', 3.99, 'Check', '2016-07-06', 'On Hold') +,(4479, 219, 89, '2016-07-01', '2016-05-31', 'Ruby Ruiz', '90581 American Hill', null, 'Agudos', null, '17120-000', 'Brazil', 5.97, 'Cash', '2016-06-03', 'On Hold') +,(4480, 203, 53, '2016-10-17', '2016-11-07', 'Ruby Robinson', '385 Carioca Plaza', null, 'Kalangan', null, null, 'Indonesia', 8.71, 'Card', '2016-12-01', 'Complete') +,(4481, 207, 91, '2017-02-25', '2016-03-31', 'Victor Lopez', '170 Mariners Cove Circle', null, 'Bressuire', 'Poitou-Charentes', '79304 CEDEX', 'France', 8.59, 'Check', '2016-07-30', 'Complete') +,(4482, 215, 58, '2017-02-15', '2016-07-25', 'Kimberly Marshall', '647 Summerview Circle', null, 'Timahankrajan', null, null, 'Indonesia', 3.07, 'Check', '2016-04-21', 'On Hold') +,(4483, 207, 76, '2016-06-27', '2016-10-15', 'Pamela Matthews', '9379 Summit Trail', null, 'Brangsi', null, null, 'Indonesia', 1.35, 'Card', '2016-05-27', 'New') +,(4484, 210, 98, '2017-02-03', '2016-11-04', 'Randy Patterson', '6641 American Ash Point', null, 'Ivanec', null, '42240', 'Canada', 2.36, 'Card', '2016-10-31', 'Shipped') +,(4485, 205, 71, '2017-01-01', '2017-02-16', 'Carolyn Garza', '281 Raven Lane', null, 'Jingyang', null, null, 'China', 6.85, 'Check', '2016-04-27', 'Shipped') +,(4486, 202, 20, '2016-07-24', '2016-07-06', 'Ruth Perkins', '5656 Northview Lane', null, 'Burevestnik', null, '607612', 'Russia', 9.29, 'Cash', '2017-03-16', 'On Hold') +,(4487, 203, 49, '2017-02-20', '2017-01-12', 'Kelly Oliver', '249 Londonderry Pass', null, 'Grande Rivière du Nord', null, null, 'Canada', 7.65, 'Check', '2016-12-04', 'Shipped') +,(4488, 203, 67, '2016-11-09', '2016-07-19', 'Shirley Henry', '3045 Rowland Lane', null, 'Midlands', null, null, 'Germany', 5.35, 'Check', '2016-06-14', 'Complete') +,(4489, 209, 100,'2017-01-24', '2016-05-30', 'Marie Ferguson', '629 Crownhardt Junction', null, 'El Paso', 'Texas', '88546', 'United States', 5.18, 'Check', '2016-04-20', 'Shipped') +,(4490, 202, 87, '2016-06-27', '2016-09-05', 'Rachel Scott', '343 Schurz Road', null, 'Cabiguan', null, '1144', 'Philippines', 1.05, 'Cash', '2016-07-24', 'Shipped') +,(4491, 211, 93, '2017-01-16', '2016-09-29', 'Henry Fields', '26143 Del Sol Avenue', null, 'Huangduobu', null, null, 'China', 6.15, 'Card', '2016-06-02', 'Shipped') +,(4492, 217, 10, '2016-12-08', '2016-10-01', 'Harold Jones', '2 Oak Avenue', null, 'Surkhakhi', null, '386147', 'Russia', 9.96, 'Card', '2016-04-07', 'New') +,(4493, 217, 35, '2016-05-05', '2016-05-01', 'Walter Wright', '12 Paget Road', null, 'Siluman', null, null, 'Indonesia', 2.1, 'Cash', '2016-10-26', 'On Hold') +,(4494, 206, 51, '2017-02-25', '2016-10-24', 'Marilyn Hayes', '4 5th Way', null, 'Punkaharju', null, '58501', 'Finland', 3.57, 'Cash', '2016-06-22', 'New') +,(4495, 208, 3 , '2016-12-27', '2016-09-09', 'Sandra West', '0384 Bowman Center', null, 'Tagta', null, null, 'India', 6.45, 'Cash', '2016-08-25', 'New') +,(4496, 218, 41, '2017-01-10', '2016-12-11', 'Dennis Meyer', '4 Cambridge Alley', null, 'Cariamanga', null, null, 'Argentina', 5.33, 'Check', '2016-09-28', 'New') +,(4497, 216, 76, '2016-09-28', '2016-05-12', 'Frank Dean', '23227 Veith Park', null, 'Fengqiao', null, null, 'China', 6.72, 'Cash', '2016-04-12', 'Complete') +,(4498, 204, 3 , '2016-11-11', '2016-12-01', 'Amy Palmer', '7735 Maple Wood Road', null, 'Działoszyce', null, '28-440', 'Poland', 3.08, 'Card', '2016-09-07', 'Shipped') +,(4499, 211, 96, '2017-02-04', '2016-03-27', 'Emily Nelson', '3 Crownhardt Plaza', null, 'Oslob', null, '6025', 'Philippines', 6.41, 'Card', '2016-09-25', 'On Hold') +,(4500, 204, 7 , '2016-04-29', '2017-01-20', 'Randy Hanson', '687 Drewry Place', null, 'Barberena', null, '06002', 'Japan', 2.51, 'Card', '2016-12-12', 'Complete') +,(4501, 215, 92, '2017-02-27', '2016-09-26', 'Raymond Banks', '826 Mendota Pass', null, 'Chicago', 'Illinois', '60681', 'United States', 3.34, 'Card', '2016-10-30', 'Complete') +,(4502, 220, 24, '2016-10-01', '2016-09-26', 'Kimberly Robertson', '2643 Becker Trail', null, 'Columbus', 'United Kingdom', '31904', 'United States', 3.07, 'Check', '2016-04-27', 'Complete') +,(4503, 215, 52, '2017-02-25', '2016-08-08', 'Marilyn Miller', '1 Tennessee Park', null, 'Spokane', 'Washington', '99252', 'United States', 5.34, 'Check', '2016-08-16', 'On Hold') +,(4504, 220, 35, '2017-01-27', '2016-09-08', 'Marie Carpenter', '4575 Fair Oaks Hill', null, 'Richmond', 'Virginia', '23293', 'United States', 7.01, 'Cash', '2016-04-06', 'Shipped') +,(4505, 203, 10, '2016-06-24', '2017-02-22', 'Nicholas Wells', '823 Duke Center', null, 'Irvine', 'California', '92710', 'United States', 1.4, 'Check', '2016-06-17', 'On Hold') +,(4506, 207, 26, '2016-12-26', '2017-03-14', 'John Dean', '06 Spenser Place', null, 'Charleston', 'South Carolina', '29403', 'United States', 1.31, 'Cash', '2016-10-25', 'Shipped') +,(4507, 216, 28, '2016-08-22', '2016-12-13', 'Diana Spencer', '26 Ridgeway Plaza', null, 'Ogden', 'Utah', '84403', 'United States', 9.42, 'Cash', '2016-04-13', 'Shipped') +,(4508, 213, 90, '2016-08-31', '2017-01-13', 'Wanda Bowman', '862 Iowa Avenue', null, 'Kansas City', 'Kansas', '66160', 'United States', 7.1, 'Cash', '2016-10-19', 'Complete') +,(4509, 204, 93, '2016-07-07', '2016-05-31', 'Andrew Garrett', '27066 Gina Road', null, 'El Paso', 'Texas', '88558', 'United States', 6.88, 'Check', '2016-04-23', 'Complete') +,(4510, 202, 56, '2017-02-06', '2016-10-29', 'Juan Webb', '6233 South Junction', null, 'Lafayette', 'Louisiana', '70505', 'United States', 1.07, 'Cash', '2016-05-20', 'New') +,(4511, 219, 54, '2016-11-08', '2016-06-17', 'William Gardner', '5 Meadow Ridge Terrace', null, 'Tacoma', 'Washington', '98447', 'United States', 4.46, 'Check', '2016-05-25', 'Complete') +,(4512, 215, 4 , '2016-09-09', '2016-08-21', 'Fred Fernandez', '15 Ludington Junction', null, 'San Rafael', 'California', '94913', 'United States', 4.3, 'Cash', '2016-09-02', 'New') +,(4513, 206, 54, '2016-10-28', '2016-06-30', 'Ruth Ellis', '41196 Rieder Avenue', null, 'Baltimore', 'Maryland', '21211', 'United States', 8.39, 'Card', '2016-05-29', 'Complete') +,(4514, 215, 73, '2017-02-26', '2016-09-17', 'David Ferguson', '5813 Brown Parkway', null, 'Shawnee Mission', 'Kansas', '66286', 'United States', 2.71, 'Card', '2016-04-18', 'Shipped') +,(4515, 216, 23, '2016-11-08', '2016-06-27', 'Susan Freeman', '0 Bashford Parkway', null, 'Tucson', 'Arizona', '85720', 'United States', 5.5, 'Check', '2017-02-01', 'Shipped') +,(4516, 212, 9 , '2016-04-30', '2016-12-31', 'Alan Hunt', '193 Declaration Plaza', null, 'Louisville', 'Kentucky', '40256', 'United States', 9.74, 'Cash', '2017-01-20', 'On Hold') +,(4517, 202, 46, '2017-02-01', '2016-07-22', 'Phillip Romero', '1860 Thompson Crossing', null, 'Biloxi', 'Mississippi', '39534', 'United States', 3.02, 'Card', '2016-11-04', 'Complete') +,(4518, 203, 75, '2016-09-07', '2016-11-14', 'George Diaz', '6 Mcguire Center', null, 'Mesa', 'Arizona', '85210', 'United States', 7.84, 'Check', '2016-06-21', 'Shipped') +,(4519, 217, 68, '2016-10-07', '2016-08-15', 'Virginia King', '7405 High Crossing Alley', null, 'Sioux City', 'Iowa', '51105', 'United States', 4.03, 'Check', '2016-05-09', 'Complete') +,(4520, 216, 6 , '2017-02-18', '2017-02-17', 'Brenda Ruiz', '224 Badeau Street', null, 'Corpus Christi', 'Texas', '78426', 'United States', 9.11, 'Check', '2016-11-13', 'New') +,(4521, 201, 84, '2016-09-17', '2016-06-15', 'Debra Brown', '94 Morningstar Center', null, 'San Francisco', 'California', '94177', 'United States', 6.59, 'Check', '2017-03-10', 'Shipped') +,(4522, 205, 89, '2016-10-22', '2017-03-13', 'Emily Henry', '79 Manufacturers Center', null, 'Los Angeles', 'California', '90020', 'United States', 4.11, 'Cash', '2016-10-27', 'Complete') +,(4523, 211, 67, '2016-04-17', '2017-02-12', 'Aaron Peterson', '504 Schlimgen Terrace', null, 'Bethesda', 'Maryland', '20892', 'United States', 5.42, 'Card', '2016-08-25', 'Shipped') +,(4524, 215, 83, '2016-08-22', '2016-07-31', 'Janice Burke', '3 Mcbride Lane', null, 'Washington', 'District of Columbia', '20073', 'United States', 3.76, 'Card', '2016-08-09', 'Shipped') +,(4525, 217, 100,'2016-03-31', '2016-12-09', 'Debra Kelley', '18155 Northview Plaza', null, 'Detroit', 'Michigan', '48267', 'United States', 2.26, 'Cash', '2016-12-29', 'On Hold') +,(4526, 214, 32, '2016-11-24', '2016-03-28', 'Donald Sims', '86 Michigan Avenue', null, 'Brooklyn', 'New York', '11231', 'United States', 5.05, 'Check', '2016-08-07', 'Shipped') +,(4527, 205, 100,'2016-05-13', '2016-06-17', 'Daniel Mason', '4 Hanover Road', null, 'Reno', 'Nevada', '89595', 'United States', 4.81, 'Check', '2016-10-22', 'Shipped') +,(4528, 201, 32, '2016-11-15', '2016-11-16', 'Howard Knight', '5 Weeping Birch Alley', null, 'Jacksonville', 'Florida', '32225', 'United States', 5.99, 'Check', '2016-11-07', 'New') +,(4529, 213, 99, '2016-12-02', '2016-07-09', 'Virginia Hughes', '629 Manufacturers Point', null, 'Syracuse', 'New York', '13224', 'United States', 5.6, 'Card', '2016-12-02', 'Complete') +,(4530, 219, 18, '2016-12-07', '2017-02-07', 'Carl Graham', '90 Heffernan Pass', null, 'Saint Petersburg', 'Florida', '33737', 'United States', 9.35, 'Check', '2016-10-18', 'Complete') +,(4531, 201, 57, '2016-12-26', '2016-12-29', 'Joan Murray', '38 Bellgrove Crossing', null, 'Tacoma', 'Washington', '98447', 'United States', 6.69, 'Card', '2016-12-05', 'On Hold') +,(4532, 202, 58, '2016-04-02', '2016-07-01', 'Robert Williams', '09407 Northfield Circle', null, 'Cedar Rapids', 'Iowa', '52410', 'United States', 6.56, 'Card', '2016-04-16', 'On Hold') +,(4533, 218, 36, '2017-02-07', '2016-05-05', 'Ryan Black', '57199 Hoffman Place', null, 'Jacksonville', 'Florida', '32204', 'United States', 8.54, 'Check', '2017-01-24', 'Shipped') +,(4534, 208, 92, '2016-07-09', '2016-06-20', 'Brenda Hunter', '16179 Ludington Court', null, 'Birmingham', 'Alabama', '35263', 'United States', 9.82, 'Cash', '2016-09-30', 'New') +,(4535, 214, 70, '2016-08-04', '2016-06-29', 'Anne Warren', '08161 Barnett Parkway', null, 'Van Nuys', 'California', '91411', 'United States', 7.04, 'Cash', '2017-02-24', 'Complete') +,(4536, 213, 99, '2017-01-11', '2017-01-21', 'Betty Snyder', '9 Badeau Court', null, 'Davenport', 'Iowa', '52804', 'United States', 8.72, 'Card', '2016-09-03', 'Shipped') +,(4537, 217, 76, '2016-07-31', '2017-02-13', 'Edward Wilson', '1031 Esch Drive', null, 'Fresno', 'California', '93750', 'United States', 1.64, 'Check', '2016-04-21', 'On Hold') +,(4538, 210, 60, '2016-06-22', '2016-04-10', 'Terry Butler', '124 Hoepker Pass', null, 'San Antonio', 'Texas', '78255', 'United States', 2.35, 'Check', '2017-01-31', 'Complete') +,(4539, 220, 5 , '2016-11-12', '2016-04-25', 'Emily Hawkins', '990 Quincy Drive', null, 'Richmond', 'Virginia', '23289', 'United States', 4.36, 'Card', '2016-09-17', 'Complete') +,(4540, 213, 42, '2017-02-28', '2017-02-11', 'Cynthia Rose', '8881 Packers Trail', null, 'Berkeley', 'California', '94712', 'United States', 6.09, 'Check', '2016-04-14', 'New') +,(4541, 204, 27, '2016-09-30', '2017-01-28', 'Lisa Turner', '83 Graedel Terrace', null, 'Oakland', 'California', '94611', 'United States', 9.61, 'Card', '2016-05-07', 'Shipped') +,(4542, 219, 26, '2016-07-13', '2016-03-23', 'Jason Price', '475 Meadow Valley Point', null, 'Annapolis', 'Maryland', '21405', 'United States', 2.93, 'Check', '2016-06-10', 'New') +,(4543, 202, 63, '2016-07-29', '2016-05-20', 'Joan Hayes', '7 Upham Center', null, 'Temple', 'Texas', '76505', 'United States', 7.39, 'Card', '2016-09-20', 'Complete') +,(4544, 212, 97, '2016-10-31', '2017-01-16', 'Paula Torres', '443 Debs Terrace', null, 'Racine', 'Wisconsin', '53405', 'United States', 3.93, 'Card', '2016-07-07', 'Shipped') +,(4545, 201, 33, '2017-03-08', '2016-08-21', 'Theresa Watkins', '85395 Rusk Center', null, 'Jackson', 'Mississippi', '39210', 'United States', 5.32, 'Card', '2016-11-19', 'Complete') +,(4546, 211, 68, '2016-05-25', '2016-07-17', 'Clarence Nguyen', '155 Northport Road', null, 'Greensboro', 'North Carolina', '27455', 'United States', 7.06, 'Cash', '2016-08-24', 'Shipped') +,(4547, 203, 73, '2016-05-03', '2016-10-23', 'Jean Mason', '03 Eagle Crest Lane', null, 'Colorado Springs', 'Colorado', '80935', 'United States', 4.2, 'Cash', '2016-04-07', 'New') +,(4548, 217, 2 , '2016-05-20', '2016-08-07', 'Nicole Brown', '364 Debra Lane', null, 'Washington', 'District of Columbia', '20046', 'United States', 7.97, 'Cash', '2016-04-30', 'New') +,(4549, 220, 89, '2016-04-11', '2016-12-11', 'Carol Chapman', '756 Muir Point', null, 'Washington', 'District of Columbia', '20397', 'United States', 2.21, 'Card', '2017-02-05', 'Shipped') +,(4550, 211, 13, '2016-04-16', '2016-08-03', 'Roy George', '8 Anhalt Terrace', null, 'Indianapolis', 'Indiana', '46207', 'United States', 4.5, 'Check', '2017-03-06', 'New') +,(4551, 219, 37, '2016-04-14', '2017-03-01', 'Heather Bishop', '0901 Tennessee Street', null, 'Kingsport', 'Tennessee', '37665', 'United States', 1.92, 'Card', '2017-01-02', 'Shipped') +,(4552, 218, 94, '2017-03-05', '2016-06-01', 'Wayne Mason', '90645 Carberry Drive', null, 'Madison', 'Wisconsin', '53716', 'United States', 6.96, 'Card', '2016-12-31', 'Complete') +,(4553, 212, 37, '2016-10-16', '2016-10-13', 'Gloria Elliott', '100 Granby Junction', null, 'Miami', 'Florida', '33153', 'United States', 9.25, 'Cash', '2016-06-09', 'Shipped') +,(4554, 217, 4 , '2016-06-05', '2016-07-26', 'Timothy Hayes', '6001 Elgar Circle', null, 'Pensacola', 'Florida', '32575', 'United States', 6.5, 'Cash', '2016-03-30', 'Complete') +,(4555, 207, 49, '2016-08-19', '2016-08-15', 'Judith Baker', '3436 Briar Crest Park', null, 'Newark', 'New Jersey', '07188', 'United States', 2.33, 'Check', '2016-09-17', 'Complete') +,(4556, 217, 17, '2016-11-18', '2016-12-10', 'Roy Russell', '6401 Graedel Court', null, 'Alexandria', 'Virginia', '22301', 'United States', 3.24, 'Check', '2016-04-08', 'Complete') +,(4557, 216, 35, '2016-09-11', '2016-05-07', 'Jacqueline Davis', '864 Cherokee Lane', null, 'Columbus', 'Ohio', '43226', 'United States', 4.7, 'Card', '2016-08-06', 'Shipped') +,(4558, 211, 20, '2016-10-06', '2016-07-15', 'Eugene Castillo', '03090 Northland Circle', null, 'Salt Lake City', 'Utah', '84199', 'United States', 9.36, 'Card', '2016-10-06', 'Complete') +,(4559, 216, 13, '2017-01-13', '2016-03-28', 'Janice Mills', '522 Holmberg Alley', null, 'Scottsdale', 'Arizona', '85271', 'United States', 7.31, 'Cash', '2016-05-15', 'On Hold') +,(4560, 211, 77, '2016-08-24', '2017-03-13', 'Ruby White', '0070 Corben Way', null, 'Naples', 'Florida', '34114', 'United States', 3.71, 'Check', '2016-07-17', 'On Hold') +,(4561, 219, 55, '2016-08-13', '2016-11-19', 'Frank Jackson', '25 Rigney Point', null, 'Washington', 'District of Columbia', '20420', 'United States', 1.94, 'Cash', '2016-06-12', 'Shipped') +,(4562, 207, 96, '2016-10-12', '2016-12-04', 'Pamela Peterson', '830 Loftsgordon Junction', null, 'Houston', 'Texas', '77281', 'United States', 1.45, 'Check', '2017-03-06', 'New') +,(4563, 204, 70, '2016-07-23', '2017-02-06', 'Martha Frazier', '3 Gerald Lane', null, 'Scottsdale', 'Arizona', '85260', 'United States', 2.74, 'Cash', '2017-01-19', 'New') +,(4564, 204, 59, '2017-02-26', '2016-10-23', 'Kenneth Hawkins', '27305 Maple Crossing', null, 'San Diego', 'California', '92145', 'United States', 9.41, 'Cash', '2017-02-09', 'On Hold') +,(4565, 203, 66, '2016-08-06', '2017-02-03', 'Barbara Collins', '8 Norway Maple Junction', null, 'Fort Worth', 'Texas', '76198', 'United States', 1.08, 'Card', '2016-06-24', 'New') +,(4566, 217, 83, '2016-09-14', '2016-03-29', 'Gary Ellis', '97 Nobel Avenue', null, 'Alexandria', 'Louisiana', '71307', 'United States', 5.05, 'Card', '2016-06-13', 'Shipped') +,(4567, 214, 63, '2017-03-04', '2016-11-05', 'Douglas Hughes', '98309 Mccormick Park', null, 'Kansas City', 'Kansas', '66160', 'United States', 1.4, 'Card', '2017-02-13', 'Shipped') +,(4568, 208, 12, '2016-10-31', '2017-02-27', 'Harold Flores', '1 Merchant Lane', null, 'Duluth', 'United Kingdom', '30096', 'United States', 4.84, 'Check', '2016-04-30', 'On Hold') +,(4569, 201, 96, '2016-08-20', '2016-10-03', 'Marie Nguyen', '084 Stuart Hill', null, 'Arlington', 'Texas', '76004', 'United States', 5.95, 'Cash', '2016-04-25', 'On Hold') +,(4570, 203, 1 , '2016-10-13', '2016-03-21', 'Judy Fowler', '7541 Golf Course Way', null, 'Kansas City', 'Missouri', '64109', 'United States', 8.02, 'Check', '2016-05-05', 'New') +,(4571, 219, 49, '2016-11-04', '2016-09-02', 'Howard Rogers', '5 Scott Hill', null, 'Brooklyn', 'New York', '11215', 'United States', 5.21, 'Cash', '2016-10-28', 'Complete') +,(4572, 215, 5 , '2016-03-24', '2016-08-31', 'Stephanie Martinez', '0022 Reinke Trail', null, 'Baton Rouge', 'Louisiana', '70894', 'United States', 7.74, 'Card', '2016-08-14', 'On Hold') +,(4573, 206, 61, '2016-08-31', '2016-07-10', 'Jacqueline Lane', '780 Elka Place', null, 'Cleveland', 'Ohio', '44105', 'United States', 9.12, 'Check', '2016-11-30', 'On Hold') +,(4574, 220, 65, '2016-06-26', '2016-06-25', 'Betty Harrison', '23089 Kensington Junction', null, 'Greensboro', 'North Carolina', '27404', 'United States', 5.63, 'Check', '2016-03-30', 'Complete') +,(4575, 212, 81, '2016-04-28', '2016-10-19', 'Robin Bradley', '7895 Weeping Birch Plaza', null, 'Waterbury', 'Connecticut', '06721', 'United States', 7.34, 'Cash', '2017-01-25', 'On Hold') +,(4576, 216, 13, '2017-02-24', '2016-07-18', 'Ralph Bailey', '4019 Harper Park', null, 'Sacramento', 'California', '94291', 'United States', 6.77, 'Cash', '2017-02-02', 'New') +,(4577, 203, 43, '2016-09-24', '2016-11-18', 'Melissa Ross', '775 Lyons Road', null, 'Bridgeport', 'Connecticut', '06606', 'United States', 1.64, 'Check', '2016-07-23', 'Shipped') +,(4578, 212, 53, '2016-07-05', '2016-06-19', 'Joan Russell', '0 Kings Terrace', null, 'Bloomington', 'Illinois', '61709', 'United States', 4.66, 'Card', '2016-04-09', 'New') +,(4579, 214, 17, '2016-10-01', '2016-10-18', 'Benjamin George', '40131 Ronald Regan Road', null, 'Washington', 'District of Columbia', '20525', 'United States', 8.04, 'Check', '2016-06-16', 'Complete') +,(4580, 207, 69, '2016-04-19', '2017-02-09', 'Katherine Stone', '37483 Melrose Parkway', null, 'Fresno', 'California', '93794', 'United States', 6.7, 'Check', '2017-02-08', 'Complete') +,(4581, 218, 28, '2017-03-04', '2016-11-25', 'Ernest Cruz', '872 Nancy Street', null, 'Pompano Beach', 'Florida', '33069', 'United States', 5.81, 'Cash', '2016-04-21', 'On Hold') +,(4582, 217, 32, '2017-03-16', '2016-06-08', 'Joshua Edwards', '72309 Elmside Point', null, 'San Francisco', 'California', '94110', 'United States', 2.49, 'Cash', '2016-04-01', 'On Hold') +,(4583, 219, 83, '2017-01-24', '2016-07-25', 'Justin Mills', '88350 Wayridge Hill', null, 'Charleston', 'West Virginia', '25326', 'United States', 6.03, 'Card', '2016-10-07', 'New') +,(4584, 208, 45, '2016-10-18', '2016-05-13', 'Kathleen Gibson', '25 Carpenter Lane', null, 'Reno', 'Nevada', '89505', 'United States', 5.41, 'Check', '2016-08-21', 'Shipped') +,(4585, 216, 71, '2016-09-19', '2016-10-15', 'Ruby Bennett', '1 Muir Pass', null, 'Las Vegas', 'Nevada', '89135', 'United States', 2.5, 'Cash', '2016-11-29', 'On Hold') +,(4586, 214, 48, '2016-08-07', '2016-08-12', 'Richard Robinson', '1125 Melvin Terrace', null, 'Bethesda', 'Maryland', '20816', 'United States', 4.02, 'Card', '2017-01-09', 'Complete') +,(4587, 212, 62, '2016-12-17', '2017-01-23', 'Debra Sanchez', '534 Stoughton Lane', null, 'Johnstown', 'Pennsylvania', '15906', 'United States', 8.78, 'Cash', '2016-08-07', 'Shipped') +,(4588, 216, 30, '2016-10-24', '2016-12-21', 'Willie Dean', '680 Northview Circle', null, 'Huntington', 'West Virginia', '25775', 'United States', 8.43, 'Card', '2017-03-12', 'New') +,(4589, 210, 10, '2017-01-01', '2016-09-22', 'Christina Kelley', '8706 Sundown Street', null, 'Peoria', 'Illinois', '61635', 'United States', 4.24, 'Cash', '2017-02-08', 'On Hold') +,(4590, 205, 6 , '2016-11-29', '2017-02-23', 'Russell Montgomery', '977 Packers Drive', null, 'Charlotte', 'North Carolina', '28247', 'United States', 2.87, 'Cash', '2016-05-30', 'Complete') +,(4591, 206, 15, '2016-03-28', '2017-02-23', 'Edward Cunningham', '283 Bultman Way', null, 'Jacksonville', 'Florida', '32277', 'United States', 6.55, 'Check', '2017-03-10', 'Shipped') +,(4592, 209, 82, '2016-12-20', '2016-09-07', 'Michael Chavez', '00 Oak Avenue', null, 'Young America', 'Minnesota', '55551', 'United States', 8.22, 'Check', '2016-04-19', 'On Hold') +,(4593, 204, 24, '2017-03-13', '2016-08-30', 'David White', '506 Nevada Circle', null, 'Portland', 'Maine', '04109', 'United States', 1.11, 'Card', '2017-01-13', 'On Hold') +,(4594, 206, 27, '2016-09-13', '2017-03-12', 'Cheryl Vasquez', '9070 Di Loreto Court', null, 'Van Nuys', 'California', '91499', 'United States', 7.42, 'Card', '2017-02-25', 'On Hold') +,(4595, 211, 94, '2016-07-03', '2016-05-08', 'Charles Garrett', '1337 Hooker Trail', null, 'Honolulu', 'Hawaii', '96810', 'United States', 9.57, 'Check', '2016-10-04', 'Shipped') +,(4596, 216, 56, '2016-07-08', '2017-02-28', 'Michelle Butler', '1 Magdeline Lane', null, 'Orlando', 'Florida', '32813', 'United States', 7.05, 'Check', '2016-07-12', 'New') +,(4597, 217, 26, '2016-09-24', '2016-10-05', 'Howard Reyes', '3677 Donald Alley', null, 'Carol Stream', 'Illinois', '60351', 'United States', 7.62, 'Cash', '2017-02-08', 'Complete') +,(4598, 212, 76, '2016-04-13', '2016-08-10', 'Eugene Kelly', '838 Becker Plaza', null, 'Laredo', 'Texas', '78044', 'United States', 4.9, 'Check', '2016-10-23', 'New') +,(4599, 208, 29, '2016-04-16', '2016-05-15', 'Jimmy Mcdonald', '0 Dayton Place', null, 'Rochester', 'New York', '14646', 'United States', 1.56, 'Check', '2017-01-14', 'Complete') +,(4600, 208, 2 , '2016-04-26', '2016-04-06', 'Stephen Jacobs', '7131 Scoville Terrace', null, 'Phoenix', 'Arizona', '85020', 'United States', 4.52, 'Cash', '2017-01-22', 'On Hold'); + + + + +/* Order details */ +insert into order_items (order_id, product_id, quantity, unit_price, discount, order_item_status, date_allocated) values + (4001, 608, 1 , 97.34, 8.73, 'Allocated', '2017-01-15') +,(4001, 611, 2 , 58.46, 4.36, 'No Stock' , '2016-09-21') +,(4001, 616, 2 , 58.46, 4.36, 'No Stock' , '2016-09-21') +,(4001, 613, 2 , 58.46, 4.36, 'No Stock' , '2016-09-21') +,(4001, 615, 2 , 58.46, 4.36, 'No Stock' , '2016-09-21') +,(4002, 604, 3 , 88.97, 2.86, 'On Order' , '2016-12-15') +,(4002, 610, 4 , 37.19, 8.65, 'Allocated', '2016-10-12') +,(4002, 615, 4 , 37.19, 8.65, 'Allocated', '2016-10-12') +,(4003, 609, 8 , 92.87, 4.01, 'No Stock' , '2016-06-15') +,(4003, 612, 7 , 87.15, 3.54, 'No Stock' , '2017-02-09') +,(4004, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4004, 620, 2 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4004, 611, 4 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4004, 612, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4005, 618, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4005, 619, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4005, 620, 2 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4006, 617, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4006, 618, 2 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4006, 607, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4007, 617, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4007, 610, 2 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4007, 612, 5 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4008, 612, 1 , 57.2 , 8.94, 'Allocated', '2017-01-13') +,(4008, 615, 3 , 57.2 , 8.94, 'Allocated', '2017-01-13') +,(4008, 611, 1 , 57.2 , 8.94, 'Allocated', '2017-01-13') +,(4009, 605, 6 , 62.16, 5.68, 'No Stock' , '2017-02-13') +,(4009, 610, 6 , 19.31, 5.0 , 'No Stock' , '2016-09-16') +,(4009, 615, 9 , 51.21, 4.48, 'Allocated', '2016-10-18') +,(4010, 601, 1 , 32.18, 9.41, 'On Order' , '2016-03-17') +,(4010, 602, 1 , 31.35, 7.18, 'No Stock' , '2016-12-30') +,(4010, 603, 10, 24.24, 2.76, 'Allocated', '2016-07-05') +,(4010, 610, 6 , 9.09 , 3.02, 'On Order' , '2016-07-17') +,(4011, 604, 10, 58.25, 9.3 , 'No Stock' , '2016-04-04') +,(4011, 606, 5 , 73.34, 1.76, 'Allocated', '2016-06-30') +,(4011, 608, 3 , 95.07, 4.6 , 'On Order' , '2016-06-04') +,(4011, 615, 9 , 20.84, 3.93, 'Allocated', '2016-06-10') +,(4012, 604, 5 , 19.82, 9.97, 'No Stock' , '2016-09-21') +,(4012, 601, 3 , 19.82, 9.97, 'No Stock' , '2016-09-21') +,(4012, 610, 3 , 19.82, 9.97, 'No Stock' , '2016-09-21') +,(4013, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4013, 604, 2 , 19.82, 9.97, 'No Stock' , '2016-09-21') +,(4013, 606, 5 , 19.82, 9.97, 'No Stock' , '2016-09-21') +,(4014, 601, 3 , 37.57, 4.99, 'Allocated', '2016-08-21') +,(4015, 611, 8 , 95.27, 6.62, 'Allocated', '2017-03-13') +,(4015, 612, 2 , 89.63, 4.14, 'Allocated', '2016-04-07') +,(4015, 615, 8 , 69.03, 1.11, 'On Order' , '2016-08-15') +,(4016, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4016, 611, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4016, 612, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4017, 605, 6 , 75.88, 2.1 , 'On Order' , '2017-02-15') +,(4017, 610, 4 , 26.43, 7.18, 'On Order' , '2016-04-30') +,(4017, 619, 6 , 77.91, 9.26, 'No Stock' , '2016-04-02') +,(4018, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4019, 615, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4020, 614, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4021, 604, 3 , 20.14, 8.54, 'No Stock' , '2016-06-26') +,(4022, 614, 7 , 41.61, 4.62, 'On Order' , '2016-09-09') +,(4022, 619, 1 , 10.45, 2.56, 'On Order' , '2016-10-18') +,(4023, 607, 6 , 7.68 , 5.59, 'On Order' , '2016-11-15') +,(4023, 611, 7 , 89.4 , 1.71, 'No Stock' , '2016-04-03') +,(4024, 613, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4024, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4024, 608, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4024, 609, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4025, 612, 6 , 81.24, 3.52, 'Allocated', '2016-04-25') +,(4025, 614, 4 , 14.07, 2.58, 'On Order' , '2016-09-11') +,(4026, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4026, 618, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4027, 611, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4027, 612, 3 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4027, 613, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4028, 605, 5 , 95.04, 7.82, 'On Order' , '2016-07-24') +,(4028, 615, 8 , 74.56, 1.78, 'Allocated', '2016-12-09') +,(4029, 604, 1 , 11.06, 5.37, 'On Order' , '2016-11-26') +,(4029, 603, 1 , 11.06, 5.37, 'On Order' , '2016-11-26') +,(4029, 607, 1 , 11.06, 5.37, 'On Order' , '2016-11-26') +,(4030, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4030, 620, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4030, 619, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4031, 605, 7 , 75.42, 2.92, 'No Stock' , '2017-02-12') +,(4031, 608, 7 , 75.42, 2.92, 'No Stock' , '2017-02-12') +,(4031, 609, 7 , 75.42, 2.92, 'No Stock' , '2017-02-12') +,(4031, 615, 7 , 75.42, 2.92, 'No Stock' , '2017-02-12') +,(4032, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4032, 612, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4032, 611, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4032, 619, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4033, 615, 4 , 45.55, 6.19, 'Allocated', '2016-05-09') +,(4033, 609, 3 , 45.55, 6.19, 'Allocated', '2016-05-09') +,(4033, 620, 1 , 45.55, 6.19, 'Allocated', '2016-05-09') +,(4034, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4034, 620, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4034, 609, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4035, 613, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4035, 614, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4035, 619, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4036, 604, 1 , 46.63, 4.25, 'No Stock' , '2016-05-04') +,(4036, 605, 6 , 66.75, 9.97, 'Allocated', '2017-02-25') +,(4037, 615, 2 , 44.76, 7.22, 'On Order' , '2017-03-01') +,(4037, 612, 2 , 44.76, 7.22, 'On Order' , '2017-03-01') +,(4038, 602, 2 , 13.25, 7.66, 'On Order' , '2016-07-13') +,(4038, 620, 3 , 13.25, 7.66, 'On Order' , '2016-07-13') +,(4039, 609, 1 , 99.68, 6.09, 'No Stock' , '2016-07-24') +,(4039, 619, 3 , 99.68, 6.09, 'No Stock' , '2016-07-24') +,(4039, 620, 1 , 99.68, 6.09, 'No Stock' , '2016-07-24') +,(4040, 612, 2 , 79.64, 6.72, 'Allocated', '2016-04-24') +,(4040, 620, 2 , 79.64, 6.72, 'Allocated', '2016-04-24') +,(4041, 615, 9 , 42.79, 8.92, 'No Stock' , '2016-03-31') +,(4041, 612, 2 , 42.79, 8.92, 'No Stock' , '2016-03-31') +,(4041, 620, 1 , 42.79, 8.92, 'No Stock' , '2016-03-31') +,(4042, 617, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4042, 613, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4042, 620, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4043, 611, 7 , 87.95, 8.57, 'No Stock' , '2016-06-18') +,(4043, 619, 3 , 87.95, 8.57, 'No Stock' , '2016-06-18') +,(4043, 620, 1 , 87.95, 8.57, 'No Stock' , '2016-06-18') +,(4044, 602, 8 , 47.3 , 3.26, 'On Order' , '2016-11-05') +,(4044, 612, 3 , 79.42, 6.56, 'On Order' , '2017-02-11') +,(4045, 603, 3 , 31.01, 7.2 , 'No Stock' , '2016-11-11') +,(4045, 604, 10, 43.54, 6.8 , 'Allocated', '2016-11-13') +,(4045, 608, 7 , 15.2 , 3.58, 'Allocated', '2017-01-18') +,(4046, 611, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4047, 619, 2 , 81.11, 8.77, 'No Stock' , '2016-06-17') +,(4047, 620, 8 , 1.54 , 6.85, 'No Stock' , '2016-05-05') +,(4048, 605, 7 , 13.52, 2.44, 'On Order' , '2016-07-06') +,(4049, 603, 7 , 40.99, 5.77, 'Allocated', '2017-02-22') +,(4049, 609, 10, 90.45, 2.75, 'Allocated', '2017-01-26') +,(4049, 612, 10, 24.28, 9.85, 'No Stock' , '2016-10-01') +,(4050, 606, 4 , 27.84, 1.49, 'No Stock' , '2016-12-18') +,(4050, 607, 2 , 72.72, 3.08, 'On Order' , '2016-04-24') +,(4050, 612, 2 , 76.85, 5.15, 'No Stock' , '2017-02-25') +,(4051, 603, 1 , 57.6 , 1.77, 'Allocated', '2016-07-02') +,(4052, 605, 9 , 50.74, 6.47, 'No Stock' , '2016-05-22') +,(4053, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4054, 601, 10, 55.48, 9.19, 'On Order' , '2016-07-12') +,(4055, 606, 10, 57.17, 3.06, 'No Stock' , '2016-11-20') +,(4056, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4057, 609, 1 , 79.3 , 9.42, 'On Order' , '2016-10-01') +,(4057, 610, 5 , 41.21, 5.55, 'No Stock' , '2016-07-20') +,(4057, 618, 3 , 68.99, 6.42, 'On Order' , '2016-08-19') +,(4058, 604, 6 , 36.78, 6.96, 'Allocated', '2016-05-20') +,(4058, 619, 6 , 79.01, 4.3 , 'Allocated', '2016-06-19') +,(4059, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4060, 603, 10, 40.38, 2.1 , 'On Order' , '2017-02-05') +,(4060, 604, 9 , 41.98, 1.46, 'Allocated', '2017-01-17') +,(4061, 605, 1 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4061, 602, 1 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4061, 603, 1 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4062, 604, 1 , 71.77, 4.91, 'No Stock' , '2016-11-20') +,(4062, 605, 2 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4062, 607, 1 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4063, 608, 1 , 62.85, 4.62, 'Allocated', '2016-03-25') +,(4063, 605, 4 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4063, 607, 1 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4064, 615, 1 , 68.27, 6.79, 'No Stock' , '2016-07-06') +,(4064, 602, 2 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4064, 603, 5 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4064, 605, 1 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4065, 610, 5 , 99.76, 1.78, 'Allocated', '2016-09-23') +,(4066, 605, 1 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4066, 604, 9 , 2.63 , 7.42, 'Allocated', '2016-08-12') +,(4066, 615, 7 , 25.14, 7.22, 'No Stock' , '2016-03-27') +,(4067, 618, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4068, 602, 4 , 12.67, 5.17, 'Allocated', '2016-08-30') +,(4068, 603, 1 , 87.81, 1.02, 'On Order' , '2016-10-12') +,(4069, 620, 7 , 89.85, 3.49, 'Allocated', '2017-02-22') +,(4070, 615, 5 , 94.08, 4.09, 'On Order' , '2017-01-31') +,(4071, 616, 1, 10.00, 1.00, 'Allocated', '2016-12-14') +,(4072, 601, 3 , 89.95, 9.61, 'No Stock' , '2016-11-25') +,(4072, 612, 5 , 34.51, 5.99, 'No Stock' , '2016-05-25') +,(4073, 613, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4074, 606, 10, 98.2 , 3.63, 'On Order' , '2016-04-30') +,(4075, 605, 8 , 69.36, 9.16, 'On Order' , '2016-07-19') +,(4075, 606, 1 , 3.95 , 8.66, 'On Order' , '2016-04-09') +,(4076, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4077, 602, 10, 90.58, 5.92, 'No Stock' , '2016-06-23') +,(4077, 609, 1 , 8.25 , 3.74, 'No Stock' , '2016-12-07') +,(4077, 615, 9 , 86.2 , 4.5 , 'Allocated', '2017-03-10') +,(4078, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4078, 612, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4078, 618, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4079, 615, 7 , 1.95 , 1.76, 'On Order' , '2017-03-04') +,(4079, 613, 2 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4079, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4080, 608, 5 , 26.84, 9.03, 'On Order' , '2016-11-13') +,(4080, 609, 3 , 41.76, 4.08, 'Allocated', '2016-09-10') +,(4081, 604, 9 , 5.49 , 8.45, 'On Order' , '2016-10-21') +,(4082, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4083, 602, 1 , 44.85, 5.16, 'No Stock' , '2016-09-16') +,(4084, 604, 4 , 58.27, 4.09, 'Allocated', '2016-08-12') +,(4085, 605, 8 , 93.54, 7.49, 'On Order' , '2016-11-24') +,(4086, 615, 2 , 94.02, 1.63, 'No Stock' , '2016-09-01') +,(4087, 601, 2 , 79.39, 3.86, 'No Stock' , '2016-07-13') +,(4088, 615, 3 , 14.03, 3.74, 'Allocated', '2016-11-15') +,(4089, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4090, 611, 4 , 46.11, 1.53, 'No Stock' , '2016-07-25') +,(4091, 613, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4092, 602, 5 , 42.68, 7.92, 'On Order' , '2016-09-09') +,(4093, 615, 8 , 75.27, 5.92, 'No Stock' , '2016-07-09') +,(4094, 605, 7 , 91.05, 4.52, 'On Order' , '2017-02-21') +,(4095, 602, 6 , 58.5 , 9.62, 'On Order' , '2017-02-26') +,(4095, 604, 3 , 80.13, 4.11, 'No Stock' , '2016-12-01') +,(4095, 608, 1 , 23.96, 5.54, 'No Stock' , '2016-03-27') +,(4096, 601, 4 , 9.84 , 5.33, 'No Stock' , '2016-04-18') +,(4097, 605, 4 , 45.03, 5.61, 'On Order' , '2016-05-13') +,(4097, 606, 3 , 41.39, 3.59, 'On Order' , '2016-11-29') +,(4098, 607, 8 , 11.86, 2.74, 'No Stock' , '2016-11-23') +,(4099, 606, 2 , 54.09, 5.84, 'On Order' , '2016-10-08') +,(4100, 608, 3 , 6.62 , 1.25, 'Allocated', '2016-11-16') +,(4101, 617, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4102, 608, 1 , 2.54 , 9.62, 'On Order' , '2016-10-01') +,(4102, 609, 9 , 92.56, 5.98, 'On Order' , '2016-10-14') +,(4102, 610, 10, 26.81, 5.9 , 'On Order' , '2016-08-20') +,(4103, 606, 6 , 71.32, 9.88, 'No Stock' , '2016-09-10') +,(4103, 608, 1 , 73.91, 9.79, 'No Stock' , '2016-12-26') +,(4104, 603, 9 , 33.85, 4.08, 'Allocated', '2017-03-02') +,(4105, 601, 5 , 49.17, 1.99, 'On Order' , '2016-11-11') +,(4105, 606, 9 , 93.8 , 4.48, 'Allocated', '2017-01-06') +,(4106, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4107, 603, 2 , 24.95, 3.71, 'On Order' , '2016-07-20') +,(4107, 604, 5 , 43.75, 1.39, 'No Stock' , '2017-01-03') +,(4107, 608, 1 , 49.09, 8.72, 'Allocated', '2016-12-19') +,(4107, 616, 8 , 26.78, 1.21, 'On Order' , '2016-09-23') +,(4108, 604, 8 , 36.89, 3.04, 'On Order' , '2017-01-01') +,(4108, 619, 1 , 6.43 , 6.66, 'Allocated', '2016-05-03') +,(4109, 604, 9 , 89.19, 9.43, 'No Stock' , '2016-10-21') +,(4109, 609, 2 , 3.71 , 9.12, 'No Stock' , '2016-10-23') +,(4110, 605, 3 , 61.65, 7.86, 'On Order' , '2016-08-05') +,(4110, 606, 2 , 63.62, 7.4 , 'Allocated', '2016-06-07') +,(4111, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4111, 612, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4111, 613, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4112, 607, 5 , 63.7 , 9.44, 'On Order' , '2017-01-01') +,(4112, 610, 1 , 22.54, 8.3 , 'On Order' , '2016-04-09') +,(4113, 604, 6 , 86.01, 4.4 , 'Allocated', '2017-01-05') +,(4113, 611, 5 , 39.64, 4.58, 'Allocated', '2017-02-26') +,(4113, 615, 3 , 22.49, 3.61, 'Allocated', '2016-08-24') +,(4113, 619, 6 , 7.6 , 6.63, 'On Order' , '2016-05-01') +,(4114, 610, 6 , 3.77 , 4.79, 'Allocated', '2017-01-18') +,(4114, 608, 2 , 3.77 , 4.79, 'Allocated', '2017-01-18') +,(4114, 609, 3 , 3.77 , 4.79, 'Allocated', '2017-01-18') +,(4115, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4115, 620, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4116, 610, 5 , 54.21, 9.53, 'On Order' , '2016-05-11') +,(4116, 620, 3 , 54.21, 9.53, 'On Order' , '2016-05-11') +,(4116, 615, 1 , 54.21, 9.53, 'On Order' , '2016-05-11') +,(4117, 603, 7 , 91.81, 4.35, 'On Order' , '2016-04-18') +,(4117, 610, 9 , 79.15, 6.8 , 'Allocated', '2017-02-09') +,(4118, 611, 8 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4118, 615, 3 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4118, 612, 1 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4119, 611, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4119, 615, 8 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4119, 612, 4 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4120, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4120, 612, 2 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4120, 611, 8 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4121, 602, 3 , 7.09 , 6.48, 'No Stock' , '2016-06-03') +,(4121, 612, 2 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4121, 611, 1 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4122, 606, 5 , 44.99, 1.66, 'No Stock' , '2016-05-08') +,(4122, 611, 2 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4122, 612, 6 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4123, 607, 10, 4.78 , 1.32, 'Allocated', '2016-12-28') +,(4124, 604, 1 , 18.79, 6.75, 'On Order' , '2017-01-05') +,(4125, 605, 9 , 59.37, 1.61, 'On Order' , '2016-07-24') +,(4125, 608, 1 , 72.49, 2.72, 'On Order' , '2016-08-22') +,(4126, 610, 10, 13.83, 1.15, 'On Order' , '2016-09-29') +,(4126, 615, 10, 71.77, 9.08, 'No Stock' , '2017-02-24') +,(4127, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4128, 605, 6 , 94.61, 7.16, 'No Stock' , '2017-02-09') +,(4128, 616, 3 , 4.67 , 2.72, 'On Order' , '2016-04-06') +,(4129, 610, 5 , 73.89, 8.17, 'On Order' , '2016-04-30') +,(4130, 608, 6 , 47.42, 8.39, 'No Stock' , '2017-02-27') +,(4131, 602, 5 , 28.62, 6.07, 'No Stock' , '2016-03-21') +,(4132, 602, 7 , 38.86, 3.58, 'Allocated', '2016-06-21') +,(4132, 604, 4 , 89.39, 2.36, 'No Stock' , '2016-12-20') +,(4132, 605, 5 , 29.97, 9.78, 'No Stock' , '2016-08-03') +,(4133, 611, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4133, 613, 2 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4133, 615, 4 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4134, 606, 1 , 73.57, 3.21, 'Allocated', '2016-04-07') +,(4134, 608, 1 , 65.61, 8.68, 'On Order' , '2017-01-14') +,(4135, 603, 2 , 7.24 , 2.61, 'Allocated', '2017-01-02') +,(4135, 607, 6 , 15.99, 6.23, 'No Stock' , '2016-12-16') +,(4135, 609, 6 , 26.55, 2.9 , 'On Order' , '2016-11-25') +,(4135, 612, 8 , 17.99, 9.59, 'No Stock' , '2016-03-25') +,(4136, 606, 10, 16.82, 8.15, 'On Order' , '2016-06-22') +,(4137, 605, 2 , 39.96, 6.08, 'On Order' , '2016-05-22') +,(4138, 620, 6 , 4.6 , 3.68, 'Allocated', '2016-09-17') +,(4139, 601, 4 , 87.74, 7.37, 'No Stock' , '2016-11-25') +,(4140, 603, 10, 90.31, 6.8 , 'On Order' , '2016-05-23') +,(4140, 615, 8 , 82.86, 2.49, 'On Order' , '2016-12-24') +,(4141, 609, 7 , 20.28, 1.51, 'Allocated', '2017-02-10') +,(4142, 608, 7 , 55.47, 8.32, 'No Stock' , '2016-07-07') +,(4142, 619, 5 , 75.63, 1.64, 'Allocated', '2016-08-02') +,(4143, 606, 3 , 99.61, 4.9 , 'No Stock' , '2016-10-25') +,(4144, 604, 6 , 80.75, 3.9 , 'Allocated', '2016-09-09') +,(4145, 603, 3 , 57.97, 8.04, 'On Order' , '2016-06-17') +,(4146, 611, 8 , 69.7 , 6.14, 'On Order' , '2016-04-15') +,(4147, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4148, 602, 4 , 67.89, 1.73, 'Allocated', '2016-03-26') +,(4149, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4150, 615, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4151, 617, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4151, 618, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4152, 608, 10, 97.82, 9.97, 'No Stock' , '2016-07-11') +,(4152, 620, 10, 97.82, 9.97, 'No Stock' , '2016-07-11') +,(4153, 615, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4153, 618, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4153, 601, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4153, 613, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4154, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4154, 604, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4155, 606, 7 , 42.62, 2.57, 'No Stock' , '2017-02-11') +,(4155, 607, 2 , 83.04, 5.25, 'On Order' , '2016-09-01') +,(4155, 610, 6 , 90.56, 6.31, 'On Order' , '2016-10-18') +,(4156, 615, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4156, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4156, 601, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4157, 603, 9 , 93.09, 5.35, 'Allocated', '2016-08-03') +,(4157, 607, 6 , 40.05, 3.9 , 'On Order' , '2017-01-13') +,(4158, 612, 1 , 17.5 , 6.29, 'Allocated', '2016-04-14') +,(4158, 611, 1 , 17.5 , 6.29, 'Allocated', '2016-04-14') +,(4159, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4159, 612, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4160, 610, 8 , 42.67, 5.88, 'No Stock' , '2017-01-04') +,(4160, 620, 10, 87.78, 4.28, 'Allocated', '2016-11-20') +,(4161, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4161, 611, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4162, 613, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4162, 620, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4163, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4163, 612, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4163, 611, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4164, 607, 6 , 80.56, 4.32, 'On Order' , '2016-08-17') +,(4164, 608, 6 , 80.56, 4.32, 'On Order' , '2016-08-17') +,(4164, 617, 6 , 80.56, 4.32, 'On Order' , '2016-08-17') +,(4165, 604, 8 , 72.67, 7.56, 'On Order' , '2016-08-09') +,(4165, 603, 8 , 72.67, 7.56, 'On Order' , '2016-08-09') +,(4165, 614, 8 , 72.67, 7.56, 'On Order' , '2016-08-09') +,(4166, 601, 3 , 34.36, 9.92, 'No Stock' , '2016-09-01') +,(4166, 602, 10, 33.99, 5.76, 'Allocated', '2016-05-26') +,(4167, 603, 5 , 58.2 , 1.14, 'Allocated', '2016-06-20') +,(4167, 608, 1 , 20.01, 6.24, 'No Stock' , '2017-01-05') +,(4168, 601, 1 , 59.45, 7.44, 'On Order' , '2016-09-06') +,(4168, 605, 1 , 59.45, 7.44, 'On Order' , '2016-09-06') +,(4169, 604, 2 , 93.43, 2.26, 'No Stock' , '2017-01-16') +,(4169, 609, 2 , 93.43, 2.26, 'No Stock' , '2017-01-16') +,(4169, 607, 2 , 93.43, 2.26, 'No Stock' , '2017-01-16') +,(4170, 607, 10, 68.27, 9.02, 'No Stock' , '2017-02-11') +,(4170, 620, 10, 68.27, 9.02, 'No Stock' , '2017-02-11') +,(4171, 610, 10, 49.38, 3.71, 'Allocated', '2016-04-25') +,(4171, 601, 10, 49.38, 3.71, 'Allocated', '2016-04-25') +,(4171, 611, 10, 49.38, 3.71, 'Allocated', '2016-04-25') +,(4171, 613, 10, 49.38, 3.71, 'Allocated', '2016-04-25') +,(4171, 615, 10, 49.38, 3.71, 'Allocated', '2016-04-25') +,(4172, 606, 6 , 88.26, 2.95, 'No Stock' , '2016-04-11') +,(4172, 609, 7 , 60.97, 1.12, 'Allocated', '2016-10-14') +,(4173, 601, 10, 11.22, 9.03, 'On Order' , '2017-01-26') +,(4173, 603, 10, 11.22, 9.03, 'On Order' , '2017-01-26') +,(4173, 605, 10, 11.22, 9.03, 'On Order' , '2017-01-26') +,(4174, 607, 8 , 53.95, 6.31, 'No Stock' , '2016-04-30') +,(4174, 612, 2 , 13.56, 7.15, 'No Stock' , '2016-07-08') +,(4175, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4175, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4175, 620, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4176, 615, 2 , 70.24, 1.09, 'Allocated', '2017-01-21') +,(4176, 616, 2 , 70.24, 1.09, 'Allocated', '2017-01-21') +,(4177, 601, 2 , 17.86, 2.99, 'Allocated', '2016-05-07') +,(4177, 604, 8 , 18.39, 6.73, 'On Order' , '2016-04-05') +,(4178, 605, 9 , 23.59, 8.82, 'Allocated', '2016-09-11') +,(4178, 607, 9 , 62.59, 7.88, 'No Stock' , '2016-04-18') +,(4179, 614, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4180, 602, 7 , 48.19, 6.05, 'Allocated', '2016-11-30') +,(4180, 603, 1 , 48.19, 6.05, 'Allocated', '2016-11-30') +,(4181, 602, 2 , 64.2 , 4.74, 'Allocated', '2016-08-16') +,(4181, 603, 3 , 41.45, 2.49, 'Allocated', '2016-04-18') +,(4181, 604, 5 , 86.42, 6.42, 'No Stock' , '2016-05-03') +,(4182, 611, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4183, 615, 1 , 68.34, 8.16, 'On Order' , '2016-12-22') +,(4184, 601, 2 , 95.18, 2.74, 'Allocated', '2016-09-16') +,(4184, 603, 9 , 99.41, 9.44, 'No Stock' , '2016-07-01') +,(4184, 604, 1 , 29.52, 3.48, 'Allocated', '2016-04-02') +,(4185, 602, 2 , 22.84, 5.5 , 'On Order' , '2016-10-20') +,(4185, 611, 10, 34.57, 4.27, 'Allocated', '2017-02-05') +,(4185, 612, 4 , 85.32, 5.03, 'Allocated', '2017-03-14') +,(4185, 619, 9 , 64.97, 1.57, 'No Stock' , '2016-10-19') +,(4186, 605, 2 , 80.08, 7.63, 'On Order' , '2017-01-31') +,(4187, 602, 9 , 87.92, 7.74, 'On Order' , '2016-11-13') +,(4187, 616, 3 , 73.39, 6.52, 'On Order' , '2016-09-15') +,(4188, 604, 8 , 30.36, 1.97, 'No Stock' , '2016-06-05') +,(4188, 605, 5 , 70.95, 6.11, 'On Order' , '2016-03-31') +,(4188, 611, 3 , 23.18, 8.76, 'On Order' , '2016-03-30') +,(4189, 608, 4 , 52.23, 3.08, 'No Stock' , '2016-04-12') +,(4190, 602, 10, 17.3 , 4.18, 'No Stock' , '2016-03-29') +,(4190, 615, 6 , 34.29, 9.45, 'Allocated', '2016-11-01') +,(4191, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4192, 602, 4 , 90.29, 5.09, 'Allocated', '2017-02-14') +,(4192, 605, 8 , 1.03 , 1.28, 'On Order' , '2017-02-14') +,(4192, 615, 1 , 11.61, 7.49, 'No Stock' , '2016-08-11') +,(4193, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4194, 618, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4195, 617, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4196, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4197, 608, 10, 60.36, 3.99, 'On Order' , '2016-10-30') +,(4198, 606, 1 , 58.71, 2.32, 'No Stock' , '2016-06-26') +,(4199, 602, 8 , 12.59, 9.45, 'Allocated', '2016-04-16') +,(4199, 603, 7 , 5.5 , 2.26, 'No Stock' , '2016-11-28') +,(4200, 605, 10, 92.81, 1.0 , 'No Stock' , '2017-03-07') +,(4201, 606, 3 , 46.48, 5.94, 'Allocated', '2016-12-15') +,(4201, 608, 2 , 97.29, 5.87, 'No Stock' , '2016-09-12') +,(4202, 609, 4 , 56.7 , 2.07, 'No Stock' , '2017-03-11') +,(4202, 608, 4 , 56.7 , 2.07, 'No Stock' , '2017-03-11') +,(4203, 610, 2 , 29.12, 6.46, 'No Stock' , '2016-10-27') +,(4203, 609, 4 , 56.7 , 2.07, 'No Stock' , '2017-03-11') +,(4204, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4204, 609, 4 , 56.7 , 2.07, 'No Stock' , '2017-03-11') +,(4205, 610, 4 , 78.23, 5.95, 'No Stock' , '2016-06-21') +,(4205, 609, 4 , 56.7 , 2.07, 'No Stock' , '2017-03-11') +,(4206, 603, 2 , 40.49, 6.94, 'On Order' , '2017-02-23') +,(4206, 619, 6 , 80.19, 3.28, 'No Stock' , '2017-01-21') +,(4207, 604, 9 , 84.48, 7.01, 'No Stock' , '2016-08-17') +,(4207, 605, 9 , 41.79, 1.55, 'On Order' , '2016-06-27') +,(4207, 610, 5 , 12.3 , 9.51, 'On Order' , '2016-05-17') +,(4208, 603, 7 , 37.26, 3.68, 'Allocated', '2016-03-30') +,(4208, 605, 5 , 82.65, 2.76, 'On Order' , '2016-12-11') +,(4208, 607, 1 , 84.88, 8.67, 'No Stock' , '2016-04-28') +,(4208, 609, 1 , 88.01, 1.98, 'Allocated', '2016-10-04') +,(4208, 610, 6 , 88.85, 4.2 , 'No Stock' , '2016-04-19') +,(4209, 606, 6 , 46.31, 8.98, 'Allocated', '2016-04-20') +,(4210, 603, 2 , 92.12, 8.78, 'No Stock' , '2016-12-11') +,(4210, 609, 7 , 70.37, 6.89, 'Allocated', '2016-06-23') +,(4211, 614, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4212, 613, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4213, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4214, 608, 3 , 37.43, 5.18, 'Allocated', '2016-05-15') +,(4214, 610, 9 , 35.48, 7.16, 'On Order' , '2017-02-13') +,(4214, 611, 7 , 84.99, 8.17, 'No Stock' , '2016-07-08') +,(4215, 610, 5 , 4.35 , 2.65, 'Allocated', '2016-07-24') +,(4216, 606, 3 , 79.91, 8.92, 'Allocated', '2016-05-02') +,(4216, 608, 8 , 45.75, 3.7 , 'Allocated', '2017-02-24') +,(4216, 615, 1 , 55.11, 8.94, 'No Stock' , '2016-05-06') +,(4217, 605, 5 , 40.67, 3.31, 'On Order' , '2016-11-09') +,(4217, 610, 5 , 20.0 , 8.58, 'On Order' , '2016-07-27') +,(4218, 615, 7 , 34.14, 8.03, 'Allocated', '2016-11-12') +,(4218, 619, 9 , 62.61, 5.74, 'On Order' , '2016-11-08') +,(4219, 604, 9 , 46.24, 2.42, 'No Stock' , '2016-10-31') +,(4219, 613, 7 , 26.63, 3.9 , 'No Stock' , '2016-12-04') +,(4219, 619, 1 , 98.58, 7.38, 'No Stock' , '2016-08-06') +,(4220, 604, 5 , 66.78, 9.28, 'No Stock' , '2016-10-09') +,(4220, 609, 6 , 62.82, 9.71, 'No Stock' , '2016-04-06') +,(4221, 602, 8 , 8.44 , 1.85, 'Allocated', '2016-11-25') +,(4222, 601, 10, 84.14, 2.59, 'No Stock' , '2016-06-25') +,(4222, 604, 9 , 39.15, 8.12, 'No Stock' , '2016-09-27') +,(4223, 602, 2 , 74.35, 9.94, 'Allocated', '2016-04-18') +,(4223, 611, 4 , 58.85, 6.75, 'No Stock' , '2017-03-04') +,(4224, 618, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4225, 605, 7 , 88.08, 8.69, 'On Order' , '2016-11-13') +,(4226, 606, 1 , 84.22, 3.54, 'On Order' , '2017-01-19') +,(4226, 608, 4 , 97.1 , 4.73, 'On Order' , '2016-04-25') +,(4227, 606, 9 , 74.37, 1.85, 'On Order' , '2016-12-19') +,(4227, 607, 9 , 74.37, 1.85, 'On Order' , '2016-12-19') +,(4228, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4228, 618, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4228, 610, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4229, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4229, 618, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4230, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4230, 618, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4230, 619, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4231, 611, 6 , 36.05, 2.56, 'On Order' , '2017-02-12') +,(4231, 618, 6 , 36.05, 2.56, 'On Order' , '2017-02-12') +,(4232, 615, 8 , 16.99, 7.26, 'No Stock' , '2016-11-28') +,(4232, 618, 8 , 16.99, 7.26, 'No Stock' , '2016-11-28') +,(4233, 608, 6 , 70.71, 1.75, 'Allocated', '2016-09-29') +,(4233, 610, 6 , 70.71, 1.75, 'Allocated', '2016-09-29') +,(4233, 618, 6 , 70.71, 1.75, 'Allocated', '2016-09-29') +,(4234, 604, 5 , 15.26, 9.54, 'No Stock' , '2016-04-06') +,(4234, 619, 5 , 15.26, 9.54, 'No Stock' , '2016-04-06') +,(4235, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4235, 619, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4236, 607, 8 , 46.97, 4.9 , 'Allocated', '2017-02-16') +,(4236, 617, 8 , 46.97, 4.9 , 'Allocated', '2017-02-16') +,(4236, 620, 8 , 46.97, 4.9 , 'Allocated', '2017-02-16') +,(4237, 602, 1 , 27.79, 8.84, 'No Stock' , '2016-11-07') +,(4237, 620, 1 , 27.79, 8.84, 'No Stock' , '2016-11-07') +,(4238, 602, 3 , 32.5 , 2.63, 'No Stock' , '2016-04-09') +,(4238, 608, 8 , 88.3 , 7.59, 'On Order' , '2016-08-18') +,(4239, 606, 7 , 99.65, 2.31, 'Allocated', '2017-03-04') +,(4239, 616, 7 , 99.65, 2.31, 'Allocated', '2017-03-04') +,(4240, 606, 10, 43.66, 2.48, 'No Stock' , '2017-02-05') +,(4240, 609, 2 , 56.95, 2.11, 'No Stock' , '2016-11-15') +,(4241, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4241, 618, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4241, 620, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4242, 605, 6 , 52.37, 8.56, 'No Stock' , '2016-06-10') +,(4242, 606, 6 , 52.37, 8.56, 'No Stock' , '2016-06-10') +,(4242, 607, 6 , 52.37, 8.56, 'No Stock' , '2016-06-10') +,(4243, 604, 2 , 6.33 , 1.16, 'No Stock' , '2016-04-09') +,(4243, 614, 2 , 6.33 , 1.16, 'No Stock' , '2016-04-09') +,(4243, 610, 2 , 6.33 , 1.16, 'No Stock' , '2016-04-09') +,(4244, 609, 4 , 67.62, 7.49, 'On Order' , '2016-09-03') +,(4244, 619, 4 , 67.62, 7.49, 'On Order' , '2016-09-03') +,(4244, 620, 4 , 67.62, 7.49, 'On Order' , '2016-09-03') +,(4245, 608, 1 , 32.47, 9.9 , 'Allocated', '2017-03-14') +,(4245, 618, 1 , 32.47, 9.9 , 'Allocated', '2017-03-14') +,(4245, 620, 1 , 32.47, 9.9 , 'Allocated', '2017-03-14') +,(4246, 603, 10, 53.94, 3.85, 'No Stock' , '2016-06-04') +,(4246, 606, 7 , 6.16 , 9.37, 'No Stock' , '2016-07-05') +,(4246, 607, 3 , 27.34, 1.97, 'Allocated', '2016-11-15') +,(4246, 611, 4 , 73.06, 1.26, 'No Stock' , '2017-02-28') +,(4247, 601, 4 , 66.41, 4.54, 'On Order' , '2017-02-26') +,(4247, 605, 2 , 61.24, 5.9 , 'Allocated', '2016-12-15') +,(4248, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4248, 620, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4249, 615, 2 , 74.52, 3.88, 'On Order' , '2016-06-09') +,(4249, 620, 2 , 74.52, 3.88, 'On Order' , '2016-06-09') +,(4249, 609, 2 , 74.52, 3.88, 'On Order' , '2016-06-09') +,(4250, 606, 7 , 63.89, 3.39, 'On Order' , '2016-12-31') +,(4250, 612, 8 , 75.06, 4.19, 'Allocated', '2016-06-26') +,(4251, 602, 1 , 1.75 , 1.73, 'No Stock' , '2016-12-07') +,(4251, 604, 8 , 43.98, 1.58, 'Allocated', '2016-07-28') +,(4252, 606, 4 , 94.24, 1.31, 'No Stock' , '2017-03-14') +,(4252, 619, 10, 41.46, 4.18, 'No Stock' , '2017-03-03') +,(4252, 620, 3 , 29.91, 4.91, 'On Order' , '2016-12-28') +,(4253, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4253, 610, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4254, 610, 3 , 5.01 , 9.93, 'On Order' , '2017-02-03') +,(4254, 620, 2 , 5.01 , 9.93, 'On Order' , '2017-02-03') +,(4254, 612, 3 , 5.01 , 9.93, 'On Order' , '2017-02-03') +,(4255, 610, 7 , 45.49, 8.0 , 'Allocated', '2016-08-01') +,(4255, 611, 7 , 45.49, 8.0 , 'Allocated', '2016-08-01') +,(4256, 604, 9 , 6.74 , 1.84, 'No Stock' , '2016-06-13') +,(4256, 612, 4 , 42.02, 2.86, 'Allocated', '2016-09-19') +,(4256, 620, 2 , 31.71, 4.97, 'Allocated', '2016-10-02') +,(4257, 617, 1, 10.00, 1.00, 'On Order' , '2016-12-14') +,(4257, 610, 1, 10.00, 1.00, 'On Order' , '2016-12-14') +,(4257, 611, 1, 10.00, 1.00, 'On Order' , '2016-12-14') +,(4258, 605, 7 , 22.45, 8.41, 'On Order' , '2016-06-02') +,(4258, 615, 3 , 69.12, 3.65, 'Allocated', '2017-02-27') +,(4258, 619, 4 , 62.32, 2.23, 'Allocated', '2017-02-20') +,(4259, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4260, 603, 1 , 27.68, 1.99, 'Allocated', '2016-09-20') +,(4260, 604, 3 , 59.65, 3.05, 'No Stock' , '2016-12-31') +,(4261, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4262, 602, 4 , 51.73, 3.06, 'Allocated', '2017-01-17') +,(4263, 612, 4 , 18.46, 7.86, 'Allocated', '2016-08-12') +,(4263, 615, 4 , 18.46, 7.86, 'Allocated', '2016-08-12') +,(4263, 616, 4 , 18.46, 7.86, 'Allocated', '2016-08-12') +,(4264, 604, 8 , 82.02, 9.19, 'Allocated', '2016-11-28') +,(4264, 614, 8 , 82.02, 9.19, 'Allocated', '2016-11-28') +,(4265, 618, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4265, 620, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4266, 601, 2 , 66.57, 6.27, 'Allocated', '2016-09-19') +,(4266, 602, 2 , 66.57, 6.27, 'Allocated', '2016-09-19') +,(4267, 601, 4 , 44.78, 6.86, 'No Stock' , '2016-09-27') +,(4267, 610, 4 , 19.08, 6.41, 'No Stock' , '2016-12-24') +,(4268, 611, 1 , 24.72, 8.14, 'Allocated', '2016-06-08') +,(4268, 612, 1 , 24.72, 8.14, 'Allocated', '2016-06-08') +,(4269, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4269, 617, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4269, 618, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4270, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4270, 612, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4270, 620, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4271, 603, 2 , 80.47, 4.81, 'Allocated', '2016-05-25') +,(4271, 604, 8 , 38.65, 4.02, 'No Stock' , '2016-05-09') +,(4272, 610, 7 , 66.28, 2.85, 'No Stock' , '2016-09-17') +,(4273, 612, 10, 85.38, 8.44, 'No Stock' , '2016-12-19') +,(4274, 613, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4275, 610, 8 , 1.12 , 8.65, 'Allocated', '2016-10-28') +,(4275, 615, 1 , 24.01, 5.55, 'No Stock' , '2016-12-30') +,(4276, 603, 3 , 44.76, 7.28, 'No Stock' , '2016-12-28') +,(4277, 610, 9 , 40.01, 8.62, 'No Stock' , '2016-11-10') +,(4278, 603, 6 , 32.0 , 1.23, 'Allocated', '2016-12-23') +,(4278, 608, 4 , 38.01, 9.45, 'Allocated', '2016-10-05') +,(4278, 609, 5 , 31.99, 5.41, 'No Stock' , '2016-10-23') +,(4279, 613, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4280, 606, 5 , 7.52 , 2.76, 'Allocated', '2016-05-27') +,(4280, 609, 4 , 37.09, 4.44, 'On Order' , '2016-08-10') +,(4281, 610, 9 , 37.07, 8.7 , 'On Order' , '2016-12-28') +,(4281, 611, 2 , 37.07, 8.7 , 'On Order' , '2016-12-28') +,(4281, 612, 1 , 37.07, 8.7 , 'On Order' , '2016-12-28') +,(4282, 601, 1 , 19.14, 3.98, 'On Order' , '2016-11-09') +,(4282, 606, 3 , 88.94, 6.79, 'On Order' , '2016-09-29') +,(4282, 609, 6 , 25.35, 5.22, 'Allocated', '2016-10-05') +,(4283, 601, 1 , 14.78, 3.31, 'On Order' , '2016-10-07') +,(4284, 606, 5 , 32.57, 7.22, 'On Order' , '2016-08-24') +,(4285, 604, 5 , 47.88, 3.77, 'No Stock' , '2016-12-09') +,(4285, 615, 8 , 9.28 , 2.13, 'Allocated', '2016-03-27') +,(4286, 620, 5 , 63.24, 7.62, 'Allocated', '2016-12-06') +,(4287, 602, 6 , 2.9 , 9.5 , 'On Order' , '2016-10-06') +,(4287, 605, 5 , 7.63 , 2.78, 'Allocated', '2016-08-22') +,(4287, 611, 1 , 8.98 , 3.39, 'Allocated', '2016-07-18') +,(4287, 614, 3 , 34.4 , 7.12, 'On Order' , '2017-03-04') +,(4288, 604, 6 , 57.67, 3.25, 'Allocated', '2016-05-18') +,(4289, 601, 7 , 19.32, 7.31, 'On Order' , '2017-01-21') +,(4289, 615, 10, 89.16, 2.08, 'No Stock' , '2016-06-03') +,(4290, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4291, 601, 1 , 68.5 , 2.58, 'Allocated', '2016-11-05') +,(4291, 603, 5 , 11.27, 5.56, 'Allocated', '2016-06-10') +,(4291, 606, 1 , 76.82, 3.31, 'Allocated', '2016-09-27') +,(4292, 608, 10, 27.45, 4.8 , 'On Order' , '2016-05-12') +,(4292, 610, 9 , 16.78, 5.96, 'No Stock' , '2016-05-05') +,(4293, 612, 4 , 69.21, 2.07, 'Allocated', '2016-08-23') +,(4294, 619, 4 , 81.5 , 9.13, 'Allocated', '2017-01-20') +,(4295, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4296, 613, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4297, 604, 4 , 19.21, 1.7 , 'Allocated', '2016-08-20') +,(4297, 606, 4 , 71.24, 5.74, 'No Stock' , '2016-10-11') +,(4298, 613, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4299, 603, 8 , 81.7 , 5.69, 'Allocated', '2016-07-06') +,(4300, 601, 5 , 35.51, 8.38, 'On Order' , '2016-12-23') +,(4300, 607, 5 , 46.94, 6.82, 'No Stock' , '2016-07-29') +,(4301, 605, 6 , 99.32, 1.22, 'Allocated', '2016-09-02') +,(4301, 620, 7 , 96.67, 6.9 , 'Allocated', '2016-11-24') +,(4302, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4303, 605, 8 , 31.92, 5.62, 'On Order' , '2016-04-09') +,(4304, 615, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4305, 606, 1 , 2.53 , 1.15, 'On Order' , '2016-12-03') +,(4305, 609, 6 , 76.41, 7.87, 'Allocated', '2016-07-05') +,(4305, 612, 3 , 31.58, 5.53, 'On Order' , '2016-10-01') +,(4306, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4307, 601, 7 , 36.63, 3.9 , 'On Order' , '2016-09-16') +,(4307, 606, 10, 56.47, 8.96, 'No Stock' , '2017-02-25') +,(4308, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4309, 606, 6 , 84.25, 2.28, 'On Order' , '2016-04-07') +,(4310, 605, 7 , 15.88, 2.48, 'Allocated', '2017-02-17') +,(4311, 603, 2 , 67.26, 6.18, 'No Stock' , '2016-05-06') +,(4312, 619, 4 , 87.5 , 6.57, 'Allocated', '2017-03-14') +,(4313, 602, 3 , 87.01, 4.45, 'On Order' , '2016-08-30') +,(4313, 610, 7 , 54.92, 8.87, 'No Stock' , '2017-01-20') +,(4314, 602, 9 , 49.19, 2.67, 'Allocated', '2016-07-24') +,(4314, 607, 10, 32.19, 8.12, 'On Order' , '2016-11-23') +,(4315, 602, 7 , 9.25 , 3.78, 'On Order' , '2017-01-04') +,(4316, 613, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4317, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4318, 609, 5 , 29.17, 3.35, 'No Stock' , '2016-11-28') +,(4318, 610, 4 , 41.75, 3.7 , 'On Order' , '2016-09-09') +,(4318, 620, 5 , 81.63, 1.49, 'On Order' , '2016-04-16') +,(4319, 614, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4320, 613, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4321, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4322, 603, 2 , 21.09, 9.37, 'No Stock' , '2016-11-29') +,(4323, 608, 8 , 24.05, 9.49, 'On Order' , '2016-08-12') +,(4324, 607, 7 , 83.23, 1.48, 'On Order' , '2016-07-10') +,(4325, 608, 10, 35.28, 1.8 , 'Allocated', '2016-09-01') +,(4326, 602, 8 , 69.18, 4.43, 'No Stock' , '2016-07-31') +,(4326, 610, 2 , 24.44, 8.1 , 'No Stock' , '2016-03-29') +,(4327, 608, 3 , 22.57, 4.64, 'Allocated', '2016-03-23') +,(4328, 604, 1 , 55.53, 3.16, 'On Order' , '2016-12-14') +,(4328, 605, 2 , 38.78, 6.97, 'Allocated', '2017-03-04') +,(4328, 607, 5 , 28.94, 3.59, 'Allocated', '2016-08-01') +,(4329, 603, 6 , 65.93, 2.86, 'On Order' , '2016-10-25') +,(4330, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4331, 602, 5 , 37.37, 6.39, 'No Stock' , '2016-03-19') +,(4332, 606, 5 , 93.96, 3.31, 'No Stock' , '2016-08-09') +,(4332, 610, 5 , 3.77 , 6.74, 'Allocated', '2016-06-23') +,(4333, 608, 7 , 14.29, 3.95, 'On Order' , '2016-06-16') +,(4334, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4335, 609, 6 , 63.15, 9.3 , 'Allocated', '2016-08-31') +,(4336, 613, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4337, 610, 1 , 52.98, 5.68, 'Allocated', '2016-03-19') +,(4338, 610, 1 , 83.94, 3.56, 'Allocated', '2016-11-03') +,(4339, 604, 10, 78.06, 5.32, 'No Stock' , '2016-11-19') +,(4340, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4341, 609, 6 , 52.04, 7.63, 'No Stock' , '2016-11-25') +,(4341, 615, 1 , 9.44 , 8.66, 'No Stock' , '2016-09-06') +,(4342, 615, 6 , 67.41, 8.5 , 'Allocated', '2016-08-28') +,(4343, 615, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4344, 610, 10, 61.53, 5.36, 'On Order' , '2016-04-30') +,(4345, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4346, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4347, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4348, 608, 1 , 96.42, 4.57, 'On Order' , '2016-05-14') +,(4348, 610, 3 , 38.0 , 5.74, 'On Order' , '2016-05-30') +,(4348, 611, 6 , 38.59, 6.7 , 'On Order' , '2016-08-16') +,(4349, 613, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4350, 602, 8 , 81.72, 7.57, 'Allocated', '2016-08-18') +,(4350, 604, 6 , 95.31, 9.43, 'On Order' , '2016-12-29') +,(4350, 608, 9 , 43.57, 6.54, 'No Stock' , '2016-08-24') +,(4351, 602, 1 , 37.63, 3.31, 'No Stock' , '2016-08-26') +,(4351, 607, 9 , 83.22, 2.44, 'No Stock' , '2016-04-11') +,(4352, 602, 3 , 13.09, 3.98, 'No Stock' , '2016-10-03') +,(4352, 603, 9 , 88.58, 4.87, 'On Order' , '2017-03-05') +,(4352, 614, 4 , 47.62, 5.05, 'Allocated', '2016-05-30') +,(4353, 612, 9 , 28.8 , 1.77, 'Allocated', '2016-03-28') +,(4354, 618, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4355, 607, 4 , 20.25, 3.18, 'No Stock' , '2016-04-27') +,(4355, 608, 9 , 73.3 , 5.95, 'Allocated', '2016-12-08') +,(4355, 609, 7 , 26.16, 6.88, 'Allocated', '2016-12-09') +,(4356, 614, 8 , 93.97, 2.88, 'No Stock' , '2016-06-14') +,(4357, 605, 6 , 24.39, 5.53, 'No Stock' , '2016-07-31') +,(4357, 612, 4 , 71.28, 1.94, 'No Stock' , '2016-07-08') +,(4358, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4359, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4360, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4361, 601, 6 , 45.27, 1.05, 'Allocated', '2016-03-29') +,(4361, 609, 10, 39.75, 1.28, 'On Order' , '2016-07-15') +,(4362, 603, 4 , 42.92, 5.17, 'No Stock' , '2016-09-24') +,(4363, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4364, 602, 8 , 90.01, 4.2 , 'On Order' , '2017-02-09') +,(4365, 601, 2 , 92.96, 3.73, 'Allocated', '2016-06-10') +,(4365, 603, 7 , 86.67, 9.6 , 'On Order' , '2016-07-31') +,(4366, 604, 6 , 52.01, 2.02, 'No Stock' , '2016-09-23') +,(4366, 605, 9 , 88.21, 3.68, 'On Order' , '2016-08-10') +,(4366, 609, 8 , 80.78, 3.99, 'No Stock' , '2016-05-07') +,(4367, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4368, 604, 4 , 53.46, 4.56, 'No Stock' , '2016-09-07') +,(4369, 612, 2 , 8.5 , 3.86, 'Allocated', '2017-01-20') +,(4370, 603, 9 , 46.22, 8.2 , 'On Order' , '2016-09-02') +,(4370, 604, 10, 10.38, 2.29, 'Allocated', '2016-06-03') +,(4371, 610, 10, 23.33, 4.07, 'On Order' , '2016-08-25') +,(4372, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4373, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4374, 604, 3 , 29.51, 2.34, 'No Stock' , '2017-03-07') +,(4375, 618, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4376, 608, 10, 5.55 , 3.21, 'No Stock' , '2016-09-14') +,(4377, 602, 9 , 91.62, 8.57, 'On Order' , '2016-08-26') +,(4378, 603, 8 , 74.83, 5.38, 'On Order' , '2016-04-11') +,(4379, 605, 9 , 53.7 , 5.65, 'On Order' , '2016-10-29') +,(4380, 618, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4381, 619, 1 , 35.54, 3.78, 'Allocated', '2016-07-27') +,(4382, 602, 8 , 33.64, 7.95, 'Allocated', '2016-11-05') +,(4382, 606, 4 , 68.17, 6.06, 'On Order' , '2017-01-22') +,(4383, 613, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4384, 615, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4385, 609, 1 , 18.13, 8.94, 'On Order' , '2016-03-25') +,(4386, 613, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4387, 602, 8 , 86.06, 9.74, 'Allocated', '2016-12-01') +,(4387, 606, 8 , 87.31, 7.53, 'No Stock' , '2016-06-12') +,(4387, 610, 3 , 47.55, 5.2 , 'Allocated', '2016-10-06') +,(4388, 602, 4 , 5.86 , 3.52, 'On Order' , '2016-05-09') +,(4388, 603, 8 , 24.25, 6.18, 'Allocated', '2016-09-22') +,(4388, 606, 6 , 29.46, 2.93, 'Allocated', '2016-09-11') +,(4388, 619, 1 , 36.76, 7.37, 'No Stock' , '2016-12-29') +,(4389, 602, 1 , 94.23, 9.35, 'Allocated', '2016-06-13') +,(4389, 603, 2 , 40.15, 8.39, 'No Stock' , '2016-08-09') +,(4390, 609, 4 , 7.02 , 5.61, 'On Order' , '2016-11-29') +,(4391, 607, 1 , 48.41, 8.97, 'On Order' , '2016-07-10') +,(4392, 603, 8 , 74.91, 8.23, 'No Stock' , '2016-04-07') +,(4393, 611, 4 , 55.83, 4.56, 'Allocated', '2016-04-13') +,(4394, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4395, 610, 7 , 82.73, 5.09, 'No Stock' , '2016-09-27') +,(4395, 617, 6 , 26.05, 6.29, 'On Order' , '2016-07-24') +,(4396, 605, 9 , 66.19, 1.32, 'No Stock' , '2017-02-05') +,(4396, 619, 4 , 3.15 , 1.04, 'On Order' , '2016-07-08') +,(4397, 619, 9 , 78.52, 7.64, 'No Stock' , '2016-08-19') +,(4398, 618, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4399, 610, 7 , 85.03, 4.71, 'No Stock' , '2016-05-04') +,(4400, 612, 9 , 36.85, 6.54, 'On Order' , '2016-10-31') +,(4400, 620, 2 , 15.9 , 5.62, 'On Order' , '2016-06-18') +,(4401, 602, 1 , 91.01, 4.13, 'No Stock' , '2016-09-27') +,(4401, 604, 10, 98.7 , 5.27, 'Allocated', '2016-06-03') +,(4402, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4403, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4404, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4405, 604, 3 , 46.99, 9.31, 'No Stock' , '2016-09-08') +,(4405, 610, 10, 4.94 , 1.68, 'On Order' , '2016-11-15') +,(4406, 602, 7 , 25.84, 7.67, 'On Order' , '2016-10-28') +,(4406, 606, 2 , 96.43, 5.64, 'No Stock' , '2016-11-14') +,(4406, 607, 10, 14.91, 3.88, 'No Stock' , '2016-06-18') +,(4407, 606, 9 , 20.82, 6.82, 'No Stock' , '2016-10-08') +,(4407, 608, 4 , 29.19, 7.26, 'No Stock' , '2016-12-15') +,(4408, 605, 4 , 12.83, 9.29, 'No Stock' , '2016-11-20') +,(4408, 615, 4 , 89.77, 2.7 , 'No Stock' , '2017-03-07') +,(4408, 619, 3 , 36.44, 8.86, 'No Stock' , '2016-12-17') +,(4409, 602, 2 , 36.96, 9.73, 'Allocated', '2016-08-19') +,(4409, 611, 7 , 94.98, 4.11, 'On Order' , '2016-05-17') +,(4410, 603, 7 , 13.79, 5.05, 'No Stock' , '2016-09-28') +,(4410, 604, 10, 70.24, 4.07, 'No Stock' , '2016-10-27') +,(4410, 607, 6 , 26.39, 7.8 , 'No Stock' , '2016-03-21') +,(4411, 602, 7 , 3.47 , 3.86, 'No Stock' , '2017-03-14') +,(4411, 611, 3 , 10.43, 3.67, 'On Order' , '2016-12-27') +,(4412, 605, 10, 26.07, 6.78, 'Allocated', '2017-02-16') +,(4412, 607, 7 , 76.81, 5.67, 'No Stock' , '2016-11-26') +,(4412, 610, 3 , 98.77, 3.34, 'On Order' , '2016-09-29') +,(4413, 617, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4414, 606, 5 , 26.01, 4.54, 'On Order' , '2016-03-23') +,(4415, 605, 5 , 74.86, 1.68, 'No Stock' , '2016-09-18') +,(4416, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4417, 601, 6 , 66.38, 5.22, 'No Stock' , '2016-07-07') +,(4417, 604, 7 , 96.99, 4.89, 'No Stock' , '2016-09-30') +,(4418, 609, 8 , 59.88, 5.52, 'Allocated', '2016-09-03') +,(4419, 604, 4 , 54.04, 4.95, 'On Order' , '2017-01-05') +,(4420, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4421, 605, 2 , 96.34, 1.7 , 'On Order' , '2016-06-10') +,(4422, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4423, 602, 3 , 25.88, 5.34, 'Allocated', '2016-04-19') +,(4423, 605, 5 , 4.06 , 2.22, 'On Order' , '2016-06-21') +,(4423, 608, 9 , 20.4 , 4.26, 'On Order' , '2016-08-17') +,(4424, 605, 8 , 44.66, 4.23, 'Allocated', '2016-11-06') +,(4425, 607, 7 , 18.91, 6.75, 'On Order' , '2016-11-28') +,(4425, 608, 4 , 60.11, 4.46, 'No Stock' , '2017-02-15') +,(4426, 606, 8 , 44.98, 6.5 , 'On Order' , '2016-11-13') +,(4426, 607, 4 , 78.46, 2.91, 'Allocated', '2017-01-26') +,(4427, 604, 2 , 61.91, 3.08, 'On Order' , '2016-09-01') +,(4427, 607, 10, 53.82, 8.17, 'No Stock' , '2016-11-09') +,(4428, 603, 2 , 81.15, 5.94, 'Allocated', '2016-12-01') +,(4428, 605, 9 , 48.38, 5.26, 'On Order' , '2016-07-08') +,(4429, 606, 10, 28.8 , 2.75, 'Allocated', '2017-03-03') +,(4430, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4431, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4432, 603, 9 , 52.12, 4.42, 'No Stock' , '2016-09-03') +,(4433, 601, 4 , 34.09, 9.94, 'No Stock' , '2016-04-18') +,(4433, 605, 1 , 65.04, 7.32, 'On Order' , '2016-04-04') +,(4434, 601, 2 , 61.28, 1.15, 'On Order' , '2016-03-18') +,(4434, 605, 2 , 61.28, 1.15, 'On Order' , '2016-03-18') +,(4434, 607, 2 , 61.28, 1.15, 'On Order' , '2016-03-18') +,(4435, 610, 10, 9.19 , 7.18, 'On Order' , '2016-12-08') +,(4435, 612, 10, 9.19 , 7.18, 'On Order' , '2016-12-08') +,(4435, 614, 10, 9.19 , 7.18, 'On Order' , '2016-12-08') +,(4436, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4436, 618, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4436, 620, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4437, 601, 7 , 56.48, 9.07, 'Allocated', '2016-05-05') +,(4437, 602, 1 , 98.71, 8.08, 'On Order' , '2017-03-16') +,(4437, 609, 7 , 12.69, 5.56, 'On Order' , '2016-12-16') +,(4438, 604, 1 , 97.24, 5.43, 'Allocated', '2016-10-22') +,(4438, 605, 1 , 97.24, 5.43, 'Allocated', '2016-10-22') +,(4438, 606, 1 , 97.24, 5.43, 'Allocated', '2016-10-22') +,(4439, 615, 5 , 11.46, 3.07, 'Allocated', '2016-06-10') +,(4439, 618, 1 , 97.24, 5.43, 'Allocated', '2016-10-22') +,(4439, 620, 1 , 97.24, 5.43, 'Allocated', '2016-10-22') +,(4440, 603, 9 , 66.05, 8.7 , 'No Stock' , '2016-11-08') +,(4440, 616, 1 , 97.24, 5.43, 'Allocated', '2016-10-22') +,(4440, 620, 1 , 97.24, 5.43, 'Allocated', '2016-10-22') +,(4441, 602, 4 , 79.49, 2.54, 'Allocated', '2017-02-19') +,(4441, 609, 4 , 88.86, 9.63, 'Allocated', '2016-06-06') +,(4442, 608, 1 , 55.66, 2.52, 'Allocated', '2016-09-08') +,(4443, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4444, 602, 4 , 52.6 , 9.83, 'On Order' , '2017-01-18') +,(4444, 605, 8 , 81.63, 9.58, 'On Order' , '2017-01-27') +,(4445, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4445, 601, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4445, 607, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4446, 602, 3 , 76.28, 1.52, 'On Order' , '2017-02-17') +,(4446, 606, 5 , 18.52, 2.13, 'On Order' , '2016-06-28') +,(4447, 609, 9 , 54.61, 4.47, 'Allocated', '2016-07-08') +,(4447, 608, 9 , 54.61, 4.47, 'Allocated', '2016-07-08') +,(4447, 607, 9 , 54.61, 4.47, 'Allocated', '2016-07-08') +,(4448, 605, 2 , 69.71, 2.05, 'No Stock' , '2016-09-17') +,(4448, 606, 2 , 69.71, 2.05, 'No Stock' , '2016-09-17') +,(4448, 607, 2 , 69.71, 2.05, 'No Stock' , '2016-09-17') +,(4449, 618, 6 , 35.62, 5.23, 'On Order' , '2016-04-15') +,(4449, 619, 10, 86.97, 4.63, 'No Stock' , '2016-09-29') +,(4450, 619, 8 , 26.14, 4.87, 'On Order' , '2016-12-09') +,(4450, 620, 8 , 26.14, 4.87, 'On Order' , '2016-12-09') +,(4450, 601, 8 , 26.14, 4.87, 'On Order' , '2016-12-09') +,(4451, 604, 3 , 47.48, 1.4 , 'Allocated', '2016-09-12') +,(4452, 615, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4453, 606, 2 , 4.03 , 8.07, 'On Order' , '2016-12-10') +,(4454, 619, 7 , 55.92, 9.0 , 'On Order' , '2016-10-07') +,(4455, 602, 10, 50.3 , 9.33, 'On Order' , '2017-01-11') +,(4455, 603, 1 , 7.68 , 7.77, 'Allocated', '2016-12-09') +,(4455, 605, 1 , 98.23, 3.73, 'Allocated', '2016-07-07') +,(4456, 607, 8 , 54.83, 9.57, 'No Stock' , '2016-08-16') +,(4456, 612, 7 , 97.34, 1.24, 'Allocated', '2016-05-13') +,(4457, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4458, 615, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4459, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4460, 602, 8 , 37.95, 8.36, 'No Stock' , '2017-01-03') +,(4461, 620, 6 , 73.77, 2.02, 'Allocated', '2016-03-27') +,(4462, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4463, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4464, 606, 1 , 31.6 , 1.18, 'On Order' , '2016-09-05') +,(4465, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4466, 620, 10, 37.79, 1.76, 'Allocated', '2016-12-14') +,(4467, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4468, 610, 3 , 80.77, 6.87, 'Allocated', '2016-12-30') +,(4469, 602, 3 , 19.99, 5.21, 'No Stock' , '2016-08-11') +,(4469, 612, 3 , 73.21, 4.85, 'On Order' , '2017-02-19') +,(4470, 607, 4 , 7.7 , 5.78, 'No Stock' , '2016-04-22') +,(4471, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4472, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4473, 609, 2 , 97.6 , 1.84, 'Allocated', '2016-05-12') +,(4474, 611, 7 , 12.5 , 6.31, 'Allocated', '2016-04-18') +,(4475, 603, 2 , 44.42, 7.21, 'No Stock' , '2017-03-10') +,(4476, 603, 4 , 43.47, 5.63, 'No Stock' , '2016-09-17') +,(4477, 603, 4 , 24.99, 4.46, 'No Stock' , '2016-09-10') +,(4478, 606, 1 , 29.13, 4.59, 'On Order' , '2017-03-04') +,(4478, 619, 4 , 58.05, 2.9 , 'Allocated', '2017-01-26') +,(4479, 603, 10, 93.2 , 7.79, 'On Order' , '2016-03-21') +,(4479, 609, 4 , 70.36, 9.01, 'Allocated', '2017-02-03') +,(4479, 610, 6 , 49.48, 6.79, 'Allocated', '2017-03-01') +,(4480, 608, 9 , 11.03, 6.26, 'On Order' , '2016-12-10') +,(4481, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4482, 603, 10, 28.92, 8.1 , 'No Stock' , '2016-05-27') +,(4482, 607, 6 , 90.11, 5.74, 'On Order' , '2016-04-29') +,(4482, 610, 4 , 7.12 , 2.89, 'On Order' , '2017-01-12') +,(4482, 611, 1 , 12.48, 8.56, 'No Stock' , '2016-08-16') +,(4482, 614, 10, 55.93, 1.63, 'On Order' , '2016-07-09') +,(4482, 618, 1 , 33.9 , 2.46, 'Allocated', '2016-07-11') +,(4483, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4484, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4485, 605, 7 , 99.92, 1.31, 'No Stock' , '2016-05-11') +,(4486, 615, 7 , 4.39 , 3.61, 'Allocated', '2016-06-24') +,(4487, 602, 9 , 69.78, 7.96, 'No Stock' , '2016-12-29') +,(4487, 607, 5 , 24.92, 8.97, 'On Order' , '2016-08-15') +,(4487, 615, 4 , 72.16, 8.97, 'On Order' , '2016-07-28') +,(4488, 601, 9 , 64.29, 1.52, 'On Order' , '2016-03-30') +,(4488, 609, 10, 66.79, 5.3 , 'On Order' , '2016-07-11') +,(4489, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4490, 615, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4491, 602, 3 , 16.8 , 5.22, 'On Order' , '2016-09-16') +,(4492, 607, 4 , 99.59, 2.45, 'On Order' , '2017-03-04') +,(4493, 615, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4494, 615, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4495, 607, 7 , 86.05, 5.4 , 'Allocated', '2016-10-03') +,(4496, 603, 10, 55.12, 3.71, 'Allocated', '2016-07-06') +,(4497, 607, 7 , 27.3 , 4.26, 'Allocated', '2017-01-29') +,(4498, 604, 10, 89.58, 1.25, 'Allocated', '2016-03-19') +,(4498, 610, 10, 69.32, 2.48, 'No Stock' , '2016-06-24') +,(4499, 601, 4 , 56.58, 6.73, 'No Stock' , '2017-02-21') +,(4499, 602, 4 , 56.58, 6.73, 'No Stock' , '2017-02-21') +,(4499, 603, 4 , 56.58, 6.73, 'No Stock' , '2017-02-21') +,(4500, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4500, 620, 10, 54.41, 7.02, 'No Stock' , '2016-11-30') +,(4500, 619, 10, 54.41, 7.02, 'No Stock' , '2016-11-30') +,(4501, 620, 10, 54.41, 7.02, 'No Stock' , '2016-11-30') +,(4501, 619, 10, 54.41, 7.02, 'No Stock' , '2016-11-30') +,(4501, 618, 10, 54.41, 7.02, 'No Stock' , '2016-11-30') +,(4502, 603, 2 , 27.21, 1.12, 'No Stock' , '2016-07-27') +,(4502, 605, 9 , 39.93, 3.2 , 'On Order' , '2016-11-21') +,(4503, 615, 6 , 85.1 , 8.26, 'No Stock' , '2016-05-03') +,(4503, 611, 6 , 85.1 , 8.26, 'No Stock' , '2016-05-03') +,(4503, 612, 6 , 85.1 , 8.26, 'No Stock' , '2016-05-03') +,(4504, 615, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4504, 618, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4504, 619, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4505, 612, 3 , 10.99, 1.62, 'Allocated', '2016-09-04') +,(4505, 609, 3 , 10.99, 1.62, 'Allocated', '2016-09-04') +,(4505, 601, 3 , 10.99, 1.62, 'Allocated', '2016-09-04') +,(4506, 602, 7 , 88.03, 1.0 , 'On Order' , '2016-09-23') +,(4506, 603, 9 , 66.78, 1.18, 'Allocated', '2017-02-03') +,(4506, 606, 10, 85.37, 2.21, 'Allocated', '2016-10-03') +,(4506, 609, 9 , 84.3 , 4.06, 'Allocated', '2016-12-08') +,(4507, 617, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4508, 611, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4509, 611, 2 , 99.24, 8.51, 'Allocated', '2016-08-12') +,(4509, 612, 8 , 2.41 , 3.81, 'On Order' , '2016-08-30') +,(4510, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4511, 610, 3 , 73.48, 8.4 , 'Allocated', '2016-12-06') +,(4511, 611, 4 , 7.29 , 6.91, 'Allocated', '2016-12-23') +,(4511, 616, 5 , 26.16, 6.26, 'On Order' , '2016-12-09') +,(4512, 614, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4513, 614, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4514, 605, 6 , 86.17, 7.08, 'No Stock' , '2017-01-25') +,(4514, 610, 6 , 71.51, 6.3 , 'No Stock' , '2017-01-23') +,(4515, 617, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4516, 618, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4517, 604, 10, 55.76, 7.34, 'Allocated', '2016-10-23') +,(4517, 619, 2 , 1.09 , 7.07, 'Allocated', '2016-08-19') +,(4518, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4519, 609, 9 , 61.39, 7.83, 'On Order' , '2016-07-01') +,(4520, 619, 9 , 72.61, 9.55, 'No Stock' , '2016-10-08') +,(4521, 610, 10, 19.38, 3.54, 'Allocated', '2016-12-08') +,(4521, 615, 8 , 54.35, 7.77, 'No Stock' , '2017-01-31') +,(4522, 602, 9 , 68.98, 6.79, 'No Stock' , '2016-11-28') +,(4523, 606, 9 , 79.86, 1.63, 'No Stock' , '2016-05-25') +,(4524, 602, 9 , 91.58, 3.46, 'On Order' , '2017-03-12') +,(4525, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4526, 603, 9 , 56.56, 7.64, 'On Order' , '2016-10-14') +,(4526, 604, 4 , 80.67, 2.83, 'No Stock' , '2016-07-29') +,(4526, 610, 5 , 88.8 , 2.86, 'On Order' , '2017-02-25') +,(4527, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4528, 605, 4 , 73.64, 8.81, 'Allocated', '2017-01-26') +,(4528, 609, 4 , 64.56, 4.09, 'On Order' , '2016-10-03') +,(4529, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4530, 602, 9 , 70.97, 4.73, 'On Order' , '2016-12-07') +,(4531, 606, 10, 26.53, 2.83, 'No Stock' , '2016-03-25') +,(4531, 615, 5 , 79.05, 6.82, 'Allocated', '2016-08-04') +,(4531, 619, 4 , 36.14, 7.09, 'No Stock' , '2016-03-26') +,(4532, 605, 5 , 6.28 , 9.94, 'No Stock' , '2017-03-13') +,(4532, 610, 8 , 17.25, 3.68, 'Allocated', '2016-05-28') +,(4533, 615, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4534, 606, 8 , 60.95, 9.33, 'Allocated', '2016-07-15') +,(4534, 607, 10, 49.84, 8.32, 'No Stock' , '2016-04-24') +,(4535, 610, 6 , 17.67, 1.81, 'On Order' , '2017-03-01') +,(4535, 619, 3 , 88.0 , 3.12, 'Allocated', '2016-07-11') +,(4536, 615, 5 , 88.08, 4.93, 'Allocated', '2016-12-04') +,(4537, 611, 2 , 14.77, 4.04, 'No Stock' , '2016-03-25') +,(4538, 603, 6 , 3.51 , 4.54, 'Allocated', '2016-04-21') +,(4539, 603, 7 , 6.58 , 4.8 , 'Allocated', '2016-05-14') +,(4540, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4540, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4540, 618, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4541, 603, 5 , 37.47, 2.89, 'On Order' , '2016-04-07') +,(4541, 607, 4 , 35.17, 5.44, 'No Stock' , '2017-01-07') +,(4541, 615, 2 , 83.62, 4.01, 'Allocated', '2016-11-22') +,(4542, 605, 10, 92.43, 3.27, 'On Order' , '2017-01-23') +,(4542, 601, 10, 92.43, 3.27, 'On Order' , '2017-01-23') +,(4542, 603, 10, 92.43, 3.27, 'On Order' , '2017-01-23') +,(4543, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4543, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4543, 619, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4544, 611, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4544, 610, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4544, 609, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4545, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4545, 604, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4545, 606, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4546, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4546, 606, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4546, 608, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4547, 606, 4 , 81.81, 9.44, 'No Stock' , '2016-05-14') +,(4547, 602, 4 , 81.81, 9.44, 'No Stock' , '2016-05-14') +,(4547, 603, 4 , 81.81, 9.44, 'No Stock' , '2016-05-14') +,(4548, 614, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4548, 611, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4548, 615, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4549, 605, 9 , 24.12, 7.26, 'No Stock' , '2016-08-22') +,(4549, 606, 7 , 6.19 , 4.68, 'Allocated', '2016-09-02') +,(4550, 609, 8 , 49.04, 7.62, 'On Order' , '2016-06-10') +,(4550, 610, 10, 92.51, 4.84, 'No Stock' , '2017-02-24') +,(4551, 601, 3 , 85.1 , 2.45, 'Allocated', '2016-07-08') +,(4551, 602, 3 , 69.43, 1.31, 'No Stock' , '2017-03-15') +,(4551, 610, 1 , 19.38, 8.43, 'No Stock' , '2016-11-09') +,(4552, 601, 2 , 91.69, 8.12, 'On Order' , '2016-06-03') +,(4552, 613, 3 , 41.15, 6.38, 'No Stock' , '2016-04-11') +,(4553, 603, 1 , 5.22 , 8.43, 'On Order' , '2016-10-28') +,(4554, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4555, 607, 6 , 77.16, 3.07, 'No Stock' , '2016-04-29') +,(4555, 612, 9 , 81.31, 9.81, 'On Order' , '2017-01-24') +,(4556, 615, 10, 65.81, 7.25, 'Allocated', '2016-11-07') +,(4557, 603, 1 , 5.01 , 4.57, 'No Stock' , '2016-09-05') +,(4557, 606, 3 , 29.35, 8.67, 'On Order' , '2016-09-14') +,(4558, 601, 3 , 29.62, 7.16, 'No Stock' , '2016-11-06') +,(4559, 620, 2 , 87.83, 7.93, 'On Order' , '2016-11-09') +,(4560, 610, 7 , 9.51 , 8.01, 'On Order' , '2016-08-22') +,(4561, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4562, 610, 9 , 15.1 , 6.8 , 'Allocated', '2016-08-27') +,(4562, 611, 3 , 71.09, 1.26, 'No Stock' , '2016-07-12') +,(4563, 618, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4564, 602, 2 , 6.68 , 6.29, 'Allocated', '2016-03-19') +,(4565, 603, 7 , 81.01, 2.82, 'Allocated', '2017-03-06') +,(4565, 606, 8 , 99.68, 6.28, 'No Stock' , '2016-04-27') +,(4566, 614, 7 , 57.79, 4.48, 'No Stock' , '2016-11-02') +,(4567, 604, 7 , 94.42, 5.46, 'No Stock' , '2016-05-18') +,(4567, 605, 1 , 61.75, 1.31, 'Allocated', '2016-04-14') +,(4567, 608, 10, 25.99, 4.85, 'On Order' , '2016-05-01') +,(4567, 620, 9 , 62.17, 4.66, 'Allocated', '2016-06-11') +,(4568, 606, 8 , 66.92, 1.1 , 'Allocated', '2016-10-02') +,(4568, 607, 10, 95.6 , 9.17, 'On Order' , '2016-05-04') +,(4568, 608, 6 , 81.57, 6.24, 'No Stock' , '2017-01-24') +,(4569, 601, 10, 96.56, 6.33, 'Allocated', '2016-07-22') +,(4570, 610, 6 , 98.15, 2.57, 'No Stock' , '2016-06-28') +,(4571, 604, 8 , 5.15 , 2.51, 'No Stock' , '2016-07-11') +,(4572, 603, 2 , 59.21, 2.46, 'Allocated', '2016-11-18') +,(4573, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4574, 615, 3 , 14.81, 9.61, 'On Order' , '2016-05-04') +,(4575, 608, 10, 79.25, 7.08, 'On Order' , '2016-11-19') +,(4575, 611, 10, 79.25, 7.08, 'On Order' , '2016-11-19') +,(4575, 615, 10, 79.25, 7.08, 'On Order' , '2016-11-19') +,(4576, 607, 7 , 31.78, 2.05, 'On Order' , '2016-03-17') +,(4576, 608, 7 , 31.78, 2.05, 'On Order' , '2016-03-17') +,(4576, 610, 7 , 31.78, 2.05, 'On Order' , '2016-03-17') +,(4577, 604, 5 , 92.54, 6.26, 'On Order' , '2016-04-22') +,(4577, 603, 5 , 92.54, 6.26, 'On Order' , '2016-04-22') +,(4577, 601, 5 , 92.54, 6.26, 'On Order' , '2016-04-22') +,(4578, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4578, 602, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4578, 603, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4579, 615, 10, 70.19, 5.85, 'No Stock' , '2016-09-11') +,(4579, 616, 10, 70.19, 5.85, 'No Stock' , '2016-09-11') +,(4579, 620, 10, 70.19, 5.85, 'No Stock' , '2016-09-11') +,(4580, 601, 1 , 15.44, 3.76, 'No Stock' , '2016-04-08') +,(4580, 603, 1 , 15.44, 3.76, 'No Stock' , '2016-04-08') +,(4580, 605, 1 , 15.44, 3.76, 'No Stock' , '2016-04-08') +,(4580, 609, 1 , 15.44, 3.76, 'No Stock' , '2016-04-08') +,(4581, 607, 8 , 42.4 , 9.73, 'On Order' , '2016-06-04') +,(4581, 610, 9 , 79.73, 3.87, 'On Order' , '2016-04-20') +,(4581, 611, 5 , 78.01, 3.65, 'On Order' , '2016-03-17') +,(4581, 616, 5 , 50.56, 5.24, 'No Stock' , '2016-07-06') +,(4582, 609, 7 , 65.99, 9.4 , 'No Stock' , '2016-05-22') +,(4582, 607, 7 , 65.99, 9.4 , 'No Stock' , '2016-05-22') +,(4582, 606, 7 , 65.99, 9.4 , 'No Stock' , '2016-05-22') +,(4583, 604, 9 , 19.92, 6.51, 'Allocated', '2016-04-13') +,(4583, 610, 1 , 19.4 , 8.3 , 'On Order' , '2016-12-08') +,(4584, 617, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4584, 620, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4584, 613, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4585, 602, 2 , 90.57, 2.52, 'Allocated', '2016-05-22') +,(4585, 610, 10, 44.26, 3.84, 'On Order' , '2016-12-27') +,(4586, 604, 2 , 56.61, 9.64, 'Allocated', '2017-02-23') +,(4586, 612, 7 , 24.24, 7.68, 'On Order' , '2016-04-04') +,(4587, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4587, 611, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4587, 612, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4588, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4588, 601, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4588, 602, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4589, 601, 5 , 52.25, 4.47, 'Allocated', '2016-07-02') +,(4589, 603, 9 , 72.27, 4.97, 'On Order' , '2016-04-03') +,(4590, 610, 3 , 46.2 , 6.71, 'Allocated', '2016-12-16') +,(4590, 615, 5 , 52.0 , 5.26, 'On Order' , '2016-06-01') +,(4591, 601, 1 , 96.52, 2.39, 'No Stock' , '2017-01-16') +,(4591, 605, 8 , 19.56, 9.68, 'On Order' , '2016-09-15') +,(4592, 609, 10, 30.76, 3.2 , 'No Stock' , '2016-05-02') +,(4592, 619, 1 , 48.47, 6.13, 'On Order' , '2016-07-19') +,(4593, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4593, 619, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4593, 620, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4594, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4594, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4594, 618, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4594, 620, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4595, 605, 1 , 50.28, 8.15, 'Allocated', '2017-02-19') +,(4595, 601, 1 , 50.28, 8.15, 'Allocated', '2017-02-19') +,(4595, 602, 1 , 50.28, 8.15, 'Allocated', '2017-02-19') +,(4596, 605, 6 , 95.17, 7.53, 'On Order' , '2016-09-11') +,(4596, 609, 10, 82.11, 4.38, 'No Stock' , '2016-11-17') +,(4597, 608, 9 , 96.25, 4.8 , 'No Stock' , '2016-07-02') +,(4597, 605, 9 , 96.25, 4.8 , 'No Stock' , '2016-07-02') +,(4597, 601, 9 , 96.25, 4.8 , 'No Stock' , '2016-07-02') +,(4598, 603, 5 , 69.02, 6.1 , 'No Stock' , '2016-12-23') +,(4598, 608, 5 , 69.02, 6.1 , 'No Stock' , '2016-12-23') +,(4598, 610, 5 , 69.02, 6.1 , 'No Stock' , '2016-12-23') +,(4599, 603, 9 , 40.91, 6.68, 'On Order' , '2016-12-27') +,(4599, 607, 9 , 40.91, 6.68, 'On Order' , '2016-12-27') +,(4599, 609, 9 , 40.91, 6.68, 'On Order' , '2016-12-27') +,(4600, 611, 5 , 22.93, 8.87, 'Allocated', '2016-06-16') +,(4600, 615, 5 , 22.93, 8.87, 'Allocated', '2016-06-16') +,(4600, 612, 5 , 22.93, 8.87, 'Allocated', '2016-06-16'); diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/resources/logback.xml b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/resources/logback.xml new file mode 100644 index 0000000..12fa9be --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/resources/logback.xml @@ -0,0 +1,108 @@ + + + + + + + + + ${LOG_PATTERN} + + + + + ${APP_LOG_ROOT}/ExceptionLogs/Error.log + + ${LOG_PATTERN} + + + ${APP_LOG_ROOT}/ExceptionLogs/Error-%d{yyyy-MM-dd}.%i.log + 1 + 10 + + + 10MB + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/resources/messages.properties b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/resources/messages.properties new file mode 100644 index 0000000..b015c87 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/resources/messages.properties @@ -0,0 +1,5 @@ + +email.notempty=Please provide valid email id. +email.valid=Email should be valid +email.regex=Enter a valid email +name.minsize=Name should have minimum 3 characters diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/resources/note.txt b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/resources/note.txt new file mode 100644 index 0000000..dd9fbe6 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/resources/note.txt @@ -0,0 +1,57 @@ +HEADER-LINE FORM : + +GET: http://localhost:9119/api/teacher +GET: http://localhost:9119/api/teacher/{id} +PUT: http://localhost:9119/api/teacher/{id} +DELETE: http://localhost:9119/api/teacher/{id} : NEED TO MODIFY THE INCORRECT ID INPUT ERROR HANDLING +POST: http://localhost:9119/api/teacher +===EX1=== +{ + "name": "niladri", + "email": "sen.niladri6@gmail.com", + "phoneNumber": 6291, + "salary": 1000.0, + "students": [{ + "name": "paku", + "depertment": "CSE", + "rollNumber": 108 + }] +} +===EX2===: +{ + "name": "sandipan", + "email": "sandy@gmail.com", + "phoneNumber": 9038, + "salary": 2000.0, + "students": [ + { + "name": "sahil", + "depertment": "CSE", + "rollNumber": 111 + }, + { + "name": "tarun", + "depertment": "CSE", + "rollNumber": 121 + } + ] +} + +===== 6.11.36 +user.java class code changed +@Getter @Setter private List role; +TokenUtil class code change + +===== 9.11.20 +1.8 +=== SWAGGER UI ==== +http://localhost:9119/swagger-ui.html + +========= +GIT HUB COMMAND +========= +$ git commit -m "your mesage" +$ git push origin main +$ git status + +$ git push origin main diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/resources/schema.sql b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/resources/schema.sql new file mode 100644 index 0000000..573e44a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/src/main/resources/schema.sql @@ -0,0 +1,303 @@ +/** + Model : NorthWind +**/ + +DROP SCHEMA IF EXISTS northwind; + +CREATE SCHEMA northwind; +USE northwind; + +/* Table: user (Application Users) */ +CREATE TABLE user ( + user_id NVARCHAR(20) NOT NULL, + password NVARCHAR(255) NOT NULL, + first_name NVARCHAR(50) , + last_name NVARCHAR(50) , + email NVARCHAR(70) , + security_provider_id INT , + default_customer_id INT , + company NVARCHAR(50) , + phone NVARCHAR(20) , + address1 NVARCHAR(100), + address2 NVARCHAR(100), + country NVARCHAR(20) , + postal NVARCHAR(20) , + role NVARCHAR(20) , + other_roles NVARCHAR(80) , + is_active TINYINT , + is_blocked TINYINT , + secret_question NVARCHAR(100), + secret_answer NVARCHAR(100), + enable_beta_testing TINYINT, + enable_renewal TINYINT, + CONSTRAINT user_id PRIMARY KEY(user_id) +); + +/* Table: customers */ +CREATE TABLE customers ( + id INT NOT NULL, + last_name VARCHAR(50) , + first_name VARCHAR(50) , + email VARCHAR(50) , + company VARCHAR(50) , + phone VARCHAR(25) , + address1 VARCHAR(150), + address2 VARCHAR(150), + city VARCHAR(50) , + state VARCHAR(50) , + postal_code VARCHAR(15) , + country VARCHAR(50) , + PRIMARY KEY (id) +); + +/* Table: employees */ +CREATE TABLE employees ( + id INT NOT NULL, + last_name VARCHAR(50) , + first_name VARCHAR(50) , + email VARCHAR(50) , + avatar VARCHAR(250) , + job_title VARCHAR(50) , + department VARCHAR(50) , + manager_id INT , + phone VARCHAR(25) , + address1 VARCHAR(150), + address2 VARCHAR(150), + city VARCHAR(50) , + state VARCHAR(50) , + postal_code VARCHAR(15) , + country VARCHAR(50) , + PRIMARY KEY (id) +); + +/* Table: orders */ +CREATE TABLE orders ( + id INT NOT NULL, + employee_id INT , + customer_id INT , + order_date DATETIME , + shipped_date DATETIME , + ship_name VARCHAR(50) , + ship_address1 VARCHAR(150) , + ship_address2 VARCHAR(150) , + ship_city VARCHAR(50) , + ship_state VARCHAR(50) , + ship_postal_code VARCHAR(50) , + ship_country VARCHAR(50) , + shipping_fee DECIMAL(19,4) NULL DEFAULT '0.0000', + payment_type VARCHAR(50) , + paid_date DATETIME , + order_status VARCHAR(25), + PRIMARY KEY (id) +); + +/* Table: order_details */ +CREATE TABLE order_items ( + order_id INT NOT NULL, + product_id INT , + quantity DECIMAL(18,4) NOT NULL DEFAULT '0.0000', + unit_price DECIMAL(19,4) NULL DEFAULT '0.0000', + discount DECIMAL(19,4) NULL DEFAULT '0.0000', + order_item_status VARCHAR(25), + date_allocated DATETIME , + PRIMARY KEY (order_id, product_id) +); + +/* Table: products */ +CREATE TABLE products ( + id INT NOT NULL, + product_code VARCHAR(25) , + product_name VARCHAR(50) , + description VARCHAR(250), + standard_cost DECIMAL(19,4) NULL DEFAULT '0.0000', + list_price DECIMAL(19,4) NOT NULL DEFAULT '0.0000', + target_level INT , + reorder_level INT , + minimum_reorder_quantity INT , + quantity_per_unit VARCHAR(50) , + discontinued TINYINT NOT NULL DEFAULT '0', + category VARCHAR(50), + PRIMARY KEY (id) +); + + +/* Foreign Key: orders */ +ALTER TABLE orders ADD CONSTRAINT fk_orders__customers FOREIGN KEY (customer_id) REFERENCES customers(id); +ALTER TABLE orders ADD CONSTRAINT fk_orders__employees FOREIGN KEY (employee_id) REFERENCES employees(id); +/* Foreign Key: order_items */ +ALTER TABLE order_items ADD CONSTRAINT fk_order_items__orders FOREIGN KEY (order_id) REFERENCES orders(id); +ALTER TABLE order_items ADD CONSTRAINT fk_order_items__products FOREIGN KEY (product_id) REFERENCES products(id); + +/* Views */ +CREATE OR REPLACE VIEW order_info AS +select o.id as order_id + , o.order_date + , o.order_status + , o.paid_date + , o.payment_type + , o.shipped_date + , o.shipping_fee + , o.ship_name + , o.ship_address1 + , o.ship_address2 + , o.ship_city + , o.ship_state + , o.ship_postal_code + , o.ship_country + , o.customer_id + , o.employee_id + , concat(c.first_name, ' ', c.last_name) as customer_name + , c.phone customer_phone + , c.email customer_email + , c.company as customer_company + , concat(e.first_name, ' ', e.last_name) as employee_name + , e.department employee_department + , e.job_title employee_job_title + From orders o + , employees e + , customers c + where o.employee_id = e.id + and o.customer_id = c.id; + +CREATE OR REPLACE VIEW order_details AS +select oi.order_id + , oi.product_id + , oi.quantity + , oi.unit_price + , oi.discount + , oi.date_allocated + , oi.order_item_status + , o.order_date + , o.order_status + , o.paid_date + , o.payment_type + , o.shipped_date + , o.shipping_fee + , o.ship_name + , o.ship_address1 + , o.ship_address2 + , o.ship_city + , o.ship_state + , o.ship_postal_code + , o.ship_country + , p.product_code + , p.product_name + , p.category + , p.description + , p.list_price + , o.customer_id + , concat(c.first_name, ' ', c.last_name) as customer_name + , c.phone as customer_phone + , c.email as customer_email + , c.company as customer_company + , o.employee_id + , concat(e.first_name, ' ', e.last_name) as employee_name + , e.department as employee_department + , e.job_title as employee_job_title + From orders o + , products p + , order_items oi + , employees e + , customers c + where oi.order_id = o.id + and oi.product_id = p.id + and o.employee_id = e.id + and o.customer_id = c.id; + +CREATE OR REPLACE VIEW customer_orders AS +select o.order_date, o.order_status, o.paid_date, o.payment_type, o.shipping_fee, o.customer_id + , c.first_name customer_first_name, c.last_name customer_last_name, c.phone customer_phone, c.email customer_email, c.company + from orders o,customers c + where o.customer_id = c.id; + +CREATE OR REPLACE VIEW employee_orders AS +select o.order_date, o.order_status, o.paid_date, o.payment_type, o.shipping_fee, o.employee_id + , e.first_name employee_first_name, e.last_name employee_last_name, e.email employee_email, e.department + from orders o,employees e + where o.customer_id = e.id; + + + /* REAL_NET */ + CREATE TABLE RN_INSTRUCTOR ( + ID VARCHAR(20) NOT NULL AUTO_INCREMENT, + FIRST_NAME VARCHAR(20) NOT NULL, + LAST_NAME VARCHAR(20) NOT NULL, + EMAIL VARCHAR(20) NOT NULL, + CREATED_AT DATETIME, + UPDATED_AT DATETIME, + PRIMARY KEY (id) + ); + + /*==== EXTENSION FIELD ===*/ + CREATE TABLE RN_EXT_FIELD_T ( + ID int(11) NOT NULL AUTO_INCREMENT, + TYPE VARCHAR(20), + DATA_TYPE VARCHAR(20), + FIELD_NAME VARCHAR(20), + MAPPING VARCHAR(20), + FORM_CODE VARCHAR(20), + IS_ACTIVE BOOLEAN, + ACCOUNT_ID VARCHAR(20), + CREATED_AT DATETIME, + UPDATED_AT DATETIME, + CREATED_BY VARCHAR(20), + UPDATED_BY VARCHAR(20), + PRIMARY KEY (ID) +); + +/*========= lookup ======== +CREATE TABLE `rn_lookup_values_t` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `LOOKUP_CODE` longtext, + `MEANING` longtext, + `DESCRIPTION` longtext, + `LOOKUP_TYPE` longtext, + `ACTIVE_START_DATE` datetime DEFAULT NULL, + `ACTIVE_END_DATE` datetime DEFAULT NULL, + `ENABLED_FLAG` longtext, + `CREATED_BY` int(11) DEFAULT NULL, + `CREATION_DATE` datetime DEFAULT NULL, + `LAST_UPDATED_BY` int(11) DEFAULT NULL, + `LAST_UPDATE_DATE` datetime DEFAULT NULL + PRIMARY KEY (`ID`) +); */ + + + +/*========= LOGGING ======== + +DROP TABLE logging_event_exception IF EXISTS; +DROP TABLE logging_event_property IF EXISTS; +DROP TABLE logging_event IF EXISTS; + +CREATE TABLE logging_event ( + timestmp BIGINT NOT NULL, + formatted_message LONGVARCHAR NOT NULL, + logger_name VARCHAR(256) NOT NULL, + level_string VARCHAR(256) NOT NULL, + thread_name VARCHAR(256), + reference_flag SMALLINT, + arg0 VARCHAR(256), + arg1 VARCHAR(256), + arg2 VARCHAR(256), + arg3 VARCHAR(256), + caller_filename VARCHAR(256), + caller_class VARCHAR(256), + caller_method VARCHAR(256), + caller_line CHAR(4), + event_id IDENTITY NOT NULL); + + +CREATE TABLE logging_event_property ( + event_id BIGINT NOT NULL, + mapped_key VARCHAR(254) NOT NULL, + mapped_value LONGVARCHAR, + PRIMARY KEY(event_id, mapped_key), + FOREIGN KEY (event_id) REFERENCES logging_event(event_id)); + +CREATE TABLE logging_event_exception ( + event_id BIGINT NOT NULL, + i SMALLINT NOT NULL, + trace_line VARCHAR(256) NOT NULL, + PRIMARY KEY(event_id, i), + FOREIGN KEY (event_id) REFERENCES logging_event(event_id)); */ \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/app-1.0.0.jar.original b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/app-1.0.0.jar.original new file mode 100644 index 0000000000000000000000000000000000000000..12a6ed554d70ecdf683bc8ffd4b4b72bd415686a GIT binary patch literal 601816 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

    Vgx9U6CsMlSQc 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≫0M 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�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%0AOeF{|wET=ONOo>TgTUKOAY$oQi8 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

    ~l0tui;v7gEJRg1>? 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 + 4.0.0 + com.realnet + app + jar + 1.0.0 + REAL IT SOLUTIONS + + 2.7.0 + UTF-8 + UTF-8 + 1.8 + + + org.springframework.boot + spring-boot-starter-parent + 2.2.5.RELEASE + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + org.springframework.boot + spring-boot-starter-mail + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-aop + + + org.springframework.boot + spring-boot-starter-tomcat + provided + + + + + + org.springframework.boot + spring-boot-starter-actuator + + + io.springfox + springfox-swagger2 + 2.9.2 + + + io.swagger + swagger-annotations + + + io.swagger + swagger-models + + + + + + io.swagger + swagger-annotations + 1.5.22 + + + io.swagger + swagger-models + 1.5.22 + + + io.springfox + springfox-swagger-ui + 2.9.2 + + + + + + org.apache.commons + commons-lang3 + 3.12.0 + + + com.googlecode.json-simple + json-simple + 1.1.1 + + + com.google.code.gson + gson + 2.8.5 + + + + org.apache.pdfbox + pdfbox + 2.0.29 + + + + + mysql + mysql-connector-java + 8.0.28 + + + + + org.springframework.boot + spring-boot-starter-data-jpa + + + org.springframework.boot + spring-boot-starter-validation + + + + + + org.apache.poi + poi-scratchpad + 3.9 + + + + + org.apache.poi + poi + 4.1.2 + + + org.apache.poi + poi-ooxml + 4.1.2 + + + + + + + org.springframework.boot + spring-boot-starter-jdbc + + + + com.microsoft.sqlserver + mssql-jdbc + runtime + + + + org.springframework.boot + spring-boot-starter-websocket + + + org.springframework + spring-messaging + + + + org.springframework.boot + spring-boot-starter-cache + + + com.github.ben-manes.caffeine + caffeine + + + + com.h2database + h2 + runtime + + + org.slf4j + slf4j-api + + + + + + org.springframework.boot + spring-boot-starter-security + + + org.springframework.security.oauth.boot + spring-security-oauth2-autoconfigure + 2.3.3.RELEASE + + + + org.springframework.security + spring-security-oauth2-client + + + org.springframework.social + spring-social-google + 1.0.0.RELEASE + + + org.springframework.social + spring-social-linkedin + 1.0.2.RELEASE + + + + io.jsonwebtoken + jjwt + 0.9.0 + + + com.google.guava + guava + 23.5-jre + + + joda-time + joda-time + 2.9.9 + + + + com.fasterxml.jackson.core + jackson-core + 2.12.1 + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + + + org.modelmapper + modelmapper + 2.3.0 + + + org.codehaus.jackson + jackson-mapper-asl + 1.9.13 + + + commons-io + commons-io + 2.7 + + + + net.lingala.zip4j + zip4j + 2.6.1 + + + + org.projectlombok + lombok + 1.18.20 + provided + + + javax.xml.bind + jaxb-api + 2.3.0 + + + org.springframework.boot + spring-boot-devtools + + + + org.apache.httpcomponents + httpclient + 4.5.13 + + + + + org.apache.clerezza.ext + org.json.simple + 0.4 + + + commons-codec + commons-codec + 1.10 + + + org.springframework.boot + spring-boot-starter-webflux + + + + + org.apache.poi + poi + 4.1.2 + + + + org.apache.poi + ooxml-schemas + 1.4 + + + + org.json + json + 20201115 + + + com.jcraft + jsch + 0.1.55 + + + + + org.xhtmlrenderer + flying-saucer-pdf + 9.1.22 + + + + + com.lowagie + itext + 2.1.7 + + + + + + + com.itextpdf + itextpdf + 5.5.13.2 + + + + + + com.paytm.pg + paytm-checksum + 1.2.1 + + + + com.razorpay + razorpay-java + 1.4.4 + + + + + org.jsoup + jsoup + 1.14.3 + + + + org.springframework + spring-test + + + + + org.apache.pdfbox + pdfbox + 2.0.28 + + + + + org.apache.xmlgraphics + fop + 2.6 + + + + org.apache.commons + commons-csv + 1.4 + + + + + com.googlecode.json-simple + json-simple + 1.1.1 + + + + com.opencsv + opencsv + 5.5 + + + + diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/MyprojectUI_view.properties b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/MyprojectUI_view.properties new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/application.properties b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/application.properties new file mode 100644 index 0000000..b48ffde --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/application.properties @@ -0,0 +1,100 @@ +# File is used by sprigboot +server.contextPath=/* +server.port=9292 +spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,classpath:/webui/ + +spring.banner.location=classpath:banner_txt.txt + +#Temporary disable security to enable it remove this +#security.ignored=/** + +springfox.documentation.swagger.v2.path=/api-docs +spring.jackson.date-format=yyyy-MM-dd + +chatgpt.api.url=https://api.openai.com/v1/completions +chatgpt.api.key=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 + + + +System.Net.ServicePointManager.Expect100Continue = false; + +#spring.jpa.hibernate.ddl-auto=none +#spring.jpa.hibernate.ddl-auto=update +#spring.datasource.continue-on-error=false + +# **** MY SQL DATABASE CONNECTION **** + +spring.datasource.url=jdbc:mysql://realit-prod.cj462uqsa4mz.ap-south-1.rds.amazonaws.com:3306/realnet_CNSBENEW?createDatabaseIfNotExist=true +spring.datasource.username=cnsdev +spring.datasource.password=cnsdevprod1212 + +spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver + +spring.jpa.hibernate.ddl-auto=update +spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect +# Prefix Path + +#spring.jpa.show-sql=true +spring.jpa.properties.hibernate.format_sql=true +spring.jpa.properties.hibernate.proc.param_null_passing=true + +# **********paytm dependency ****** +razorpay.api.key=rzp_test_xVnrBUjJWTEH0r +razorpay.api.secret=evTXkIFcgpVtiLa1P7M7CIox + +#***** MAIL SENDER +spring.mail.host=smtp.gmail.com +spring.mail.username=realitmailsender@gmail.com +spring.mail.password=epnmhzsccotnyozf +spring.mail.port=587 +#spring.mail.properties.mail.smtp.auth=true +spring.mail.properties.mail.smtp.starttls.enable=true +spring.mail.properties.mail.smtp.starttls.required=true + +# JACKSON +spring.jackson.serialization.FAIL_ON_EMPTY_BEANS=false + + +spring.mail.properties.mail.smtp.auth = true +spring.mail.properties.mail.smtp.socketFactory.port = 465 +spring.mail.properties.mail.smtp.socketFactory.class = javax.net.ssl.SSLSocketFactory +spring.mail.properties.mail.smtp.socketFactory.fallback = false + +#******* MULTIPART RESOLVER +spring.servlet.multipart.enabled=true +spring.servlet.multipart.max-file-size=100MB +spring.servlet.multipart.max-request-size=100MB + +#***************OAUTH2 SOCIAL LOGIN ********* +# Social login provider props +spring.security.oauth2.client.registration.google.clientId=437023664181-0lm0ipgip3qbhga4nd7o4128jv4g2nv9.apps.googleusercontent.com +spring.security.oauth2.client.registration.google.clientSecret=I1HPyUqdJ9UONu45W1_wwfww +spring.security.oauth2.client.registration.google.scope=profile, email + + +spring.security.oauth2.client.registration.linkedin.clientId= +spring.security.oauth2.client.registration.linkedin.clientSecret= +spring.security.oauth2.client.registration.linkedin.client-authentication-method=post +spring.security.oauth2.client.registration.linkedin.authorization-grant-type=authorization_code +spring.security.oauth2.client.registration.linkedin.scope=r_liteprofile, r_emailaddress +spring.security.oauth2.client.registration.linkedin.redirect-uri={baseUrl}/login/oauth2/code/{registrationId} +spring.security.oauth2.client.registration.linkedin.client-name=Linkedin +spring.security.oauth2.client.registration.linkedin.provider=linkedin +spring.security.oauth2.client.provider.linkedin.authorization-uri=https://www.linkedin.com/oauth/v2/authorization +spring.security.oauth2.client.provider.linkedin.token-uri=https://www.linkedin.com/oauth/v2/accessToken +spring.security.oauth2.client.provider.linkedin.user-info-uri=https://api.linkedin.com/v2/me +spring.security.oauth2.client.provider.linkedin.user-name-attribute=id +linkedin.email-address-uri=https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~)) +app.auth.tokenSecret=926D96C90030DD58429D2751AC1BDBBC +app.auth.tokenExpirationMsec=864000000 + # After successfully authenticating with the OAuth2 Provider, + # we'll be generating an auth token for the user and sending the token to the + # redirectUri mentioned by the frontend client in the /oauth2/authorization request. + # We're not using cookies because they won't work well in mobile clients. +app.oauth2.authorizedRedirectUris=http://localhost:8081/oauth2/redirect,myandroidapp://oauth2/redirect,myiosapp://oauth2/redirect + + +projectPath=/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend +angularProjectPath=/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/webui + + diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/banner_txt.txt b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/banner_txt.txt new file mode 100644 index 0000000..5c9c817 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/banner_txt.txt @@ -0,0 +1,11 @@ +******************************************************************* +******************************************************************* + __ _ ____ __ __ __ + / \ \ | |__****** / ___| **** ****_ \ \ \ \ \ \ + / / \ \ | '_ \ / _ \ \___ \| | | | '__|/ _ \ \ \ \ \ \ \ + \ \ / / | |_) | __/ ___) | |_| | | | __/ / / / / / / + \ /_/ |_.__/ \___| |____/ \__,_|_| \___| /_/ /_/ /_/ + *** *** ***** +******************************************************************* +::SPRING BOOT:: CNS Version::v1.1.0 RELEASE +******************************************************************* \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Accesstype_back/Controllers/AccesstypeController.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Accesstype_back/Controllers/AccesstypeController.class new file mode 100644 index 0000000000000000000000000000000000000000..35a3856662eab191dbbdf7af38975feaa4c66f06 GIT binary patch literal 3142 zcmbtWZBrXn6h1eEhJ-Ceuviq8g0%@R-C8NshDK9L=}Uk}5Q}vNZ#EZL8g}FE4K(BU zpVV<+#?JTy{85h2-Q6S$1SY``a9?unxzBl?bI;j-{{8E3BATHeV-#UDZ`k{~BY4>o zQqLNOa9vreh^-6*o|$Xb>yxioFdRc>u(M|UfZY3*z~d|w>e&Ktcb zxaI2G+>o|Y(|O~7o~=sz&~!uzZm-OnmMJrgx{|34M$rYkBofp`S2c=Lg3+~{X^EBU zeo;8<9QQIB$k_%jZ*a#{>tHh~cTE7vTo_-Isc?wRUBKxn@B>lek~8`#d7-mKupw(9 z9nz@|?HMH&-x{Lgkr<;PM)#CD+uW7HdAncM_aM4!Te@L8LVtl--mz6ifaS(PM)zBi ze<+H2(X>io-t)FAmwBav^9Z&3fS0S_vo{n2qp_1R=ed#-cuwfu{*`Ou=c;h!W4lyK z$BEI$8gHTW_Hy~C(Etr1TYRPTj){-DkQr}fS;$?x)Cdw8l-LonBqTS> zSPUdnIqx}DrCHWc5z!Uy&ni)05|N zw_X_1ilAAIzMy-IA|~Jk{4~*_`cx}OAqZLN^s)c{NZVIEUp=AvBaObIhm5q6DC22v z6>D26ymSlpTb1QqDJ%M#a4RU?!mnb;!OZ1P&rhf%o@-mBCm!s2AyP6eXq2HRj0Vqw z*oe_nMz`AxBu39*9Ih$bD1lB8tnNo!kG+Rppf~y?mJ+l?In{HP8C?&Z^x*Dxf0g1QzlF_Y})Ob2H4KO&lq?v5&I=e6xtog*mYbl1N_~1P0XcX`Vhayl;@8yQTHsvvBK0l@h6Q;9?>VuQ@>&9-Y9W?a72^2 zNd=(G3)csb1V1Scz>sel0O-MLn(pAdjuVOwf9Eb{Ocg^Ap%_*qG;jT~Nx}?%Y(>KT zvn1#U^6oh#%+Ukfph%bwlQ0MGOqH(?j5K!q;C&cZBiK+{pfd(wULp1<=9;I-)Dg|E zOrMry7I`w~p_%Y)8&B#IA(D+0?1K#aqy5+@$<#PP9Z=xbz*FVHs)s1f-&3Cl4Iq>|LUj9KV$FzPL?IY-t3F$Y|Ks(}LMAd*tq>Vxqq3^x_ RuRJ^hSZ_A){6MdX{sV)2Lh%3q literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Accesstype_back/Controllers/AgyanaController.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Accesstype_back/Controllers/AgyanaController.class new file mode 100644 index 0000000000000000000000000000000000000000..954485d2b95c0761ce049d0d242b25e956ba8bd6 GIT binary patch literal 1315 zcmbVLTTc@~6h6~ZR+e(H$W8HrS187LA@KrY8lt`|8o}`51DV|pbznPFcV{8}SDF}& zKKKLtQO0k!l~zC!eAqd2&VKWqbG|wA^VjzuM6^uzJt{DI6qzPZq=>b&ycR_=O>Mg+ zcR~^E^L3+bV&YgPDX%r!LW^F+qX9F{q%IFle2PSFow3R5`*iA%J9-3sIhf?U2?~2GJ z=i=x9uVvO8szla7JGiQ}vTKZr3ya%~2G&ho`c$NmG7XW>Xe>}#zRH@ROx_CQWmE}F zB;sw6DCc*B1NOZ_Ay3Y1u&3Ec6;aAaL)uy#*QFII23cicG00`jtcrP{QVY<~mTG8W zvjmkqI{{cdGyii4Xxm+JSJuF`e5!DVGUTDs^?uD>O1mLiEeMQbr2`RXD8S>LJNAju z z*N?XgC2%e1Y|CUxBwr{u1(V00!2@?y{~E>96y1~`GMVBcv@$;f5uZ(^>m3BQ}AK=*RgLSB9a N_(kw^%CFKA(Qg%VS-$`P literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Accesstype_back/Controllers/AraniController.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Accesstype_back/Controllers/AraniController.class new file mode 100644 index 0000000000000000000000000000000000000000..d1c53a438a463bc0cad2f245db087e320faf7865 GIT binary patch literal 2456 zcmbtVT~8ZF6uq+;jLkwQq_m_Tp=myhfoy0XB(+QGkR~rCK@g!xc|fz?!A!F3y1TO= ztLlGhrHV>@=nv?Rs(NO3SsR-mTYa!+?)c8V=bn4!`k#OQ`kRQ>=y{$DMjH+P*a`%9 zJ)x{xqangjwOiuA=8X^5mhY*+cU=*LRxRM3>>T7N$7uRJKjD_ky{7frelHq|Q9cyG ziEIc)59?Qj-b>ulxT#fPG`|~pN*;@S8A{s~HP7=ESJL-FMvv=$(6qumeL zAAGQE!M)HrpDVl=_1xlX|W#D z7%Aymbr~u+74~G)<0=XOWV6qqdS&{bz@KU-{i)!zcRXYQLH;$i&BZ;f@&WPO#cp7N9Tg8XqFdE zD${L7Q(!3-jNO(FBSU|staU13R34_5>20Bod?!NXOl{ffYZ*cce)^Elf1yU}g? z-lRvg0hLEBhbugx!y&l*U-BIMsqaJ?wHoqMlPXjNMF7kh75DroXowe5Pr~axqyN4h zS09_kmyMNOG@~;VEA$OU$q4>~pkqBxu;yXubv#`$lVMH3vam9&qvb!z{2d#Ercx)O z8M=nOnK;lieF6&;m1YtCdhGjY9C`|;bNGDrj#x;a$ARC#HsDh%|3UL-^hJH?H&`Qa z^kV$WJmB1jGt4EPX@+rF3vm&*a6@NLPQJxXXTMFkOS0afyYS9ymwVXg+O`o$^DvhO)=;IOSFt&g&55WzVGAiD8sQP0fO&>v5J%P;xicE z>D2i2!g$yZ;||i?{RoV8T1jD8*kv%*V;Fb`T`(SJFfL)EhP%2Ug_Mmaoo**wEP?0c zu6`6UE($3Z7Z`w^yHfwqlX}v?fo7o7j<;YqhZ8dfuzW_FuU2~d@c_bHjWLuH-wcCE lKgL98Md;2L@HFtKRuEO=Dj0B}xH|^burugcru!|T{{TcwSrz~Q literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Accesstype_back/Controllers/TokenFreeAccesstypeController.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Accesstype_back/Controllers/TokenFreeAccesstypeController.class new file mode 100644 index 0000000000000000000000000000000000000000..83ac3e108ca3d256df9b0889c1cd5448f337fb3a GIT binary patch literal 3089 zcmbtWe^c8=5ZyB-#zsjf6w>r(0!ae~a!E=8i7AOgfF!lS#gw+wKj>LHKwue!F2byCq>zj zif2tz`o5}FOurH(joNJ2my6|jmM-Ss_+Xj%ObMtF3^&dn6S5HywOG_xh=*Q7> zqb`6JRcqobGuEL$qtwD1Q&s{t6Ewu=ftG1g_)2Js@eB6i3I5c^wwq2{9BuXi@ zC6y(Wu*)#|N5^u(xvDC=%yYJ{z+19tZ#hC$Jp`CP9x#g8fEV%8K!-L|t)PS;WTn%?{{J&=U-d%unCf2|^q8J7 zGAvof(cCE2HgtNK7VNj`&)Z5>_^R|P=;1Q#VyMBni?5zd>mr_RTcsBP?4w4cWtul= zj$SYtI1OSwL5qy;w3$c`y~Mp2@?s_FHRTfY6{C?em%juVMOyV}gs|b7Mn)Z*&&VSB(obLpRaXyYNW^=5%Mrn1H3no@m5<4yzXy$H*{tr{9wC z8zwQj5;+lFqpO%3p#$~Nd$53(1`zgr%;T^IgWy*%yN2HfKM?cjI(>+@2_5+(O!Pi^ z1lE{((|^#%z-ZmbR`-2_J?Sc9#%NofR!G@cvR0J?&7LjYsoCmjG73OyqLJ+LO}F4l9b&~$`P z?qSAsGXoKtVNF6~*Do3*OyOlK5+0r=;U1E_e+CKDG=m*936sqvOd~qe?WYMw22VmQ zLKv50c%Zew%@%?A4!OrMHv&Z_4rz9I@}wj)sFTM5nsn$}m&Ax9(R^rJF?hz{JA$ZM zoMbEzC&V^KPf;g5Ps9{Xvv2BUg;{*D&D?_c_zUcIH2lQ5q`kY`Q8 j4c1`}2H?;=5DN98;lyY)_%8-P`eEzJ2+8_})`|WFg$gwU literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Accesstype_back/Entity/Accesstype.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Accesstype_back/Entity/Accesstype.class new file mode 100644 index 0000000000000000000000000000000000000000..0388eb7c6ffacab353f03257f5565d94b88a3843 GIT binary patch literal 3240 zcmb7F-%}G;6#j0qn=H6Mhyq4wwU%0bnrdsUiBVC&rUF`_v{J1u$qK7sgUQAzPkrh? z(6{>1xANjcJ5zC{o$0hMcBX$*t^LmKLK0wr&Jgz8bI$$lIo~+XtpcY3& zVWd!APFHNJ`K+CdbV4z)A=Gd zo!G%}&35gI<=MqKt5mb;WK=y_FRt$D&y!}Ejrixs#;0fVv$qvA*IKp}k`3X`cooMF z_(0LF7Anq)#He5v?FUw^^Zf;pAkgyu46; zl-^8+acNh}MY{zGhfU~+DRfLau035_Ua%{(7CDnZ%LS`6XH^_ohf2*`a!6u&@_*Hj z2gaGev`@gHrW8U7B$VSO+R(1hPS>$IA7XmjM2By3s$)&uMEeKk#o=8O33QUDYQWRM z{;f0(%&}FbY;UPtylGV!iN^+DT-*@E)z!Eq3`;h()1x6AQspZeE2Q<$i)YM!T(e39 zZGsA#H9Iih$~fOQIRdBI7X`~57jIF1Xrd4Ai1d+(Bo4MBij0Z(a9VU1OuT_NMY?F> zExgHwC^xrJcmlI8drNkONlBIZWH=08t+`N^a8fTz+l2Wm&>}5LnQRscap=MtbxZ#xp%H#M< zp{G94f%ZzxDHZLCfzMfw`gPIo6mzYZ#cdPw80J|Q9M|zKit3JuyZDMKYh}fD$;3!w zc{gg(&?HR#3M%sbw&k6gFg$1@o>rA;;DcBQ^OmRn@ty99P!Vw?4`2q}X+$`IR zaJ;59MC4lFD$Z3WR|dZ_XstF5z@&nsN>xPW(*JV&_-&&LJDB=ITnRuIzuo+$DJy>U z!C%nx6NLy;{4Xvb`Vsy&0|y*MFIP(1eh;8y`vc;ZIQe?T15J%CO=W9WOQ){g-a zy_KU3cSg8BHaPSgJwNY=)E#()Bng2*p$6%#bM$x*Dhy$GFZg5og_lArgz#-X{K($$ zC-w_3{j&+*;lrO|v+PFB(dRh1UwCQDP56Wl&wF({yqX}dE#&a&(BO~IwP!GIKSbZ&FFN=W@0H_ zd}1$=Ttiz*PsJLXa+x@tav38P7bhchil>YXCrvslx@~Cg1W|AH!&6+sWv1MPZ!yY2 ziZELTSE!5P916HfN#pG?fiX%tuZ+tW=P!m;j{gLuIKCm;HA)6P=9$B2iyQx-Jq~5Q zLU$Zd{u$~O4hLdOqqxy1mq@iHZ{2pPah~Btq+NyMo#!R!a(y!^ow-O>VH=M6h2&d9 zoGnA7?ot;cx|7IW&~m+r?2?r1dl-ouYtR$c{hVJlF|cMvVrUKVk#$`6_1TOjhLjds z45?&b%4Kxl#3K5ejFj%1dUvkN#UO|bvc7iDQUQc z9{!{*!u)qIUbB$oTPfb2>NWR=i-@caLi0_mgKv#CtbKC6cD=xnDQixLB4&i#hj+sU~X_(Eu2$Ct@_>#!(i`AHT7IVbXiKt8*UrQ{>Z>sa3H l7S4rKDtYC02%!GJyuixN*F*CI6G4UXMo{%1IeCaY;6DjGHKhOm literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Accesstype_back/Entity/Agyana.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Accesstype_back/Entity/Agyana.class new file mode 100644 index 0000000000000000000000000000000000000000..d2a0c591b65cb12833986ff8a0a3e4a1fbca5395 GIT binary patch literal 3761 zcma)8YjYE26n-|@O}6QlmOu*ulmb~1c-NHWvzp7)&RocG+bfBgI7F91&9 zMie0hU76fUGH;n#$8wV+nT%B^xNED{<#{u+oE&#t+g(eJEUuZ38HK8#<*IqzOlD1I zF?oLes+DmSgzN?KCn|!8oU=HfATeE}`ieDY7wq}0HR3oq*L3ZiQ&7<6!QV`-TKR%q za4jceCDRL3I=qeGtmRmF)3p}n%xuvjNH4f@UR--1o;S@h62Yg(#;0b}vlkVpj=5qf zh*!Bg6 zJJ+{~K0cAnt<2|^ljX>0S3R9uuo}R;8PE_>&^%!~)>Lt2-pbFKOrUt3%b3|YGjGc| zV5;tt&5ZU;)Llqk7Nzr3UM6;La6ia}xN*op6L$E}Nro)E4g<}?GpIgW$x=B5l{^W$ z(?AP$GW|r0g??f77>J7rt>C9`SLf#Jb7>ghp&wN6U2d&b2|N}h zLC8Jyk5rX^r8_F_30x20tYyTyRy4D`WP@qH!3Vl7#pw4_2A;-AYGq7kT+qTCFt7`| zV+do=z!Nwryk`tNjDtdr7&z=xrwu%UM};?TpbG~TD7lSI7~I9YqRwRh*ay5jZo^=!=6>(~QeCFlnv^y{0dj zg(c}z1>w%Fv;_X5fmysjzb{OuC&w9Bn(542g<_VgA?$grb@)zd9f5-#RkuexCU4f= zoL|c*<`wLztP`I*TC}qZR$d1)67v^Qr@b&3gNfG-EaEt?J!Lz#J0vXIz*R685p#9b za;VZ*-7}@aR(0NnO9phTumZj9;Kl5Tm!f96LGJ z8MZI(=jlymuS>jt%fJx?bSpwUmlF-eqyeV!8=7plL# z2XKge7v{>>5R%QpQDTub`>7dVYoSCA9FZo;y$`d%M^1q<18dn(E~vrS|=f#)Nto zJ8#11OQ`EORYDAiZK6ll6!r!p*C5XfHN$zDqjp+i%c#* znq>~9x{{Lr8(*!Q5{-$Flmzp2&TAq5?oxHrc2NEzPxkt!Ed!_2L9bB`v>E!>PiQ64Xe#1~B4rV~$=4c7MLiK4DbR{~ zq66EPecE?3h%tpA3~nR1_ADulsyf&LLs6LMs7E7u{v%e8sQ%^svwcpB@!V(Wl3R x{{|oHSbNY9RXV7hBA+MQI8*s5xQ%zV-<5{vZK=^ic+VS$_q{I^`Fi*O_z&@!c0>RG literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Accesstype_back/Entity/Arani.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Accesstype_back/Entity/Arani.class new file mode 100644 index 0000000000000000000000000000000000000000..68c25663e17636615618569fa566db6574b5a886 GIT binary patch literal 3238 zcma)7-EZ4e6#qG~V<&ajE?c{0Uv#5DKNlFIbZ$H7wr&fw-B?SZ<70CZul1TZS>jGi z;u-OT#1j${uT(;NfC)MYBm^%*;%@@R@7PY7wB1@M@jdsP-#y>w-oO9*^>+YgQPmMs z(3dZlvQ@_}dXAr+%;%k2&3{mFZY|mQ)$Ek#yZ(dhWYzXu9jb!PyY_uMTeQ99?6sx4 zPTp4#a|`58ZwjW%-tw4&%#AgkE;$Qs&0Q)wlb%=hZQm_>H3i)P{IhJusn*<@?|6A9 zn=A0psT~AY9M7rRzEfDRi)#)+M$MP~@`LB%X=$E;2tIddYIZ(1zoyqaxzPe;^? z<${xhf0inet6J{tsk zu*Lf*T=C)s6Ybc?{17@Nu?zE*i4I|=$eaulA?%k-bP8Lmg(*4Ew>2aE3v7cK$6qNI zuG>{w_E}u|!2_WmUCl=#H{_5(L|~pqNk&E$B%FI|c9AMt4u)+v)_*fauU<9r8ctJ1 z-u9*hEzH+V>_<9g6}>U;O9 zUfQyuzB5qIyK{STl+T&hHU{}chc5p?nK1{&4UQC^JI?8^{J*5@%+I__5UC zztEOZpJ4ww%;Ai>fwOhQh@}xSVkI(~U=mM|UPpUI%OsjWqn1w4sAXhy0T~fU&lpW0 z%SsYtS*c7?K&c3n%%tid^&!2EZyTmc7)_&39$_34Ohp&I!+8!^488aYZ;=;gy1&HR zq*PqNDke#3n1O=}q!K9NGA@$RQ6=gUDFa{gs+b~`#5dG+nN*5rff01*#y{AnL-`lo zI^z5pBoBvV@)=~ky~bG}Ro=es1;RNxFTcLSZZ1foPk#7^L;V>=h`YUoQ8NE{_hvmi3vtC%GfW4iC)8iR}Tv7f;-8+r|KrJs;dS1pR)&)&Nh`-KXo%g{wj zx2`4yXMLVtbH4FYFj>0NBX?1BZ~5;GCjXcJRlbYHjc3P05@z6=2Va_NBcT_a=o)%( z$rUxty$_7+f=>!&f5u8ok-~=h0Jsr|3ijk2$ZvskncO2dgvqu};YjLO=Enfvw`ZBr literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Accesstype_back/Repository/AgyanaRepository.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Accesstype_back/Repository/AgyanaRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..143be38f70272c6f43757cbe00f0b340ee5b46be GIT binary patch literal 456 zcmbV}!Ait15QhJ(x^-6tFCKgb!CVv%6`=<`NI}>IuQH8eNViQ&l2!TwK9mO^z=smE zf?5{w;31h|GR!x8d3%3(1#p7B3?qRvuA+bU_7(E zSA3&e7C74Aoi0%VqnWM^#oniqmvR%Im;XXvmVaq*ZK96f`{!%O(waKI$_0+6eJbhr zP6u7JTo_{`MQu$GIQey=5ZSX`%Dkp`L<-;M=38AH!gkr|8VJ&aWf+BgObr}B; z{s+u3>4b+)pZlXa+?8cZB&lco;_F>qoqO&%yI24I_xW!CtN1eqgW(s)-?sz7T~8>x z>^LF}Ri`C(>)d&3S4D6jX)E<0-pV1%F!6>TaNFfx)847S5sqRoUx=0;O63O~h6j~F z;7Mi*KG`fW6kfDFCHF;5hO+L8vgi4VE9rY7!`+G>H0`hzNUymU@O|;l58m2!!M)Jl z2RO<|x;zErfyXiNCi44wK7=y`ht|C3L-QKT@;3cQJ z4CgDp!`&JWq+Z9HS@l{*Ld8eDOPSH*!^ZIKSDlhUcQFl7E17^W zbUdF4_1bSd=lXak5s+DCQ>cbeT)MP4UyLcXm2~Zj3>A4YR+UYUt9C$LZJtP28 zy|b$`E~E){JFRK%_bl88!I<6jF8ir;a*sXT+0k~3P6b)i8us2C=Qr#1-XBq^k5(B1LDgY2gvJC^hV*e$`T(xlq%&zghTQ!|KEFNQ6!xBX9JhKP)`e zFyjQ1dPI)+E@_%oBGkjT>bC<&JeGQ9O((-V9zr*@uMEXgCuc|(MEH92_ojXcvotd@ z^sOLo_28hGqm_l#lK*Eq(276<0RlL&e4CXn}7*S(u&R*E>M2`uAN=&!uR>C#GX*eh?zle&7nd* dW$2v@p3%Q-$=r?AQT+-VvyUgwl9e$4g zKxZ5r{NVW6ALV%N?vg}`4EQC_-n(bd^E~IC`{b{`fByr(5`N6X61dk4_uNQ&ejv45 zX*OjX>%)Dy)9{)v-I|OJ6t~<;#TDvY)Kmfc*DU6Y=J9P70AubUPDID zJmwX6vl=!%zwSlKth3FWey&)^{d4;}Q!!IRTk4AMle$o>Cfaqh^4+S6HQ$cZR6Fo= zCt~i^*8nT$W?ZLaI#aW}S{{MGTMh;>G>U1wlgEs}ga3CT4&KG2Kz>&Rt)%ubHqnyW zQ-0hyR4sv(LfT8>gK8MG%f*Y=YU;b`;1+HR44WK}4xf;-(9fBAi>y7#w)Tx9Jilz? z4rcSXOHE&Y>)-N-ZN= zWH|N?q`5Hy^}@vkxukaY9DIcP^s~t(F#F%S^|x*AX;N9~;)Mw~E$OqloyOsgkzukw zS9$Ep&+RPVPtB5rRUt*om_yqc|MlxivZm?fD_}b78lXiWN_rq*{fb6Uo@L%LxK1Wh#yX?LIAIv( zj&Z}n5#Ik3#nVJn3DLC_oDuOe%we8IERbSQaAE3PWOFI|Hlq<_JY)aR0;xCVd*pUP zIL+Q?k_0zXd^f>3|5iUH=NNH|e6mhbEhVWQ;1h0{M%EZjBcoZWWeYu3(=691{*Asi zM!Q)?&uU`@pJm)XF%FWuY`Ew9MA}@KJHqM_9+~*~2v1C`9%0J>7mktk`!F}1>vcRs zLjboa-5uWVyEM%#?OMPxf6b{crK!5Lm9d>D!1PI#7QZZ^#=QZ4Gk|A&$|b6dScD=u Q1PkBu$wIyBz#o8r09aBHrvLx| literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Controllers/ApprovalHistory_Controller.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Controllers/ApprovalHistory_Controller.class new file mode 100644 index 0000000000000000000000000000000000000000..7c30d018fb1e93917e0e20e75fa99a402e9e64e6 GIT binary patch literal 2598 zcmbtWYfl?T6uq;U7&{w6A)!f=Hi1533}MsMge0c4hV&(w6om*?>IXXZPGHhy$K9O; zSyld1Dpf?vhx~y4sH$gn*AMJP!s!Q?xifd}J#+4vyZ-0jx9^CkLQnE!F?!rohfW~4 z=L_v@NY9i0zO$)(9VpKeLFm+4tw0@d??)MG6}0zydwI$+ntI8PxZ`o0`nmB^G&Q6A zjtGuqQ!si^&x)RI4~I@Ss*J8bi+n8)#jXrx!xJ^%SDI_7{E*SZx(fE4uoVF5i+~@B zV-@`FGz9lU=LK&XkPh!2aB7iO$1)Hu!d_UDzSQfC#!3sjjB=aG6-64OOEwj#$mnui z`r>JH*bu>Uj=YSf>#E7UT^>kdr;9m#AOU18^L9OchA-IL1DJ^&ek5G3Iiuf7nW4S| z2f95RMpqX`^k=k^$=b1KI1TB${e*3+P;c>83-kizI7%OZh^av#Fq%JIq-}1Bp+#`2 zTIbLEO#BgvP;V%=T`dr!k8B#J3q`s~pXBLdMwR!`l1B z<#w-#>KFHgc7^8BgE3uNsK*Z>($aJ4cq*W-up{?UDkco6trqrGQ5W`=Kprm}kO z{7>R&ou_61Jhtfpt)fpwEeIB}X^q+#{y(qh*VuM+N@L&HRHZdMj2#sPP4T@n{qxq@ zpO0npV9sjiS@lXAM2E1^j)uCg`O+Nv%NV|bsI_S_81t~qIFXL{9>BT?%fZMnj+ft% z{TC({O{PvnSLib4cH%%&^Z_ii1Dc^+9C8xY75rWOl~_o#^da{1Cf+qnO!O^;Ge|C$ z|EBAUCv;12az^2R@I( zebI$;rw@)n@Eo>DQ#1%ps8nAx0LJ1=CIIHZ%6tr9Ht|dWOu#DBBF-=2gdrhWxr-Sy zPpOZDUe2ejG;;~`d(T4cbeA%bC| zkk;Z+ui6O_%edgZJ|YU;N)+&e%794uPg3JK^rilKAoV2+3q}TvIz0RW+H+X3V*pDh zwEpz&pc*O==1PpAocMMz*r^&!DGVA5o)+GuQH{Y>uwq>pY!-bR|F6ZWn1;R4MK?>E GME?Q!jFI2~ literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Controllers/ApprovalQueue_Controller.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Controllers/ApprovalQueue_Controller.class new file mode 100644 index 0000000000000000000000000000000000000000..3657f0a12f80efa948580796189500e84f5e08c0 GIT binary patch literal 5286 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 Qc#B2xMuK>s26fr`7iu2K5dZ)H literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Dto/ServiceOrderDto.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Dto/ServiceOrderDto.class new file mode 100644 index 0000000000000000000000000000000000000000..0cb3c9d035e886219c5a90c54b07a0dd64e826df GIT binary patch literal 7357 zcmcgw*?${X6+YM6rI9Slw(N03>k_w#m((;+Xvaxtv)08arCx&TR_y!I))z+b>KKbG*FduNmEWQG@hKU?$NbH4M#VxX6DSpQaAN0)J zda#@JE>#=ld2_savbwNH{p}jHvpvD8GRJJaN24rT`9b%pgtK{*MjiGY zwtKVB&Ub2*V`pSh?Sszst=nL5KPES6HcGYPRH0s&HydUhnbHv8S^aKroVEBInY3xV z`}6jod8y@YU$MZ7zRI#=ATZF6` zBg3^uiR(j*Puc*NvbeNJn2|dsUf124UEM=%^>xdz#TE50 zuVPj@)O{Sgd)iQPT4KDueDi(m6DX)>)gazZIT_MYT{{)M#hR8>xA0~Z%Qd9b?XA71 zS@*Pu(&?6H<#ont9xZj-nn#N@jom$aVzRJcRn>T@uvp@XEGV>oaGZDLLmGXVzJl#A zwRe1S2lmT2_Ill1T&keMh2&;P4tUZYR|8IQmx8S+>==Ja@cNQ#B_>-$hE@4y~+Pm&z4%(Kvk{rDk7qvtM5>ZcftE z^h1q)MBA|zo66O4V+)&}(dZ2Q1g65mf?36Z+2Ad5b}8`G%ci@H#p!1#lOz4kV#@oR zWzk=>XxRnx23pUemRef7Yn$Wr9O|PrZcYe%zs6&Z^tWaOj`K3eak#00?*bC+39?TJ zJQqTVrpE9UIbkbj7{4Y}ni2==@38|1d9g2PbeiiI z_UV4!r+?&pT!zNJ+ERVi+*#&Vhpv|7-NBirTTxg;c+b|pVqDkWVCfo_t9s1oEMKQ|b+Jpa5V1a97=y~cr z2hc`+_+$!$(N%z%mL4wBp z!M4A?0`b%WnxP&u!h2&q;ZFXIohmLQkQdpoxpC!$Z$dBz$)GH4;x!By@K8 zRT7gUL(BATIRu#AJ%SG-yx|I^^zdcsI78Y7J-kf&ZN>p30?Gj+sz;a;y-c|?l-479 z)I&OC#6UV^#Pt}H;ua~U$33LOMgpY6Mp92ODQS@sdeTEWVx&MiVrY7bNt#6h@{o=i zX^@T@89mLUj73W884qd3Xa{M=$m;D(%37p$J?kMAjSi5CMo#ZwQqCfE=s6GRn9&K+ zF{4ZGWKx$!>eRbDq>|AMQpw2c-Au|`q;5U$A*Ak7)QdJmI&EmDu(>mgMP9i)oU zr|V4Wvq-w$XOqHb(HTOmFKr^LvTpYgah0l6!0?0cB1&)2$APlqHabtA0O}CK^elZ6C?_7Ehv`#5 zoni{#{5}oTC2DknJ_FP(mdK>f0_DYHw39vu)PsF}FMS@US6sxq^%sD2@e0=Ai$Hz! zC9KoeXk9G+FUrJ7{G0MI3gIsf*sEaT{|xP}Uc~_p^KUXM4=~+>r148bgikK#`g-pS z5j)q&-U6Q3DGv*>JmAYSLR(%*A~(ahaR>(aV`wXb;yWF7ixkGit7>Eb=ZhXSJZK#QmCjSMohX;B&?{I?K*12r7P~Z zP&!o9jFFHoR1GUCVY`Y(Qo53k3$;W=9WzqWg)(AArEFKp(4-b&|9Vk`F*!f)^=cU@SP<{)fKygit>JM;e`0Jp#y#g98H>n2^{V}fFQ z`bB#BVD5Vt=m%Uom+8m3pDxqSxnAOu`=!E%7@t%4Fymh-e1!4y3Lj;>tnduu-zZ#U z{DQ*A7{8=&iSf${&oO>g;R@s5;bWQpaHH?4r>$Zn_}8jc9?<<==mK3?{jIe1ccDMY I=Jfi10fAi4KmY&$ literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Dto/ServiceWithDiscount.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Dto/ServiceWithDiscount.class new file mode 100644 index 0000000000000000000000000000000000000000..c31bda78b378e3ccdcb6a2072b57c7253b43aa30 GIT binary patch literal 10918 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Entitys/BillingPeriods_t.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Entitys/BillingPeriods_t.class new file mode 100644 index 0000000000000000000000000000000000000000..15ce13ae732557eb09c34d85174667d0b6d0211b GIT binary patch literal 3864 zcmb7GZF3V<6n-|@&2G{yZ38U?PzzM-D^Wz$l-5#OAljDN)++b{+hlE)rb$UQNPTC< zaUA`kpPcar$QPW^QOk@v4*CIS`~&;|{TV7g_wMGctt8GQyXT(s+;h);&bepr@BjSp zGk{~bt|OpeFqL187i=q=v)%Z(lg&E0<@jXIb=>u0c|2jlWE5R7US7X1o+~Y^uStAzVsd67xo}=V3s>ZJ z=3T46(EX@Ou9J;V&?9|^J-}p+o6^%ITc{O;iVVHPz@s($oOcW4i*vMP+f5Q5?d_{E z`!wwHX-MX-ZbL+LDw|(j%CE#Lo1{PWR6cEoK?+T12q|cra&q=eX?4jiELh}H#F0-~ z*+r}1h_SC!-HgK+k4*iav~s;2jNePM&r4+^Rc1su2TZhLhXS*LCr!f8W1>wMA~Z~R zoC)cPx$IkH#-?pIlTXiD1#8uISv`!N z6Y8Qb&#VS7W||e4%x#22KU4$A+I9W-#QczbrDSEfULC+Y1jBt7BHY4LCZ5J| z)@RDfO$xM74x8ACT@eH^V&VxL7rJLmJcx&cbkf8@Pda7dVNaSg(ThF>O1{3{{Iy6? z-p$wr)~CpKk2rpY)JU;iD(lL;!?V`ucGSQmA#JrFsWBy_at2yGKxNz_%|$=2re`e= zTS;eXW!hTvOVh|$#f&Ix1;O6Fq@d$P6AO5OyP2I!PET^XNs?T!i=`}2W>D_M?5T@6 z;tyqXMo%RYy{Eja;pV-R=~z;*yV{dH?Rd$_rtN|OQnt(QcV6kRzx6ulkq9ijZekh7 z7|RJK=eVOn<(RmP6{@VYHCuFsq1qxT*Fa6Z)-5+|V3lP$*j=+3xl&%ZUEAcXTyppE z#?+f-Z{%Xc02zx6cKd{Ie3dml*zK{x;We_`CpPk?iA$oin1e-;gLlMU-{R!?e5sJK zPdlQwbZ%zmh~QDdUKvt-)Al|V!#KcN4)V*QAs|{7M>;DdWzNQesUOoi`biI#H(*s~X9^gn3 zhpd64?&civj5cs|s5wVG;td=fZq5-qL<2|t%{dyx5Hq)#>;#<$1iSqM-($}=l(w?n z zn{_YhyyCuHx__KEu?F1tH|t&;pNjhq>7HMkt?rfEOj|2CygShUB{cQsz%Nj~fEK(t za2v|>VE+c5ltT)MnL$1h>dJ!h7ZzXMh$2@5hiFn5s8HbDB^>{u}BSQBGE$7M8b@<2$1Q6D3w9# zO>Ql?r89isZMjmbcX1kL$X6$R#aVWX0DAB(lGFv!kFW47C6)hA@f@ETrtvYRD20&4 z3P)$y-wLoXL&?Br^mdL?7@uPdvy>v(U{8FWQVV`!ZiVBPSU# zt!x@kgrq4{F|nGwSrZ9enpjBwEM1!RZ=d!#FHC=rL41UlaGrbA@F6Zx3NTUE@iO-v z#35wx3MCbzOz^9eG$M}THA*44{03d5q{}4!fyg~7R3=eTm^i-f@mU=QgrXB#8BoTk z^(r40s)1FJo3%bzuLoE0+Zg;Q#+E77S=-wqHur>QAiv2SC$sb{zkEU+H78S68 zOfn-vi?>O Rz`OD|yeDrc;`Z=9@Gm@@p-un* literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Entitys/CustomerRates_t.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Entitys/CustomerRates_t.class new file mode 100644 index 0000000000000000000000000000000000000000..a35d1cae5b3d33c9c094d0a468bc79d9099c466f GIT binary patch literal 7476 zcmcgw>wgqi8GcW)o4sUqv)NoHMWk&gJwXGeZj!VEI^H*J^q^6hXqN;8?lzDzmKV{HsMxjfRf zW=H*Q@Yy~bMch8eKn1$H;URRW`DRubl%S-bBExgb+Ww+cA1B|^sxW+2Blrm$@*Ne^Nj{|vD4t2aTCXm+YRbwM_fCQMK-T9 zsK+%=sFbq#%?9<>%gFq)W0OIB?C8)kZnD`oVNgH&!WEVFuGP(1AKHglOxaGZl--pn zXXb1NCkGM01TWA%_0x2md14Z*y7)o~hK8srB{!CcAPCJ7RMQ&bhG?<08!g0059Lnh zfsTwv)cd_d6Wu5XYP0XFW(s(whNrk|de)wC#)s~SBTR2MXg}e3qBEJ|1hd)r4ueb@ zh||4vAVTlLO?rh$O*ZIlw2zq?g9d3OqZxx%D`XoqqR?T3ZdNF7&@BobF;GC|j5&ke zq)^EqOQHJ=TCY&WpgR<*8nl^K3KFHp0;8V;DK0rVyNoixCu@*PXH;4wOh_Z@i9R_= z(KTcow5Zk$WoP5#(68Yb8~?Yh!N#ci(yQwWYJRfVUUZ9?LT(P|8v9GxNGOMst}; zj_azR*40CkyaT^r(C6t9Bzf2F$*BqKf=TS_vR$bb&;nXzierObHjTlCtR)AVauXZ$ z($G1$IMT_%rg+8&xsB+S6O{uQrRZQSB8sA)Js~OHBSxK)DjN|xC8*CkNy@sZnlEJS za+JP{3eoh^usWYzAE%S_J%diuc0BevzPAl*`hh_|q%$yO=I3p0fotmPlzYPKDqh2C z<5Bt%%G2lyH*Rv7XIS%WlayQXt|4^})o^r0UD(%0={$B4f;0M8tgvQw^sTChyHgE-BYTTXY8$cZtLAmdAgaCDri8)sPP3%y$+7k^{9}o zcy~0YguazCYC3eU!-#KSnY0p(0Sn;p@H4dh3_uI5z+a{i-X*TbUqcb-2D%X= z!6n~E=%!#o=omgiL&1d5aD0SDg9)Ku`3Q{#6GFT55n3Be2;I_0=+|G?<2G!m=N9+e1tXz6T*vzkIT;Xz^j| zRSbRD_#mo+aVOYe^g+C*3!0?ue)2a3mFI#ZNXsXr{9F9xhl0v;9jnQANckQ9@}oiJ zxjfe7Q&N7)Uw$m8JXhVCe5aJ(=`X)Fs5}?*ntWQy-{miVYfyRa5jFWPDZk5K{t96CMnGKnWB+$HZp(AW)nZ#2|eLsGXh{%jv^F2K|Mu&_{q0^f&qk zeG~}aWau(|45&l2(W~@vpp;liXXz6_oni#PLOuzU7Tf6|`V>%?*hQblzx%0Ml;{Y3 z2B=3=$)?W&^@>MnD?I?zhkbnqJqXk<&f~@Pb3mqe5pj43Xn-C@oF1fAk?6lD86oj+ z>W$F7_#XxAS1|T}hHl$EiUSLPPcG;BYVQnTH`mDCF+6dtJRFnd z0Y9TvDUk2>`t?7&9JUUWhdWc_>q6^g5m=TQ&!GfFQzNG+vSxuEJ;?ThR)`&DNPD7O z7?f+;3QHGif}9jJ!>%i9wMkc7&4o&#W*xF3(uE?SXGL6B&WcJ`wB|zTP_t&Om~^3P z=vgt>Rj}gH6|cEaOVq5Q)h=BqBYIZ5>zcO==`w0A!*!Ldgmj^<=vfKZE6sNyZj=m1mPXDAS`Ua38dTA|v6DT2W z!H3gt0VVlRv<^`J6&OM|6hh!2;Bo~w;*DF_&_iLD;BrEZCQWOrqj}6`t0qSp$sT_R zhn^B$G{u{>v`2_^R*GpW|3kpv&{)xg_#?LBzi1G6Z=NP}B@GRq(6fQ9SnZiZJzfgFd z@kNEpjDM-H!}t~aS)kus>$mC&U5o^O;acJWz3)Qj==V#%l{S7CYN0>M=JY4|ZHvDj H{h8>$M>a78 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Job/Entity/BillingJobEntity.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Job/Entity/BillingJobEntity.class new file mode 100644 index 0000000000000000000000000000000000000000..5f4d2e91ab5ed4fb193d99dfb876f7715d3ce0ec GIT binary patch literal 4541 zcmb7G-*X#R75-MzN-JsQC`z1GG*G(;>Yq_tN@>?gp>ds{#EMhfHKhDV*77FaL|(bl zDl~;cA^a#Uw1xJe@BlABUcx|Uh|AC!24j^|O6f3o@V%@Q;p5qsfyVa`eT`Hcctrr(O-}SGxT=WEv z1Y#Ppm+h-|v1${#w0_yC_!=Vah6e4FhWv7qGq;>Ix8bf=oyR<{=G(qo^BNisEy~1a zirY@T;Wm87t2o8d#+-(G`UFloo>RAdXJgH-HXVYDhA-nw*KUjFn^v!FD}3qkg)^(A z)pHtB+jiaFa(up5Lr%RcNPoqzbHOB!HtSUlabh-WT*QGU^VzOa9GsZ!Erz6YkBJOM zSP)KlvR)O}Crs=USCX!>DwB98Ok~BIqj!FH%_KZ+V!wpb3{yj@fZ{)5BG=+yb}owR zeiH}8r8k1Q#wJcpu2E~jySlT^5Yaszo#Fpo*m zaGq}3Rn~gf8v@DCO+J-k)}J-;IUJ)rDz>*EXmK7laS)?oJ#OM|jHM982@^+gOnjd= z@p18KIA!9KfwgF2GO*5=mTQ^?vCbu*T`rXuSd$WWr|vYGRra1}L7Go`*K%V8wY)^3wU%t5C*NeD zlUl5xQZf8m&=L}OTEiWkJ{Ne8H{I%nQ#U|O91Oc9brZD433r40yN#xat9Xd{9d$j| ze^gx0n7D>#>9V)C9goQ#rnq}V8?w(C_y&*a%vfhf74J8N9gc{-XaLdF za71in1BhmaBVs2UKy=@5L=WIo)YjhZx9Aha#i#DRh5Va+x9t!U5Jd$0FIJ$<2kF(> zn)o5q@M%2Mmp&3qo|?Xe@nPvj+Zu0biaw+0KQoxVFf6?snKu1CMgQ<%`g@0^my_70 z&no&y2GdUsOD_k!O}}5!TZ8FmhozUk(WcKS`nkdM_YF%g?Wj$EK+*Gd(5sxt0mRtb zprxj#egi#rbNa8)ehxi)bNVmP$}>|tcvKB(JT}As*MBBKj^@vBIB&&f|BiG%_73*n zfH|9w?O>sWKWXWNoV4P3T`=)?kh_6QUeCw7KqV_dP{}g#2>}@)D3Le1K&P!FL8q-$ zJ}ID72ukKtU7)g+Ca7$g`Luw{5JamBv}9!nTCzs+83B!ipiF+G1&ZC|d5HEj=Qn~X zwGOA2!V_3#iAV7ttgvB6@BsdaRr;cM82`YNv|{|dg*93_zJ%Z53$)^R7O&!qv=Vq8 zFX9|61HZ%-JVh&sU&A4G87ce?C-7xjX}rrT;8$pw_!mE2U!|47znS5AS|hl?e9JhL zF#d~?1hmY1v=QZ>p}mJY12g%d%vMWyg1U*x^|Mzuc!X=0cBPA8q-4FHp`f4Xt&*__ zD@?ep$`z$b-nuw-PrHmXSf?~e-_Fh*jU5y19Y36%+Z-Ryjy-q%g$v@Dw{&rdwv6ob z4H$WS2Ne~fV>u`S=UF61cSz%40_#?ObB5R^!2bX9?7=II+Tz-_8U%+L>bPDP^F4Ky$f}50z zh{xlmS84I?MConOO5#_%Zg{j(xWFTQ1m^pghE7pvT8u*A^L=h;mm?ycQN-Jj4r;eA z1SYzH9c+&~gd2O{of-Wi;iP2mq|Uq#2!>NreW!M2e{h@x+y&k?d&P*Cq;lLf`)zEW z%hlh4FM`~`*K%Lq!E+)-K61|o_DQk76WArOzZ=-6#r}R^m&JY|u$RPskv}{5(d{l6 pb|@K5uE2egEHXt&QlEMYuk`;)?7m+{@Dsu#_^G=4%02Wo;QwKz>s0^% literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Job/Repository/BillingJobRepository.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Job/Repository/BillingJobRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..1efc5457331fa39d748afa394f5f26084acceeac GIT binary patch literal 753 zcmb7C+fKqj5S;~~a#8V`@YY8!i5rc^2fRcKJdhd{h!4JyEsn5Qy3KYA;UD}WAN&A6 z$~XlTOf=DlcH1*MXU?3N*SF^v062gR3la>D+N#er3eQKw%hL0t-{Cdo@;U}8lt$^% zCrs!Rv|x@wp(h4{dxBD~+#a@#1!)F{N_Th|XkvQMqK`wRANjp7g7*SJwZ3?3ftV69 z$am0`M^vRb3Xnl%)0xsYOiWkWa(sObyJ8`bnQ*H~#QtV+DHQF&?sGpOwJq9_S z3J-A1m82ms1{Ph2<7DO~ny$LP7O`grHOb31RHWNjl^(^5AJZX&rmpSA7BR>)WQVvT zP4}K=Y@1A_^yepNWwC`6R-lS<8y7ClBSe(fOqI`>=FO~ literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Repositorys/ApprovalHistory_Repository.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Repositorys/ApprovalHistory_Repository.class new file mode 100644 index 0000000000000000000000000000000000000000..f8bbec6d93d8fcc03bcb7063c6d7b1d6cef76c7d GIT binary patch literal 473 zcmbVJ!Ab)$5S>)*+N$8ylOG_Mi(Xt2DkvfgLJMAHx{gcMY!Z^$N`Jvm>Y*RtM~PEG zT4cR=NZyc{dGGP^@wr$6z!@B5&{J?x`bI}W>xlKWvDUask16p}jL{ z_3*UrWw5Q_u*Ml`i?a1Ft*PV;`U=i{taJ)d$X+5g^ycHMenv)J2NbyoO{icv z@og;W)>u+-{I~S!N>#yNVk(E+MwxyuemlvFf4R6Ux+1x8Y`7y1&Np-m@2dPNS8z0L zWxky?OBBNfDfjg0LdA6c4gm?SfaC?xyS1*_m~Aw$cair9Aim zK9rcYN{duP4?{>o^3N}mxA&J<062mz4@wM9B9n59LTPloC6$so;a$v3E}gNXoHw(~ znxRlP1r~TW%XqNFpgs^o!IhwzPH%vb^I)05v9SryGfS=dR;2i3>;sR56MT>f68mb- zFETM}$e_`eI&O{HCMr_YF2qL$yL-V*BQQGg_osovNyP)1JD)){l!+Fuu*l%**Miev z5p&y_Z>(X*KcnWA*hDfW)=PBvCcYM9B!@O&}6K@HZ(Rv4_3DZ~0Cxbd0XggW`lRN4Ue0BBdw^#A|> literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Repositorys/ApprovalReturnHistory_Repo.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Repositorys/ApprovalReturnHistory_Repo.class new file mode 100644 index 0000000000000000000000000000000000000000..7ae75f62b6753b0b696904f434a2721eecf99619 GIT binary patch literal 467 zcmbV}!Ab)$5QZmJyS6HL_2dHx=Asu@go=oi#ljZ6mT4WAtl3ORrj_1(Di1z@4<%*= zwMe~q$V^CP=KJ~Q?fvBy08U^pgN}l;885R91DtJ7Zn_>6%>U6u`E5U_?{;d6>Oxlm6iqRmZjK%ZRmaG MKJ292P5-+9AF9uo-v9sr literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Services/ApprovalHistory_Service.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Services/ApprovalHistory_Service.class new file mode 100644 index 0000000000000000000000000000000000000000..f2a428c571eeaccbf869a6032def606599ed03e0 GIT binary patch literal 2443 zcmbVOZBrXn6n<_9q)Ao^ZK>#&_u^d!e^(b~C#-bn>rs z#)*R;96$S`9M9QoHVcGt@CzsR-gBPwoadZ-m%sn{<4*vquro*rtTw!+=}XITr8YN} z<0$vgtV;h#HDq9xS}or@vYdx1(4ODfj}9_O3rxJQjx5u$$bYx~LN>HOZcnznK(VX9 zdSw{&z~e0X;H)Sxz1McNYRZ}lRNav!*Y&iemFETmcPpNMXa+5x$R7AsQ@-^4pUt|o z+`v4r8l2y>;sCSM*4|6yOPgTF)|IRDhQLT+p(cal;J|0@*f5}HQE>*1~Xvp1TrsJ zFOBA7sh@lH6N_gih$yU{&Yw5O6Rh7>;44>w6 z$rm?@EcU#C_b?}rIZ&=$avXv20grm;ku6Y43Rv;n!wdJ96D=87#tO|9C)x~w3rXPK z4efU(EPJ=bx5;vfIheSe!TY33*tZj>20p-tbX$nFz_q?CiCa&~r4-dMk!X5YhJay9 zhveU{clO!iYLZZ|(i(HWXJ8Eklk2(n*iR*$`|Rn$jSJ~!|Xk9y-0 zCt?xf(G6P=s>uG^1}eBi{>dcD=A#`0yUdvgcI~uQ)0j zM{&T{2EO5dY#hM5-x>Ixee>j7_L?k8!23TM_=&yqx!r7Q?^N#Ax)v z`0S4|p4l#C3yp#=b2_tUzVn^$oHPCP`}+?7_wY1{1jC)0YTBOQjw`giA{|G%4ZAG7 z9a$5;z1(VfYKJ?o0}+VmG>LwOk+*z@+YTq^QuVE7x=5i9CoBvj#c--9U9lcCtHOK3DK0~% zsA}A)a8H_jbl9)AB@tQdnc-h$Bo3oK-w|CBGgPuYp;oo(F2-iLl$$%c>o6E5EDT^U zjnkM);tZ+xzg4kt7UxJaL!V(bTRhkd#O%;f5*HY6SKKs)79N#ptReKW;~bDYla1&GS~_-7`kHDpT$T-&>%gN73x^!?M<-Iq8O3KU zT*nMUa!a~(qQEe2xWp%BW%os$As<(>sNBYJs%#=HSh#_k3_~VT8#5cnY>(?+g~F6e zEi+Ht$)#Z9P7=4N*~9vEeYJ4cRDDo+&mEssNl2nQ5-W7bmSM6ja`_64_k5S@w<&2)%nut@(|9ioc_#c&@FNa8lphhdnfQJ8cTW+`!q>4g}6x`Ura SE{>lg`~>ph`lM610`LdMW!-=P literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Builders/Entity/Builder_entity_t.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Builders/Entity/Builder_entity_t.class new file mode 100644 index 0000000000000000000000000000000000000000..489fa3b74625752bf2c6153e08e280c40ebaa3e8 GIT binary patch literal 2859 zcmb7GZBr9h6n<{9n=G&hMp2{K`c?}BND-|z5$YS-AfN@L^`*rn*}`hrrO9ITNB9T& z1L_w)v@lRy9Y`BwmE@l_Hrg~6h? znyuJY*|q)bm360FvMbf>gzG#0v)X>q4z`Pa5}HEyBkPHkEnDt#_SVuPyXY&#oD%g@ zje{xAUCt|{XV-ai)n0I_&QjUF?7E(B`HtsS6%GXOr`a|7bE>}W7VT`I#7if(Ik;iF zcE$4T(t=f9w+S+;zU-Huy%kSS^Uu}-eBs)}%zR<~F0VfFmKJ@g6;e$h&-oQ62s$`- ztyP}u%eG%&YN@{dCS;V{ktn%>`(&H+Qd4Dbb;*02t%uI2wX0sqZUd7yp(CNtHRZVW z%=+q*U75GYkc8wFt@46ZabzDUHGjn+Wy4edr&#pY!T2ZZ+3s)2BFa~ydB;R2_B7y< zyy%ac=n}nN4Qbfdx0!|h1=fAq_E)^pZL7j-KC4MXywLF5(|j#*D;I01kn4o~^}1E& zWXxM zLcFiPAYorI@i8tjlH0R|=?R8fP)Jnl>UxTkKvDUG#b61Pm;#%a2|=(vtQE~;4*bC{>fT3fSSQZm$B!CFb0dZEQ# z-hdQ$@K`P8z|H4kldrGERIM4_V(Na~l%zan;0rRuB2Qw`L_tbR9v6hiB}wF=Li?Pz zUMbqw9eGYYo6{Z^k`xXHE?cKhIP~&3&c2CrM8*-5SIS+IyS>~QT;*Z3+vtEv1)mL7 zF?l9jJ9xxi!8@G#-;&1~NaP=Lbq#b2|_sqTD3!kk?a0>+F28rtlt4?_~by zZp}+w6e9DTf%*4$Hh*ll=B3RagXmzm$7 zrUwT$Fc54h49yJklhcO&Ku218jlC~m4yCmXWNV0#oKDC{E|Jy+lX#8P3v{OSbfO6~ znoANinlsW#0T~e}nKo)5?Ii<>Z|T1WVW9OIJ;ynG$SiyC6zAEKG1BSa0(Ef=poots zX}E#w$WhWUjZ4T=N}$XabdgdL6?X9$B?II1nSq%!{=%Ll)ZaLeM4W#H#Y3Uk)-2X) zcaG$0GWEBT%Lw?(Lpn%Um8AZw@$`C9I#ZFPqRu!Ul#bJvS2y*w8m2Bmqj$RV7qzjV zK)v1h6_&^7&b&Z!XakoYihd-g$w69+P7Enpcr=>RgCo`}xMZaD;HY=|5{!oqqiExp z#Z_Emv^odd1f>|-ag&5g2~Oe+$(It0vy`7u(gTveLE;S+8c9})#BzDVZ(|=5MGy2E zpoY;}RS_)F1ZyBSYYAqUoW@&u#C?f@JdXT=$-AkkSC|nlH}Gld&IUdc{h4QG# r5BS-@mv0+NBN0bRM*cQV8}s%RtnFWQ>%5JzqosjL!K|0LYyV+pt*}z7hygGCmBLMoCZTR4Z4tyY>~Vwv>ENwFz;-A@nGjRWZ4h+DSG+BB`DsKFW91%6tDdo;G zy5%X-qA?hvZzPq7mN5%skbxXUGnCEKc|3v%n0$aKn5Aqk1JmvjsBDf-8JLF!_g{2n Jqf}M^_yp8A_;vsQ literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Builders/Services/BuilderService.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Builders/Services/BuilderService.class new file mode 100644 index 0000000000000000000000000000000000000000..92150d199ffcb73e61b60c95c4c468310fed8f43 GIT binary patch literal 42862 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 kuJTQ@$SG-u6xZ2cC*NvH$=8 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/BulkUpload/Controllers/BulkUpload_Controller.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/BulkUpload/Controllers/BulkUpload_Controller.class new file mode 100644 index 0000000000000000000000000000000000000000..98eae1bbe8f23614f20ef04a88cfc823f67a6c7d GIT binary patch literal 2551 zcmbtWZBH9V5S~3ujLn4*Xvs^PH1Dwu$+d|S(wMpd(pHsBfE~l`1OrLw`VjRMlti&b~8X$yPqV?hLat&pz|)9RL3J_di5brRRAv7(Hou`<5@b z;|gW1h0cdJ9mnIgweGpf_Z&y~LB_q4y7QD{G`q(SxaDxSZM|&niI!rN-xB_TYzaoy z#*o}e#6aT2S7UVPRp=_YFScbMn~qp@T~Bc(JvRW_hUd4fpyNxo{od#M;?VOySWUs* zzz*x&G(l%gDo~NpxrTJbi*Uaw z{MQ_H8O=4k7I(I}FSVUGb81%t$kSnWO9>jdUg`#vsV#mWY_2$?cco#8egFxoo8?~B z%HsqxdUPsVhoWgUrE6!2+Vldo!8;w$3Vf3X+zCOzbf!9^8-sn>{pHe>?QL z*cQqbic1H^T&diML?0^YSPdB{5LVcdZI`RiM}lW30#?QWQb)S#$bI`s^xLMHE1Pta zZb9NejH{dkx-cl|Zl@>f`mxxtG0&tVHM>9CjOwL0Wi%Wb9)vZfdS^50vp!1uH%5;~ zCT5eX-QLTsX=)ytbe}9nh6J{RnG_l$(-scYywmLN=!p4~=rJ^wN3Q=o%GP^Q8o*PN z9@8@BP}qS!A(Xwbp8hA2Il81a!vRTsZ&Hm`@CdfN&~J$!rJjtJ(+@@Fi*R4Ri(xbR zw5gMffF4WZ9Su}wrqXpxkO_R&&|p1Au;yXubt+jg>)9)ukLR$6f zl!R|^>@*S{oFw52E_rnb2~~Q8dYXhvmV_#@V+hc42F4S3;>(``V-*=R6NRJ~-=^J; ziMWXi-p&wF=y#%k|By6@g#WlSUP7kycgISfHQ>-PVASK`EojfdV@3d$j;Q|P-f=aQ zAOi+-<0s+fbl)qP$pqfvSQ literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/BulkUpload/Controllers/DataImportController$1.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/BulkUpload/Controllers/DataImportController$1.class new file mode 100644 index 0000000000000000000000000000000000000000..6ac7857252ff0b109365a5db6e07ebfd375bc573 GIT binary patch literal 1000 zcmbVL%We}f6g|$9gn@?gDCND#A_ak|goIF{E(k@cGzHYO-6Ch=B$GJy$aZME<3IQc z76^$2AHa?uLR?QHs052DGqQc})qNe`;~&4ieFyLi_p2x{yhzN9TPc*5p1+){=|QH9 z81Syq-WsK(b^Mj^VrP~a>;GDtn^lw;9*6Lua9-Nunc@?XOr6m@F;;Sal1aW#+nyXs zD|I3nDt?^0=2NO0FIl)vNjj-c{T4%~wRDz^Lxxh<3}g)q7bBEWsiTNX5vsV%P;3Q< zl{nS%&3x9Ec3<=r^}iaMM5sey)1WVmr2vYdy=*hhO#;=}m40jn?}QaIN!LjU>pe5K ziF}=g%Ip7|!jp;kAQ)=Bbfkr!Tk`vqcX95KbmEYL&wZ-+uE-Xu5_-gY-llrgKI0Il z&Yw3RPw}=tk%@0_Eq=PuZJj9NDDNrUDsC}6Uy=$D?%*!NTAFinKr9`YBOT}~j}xgF z-nUMh&wGi@A29#IJ8Rj9jU9291@yx(jU!{HeC&P3_oT~=c5++$)SuAQq8+WJ?JD7% zba+5qD$?U(jYc3;kZ4tL0R`0ZM^_*Ts6Tx4g|@GVK9g3!3hkBP%YLFka+Jr_aRsZS lU8PlKD1U6AglnV}a2+@Da}77?EMXnDagU@r1%{IJ{RV5BD);~Z literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/BulkUpload/Controllers/DataImportController$2.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/BulkUpload/Controllers/DataImportController$2.class new file mode 100644 index 0000000000000000000000000000000000000000..e6c787c4d43ff0977466746b1528639706399c3d GIT binary patch literal 965 zcmbVL%WhLK5IxS5gbNMjQObLfMG69=3JIY^T@Z>?=@y};bX&PMPU6O~uWW~=JAR1; zLSn%O@Bw@dVw^@Ii!M;^mB({N^PcgqKRkP$KR9H)u zksqd$6X_1ciKhJ5Q=18WB%F$PAuPqB7}~2Q)7++_8v8PgZ2zNhVj`)X#3m;Vd_Y4HqYX}N76~73qB1>^Hlk;jQ2&pfLfR#?**sKuzg{$ zEZJ$tpW3x+GHpF6UDQ&=J%-mS&N;yYJY?8V^Tq4a3ij=piMuIhnbZu&t))y-due7% z8jI|=QtO7?=dqMQZ1tISV?GKY=Lgc~)_A#Vf(qwUPqJr>bX_gHmmW`OQHu0(SfdfQ zC31ACxPk&|^A}Yh4yZqU_KnDQBwq;?utu~Jb=hw;h)?Erb=<%@p__Ed4COBklyHkc Z0k?5yesAC|-6d?|J{}QQC&L($zP}9*9)AD; literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/BulkUpload/Controllers/DataImportController$3.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/BulkUpload/Controllers/DataImportController$3.class new file mode 100644 index 0000000000000000000000000000000000000000..b170ea24cb21782f29ceb556bf357133d02a8b5c GIT binary patch literal 940 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/BulkUpload/Controllers/MappingRuleController.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/BulkUpload/Controllers/MappingRuleController.class new file mode 100644 index 0000000000000000000000000000000000000000..15528d66e21cdd18b70542348928b6d747b05d51 GIT binary patch literal 5709 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 X8rS9Kp@!#xaeZ!{dJld-mYer~YpiS! literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/BulkUpload/Entity/BulkUpload_t.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/BulkUpload/Entity/BulkUpload_t.class new file mode 100644 index 0000000000000000000000000000000000000000..fd503badbf3634c660db690b8feeeb2e8f7c3358 GIT binary patch literal 4206 zcma)8ZF3vd6@FIQmDcjwk!2E4leP{u#jg=>Ek%xjgea~W+X;?ih+8mgX|XnzB_pi@ zp)Zt{ciNeLEz>DqI?b1KrX7lzftgMjW?+`2B6_v77WBR99iW0 z%Z;5)r?zUdmXdk3V3*hInk(bLse2`t#hqE~|4_NwFthiMJE+QS9oq=%BI(>|VF<(i zjC1WGN$4&MMO2BmMXM*ZQCnnb=G-F`|DV_=EoDYgA{)~lDnPSxa zvW`yduj=F)6}RMgrE2k#UE@)D)DiRIgpQpY4bKcVB69^8+5pq0qm?!fox^6f`oy|S z8KkS3B$ePi*Rac6vSS7RM$ApFC%B7w3lBrYTCgiQL5uTI3zL`<>#T*_a5RA^&RNJ} zPJHJrd>3P4{n*0yeCsC`zVBO$7G^O<@l`v88?4HDRlSl^(-0RKjLWSwl}DLL zX`Z(5Q~ZoOyR?#D%5m#?mcHiH8)f#LsM?n`-jTmG-jQcwJe1MEczbcvtNMC~!_{zm zyLtKEvkkXgbZREHDYSN5-0&vc;(P)n>{zJa0cLaBt+?L9;@Y+F99aICy}RpFSpC_s z`kLAZNx5UGITPH|@XT0fJ8GrtLi_wawx*U3VPkV7Tc{fICVoz(&y2N7LeDQL_L(ui zuc_r;lI4D_;RI!W2>Wk%BWA{$^(4_NJe^4?!)q3{M5a8$H95mKrBbhJNL;QqY6a&! zFS>@2a7|B1_1Wyya-Hvloa)wdILSK^tfN8B-vgz$Dg@8Exiw#KJ1^-rY#P9uWj{1phe+6n$zJ^P@v32zzI@MoB_uyViVgIRR zNgiP$v8n0zk^V>5l#cm`;Mn9yeJR~Xw819B7nO$l`DxUH{$#)OB1H`W{g9&nL2vr; ze(6QwE&3yh{)fHk@9vjgE>4R+spucXj}9%)@%J&^FTLEy7X65#f2eo%r~0LrYu=(C zRrGwz9?V|*A5}3#1$;g|^;a1Bt?7@Uy#ph9Yx>{NmS(2*a9Ry%JTk-ocO}NbnPra7 zWcAt4Fqqaq#mG%qvuS+~k2T@BtU*XF8%rC4iG7OHO$?=tbSwl~$i@j;$eQW6fXo0C zPn#i7K082AKAT7n2q+PN2GWTT=t6dopbJ?mJt!b60MTlKbh)b01MTb;fB&s}@i~^T z%;Fuz|8bEmF2Wo49xl-r#e?`89;c;a6@S1AEd%R#3zuoda0A=)FS9wn1P51WnfNo# zV~y4T{(?vG1g!)$O4?jXx#h)!*OWVmpB$jlz*o7CGPOef!=2G zx-Id@b@>82c;tA9o0Dc?$XR!9Uw*GJS~W3P38_hNnJ+3q@!Nzv`&vg<`D`CFak%kd3Pl)fLQ&tI&z=T3GQ@5B43!pRj>vxNigRz@`)A)YXz9wfdh{$LZx(e}} zRWuqJE5K10O+XW)ce(;tECg#K_j?0yyc68UcL@Yj%mY)}v%1GPk-Ozb(Lu5Bo^Zbu z%axB%x|+K70m>qdJycWmJv3_Y literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/BulkUpload/Entity/MappingRule.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/BulkUpload/Entity/MappingRule.class new file mode 100644 index 0000000000000000000000000000000000000000..e852d9001b2c7888f2d017e10ead1d8c4f259dd1 GIT binary patch literal 4223 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/BulkUpload/Repository/BulkUpload_Repository.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/BulkUpload/Repository/BulkUpload_Repository.class new file mode 100644 index 0000000000000000000000000000000000000000..acc8288995699090d4227102e0340b30440f2679 GIT binary patch literal 741 zcmb7?$xg#C5QfKHY0FYp2~Ih(NLWZ94rNE}0fnsv4qPg?9YWgFjvS{|pMZDbzyt75 zh)F8ZAb|u2+sWAT&&)UT{_*+-0K2e~hZKYTw(4_@!jowDS?KldeNTxFucNO5*C;(o zSep}T9x@EdT`>^c6Vl<=tuD4r9&!x!ly-RFYgal?TJ&+KbdPt05xnaQiuEOY;fskN zgBb@6O5>W*6?ri@S+^(p4HM~AHtb*Wt;UYYTup_+YCR--A0OPnZFzVqr82^}N(KzL z{ntEiL)0Tu%MOGWQer!es$D(5vo@_-{rb{s5w&I*V`~~~_>3B@aUD%bg;2do$LPn&!2ArMqjZu1PYJ8egb16~onsM);WIIgs$a2=oFZprnUrr+{})7KmAawshYJk2eT*d`&n)t}`Su*$P9l=r*{H1l}_+0iEG&NjQ9~eNf}x3yb_R zoGZC?%dS|SQ0M3}DPIX9k~=NH|HvGXI8(L`dBc(x!*1p@h)oJ#cH;Sw`Rpjl6JWSt zU<~7FT*7P$ml^K-&w?0uA0JSkO$q;WP@i%`iD2QR_TyFs#S(R&t%@Xa!YXmJBRog<42?*$7ZGanx`Qd({X6 z-fpR}vFyAK6Sq_NgfbG;>eyEUtN4`0f;cnG^b!)AZOWM@D2S<8p@SG0j0U$U@zq+V zsx;2W358)+6!&`u?t@_TP(5USA+FqGPm?*`Zc#H(arQ@=kYREoO^l8?d}-hT3SsfW z9<4gmR>L_dOSOC`rE@46c!*81@VPu@aV)gRAX`x;j}1KOIeEzax+j7fsZU=S__~KS z^y!&_EoEg;jdt2LuiCV$l+AMk-zXb{7##ahHt+&3sau3!s7s+{m-gPSvia7)cle&> zfNXl-l9^q#6cesZRZL3mtA$>6+g_bN5^5J-8axiYhv1fKC5Ft2E7_-MUH4+-rWX^$~FDCl`yC$*0P zfE$5}9Nj8@x^i)Zn+(J7Gcl5SpJWDELQ*6*Nh*@l5y?djUEDf>=j9mB=|0bCdc!{( z@XQes!{@jYp%)|cbcB9a!yt=#;CPObeI{9&_WRt)T^e-7yazYC#sj{Tu$Kdy;e)s(h{0q8&HvRwr literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/BulkUpload/Services/MappingRuleService.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/BulkUpload/Services/MappingRuleService.class new file mode 100644 index 0000000000000000000000000000000000000000..9bc09688d399d6f234ec9ce40f1cd654f9095589 GIT binary patch literal 2325 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard1/Controller/Dashbord1Controller.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard1/Controller/Dashbord1Controller.class new file mode 100644 index 0000000000000000000000000000000000000000..c760760f024567e12aec352f109e358dba7e3c55 GIT binary patch literal 4817 zcmbtXi&hg?6x}y~F=0@|imyIYY7GcZu_(5oC<-VQgo0AF);P&rU^HanWCEquzU|`^ z`WLpVOZ!->AJA{=>gv8T!%QHF4Ro={uI;SpMz}#ADZBQn9dRE5BrMnhd$oOohySKQWRZ^4sRhiYZR>7=f zea0@iQ%14K91&&9ijgmqgM=QzJ+?8$Gloi~E1eCwZrtIld{~wx_o8jCr4tZ%SwjnU zB=IVa#POOy?^Y^M!%Nu5B$}QO95Y}{K;JTD&B_KVZ%VpLwi!mrq$d}pYf9I!@*H%e zx+gsym0c^ZPg*6Hv?b=O#e(6M9a49xYQfMJu?*AVK*I^VEGzQ2Pbbz)cr0Xm87Xpm zH5|tqjISDf=f;9xE3Oy)$fmX138YN{GV=LMo;o9c7q?AMe@00)t=QS+g&A5^@eOEr zQ^j{-o0u!Cw=2lmwal_@mh&=WnF4!L6E)I4T0OfRiu`CQyq#@0`GJ_cYE^X@8c~$I ztKlpL1;hl8LH`Y@V{kz+XV)ee+G!O;9nIA_j|5)z65y+j*H2Jq*)_}5A6e#OfyP6a zG2Er~!#1s8k7>Ao5rLQ@et)^hLsMopyV{CEX37-`IiT0Es9aywa9N!vhk`Y}ka&}N zrN@#`kTR)>2KfqVs!@7_}s_XR%^Ek(Lwp`Ni7@zS-n!YM4uD`8sA%^?AY=6`BD9{*IKK#HR2*j0{eTy&plw-2W@O}&MrGS zIc}*&_ds~OMBVEtWu#u~UaNm(nY+>UG>)vPjwE5~fb z`Ps%5I-i2imY(O>^^>=youA48upfK)sg`m9I*z1JLQO3;^up zs0)4Ee~LR43I2@F7@MEadw&h@r)znCtJ?c1TGhAU{S0yNy2l_B;>UijhWEFj8qg# zl$ncBpK(dt4OrsMNRuk~$K&o!!O+C$UhuMO3s5v9tO zD&6-n%iJivb@5x1m!(9E3&2;(CGY+UY>}jI{5M7O)fC+zMe}tiQc(O7y6J%m3dV=Q zCZGZalN4m?P6T7UU`7~>(sjZk=NUeV&MyC4xkF*y^+5QtPK3;;{3&Jv*M5;?a4%Gp zQA1JLY6wq=wTTe=2qAa!H^>;Kn573lqT>%dyw&t8N2>cq~FzP3?u@mBN9F6nZuaH~}-||%q-+2M3GyHqt EU*#^Qo&W#< literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard1/Entity/Dashbord1_Line.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard1/Entity/Dashbord1_Line.class new file mode 100644 index 0000000000000000000000000000000000000000..c2b73df1b93832f6060c199bf3f1b70b547e9979 GIT binary patch literal 3834 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard1/Entity/dashbord_Who_collumn.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard1/Entity/dashbord_Who_collumn.class new file mode 100644 index 0000000000000000000000000000000000000000..f762c3f6fa982a9e8de69f1102e6251eefadd47d GIT binary patch literal 4471 zcmb7GZF3t}6@J#z>douKb(*wFQ<63=_$97L2rbA-L9v~nBE^m+J0u0%wY0G}UhgW> zDs9SZp_J0{(gHKg^anIw!c04WI|B?;_)uo}1N{N;Gl24(yDNERtFiG|(%EyK``q(( z&)t9g_m6)8a2CH#VnD;0nzxy2TBhS#es0!mt*?4!vwk`^=lZsPCs$XRW_{)Ay0=pE z9H+hMCK1;#eAB#b<{Z;q%gwLev}%452@MY_t?lJ1R?{{e`z3SLu?TLd$7QS8vORaH zIIBT>R>RPY=eB&)^_NYjZRzw%{xl8g8a?u@dco(~lHzRpwnP7XYg$8gu}$wbt!2Aq zlfU4)o^SeOZfQ8C;4kJHvRBKu+?tiETAK~8X*yi0-fG!~p{gO}wjD=;kExK5Za3K(VtTFqlIighv;W@hG>E>~BiyvCa4hY`qbBV*&c z%lJrG#-e+>Pa#K2j<>n$ZR9RluGN%okW|ljbt?@G69x5PG+cqBkCNwuW{V)(p)M|T(s zz8Jn>;J5@K{Dn>;#V~E)akZk=lf^@0JCiuR%yuYS{<>FRFr}4zwmk{A*NMZOb=&^R zIstY4?0J-miM8vKhJnKD0g71NDWr?bNMi3S>Cm?=~3g&g%0S+`?@GFW^P`ea?1m|Ct>P6K*xW zEYOz>d<)+u)NC{?mvK+^>#ax&^msI#!gtxGr%rS`K<)p1A$@rVS7+P%aQ#qmb+dXt zg&##V1)rK9D@`}q)ck}+8kbn!FyNt~O3Bz___?Ivr>sE5Yd34wMO&`HY`^?HDH+!= zs(kCcx7aKVt6pjIE~`0atHn`tvJWh{s!Qs&I29KU=%z~@n-4pJVr@Bl_|h>s7pa2Q9f z;~_jOUs<(^(=l8z%-=)gAnaIx7?2SeS_hStUE0E@2;ztg4aawGq!>;F8$G7>;Mm;F za#Fd+`9ii&6P6(4GyEOnCr4T1uRig6jK51^0F(R{2r!IO{5Aprrtl=6G#O}n5S`v1 z5vSlDL}&L$#DTd7(bM}Q;xyiaD8E0Vb2!gp?M!x_iTkKLR609yIf#1<~9 zM+(Kur}&kRPyHQ(+4zTe;4X}*Y1-wfs^kX=s^pFApn!}JM5zOc-(zU8U6bLJ zAmnbZeuO0~vpo;vZ@9{7F~HgQJA9407$)#rT%#1nCA^92lysEwI-aAHfP)Quof0o$ zSoj8|6yCx`e3McdzhOmJC}pt4sr)>pLHwDM&ZJ~umA(})l1%*@2a?eKgCj}A_@AQq za3H4l77-SCiA9dfo80aq^JPs_r&E{eN=iQI`0Cx1=uCv9BxJv;T8M8sT)JaAX#b)v zMbbBhr_aUDt429CJiX2~NexflMRIBj*7Kq-=i_3?#zRX=nkO*L=XGUb->5~YtllwQ z$tRR4(KWG~f>o7#QkmFD;i{xE9qV8A#lX!l#u#418rB)3j#pt*k_+->++^G_oaFNc zr8qNCW|^hz*Kh`#loIfHIl7dRs)+wY=3^@2ETX2daQyk0-`mdvqBsn_1L$Dly{ZtF zh`_dyJGCJ=*$dvr_c4S^QoELHuj+5(LZ*o?O1rC%mc+~I7ypD?*G5|Jqs>ZR*}|QX z?`+|F(hVa2Adt%}X5__;B-&~)2e9rODU*CTKzyUm}K#9TOK##dW5i7L(tw@G_ElgPF zU7YAdT5Ym$GN_HjRPb1+h@bRFIItC1WAH+oh$j;xRdi~^7|*r&%0poV zjhf-MOd8J77_6U46*jX@$e{kTv*#~i)>c;9D^^4`@QGD}K}piV+A-Rp4nGJt)uKrl zR3o&_Y=|O6!(hiD=bTe3WA4ku(%FrkjFhmcK?beAJ6>Lo%WFd1?WV+YjGtv9`!T*z zN?T#2R>X+=OXV3&79{$ZqR9xYJQZyE(`jbv^|64LVsa&Hw-a literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard1/Repository/HeaderRepository.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard1/Repository/HeaderRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..d684f017f1aa4612f4878a91efa32184ab5baf7d GIT binary patch literal 1209 zcmb7DU2hUW6ukqbVEw{Y)cU!as8o|~FuqYWmO><@3ax1%Hwc z{s4cJ@$N1kTMCJNATYzd=bU@)nLmGj{RV)y@GJ`{25-7*WNYM(i^e|U-k_tn7A3oh zW93PsbYOo%E>JHnvarD*Kjaf`JKXKtC!Ha7O%^r@P3gYvjkR?9J}0|HB}s4tT?!&toH=D+w@8E2){{Bb{zcZ zy2@}Pl}qC6##*a}<8yX>@lgkamYHzJCvhdqLx&8vURgb@Mpir@88V3WWStFAqZJR^ zmg3!q5`(KWnVet*m8R`8ns;77zeA@giqtaLF0L@=#f8g**ug{q%Hhb*r`oz9SW$|- zl^SU`Q9*mYn^-%8m&F8b-8I-pU7iYxxLPI*7ctdZ)kd}Q)mkvsnkUEBG|KJD=hk6$ z|9`y6#YTkj+iEFacd;hJm=uv>{>2%A3ZP@t^ yw`UE7sNoLWr9b0_d&>>GQ3Ju=hX+)(1o!Y9+#}*j!{dng$rR9vS~f|+Q-FUh3}fm5 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard1/Service/HeaderService.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard1/Service/HeaderService.class new file mode 100644 index 0000000000000000000000000000000000000000..807c916d52458497c0620a7172ba7e99bd8649a2 GIT binary patch literal 3383 zcmbVOYg5}s6g_K93`USAkc6hMw5cJ0N}5+=niNPVq$WurC6BgoWNR@>ghXYT48Ns+ zqMhl`&<~w{?vLv9>`Im#W6waxGg|HS-E;5Wd(N)@`S;Ji09?gR4jF;Ts=s9h(sDf+ zns=@GX2rJxd&XRo!H!dv=908*8N{<3vH~YwSv!{LT3*e3Sa~I@Ax)dwYgKOhbtm+L zU4g5mF2Jc%jGY>a0_Rp6Ug&Jeb*JuBTsh}?erSb`@6`ovmi(Y**0%%4t8E0#<4Jj~th(wdRw5=xcv02A+!rKBp zh4FQP?1FF0JbG~4zyJ(^<0Zy>(AcWT;IYLW37jhVRm)ws0!PhbV>aA$xW(yi$#iT7 z!}qOOJJPm7OW1IqA9X$1v4DBREtA?SGTij-N0uU7C<8VrUz4FN zL(6eFIaP?WZG?_%mYjOXuJo@tHO~qg0XMjCz@aPSI`5-+yQu12Fffh@f!v1U*>kQd zFw#WUT3lvwicrNICIyCc1(Td;NRzJYF5B!}Vfm;8P-%Q_U{x{wGp254y6_r@)KDiYHodXzj%AN;-E9^dmoj zMJ1hY1a5U;__5X4Hk%8~9!mcT@Rd$nhMj23NEvXEu>@3&SrJ^wBo9ak1J8TYd&y?&I zQ4l!akux#L%Z24bo+&ZxVMQ0as~nyw%{>>GQFT2^*Nb^9;YR~M;RV&n0?k#cJ}+3M z|K#A(r$@>6YTEmy0Sgs+*Wd9z-KsS0tfajJ+kga>tH7gcMf2iJv-lc(EmT*whTk;c z;8g_Q;{T42WA`Y4YhX(S=wpBt-mR{R>KoWrD1A&)8+nNMuC1O4xNAMS3;=4Vh5A5pzZm7x4+*KIMA`mvo35w5srfD#SiM6O3@V zJ;H^SJO`6Jr!Y+zmFFFfD*Au|8QX`MK|937mLvy~BnNN>Uod{0JOtiqa)}RCY*GDYxbQkCj<(<iGv;-Kh`}i{ z*6}3n;4d6|8Q>b3u|Q@#&EUb*sTqkff3X<^ZTFfg3hAL);D<|+X-+K5@4+6erHS78_G=NS@5_SCy J6Nxu~{{S8$I@$mL literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Controllers/ChartBuilder.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Controllers/ChartBuilder.class new file mode 100644 index 0000000000000000000000000000000000000000..a5346232d63b0622267f9824b21bee20b128d931 GIT binary patch literal 16369 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 Zy}F|3ZhjD(z7_NGca?;nC_dzL{SSlfla>Gg literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Controllers/DashboardSchedule_Controller.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Controllers/DashboardSchedule_Controller.class new file mode 100644 index 0000000000000000000000000000000000000000..26739406253176acdea7d3f4d8e3252035a35f1e GIT binary patch literal 2740 zcmb_eTW=Fb6h5{A^F$c+ZmYG1aAQv#_HOf(V|3{iZ*j}xe%<=c zc_nI!QNAj|maGXzTlT+u$`psW$*wAl=AXvCl1Jh|M$+-brtb%eD;f9^qkDD`)~%=+ zO27Ux5IMi$PwW)4!?|M?4ZWI10G5(XNNh}kO1<{8zSwoHZ0iQEr3l`c}uul zaYn7u8_YfeGpao#ORBQ?_D>nz8OrOia4bjqZa<~_L8Nwhvxx)%`(%rIv8HMe5~CZZ z6S>cI!juS4Wps4UPsIC@qFHu@Y6NaKauiOnE|e=2mmY+f(xRR8Q>>(C*)me#v{03GpQ|{8fxQ8R^|yz$ z0pqJ9C;Ex#=2>&RXwt{@3AzXP5!fK?xzpX!Zgx7xKBGHk1k*hNo%XjbBfFG3NM@29 zpf1O1g)4)lZ2c(RpBUX8nY(?i8lAaO(d>O`(rvOB84`dq@_Kj~nXd5A8i!8%P;1N% zhJ=x|HnRVn#9F6KHGumj-K8~5!MKU?MrHjx#;EyU`5wI@_v2F)`M{(Kt)ru=K^)e^ zW2tBMLih7FKpU4fQdDMZ!&5?k1ecuNP3;hR(ypZ zorh#$WmqT6zmxeZHU>>+N<=1I#NJF5=n`Fqgh@iPluJxbLwW~)@4g@w(HvdDeO}vp z4;yWL7v?mQ^X1=Ye(8kX-(CI%V(O!am0+s?8`{tHR5kOX4P3(+h7|M`urufev?dvj zH4KahJh+LyLASbaKE+K3jz;hdvUXF{2u`SEFKGZ1NsuXkd9ZRd0Wg#xtazF^=$mjR;= z56?k+4ku;;VEKeL_EyeT!!inUCBaZmb-NhMtQvGGG#Ue%2D(yLjmA|llDg2?40@RS R-%P4v2J%)H-5hNb{R8cx#(V$( literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Controllers/Dashboard_builder_Controller.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Controllers/Dashboard_builder_Controller.class new file mode 100644 index 0000000000000000000000000000000000000000..fce53b47d1da18dbcb7f4a2ff4e96ed851b88399 GIT binary patch literal 2855 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 Q&xk98&%H)e(_{zu7i1IBWB>pF literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Repository/DashboardSchedule_Repository.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Repository/DashboardSchedule_Repository.class new file mode 100644 index 0000000000000000000000000000000000000000..7270bcbc85974815c8aff6b80658ff76cd500298 GIT binary patch literal 816 zcmbu7&2AGh5XZ*}ZD`9!DfGb2oXUrUFK|kW)Iur&OCyqs1D9%cJ>58L?3L|Jv=73| zaNq%WD8yueB!~!A;$T^$`DhrOit@?1War-S}GsTb(OZ@f{?M&wE67-@#Jc9!JP!P$Y7Zcap|wKQ5voKx9h z_hw2>lQyqc2-qIF%4c+H3hwq`vD!7;dphSS;PX$eD+}yi+1($@`w!kLBP7n|4gV)= zrwEbRxLB98a->~8I00>b8*>PJlpVMZE!g6y1>3O0|1M{5aC9@kEx7%W<2KxB@_WB@ McN^U%>+S*k0JY2oEdT%j literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Repository/Dashboard_builder_Repository.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Repository/Dashboard_builder_Repository.class new file mode 100644 index 0000000000000000000000000000000000000000..012a84cf76bce5d7d53aae9d209233fd299fee5e GIT binary patch literal 497 zcmbV}!Ab)$5QZmJyS6HL_2^kJ7d=G;!FrH|LJMBY?C!W`-A$IstkMVZWjy!*K9m?e z*u@qP9+DaOlledXdH;BQ1AsF)NMN8~lKVz8VeLrtHHL@GBNvOTvvonNXVm&&#q)Aq zT&%6Y)zUvtFVjV_( GAK(*d#ic<2 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Services/DashboardSchedule_Service.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Services/DashboardSchedule_Service.class new file mode 100644 index 0000000000000000000000000000000000000000..54ab5eafca8534877306e1423c075ad7ab35c4d1 GIT binary patch literal 2791 zcmbtWZC4vb6n-WILXx57r7dE$Ewn zaka@WsbIU}Dc{fwYO1`W+^zg-Wk*+y zKxR$Xy}&k}-x7FGJUUH`JtR>)SrC|5Yq-X)>9QTz6-O_)u4k07JvR`zRrLI=d{Fmo zcWcvEHNETk&+-+m+#tWHs!S!Xx(o6P4ddTgoVbX6~4P z%cO~E9ip8nOr3n`AkGSil?=u)k-|$P@X=NLe-;uiwuX|zvmlG)P6(ni@14MuZO>V~nMe9;aJ^+390Z@J1ed}6!u zAHe*{`P?b6wAUoABPWpBv|Ve#ai~HurAq6eB~a|usOWKhPM(!>-jsL?Z&Q17&U;~w zTyKv3bqK{+t@8m_P9cML@LmeNoYjuZoWB->DUokvO@LvBn5*v6*Wg~pa zDBrBpi*WD=Em08am~m7js-UV$iqeDLD{|OGA$Y3H@J)#=4$jnoj~V%c#d>=j$jT2 zN)+*&qeuetct4817)8%U(eES>>)FxZBFTQKCw8_QJ9}8{d*GNX^xtIr$yPb`wdd$E zU%5Wh#!?#}vi-P?aQvi=bsm4(#useAZbPxvZEUlB)`rXW+cpdbyuMenx#UDL7WGD$ z`Z87h3MQyRleF_GD$GqP&29Qxz%(9W22XGePwCxZ@n<_UyZfp}wI%A|4igk@4Z9Sr dkJj|zJNin7il!4` zK&AehR;sAzL)GX0sH$hy>yLmNBH7{z)Zbhdn0eU>jNVtv*yRv4fc(NDZt+h<}T1To**wGaoXtOGiDb8&RWH-XP$|Hk!T#O+vaIvfd zwbk0Ms^|yFyaH3@uqOR&8ELytKW5FICXw}1j(fVQq;#Po4^&+mDR59c1#pv^nD!9u z%<|mXL&qR+*~JJ(3wReZIb0Rk{9g*`;u_wg%rTEBaJN`K-an*$;!_USS>w0o|8F6f zts~~r*#%*vf2Yh|SpQzy_A)ABvGWaO>dHv%b1_v+iMNdQy|RuCD>+utjX;`K#ItUl za9BAzpVehsn7b}M!fk=vt`6#JzArG|r&Mh}s|%C|6)uNC<2-F)bCz7(!vdSs=3Gy5 z6bEy3ra-rfi5M@M_L@q6IS&t?~d&H{RK|`D4%GwL5 z<^1KUz?DZUXh-IMhx;r4I2cczK!=O`?{*w8fl02|VYoyu8@x{I(2mdlhUwA~t~mG$ zv%m1mAj(97a;4*$qA&(G@IKLQ(tCu*rx9d+n{Ia!fDe)si~MT&1d?;`netLjp zzDKf%IU-q-o3xhXWJ+@0!6EJs;dym{=VXuPB%k%q`#cwkB=7~kOwl(|^g@dMz(HTd ze3E#UVqYJ?F7&Vq!?0KIb&CBn?FjRgEcU%4^q6lgln$|ah;_TM(A9k@JCp5;GleWe zZ?a~$Fhg03l+{*qu>;xTP)h5-GzlAr5!dj9waG9hgQxtLO{z5JBvrBsIQS;{eb(!& G=fJ-OFj6-F literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FabricIcard/Controllers/AngularHtmlCode.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FabricIcard/Controllers/AngularHtmlCode.class new file mode 100644 index 0000000000000000000000000000000000000000..5a6a73d6aab1f89caaf55ca43df038ee33164d7f GIT binary patch literal 1489 zcmbW1+foxj5QhKZkSrk_Tv0(h03wobSmmtYUs-$w|vX+2`twF8a$sUPRHv(7DGCx#M$LaNg(kgsT}M^PcqdB17YF zVvC{4#KzEwmN=RbVd%(sQoJh{b3$$MoG%#cOyF{Vi!0Cg;bN2C^-2uWng2jbF?6|s zJQPZY(3^q5W*8dITo7+)<;g-S@#hjl&w5#EuPC;>l1ET!DFe;57f527$^@$5ln%`9 z9mR{{C{X*(k;pkYPv#w7i*;TLy~Ym?j0!{ZA@|Glxt0^MF$`Q*`M^y!Ez~8snSYjB z7oWd+r`9S9ebn~(ymuJG00yIYbZJhiRgdE_h8Uts9QfQNj#u@aS>EMp!+eZ%MXC}a~QgQ zJ7(i%UP<~ILr~JowPQ)JXpqpgVCRLiZ?n4n3)0XilEN z`btIv6%Uoyri`s*$EyMKY$K1M9UW*wC)w@f-Jr|f1}otvx@awG^4&59U2iF!QMHmI zXSlsK`i1POK#ZQCL=j44MEa_6p$P3j5AIT?2*vf1)qr~x)lA2_l7h|zEg6Z=w9!bU zN9_Cd!&CIHjoMG_MAaCv$Et>7KRd-Fy_!8Y66ePA(70e5Aax*t7L3BC3iV3OF$lQXttC&+2^7%^TY@%Nvf3a4*rC*MzZ)X4i literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FabricIcard/Controllers/FabricIcardController.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FabricIcard/Controllers/FabricIcardController.class new file mode 100644 index 0000000000000000000000000000000000000000..c16646216848f7212fa087bb78b01d4d925c780e GIT binary patch literal 2557 zcmbtWZEq7t5T3m_I5tOsq)kbn<+apt9Ih>a08R}dlnTkA5kXPaen5M^#o6?7=icol zvQYn1D^)@2hyH;6sH)H2oqgvdmTdTt?9O<0=GkYS9sA$^{{DxER_Ixg3`P%I{=O9m z?s`I5&$%7Q){7Po9Bae(RN%X=2*SKSa~G+==)xX9;Fin1w)LaECt8Y8aa#ljvLzVZ zYYt1Eh74p*eRW3juOd&$eX%1$X}es7 zErQn^bs5bx{T6q3cp$Z%Ityx70!V%6mi zUmPb`x8O9o4ux&m(sS}mZTX?v@ zi$tiN`cAiAB1Q`)P12b%U7;_E^f{xuAD|zTW@r}OO~|c{M^_<4TcGMqp>}z7&R(M%6LFDeMoCe{a(!L&w3}F-x=K> znVBuFc6+b4uDQ8u(jBrG84}=9YBFq)yCYoa`HkIuqa$Wd!pGoP9l8FqI9u;kX#kH* zx=*W^MNtO=g;Ms$di@{C=IEN*iUu_G*rYnG;T3HAQP2|4rJjxpxvz_CxZTkYW7wQN zZSbT+pvTg9M?;lWuG4kQkO_Rbp}~5PU@gMZ>r}d8(8D?l%fiaAPFCNO`6o68O{YOb zCY{ILOakZvU4(^aPqS2rQ%=MB1b?6YLM)^?`V5~Jb-qj3=R`u(Q zgl}-{G!ni&Ny1fJ^4bs*R_Gq;X%eb=5>}8MLx5IuFdo2@T>cao>&T#)D5br4m~}fL z;x;Z=$q`ZNccO&fNg71Te^MGRAy@jlW2Mg-aA+AY>hbUsXfMEH#sF$Z)OfjkTn#k{ yb2-LPO=9~P%v24!6&j6!NCVGNt48B08L=)jHiMqT|JP$x%)oxyM>j_sME?WNmUn#s literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FabricIcard/Controllers/LayoutPdf.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FabricIcard/Controllers/LayoutPdf.class new file mode 100644 index 0000000000000000000000000000000000000000..20fad1ce69e294f2207287e19f2af0392b7dddbe GIT binary patch literal 10684 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FabricIcard/Controllers/PageController.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FabricIcard/Controllers/PageController.class new file mode 100644 index 0000000000000000000000000000000000000000..4852c72e8fcd335f6682e22452ef0f8dca3d1f25 GIT binary patch literal 1446 zcma)6e@_!Z5Pe%(T1pF8K>49kP?2Aj}jSB~&& zd`o-A*RCu5fbWXBjQuo{3?ql)NN`tpb^fM$C>_Hv)}(8DI`kb`mQ5Wfqx}}c(^4;p z_*NU?V(13LWI6PVYRHNTRMnN6o~Mm4N_zprlalu9JZSpLtMB`wA&<5HkyoYg0=_RC z3(mz^0N)IaK32Z0QQH1z%2Vb!L*K$;g(116Ych*IFx?UMI-%=G5m2D>Od@ZW8#&y>3`0JUCYp=ohGD$hY$^j_n9U)D{z2TroiuJUJnjYh z54GhmkGrIWXfz#ML;~;N;&dy6MTQwmVlik7zi7j2#UOMX83g;G>$YYYve9AGN}(I2 z+4$`+EcX=DrNI%aBRkR@=-L^3q{wVEx@~2pJ8H{|mAGm(*6a0j(@>c>jl&7B`@`!V z+EzrYz$_O{#ci(vW{JE$`X^#YSO&?a$+I>?HbIu&BCUhuak7kTYUu>IFYV(YTJ2>Z zk6~JK(FKg)3VHNmF^Xh6vf-CGf7W@R^Piu$TqP3d)zkI3Z8aXR3`~j8dH9Q!*@JnLsjB#|rLI^eV-r X7;W2ByuIFU7g!+w0r_iZMLzrsy;hSY literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FabricIcard/Entity/FabricIcard.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FabricIcard/Entity/FabricIcard.class new file mode 100644 index 0000000000000000000000000000000000000000..e88da1d332ab173ed05695a487af279b1bf125bd GIT binary patch literal 4789 zcmbVO`*Ryt75-M*)vo2WBg?g0H7Rvl1AayjD5Y{7Y9~%nDm%eeOyZWdYiVO|BCp)l zDvf!yg#vx>DDNgf^9w_M2{SMdXNJx&FwB&JAK;(ppFvx`dv_(TBGvYE#`2zf&Uel| z_q^`?_xpeOD}c}9x{jEFu~Ky->)BStwf*c#Yt?f~`I6<8vvaQR_*+qy4pl+wqIKEI zRxEcddwTVvUGf#goHF@^9YLY$u1zV(EY@jb!(Mi3&T7S;aowtK`A*fXDHxRSE7?uk zt2s5_c1w0PU#8N79R!ctuI*XAU0${-b(`22~vg<`&VUV-Xb z8@7UU#N8#|bEL!FWxH1LoK4}Qf`nD_oy){3D+=OuufjuK*a=X0 zLhrhkoHf_->mGH#80^y&A1!=HyrsDgL6`igV>J7SRJ~v^THck7O7@~vx>T#WS*sb> z>?yA2E!SGJ%Zv5}+Y@1>=6xMvdfK&%Rbsa&*GpEdWR>ae{T-0U17R4-_)MX|1Z-HF zn|67Y2{=%(wyJf1w(eBQw)YI{L0hx^JWC=yG8&0;SQH1tqR6|KJCsGbP^oULRxf3n zDW`kt@oL%bf`VZa8WP-61ZAPVv1)roi`+xvRzhuu6m<6DE4ltDu+A6FVg%L|GFDgvfAeGhz9}M@CnK=rbl#=wn?`>#SE1 ztk0Q93v@qOk=_eSs~Nv$_0YXj4X2vSk6cp1gDDgJxQjWf1v%>%PjJF+h4Di z&sZJb%KuEO}3wcm$v4$f>rDsBl;2sp_xW9>Xtc zdsqx!Lvke9C7Hp1O9t#DCv>TX=?q$w}80h$THB+3llmFu=46dX{|7rg>{K zjHIz{)z(E5bB>OT=0!j@OkBhzp6ASBetwPz&a)UiyH>AofW+l#wBf*cbGXGxbyzyp zH{8Cj;a7wD({V+?-8&ajzzs)~fv<9eM2c<1DNiTyJicz?8+eR<9CcjBKPFf&n0OH{ zktN2R%V;~F((fMplXc%HQ-uD>L%;!Op~rE1+P*(V(_oKull9~L?a?v?(vUjM;^V+s$j zH{yJuBoGtho-3WJKCTRY#n4LH=!QuKr!ZMDF>>XX^HqL1ROOeWjnV;04@xr`uJ7jh z9)2@VLa}i#4&qP^_fb_5?MlHA0b<_=_H6MBK5Lp!N%JT6_Wt4hniuWcG@q8{ z=Wr5gSSydWrMM7HaZYR#Z|l(Z6pQJ=7dp{F_a@lOgF74d%Z+($w}(yn4>#LW;RWMiZFCJ4oL^Pe#imBB14*PSA4B$mjxOgdja*L_p_qT?C!WB{N+Dlng;# znPddClItdDC1+;31;`9Rq#7VqOojGvz8svt*)i|pDSU;&8^C|@G>2e}9$FA;kT@-3#5|x2j}q`sc!s> zBYT~c35UMTqF*=uhh80u`5p#!#QA3^@8O<+?An`bG~!cCxhkG??J38jJY0<1X(HF1 zCuLA#S~DgZBOziEw)xYtp!n>eogrF^45?T@dE$Dzo|-zUP9I85t&7sR3L|y;2DFs* z?6j;NAzmXgQ}z5sOJG85yl1I+sgGQKBhgi3M6K zIbDiaU7?mPMTa`q!eZchc*wkgE971ZrP+X)135qV$tXa))dic5$=m$Y1dX z$QM57jHWX>)6p+=#^2!2@S|FvyStEtM#>QGo^$TG=RD^*_ntrg{rMSySv-s(B9JOL z2N_qIWm|fgC3DZU3i*QR7Bh>sXL(1N4Rc>^IaRkHW6%V89+^+fOxd*eGwXYgWWf`N zSVh`b>KiMLy`K|EZdMuMK<-!-Yp*Qt*tX-Dp5@pTfdSwBo6MnfD^|smc0p$HMIIV$ zv9T;|>6)G_?wIAOq*J`&DSiLwLVsr3K05UM^9ze>+xhKXfsTq_%RQ$k1riOQw>;PK zVe9+S%d?`yM5>TVlk27b83070N+9A+yKu4QE_ljl9wd%p1 zbhk|sqi{F{v%F)vmeNC`=9Mfmm0r1YgP5#~;Dc@j74|h15!R@{yk?*aR|ND*Q0>); z^Tnoi*wt0(m7L;+>6!=9W3QNj2O2Z#AAifhLFG&g4=LJBZdFu?oj4Nmn4II2%*%X!5Mmm6d9lk09!& z>Kto~8TXukkQnX=4Avh=V7*(l%0=nMaZlh%{h3Wz#rY20#-f2Gj55WXWn11YWx8)5 zj|ViFhlkQ;mD7#npK{yK$fiWOI9AxdsgXKHKhc_sx_&O$X(ulT_8BQiDOg(uK2hx< zQ9FvL9ff?GZ*9weYfF~8(Y;{Ntmc7NgcnEzYmH zz#S5uFlgX44o$o_)O)F^0||bw@;^ga@T*V$h`#SBL@>Zrxd0s)NpW$=iCFq!@deLqlo8PY)D5kgXM0~$u?t@94DR6&+TUlo4%vf&kt z0%7dv5@!5P_hSn; z*v1I4FW_C;qL{=jyhlmHGAVnXl8#ljc$QKdK4AP2w8!Fq<4O$T9}L70(#G&Qwa5Ob6KskZ8h5rz8yx~iX{)`?Z!&k=P@P*Gjwkm1qum*!8}bh>4Ga&y|e zPwsF}u0(3%J?Ue_rfc~4D`lU`YHA~?g*$OYIJbsd6FD114IxFDJBu7q=p<&2QiN~h z2IdJf%5gkMDix86veh>~<-JhDPfi~6k^5N7%;Xvre%S>p1Rrfi;$RmRbM+ literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FabricIcard/Repository/PageSourceRepository.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FabricIcard/Repository/PageSourceRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..dd8a906536070cc0a1d1ab4a707fc439f3909c32 GIT binary patch literal 460 zcmbV}!Ab)`42CmRyS7^J>N5z=Me(pAc(71eP+IVw-Ns?o-I*nuRr&%xlm{QchZ3WL zU8G(-OcF97-_M`7_m@`yIDtt50|RG8tSu8(fy7QRXJ5<;$7 zt(ysK8#pNO5p9LR*_*tiLJ}AnIF0OV+prJrp0TE<$Padjg0^f>SwDNP8(c3mF#cvt zeMJTiH$jg-c?L!c?*dB4I`^FY){tiZ;-6=KIdK)lOW%dG$IN1I=|!r7=bg^gbmv>2 zS9BRd6cisrYv5?3q*jP2%BrEB*{K?6U`yYQUJ0~HG!9@FMqhahdzy#(zYp*M4$_sQ literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FabricIcard/Services/FabricIcardService.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FabricIcard/Services/FabricIcardService.class new file mode 100644 index 0000000000000000000000000000000000000000..06f6679af996a1a774bc6c8d415bdd6b419fe36b GIT binary patch literal 2305 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

    L-scMJ16VQL+g7dEBYc!ML=|FpPCeU&hu* z0FhTnQzvg3wGg39^4JEBw8VblL*v4P5bZ7VM5wCW!FHsoy(PpBy}BbjPee6kz-6a| z(cK%mQWfC^Ayq~egk?!1O&;A>5uOlr%=_#4ARfYc5yp1v=LVsppQX$bIy~tD%`mQe znwd@iJul{PPs?#56XrSG*Lpr`YpjK^ov-o@tc54FrDj$g_MSp`>8MqR=;neH3-?ug z=CqhAcza&J$P^mKXqIF9-v=xB@H1Y^>v^w}=>uVjf&EAMa%Uy<%~dD(|bP^1c9Me1K|EAX|we zA}LbT$U59ca4w+&x8Sfy3;rIVRJo7}r*1e?s?ww1Kza$mxC~T_{S!?FD(aC@>J<+9 jaZ2jEUToyIPHYmJSu!OQ*K!A2Sm#ZclHM&|6KVJ*2L=o$ literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FabricIcardLines/Controllers/FabricIcardLinesController.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FabricIcardLines/Controllers/FabricIcardLinesController.class new file mode 100644 index 0000000000000000000000000000000000000000..3a4f8065194e1862c561a33ff3f1826737ca6bef GIT binary patch literal 4035 zcmb_fZC4vb6uuLZhJ>Z1w4g|p7PSJUU8@vY(o!ge0)`h!#n!4g$qukI*~Q%rG^al&#{X|;kc2P;kzWo8FlUQeXbX|wXLt_cSXTtl*|cd z-z*4553{F+3GAXVf)^P^ed}e*GfQH_bj^HG%vhG~anH0Zm(ks9G`ztmK5H8yO>NYvQHs)x zE=V3$%B8$;o^r%x)Sa~pytu&~Q_h3MxVK{h$lU2^hKxls4c`G(dyel5gL|BjHFUbq zIk4hYBE`uJx3-PZorYu{h`gRREu)^tHQV);`Q9E_2j;{+FP6d2#RwKggGY6yk8GooNfDzDG)mC9G+m*OlJp^?2k#^{jk@U)q~P;E-YSoA7d6DO zSQg%nZPZeRO48fHGla*@A|~BK!&!B5%AQ%&v!?5T%T&(XwzyYz;9x0YaKAN3Q*b=i zba9`ET5TnkddT)snIRc8O2Os4LA#-GSUoD#4*^+S2m@^rD!&2 zNfS-Sf2_P!PoxAesnIx1pv#r_pk|2a*A~0U|3-830$eK}5#U3OGIXC&M~S}_uS&%& zQ#Rw*^_1m2c>!daIvtP8rBY=}U3aZ(CO!A6AokQHl%&TfpgPE=tuLRZZ=;D&Hy zV_9mTtClkuhzg(@N%a^>@An%0K+hR<0#Cl;zm`3r9iL`~ul4H1VEAovONKk?gR9XuLLl90Q##vL*9#+O=o)VNHhj6F zpUUeV&m?B@*^a0D4!{>1emgMJ@nm==M*bx24F)kfk6&p_7+t`x<{MBKUBnC*F9-dH|+Z#kuO6 z263c=0lErjDcD`ZC`N;@PcSS?7`SDz;Zx=AdJWEJb#Nqtr#B}~FzV+a3AeGW5eZ*JNw|h22Tvej zjP4+wBw?hUgfVzWYov)f7WE0yDv`oJK@vp3 zzaJWxOkL;)$3l0;upniC))VmX47A5F))auzLz-H-d0Y**AWU6h81Zdu7_>kQvJ?_c z43;t6bW$}ES1P7-;bWVo87Th|mg4|0TT@4fa!%Drp`3?VDB0hzRo_#v%LCi)T~=xzma9I+-)>U&6dQh}fHUDUw$19A>Q;1-Jf2EY>#{RYa(fY#+ce}fbE4cN&=chLBW*V1H3an2 l+X3+?pale6Y64IW%+-l7Mg|y(kx*)Xh literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FabricIcardLines/Controllers/JsonKeysController.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FabricIcardLines/Controllers/JsonKeysController.class new file mode 100644 index 0000000000000000000000000000000000000000..dac25cf16fa775a485177bebc237e95f853e937d GIT binary patch literal 5812 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FabricIcardLines/Entity/Dummyfabric.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FabricIcardLines/Entity/Dummyfabric.class new file mode 100644 index 0000000000000000000000000000000000000000..c11fbd150250347c292247eb3e7ef50db95c89c2 GIT binary patch literal 2120 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FabricIcardLines/Services/FabricIcardLinesService.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FabricIcardLines/Services/FabricIcardLinesService.class new file mode 100644 index 0000000000000000000000000000000000000000..4bbff5a38c19e9eab6c6ca30b581a045d07d1bd8 GIT binary patch literal 5180 zcmbVQ`F|T%5&y2PwWM`w=V(y~l+d);P8_wVlLk8^IH}#(_()^NO$gMirM10@tQD)3 z6H{7_a-X{F`OeIH z>zDrb+zSA@@Lv@n1#ih%b7|Yqb9uu__v=%(nHk9Fc6P|j8^!dPVb7ZxJ}h7H7gR(P zw4BoC^>j|p&!k7EP8k_TL9$?5@>I~BSq1BdY7%3PZRTfs6r_%p@{T!YOqfM;DrfZO z^OmDKrj;)$=o+%@nRKxrqSLlMXPmL@)9EQg&ll6vdd9Krg|uGXke<+UC4(xX^YWlz z-M0ID`$uU1eg&JRYmOZ?3Rck+6$-kC8hD?sNd;Z6&C=T5R|m4U4eU*u*O1L4s(q` zPv9o>Yq$%C=_iA8*wC|v?fO|CCI1i*`9TeD!w}_*b@Fwt`r_>qvSCESs2FIXfnoNz zoJ`)W;izb7qL%99xQ1gQDOon8FIc78(mfiEi~KsuFI#%MhLaTs`puj%DQB42c&CPY zD@f}W-laj89WAtTd@eURExYopIoXxbkd<96w6tPzTEmR&Y~{|uqLr`TYHBzoTU)tx z=8{UBoepa!$|br;W37If3l<=~@HxgC0nY zhBIqS7iM?g*^J?qTv5dtR)cHaw9*5k)fMUH3mTHp61Wfdt9UPItHG3-(eMD?$G+ko z|D)3iwgn5Nl05-W+(Jv@1K6eFgFML_^yh2d0#tlRK}VzAD;s+P58@*lJ}SJa zV-P(Hax{cV5#xA@eSw7C>AojS00i%LuldA zHEr`)^BAZL9930!d7?2_3B`lq5%5j?q{w>E>uyT*WV%PDKNZJi{947Y#D;uN_?9*N zM&c4L8U@~Ccx_Km?tC0C;SVZ)uVAYyEWBrCb(@_sJ?7~7EWcn5dGAcKm+?nZdThLZ za<78To@2osz9h5x3jVC(6$LlS_lI84GqXmTyev`YU+`BJrFbccHSVXr zf_;8o`0#rgTMOP6{TQ$gr`;PV9Tq;^vq#!p-PyptDQA+mhc9DR$<7!8gZJJBA8I=# zObXgo{bnh$C=AP4C>WIwz8>CnnSuOH3?n3&$v2g6NsdkYix-jL0-LhGAOg)42+6g3 z*_`AzKSB7ro)T$}3dd;2A~rnZZrQ|NQ2=bh_52m36u=F54M%<|Vlx%X=7StV9M^R` zi`Q;n!s|kK5jQ=}nGp9@v}|>?T<=NxTDS){;}&Xr6Xl``Uqp2q+9}rID%kFt=;ExH zPl$;n>`<^={mlW8i7Lo6Zlxvx*~d{pw)!A%3!#kNtKe)8;B2kpY()?D)o}Ju6F<|j z-`9S~*PisX9|)lqMIi;~Bsn_+x|3Di$<=fp!kxbES2#wg;H2o@v4kq}kAWE?AFLdFwiyhFyxGNxoS%9xe$bQyV3)LG%FJCcgjg4scoz->&7U1a!nW?UD^ z*v*+eJQ(ia{dX@0(9MflkLyd92d(PMNuN)`b-fBv(;(hWj>Fs&hRvsl%XU2Evh78( z2#1R$nvO88^TL>NnKSD+bA@ovZoi24EaCk=X%7nMGCtfLy@YcoQqha}*diWX|H(2w zUB>6SV|BA%@MqOjEc`qkzKAa^;j8>NL(?TZbt2WYh;MesQ}G>Td@B_%vDK zB!{qteD7kG9_CH`IDaz?v&qoqF~mE?Fdo7P9_1zbG2D$OF~&1;oHcL^iixR^VSmINR7|!82jw-dE zrDTjvCd2FPPiZesOh@qo=MqGA7k>M zjsmGtI1FelK3@B|*Y(S59Q8#b>we?#(&*>-#qu;Fw6NPH`)ZU8lk5{C{4u&Ck}92E z{#?K>nJSW4ZWb}OE;F|l@!Jdd-9`MVJC=&oux+OA;8#Qv2K(qVG0w0^Og6*QF5bhQ z(JBvpEC<1xWbyosMG)ey-S|7_!jwz~| H_aET@B6Ls+ literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FileUpload/Controllers/UploadeddocsController.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FileUpload/Controllers/UploadeddocsController.class new file mode 100644 index 0000000000000000000000000000000000000000..1a57bcb458fe947944ae6e99230b9e06be81bbd3 GIT binary patch literal 11058 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FileUpload/Entity/Uploadeddocs.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FileUpload/Entity/Uploadeddocs.class new file mode 100644 index 0000000000000000000000000000000000000000..50bdcbbfc8a302b1e7d50408441488b3cfbb81cb GIT binary patch literal 3970 zcma)8TW=dx5dPNL^=_O^lekTSp+G4Ga%;`~;xsKGq{Wbwl7>LJwHy01cI&Kzy)KkH z5<&=G;0cKzKwpXk0#XSODm;M1AK(YT&*1jW*|lTWrjBIqnKSd9*_m(VoU_0E^WBdC z?!`McVg@F1<@Iz$c_m*3=_AFGdU~T&_VVd@KPUzl(&0?y^W|LChH2oAX8bdS@?5!8 zTled5Do*9J#z3r?H?VWztasi^mpp$ho%I8?rYh40QcE?uUso%|YH_usW_`aLctNr3 zR}GBl6|bf@RHa(12FlN=bT-dLdpj78DqmH+K;>7wQcV%$R0El>UAQKmZ(6>vq4C*A z=Z`ICmrok#si-psl1%}h2r5N?jb3-qbSm%|>M7q_R|bY^nkAJ#L&iGlHoTxJf$LmYh#MGKDEjJHZGBZ$ zmL){Vp`7zdD_*52^GIn1g(B&lT4*ldwF}O-#hJj8@Up8VgNPXkV~>k|>>wo}vWX_K z-s)mNth;Ef_fms10o?9lup>YS6u`KPApuy`kjjy<4or@(7#LhsL7|*K?p0W#fZfCB zxkg7n+`K3XUe*kSfTo}sDs^q4c2I{Ej;ohzUWxB&dBu~fXH_nk9)B*u4DNGrKki{~ z<~)C1(4u_MMG`v`$l#z25M_lX+rAJ-dftw5% z<<{PfA|P+&pr9%SY^nb~*^`degrZjJ#_tWaTHaY#w-VDpw5UfkxWk4R4e=c;9hQV_ zc3Kiz`cDL2?%blc5w){Z@Tvvb3f#D3<5?kc#l;CMGvnh+*~NKMl4S=}RJB$L2-5kQ z`*eN-GPER-+}9z@tCV3NPEZaT$cATNbgOKk_K{k#lvfo8Io7n^Msj+N74tI*oQ867 z1_v0~!J=Ob4vDJZqKLCpc^ezbXNC4Rw`;wZn%chQRnrbiTsyUgIq5g};*Ram;-%j7 z*YNT(_k;G*#LSEX_V%u+J#F;RQfs#eN3^^`_Qxf)3ocGcd$L9=3H0C%$^JD1i4)~o zC8y;4;ai(|Iv|W1xLya^dJTkk(lj>#9r6yd5R)U2Gn=y^&K!<%Xe1Q+;8MY(iK>_! zLVDy`qemVo90v&HE~I@IXX0p>;|Tw0$_7Vk;v0;9Ng;+5p8^3LU$37UfE%!zGeb6M z7e_a5&k^@{7e{-y=ZHr{7e}{k&k;|UE{?{w=V$_xtlZUPXXrd8>`qL6i_xzrwX;1E zA|ke>5@F@1h_<-rd5f^)aiE*~o44y;I)~R~=)PaOPj`2}cf0PTAsg-owEH`|yT5I_ z?xoKg?gzE|ySlp{+pc@rJ`MLn+C6WpcJ7TUEL%T0{C#rbb6Do3$)8|+2CL`NeFx05$fkV9v=RJH7K!|u22%~ucNw!czbi{Ri}gT zCv|eJe>6CK(45hYvU_m4z&3FPCojU@zlo<$i+(0!iXml27Dt*VG#$=Z+Qh!mi=32I zH_c|^+7xe?*iGT8xs0t%Y@}$FtxdZ-mwhP=Gs>|CAK)20%N#AdkCT*QEY!Prj(PXs zRuu3&B@>5O))y#Q#N3S+Da8?B6faS-brJtS;$JFE7SS+RI1c~P#nwC~ieXrFKpkVY zsv=mt3ATm2S{s4wR`3?SgCSbtv@O|M)!D{{q>0}N?bSz>naVwz{T`=JCRZ;bFCDOn zwdA=?tV`87BsW6&u*j8Ao)tL=FQ|f TjUL0BdON(Ozfk1s;cehQF-h0b literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FileUpload/Repository/UploadFileRepository.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FileUpload/Repository/UploadFileRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..534652b23e3ef5900510a6b22ef62520e3026489 GIT binary patch literal 883 zcmbVK%We}v5bUu@j1ve65FWQZMLZ-%pulA@Q4S!1%qs>CT%xhJy&1EfSTln_d?lh?y3wMBqDKQi)`3moSoAYn@cXjxCesI8 z`e?<6sh)f4*uvSObBZ=cW@2<Krwujbb{b}IgzKicnzu;HMMu)e$i#k22annCNx96@(Y@xe0N~);cv$-=; z1%PD#1@gH27j~XHvGR)<&N4rU=@XQ^c~BuT<_|Vn46yH<7bDiYs7QCuO3d4e!xU&M z6H`=Zz7x3syUCqo82mV?W(v)#Cdu&;2Ts6RXYYQpvs3>aO3mJ(1AU#n2a49gf}QXT zwh8T(q9&dx+Bo?bioRqy^4S|x3nv`V_FB(ZVZgQgnD4Y*xL3=g=<|{&^L0qiJn@ND z_$StviavM3Ift1LcTX)HF%o;3mb|pzDRvfw;H=c#V6R(r9(Eg6gVtyr_a>qjU|o!~ iL6<(lz5;K%L0h;k<230iz75*`nRacKwu-dtL_YwPq82Lv literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FileUpload/Services/FileuploadService.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FileUpload/Services/FileuploadService.class new file mode 100644 index 0000000000000000000000000000000000000000..e5b1c99c321ea4a3b8055f5d02d97e8a5a1d23a7 GIT binary patch literal 3145 zcmb7GTX!2*75mX;MK_N6y7llQeDRByHk2LB+03+_=O6%2+y*Cmzj+ znUNj05H4+@g>r8Tg!{Dx!li-bw3x*UZ#?h_PyGq}0~YX|nUO0yUaVDL=A7AQ-}kro znZNz#Pk#Y$3~y-Y5g4tyO~aF>?a075XW8;%%XZD0F)O`gt1A7F)(&YgNkc+l;EK6y z8n)>)jOm3dvKk2V+HON2Kk0f6!?)|lt{9VUqanR9f!!C{PGB`<#aXs|Yr&SM9mfsK zz;Yd5iP&y)!Cf-WOGkQUAZrxKwmetqoiT$&#qy55*}$`$23ZQR*12tT9*f*)Db~7Y zHsy-zEg1{abbO<3Rs+{tHOvhsj5*V8OR7vRtBpYa{%5-Ee@Y;AqH0@?6`W$6rQtb& z#JF3N8Qh6M4R;Cb+#2<{$cT;|*eQ^1$RNswzh9F`lR zPscDa%%Lx7#AN9*ID{h_4sU{CWJ1RX3;`{y<8)nMs5{#cRGIFr4vb~652Gq+?-v;C z7U_6Cm%=gna6$TR+hboSf#W(J#6tpoW~(Kgn!u6mByTeoM?026nTS)V3bmckaT3H= zDsUsC0(X_RaW#uaaYn;w0V4$67L5O&is%?u2JR#nr#-7-Ii{_wJ8X{>CIrNY%ItX^ zA3%j2NN5HXrzWqeJZ_tmisJvEj!8_Z`m`7Pus0QVWgE{G_q5`k5!g|xY{!zu1w5f) zc5`W0{XjN#Tm&1h*KKpy3`SWcLT1?F0TU+8CNuhBfxUIcR8&C~iz`;JSoCDeHmkB| z`NfeDhB%LpXt>NgbU@anLdQoH1T>Y@z;;v@KBXg#jPl*ov4AR1Eq|if3Rc5eFrOi6 zN7bXQqoI!b-d5iPRXk6`kbNH@S=_{hLpP9_7^jF3189h<&L}IEi-YoDqHHp(DBs{h$meR zLF;K*o07h7He?oG$2T>6gW%aZj&;1O>Y9|E=XwIUjhUtV=PmfIhnq@Rt=4H&!447g zoLd)XCZ|uIed=uG!o+y!#^yF-cPn%Tt1TK0w+g3Zj4@hMrx7WsZobi&s}{S-;z4h-=1Jv{z^ zWIsvgdrz%n-=&+l?@dt8{rRJ7cz|zw<{#!`4P)iRp||jeKsj09Z~p8W&aL6Ga-Whb zBzreVk4G8~$5L8&u0_N`UrbHi#D~;D{z)1uq$27XE-Bi#1^Fea9n{y*WLPxHxLS-WlnVZw zD(i)8fu~PDxsGd>3YlB@OgUG`Dbi;Pxivhm9xo(Ly@q@_dlS2qkuSZ4uk~Qh4JLP8 z92LhoD|*Aq)lp!|2bu02*pHn!%=a=+=2@5)_Hg9v#SdAQb)No}qxtVRfPbKbw+V-T z^P3@o`$Z0;Vh|6AB94m#cu*YX?LLZ!#Ziojhj3C%;E}M*H&jW*`MAt#_X=KBrRVNj zL|_lUtS9hoe22d67yEFXv;@CbcH_I;C3)}X@ICJO=-t2YeeN{+_)q+RyA-{Ao&Oo$ zI_r$?N8DxT?FfF1pAgk=)9O#DS*OPaeukeTOKn5=1zsbq$S=~@@k`|BZw|l0uPJeZ yc{zgK|1!+12BG0m4TrcKy8RDW)$me3enXLT52FI(QN8io@cFy2vsAbJ9{3-C7#+(1 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FileUpload/Services/UploadedFileService.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FileUpload/Services/UploadedFileService.class new file mode 100644 index 0000000000000000000000000000000000000000..dcd6c2325e0b4996a7e045655cd381e50aef73a6 GIT binary patch literal 2528 zcmbVO(Nfz+6g?{&9E3_@5@<+C8fcmt3{l&VG!2x-P|}h*Kyk`LUzoMEc9aUqBdy8! z6Z$vpOotAA==8ZC)#=@pWGi4gV;-#4uI@ee+;eyD`k#OQ{0qPeUKL<4JZuC# z3u!-hJ@I4P3%Fy~M0o5rL}bTv;izxPVgY%EYj5~5w>|E+?A`hs(U1)0zGw%LD}%7h z@T7VHa^EPyR>=LuRfd`UjxXIKao|R7-4hkx4iDJO+j-3nLgE$NQKm;3mW4%N4}JEqp+7MZ}xoeyMu4@WkxgQUSLa7B2`mAUnd3 zHCY-aOWK7mg?t@2dt7Y=DMBiY*%HzblDi&FCQAvqj&wb{>PC`EFjjM0K9`-4@_Ba7 zU~L!%>#IuN`xZXIJVT-B`cB337$*88>fLRJp_0{Y+n1sx!r@A)0+lT+VVO3O3bdht zOIhIfB&G$?Iq$aB$>H9r2^*gk@F|I+%k|Dz3!md5oeZMQa3j?ubGk`3!=*f~XKJ0M z!C*PUBl!>O-9u$Go#m8TEgYx}zO?WZ1ZKt_aSl^i`!okSqNANQ?Fy>W(NHI40L7sW zkBM1)ZQ&Uzqy;IGw!kJeszaYP+F6NeQne#ecov%$zQGn5L<9Za$ux0O%_tXmq+4E! zNa;^8>)lW^x$j8TdE%IlvnnONnN(A>cqzNzol7}h;v7^hyu>zj9<@Dn1{FWjZF5Jf zmZO|hSM9fpgftx(`gEw1O%yh3K__eobvZEHOiQ4qNrQc$P#8)BFNBDCfe2)`Ez+B8 z6?4=Rb9D95PF9VP#sbaMc!kCSjdTsrbDU;2jf}>T#Xn&EMlS{?=&6hW3s?118{is> zG^4a|ovf7e28{-d6N|s&M)?%e2L8tEue6dyDQcAI*fK#OAKbx*gm#y#M;J{M^c?2N z>>~|uPls5cRTbV;Ax`lz!&&&L3`w&`vV;XfQY5!%R3wWD$wdPvcrbwHOonH%$FoTP zARhI3t`HL4F!&-t-%QZQ6Z9tr`YM__@NE+NP6m6thdn+BdktSD*uT&?Lh;H9d+8KC z<~z&f6Re+LLw#6Ib$^L_{DS6c*I8N#qWgXBT&)%~g}bp`kAj6A?CL68 Y*rPWi4YxyZd-OB#gMRM!HgXO451oZ^=>Px# literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FileUpload/helper/Fileupload_helper.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FileUpload/helper/Fileupload_helper.class new file mode 100644 index 0000000000000000000000000000000000000000..d87a37dab6cfc4a34e46da35013c7de848a3f54f GIT binary patch literal 2666 zcmb7FTUQfT6#fpmOcDk}@Rk-8>y4l|TD2+>tz1-WxD+8O(&CT|Ffy4*Clm3qe6cU} zrG03-R;^3h7Z)#mX;+JF?dlKckFx#FNr+KdcDaCa&g`=$pS&l{zpRGst9 zg0C}{lt;}AbZ+j|54ci4azsg5n*>>`lFVowhBZ6oGJF#2Cu9w)YaHnGr_6leU z?9n-aJ)L#@Rw^K!suNWyPhcBT62&fJSZ`9jPi3XXejVL7KpxCu(Q@+w-D|17=DnIg zTDmx>;}G5#hy`B7wZMkXH6PTDR08cdD3=d(9K&%2wr<*`fQ+#KrsPGBjFoMCm&TfvZ9EC+m?WfsWB>f=aJ-34>$$DoD*fwol!>#lX2 z#W{gEd(U<%^~Vf7_SYdX@}Wm_hYkqBmx)o}@z8EVP50~V_aNj@`}(s30n zl;j+*qzpdM@u`x`Ipxwq0@pCB!CXyJjgi5dIjbmVfsUM1T_-02@iKFZ6TX>afTmi_ zSGwcSTQ`S*VC{-2!cVi2`UA>&KjH?nIHjC8>(lTrX3tpZtA>@JO)A!~VlVQmY7UUe| zKr0jl&c6Mac&(W@I9LUBP7@csvY)dmP;ZjkOaBE9$f^?PT9bnkUu=27t)gZ0dxfIs z63#SsaMFbMkEek@95?*Z_|?cg#=m$839Of6mLIxOYoa;}0WDnDQ_@RAAx*lTqP45F z={IcnSt)Mf+N^x*2vapd2b(F=E9%&SB)>=x-lYq=68HIn7-c_%dY_^F$}?=c()BAk ze#d)H(b?Lxf_*D6p5pL`yzO4W5uSU($?yt}evi1^Ph8sf2Tls~M3Rve^!*j1y|%U9qwI5Y=l8)+JEAs8}Kc@W5h~y~`OGSNzIm|Oo2g+E0&G_Biuk#dUq;V|5A&40ap#Ybx-9sBZ6iMm> zYJ3Kt7A5-LhR}1Qg@$(i{)=gZH1MmJ4WZ#$7y)%6f?*{?W!$JT^q9`&)0RW0-pEi- zSYAs;6i12;#SvMlaTJvhOOA-O#Q1+W+P?-*v1CkIP9|fLCoa?BQ_DzHiehGKg{g;l z{0dWtna(km{&C`cf~OuD{GwtAvC3o+hp#aWn99mQFM-m{9cDE$p9&NRlXa28{vh~g}) pINKpP>#cEi4dDuB8g^D_iz?dU4T`oUzN-N@)p|=cwd~>Bz<&uxfbakS literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FromExtensionJson/Controllers/FromExtensionJson_Controller.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FromExtensionJson/Controllers/FromExtensionJson_Controller.class new file mode 100644 index 0000000000000000000000000000000000000000..6dd3983a16a570a88ee0ab89d715e1ff14368c8b GIT binary patch literal 4734 zcmb_fTUXRp7~N+8hk>9Lk!q{;Qk1KvRlK5BKoISK2-I3_OEWVE2n@-XWKe4Dy?yIL zU;8WUT3uH9(8oUXH+6M&pCmJrVWN)G#bT12oO8at_jfs8{{HumKLHHlha?gL<5_!E zcchWGq^FNN_UhOJPg<^NTi0FN(noE}bL@OxI&SUT`O4cQ8U=PP8*7H1H>^edMrK)N zJ%Qw`bk@wQ6c|ZA-%>a+&P@1fNMP?w(elhydCPRoOkNIKmhBlH!MXxx)3&pyy9LLz z78e|2Ro=Iq6+I&j%heZ*tY$~Bik;Rmg!v*Xz1y^CD1r(=VS{SutP&DG=Uvy(~?ug)r@rJ43ZOQPup1|f6H)8 z^&Ad1dP^qRPP_nD#Wit?R^Ad=^Q^HZbB1RKto6KL+cC=Tt;bOHhI(IpslcgN=iQeX zJ!4wAsNbe-*PAp71$vp-o7Rkcky35ftKwGRaCM|i8!93^=~RVG{Z?n>y`prz5j(d& zl!CxM4NchAg12xmi30+cw;J3UI;Sud2bCB13x78z`>2$)&FmJ>+#1P1(~m$n&`TS|jn)nTkZG;@yxPS>s5 zwBaq4>cx;!?v#di@UB3@B-l{63RVFvC-Y2;`ONyfnz5^v4olUUy6s=_cPpi*0&qdY zS)60_D;5~qjH(~EP-6a9t?Q4*>0(th4r{mw*71&LFpS&IYL*pU;9^w6Sx+5D42rn3 zY02{n`iyi7Jila6S(zm_x3d01M555P%Dlas<7$C$)dBQK6|<`vQfO(#HN2n1b%C+x z7qiN#7IO|%UTR2VGDan3Ruz|8q+3Xx7TmziB&OL0JRkhC4=@cgm=$QFS5@m%>R>ub zRnSkHP}3HCfDe;kZgkh_SPi%F5%bVqVLoxoI+t~+6KAAo=5x{+YQDh9INF66miV3iG46ln<)us&uiTw|Q_bMv!v3sjV= zGgTlP8|ihD4D-2sM91d0%JBXE30~C%=?_b+9;w`RG`Jw1Ju&?U#}fQw zN6DuopVYP4A7x?QG}g>#elYO2jWcv!1+PtgzhnEa{*s;iRT}`i@fv^CR8BxUcJa!J z%<)Fw%yvF?^8fX_5H9v$FW)ECesAzb?LJ9V3SDd8Z+Nr+3HDD8JmzBp%0>&XzyY2e z2YovSgQ=k%E+VMUV)aBtgp*trC&FN@2>m2E z@C*@7;|y&p5eA|noaXKfGn|XSIM0#57cnq~xr0(775ZYR;_bi_CrEHGB1Ed}i4+15 zq5gqs_An9C?`<;Omf(O210FV^4!0?LBkwgIz`zq+o;tQU8qP8*&iNSng1Kc3S{Mz= z6$(wlkDrT_q`{AiRKkyo0NV&g8L&ZYT#1Q|v05+v#2pp7ZlW9S-@rrylLLRDoj9ka zo?`CU2JR&A_$fZy0MCa?6m`-PFwAhhf*lxRdW^GgorsX=E|ciSGFB)_EB1xn>>!Oi z#~QH8U6`By;H@N^kx=So4hmQiI(7`5LM@%2Nk?T~iOxMmX9GonU(iN6yx&Zx(NBtY zUxjHxyh$oEq%s!?%y=pfnI?&HnkaG)@dZbsl-8n@8t{nN68O?5)6ToENHYlCukj7v Vean9}ewUrXciU2syneqe^&c+P35oy! literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FromExtensionJson/Entity/FromExtensionJson_t.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FromExtensionJson/Entity/FromExtensionJson_t.class new file mode 100644 index 0000000000000000000000000000000000000000..16cbdf86d601354de7062ab168f6b08cc08a8d05 GIT binary patch literal 3427 zcmbVN-*3}a6#kspiJLk!1lkf{z@TjXNjAoSCS;5sErg|o(bBE#M{!frx=rlhI0&RY zPkWlQr%99cI;4q*4Q)l*q-lF$(*CAx?7OzpIBlTSq{Ke=obR4{&Uena{_Edgegkj{ z^*ACD&X(`I83OVpQIhLUY9=OturHt4Hr%$ap_v0_}XEZfyxo>Q05=fNLjYlc%d>pZ_~ zWQ$AObhLxvieVX!?ix#TdZl3yq}E-rUViveJWrZ^So843%M;VH#o2iYU3YD#x=^;4 z3<>E_%rmZIdQm6za@l6!3nHt;Dk*8^+20|wlD)`ylx4#$5}qC$3b_nuI1tcKwC;Bx zB3-K3)kS+PyOAXQ$(I;k7bNV{pdcopr({~jbfdaxII}vr6tUZ7y)vgerdS6`*Gt<(P(^rbV=r&!4corXeLPO5Nvc z&){adhUVBxQ--@@FWt}`y=u5@5C+8!p`d!h`+}In&Lm;2Sp0P>0tqqWUPG_YUz-Cz zzWmVb1VemN!%1Y>VrAW$5NM%1r6G+y2}E&P!wF=C?yQDaa7aiw4X^srISm6iBtf#< zn=3ehiQDdq;Yf&!LJf!xQ$39*?(&qO{_OE>VT}g~cWBDTgjGErDBQULD6C4(xO#bQ zO0Na2qps-n714GQqJu+4k!wjq5!V>>jhn@(31(F!gN{*eR5(t-6D}3$6hFMuM92FnZxaCe-a0kt$LISsNTf;{fVHoF3%XHrns!ue0 ziUq3lTFtP?=vcTpnzaq}S=)(u6*}8%^vFgY-Z^FAbhEE!qrJq}UH07QkroXF6)T>q z#RXNX53NC++7`^8q-3gIq~sY_@T9cxR3{b=x>Px-&-{+HD*i-<4k|TXaUc1TRlab-?pvaF${($ri zl<4D;-yuzn4zJ@4Z%N^;=}|s%^4Oo~&dATO`w_IUjJ%Gwn}{G!u@GoH7bj>ur)J^;qz0gPMh$`Txh{h8xkRQ*fD!?yE0bt~VBCaD`F=R~g4?^u*P_u`3SgAN0i$WW3;_bN#_3~Zt|&M9{rf16!VJmJ=Et^$SjH^u@HPc=d-nr z2t_ZHCZLIt+f@N97J{{qo3#Nr-VSczI~cfyIr2ldwLVxDVY5DkUvXj)(+igX1zMhr!~++pDOVj>K5-RH%d>_eR)v4OnIHM4N=$+(?xSjmYqeHlO)G zIKfA`pvr&qALe3~kik}hZh%h6)b=KAZL$MBKn8E_MYA$p=hL?CN9T(Om6L9f0M}x$ z(F*n~Lg>u}rx_tzrz;{F|u(%_DRtdhk|wGaVYD zxlLC2ZcSac`xU$HF0`w3uy8Wvk+j}~^{z~)YGH`_(8(@9b_rRf8an{L0sibqS^xk5 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FromExtensionJson/Services/FromExtensionJson_Service.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/FromExtensionJson/Services/FromExtensionJson_Service.class new file mode 100644 index 0000000000000000000000000000000000000000..1a816ecc3b4f800bda1955a4c3c457640d3c5602 GIT binary patch literal 2430 zcmb_eZBrXn6n<_JNJ$n-T3Sn`)xMfQ>H30-1hD}_UreEr8b30d}GavsQdx{ zhyOrloH+Qw@v}e5@wuDL3lPf;_$6oW-gBPw+~=G0$DaU}@O=_7fk!p3Y5LM~ zT&c`W-)k0sRMHJ>&wUnnu347;zFm{S$*tXJD~W`_^lNM1G9AlpnA_FYvZe%5JF?{k zw(|S~fybq{ry2N;NHo~Y3(W4cU1c|A#SZMMBMYwUDNB)VAh2BW{Dv8{eA{j8`BqcD z@%$gmsrh-Y&Zfy9Pamnp?wdnYN8HC zXs7bIvxiPV;EI7UjHmGqW|O!kQ2bvCY2Z5ErOW}3C~!YpI^I8|ed1LTH(2Ah=l^dZ zn5`@3%Gm{Bqd%AGl~;dZ>Go36XR%Wasp?W$w!_7xY(%`RY{x9wfnp^m%67xGRNLoS zw@x^$o}JHHUKi%Rfe&z7Ah~C|^@8IFObsYi51!TqO2Z15JhyS4w$M2j3_QRhn^fmq z4|8OPb9ARbuZp1<+b#W>T24L%6CWkM%_B_@ zHAr|O0i!M*7G<}3u&X^T4-@Jhx}v#%VPFM>Np;=3?5_+v_tgZ~yV_q2ewih$lVU0b9RZ1us=(8}g~)Qg zbCu@Gq!qMd^S{IRl@BpYMNXi@MLru{2TUWw6+0N0>7|3$X=Aig^S@zc;Sg72_zQEt z@XavFbck}b>lvXi1~>5@(cY)`7>`dQ$ow|l?t}n$!xT$=tNEpLibLEJI1WEEL^9PU znMICBnq-kylgvaU=VR#L;Rv4BhInTBJTv^;@acf(5|IQx!{-tDMueV@(3fKvsF(^9 z&r$3fL)hs)c6t={D!z=cf2JK{zP!eMaELzht;K~7);d_%cC&-0+Lk)l){cw4I;1R&OE} SR!=Jv!^`mZyMD)2fPVo9cyUDl literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Gaurav_testing/Controllers/Gaurav_testing_Controller.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Gaurav_testing/Controllers/Gaurav_testing_Controller.class new file mode 100644 index 0000000000000000000000000000000000000000..c5385ae154934dbe908d5100353e611bcf4509b6 GIT binary patch literal 3064 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Modules_t_back/Controllers/Modules_tController.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Modules_t_back/Controllers/Modules_tController.class new file mode 100644 index 0000000000000000000000000000000000000000..862277ec81311ed6a1eeb22ebfc6eb185aea2025 GIT binary patch literal 2572 zcmbtWZBH9V5S~3ujGYT4(9)2m&3j@Dxv-E9%arvAK(K?iLTEwo_+L?MMJwIqq~BO??N9|x+K!xgL z9jMNa6wT<)P{#I!ZQ0Uu`pMexL)GBzHmC){@jdQFAfcGmW_0y%Yc{xUffB)?9-X}6 zEAdMtLiNaZI@JO(x?s{cohs5r`ZiDBFsl3)1(`HWGw5%^?$U^KxVsx-h0o^YvK#k&>=em!Se>g-zM=xQYTKs0{=htC)c{uOeUN#I1WKdY#kk z&6{+Mu0!d7jI#_Pojt7VPP?n_wIi{kgPzQ2vOCWmMr)-cXFMkAKEySugr_nITE9x? zH$7X1je((}=4z*VgR7dGA5FSV79&FfTS`p^jgjdH7n0t#JKH*9W)MAw$MT8mKaR6? zuaySyz@)phjCmBbAyG)h9c=*oUp7y!s*UK7s@6=Z(h4rZrXK}O@l@&=dA|4A$mZK^ zeKS5ctA{lyodaE#z>O7ughtB|stiJvu3(;w;ai7J>!E@*4@<8T>58cj>ohD2E5kZo z{)@~%urX*d4I%_gVQ(e@be7J+!T_Kd%Ec)sVSRzWFW(XiX_mgi^SsV?9vhv#fpi+l z>GGd6w{SpTHx_?~nbas^CFCj~hpuxu2~F$h1ef5$Y(d-=>c*JIk0je1~8jMrT`{jm1zO*FX9bNLgHD% zj_HfkM?zNhyNrbI@!BvFei$U-5)OI!GbB{#4(e$V%Kao%kR8*2miu7bgC{xs5EwON z&`cE4Ufj>Roe*&Y2fWosM4{J-0)94W5GnsjX_-3oDU*xZY$p8QV literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Modules_t_back/Entity/Modules_t.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Modules_t_back/Entity/Modules_t.class new file mode 100644 index 0000000000000000000000000000000000000000..bbcb32bc7cf6a980edc20e9006627f3c34056a37 GIT binary patch literal 3927 zcmb7GZBrXn6n-|zCQDe}LZMBqmbO@VZEDr3p&(Fb8wFYc(bgBbBv;rHvNYLX@x3#S zYj6bI*D1*>j$A?%DhMKR^5o z;Bj0J!KYv_X>G)^!boR?9hSku}yosqzxgUp#6%mWyI1(W;J$x z<%&q!3VddY`k9hp#>%XYD2UGI>0v`GnK^SMEhaJ<%QkG&%H$MuJMe3t6>G7poMl@>;Z!Ktgl zPS6_Z>o2o=oIK!hlE`fB!b)T&ZEdVr>#<_S^cOg7r9>0Rrw$cC1#L5CM$F|mRz!Bu zAh9wPD`}*cjI1fwo-$ysnPhr+=6{r!uM0DLuMrgNsmQ@&Nyc(WM+;gNv=Tj4qD-24 zb+k!SCruMo{7L&GI@+aOmpqlo?5cQGflj$$P)7$MBsS*~+u2vmYyT2!H7o2jD|Nxh z8XGK6mZ^uip_ocn`7SRLxv!O=vJ4nE71ePwTKV!)wB6<23c*TuL2)&2r1|oS_qj)9 zr2kTw`8=iLX`EyiCymUsL`&s}j!x_e!;euNPvE4~J)@%!{Zg9H@emG5>9mf+t~9OV zVH{MTSe3o(y^DNV_L|7DkF?b-QD(I4>P8 zq(ax_z-kXtw~MVcv@F=1KC{NA*T>qLkz12zK!LxnKOrf4QO6=)V1^gw6SLE#AVK1@ zB9~8d9QmF6!o6h&RqHKAt@l<$*U?)WfM#26e}u52U~g%zx!TFRnNEqU1`^uhwb!!U zXQoEOFz~vLRUBtHr_79Lk4crO;|kWPGB!6whP#H#o2SqkWj$T-o)HZjY~`UIF9qi< zmUOvU<*Crr_wmGTXdUV)V_;MRDeD~SsiuL3Eq47-PmxAyu90f?qk%VdT$a7Zf-K2` zyd$%Ii(xKU`D{|0G38WhEs}Fga;RXx6ItcZcRw;CIKO()g5P zAS}=foeB;fs(fuze8*{|TQpeFiV~&O}%*s`h9j9}j zWOrcjd+hs$QZ3uvF2ZA5R>H0PF``wTZhj{eR_%B__dSiemz|@)bKl~)f3&{)BaOP3 z4Ow*G=D0sm-~G`>-OD~Nx^H*fKgNq(9qtDjbuW)k(S3*Gp5LKb_sVUSt%W7JJ2>zq z)WFTbU!Z&e)qivFHk8?+fgL>QEGfk2hWHZ?4F87aXy6VyZa^Q726k|&fEbIbgp9?5 zQB`7scM!ROmZ%yHmVw6OA%e!^S~MgWhUFaE3(=$h$~wk*VdyUY@N3p z93S`iTUz_1q6=yPP{0H#RURx@1}h<}wH`QB2`=GxF?d_Fnk}VWyW6;tH1U#9TYcnY zzN~)YM;I3)$y*Sz19q?$N$(&-d7O{PRac&ra?X{fq?~uV!Z literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Modules_t_back/Repository/Modules_tRepository.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Modules_t_back/Repository/Modules_tRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..a09156cfeceb5d80b55bc2587c987bef93db802f GIT binary patch literal 463 zcmbVJO-sW-5Pe&*Ly>KB_O7Aspu%|OT3_(3 zsafG@qo#wLe$gq6W~Q_xt&gym?5Bh@`xpIX_J;hx!PbWmX{#!h?`Vwc1`z%EALb&S1OhjG6Td;&1R Bm&5=7 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Modules_t_back/Services/Modules_tService.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Modules_t_back/Services/Modules_tService.class new file mode 100644 index 0000000000000000000000000000000000000000..af3a820e92e21933ae90b9641d616c6a9240f5f5 GIT binary patch literal 2425 zcmb7FZC4vb6n-WNO$jR{rO;B;Qf+C%OV<~yv_Wd1RM7yH)Tp%@H_4E0yXsW$(_+z0bY(xp(gT^Y5R30a$>QMnYhr?(Lesv>aC| zbHi)292rzqwPw{{m}Tkj+jSYl`_WDsDS?sa*1lyrmfJM9YR_d|31qhAo)_54^A7|H zrBk3|#TY!^D+o+%w_IiK%8DJ>HAfa**Hf0VJvR_oEO~y@4EB86ZSMHiu6*hFFU*>> z+`!zi>e{_&bq&m7OL;GCUp5GPZpn6SwJea##74m1& z&R`6e(-;@X#?@N!JcnEvxPl3R^uFb^Y-BX;!of0z>?-`iJE!H+5#{$#6 zE<24%65}+ZE$VmbF@Gk4c?~wCdge7AS-KIG^w}1frc@27EZgDYVlML5Qnq83>_D;p zgJrwvTB_wUz~XBPOJ@pUxu8jV&%pbbV>x$hw^4K)f#Eoc+QB->zu(J5$#a`$Y$omI zBLjEvF&kLBSqWity|Bj#4pZLR)7RE=*hqI#NaG$k3F$v}YG4VU@LDoxflEh}^h_7B zmav({NKfs;B-mt~{;Jjvs#;^TH=s_Q6&?Gkfd^P)c{=Ky=*N1MkD}*fIM>=^Kd?N` z+3sh5bZ5Pk`E~iw*0Xi2``|>w^0saaf!v7$KH%+=o;ui*M=w(W*EuPGF5PL79yLUr3;h zMaJF_G#LWv$f(?nIE!W6r=uv&WgZHAieiMm8lewG=qm}t3}-^DYb?Z65B5+Od*~$W zhxjbQ{)KXY{t6mRGWLLiBz29RW=7W46?X^ z3EX4@Y5s3vk<{x-Ep%LUV=F|JqWdt)1TAOqlr~A)B=H0PQXwmYiLiQ_nFQNKf2-YY H{0aCEbmLhb literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/MultiTimeZone/Component/WhoColumnAspect.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/MultiTimeZone/Component/WhoColumnAspect.class new file mode 100644 index 0000000000000000000000000000000000000000..93367c5d4798c53e6cbeabae92639b7fc491c51d GIT binary patch literal 3315 zcma)8X;U0U7=9X-3@oEjLR5?zFwt;?9glc{L4m{^av2C}G>OA*vkdIcj5ECiyl;*7 zt?>`!b1aJ(t+Mn>tn!~&P&b99yU5}j z*5uqGR|PgJ9({pFre(0~WTn8KvHwq0|9$~)x*GDo%7FcwFxj@z!C zmw`ann2uq^@?{V@p^|P^TKkhCJagw2WTtBJqn@keilSg^DU?Aq@V>gh^;T%{qfxor z8utC8HDR9J^swVPYDl25yJuD)HR|PL8jWZ(aV<6z*fGbI6Q$yu3}$QsBG5MGW$nVO z9XNVkUQDS4hX~zQXZwG0s^PJHzpz?iLttxn6nm26LG4}zHWd(aB2HecncBZypsw8! zOLmkli?N0zDf3DON2DqRE?J~_v+p^s%9fZ!V{%3Ehf2G9J4tnB9o3nft?bOAZ)XDO zd!eHV&m8vcBemJQx518VYh%uQxS{0Bm~-N zr&fE@N*BVQfed$|Wnx!g?G_5GNut<_e%xi^Zrnqd9pY{iF@YN@S|ag7<@Lc9O6G={)NOTTv5(7xx?Kb&ny@Jig=GUJfqRmc>O1Uo+~qf1 zYbH)%g>jdQV#d?h*5KM(COs<0$Zmp@`Xtb8z|uE#PRnT(OoA8il7Sa1$-Pm;#LIYv z?NE7#+)&vrW8GSbHIgnbQ`KvD!@%nT*Va0KHe}*Wyv6FD54@u8cCmkTXUmPL7K29m z9TV^3Jt7@Sl|XvShJbbXEa80gQr&^u|XfKCbAgZZM)#mB$IYcwM4iB?Fjf zZDk^4F5y&1BB*+VlLr#k)6-rl$jZkYeJQtBEynMpj0R9(=hg4R=#HdAy;pqLu(1Ww zQ>%XBJvN9g=42yZagAuuiOHG4nI4-tHlPK%5m(k)qcz@li8U?P$T{B^{9ebI#Zho< z>OGI^&qYVJ@T-*qH=>e6PTFm;XGA?%qDVbQaqOQr~0vXB>FC?a+BV-jQ0v#2Tj8@Z=hfoui+fc!~{i zlD_JQh8Qw9OJR!OO>;IwzmH-Yr8+6M3&$yQg15J;$9KXOcCXkB}IOV=5!T z=osxuTG|YUCv2jiZO$P}n?pn>$K4b)+)N$w{L9mW0W>#VLc75i!DWKC$$&7>$f=|sAikDEx($>zi6(B<0QdcI)lRmb7`V~4aJMNmC!%0 ze+hOtkm}bct^SBt*YGx1PuB!aZxHxUXG4tL{Y)azy1{}pQ6!!&aq~#H%cS)A)(Gji zqC+L@&CJf+&)?s^16aheg)W8#SJfO}@Tw=Yv(~6; zS&}uer99yjg?}Jj5jaM3OqxhxA;ys0;|JWSax(I;r}DcGo)SR9SC2S z)J8x&QREEIvV}0>hL%<571tu)Jck(+wJ*I&e!8jBNjH0_Jn$nz^{W^Lp!$1r>-^{%-t@|tK-%$=t&w-@43bCv07sHmNf%3wFz-aYm2 zGn0+xensdek7>j9S`aruH?-T91w*F8u2nNKA1G?>?yvEB)Wyj)p?6jJ9rr0sEqv%$qWhG!id8Pid~D^2k41P=3V;>ZVtB4D6xu z_nm;ih0;g$*1+a54(dJ{a-fTLG<>vLbaF^Cl07qD5&sfiCulX-Kmz@=+D!wJ19YNB z!ythe=T9ViNY3YeAdx#k@&oMD1a1au`S{uVt7QB h^tmp~6yQ##JaD9p;k|yOm@CWlPNrV6Z literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Notification/Controller/NotController.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Notification/Controller/NotController.class new file mode 100644 index 0000000000000000000000000000000000000000..ef56023ca5c952f02a2dcb44e0712f5e6831b0e5 GIT binary patch literal 1186 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 VKKr`39o(q#cpM&o*e$}3z`tE3@{<4n literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/OpenAi/Controller/OpenAiController.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/OpenAi/Controller/OpenAiController.class new file mode 100644 index 0000000000000000000000000000000000000000..d6828180df16aac5db7e07a2150c77a9ec8d4457 GIT binary patch literal 1708 zcma)7U2_{X6g{$?Ix$X~x=l)o3`T+?oY4~_?s3+;%#Zj|fEm}Dt z{|Xo;%<#Yu;72i>^*Y&_ECUagbhY=Md+*Va{O4c4{{i4rd{sqBpdFZ@ZsWg=%y7%Ds2$v3K~2rRymN74^vH1MDIUa7zdESPcVuChluP>H}=rvUiu^91(H zTo<^pGm4xZsy&_PUZ^&s$T;b=i3s($W9-0BVymOUzLi6DZ0w=mQ!+~YeHl1oPkebE z;BStcIo4M7343WnN7_9RC^uVs0+lV(S2dI|U&kD30+%~FQs0e+J!M}=<`rmkOd!KO zX?1E(HY@Hxvyl5mJ>}e7Ad3Z5f&)o<9yW_Yw^>b?_!)KUtxitsu1lL`{DZ>Yk5$j_ z>8SsD+g+2mZ5hW|+{!ecU77Ocl$|2>|AX(SA4V#1&rJVhy@ogORuwk{yn-X1>Zy*m zaZ_M!pj_9QVN52jH4FNj!@KaRcyCHtyC;cL!#du_3eV4s7`&8Gq>bMtKaMOZIb5H` zEe576dNS5t;-q!$b`5vXtm3Y~)iJNrL3OmSDo{;D<-&;2&5QK6_U1q(*D-@jHMDWR z3SVHgpzAXw|3lbye1wmwDfYib9emq;v7?fhqNdR96eYY^18cMy`2s8dEh0)jo-o}g z0$bcx?!ffV^*~iG?#nRj$>1=rt@V0sU;h}WIK7HR3Y`T-y0#;o@_@|{hlys15a=(nqvPoXd^R^9)%dH^<1!+2?cQGB)r9gC=+zj4k2GczinUuR;4u N+M9HG_7Wn&*53&_%6k9+ literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/OpenAi/Models/openAi.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/OpenAi/Models/openAi.class new file mode 100644 index 0000000000000000000000000000000000000000..50ac4462ba5b89b2e401e85619935accfa864117 GIT binary patch literal 1598 zcmah|-*4Mg6#i~v$8PF%S+}-iD{I*X!`4fN@Y*@$%EVjd* z8!71rDt7PpRj}c?t+1o~fg2{C1w)|pP(GHfFM|X3{{BPNjs*(+DD3rVOm82*+>IkI zIA{t?9H@9FOSn*}j!U`pU>L++Pi+N{y@9vytBoKCV;Os4Fwm%e*xL^uxnHP2MKV?$ zq8giIHUWV%4onmT&Te~wx;O0YtLRHf2wfMprN1X5Py1QWh`Sy!uWbKcvzqzfnE6cQ zH1X;li)vSJ9BB}E7M2C(P7e9Aq33s0Wa9&YsdQB;DW~-! z8o1%$L!2k@niqKS9Uc0}!N<7CknD4_Is%Px@}5#WyQpd7Hn~47JQnuXKCk1A7C1X^)#~P%4qTRNEQ=X8Tw)(88@7zCnxe9V+KnW zO3gK6JrQQU)a+6gyHtMyt1-fR->lD%m!p=JX7}bXj|!@!YvLl?uM)b*#_Ne3T7;{} zy~Z32iXa39;NvyVV?QVKqH&YQFx}Mo1S!8l|?|_D_w^oUl0*Y8cP!UVD>Pa{x3!B~T?g@(4e(pE> zsneg)&UC<*X{Vq2L;5p1eRem*V1gqV&hELqx95G|=j=cK{qYxobNJrC7J>evTQPkl zZAWQy(o@cmW!_W%l2ueeZN5G=kPzrvkW13ErBgB|3k#~K1v;c>-S=&Q%=p{Qd)l|0 zQeGf?x9VuCqGqhXD%fhsaa=96 zbpdlm+EqoB?MvYc?HzqtEK6PT^Z;ELsQUJ+*qd8wxoLM%Er+|8EXUGU1loH0W&{!= z?wm@Y4c%#M!*+okRfVs=y-z)PKCU8MVIVB?DQ3lda%-rV3`!wv?kyYSq)K;@MI&s=eqo@Ug(rR#IiH zJ#&o1n38kK4^r5V?j#NhY#XZTvg=zfqAVFWB(Ue*ybf0_n^H*}5io|8^p)R}LJy9G zFdi4!-72V=tq|xez7{z0-jcmeLea}9%;Hg4Z{G-9ZiP=P9Z_;7sQoh@RcEd3HJ17()+2a2SzfJLU01T^f6~iO(@d)+>{LOTTSLC zC){(Zeo>8D;eEF={s>sV^anyxB5k*{8c<%jnwYJBGvslI&D6#Zj4k}Jqc}4->*O=Z z|E&R1+~5_^ypiSx8w}ey?x2jxr{J@_e-&N7Mk+HLLrL)1PLApL0Cr(FXG|vcPzi;_ z6pe?5e_q4h*;VYDSi^okKe?UD99TooZ07JPj`shC6D#OjL2d=7bD8s*&-q-#MIOu# zCbEglrOcJz@kJXR@O|`T{dKGxKfS@1_4(8;+ZhL7Pd%@nTIQ)2Jk>5}B+Tv0X#6g6Axy|C;C~BA<*Wbz literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Payment/Paytm/AppConfig.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Payment/Paytm/AppConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..b0dc42ae433fafdca98b7aff43a423817c43b702 GIT binary patch literal 472 zcma)&%T5A85JhkE9FezgT^VDdE*ugxgVC4(0ulj@On59CY;nj;4;dO0Kg*Sg3qQb* zGS(2IEZtP~>8iS2eLuh6KLDIyCyD^W-q3Y)PjFibrQh)vN62|rj$WKh%C3C0Mp1+q z(qsP2b(_nPemfY8p<)O&>sJif#$TnaJWGzw84@%(Ra~kLw`W4b67}6*H%hXaGjjPe z!=Pm38A8pQN?${qAzA8mou2Buh0{XGtT9Bpl~TKIRy3p-Vm_F~TD?V;$b}^>bx8{x z9Ck>f>^_JXf>@0sjSNGoVM)=NIRoLDd|(TIM|a5W4)-jde=bAn$(l0kH~wJ(eJR#< zXWmd$EnhJCYtFI%d+dU?AzOpkLKqREC{X|!acqH?i4zN)q)ze{8H!n&(B}+lEYja~K=gBw{4!KeYV~(sE(0 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Payment/Paytm/PaytmPayment.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Payment/Paytm/PaytmPayment.class new file mode 100644 index 0000000000000000000000000000000000000000..b6996b8e441025d76b52babf58f6ccf6be26d8c0 GIT binary patch literal 4953 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Payment/Razorpay/RazorpayDTO$RazorpayDTOBuilder.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Payment/Razorpay/RazorpayDTO$RazorpayDTOBuilder.class new file mode 100644 index 0000000000000000000000000000000000000000..3372140e84aa5ec60abe2fa9f4f02fb8c006237e GIT binary patch literal 1798 zcmbtUVNVl55PjQHt}Un3T2KMCAWB;bCyJt$qKLteR6!sl#82CH1B=%?a=nt^uhIk| zk;EV1k220)4>(&QO`4{+vvafW&Agqt-+zAo0x*k34Izd?#jY8S;HD*9V~roygykCR z{HyKk^TTuF-RA1}nUn0d4QW<|qoIc(vBwX%VRCE7SS{~~ipvm^Rq~fEUX*NWr@%10 z-mqL*6D!t%tjn?~7A?zmxhrj}&X6pbcCBoGG2RPHINTLgI-=PQ5v>qjGJvT*XUVRLIKoKi&~c5Sza%a3u~91vXOk1Tg0w5#+~ST@ zd*9jP?n=t0Sn5I;N_;gF$k(es+ZAFA47YSd&`Z*O5bmyBUE>a~30F9j?x!G~FHiS` z!#ZM!E9$#C`VeP`l-1QU?m>!V}XXB4%mK7Mplb)OdzjPonjaWrh0Y*TPniP@fb7I zpnQK{SR~$5Ftj-|h4vJEoX-v8m?c?`(`1f$1%52qVfvQtFrcROG&K;3NM;N02$O*RfkfsY`G_ zlU53M<`fg#$?ORx75FixlTVH@t4L@`&Nb~3Wxu4yF$(`9o$*P-D0=s}@J~6f$)`Gu JA&obP{RM~Rd$|Ar literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Payment/Razorpay/RazorpayDTO.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Payment/Razorpay/RazorpayDTO.class new file mode 100644 index 0000000000000000000000000000000000000000..ca7770f698d28c92dccc4f00fdbdc6939d9c9f79 GIT binary patch literal 3300 zcmbtWYjYE26n?hZ&2Gb%hR_xQD2PSV^b(5~XhKCU1*5&$mTCc&ZL+ot>26K7Nc|7| z0e^se;e*adnUNVszu=6&NyX>vZqjYqfzH@zvgbYLdCz;^=Ug^_{rl^00N#VEqeDTi z;;j|xwpDX&zc6cUuGy|%n6tk3>g(2KOSrl)qeE4YzH8mL3N_1JDaGU3k z>$YpxE#Iy#TD1+EAfw^SdS&yac%HPdxgOxlS0|t#lqiA6l`*PS5d z&SkH%WNgWxx96Dgc$0IJv?)^R3$V}F}wPo*Kp>y77fL+jk$_^#+!*=G{eI*#Po z-)>knZr*_pd!RIMGsSq`HQ7|7EYFJNP6%3*ADDOzucwf}c@ytoRCGlXZ=zqM3nt!1 zzXHYES&)%m-p%t@r37`Mw_iHV2sD9c2Fg}NcZHVL`e0y=Rdjay1N3B&QEHIop_{*D7m2EJs{ zhfYON2F|}0mv`DcHPinRPs^-~p;N6(jvHV&%78@qjfu}Bndjoc1;cQcztV2az@o5y zl!4BB8}*8P&5@Q&$9NeL0u>w!_U@dW6P&dECR@rZyBwBRYF49Rvsg2+?GfF0gLRkS z3m}0GX#t`2c!@F|UzvT*<=73@2zI;73`?4mIp05e?4#>0H}@RK7({)}hnU3!Wm zKT+<$aefO5$lyev0axq>+S)x7Xc45A{{<)8w|58I%@Dx&PZOv}3%$b8nf*Cp2fo5l zZhwyQ7$mFhS1Z!F(38v$KEcVK10uGm3GdbyBBHwqZDD4Hgc9~1d1t9&`XEF%XWQI|j-6RXuCowi5h)erKF?IQzj@GM1j>~>c-zVs6+V&eL52SHz*zr#m>0c%-uN2 zRpq_2n_P@BI;lKOSd~k~doo^lTI*68uOgR#g=*yuCNEoBy-Vo|uL@^G7hs64bM{}ijiV9F0Y!I}K<6YOg8bTEGNA-+{9J>)Z- z?mfYKLJF-XcvB>T>gh@lkfte3rHn8B2HoTK+k>Bhw2zlVdkp>rn@lSCZt&WY2<~xR O<41l__42cZ&i??pNmC>M literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Payment/Razorpay/RazorpayRepo.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Payment/Razorpay/RazorpayRepo.class new file mode 100644 index 0000000000000000000000000000000000000000..9a808f728af72a796812ea7d718bcd4ceacf96f0 GIT binary patch literal 566 zcmbV}!A=4(5Qe89tfD9!eFKS!z36ETiN=^{)%|HLw`TTnS0Dx2I22c~wi%l*aVW!E;A(lC5FGu)loW=6@Fd}OL*b>m0 z;WNq%bt(sw8O1(;rhqf!QdwB1bUJmI(~EIWGC_}WW|7^kDU>&^l(!ZutA!HKo+_PO zmIIfNyGaD}kD`_T*jIjGFWM;K)%_q85SXP^=Z^fNNrqVE@#G2tt+AQAn66bu0=i4a zD$hyPRlv?zr5gR*@%`Ick_BlP{fqK^^ZaWqBg5!@CORC=wO2Vks6tILy3pEq^vY-k zI{q_J!L($2X-TgBI^-z{sPk&@@C8pYfNfSSRt+ZSQiomMYp@6HpSlkRT$}u;1Mm$3 CVX}V! literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/RealNetApp.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/RealNetApp.class new file mode 100644 index 0000000000000000000000000000000000000000..5084ed8412f50a6f3227b6644c36d0f35d99bac9 GIT binary patch literal 1528 zcmbtUZEw>s5I%R=vX!!pj+G6@>v(B9z!I8}P+`(qff(urTBjn!CpYynkJOGFXB+$~ z_yPzCegHoTaZUpbEPP=f?2CPOkDt3d_V*uOz5&20+;O2mpyH_k)tm*A8@i2li<|W@ zbipC8p|nqmAk$IDv9oc`WEME$lkobj+TJ z2rRVoX*UQ=c}ngIKh_9wRBivWgkCIyKG!L2EIAM!GeXJc(9x)!AlHR6SkgW_U^HOT zr>%fRQ4!`~-i5OS9{e|}5>((E0XI^y_BeLpdG&SsuX9es9I?~R5NMpB0|aI_x!F_w z7tBh>aE)Z00TU86_Xp>Wu>xz?k(S5pW{}F-3?N}Ny z;9U_3i!Y@ziRch;Etghu-B@hYZ&_z9T81AId(=+vsyd>5<;4Rohu}0iWWLY!J<3K0 z(#O)4*hyWO|1_6?(M(3nvo|A?o@VcioSRHCpW8DLs+kMbXNJ-Jkl}k1sz?~6-_l`O zDcrM=t;cfkH zakg%NGMvJ>Gz>s{8dnZX!wg2*L9SJ_H5_#uD>!Zg`~-auzaIbq literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder/Controllers/FileConverterController.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder/Controllers/FileConverterController.class new file mode 100644 index 0000000000000000000000000000000000000000..189a89fe2dc3bcc8affcb3e6e0e5d7eddf8a49d7 GIT binary patch literal 9618 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 WO9t)ZYcb#UvVev-!al;v@c#lxwa%FU literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder/Controllers/Rpt_builder_Controller.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder/Controllers/Rpt_builder_Controller.class new file mode 100644 index 0000000000000000000000000000000000000000..7aa27712e7c82afe60c0de814e33214c0110452e GIT binary patch literal 2578 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder/Repository/Rpt_builder_Repository.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder/Repository/Rpt_builder_Repository.class new file mode 100644 index 0000000000000000000000000000000000000000..4898756b36e4cd37f431cb0c4763d79b32d10c37 GIT binary patch literal 467 zcmbVJ%SyyR5Ug2s15k5F_{@A9c4ekU-IAw_)+5M z!HuF95B;FKsVb^p-=1FpoM11(Na3t>tqx3$Wzo5pMbVpP$wBArU1!9F)o{F6j}vSv z?AP=_x*=QXSy6K-3C0SiE>ybn!Px39P|J@l-0LL?>Dp6d`$E3)v<6g|&Rri$zBUaj z91heBXpcV_6()02S&}})%ctz8iZuI|g7fSzH?FK0`R;_I1KP~lD!oV*4)Q*pwtQOtrHUCY^QMatEx^ou#=VNf#+#-QDGy-R(uv>m&826HYT5Sik(=;alZ?^0~lbL Ai2wiq literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder/Services/Rpt_builder_Service.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder/Services/Rpt_builder_Service.class new file mode 100644 index 0000000000000000000000000000000000000000..2bd5b43ed89521c43a8db02a5363ac963163e201 GIT binary patch literal 2565 zcmbVOZC4vb6n-WILc&T3FBO!k)D{!o)+%ag5F02cHHDVcsGyCTWC%l--MG7L@)|B%OfH=AU6^PKpFo0)y)ndd%t?hJqZ^ZE|}%lJ8lh`@5$KG7X%n3nYP zy_#1n)slq-z^=>vL}$(lQr8_p6xUQGP&!h zyQp*I-RX?L)Lz~4)QK!8SCveewJh5+JY`$1!2O)?p`Fd6lZ6bbqC+7$oGJ(4k)H%?{6@C<<$scT6#$pNo%&Lc0A?hPJ? zz=Vc=3=H8-OvNxMu=2kPqv0*QO}4otUtl(syLbjj-leG+ZV4=0x93$!(heH; z4&@W+9odzq1|JJgI#i@YReBZa8Oo%=Xetm`_mrvUluxg zRq>PFt#KO}W+nk0_hR^vT=8pm?yH86@G-RssTLS-n-c1F@-3n$jge5n{VW8uiZsdm zVyRJN#8_BRE71aLU(xUYM3ZR2Tk0pm;I?||)PZ`9jsz9R>akxg%ImRz5}3vp8Xh7` z#UwL!=v-YiB=7M}M1D?VL&GC%64Y%&&m|Nf(*?$Uso^W8jT7yb&6h6EKGyIxGsKCZ zJNrb#4r2!i`>ZaV21B1}c*f8{f_5hJ8lK}DfuwRDkzvIew?gsIG^+lkx6cc|)$kp@ zr@GU^OQ2|KzoqX$!w<|fs@!bl$S#MdnB;|qB9n{}$yMJC4JDR5L6XDYUEeKcsA!O^ zf8qi|7g5!4#2iWD$a|GQ!Le&wy#83jOJ1L(_2<7*s$?i#Bc62mUCP^ar!2P=U+9ye zSFZh_EpY<~q^^8eT)Ic3?KNt${U~NIL)U5_J)_hFe791J(TL+<5a~Ig(GZPvih^SQ z-0#qSr5_Ot2OtpO2L0Ar0E{3>BeEQ0gyO~P6eARe=YGTZ{26XW@F%8!p_wqth|hAf zg$!6|4c@`K#P%Mc`vnb{dIq-%_P$SW$KPU^W?5f?w>ZOHfs6FxA(4rW$Q07V#3DB- zvdCm0axQ`m0Y5*yfmPVwdAy69ta@P5j95rzXlA z51UX-wAilGgXmPWYvvrO1XUwRMVO*8%upH9xPyDRixtcwOK-+DQq-GiKbPf}v`#Ju pK|M*XpH+mI9>b&>_tBa@oY1eRU+s9ruQodwf#v_TJ14XT{0jkfegFUf literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2/Controllers/ReportHtmlController.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2/Controllers/ReportHtmlController.class new file mode 100644 index 0000000000000000000000000000000000000000..3592d38aad4eb216829e2111296dbf79aef84856 GIT binary patch literal 3427 zcmbVO*>@9F9R6;%Nz)N9h#J=#QCpx4R76P9Lcs#n7LY2aRpTVNqyv+gICIm2`@Vtu z{-i#5JjW+J#}l`6^xZ#7{q9UkQ#*AlhnuP9k(ijQR|@Zslaz#8HCme+3*8(MAhBpQv*E$8_w7Zw&mJh%{o>-BP)tW zOA<=6GFWgbQee;Ynp)a4RMDY(iL)S(J<;@(Q5&?&oe!t;D(E64XjE!GceR@ev} zuXZ}H>vGW#&RS(@d!cpOt|&h^Z`qd^tcj-b7o9*>DYoBrJXs3pmcZ1S)|E6>?0x7& z;#OE0-Ig>q@h#={6&=q};{x47!zTrL4*FG@MmN@*7=S6Tewq@GHtS^>+-K7tfy}gD zvE7q);OKq(ut&{1bg;0dW&ao*+7bt%q+O2C8KuCX>E(b;`(CXuoQUDPQVj+@Y!GKT z$pEPH6queoSCNefd;?btY>Z?%zBP61(hZ@Vb!wiingN{~|Nr`mTgIt!SE6}~vTT(d zui6>i!&1%IjRsSJY`qJ%+ob;Mttc6zKnH5ndNOFJc6vJ1rv-8=v+KC6vq;HcMVjsY z*ESrt)%;Q<3;htd$wWWW1GpKt7}zXuc&$44kC|rTR@^4AsV3Fxj1)MU0Q)~^j)T0i z3gi4%g*1k-)xZ{k{Qs9?VjD&TQZ#vnMd1ouF*Mwfjk8LZalwEkaE(?|^ZlADty<`N z*48>2q7ya8y5k6*TF}y7aVLyRpZ>odVY;>1&gj z*o!<1mv&Et+K#0@cLU8&;*0MKDHH|Pg{oSjfp)z#&*quNIQARZw}yu?r-=#eS2q=E z3lEyOO9M9$84x>W;E=#o%at6T9*8@48k1O`!j!<3#j3L~SaIzz9LrVQU?lJtbK_}E zaF2;;%&=dvWTaOW7)gY04Hbm$816N2e8m8WtuS!{vlQ$~ucqdsMmVL(?>BK0r`R6C zW;u*vO#_FfrV?@>g$K!(+m_ROb0!|fBaCy{a2<}9+mZ~OTb)QLlmtXB1zP}GP{l+Q zOq4XczH3+Hgv%V)&YBxf;Ve-qa;WlNbJYd*M=YAl@fuAvsLnU!SWd}vD%Tm` z=rT7Lxi|0YF+P@KVas4J1rECI$cV?8OIlpfVs>cx95j9H4Kt%@Vj(J2<;MX{;~bta zaGua7joXA#Vd6)&-b zrdU00OqmWPF$NqdeNmqY1g=Z0`nWskA$g{wMVbHa()E?-DZV-nY{Upe)(%&xa zwi$MvA={Xc^GtZAm|*Gau4prHE}K<$2)QELPZTp+A7QqB8SIuXx5 z%1_Vw&7dON79~9Zw`)Oby~2`4G#?ad`Ta;|k{@u%tdBRzy*%MFD@K*2!NX0QxZQl) zcJW^?`nWT=)4!?cl%sgn8H)iXPcI{d#a}iH^ltec>%NUxHgMGffGco0S4~O+WU!IH zoMG6+`z!g~!`)TL@~aEiM2gq(E^|*m|hSqQ+Kd4W9O{M{Uf3xK~3~v1q zxh~9XYhmc<&)ELp_t=r|$@Yx2u(O3b^1a#KOreFb77pb5e#Rv459f`nkvY=B-KVmB zJ=wk%j`mbrxG(cS3lHT}-Mjn0!oF;3Q~zk@(ad8ll=ErQpC)}~o=Y~Zzs~5zy|nf8 zw!!7pOZ{R~e>U~Y7k~Upu0S7UjTY1oSp0@IcSA#SC<0{iKH}QEZWc#6+De+h}HnUB+qk%bpt-f z^LT-}v-lV<;w9p@85i*~USUXfkmgn1_EGa9UZW0!y65l)E-?NNQ1eB+$>*4Zt$2%c zX}nDjZbjE0BuX0)2Hr6+Y~YxI?FPo9k4XdXG2#WhPugBVlXQGPh}I9IC}+6;i2IK( IMf#IJ0nK&N0ssI2 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2/Controllers/RpDownloadController.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2/Controllers/RpDownloadController.class new file mode 100644 index 0000000000000000000000000000000000000000..6f9467f7e13835816d855cd3f7c2b0280d0b4b4b GIT binary patch literal 9591 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 F=r<;BvE%>% literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2/Controllers/Rpt_builder2_Controller.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2/Controllers/Rpt_builder2_Controller.class new file mode 100644 index 0000000000000000000000000000000000000000..483d34ec8c795e4085f2be4b5ab23fbd4b33e234 GIT binary patch literal 2605 zcmb_eU2hXd6uq-?aBMaKoHme_LZMI`C$K;RfjSM%M?sYw8YL*I)Q4!+J2(TIU9&rz z$g29EK&pbo13#cYs_L2DwY_#?$&UJv%-oqf_ntZT%w7NU@2Ag1v`8CyG8iq_{R1ly z-1UUAwwr3tj-=~|;Gwnddn)ix-|$0jx!h}5zu9j@T`|hwHzToLKX_}| zf_tI$n%9*dv@G5^V68^VKazoP5cb@%^rTv0G*+J5Wt3a@9Z{q)nl!0EMMf8D(i1PE z16u^IIPx+o)%-elcX=SSoi66oz66k!!T0OZ)OW@12H;HW@I&En#TnV_t@~B`|5OQ(oD!ve%B5D@r zO!|&)LHt0C>zo8T(<}B?vn}|wKHoFpp6Zfiw|;dPt(B9oar>zGklGnEUFy-K^`~_H zf>MU2Xp5`;_Uo={l72Ah9$AbG34|#}U4V>CN4U`Vp55Bh9@8i9fX1>kbpDMvTKlPK z06&`an3mA1q9zmz*#slEhW~-q;YGF;^@!}5NmW|L)7bH&pe~+E-9@ivKQ5VX$UXgD z26gn)`cm2=+I)?6G*p@HOE=JA#_%yjsdbydn1`juiFCv#0oHj~7Dk3~yz-IE511G< zl{yg|E?{mZ4s?+&!9q8nY0AYRr(k`7zc2qF7Saq|#(rMMyMl?1zKL)e$@$9PG&_Gx zUvDnFhneIkVkAT>AfC?iZQ`2d(E+Yw4UGnVH!w5kCcMTOmNg7KcpSKmxk2A|;M~DZ z8;(Zs3bsyD)Ci8LT$|Sb#^OsR0Iq)dk!mR3}E4yR$kui zSHnDnxe#NhB)%OCW~v5V3XR5qr-28lRikkgj93>Mn?XOv|5syGlwhxQ(9O^~(SJHo BjsXAw literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2/Entity/Rpt_builder2_t.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2/Entity/Rpt_builder2_t.class new file mode 100644 index 0000000000000000000000000000000000000000..ef7c24cd6571003911770eb922fdb8e1196bb76c GIT binary patch literal 5050 zcmbtWTXP&&5&mYcv#VK2mLl1kI7G1p=;{rI5VEpOBwKN0R!g5TM(e79pdo?T1 zj*Jy93AY5oCE*$;+=`+qesL90h2<(jQScI~c;tyHo_OL<7{b?QW_M?;wIwQ5(oUc5 zult{woIcHLWA-muFh%RQW%bUfSJY|<@x zNyIdCUNWzmxw7f3suo>)T~?|gVHQ36DzV)m>_nwfwoHdB ziQCn=D`iFs)3;Q%9gCX`IN9**a<0H#5}%s0R~*yZa2avNk61S!Dcma`e!!MlQBy5> zW5*c$2^HX?Nj}|cYvtS}vv|2$adKvz`P?avr%lIPu}ZVnMavc9>G^OA)=xXue1+Ie z+LJ}IS~N>s^dl{h$9-c!c67W@V2akv^>wQ>!4$Q-q0(An!NgZAZ;Cb3H82<=HK>}0 zf~uKvuC}O~u0px8wp_WKtJefq7du`lSt)4fHxNfcLq~xLnAuocw%mD>r6-xL6wUI2 z>Dn?5lreABW||(mC+{s8mo#R$gV|6aJg>^;6qDaCc@07kD71EpN3_I%B##ek@XwpP@sT$)2!dK%}^~6Bic{mp`z(b3R;w>4SWcXq!Gol2BvUIbaMtC!^cEAYp~HP>9Ym~F(kT01Eaq5 zoPj6sDGgesxeW%hGLsc=)pB|C<&gACi`SJ#iET<*YmJ6)s14J;hfjN3;N*`wlquYT zJAHeTN`acX@E#x4q}!`ttx~$rN4GL%<~%mVX>&cGUSBnzAzqZ#ze{cb`^@q1$^fxWFyT8?1bg$wUcoJXGu(xr4 z`q~NqGS=~>yRR2-z%Ct4<3+q=;AK3;M*6n1Mbi(Nib2`pj}2^MNF{7R5_Vl!_(>9P^O9C1szW>Oy5^?bx@o+H>%92q zDjROmdfJxjpu1@X?~u4@cu?)6`BCD(gvRhFPfwI@rvxH$$8eP7Xb(p^ztRHJ7TRD? z!G=#&M7q2BvTv&|TebSKQPSF@VviT1PeJXaeL-O%tY9Q+-n?dj|F z5kdOI->LSv`EG3V&kf@Q?2{yd2+p_%0QG5>F!*)XK?iDK3OloR?{$+fL~A6iau|@C?!Z z=}qt~_ckW(Rul8G-%eX3#tA#BDv!kHRkHXkQsHlN7G1(SFWT{n=)#feO~G(=?*U7b0oC~|HkudjuG_ZA6TL;%Fgz8yg(_2leh(wQk-wE-(Zd!htR3GAER>i$8n+h;p5)f0`NX9{gt2?|o_L+H zIC&Drg68nNDnq`L=-S5sq1G08hPo7W?{tnGi5*qNw!d?1m8GV44&Oj>bPLW4qMyyj z#E^{z7F`O^H_hkc%Ea1JPI@+8GcDv3%9N;^SdqThxqMQYSd4*JvSvD;*Of`Hn^>as z+TXfhF8DhLwjaf>v5qU;ejLAI;;(RrY5WXTQWC{MzKuLeF_N>24N7q=lKHEY60{t~ z=P4!eI`8;vlyphDb^ylvRK%EcO=F_@d7r?n(0oy`Ow>5VR%XCVuhW37cVY$eepKFELFCJuXKH5 z3$IdM;HT>~Up^=DcYJwPFyHg#d6D1n<9}>PUO$k(@+l9FM$66UV_}I literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2/Repository/Rpt_builder2_Repository.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2/Repository/Rpt_builder2_Repository.class new file mode 100644 index 0000000000000000000000000000000000000000..63b2340ad165af23540a631b7622a917a44b7094 GIT binary patch literal 472 zcmbVJ%Sr?>5Ui}a0!b^6^0~G;3K0o%p_?Z-QO{3QT9dj}=|p zh6E0WdIr45pOgZVnKe#xAJge`zAi)M|B`T?|7pmTW6Nu1uo@8O-WheF1P+Qm-L`aR zJ6kq%>6~ZH*1JyN=vQ4GQzXyJKm*@ZGE!h8#a8+lQkSJX!Zs#fb&8!-$7#O{d;omf Bnuq`Z literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2/Services/Rpt_builder2_Service.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2/Services/Rpt_builder2_Service.class new file mode 100644 index 0000000000000000000000000000000000000000..02a7846036d5d9666319b7da830add0e34f235d8 GIT binary patch literal 2350 zcmb7FQFGfw5dKbf;zm}}xJ^P`QXmD2<1|qz0YaUo*hvZnHz{#3@RT{*7x#)Hd8BhX z{yF>um|@I>2Zm>U6vLh@+p-%o;}@^*wD;||-|pW1^Y5R30ocM%DHsf&)x9&@7u<1$ zvX5Kpq}G;BL--Huitx{6T?8Y$C(&*SNrr`2{G8hkcboQ6?Ukr22J=|7yg(|??=UrBhA@%9RSR=48LpM3D-PRdHQ~SD z6qn(8*{gG>%6+NV(PmP;lp&FcN&c^bMC3|^pNj@poS~MRtknUDpgN;EslwW{2j;-A zWMKxgX}pDO3O5-F6S)ryF&cQdZ{Zf+CiwzNg5hqiJl+jN@r|t%ZZm97jCyIR6r(57 z{b^IC7JVkvORw>q>lRVMr-GSHp&CMQ>CobOE+W}h(y_}jP*j(>ifp=EwSCHK{|$$o zX<6(RwBUCwe1tm;sZ;4TijKoDKO|D?JZ&(P;u@Acw>f>0b)>^Xgoz)u^jLAHV8X`7DcmPz!rF~|weSF+(AW@fhQ+=xvH2(M3`vPB#0nqg!C*Cn zLj^dgbxyR$jX0rRs#VSX3kwfHFlNua$9^g9+-FadJKJtiV^ER&si$Y0;MCJ(Vg-*a ze2F5%RT4zcg|7~&%f_XtD1AqfvMboLu#W>e5R4ueNigzXtLhV9S@>Fq(7m!Rg1Rrm zO6gDESol_h%@f$zr)L%paYT(wr;2qY^?)vo)T`uq4&9X@tM4ovqe9*U)c0PFOWt?Z zw`Ia}sC-E!0)5+8ytZE#Po%yiv+>uX|4wY`E@H@CdRqrHkit`)mgqk=1+3C7m7w>D zI!RwuWK*=#_DW>wj;2+bRyJ8ib|(J^tl#L5f%(V@jX z`I$Pz1wLdLhhL15GzTPeSR*7&@_?)+nTbf|4Ro=23D27`o|ys93_bIo4tZ`76218N zJVM`#(9;q6wt=CFW*B&d#J(NFP7kotmtpVVQH1>q*%^vg(Af7bFkpVTvEIdQ7bR_< zbn#T%au?6F<3_&@50lyCP^??j03fw9$RSJOtRhdpo7kon&{f{*g&J@xMD?NYAxnc! i=JA4RmY_2Ud{6(9VfE&WuzFe<1J&^Nhe5~v2>b^uutwwn literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2_lines/Controllers/Rpt_builder2_lines_Controller.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2_lines/Controllers/Rpt_builder2_lines_Controller.class new file mode 100644 index 0000000000000000000000000000000000000000..af3ced6b981199206dc9872b528f56979712a7cf GIT binary patch literal 7737 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 I)Rb5J8=c5w?f?J) literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2_lines/Entity/Rpt_builder2_lines_t.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2_lines/Entity/Rpt_builder2_lines_t.class new file mode 100644 index 0000000000000000000000000000000000000000..c55575a37f0ef42f5342f32fa69215a09b9d8297 GIT binary patch literal 3687 zcmb7FTW=dx5dPNQwKvY@+NQ00fwWB_&ZRDGDAc)-rcGOyBrQn@v|Q4Sa}sZ2@4EK7 zG!oBH}1eN+2P4DH6X4DBsy#C${4>sg!u<%zS6g%zQKF{QcjrzXKS; z!ze-uQW+X)%$fFT z^48Lt$hZnZ)-v@|+lDE}UL95tpDoi_UMyH8Ybhr#+qUDHuI1Pz1&2KN!(>4eOIFDh zc19%A%iMITf#JHaMbUJ{@`9Nw3xf2LE7z+VFU0et`Hg~yPhXv!nNQE(QP7kXCevM% zF?UwQJm(fIFKR9CEQ_3i!wmwNa+Y{{Yq7d)EWo*`-HO_9Ws22Rd2hl3(Qmz4b*-EN~L0g`0JjZ<|FkFGw%zU~ofKB3;${f;{9-oiHzcMoqCk z>I=Ou8?d)?Q;%sn}wi9^{iRS%Klam?oFg+rtcY;!7YY-dp12i$(+)x zUs06GIW|q$3pmzO6+fC{99MYCkl?#5ba&Vi*B#A zJQ~AYEE>3nB*Pf7Y|9;!swD#%u#6G2P!KkS!RmghFk97{HAfEXSYbyFbZ_P1os*SL ztvX+o-h6?tb<#P|?Ui9vN1mNK&|O;#s@WP!LWX|dz#W|Q3ceradf`x!@nq!7Y!{z?ew@&tbk zAAnczDp!geqCFg)+MgrN;2w_7?9UNLcn?R3{Wf9yFOrme5(lZ(IFqcUg0n359_~-=*S%~4HoWh?#dCjdZ}(^R>)!9JzLyYZ#7IgbWF!@dYZ4QAhR#Q5iEHsl6=*CKC1@+|E zCaDXf4`1RMB^B4P&i^ZHqiG1-pcFxlwlt+EiWtXDN;L?3E$utrYOa@1GtE` zsQwRHqfq|Ep(w)q(EhP9(Nn&lPTqrs_TdqA)Fb(L`*4;N>+SuI5FOma?R!!`l2WB1t_Bue67QSF zQkrKX=iVkgu2oFqsfcHaY?;^z+;zM$c{lu6f<(f|V-|BvL?b=(ltL``3f^aOVVq{+ z7bvM1It4vWLaUU|Ji`6c`p z4*URqRMkn4NKhhy)Pp_tjArJ|d-M4B{sF)@Y*bMaIBwgnbfi*4UN$lxwF;fa=LRR48Wj{+PsmRq68QBw9Q6sUNorrhSEi^Nul>{sd`)1pQEvOeAPo)J3>^JLS{passD>!PLod#}#+sFsE*W~DB$VWO3_6~Lg z77c^w(XeirB@+TA9W%?PNPm`pL3H5croxprkCtSa9 zoNzbB=aX)=H&6XSvmgJX!x)I6sQb+2_Ea1>4^7thGa6gZ8gH6FnNMZF6>nn|b0}e+ oe=F==;P+yVcUZc_d-ebofn_#jeBir;Rjdu|$6?AWr>q120E+Pi9RL6T literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2_lines/Services/Rpt_builder2_lines_Service.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2_lines/Services/Rpt_builder2_lines_Service.class new file mode 100644 index 0000000000000000000000000000000000000000..de44f6accda2d50697952f9b6d3acf428a3c3b0f GIT binary patch literal 2381 zcmb_eT~pge6g?{&46;IiBqX$?2{cI!geVOpO)w<^LK0f@QQYyXXKgLcrb6;aYckGH z=zIT1JJTUUA3A;RkLvWUEZYLy(i!)~SG&4vM>yj;c|f# z*=ZbBMDRVQxD4Y3zslVb52Rkln`!k{5|Nh|CHxpOc~x0(_G72d1~$%s?pgQ(GYpvn={akz%P`Ur-znJi;PfOUi-aYFn_xtRYPeNlA?+8YRk! z!E%I4g(+8>W$ke#NvM@}NppW@VHpHtw%l9nuO*$^>}fI#HtN(oRJCs4nPhrEtOKg&Vc*_4&+Ohj=NgsG^;f)S3L;<#G zI=XuE8w=lRlp#WiHmOp+OIoLu2=!;6=r@9@cqR43y!FqYkq5f)47r{IJfyoNeATRr z_7^FSX&Oo?`jk=e^<*NOp_R5nv8Az1t1PW-vW)D&+(%fy(1U@I*a4J&TZDF-yayO9H1srP z$nEn8;7$}`iFP$VQ-?UgU52yp;|Y>xhhz@3grrGslGP-~Vv=(Pj`5%e&+7@EV;!Dj z^pD_im*)~8F+9OnG5SV~o{iC;8tAHMMuDeD?3)SfYzI5r3ws4$$JjrS9iVuN8vFhU zI?Q(#=8v&@jCE~a9b-#7EVT7sPEV%0B27dP(^R_|Op>(IxPynd8}V6c!FTv9#x>gaPo(RtvJdx z%-pH((Gw}%8cuW#>@)^F4RP1l-D9L}4NE)DOx_`s5Ekeb4fA_4mS>I_eWq&;q>NU} zvOV21ZOhfLs>61M6K>iut>Ga@A2IgY&aT9Op<8ZZNFSuIqX|8akZ8?#_FmI5k|axc zoIU2Cp<(4&^&r2tI3^z?<8vzRWRQ8&~mhNR7>SO)S7_IFn#89s%4sKab=9f(<=w4$W zF<@HBsI$9m*W0S6(}JmC+8#ZXp}^${#-WCbii4_Km*DXXrzpB6&#Omr#P!BcrF$LwPnmy(r{X;u>?(VEY+}Vl3b(c3e8B+tph?$!;;Ah!C)v4vLrFZ zBw=0KYIr;BWIkM&wKE1;C_N)rB{keIb$3lt|Fw%H1EvQICCpYTOvCgltVT;5Ycw=X z$?pnlv5x6HYa)syTfO|7T1g=IKHpJ1cVey%{M$5UvMr_hB zXNbAlHX3kkwUPlv4Qm=oxtH#QB4#`@mFP-KC(u(ZRk#9I#<7JZ)>okDRN*Rg&~mo3 zG3BxdEQ<088WbyFLGf@aj!q5p3fn;$3gfo|-Lzd*pu?K_Dr`lMl>J_+7bPFouEsur zxLTnP*H9AHCBtIeHcbQ?k)()aO9i$I&%j&(&+8Pf7sph1b^u$67vaV@`ZX*#ZCG8w zy57qsnsF6$3=q4$t8-JwmiBEL7EV}T{Tfg}qq!F%sbFA;%D6r$4c9kJ3ip|niwf+} zP?t-ydOgLoOODnX`%Kq!>-U=8j(VvmI~8^z#S|Z4sbNoz+Bfg%(;DWKUMB_IQdous zV%4<5ZZTH8y=P&ZPbla_Ep@XI>8O>`NfRF1o`w~ZCJ}Z@ zzk*UDl{AL*Ov>vEy7R&X2evhc;>|MgHE%a`r?J_x_ck;(=i(VRHnBg0{1TY1R-mSH3Rz@lez`7%i*u zR)x3W?F;~R%3J~Jcg_8D{hXqPxyAB~VU9L}^iG9$;oU@XOOWP9ndfk%L9E8T3ik=C z8N$lb9gov%zh%qO`xM?U1ZN1r;-e2Ld`Pfrh}E8P9K-TLqz4o}EJ!s(Dn2=)@Srpf zQEG!R!U^Bw?T*bu%v+qUvijLIGV%En`6+w`mDyd!lOCNlEaTGe5?f1;^Zwn zKd$h231;r_lM0`b!%9)!pFafUGYThiyFnwC-Onj}UbraVUFqP`DhFRs_@aO-A!39F z5+Gkz_=*e&5#j53>Be77D= z=kC|7fx+{zQBAGM82 znJStjb7hK*s(S5=GiYow<(5Et?;Q^xmCF@AWV;ZvMXvR3%Jyi1?5SHWk# zV&QKMArf3QuG1DD#f%4il$rb$0>F8g#a{s>0BSLtD?=J{_%xUQW0>c&o59`l_?>?p zG#BUNSv-pi-DmTUaJkZ#52#)IFzS|M@tkXp;o@;D)^NlpBP^>31CGU&81mW9^`C1) zw#3DAaVcp&k5JPzK8P&KBC;%>K$go&WqA_i`~WG+vVyX#;&=TxTFanivH5YV-n#Sz zE(U2AH9UQl=fIhi|)lf(i$Zddh*}c z9%p$DZIa=phW$7|LJ|hzmlyLJ_~oE)i`p1BZt?+d;=h|++~T{amqaCyW{u(2rCGef zSAc(BE3(IY*#i&VLejVT^413kd3k5yb(BqlWfoq~e=%RK${4r74Uz2)cw;_x?#Rn{ zCr<(y@A74=5gG6H5yA-4=2IoH+#%m<<9HK60(W&boxpGtB|V(QJ7j%N7Vnky16kZJ z>qoK}ll74-j>&pFi^pW8D?cGC-TP@-Kbyr9LcM7mUy8Azu3l3vo}6DkhOdebqO;=FY^|%9@a3?x(7q72(vmxGt5sp;*ao9KE z@<6G)2@l~ZeAhSOA>a8ip18jA%ZOKl?=cL@3(nu4b3Tpy6a@(a;3U4EH}VhiMlJ+G zU}Qf*#mJJN{iG`1uPc~0iyuldh}KI(3lJb03HMTk`y!E0msg`MRAUy4$4NhO!w3~2 zHT(omlUq2npa1{> literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/SequenceGenerator/Entity/Sequence.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/SequenceGenerator/Entity/Sequence.class new file mode 100644 index 0000000000000000000000000000000000000000..eab4a625689b51f4440cb43fea2f2811d5122749 GIT binary patch literal 7115 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/WhoColumn/Entity/Extension.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/WhoColumn/Entity/Extension.class new file mode 100644 index 0000000000000000000000000000000000000000..1653c1ab6ce279f2afa016c5af76902dae6419aa GIT binary patch literal 8562 zcmd5>dwd*K6+U;fo84?C$tKNfnl!1>LejKs-;W8cl(y8=1S*AML4|EHB-3LkR73_~AmlU$c6qzk)~>vk3F zOg^2>L@6xjv=egC`I3IwTTmiz=hCT>&32AEU(mBwkk}xoYE3qiFQhVs&8d;19l1U838ix?QH*<+@!Vs9cKA zF98grJdjiXnhHQv0jS0X?E)^JXI0*Axa4F$6*#WzP1kE%kPL+acdea&EoZ{$KJ9mBx65KD_kCjVd z{a|ZnxG1h2fR*BaC`!7DH8bp|z0@XG5t#~_ovvAlDu8#*T6>CVmA(0z7cC_At*l}nA< z1#D}#7q(GJ02`?Uv6V`YHR)ECtTCHTesQ$h3?La;#k;zg9a#t(fd=GbBmN*U3wkV}>>Fy(` zIvaE;rIU&|3_$6nd*cD;0X1 zL1!v-xj}0by27Bd6?(ftJqo?Upk8W0a>-829r`Mf1G0r7J0~d456~=~Wh$k!WVsM3L0%&_h=uS5d6nECmcko^S+%K<>L2b)jp>XR z8%pJeI9m!T>*(y^?ReOr&(W>8ryI}f>05`J-h)k^v-8D~0zm0@Du9V9fJrHU2`GTU z6u_b@fF)J{3#tH?FRBEwRvKYpG=jKBP}d0Z8bLo+$g1iUrK5tH+y_W`&nl)z2JBpn zzKW;IN!lH9cdm@n!}N$jkJ3g==8SYEU0B7guN(9YdK|9Q*qEIeK&GB5Q%y=zWH-KIfV|onN>n&*uf#v;La2g1Ldjr4 zD55?>3xf%v2Kxvt2_}RR?jy83m=I0?K0@8Wgm8fH5n2^Y2-d9DbKe6^In zz+XNYRGtfsBVQxsH~Y&k3@Xp{%aKn=`3wE!mjspPvgpXyO8GbV%P$Wq&(+qEuaojy z{N=lY%5xES*u@_dqU8~)^k93D~$IMmZM z=N5{D4|g3UaWh5A4tG6FqHpe;aoQ?P0Q;P|_+^FXJw}yg_))4oM8-TbJWhip#;_Fu zW!Ne=Bg`p(lNKg=tn-j|Thl<=ZPlC8m{hMx)69AgX^+(a(jKePY+zEOCN-Fi9@1W`38cMN zv)RO?W=(1`n?0m`mI=~6Yr1JNX}Ttv=5!BfztsZLeyi1NVN$CmwV16Q(gAA*NC&Jo za|V;zG--y}<{=%l+Ce&K%{1GYG*gq>&6y=q_%Nz;*|F~iqL)3Po>EN*x{}_B9oi6D zOjqH3Aw;u6v*}&%mC>9~JG~nyOzT4-dJj;9`ozn0HBdQ?h-c`%KvBwxC+QlX7+ovw zq4xn*(2e2_x)vx-P@}k>?xK$Z zHQ_NjLLUQa7WZOy9|tnUL%7CI08JOq(lC7zs71U$Hhl`HHB^SrVV?$?5vst)vd;ju zg*vcuw*a+=_@(0z&`kO)*7yj`kH%i6>L`hSQ)85d@Dl@UR3E03NNFQsYg~mTaZ=q?GS%Um61pC9_AGx2zB;^^-jwJ*BfL^3 zwAMuT5YkyJ(RGNT^Tz4(m$HA@3Uj~=>qv}~oC=Lv5g9^$lbvE_q!h|pU?pTI;e?P% zRj-3qtqdWH>Rz=n)H-GApmBB6^c^n~H_#X8i@4(vJZeXP@U28#L$_fUl+h_-2i*=7 zrd8r%x&tUeTf~|4C7^ODh}m=}P?W9_aXhA+I&P(xFaoEJNAL*W4HT#6=w7-9sFMDL zNBLeLLp0I>x(}#IEWmfm`+=&F)cWWFpc*kq3+c;132_DfR`DQEE#V;z4^rDJaD?%Y z3V{a`%`2FuYlqm;K#>xm#0gJyX%y{B z1Yv9OnqcDY%uk|&9wHHV2zQi|>!Sy%J(+>ru}-?19E#@|&q%lP{WZ)f~Nh4YMmq;Qe( zlM3%-{8NQ@Gk#j(J&d1GcrW9hE4+{K^9t{0{7Z!oF#eUo2O0kczsBizC;I4gRM!T< ve=C?`5!`RrcheuHeuJ9$?K(t%l829%=+9{DAo&-xf5l4v?P3!B^!NV)lCgdJ literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/WhoColumn/Entity/Who_column.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/WhoColumn/Entity/Who_column.class new file mode 100644 index 0000000000000000000000000000000000000000..86cd69719f482764551c7cee6f491f50452f5d54 GIT binary patch literal 4429 zcma)8ZF3t}6@J#z>douKb?UTAQ<63=^-J6(CA1(X1;ut!7b$iu*&!*AuBDB=vAnBD ztF$Svg;M$kw3HcU`U9FTVFm_pXMkY}AIc1Wpg#b922h@JcO|WCHe`B;p!|Z&LwEHScq6L2tQwc%Cp>GDExzEsW^moyyN10JM@z_@E| zkuo#8JfAPm&t1!xHKg2DttP?8R7gm->Q&1RvT>^5HP+2$z2Ug)*Be~>qSx3o#cW!g zP|VpN1!2hTjGVjO$%x8*!E@K?LTB%DSLnFf%dQGGv$8a&oQfJGtsR4S`&3^Z6|AOT z^s3Hv$F8>BvMLpi#aO74F+V%IxN@<4P0DMm+kO~<>^3q!vAc{9g=JiDZ|zaYkwVSe zTJtu|3$|-Fq#GpFvtHFsL&Ky2149}P797{U*xFjN8|5IoBL%Nw)mAO`AJZQyVK)j^LpHy&@%+w2R?O1|HsF$opdWvVmjbx$x)P*%QNz zfk)MfW>4x4jql9d#43BBX!{#pb;*+c@!9Jn?5-1s+v~di$~pmc{Ooy@GKsb0lZJ$S zvt`vtJsSEDIqowPS2J|_f`Ml-&wj61?!2Hy`J4e0U&tVaf`K{Ai|(Rwbn_8C-}4YV^!FsTo8XL+DL z*K%rAyO9DJM!SQ5yfc>1W^fa?47`Y!=`v`M(Z#Hv7FHt-#Mmr$!-w_Qd% zy;ny?3g6?$ObXv;bDlijsk_?$heGn zrJ0ae-ZJ2!t_sN5V)(hF;ce!<>G8K z;^f_jDAym+8JuOYb|yPV@&U>2mnP^^ zE|X0QC=-Ix*-Qjf$_)}!${E=~0U05PQX3S%%g|!GCc~>i$emvO1S?o&dyeAoxXfuW zz}fhFe1p0eCh;3wp%ljjyo0NhbQJL>o~M*R4V(BTC0@9&@hwUzyo>YrHl;Lv&5B;5 zl)*Nq@(Yv(@fS`yi;{sg`j*E?GW8!ENJ9HB4kr=ge~RLRftcQ3L|Eh%7CA0&ZM%!i z7c)(rPF<=iDfz79t9MeOGZB)Kko~f1A->UY>5l23{hPWJN#7ctITJst8s+Hl%m&*e zH9U0($?0v_FNnUFi;E!}4=pKap1`!2)0K&RqZXyIdfRjDFL6C zqf05Niuf;NKBXegB5E27$DdF6-F+Sq#VGVPppA+5szO*I0_!4oYC~|c7u?0~VF;I` zb}i|y+S|s3OcP&^c2^%wiI>%1_%m)^8EJlq7At*e8@ETkw~Zf2H;DYBKrV{>Y9N(Fm*}Oo20cP&*-aOBF&OOh|{rA5={|2yt-4J>N^nzW{9ch#; z>FUpS>?ONguUL9sI(ue8*4kVCP6$DP;ay|T(94EZ(w}ba%7QB}GYmKn>kUBfkPt0r(SYda;qR&`9PwCxxb zxowHGSJCxVCek8!ZPtQ+Mrs(~(8O4%BPXX>pr9#!dZH)48Z4&+D0Lb)#)e z-@f~%Wx5Xp0`bJAKyb+}$_N4&(l7vxXV03JT&-8Oq_b|2vp_U!7mV_z;h5^%-we7t zCJ!-xEcOK?CxiD((p|ExJ?Xfz_{eaj(oJA7eg@WKO6VS_8L9H1CXCZ{rU<5SD}n|lDt9TPA&x`?e2INPeKRcQ zXcN5dnq^%nPR0VW8s?A`7%eoC;ibZE7O}wHc!N^gtDE8(taS|^H;HUiiwzFZO3+q@-oRbd{3#$aHsh}F^R3j$K?c)Ua^bGuUVzD*Yv_qYbdrFgV@T#uh?Q>E@ff2tS+iLM5X_$30Vg>a#*zoWIQyq3^ zNk*5!ylWI*=Zva9%_Dic?iA#*spkD?tDy6ZTjaJ%gFyV$3#-Ps(smE3t&1>?>ny+k z@8ur;vkLhY;+J}cyFx#hKr6`45Z>9O7DTX7&(Mb4Qq2Rd2V|TPpY$=3hiVIl`yOL)?qr z=Q0uGa)<|S3D5%-G>RbCaYA3k7_M=8$2DqNo0_dZwZg+J%*cj%(no2 zu3(vOL3~B5UO`g@&*|%P{>A4!Ir|U#qAPDn{p;DeLu6N@&)#7@6-+8(FBPkR$Lg{d zeTs6Zjw1MwCtf literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/api_registery/Controllers/Api_registery_headerController.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/api_registery/Controllers/Api_registery_headerController.class new file mode 100644 index 0000000000000000000000000000000000000000..cd50840c541740632d8c93082113f8575d8609f9 GIT binary patch literal 3927 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 D7^n}; literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_Menu_Group_Controller.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_Menu_Group_Controller.class new file mode 100644 index 0000000000000000000000000000000000000000..92eb8365c6c9049a0661a9dfbc887b90eb08768d GIT binary patch literal 10860 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 YC;7vEs^q8mBcPYc>;XE%A6-)azp`{+FaQ7m literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_Menu_Group_Line_Controller.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_Menu_Group_Line_Controller.class new file mode 100644 index 0000000000000000000000000000000000000000..c702282f75a31f133041aa1a40c461cd38844981 GIT binary patch literal 2805 zcmcImTT>iG6h6IN7M3BwXwZn4gs53Ap(8?!0TO{Eh%NzvqO^RVdS{xY$uPb4^gvOT z|4FN?Qhe|S_@gYpp5eZ;areQ8o$fw;F5kKK{{7FNe-Y6XZ5FA(=#j7Yxsf7_q~$wN zzd38Rkk$QGl{MIFczbx^-Yy;Nd! z-Qj+j>{q4P6tK(aMn(G~+!98)^9ixj?kWIz+~8NMAq12T5d@63$_+Xs9Jfa~DVQ0_ zb$r*_I$xJ@9l?>$Q(>s@-B7hi*u=nx@BbGgv!hR7XF3h7Zt=ys7l zWHixUO?q^Ph5;8@+tkmhjJ|6xs8_8u&vJ=AqECwSF{68Vb)J)MkM2>KQ9-|AG*_-% z?aa37=7wo#eMVz#6e&i-inO~rI7=WprMo7rj*#T>@^U*>%-dkk>T#;&dR&qh%CVmV z;e9~lKdInnMh{z7vnK5B>3Be07gXSCY|5i)ddR4hIlgeTjAoy3-n3o_jM#D(y7@4~ zBr1<&sZFd3c}2w*=596+voQ3e{)jMiVCFn}L|?d(OtDvt*2!zxsaA3&lET>UU;tic__fd0gzJlDuSed% z!c4X2uO7U~e|Yjm)8TVI?s|BLmnGibXVgzIj#=sLb$#y|t~22QA2dJ{_C!oEN^Q`Of%9mMbL zABe^D4&B0C(dm5`8)s!5tPat@=x;PMc1-UVXl48ly88=gnZXiPqG52~O^x2p_)m;N zl16A08v9`S4t50^1Ai9-*(^b literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_Menu_Register_Controller.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_Menu_Register_Controller.class new file mode 100644 index 0000000000000000000000000000000000000000..f73defd8f41b528a19d15a58183e8eea1de1439d GIT binary patch literal 6598 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller1/MenuController.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller1/MenuController.class new file mode 100644 index 0000000000000000000000000000000000000000..5eaa1535ebc193382f1225a3afe2e81588e784be GIT binary patch literal 15038 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller1/QueryController.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller1/QueryController.class new file mode 100644 index 0000000000000000000000000000000000000000..4b2baad3aad76d492cda6b6b5cdd5591d084a635 GIT binary patch literal 4409 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller1/TokenFreeController.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller1/TokenFreeController.class new file mode 100644 index 0000000000000000000000000000000000000000..f4c711982ffd8c7efc0263d3c3b77958f640e1ee GIT binary patch literal 2282 zcmb_dYi}Dx6g}fOaqT#5NDFOwwP^`)oX22jOQ}O3b&{r%9ili2LVPG=?(GlAc1>YyO^{TJHX3bZcul_?|zrk|^0C7a4SlHb&x>$(xR7V3ISdz}q!l-sQ8 z;MlEenlF#q54%eRS&cbR6u7z9@r>Kj2X5%rntI*ye4~u(d!fL?vL77DupPMG(P5xk z`os@j$eLDOC=XTL_`#`E{R48nWBe00&<@Q`HMDYc&s^6vgWex2J*J+ho++1ZR?Q0__1ns2aV6w?s+FpF_aWN;gIQkWH3exrKM;x0ZS zU%F^}6k!?#zWw(ApPSCn>vfd9g0v+;?iEw`SYSSmCNW7*BZqtn3j%k~J+aMNsgi-6 zFpEVj38YGUo9p|V8v=8&VU6xNJ5|hJ4l9-R#ap%)Umw(HPP|MVp52^s9-Cy;N1l+EGRc{E!^r&qp@edjc)-qkG9$YijFuT%I+VCftju}v?F&+(9r zt&61Z&1h4M|5M9`3P{F;tt7Ka30UU!sVZ%BhwtM0pKd$ z;%K*W17;|L-`DUqrFZz9!1d_5%hcZB|K|4)A>PG%T$@Tz@qTo`j`prPlKcVJ^S|PQ z#l@wUxV7^;=Du701@o`4{1cZFu(xM81GflsHbRi^9_t~X0epf2&D*a}@fmkphwkA% zL-Byxbb=eeB@35z!Q(b6!!W;yV5Y45kGN<7R%povbCLjyi!bqIWoZ=DJZm%;fx6w@ o+6Og>bv&lAG>w$_m588>3#zSO8_~EK0hyt^MfnN0cVo8wHw%q|m;e9( literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/DropDownDTO.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/DropDownDTO.class new file mode 100644 index 0000000000000000000000000000000000000000..f77278400c9eaf705dd4e859e14435a3915794cc GIT binary patch literal 1238 zcmaiyT~8BH5Qg7V`bAwR7FtB86a;O{$Eu(=C>KghnpA26AtA<#r9GAobT3gg?GBan-oOhm?bAJB%_5;8so+J=aSggBk)6-VV(Z2c4X_(sa zZU3XWmSSHrgeud4EneD~S z!d0|bkroo%+zlF@Dwc-JFoF4DLbf=(FA_=L4F{CKqQdmx*q)!;t%mlJSR!5DMHJrH zjb|w=;GPU`UZSFb63QI2b$Y5DBF_3IFf(+)CaKXbF6Y35p{JD6vd9PTl#{4u?d zX^zG6e_@hY@kxhF;hgwDx=b|=Sw^z_9Set565`` literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Error.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Error.class new file mode 100644 index 0000000000000000000000000000000000000000..5d68e8e309dd42cdc2e4ae6554c76803f06f601d GIT binary patch literal 1287 zcmaKseNR&{6vm$p_QEm{CNF}Z13|`kxxS;KB#N3qh7iFehWJO>%GP<;lHQI8pGp&j zL=!)NAIf-oHvz|VN!!!g({p}(&dGlM`t}3BJuJl$VHhpynr8&}m9XBPDtSU#X%D@Z z#%L2qCqr+QA8^m-s_bp-Rz=aq5o72Nze??G2_v~LkNB=H$TLzGxt*w_=Pq+Mp{$j%fPI#+Z_ zB+-G(DO^G?!==1b;&r{YE6jESB%Rkq?iV=05m@tMr>)3<;adKGkEXQAvasua!1}W@ z7ty-Fa5aS#y2(2@=RJ_U=3_EDSQ8Ns`sZ(3k zL_r3U%JEDoZMmfmAsH6KYV7fVRQXu*y(%w$2( zx{2XRMN;7vw<6Dv4p*sD!j2S%`m4fK$rlFWq;Ut0D9s~?BSCf-^M5jC^XjoNjx06k|l> zE-%v>p*5D9{fd#Z)Q%XGDoTl5`oV@*Gri+?@1Z`YvnZpDW4hj!Dbva{+LmdeJyWKY zX`GlQ{=ww5J!R?%nW$@;I&Fl-0j9oV@?HAo39>m7>=?Q90!?IRoPCR?W87(Fo<7Gs d)l?xu|8TCl_wj(%K1#Dl0UiZ-{2Q(N`8xmr literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/ErrorPojo.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/ErrorPojo.class new file mode 100644 index 0000000000000000000000000000000000000000..13dab1cb5b005714aa8258cd60440cf4d302e8d7 GIT binary patch literal 1307 zcmaJ>YflqF6g^Y=qA9QPDk@mOM_YtdQPEUMv`PZ0N<^C&;)kIf+Ns+avO6WhuhK*z z(ZnC%k22obHiZ;ylX=~oJ@?#uPx|NY&))zZ;7JT2hD=2_9Zzsq3FGXmsw0$<=E!;F zdD`374IM+6VYI;yx#MzGbKdSXM8(7qWta$}Qad}sliZcZe9sjG_Je0xc)rx?!{$o{ zw#6`1)XFzpnKE}Zhf^5Pd3@H0ull*<6_+T+~&OzyMN73}b|0 zq$HJi(`xPs?|oZJs-!F2Epw7b(mKJgsY{<>p>H}{I;EV?_C*zPk2i&(`WfOiVS-*#tFyWOWQ6v+=(y24#*?Z>eWnl32GEWcVwh)`?hU_aNw+Gz zI2IYki!S$lTS#U%XmRFQCV>oY+IHPyn9N>e&6O=8n?w$IYB)bQ5UR?sd>-0%K;fdM zPVzz=cWC6FEYpf*a(W0l75tyTet9p6Ib3H*?C6$P5gXE4Yq)F66y>zDSVoG@#CXSGGAbGL1vBBxvILt!#vG@fK~({TtN(Rx(|}ELrBmfThKj1F>)yF zqx4#(li6tg6l324=s4{b4uXXVG(opy8-z(r(aRD{6T%W~&}p#=OORjsf%F;6Fo^+D z#4=7YCIY6ZHoC)PGg(=T*4(IA+V^ zv`1IFx>;()+&N9ruBPZ^n#cehO~s(cz|1dXKBg8W8!*?IPr3&Bx<^wj>ue literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/ModuleCopyDTO.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/ModuleCopyDTO.class new file mode 100644 index 0000000000000000000000000000000000000000..8272bafcaf8dd1386329e95c6ab294cb7b16a9af GIT binary patch literal 2337 zcma)7ZBrXn6n<{9AzN5VpoL1I+FGo60V1}(lmOcD(nbj&AdWhnc1gBm+hiA)O=tR7 z{NfkKe&K`8*mOo`9Q~p*jz3AQ&)H4DgbXl4_MUU@xzBlf?&Z&afBFT$4SW_yL}9Gx zR>Sxf+M2ka%Q1F|!rZ*~zYMKeCFx!r6zO zTfM*QxuWJv3M#MA8yKs>d9n5S?)^|(F{_rs!15u`hVR+VPEMhJ$MTojz@o_%;YQYL z%&2PRohSC5y z<;;iy9cS2uy`x>wlKIpY;R=>tc1vrf$0qug$2=2F?`HVW)E0Cwc{HW~c3EH5%nD&z z9Ky-wQeSj4tv3u@!&L>nXgZ7HEykpQZuE$hHZT}U;|5;Aa5tiuH1N6{QEuy?8@LKF z*DqThH>KBOZPYjyY_?l_H+-}BxM1!!#-x|cy|Rp00={S99rO@)Z9QLDWLciISE~p& z+hKIy4e1ugEXUMN!rL{wQnEZ9A1GWZ{Ga{FR+i6pV+OYj+{P7#o3S0+pA*x9fkiCQ zWbW=-4v9a?$sOr^BTP=mU5;z~a?522pg$6vj}<054el7cLV(xO(ODg1XlhPwx;i#j0F`|gbZK4zrh6gKI%e99dW7~t1v$mejL8tHf<(9r3C$jB2iy7)aKo}AGr zF0uIb(x!Pb!t-6}k>}|9p(D~z=z*{{saqPT@G8AyW?wam0O@dtW_wcpYI493K;R>wqeRudXTkMQY682F&)_ejFGnDrp; zVu~D#V2&++o3!n zCY5&PXGn(FL1HncBZ)Q0Fcq|uZy9mgx%Mq>8qu#Oax>cOXd+jZ#yx0CsRy&vGb^&e zX6cE{GsGwAc$XfXo0JaW8o5N7$NK?uVwl8DN)cu?i0Pn7(weJ?yhH{XTcZ@4!sR8u zhk8WGMdt(4A^R`IpCD5|W9IXLxfl3Qvae%);7%QRnYzf!p`76|u)d*m5Lgmu|E)v>n1UfrcqEZ+F1I=5AC*%>hzCWK|9A6i*0wYuCIE6 z+H6k)EqrIBJ`m;syMM@4v|~bEw0&3d(bymsL;fzBQvzWeb^)VMmmo!~&EgGY8vmI6 E0LD5mtpET3 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/ProjectMini.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/ProjectMini.class new file mode 100644 index 0000000000000000000000000000000000000000..187ff07010892024ab4ca060b05e90a16a922b7a GIT binary patch literal 191 zcmYk0F%H5o3`M^SZJ`StH~|wZWMN}x0)f;6pwOBsRqLWCAaOMY4#1%hi5OtAzMuS` zU+>2gzzSK4h%hVrPFdEiuv2HL6pJ(Nt`4?uxO6)sCdH7DH~OYktEE=^Qy_%6W@jqG zbiUaBXyL4pdQF&keEGHh{Lioq=Lvx@@UH=p7sf~s#A%qGjKUt{ E4~080!vFvP literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_AuditEntity.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_AuditEntity.class new file mode 100644 index 0000000000000000000000000000000000000000..2ad35e1aff78832ec2c2d169116100f352178f40 GIT binary patch literal 2278 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Ext_Fields.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Ext_Fields.class new file mode 100644 index 0000000000000000000000000000000000000000..0bc2d0e072cfa1aff82e44c6a040e8b477b3e8c5 GIT binary patch literal 5172 zcma)9Yj+!072P9iq>(&M98)Jz5*nvKvK%teBP{og+)GutsZJY*WEKTf*rI9O* zLjsgn3oU&>fzXohD9@Tl0+crHg05BIOIeE_!6!b!U!a72?;Xi)!LvMSP;}?`1?!@9X>diTmOR_d*n`RJkcNBe04HqM zE?SOr6%Sr;fe~mAs&9?3)TPrK%(waz2PbVi&XozGj z&q^!R$VeiUNGp}d`9d+D&J?nIT4Zc$W+FX2H9`%;DJ3$VbCGUso=|c&ofu9f=Lkiu zOs2r(rbViwiQ(a?Q!G} zhP!%tYjZ4C@KF<;*vU#GRo1P{v_L*?Vz)q|L?%?Gh5Hc`dxYDhd!(Ff0UR;0uMCWp zvn_y6nz&m4OxL^^A2-p31L~29svHwPDey59_aekJmsFaAJ;~lV9+3&#TPkFyts?8k zV@WeUGE{t>J+Ya}=rpHY@fm5uvjOC6Bws6jyxDN+~^`uD2qr&=(iD8Tg>zs*? z;K3*skPRcl_{CvXXGBSxNa2)Vo;TT<$kec8;uFfcU?Q%poQb1&ko8^Ie9-*$G0z2W z$u2TrQC;2Y>_nx{A8eOE^*L-;aJ9>nq{@+OQ;f=Zn}n-Q=XOP?@+eBxLG>wBp0-)f z$}DpO{R3evS*0a$m_(YMHt~5JWIWR|NzordMZ2_`^E9+}S082FkE*r1dih3oWvS8b zszpV+s~&H71=XIycwWP%4Wmnn9a<3_7UwX*EcUkrWU1FD{;`hY#S2Y}}cL27K`99CaK-WeF zjvBbe<1x_Xr-9=i@<<)C5o2XpT&%}y;F5;NqDvn>u1#E1L zoVzCG{z}X}xz*g?u$p^C@~)fsx~Ofoj=3mW@OzQp8;oPNuv*O6V~%X4o3`Qsv1|2T zQKRxL&b}FwiQD|*lody8+stHo^odkjy@^sdz+>0KmvV${QAdcQFh>Cx{IIukY;wGZ zoHl-M<9NG`cI-e0%@37u7kTW!K2Pv{U>5;4;94L?fGxNd*h_#dxEA;@0k+^;U_Sx& z;#%My0&K#yKsOi5YYh&Pa6bbQlpcQf@-s+Vc>Vx{fcu zPs&dBYgsvoX601}^yRyx{0wI6%D2!f3UmKWj5aH;`lv5| zuaxJ-tyW(94}$U~ajU=Y4d}t^{eOdY4SLJ<{=Y(-80cHaoE*|PJ;2ZF0^{He2WQHI zvmBhga@B{@lN_ew!9#yXYb^LacC5iX6br7yDl6G>ofJDBis^zAdLJEYXp8BwP!(x0 z9wuoqZp6ZZWcZ|T%%~zc@d!yyJQ|A#Qq(6!V$mwna=ewK<+vGZ6(rLq(JGUIq6f9q zyg8m#si_?JTgb!Z8SliuQQ+GofN{Kq75Z8*gBy5?R*=XmDALlgiWg9#6~YxP!=n|( zHQ4mKd{_SoW4K5wg1@jyewJ1g|KyAD60KJJ3wv>ymWj`CZ6oLm8~??&Ff`L_`v5z` zSm3XreSqD{j5Idk*F&E55ETC#)YbzYVR)hs>Y@~TRkaG<^G>1Upoo^)In zE>Sl|d;c1Yn7)oLNQmVmp-=^4H7SUtBq0`(KPy~@oVXz&qXMzK)U4%rL_(}Ae^x|7 z`|20VliWx~=BK3v@8XN{DyDOzzeFp*JIky1GBePEAv}YxFljpGu!OJD3bA-5=oKaM z5)R{8S_amz3tyuZ5k;UGFmGW$T37@cZ#~*ACfy$d#OQwL5(=^+Bpj@ENJ=L{70L!{ zv(G1ntBD)j8n;h3ZliC^sE7EIBDIq?=G_70RL0FKcx`>*HRe`a_VVxIxziorcn2?v z`dY^~JHE4yE40)6>Ud4rwy>`%dr{awP_`rNA1QlT*sm-5%sPJB@e5_2UB??8zoxy8 z-)?mg%KPP@iT@GmEO_Jk`VM|qzqy+-qVjPIKt1kFdBxvO$v-mQx5(kW{_Xz*-OY}r literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_ExtensionEntity.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_ExtensionEntity.class new file mode 100644 index 0000000000000000000000000000000000000000..05a8895d7e85f9788330af6ba7ff48a1dd7c79e5 GIT binary patch literal 4595 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 CyA9m{ literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Forms_Component_Setup.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Forms_Component_Setup.class new file mode 100644 index 0000000000000000000000000000000000000000..20d815f4c22550dd16efe7c25d068d9a71fcd43b GIT binary patch literal 3279 zcma)-eODVr6vpocLPFRAr3DKu*dn!oYS$`NTiR+M0YmfFBm|+>?UGDjaWfltH$BDA zKk^aYjce1HRkoY2^v=D_TWjoM>eKdy$*L3nsk|C8difj zu4(g~d{!Z4TcJxEHg`RPdkw?tu{dbNKSd!GdBerb7PNVVW~)5_by&l6%>#>NIJZ5+ zLpG$JDI6QGjW=3X8C8toLV|2R^;8!tIspLyr3XOIQ-ZDJf0rhAxQ_5!QAP6mz@y)G7*%J6v!3wRS~?6}nRxT;ISH zz7+sIFFA;!!B6UTnTs=vx0%;GlIu1_C_LNYLS|p=!tRRF8rG0+2wIS&-?mMDde#ZS ztqZRtdC$TTTR6T|AHQwD5zd>Ar5zj1A6%Pj#;JF-ZS>bMTxD(M2;YEpE#BBuwl1YiiT)arBCR-LK6j(vr?~fz?^!p&{V;0!rcZuj)lX)VeiPqVc-AXGmKm; z5KJ60?`%};3MlzeQs}WtDH?+U6}qSxPUi*fWRZDCcB^7IFdy~}f+VsP0@GbhFZbI{ zI}HBymV;u=-`OR>c0xIIVZP03xHI(h}W9CP5d;w32?uMB;!`HM{3D*`_HxJU{6D zy(gYL`3scuUvBtlR&s58cOo`dE$N%(YO$uDy-&4VeW#+==@zylZe9w-i_-{t3G`x= z#DCZieHHyVXfB~0M}LCRBweN{{Ji4QRp?-+P$%?Z;5`IjnEt>l0x(K{;5q{EMt@)) z0l1+*@IC^let+N=0;qX^-~$9ux-hVWZGDK5JB-q_Oe_0zmp(!t`}&yfiJpc{Ux6C0 z0luH2r=eBQ##er)&wj;^7(KvOoScw;j;|UB=nMK1J%t|9BYZDT{*BgtM)3UP2hzz; z=qXfUvS?#yM^>)CrM0uAQ~u~fl<$$BVJ1+8%L}xikY8bL9G*j?(ASiaFs=WB;CZGe zQl>2Bpt{I(_bshQnKEEnAHWotCS;oSnKq?NTT!N*lqoM~+KMve!L&VqDe!B^bj@el zmNGqyG8LsvMLE;6DARK=RR=HyS0!Yc^O;IgrgD^NN6PeE&Qy*v?SW~308?;FL#7)( zQ&q}Ti!!~GGVREjYEdQwOa}v)f(IgGTJV_~Ql{M~6O%IS$(eSeOeUC)2QUS1Q^<7F zXWExCy@)b(q)ad6OfRBLKZ3~_z!W@-A=9GI^gZd4x8PNjsV8MRpr-6Ccok(j0n<+d en1UBMWLg4Kj9UJe`G0*T&~KxE2ueK7NB;nFmP2y@ literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Forms_Setup.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Forms_Setup.class new file mode 100644 index 0000000000000000000000000000000000000000..8d48615645526afba77877a3817b4ab8c736fda0 GIT binary patch literal 3007 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Main_Menu.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Main_Menu.class new file mode 100644 index 0000000000000000000000000000000000000000..94091181305b99f26e8829e566688a16561cdfa0 GIT binary patch literal 3257 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 An*aa+ literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Menu_Register.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Menu_Register.class new file mode 100644 index 0000000000000000000000000000000000000000..6125a20e14aad6115655d9466ab64d9f7d286e02 GIT binary patch literal 2897 zcmb7^ZBrXn6vxjEgwzloiVX#-*4EYruwAiKt+cfvS#U8~XcAIE>v~BpVKKSOWH(Ov zPQK6?JI?sR58#J#{NLS0l4avaX0p5Io~PeE=iK|(-+%l`M5}a=q6DLR4X2}Z1#e5? zX@|0@3F+D1saBCzS;(GM5iQ&GL^nmFjP4FMetG0r1*hHXNSD#HE4nss*G1R09l2{1 z8L=%!69q@Q9+zI7w|gQ93iV@*5_S_72BY~(59vFiZoBqDTjZs5JnkU|g3gwX`A__{ zcA}yJNj8LLG}jp2j!|q1DZ1PfO+OWkuDG6(Tc`hNk4&}G6QS&lqHflV+8(2YnE1g~ zVK*vyM_>nPkCPp4ORJ;G7Oc+ro?4sBmR9w;wrs&;vYajI!r$yrDK5 zdS}lK^M#tRZHD%JY3zn02O=7UZIjWskR0W+4%@ti!tP^5H}mTy-P$PSH?cV(n^qI$ zK=J@l6Ax5GWyC*31{f_M)v z<9Da3oZvlHtyK&YWT_MGAtN@GE|;}tQ#-{Ez`9wqiuoFEisxZ*;1Ij&VlIGR7Dug_?xVA%qQeHSp(!Twvs=uw8=p?6{6Mhr%C`-*Y8EW9J9xx>2{9BdVN$NgAm9l4%cjO~dE{v<;; z>3w+k!OuMAa8jJ~HpGUl<|7-u_#UWRC;k%9{i_ngFz?rY@M`i$3%cn_c-SlYrctfw z6-F6D;&v*ux$6oyMc*@8xx`@$4o!-FV6=P*H}u>;ZFCEz7{R@J1+`1k7^D=W1muL8 z4agbD3$U5MdlK@LplP~FGx&VlrE9Q5|3f=vA1baxfj(YT%tL`bT~yqF0*B?I;yoxZ z=%GTH-NOI2pbzK{-F4~1vz+&^jHUu~3dT6|crHWI@Md@?mwu;@e#J+E9^k2VOY{lU zgkAau^f9eKVpx5M=b-a%wE8oY{mzeKoj;||V5OX&;hn&HZ0W`uT0Kvl_E#UH8Z~$$h7>1)}l;#Fs%<^3Yriy-SnBh zq~|eA`DmT=Sf&CMK|aWYI_0BG2AH;nFa<*zGNpYcoi<{aHluYa$1)kn6lFr4Hls{0 zz*HH+6dZ_+f6o4ni8jE3$|`pZ^ENS|k?$ literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Sub_Menu.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Sub_Menu.class new file mode 100644 index 0000000000000000000000000000000000000000..7f24d1eccc50a439db7833970d76d136353804de GIT binary patch literal 2721 zcma)7ZByGu5Z*JkA;bjAYfKZMG--@Uq7oo9FLh#!p(3_O!8lVsR3q#Il-MUK$(`^& z`a{~8dOFh&{Q><^ojxZCM>cW>&*=8EK{&w%qEWKbgT20|F8gsa98jUKq9n%tr>J}rm z%V?xv3CA^rTQwRjo&W&(V~k>EozX<;z45D|Gz@X7sKVu^+L(~HmA!Ghh1D4O^%pk)FTek*F^ese{(z(n|z_7?rC~S)!r~l*+Op`CI-Mj2}}KJSe9n8 z*Z_4mBE+&GE-KcZkl9F_aJP0AZMQ8|LDu4>{1GxXWSvW>Mq|J$In715-?dE9$zrOU zS2aH?GLdT@>=Of3wm&u-%6p^s!Lfv5boij`V!es&eSX4i$pxTHzBGmD<`@lRmZ~UC z!K(9N8ldGAJ)jJu(UK{+)@mMeyJCP|jK)h=4a_ybU#x@8xO--TZ}&cvyURYorN3lC zRla0$Xe%iEwRWyktflG=V)P_M!*o;5)>1S@({lDSMYsLgcPX0nXU|h~hwh?B%iKM) z>TeAjbVXJXU*eRzDmrm0vlIe%83FW;ub++zQ08|G4rC%ijGyfC)!{r|h+fO7u-Cxw zic`NMx=#CBGvTYd`eG)0RhMQIXYj;@y5j-RUMJ;X4!m}s&19~1RE9KsV72TT-!>)V z#zL>`WBCL|zb{4aNd~>rUTwNxJ&&i*-Q3so%V&VT0s~~bB~khWMn;2J#b^j0sDgD0 z>si>0K;FW7l+ze}LF1TCI5Y`65Gk;e_JLvs3h?TxA`Jy-c2)5u6kuJTn8%fK*qP_F z0F;YI^flds4tL(CZ-6C*1^N@?5>~5_3^I}Zi?V-U5~GJ0hariw6sKi+gqb`9BYI2< zq;&8tETn_qAd`>_(m{5)O)J@lZCcGfYSVf)9dFY{Hl1kGvroR~yi~2g_Y=AS0Jrd0 zIYH}`rl&Md8{U06-)C?iya!2@GnqDtZo$iwEW(19n7B8SnMlwJ%%>7K1cC21zFB;C z@G*Kx-(!^E6-Wk|$o@$yzhmM@FUv{vJTmeey$T}FK}sA+FX~V6`MJvh#VgN)k2cwf zB^ksbF($xQ2u80dkFgiiYA>eENKBhlh{Ckmi)kB}cKTrQ$rxagIb*aHiD|tT({3cD zVl<}pUQ8M=?e)Rr_d$S3){xP5B&LmCO#6|TcA_zD^kS+4)4M*H{1yx_Nlr2Pfz*iF yJ?q7E6p3k<-bB?d)Gt1teg-DJ4<^6+15A?RF)Ddu*?WaXvDUEO14=vtZ~q6bMkNsd literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Who_AccId_Column.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Who_AccId_Column.class new file mode 100644 index 0000000000000000000000000000000000000000..fb0858b16a8facd77147210740234d1329d5712f GIT binary patch literal 2262 zcma)-ZFAE`5XbkN*ukkOu0tuLPyz&+2g*Sy4<$6gkqsDZl1UtQ+P?5yq)VbymOR#p zHvLrXOgo+Fi++H9s80WPlAW=TJ9x%-I^BPFf46&U|MTx(e-qJH^m>MJj8^QR#|Kh) zzEu3ccewPGt4{ci-~IL|=vHmJ;dHIQi+cVHO*1MVi?@P%!aw9&`^VB&GgM%7-n?}K zzAFc=@Z4X-z9%6L&9Wm0p&R&njT$5NiqTms@Ixhh)e&AK^Ptfm#;9n6L`kQrVB0i4 zBjtL$hL>xMF6~5s>&cEAy6|81{Xhu?&mp7BM*cJJ>sX+N<77ZM?Ta2<&RRS5YP(+RR@;ou_>t%7!%vwbQ8DT} zLdDs**9-=SJnRo#|L|Y{+n<8Lk6dqaF**vj;uIuDj_u=&%iqUYeQMIhCy*KTyE^pzf z>$_^5(bUp%2Pv`wN6yj|EtP1IZZbO8bba|I>g~%xJI+d_8Q8+>2;3W_EqOVuj$9P= zcJuvjC)i7eQYGorH>k3-oW4UvVsy7eB{~arIHsOkN{jUY$}Opm0%u$3dMVtkILe-` zs;-K5_^?FtLx-b{F&dq}5zT3~weebsuFz*=G+I5RITdRfeZVBb=83j`R-%QW^=Kp3 zp>yL3XUZL<3tscXhK~%xL*Lx(698X0$;|^!w7;jnHtmC&CcNBxrm<2 z(Ja0wFxDSpy$IDgJeMVXL=~FD@_a}i(}nNp6S}B}OU4QnOf0UZEppo8)7av&5u;*> zxQuxY0in1WyUXc{B)cD&UHm+T;LYh0yt{FOvv)A$~J2{diIjyZ?9u(J9G@zc;cp_(gCca4V& zu__6#(c*O9hboWDhl%0;C5!1nn(2Nf)1z#r2Wh59V0t`(DK2QjG;f$5)7Ke!dXi>Z z%Vc^=-{9QuN;7SNX?p@w+$agtbui`Vxfx%Wo~~g166*%4S^j~TO|Sj~g!r&9 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Who_Columns.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Who_Columns.class new file mode 100644 index 0000000000000000000000000000000000000000..abdfd11487003444e73621a3e4fd36c4f5dd544b GIT binary patch literal 2009 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/SuccessPojo.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/SuccessPojo.class new file mode 100644 index 0000000000000000000000000000000000000000..9e775725b231337dc56d5d8028e3336712855321 GIT binary patch literal 1327 zcmah}>rN9v7(G*ZqbUgGRur^c)V2t#qN1siXblOZDzVzc5PuBq&`#aXlHDm0o=Ovi zL=zvthcbS%yMd;lG?|^5FK5no=FCZd|M~F?zymxb44n&dhiK6{R!T1sG!VXD9U zqATr&aFbYIm?+ykc+uQWXn5{fE`=O!8tZNmB7dH@P&0^p8U+-|e7?UgRD)r;7aAm@ zbY4~1zLdlrioi$1v|^a7K7#NL|0Xae@1=1aH^`Q%({<}&L;6wc3F?ZuJ-xx(E@ikQ zYSNSR-p`eCG}jbFdW1FK^*!#7yBZdgBB7r2W2Px_iq-an;XdR;( z<(0l8v|FW_nQHL_qhEdK7<~;K1d9@AoL1=ogb7U2&Jauy!VqlGY_KUqP+a>0~2 zi2*XiGDb4SeWu9(9Wt3tMiwKvB!bb#&|kw0eGR=ubD-}VvR|kWAub^97qb^?n?2RG z9%_sC=?ZQ)Lsrc8Xo{a|ieIFOA`ogS`yK<+Kau;8nLoi|k;EP2c4p}q%g4CeuXDaf d=XBU5g8Tk$R_PxR7$xe5G#>3B;$h9hQ@TC^20MN1Q6bE&Pim0Cfh9cF@b0+SiXr_E&(mfqZryBnDP zSM{ZJbjIh7f0X0dODfpI_7Gl$ntddEpeAG?% zBb9pXUq)?Zoi=F!d4cIec_gDmroCvVbEsl3F!flc+CLG1NZ`=I&l){rMK5q*tVdK+!5UU>`~BiOZlNq&mTsoT~p~Ad+taLfrm|FdyyMho%Xs`_SLbmFQQ}B zi8`8|IlZ{3rG6PI=eOlxKrFLQ^_4#``vMOx%#m#*Mef<=UICv8+&*iQF^^utA}$rN z#K*YXSZS<;d9{ohmT4q+#z@zy%~Nmh`f$9}TDycV&?w-Jz|3iMEA@&dDI>xP?=kbk zPFG;Ax>Y+vGJ>s!lwX!{5BF&Urref?#s>8NU_-`5d|k$af6+QMHY`3Wo- zok<1e$2c!I&dVM*PHmWe-=w(7QV9M7COG2%fo*}ah&}5Blgn>V{51=g*oH7LgUf8o zCjj>EaVBsDS4lF>@fs;-_{}=Jj}IKKVJ^mp_=up{pCQ(8oxvMh_!#pJpPU3282pq$ zg$hLl2?MfCu&@4s#h>1=qUy7^UgLH>{~PMBakrk!`maX)!}=>?ClFNLpiVGJk)tcj zGKYCAFwqj*pnUFxcci??jH{F! literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/WireFrameCopyDTO.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/WireFrameCopyDTO.class new file mode 100644 index 0000000000000000000000000000000000000000..1cb2fe95415ebda49464eb9677af287ebb29f447 GIT binary patch literal 2633 zcma)7ZBrXn6n<{9A%QLsXrUn3LR&R2&?u$Y5>jm`U@UJ1N^O0Cg=}GIvWv^6GyN-m z@tgh9adgJg8J%(Ti_Z8H{4HvI&gO*x8ORLmJ?GrB&pqe4&)NL--_O4S7{z)R0fqNA zokGerjl6AosV8Fcx1`&?cRn*@7V2b)12&&^~L~=6tcRVY(~EM&5^UHjVtM;acLCgPON(?J2}( z8|;%OcWjy7^pUPu1pDe+Dw3UonYEu;dlnD5ZQG7#c$Q=HjLzA-Q`m5xre;jrbPdnU zrJJG9t0ROal2C!I@FJW2I>NGfwz646lI&m95s`hJ`zr^Gor}efb0+zhbu^=eJ?tIt zL5pRD$>^NvZ9BO|LvGhIT~;2gWLHXKL6uNVK`evOnlid#$E%Pdn#`|@MxMZj5=xRu z#~-(_(5pI97*dFA8upZAOYj37=g=kAH63r2tm``7E?FPy7{H)t;HHkGysVtV;whh? z5OTb2)1^A)_OH}Pt=-?KjkGR%#^%#GW4A1r$hNV!T@l+I9Ur5Mc#BKfxhXd0ntR1O zW#3W@5%HXoY{U3O;rvlC-zi%8oasjJslq^&&hlKv4$n`f1v8ixi6_LG*Rg;_o@?yx znl{I#pLckS^YQ`d2$p!4Lj#AV&qrJloCgZS^)BoLyoVG*8LwJ+HkXOu5w$QhP$ia; z&v_kjsrgGC(-^A|>F|Ax!i!R>@L?Z5b~^lpM&U((RrrVxA4lRu za+0rbsZn^*brrtZhv!GF4*cKbHAD_~l8NsS(q1Nihx!Jg;LGH1P;*0xeGL09jrWK6 z|E=uN8KE;$aYpHkR-CbUdSm0-@Six-tNnqF7tn`$wSC<1fi#g^kQE&sg3(eH)%)GS zIMQsP3lA{C2@BvJE+WHN5ckoGTeLKMM3f#hha>->EexgW`oHK7Bgnr{T(4Lo zRcmxT!=15tNg;2MXz~TZ!~3|+jQV^fO2B2lf@EvbS5yc$aFp{fb>82{vZz7q)sj6b_Gcw~ Yj7#TZKKAj&NneOe^(*=nj|pJye|D0x@Bjb+ literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/projectCopyDTO.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/projectCopyDTO.class new file mode 100644 index 0000000000000000000000000000000000000000..d197d365edb8728a8f6ca0ad0e6928cd12def69c GIT binary patch literal 2528 zcma)6+fo}x5IrO9N&=RfxLJlI5Zf_A$TA7JSb!bO#m3WRIRvTQHsy-4l5&QmMn%{conW;a&C&=fkJn$OKt-n4g9E8DWD(DuZ2 z_8ygE7j_iX0-c_7>{>SWEQRRe$1#%eGw8vvvrs%{V(&6PU9B9U+DG z#hh&|7x%U;cf%xv>~k_^e$#YwGA}zdFPkIg^~DRZ!h4Ldg2A zXy%DiwWrkGiTGAC^SWl>16)yvWK4TbqQyCEpcyS}zHSj*Ji0_7h7e|B6964~ULNQME~`f6o;x0uWCSZ)M&72d7BLBrKI zWvUr>Fl%5AgUnzuXXm`z;<{(xKB)PSxxa7OyifydeO)`t=S)QK1tl;#Sk0i1y(B=( z3du%dI0JB%GV=jX%ASf~jm?Zpej5gEOKW*EH-*fvrG&2(n%AA8o3Z9|a<#guOTQsB zVTi&A^5F?0AXk!BKyHISQurKO7(rFhZ*Ugktd(OM|0&vvqdxKr+7D?2(8;fa(1|F& zM%nH{H)j+ydd~ss`-y?)15wH60A0Qq&;Z_H@wKI;2_9e~p^^TVX#crkN|Jz7TdGYg zA&?TISErEC!O43VJQF_g5`7nim%dcs!#@1b`S6!73NP)hz&H8ud^zf~S3*sgMHUky zKSI|I6MsT|4?TF8_ycNbbmRzE{V9#>qx}CMYn;TFIg6*YosX|K_F03#XGj*vJG zPo{N-B-5doE-|6kh#sIdrpH3ZL7M0+Sf{i5rGzTIC{mm^SxpZfV~pAh@H>kS=?n6i zxs8u#Y1p9r$7$)m}3AB F{|9uCvGD)^ literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity1/ExtensionModel.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity1/ExtensionModel.class new file mode 100644 index 0000000000000000000000000000000000000000..42b076a816479ec4bfdb8c841ef40f27d24dcde6 GIT binary patch literal 11033 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 rtKT>%Mjqp3ipba1li>dch0%Ld+)jD+;h&$ zUH9I02N9jAHndQKqEk}2Y@*;KGoDjQT;`<{j#qL^)2Anf3;8j}D-WbnPO;cRjfy&t zB#$N&nWQ(B*gJW|NtF~emx~2fRJ3`t7N=Zv3dI0vAfG?Pj03rh)33-nQ05u3&SAIc zPG+0|&&!pPB{%0474?i_imMWN9_|)Pj+b&0BWWJAb^*ay(wjb*+v@>z-2(F6IoBJ^ zWy)EP6&k%{)=|{L>z$awg4?pZxsj5S9Z4(NShxCGE5HOpPKgmT228j-V#4JiE!jb~ zT8S~^GPkkIc&XreQ>@*T-IaD>pzQv#Q<#SSkdtws-;#B%%I69q#2Of^vj$=`Cjham zZy-gnl*}~AD6NJ}5AbMzP`Tu05<|Qao;6m^rLyBgrTTHvfBwL$j#}3AwD;2F; zz-EEHWVbNSkW)LhV?F=| zglm+$W|iGkpxRkg9bukPj1|k17|gTP?s$~_gLm9I?oN5UmI80>Y-2?+2*leLJ=Hqj z?mw4t7ILtIg``(>IUaDH>@;%hQ`jG<)+wiS$oKxfEq!%!-IxEb_WggvJGwvw#78r^ z>}2kW#IWNz1wKo7f8$^-?X;4j2Wx7gWs(DsX&Ji%##iHF1rMIRG5pAY z_D)Tmw4A*a+6WUccWH`)3A2t#%z*oFO00Z0LEyU|q zA;AUJ1DblMS5Z5r^CJ!XLz-3s0(`TP$!YK(p~(VY2YiXF0DU$Jq5UXLt7x@BIpl{V z_!FAeR8b6{Q6QMqv=##ZKT-`=2pmo8Faid^sc__ieYvLfSbhhys|SWih3pDV8!-fy z9G5r+*VA+|xN^in&_Z&hrcIEn1lB?k45gB$Q=rsSrxZjkR34*gGgM%@@gQdFE#yaS zfAvuAN33G1$7$*#+jtQBu$u<+37WRSCNR~oiBhniq$vS*YjHMS?JW_*weK+BI%7`h z@?3gfvcR`oi8B)$k+G^~hm&op$6F{&fYgRz)$r)vGCw+?6oZmU9$2!81%GTcg$PhJ zi-?x*?OnB?;_QHI2TqVq@K$wg_PF3p9J&fH>(5nysvnynf%lr%z-P@ueNSco#LWJM zVloL9@5RqltkVR%pd-8!AG-mf?+ zaX+(b-|0B%Z+AVnbgoh->iuHzv{2`c3%SpHU-=(!#9^Z2&icq=W5PA0n*0yvl`(!k zS#0L{I>F)h*NmAvb2Vht-Tyy1zpAXU)_j}KwcmV={{kmCx#$I5&7$Wn(LdrgT0+-r zx{hv8v}8-);TC#}qAsadWWIqyAvuj3q>XN*>-kzP<;+%E=F< zqVBq~YKv)+cC^t=^iE88Z5wB$TQxn9P6zL}rW5pTzBH2gyyI~)Ij!~%H;q>R{7TB7 zus=q(@kP3I0}`Go+hnHq0`+}!!2GjV91JUazovfL9-}+?Qe#+?DHv1HhcrEm&Wq7U z*cvQBjuQUIG!26P2~M)im*PzXpVV|d1fMogCVPqGvzkUA`Mi;sR3?%yY8r*)%LYvH znh3tCX)o=I(bxIT=UM!8CZca@8poJ#izwxHOCtKNro#|@kMq>l4MxO?PGmpObP+u= zMn95aWxq}n(N8p8f?+?CVMbIP_6tpq#;{+BENHD{+;23cFz$D|1X^fo$=^~Q7MLdrScMK>C+3zcn%s)ZZVU0#X5N^mb^Nod!9B9L~6WnJUD z1}BCO?3);9?T?*MIO_1G?^*$O3qj`1=lT+zjEYrMLyUI zoauhr$WgI`Kc@6j0~#}aYvH#p=EeBg%D;%4_9AIk;0|eVg$`EWrie#0pbwHKcRupu zR!5%P+sKm}7kP4{B2R8iNO{~B@!F<63SiqgYe8CnLaNW*-PZij$VlJ5NG80<=3C5MS&eKx5H>I1z*Z?T-e;X(I&aU^F03 zG9f@0Mg!uE6asW{G$77jAwZW#1L9;C0+fsf#F;S!C>;%m6KM$0R5Tz?xgkJDq5*M= z4gtzW1LAZZ0+f#i#Q8o1s2B~1OM(!fqtSr4fZ)VvZvMyK=iPlQ8X#95AuGE&8W0yM zAwbte19~z&g||32EuF*Q4ah_GsTDfw7N%R`!w*G;M~M``#|8db;qb#z;Zb=7 z@LdA`>~Q$qQQ=Y01@J2b{yE|BV^QHzCkF7{0{>ikUf9v@j|z|SGl1_A_~(bO{$Nyi zRJ8&8N`ZetIQ)fC;ZZCH@Rq>8kX{sKoQtEvqXrM)R|))!!&iT4RCtv30sI<)e@Xc2 zlTqQ(F$C~y1^%Vst4~LTM3UAs;AAYmI zznWe{jea@t+Icy5v^M7+!!%23dcnnVE}BzCuVZb~CpL4tx^?zc`efqQhr8_6QTJs! zUVmTP1pW=-@Yh6zH_fvTpAh)#=#7Ed-Za;2>P|M(O5XmAeS+R>-%dAPbb{Vmp<`0H z*jp>K!#=G-1Gd#zp&{F9s?e})HCJf2ZM9Tr%(h|`+HYH}6*_2JZ56uEw%RLnv2E!J zU20oPE0naYWfe->R!4=VY^$?EM{H|(g|fC4uTb8$x++w(trZnIYFpiy+Ulv$)wb1J zA=$S%$7Q@w;%^v@w4XZoiQfJmv-F^bn(=EW-i~~HK@B#;Mp!OmXXHCeqwtXLn}kAY zZWanz6kl^@@Q-5oo->1g4a--Z8T>PtzwJPZ8^2vBT+Ui3+@ni{!j-p7DBMmRLg6Cm z6bdoFTquNRTqs0Rmr!u}6+*!;yM=<~n1h+k|WZav$+;9Wonm{Zg;Nbgk(5e^RzyUV5(A~*~#iy3eIo>nt zuIAV_`p34h=95fk@JWWh63)j~`wh0*d^_EAQT!bz=ob4pz3Vtt;_o?5w=;bQ=nokB zgZzkp*w7yZ{c%Iz1^QEl{tW2P8Tt#LzhvmI0OxCl{s#EpGW2&q-)-pcL+6Kv{xSGJ zHT2KH|D~aS4gPNpeGmA5F!Z0m|BIpj2Kpa{zLy_eisVH#$V;PnX_l9md1+&)E~U-O zGI{AVFL8NU!7s;E&)k0Hq*+s|&AzD{6hgg0S>op_X^C3JpTtlBv=`MHwU$2|uS==* F{|5aE%D*=2XTB<;pRxh(5-25mca%aeEI^C&cd#1r$GnXQ`k zR`&kJ6Iu46hzOkYy_S<*ldfe}t#8bYs$_88U#?5HZaMbD!c75jN1$iXvFn~`d+TPk zA$5{ce?p+E#>53r)(V^axY$lrbnLCXK%`N3Nlzf=IcuJ4*;`CKneGS-ybK*)ZLpr2 zEZEPix*7WU=bhHk_x~Wob*-^yDT#(H5Oe8O4CWsdnZ7@J7R`Zb~2v*1Ax<6wYO48WAVoc6U`kPs zllnuyKQYX((P>3AYoHGafxe<;%X^L5hIAhUvym)1WwW|&a$eY-rc?7O7Ta^F_`ioU zA19T|1`PBl>#BiX^ia?GK|N1&>g3CrUgxNlq*rk^S4`KeNsrUYYWQJL4ONz3H_R%X z2m04i`LPn=69b=Oo`YF7?Iji6g)nXym{U&SsEKRORP###-SH~Yr8=tYiT3o6k^km^ ztJ@E1?EoVPXf1ozJhS|?WNtTwj8)8fMa{E7crsm3Z0;Gjiz1V*tQJa3WL02guBAVji ziWu!U&w~)Uc(I?p&2I9kq~<))-_KQqt0bQ%c-{9gfO9|N#BuhRL|ML3aeC%Q%pL~n=>XFAfw(>1 z0(9lwfIh}GmU+1J9Kl0m6v<4z!0ZpSI&16oDGde@O-f2SC9FVBRU)`ZaFKsI{FQfw zSN+pv!{}|2F zff?TyW|6{Z>f|^^m}^Y0+Nvu>6zk5e2CRdwwg!!%RVySn7d&P~rx4-d_s^r>Io zTp~ZG&HLhxB=QwX8%s>>AUd;$(wEAg&S~mJN^8D}DZ%+_sdwU&HjsfVcfL4rl(8Vz38^VKQ zG%YcIn7R5gFY(adE}7{UI5N};evvRF72kI<@41t?nLOZH+7gU5nUIDS1i1-s0uClAB`vn~)k$(81M^5HcMy

    tU}5jg;Ynd(_ENQC^_!UnX*dR!od-R zg2Dz9lKD)wFad^bGgh`(n9Sr&tl|jMGma>f-+|3pPzLg2vstVg%->x$OUD!n<#(Dn zlU3pT{_H|_I>&IKJk7KVV3QjtTiM+3cy__U@{y_R!9vC=mteWBMm;*-%o8J<`3cO2 z%9$MKyZfsiP&#E~-~okh+E<1L^JcnmL~d$Zp-{9k{FIoL9M2W=)5XKXyUl`G!h_9% z)4!uQYeorkRa!wkc#4@!VT{*d;VmlNN-GtLA2cm~G{@&{{R4Ygze=U|vOePIXIc6_ zmEKRcDU@)eh?ERWSN}lO&h5}dsf`9y>ZTr^JgCxYp4`oo>jK3Vx2rVF7M)cVPSjX` zhe~&{KFWF-LKd%6=>sedvzX(_!VM~YkcHv_L~vPZs5Ig-$VjtzlS-Re9AgGM>@44^ z(l**III+(0aWWO7Tq|ns}mr27qrz^DFHgBNnUNXsvgF-z^r+5lgPH<`~ zZreHIs8q{>i`hzhBvp0|sAjH%XaTom!;#h#|nutMTutXIP0*FGjuYsBaR(KEprsHpO)R z73w%g>X7bVq<&|1$_T(DWd!vA+XSyr@*KtWfF7(e8ZtsK8ZyFqh>gOwQAiJ08LcrQ zFj`|o^#~h9ZKH@Dtuk6`#9*}6Q1uuaskRYNmC<@54x{x(yB=qwcH1bfw^tc$G!ih{ zXlQzZjWpXRp=(t}qecgeMvbK2!A42js6$Uy8Er8-VYJ2Q(mUCx%QouNyBs6`d4#2n zcGy88yb^Z;zav9LW3&q+1dDdlhd884iPDhyXsfcD_CVG~yOeG8VIV)vD19^z6rikf z3rzq8>2bP7lRzOlL;s+=fWmZv{z`j+BJ?U&x*I4;f2IoU1B%gK=p~v0Qt9vXB;5lP zr>pb?-3!#Ntf0fRA1I-$B9lG>q+$JCbRSR$_OzAm2TCdjkn9ftbt*Z!i9QO{MIXbX z6lrBB{4Z(`krIzzrJfMA;V-OQrR5Sv{=1Mqjzt3s{HMV~_hyLe=i7P+@YdEk;79P+az` zgix($TncAU5^$dF`8Fi>G|j--0i@zAkdLCuGNfVz z2a&{z;`bwQ0j?pxswF-abyLVQ^6YAawrO~Ysb^g;wfRa@K|naV-v-1MC5TbHM8lsDcSMFCWi zt7$@Xv^64J>NFub-Wn0EftnDVXpIP0M@@(xX^jZCO-+bSwnl{esU}3HS|h@R7W$q% zaDJ}#t%nTv(%{k72p_{?rS7~+24s9@4yJCc(EKYkDXxiHk#Faq`*!9x0H1m7cYi>< zoxgxHOe1<9+`;sN6)Lq#AHwUzr4I@EFE-!3)ha!I3%K+VLI0)ZyFbz@J%3`j^ie_o z<>vH9TczhO7neRJ=+88#Ki(=me-OF!d|#x{SDMqGXqBG7vt0VPpntMC{Ufc?^XHpO z-!ACSHm5(?Dm{M{y7UP_|JCO7r&^`wk4=|e6ZBuBr*QC*ZQ$#5ZD1V5<(Ai@yiE1S z&h@HSe#?FX*77YF#Fbu`w{VA8_-Xp4yYMr03%`qnaB!rt)J1w$w2sse3Ov>0uaK3} zgB3cG(nA$Gn$p7+I-b%a6*`g9qZN82rN=6CGNr2(I+fDn6{_2Jhv+)Tu{$i_cAYW1 z>#&R)1b3}5z7@qb8FAV1H~tvkio${sCo_M)kMXT2Y#DKiL2LmEoh+DK&631!*mT3HB8Y!tlQGNetDC$yX#EV*IMaYZzA~ zUd#BR#OoPfl6WKI%My<={*}aA7U|c?-vBSt?`mI2omCHY79rrTZiTMke;>X5A3d@D AVgLXD literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity1/MenuDet.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity1/MenuDet.class new file mode 100644 index 0000000000000000000000000000000000000000..027233ca708b01ce04e59b624a98232a17db3807 GIT binary patch literal 4847 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 Ll#@sNcHra>9x7|1 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity1/Query.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity1/Query.class new file mode 100644 index 0000000000000000000000000000000000000000..332f1919b6c981b8e6c54e94bf067566e27ad140 GIT binary patch literal 2941 zcma)7ZBr9h6n<{lO_sPQMp1)W->?M&q*!e+ytFE4qksyC^`*rnxsuhei<^y=AK@S9 z52#=K(9X0t)6R6-FLtKCsjYqP?j|fR6&Toi?zzuBFV8vm@Ylb;{087WmQzRw951=c zc~4qZNBa54PB||f-}YAr^SA5LTTMX|I2VVETeZrfYkB3t{6v7vmjjJgUbtIv7fNom zT3>bq+H2CYt?In=YPRd#DUJ(>>jG_8T&Lz+jz4cz>r!VR>PHA9>@qJ+KCzx#`KskC zgTQ>U9{Id9kO#j3pIIIeH`G+7fk6u@8PSCo^QFP)Oi7t6eKdYgl5(vhC! z%W~kEAfx81{nF}t@$@vex*`?6I6g5wSDd>i(E3b~<5ekw`>Oue# z(3hlNWOAAAo)|Pr?`V`>(Rsd2f|<#xyS(T=%{PN*9NHDPEL$OP)I=J41olnZj-0M9 zFG_FDB1bAFw?ytOR)G6RsreO~q@9?Imvc+S>A+;bLG{A~4{nG%N>TYgV$)g z^7;n+&BZ6O@D2)sFEQL=Q(0cQQmre9zKp`)h zIEhnA8aB~|Q|x7TW91`n%-QuT(i2E2w!2hQ8-XSe_Xf&X^Xv=HVww;VYo7=b)3nX{ zR_W=KwGtK9sPF}P-byh;{<+@!hOV7X@A3{*AZo531#%;`-xQiS;jo6Ouk15qX6Zi3eDr;p$ zI%K0iUeiX6V(qcP$FPB~S?<1*%}@hB3(DxDO|}~S@g7@?fvskyqXrm|=uvS#HgQYU zl?2YG(E?kgvLuk6b?aV9UbWS;N(b2vC_)4}14kQ&PdE{Waf+SN!nvlQ6FQRIrMOGL z;2)nX_a^uIxohLPm-~GZ?SXJ41W{I~Y2=k!tw7@ml}m5#XLSBZX=`qZ z5|wS3o039ad#Ke}DY7Zhi`-7;Pw&>es*6BmJ`I##5i_9yuW%X<_1}YR%1QiNKHl;vD1WIL%21t9&fLgZn-@`D_W{qBA z1f$Hd11~Vfo=k9*+W4Hh7M7}nFDPla#>sVwl8z~AE>lXP%7(i_DFqKlF;2i-%~ZziQP6_r%f z8Dl}|ID2_@Q(ub#>XI~ir+s)t8x0C{tbMq`@)+&8S4j1*;mb!#KUC1vK~{@S3{|x7 zs8G;@Bi1XpWMuW==-Bop7z-Un(Y9a)*Kvc<>YR3yl+-x7L84U&&fpxTDQV2;Fm6)P z1CqZ*@*Nc#Nfv^{a(PGi`aYo)9nc$q21eVcieSkYY#q5-OEAOaNZ!gL9?-j*a)ZC( z_PxyP8{AP`uHmc9!!>-P_~VkXLb;&i5k5l2GJ{cW7C&)YYsZ2zh^&f5f@ P1P$~wnDuHdSAqWkC|wqI literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity1/menudet_who.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity1/menudet_who.class new file mode 100644 index 0000000000000000000000000000000000000000..921103a46a0c0e8719704cdb38ea92b6602780c3 GIT binary patch literal 2850 zcma)8ZF3V<6n?hZP13l95@;c%LV;GBzObNxkQB7E1&RsOzA2!>Ho0xKY<6RI7sQ|9 z50Ec>&>1Z=I^*aUobfmKGyJIHb9c8TEdg4Z&ADgKJ?A;kc`1MX_w%m+&R{)-4h1JF zZrx}K({_Y!tU6UgIKJgSI&IX26I6wN_hHRVK~>PbZay##+jQ29n=9+0;-`>Qa3IuL zuCXARmT6nxm@BrRu@@efMboofXK8j?fpT3z*OcpczUlbOrX2{4FyxP-ptC{@)aa`Z@>Dg1zADVw{G-NE#7fwYOi=y6eo2JdH z+5;I%!N6g=Fx4C9`ji%+Stu}f0q1(J~$k&Fsm5MPHQ4psb-H#Z_EX_@C z1v3~%Wljv;Bz4(DGc`fyD2tn;7^)!CBm)>qv7##P~nrmUAF zW6G_HPOy`7=;%_gw`4iuMo?c7&BZAHY{{*d_Oi(iAwjWH^=lT(H&oh112T+6za%M@ zl*n)+I{IWd-P@Md{^6Zj<(Ju0W#QM{>YORr_t`1Yy)B0dlH#ktw5jij9kg_MF@HP5 zi0|omAE#LAis{TqYpFb|<82(tAb}5b7&s+$7jz8c2wUDI%@LedZ){4}uZgCDJ(7dL zmfqhRzG&4%CSfy0%@CWkXu1}BvvR*|HezPeHPfrfswhYd=Vv9h86B4~#lUm(>~SKS zWyVe61vWb&(;6=`*y1_uy9>VTS`PYVyM&oU+F}Yf6dZi97$WuMz_P2NnFi;mw`GkC zZzXy$gEHoIEP#`foUk0rzqEt-I6{6|nl9`36ra)5Y&3*ZRWRPJNG(in15!-mHtRh$ zu$5UD|8wc|iygi;!@kDXUDB7As7xInqZE=%lnGR2LM!BR!3~-fam5NZVG98#B~uCp zL+9H!7OU3~)rEjttYVv<$BsYI#%v~B&ZThAv5RRn{pxkF-Y|`-TQ@Do@PY;xqHjzF zRm*2RxBDsL7`ryXkH%*oQb<$oa_kE#z?x8m5|0c2&QPf69zJsPd8T}o~x6l$#Mt_4+9vj)f>F`M5 z%#ATV3hMYDcq^wq!@kGR$8+ii&TU$pFK9G5Ur6ROX_I`0>|=E0v|Mu2NPWUsiI+-t zEyA$HPYneWNl6cfXM$yvj85YsbqS2%68{yU;wn4hLrNOw?l3;0l*A|=ChMEhEwdi_1?5}Wn@{nH%zOh&*;^a9BeRwAmy|bf?{zad6ep<2<=Q6D ji!JdKmG(2UeM@vege6`LH(Hi1*LbcGZTB506~{QtkCkI3TZvjiL~0x zxckMnCB~t5P%6U;gX&031&@V_czn#By?(TEYhFsNjCofkw$7k3kdYEL zH3ahhzd#;$|Fi~`m3GEG<&$7P*P7Iy5ZQ*8($N^-$VBeN*icGaVd*{z1KvHUF|SfI zGeTRPiZ~_NF9vScZSFd^ownESIY#+Nw8N|;zIEO{b3NB-G@Jd`JG*|TwY?>Rz?Y%Z z*l9WKzSr}c{g%7EHS~kr$#rr=PBAAbQUDl(8;51T6j|RannU{UAFqEYDxWg#JV&4# zl;%=s@teIu6-_2}LTb&B+Pkl++C%$6hX>ST*xEp+Ccw6g$%ER_4BpEE!Qkss4CXPc zAFuRZ5j6{ygz0Bf*L zbCpg{)9y?HXW`sC+MlOttw7}qG^l)WvAhH|I;<4nGEG-#6yYj;3$U?|c`e5*(I1-t FzW^t^Iz0dY literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/LookUpRepository.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/LookUpRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..7b5fb633356433f47aeb592d7a5d4410b9136e73 GIT binary patch literal 848 zcmbtS%TC)s6ulE3;n9}xYSo=rr4@lqs@~NDIsvth{~aR}zJlDfeY=T?X@!Oq8&NK?ZOB0c?*RR5eAmtij!- zN3X*|S=q;q%;jl{drE05tkjBBsJBNJ{G~uMB(|ABSs;VM$n(AZmg5J(ar-3R4-P!1 z83v!6@N;~7*4gvhUKF>SuZLdfjghTyC!Vvj(bT3NE4Eo;dkJs@tg87h literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/RnGroupLineRepository.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/RnGroupLineRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..21ea083cc62e016cad19e151863e30c667b8a51d GIT binary patch literal 371 zcmbVIJ5Iwu5PcgyCZVC`5G+Mf8Bu~jMo7s4tihSA);P1)WDVj7T#14Ma45vuMTjCQ ziuq_XdcUvlk52$ooMspqTvlOim8lVqb|uTSw_)RB&^J4mTMb=Xc;Wf>n&Hsktfm*T z4T-alPc>ID!?D3EsI!|^y||UqnqPxH+a*P^bxXUz_bvSb8cY_U(~56=!v^PnvR?Fr z2IGZyLb22I_+IRb$cujoxGMHDV2M8V{>ulJt{hS*`xx>a&O3?hSo7;VSvNRHb(Dey MM#zSKg7GjXKRV%gDF6Tf literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/Rn_DynamicTransactionRepository.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/Rn_DynamicTransactionRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..02ef65ea2fafd94f07f36abca738e1a82bc3c1ce GIT binary patch literal 1199 zcmbVL+iuf95S?|KhO_}v3bf%S3-Qnvi4_vOGzBS;L^VnXI2A~|Slf6LHaNRxy$;Gp z@IyTC0elo<>_F_41}G0}@Ab@?GiSbi|MC?89>JX=SOgCGYD_g}f#ik`q>uAZMZzdO zrLOcEQ_04nf2^5|Sl3NTW+^wYw7tjIX#o*cx=p*)bvvHZu%8?ZFnLd4_8XX_nD7*J1xrQ< z++F1PiY4M2t``VDTuwMw+>Z%anj#?O;yh}l!_9l;&!JI)%~@3(zb^e>rP<&f~S^ z3jfL9=M^9q*O7(~xlYY`|IFwS+JGxF4LQv^s)oHtUk$nzjK_%B?TR;)#pI3aNc*S|l!x2y#fV1C@BOw(-Q>)Y)~{>!5r9 zKg9zdz(*m*2Bm2ss1NJ)%dpLs?hS0is?VoxwP8M zc%Y(=Hj_LG(H2=0%ugIxVbB_jso<$l3GW||acCV_Ww5JF!t=~Xm5hv-;1_L9c`U5p z<4i1qzstlqAcN*es`%Bctk;bhY(45e_NxMgl_~dSZrcpjLYXLG3xf>y|Gu&BUlxPP zN_$yI`vpO52L+u?@RQ8taf&aM(pFfhRnCC>R~7N0Kr##E#Qk=hMC-+Mi9pSYc% z-*bcaQKujD!YK3x9}lB}d-T=|Jh#k6-8Tn&BT^ellDk2wF4bqlqfWysGbtxYq^piZk%_L=6`fore=YZTRB9X4oh x(P@*S>p9$jo1ZD(q-?W%c#9ULx8OEq8Z@W0)!`0(YjF1u$h`_=m2Tb#_yz9w4=n%y literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/Rn_Function_Register_Repository.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/Rn_Function_Register_Repository.class new file mode 100644 index 0000000000000000000000000000000000000000..1143d06f2dcd01f22c3a339a22d42f536eedb087 GIT binary patch literal 1162 zcmb_bU2oGc6uoZOg^dD*@v-qCMTmzDBrGK0VF9FVq!5<e^Y7OXM|fa7paoI7NNr znSaCsKY$;FxGDQ+%PN?}gA?1=zW4Z?bASB&_8kBo!yOAM1lGGMrJA!uazlGE!g;20 zVU!-yK!(jic8yRn40tSZ!!=Hh;ug#iX!O~D(S*sEZXfh{*H|!5;EB>P%`+`z+|w-O zpOyYdBW4)wXKcL0n~a?#Bw+P~j5d;lK(Ol1%n_-S2}yTY%-KQ0owa{D>JV7yh*&aH zXinhEe=qRNpXQQFBh2YMIxi3p$&kPnHy>2A!%Ciz;G96cWMOmI;VS7Q|J*%0fR&&?h$(+7a)C^4NU01f^+ptQHmg%2?iO4R5mIfyk^-rH+Hrk% zYtO!KH-qh#9kj#detRnn+*e*_&kgK%uie14TW)(l^j_M}*He6GDDb7{Q5-SgqkL5~ zDIsuo65%mT6Hp(`hB{{FPbExr4HAuDt>dbT9aZQqZ;Ax5-}{T{AC^K8`1)IrG2c70 zF-*}l;rX*^HdfV>hR0lweDvVd+GV?PWri82Cq3q1cM_=Ls3E}>>|hJdK?N4d6)Zv> z|20$s%I3ZR7h&!&bO{<5YT(7oc<@RNOK|l)T!ZVlTQ76oz=7M#M=6#uP=yuzR^aAg Nl3SxB^LX+$z%Px;Z6W{w literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/Rn_InstanceTypeRepository.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/Rn_InstanceTypeRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..5c1ae19a97ad0babfa3ea9df45af29c765c78a2f GIT binary patch literal 463 zcmbV}!AiqG5Qb-~Hnu8w_2LT%?xmh0f)}9@5K{44rs*_nOlHIGMClXwP9A&!A4;5h zu(jyL!_ExM?*IRM`~LCz1^^>CN}y+8RQSdQ!kS6!g6BH7K05JXX>*>AISO(?_sf>@ z?@a=`297IyLR%x3_HI^DAqn&iT=-Dh*apYtB49($K0Mkv3fij0P4U|n*MbIy6W@h` zZd^?UPXBa1Uzr*hOkBw*UC_%f*>;dL`&Wp|Y?}qKIQhY0x&o1IIF4DUq>x^v22S!$ zA2jsfqMOxp&Flrmd5#9oe$5nx0(ntQyM~b}Mgu!~_VlAbr$lQH_F?eVhj5_1ulqxQ EPx#1}w*UYD literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/Rn_LookUpRepository.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/Rn_LookUpRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..6bf95afbe5b09f176484c036a2a739ec7fa76d05 GIT binary patch literal 1313 zcmb`HOLNmO5XV<()6fDXlvm3$C)&bHb%9gb&SY9=3b-WLNf@|z)I>2#9mylhp*e8o zJ8|Fx@Szyi&Z8luOn4kTwpV}cfBoB)zkUDm6#$;Wqa0)i>@-!EYR&@54Q9hXk4m4?7Bh@? zLN=N9WysDG63DfMY?Xq5fU{*^n4_h-Oh{T~K4&KZFK*8zEfQFEg)fk@ z)BLzJ!i?F)q1RwR%%kEy)NVRP(mOf9ft!kfwiq|JEa^O5l~x1 z2Dd-{CAd2frLAyHfqh!}D*Q*uY9$AhxQr6y8t-{`BS?R9F&&(!) z%h(aofgc5S>k$n1({bH-&;M#G!!13RErxkW5HLz)4!C1&K?vwKryivuoDtpq%+v z9QXnJD8$&b&4;j*0|&3yv*R~!-<$dM`^QfJ*oC_mln6Za)tG9|BFPOM$^iGVN`z5* zNA*XSTd+o;K4KF_BPK)IJ05Z0SWqSKOzDs&u@*8MYBuKIl>R~kW*8mC zY##bu%w~WDtf7#B6Ga5P9k&o8P-CP+_gTo^FLHmvU@;USUfj|Y$qhDgebF?z{D8nu3q+q36P@equNg^fB=i8OR!@u8aFbb(GpO}ds(rpEBD}?R!7Mz^JR$IX&aS`X z&?x4yB-p|ztmf8SwYD@oX8i(Ogte2SO{n8h9e=!piI)?&0#`r5HMow^jSTY!J{Z1v3bBO;Ww?cF Q32vW&Z08_V%)A5e2OIrtd;kCd literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/Rn_Menu_Group_Repository.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/Rn_Menu_Group_Repository.class new file mode 100644 index 0000000000000000000000000000000000000000..8d979c9acfc7846612f26a7508db9ec1ec115d0d GIT binary patch literal 462 zcmbVJOG?B*5Un0{;*1JzU3db)UZ|^x;6_CvLI&K1nxv-bm{c{Ljxsm!OfEcthZ0*C z&Jc9tqCQYn?>%0yQG6-;Kk$goZ-HopO_fcxXXlg#-u@KnlTypj=uz1*tFA*4~&6&aPRngYv*L z|HK0yz(*m*p&=It3K9=%uXo00&Ym;#?faLn0B|2}lpsgop|1v1a~4T%Xio;Xk5wX! z(j)3fuf=8RIXo1J;TkuSSP9k$RQhblXvAblJ4b!)n-UZWJWx8MNvwqodzuaSN2TA> zfEh;nF`I>d9kVGQfl^P%pcX|0obBdPj6e;TkaUlQoE=5Hy0cPhmB6|yLdi_3Ie}0A zy}*;^qK;e|VSd-J`V6^{7{zOG^G*eOEYk?ZO$cme3Opaxd|#!~Gy(#*wwqIpU6W~w zHy$6QMntrUz93#_g|vTTxaA-NG2m}RB2eaGTg7QEV#o0_hefMa#I!tQa#WyDHT_-xU$w#QMu@ z+|B$U@Oj3%pW{(o&SgQkxzSkNxtWR$X?V!>xZUpjv2HfeT$xeK>2wUMIKTw*xC$t8 z4u`x1Cm;vw*%y>y1K$O71G4!)1*c){IJ5~B3{~*QGnjZbfpc*F5H7$)Jl)7JFX6)D a%M*w#4CLVoK67yO806X*q==c<0e%1sjCPa& literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository1/GrpMenuAccessRepository.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository1/GrpMenuAccessRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..dc43e56bc2eca7feabf6990a560644ea72416d0f GIT binary patch literal 4671 zcmb_fYjfK~6us-bnlvXDAV z@?ZE9eBcN0qZsb$;k6}Mmfe2HjI#2cd+xdC-d+9s-{1cLz(Y8ggB*d~meG++CTlvg zrDI*e=dNL?wqd&4(t+8nGTkY*TFkO)y%%#ZP2l3Gd?rhpthc43<|%90b1+Nbkzuwa zt81!y``DB_?7d;Wl@!^QrPHq5hb?{Al?5Py#bZ@hO70uW#Fzx0Zd3$(#n9XN%}SIg z({0s`lFSoWsX6$j!+ugNwW+b9t{b*&tA=h7kSbaE{opXuMYNeSS#ubHC-rir{PIV7 zkM7rws?=hwM%(N*Iw(&=_Vl4LeSgACM&&KXGWpvAeX&j8ypGY&mj8zVU;l6^gL!?TQXK1bxk z2~(#>wO8dDE&W1On{^r%dx!b*Nc~FXV~gXcu{)ZsZv)yoQ8k4Y=mSdNLQvGY)8vHF;iF-MpFE_(URO5J^aNH1 z9o{p~fYrB$TV1rc^p4wH@({4nvtfj*0bNhVri*s<+A@O^V!6w@LIbx2h=pD5SOvOX)@AJbb($PGW=hQa`e1bgo1IuA#phD26Mq|f z(>VTnJ6a%NoIs<(p8vqxP*pr(dPAzOC^2aW&}3zPR_&9zr#FE=$03whBzfzDdCqg5 zCHGLlk+44wp?+ZoWg>8ngK9Wlak_^1J2($B)Hmy4^~cBIO6l5~ICn%zaRPGUO&3oi zYzLk!AGwb+WFTyP)a9qAtYM=xCfYcTy?_5mf(+Bct0^}Mfw8m?2bUOOe7uCt^&2bd zp9QXc9j`(fp2;h|gWgys)}p8@)xIO}ivJF0Z1{rv_#nF!BZ%DO_~EG-PB#qY4fQel zw-?5ry2%>*Rvg|}@oNDZD`Xg)k3PrnhEU8dL|70dT8le@1PK992&{^y#pwq}8q$dI zr14@HQ1aclP&XX2#r9QhmRrb%8zg%3-r`+J;IF<@$iIB&hoAOo7w@c{neDcSL(ltm zV6T~*=QqduiL5NV=Q6`~yG#H2!1$kG z{OMuwKlfq3Kz55fLyCWx$L%nM+g_m6G>ALN5KAG1ufmsU5O*^{tigIOk&S4&n*!oS zP9(A{9(_XdIY9A((%ef!ygv!zS6I8LD7UW#QoqQ{p+bH&x6%~K1|h+Nc=T-%J-aeH zu-nu6VKkpdlOR4$)A~s=;*zMIFBVo0?ZhjH#{MQL+li2#CLv9fA3RGU xQxIFT7x8%-nHK^vh0M2URVxaJ?4(L*q%znX4gS)brLTgSR`%>Ui&ohO_#e{Ek&yrZ literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository1/MenuDetRepository.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository1/MenuDetRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..b76418cf716c91a76457b8ddaee59f36b384495c GIT binary patch literal 10425 zcmeHN>2}jb6dr{oje(X@mO{5FOGtu=l8^vR;!xXhAk<5+6DV}CWozsx*peg3q3-E} z^cDIF{m}>L&%Q^0x4(LNXQZ(uS(cTYxaX9Fa{%k=n>%;;=4v!ozyI^=ZwR4zWR9W{ z0o|==4N)gjT_vViRb}|y)C|Sc^!BWnA!=)tnE8%q6rB{%`5kFb66=y$6LaMqQUOJ$ z1+<{)HPLA5idw7cQiHtF^w**+nUc8ElpI>cr%kD=P(Y_^#EjSL0?JRM`>K$&hNP(C zhEyX`xlWcQLqV4WG*(b*s${lwBB1J_Pq3W!hGJ<2CcT<(six8(&lN)fYvZb_nUbk! zsv#h;zvZ4dJ!=uY4cboaN%a<(|A#^95Ns?>Hy|xV#UzcQB1fH2k^hE2kL?pa1f8H(N`vSPA3yL3YKONN!Ml@X}Ixe@tG-kU&b_EovXb>yrs(^NF51DLYY7+kk2AlzQ zD0_ria01qaAfS^?pc&9SL(FYW-jFDpO`=2cMuDq|_PQ*fxd}(=)0$da@?K9`f|jY& z#k69Wkjb@u59&j(zyIe{kW?AS(lT^PB^<+#W-%3U!pKxKhkXh2^KdzGV9OxAqqalv z%UTD(lQWDlTL#gAHNr2xdBe_C)3cr(ciHlGuWtLUbCqMiZdiWsKWBVzEbK-2dz|kv0d5Wu5?cp7wyDETqKJv+F9}^S_CpD)$0@^ zpbHZ|%lToCa5?RLni6;rnDj}i{Ez`nS@MQHA%y3LK!kIVv9U2%sXqW2I!gGHV1Iugm~<XMQNb~d zyl)L28bOd;G`i=d5eSYHjhMeq8d1S9jRw#Ng5;vnyq88GI8roX{yJ$y1;;cRKqCl} zi$)7x8iC+Q(TMr$q!ASy(`W#VAV@A6-S^T61V@TS%wH#ssNk4J184+6a?$94MI#nR zLf_O(jlH|vfVbPeXAN-B0H^k_GmqLk{3*Pa&t=?4xvou_^+I%kz7W-{7b0_8QrS!k zKJU?kW~PVWt$?{DJgnCd0Xaj(_UGY)z~J5>FyZi>@!J%;ongDg@Xj!}*BK@pzB7JX zGq*EruM*xF2KPF{gu{2nZ-d}=hCMOEJHy~!XP9vK&iFm1+|IDN9o`uR_d3Ib!*|B7 zSi+Gztzytov>G+ndwMQDC%LJCpn#KIyV}y4C+@4}J({)8PQci_rkT)SS`MW^2QWK= zhn5_)0I_0VwMAQ~toDJnLaS_@TPF^pj~|R%eLDeNcegV;4KY_=bGCn9v)fS?S!)5> zxX@Cg2S?V)5})Uqoj9;Q3Ej$?rYpo)S7~U#2s=gHewt4nUwA>z{u%4itw8ITodS3C zgv;zj+cuV`M4O)F(>CB*sQB^&v>2Yjx%_G>j}tF3?}6fYAt|8CUEe9XJHy6)W^iY& z-&|MRb5%7R`XkVY6VOlg0qE3#vp_3j(516mDE9SMc0HGcT?T7Y57I%Ke6HaFx9U0o`;iPwSI|o-_iT9)^H931MrZ3-?Dm%B5s3y_Lxpv++!-WNn&C z>)EwjJ`>*r--?CglT;>NnznI;5`OU{l~3W)W;~Hj@!PT6_6HTkWVVn<-Ny0kDu*!5 zu|*3{FQ5nRx+rKZy+YQMIyior^33%C#xx}_B+Aikw%zEz{yg6mxW2y_%znpA_6icv z9pA|eXp$4nY&VJ6{lH@hJ`EAj3HW;oy6d;#^N~^X4qT7H)d-59Gw}Z}ty5b%6AsuzKJ8EnMU4y|Nv5_D5j6Bcg8=>=k z(r3`8=rb_SG7_`t9D_b*gTSck4%7`V>Ly3s3PO!@)a@YD1V>E?j;9>;m7k6@zncltk>#kIpNaRlM Z5z`=)Cr}gq9YMQx*mb7lG{n|G=wG_}?WF(! literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository1/QueryRepository.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository1/QueryRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..b35cfa58b2cacd8fccee2cf34996c507bb5b7dbd GIT binary patch literal 431 zcmbV}!AiqG5QhJ)+Ssb#!HdrzxCnZR2wpr$Ky1PLG@XWx$!^$8l=x^Kd;lLx90hF& zo;=LXurvJM{P3e--`s>28Sg* zk*&xV_HI#fE(yj47a@?$#P;AFuU=~ZfQJnM9(<_FihMa9?N2O)96 rx4OqapV10O4$?Pl*RE6Dm%*0Cj(!BRO7t9I7nAQi#h&J|_V(nWxfzmc5{zxi5!bj^QG&N~4*l9?Z%+Mzkd$HBZl9A;w z{TDp*1L#X0$_%74FvGwL%!&(znoT)y70@kTwz~qU>O*tSGe z8&#|8mjouat)^r8Jx>yD?0C7@H`u1rH16*{ly$$f%9!j{&+)Cc+_AdWt}WLb$MsF$ zB1?gM)pCvQw`Q{`J;OXaG1fX(&230~({nr0^B)r@?#XX@mM0rg3Lr>x&$N5w0UkA_ zU+I%h=kjB`7&?EgJT5KhOtC&wBhrGbVvgKI*DqX`IMvzMRodg9gCUFia6||Vd4HyhEJ00mX z1Qthw!sZJbVFV{+REpzm0g+co?<%CFF@P|w(*acE`$@ckD+1A+Vi(0tmB z;pk2U#=-8)wr|!S)yz)VdGVInZK^3g5}T1G0FPJAq4>g%$$7b_}pegor{Y z6n{qMN3NpB5NG-xA)>lXB_r_q@HSow^0Nu^$*Xo)DA*q|h zSGCqvHj37$I(=IGQtLxnI>{(nVPV&U!g4kkIxg9Fv}pvroGLAAD}gYxsZxuw#8bs5 zh%FxAv#(ZWPnM(54-M~)vSn-7;JrGfxX)FDlaj$^Acqp+8X_;*ry4~Nf&%dKk{KWF NBSHF-MS`bJ>}kBMy&Kl+ zO8g6+`2qAL4@Cl30tvwjNc<+CoY`HajcuVy_RPIAcg{Wc+`E7M`}3~=R&hIvjKH;4 z(5r_^c6}AqANpd?x1&| z!Y|}OSLsASOLq5V=xIMaG^38!7bx$%W-a8FZ>p#hwC~GM_Ee-oKDQ55)YQeCE0xFj z3S8J7P?4V6_MdotkJ)egeh|sXqgt9+H|QM%kL#Z+UxhMKZLL5*g|yYz1KDNRDJc>S z8|ANZta-u3+jvXBX-R)eN9)5y7w1sW5?ypr)Yl?7t#*nbUE;kJoOxJ)_)tYC?{X1Ffm3eOBwNb)Kz6W54UfSq;z#w>gI59YHl_;XIgzeEj9 z{Z&mU>IU((W|po-(;62)k<2=wWs!!am9}Ue?_f5G)H=RSCj4>j8%KAvlE8DiuA2D6xQ6u1>D`00P5Ne-m| literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/OperationResponse$ResponseStatusEnum.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/OperationResponse$ResponseStatusEnum.class new file mode 100644 index 0000000000000000000000000000000000000000..33014acec3a3328a1c25df2bb69b6eb9b1ef7da1 GIT binary patch literal 1496 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 N{6)|3vhPlB{}+a##9jaZ literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/Rn_DynamicTransactionResponse.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/Rn_DynamicTransactionResponse.class new file mode 100644 index 0000000000000000000000000000000000000000..fa38dffe08172f294aa9d896c11964bd987ffa71 GIT binary patch literal 2232 zcmbVMU2hvj6g^|FW5;n@*R4}R1EpySv7L1J2&Ju)(9}tb!A?U`MWQcdVh{GV_O4m4 zgYqwU<_FN1JQN9138V^MK;kz6<;;5RxK0{ABzt$}&b?>OIdf-!|LezR0Oqk7MM&Uk z#c7(Zk_}sV<`;IA<95rj+sfRqAFS-!vT0TBxzcXSif1|YMz9)%A#nMnwd=B`dZ_{t z%Tvv^K(h2u?ntxaSq-yfwY|K+=%!V(rPpzl!1B=YLTMOZ*`DR?4lsK#KrO#Syorqt zbDC<)YFpb4wQSptCpB?ypD9_6+5Sq_YRWa`!HT)uvdT_XHP&6HrCe{9I5Ag!*|A(z z4bv+@2|KdUAxChjro3WTP--SK#F?dqL&5(euY-T$r?v|H`I zC1+-a9m#A7tPDs0yCoWC{6+e^t)7HrS$TD*x-MPWRGxAvC+0buo@?1PfwR36X-KHp zoJW&O;1rU&XfA;(Fj*v9EoD~)<_3%IZa-8NFCVnm08T(KAHzEWBBPPs(@66}0D;Pv z1L(@D3A}-e0^u3WE{yA1$Oq)a=9dkc_=1ogr~6vSVggIhM_-Zls?Lt%CT>Ns%xivN zYPTeT8#+}ux&en5xe#%@x^e~Lx)G;?kHwfD?9EPWdb0AUEL%a(#_FOr9 zc!keIHvtoPl{10!n1m4kzIF((M1+t=$mV`P`a6!ohY-iR83Cf+O^XqDy}z4|#2C52 zNQ5@}+Snc}99B@^2Ab@|Pnh~FHT@KCX7|D0Z0hZOyt|M0k5e_#SH)gC0{p<9r?{rY z{Ifl5FESct`Gl1b))#WwZxJ!}a=$=)gGhKU_cKI!mV6idsph^m%f}64?l+807{B85 zVFy*f-3UEn|)QMrg%d njzYXCX{`HpXcI0W^qhTa&;%i90AJ6k_+TCq`l5X5i`@7dPP^FN literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/Rn_Forms_SetupResponse.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/Rn_Forms_SetupResponse.class new file mode 100644 index 0000000000000000000000000000000000000000..2e0c419f46b85bfaa2d4447356b1d36474ae63cf GIT binary patch literal 2180 zcmb7E-*XyO7(Ewu10ma%(vpfzt!-0HAn96-KT?v|7L$rX8iSJ=`%*V>g>7LMmnBaA z3!nW1>`NZ%jHWX>L3BH(amPxnGffx4j*PW6%VyJ~wI0s>}XX0p0dxt0Rys zJ+SsHv+LVUvt)Ptyuf6|t~-|B^`yY^$nr{Q6kj^N?eC9J%C8Y8v)$!dOYYbmd$%cX zIgaaFzD)%J^CjCgJ6~D#y7WxzXvMtMw##l!Hn%*tEj@pqIB`#Y*|j}ci_#oH>U&nR zOK#v&UHZkIkks7#2v?@&j|Kmafb*e%qO&(fLaNksTf6Q<^Nw_+XZf3wR^1%Xt_ty;|;%d^!y3~GMErY+Zx+53V!SN3!U9-NsQwP1cn zU}ZG=-#t+2)6eqVZ}&MT%hGSSwJpoDTGE#u`Nw^?;(NAJ7dYFuzG*pivlq?Ba7Ex; zP;o=y+g-a^lU^KG1ul%Q?YW>_R};95*A2{JUSMLyc5Hu5ARX!(Ld?(aBzOrq1E-Kw zNs9)q!DN!vZcC>ousED_clUv;`uVVchHye=`8ci%h z5{S+zc2O)VA@7nC%iC(wy=R2B{-F4M+*46F=ZsK+fx7ff(ZuU|P+)!JE zt4eKjkqf%(H>4+!P$f4Teg>w3V1IU^;#<{+Wvd-lXS`u`8mh7b@A~?sV+5$}BB|eSb24wIu zXJm*OXd&Q*V}KRJsk&BGz^e@oHx?tj{ zf&vdvWHUeE@@J{pCwMJ;2>upQZye&yL%jWOsxkvrEV41+NA^6ydrHiU?O|P!(J0Hu z%+#4*$YsBUt{volh4=<~^dR>OM0tUHSAwbHzPZ514Q=svOl7p+aQYF9#f)}{_k$hU z0bzzcHG*4O>cI~@Euer8XiS=oxXzo4V3uxfFcw9YyY6tL;X`7jF%gUZiIXgrzc3xc zP5$Bo>kG7AQ++i?)H3naUF%AXqBZPJk5=!h^#LuNWE8FNV%LL(Hya%O z3!nW1>sIQpV9{!MBP6L`K43kxZQG{wlp`L2WuUt;@htCU{luYwl6&nx~nm00#{#HyJ6L2FI7Od zec5aaBufviUCZqFcEcZmSh2 zVU+yF4d@sVI8(A6x!!5+NbfU?UI?U0ZpCVBTb`}vVNmnyHqE(l#OnXo2Fj~;-;i@N z!+vD81y+WmFKdVb8GoMqUaKb{S(bj?t!`MJ)s*Z|ii!K~mhah4P2ha*G#ZvuGrQ4z z3|9m$1g$s_Ug_A4s`TQxDlmOw@6QD7yqLfg-ZC(QjKIi(?b!a3KsppV0G!WkCwMS9 z180y_MRNwO!DNxuYDuRmFgI9qZ|9+``1!E425>@x`8eJY5E+H^o(v8{cZs#OH+cINeu577Z*x9el-dR#kQacd!z}GB5a{sofF- zw^XWdRr?JuazS_fy7UARstu>Z&%{^|?9EPX`Bvpo*=mIy8?RgKy6X0Td{J#)GEl_F zMBCUbmRGr5kwVzOorcdr4=AzacD#yQv(;soI`M?BDXO?kvB3ub5p}2djPY|2K^&ue zC%Ky7Z0tS^oND7VS9$FikA`_?kz(Emqv!ZO&%enrzar4HKOp^tg9tA0sZxM3yuzo^ zO~3?RO@9(A}aYimNqSMAe z8{310!wL%AK#`sJ8B?F9rk~=?>;d?jO}%}9cMtIXNvbCLs@QACfFIiP6gQNZ|F(zi zMMlFcpRiJAeIb|q4!X9V`wik-=+XV$uMp)~@?8j~iu?L3AGfr*KQK0-{f@JbVa!cv z2e=(%X#0d2^wbDWX}$~J_q2clKBO^e-p5s*Tm;i}bB(bmvdp^6k%o_mmBvUc{ufTO zS^ma&40rg8_pL9`dQDxgV?^B~zB+4NsZq2B-RaWm9<|=5rIU=J6&~zraIm~8EFHG& z8^$z(UP|T{w8g-f$z;AxTjI&wW5nhT@W~g8lgHbU?Usi7M%l7utaD$TR@~z#!kd!D iMqr0B;R+(p*rysz5P}Bq^^A%S=MkYU%BO+I&3^&Bx7LsV literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/Rn_Main_Menu_Response.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/Rn_Main_Menu_Response.class new file mode 100644 index 0000000000000000000000000000000000000000..fc3b014fac570c5dd6f5ce1c5df9f1989d0b463b GIT binary patch literal 2170 zcma)6QF9tq6#g#k212$ir6rX%THB@?APH5YH6e*jF|8=1F>x|uU+M;~ur2K3vc$>1 z@Yx?=U-D3AG@a3zj=t!Oze%m%T^2$Jt(_rv?>+aN?|$by=j5+{e|ZLA0oxIT1m-JF zGv`XPVM{OfwO!@D-E!=<%x&2Z%BICd+MNemfi(h6;Q9+=HqDysxeDl(C!1}7c2+KwaC7K-xipL~ZO`)dk1@)x5+$|O;Z0NSSZ!;!A=hl% z@l4MmeSvhza&ql&&00;mIrHcyx7M=CPE|HGU8f~oZ=X0(SANs6Tv-iM8A0NEW}`!9 z;8jg}#cmpjne-4-hAy5kzB>I&0sW%AHzI*Vso^wtokzL5(w462$ts`I3ZyP~gjbj_ypq)YNq&)N1|%dQEW@2TD}?OLvD%|~!e;DX<3 z1LoTut5KD16xRi&M)vfK-=-@uT*cc4W{?&bTefV=TNOwK$qfMJ(>pO1AZy?Z;wos) zz&vscGFvTaR|VzYwe6XeM`g1WbY`?}w(F{^eey;1c*#H!pAv0zt5{y= zb44b?M(s2_ZhAnmZKvZ_j{l$@$omUibg-QB@jgXodt`UxT2vLml8|Q6|r-}P8 zaH@^dyyaNY9uEA@B0;|~TF>!&o_{&+`QHJ0<|ibda1+7>uF3_Nz-wHMt^-oI$dkY& zOhF3(Uq1m@B0@+ZWU@aa`6GAX6Nr;tj{s4pA~y-1o)9WPw}Bj=KtkkTanQ)%O{M~ z8DGd|et@nWWPgYF9(wp7`x``gmVB4}qvF0X%VkNM`x6r>?GK!N3}Y^(9pWS3LpvbM zpr(djrG+khU(*5#_?W^ZIfv`4TnN)t^A2rcWaxF5I}M)@D~Yj4^lzMIv;2d}2yXEg z?Mq*v^qLy05lJl)U)5Sy*(h3r>U3#!ORe{5=_I3Q1%+Mr3(FB<=&)qp(WVjfay-AR zt@y%B#q)K_5{+jcBQkf0&%Roj8ZAer8ydVDX3Lhb!FP2^agVzYCnbqZUk)Y0HH4nC ZPc@1l1O?#dIWs;whlCoG&;2B~{sV~qzCi#0 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/Rn_Menu_Group_Response.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/Rn_Menu_Group_Response.class new file mode 100644 index 0000000000000000000000000000000000000000..6a54e94799405369634d39cf179b1d801cd2cf8d GIT binary patch literal 2198 zcmb7E-*XdH7(F-HZPIjs5J)jnM4)Jsw5(|T0cn9YmJ&@$ZJo}@OWh{dWFgs&n@yem z7e4z3$V(q^M$3%OIQpV9{!J>LyV<584KmCmyZ3(g`_4V*-0$vR|Ni_dfO%}j5D_q| zZp-wf)pVq9e&y6S?zCN}Bh3wGyCR+L_NwQ0+uIvqI0jAN>I;k3t-3r+70_*8wmJgI z@$lBZ~J>gltYY`E}R!WGzaI z1O@C`%`O>&OLgg&dU8@T*&)U(T{;$gbs6VF86{_TgpgFZ>9%&Hk1FE6yXkwjQx`aUcnnR;shhoM zA%-gg=Yk#_2rqZ-CL1V@s{$8Bcl%7xz>5i7#@hyFkQEqPupQgKC6EqP4j>k?TL~UT z-oPm&RneS*YcN@4wcFCE3Cs-^-QRgAt9~JDrU9IgSs{+=0wSxB-cv~PLja+?7Xzru z4-CACO9Igu#V(2)O2~)g#8$VObniJKhnyZLA&UlXL7jNja#mD!0(Y<+!xFFbk(<2| z12*Cw9T9bX_>A%9M-az2 z-$||}IGcC?11CB-$yMGk#-m~0X{4Ap#^@Qo&+>0_%nt_i+>b~<;UI!@e5w>+0zt7xrl5s@7mfjzi4ai;x%^K^|G-i77~*6vBSciYDKP?X^mkK{I3pJs(dl2H zjeWtwVFg8QpvY!^!R0Sf(@*hM?g0GFrrtTgy9apx|5RoAs@P;Bz>n;CijS0-m)pa> zBBNoJPgtq5zL?K_4_({O{|@mT^yq&6H;BqC`7Q)g#eHp-kDJ=upP0yKf8g|E7;_oz z0Jnn-ZJ#iMo*Ka^&G+E@o)%HW$22C*i@3s*i(r~=-eoL`9J5wA(r}MhX^h39A$r zGNuvqVzRKHEe6I+B?}GO5>MtIBQ|${PrqE88f{0eR~qgcWy@Bu#(i~Kai60IZ%P{L hfgQ?(D~LQ}pK3Hg2pYiGGb%osM})d4p9LZ}{sU9G$_)Sj literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/Rn_Menu_Register_Response.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/Rn_Menu_Register_Response.class new file mode 100644 index 0000000000000000000000000000000000000000..61d7dc8e1e3612aca2ed73f1591ab788cac11ff5 GIT binary patch literal 2198 zcmb7EU2hvj6g^|_#*VXXUAIm#4fHF8*iO1o!bj^QG&N~4*l9>mB>GY|_F!*o@0#^G zDF1?IegJ*RLy^FhKtk{W62A#3XVz=SbrPyd_U_D`xo6HfbMOB3@6W#iSj1Kg5rOMf zw`F?LYC6(4zjA6EciOJgk>;lJpdy{_gH2htJHGTd=&!_}30yrkZ^Np~!Bzp?_GPOh zkSss6b}h5(+fB1fyn?{wmR)x&zw1eX!r1asc^qFlzU}WFVpUinQf9Nu)t210JN8af zt~!qETfR*h0@OI z?2;Y0RF{6KFC{gX9b?PXWbv_rA?s5W`@uq<}WCbRcY{&Lj1k$0%5zs<*JHgAy8#sle zN?I^*4JMPUc3V0%frZhedpi$h)h~plG=dY7E5z}(fXFJOcNEg%7(l4-cmS38o`H+F zBoLib?4r1#guG8qEOe_$1D_Kz;B;RJSvIf&b>UUZSyQ_cxP{v>tg@L84DF{FxT&@Z zSC!oOA{TVmZ%9udp-OKy{3J{T!NKgrmTy%bRjhVcrSXQkPUpoX?CPG9Za8BG_werjsmcshvCfVFKd|R1K2Ty_Y!6F|jK*0$ zVW!UfVm|jhbZtNXJH&U;qx<>aAS(0ZyA(_n_w{)`ZfXmEVk)Ekfzyv+EM&AEJ`8qf z`-B!*f?2wGhp{Mf+;x{D4IdLLjfq(NZ=7VY{DbKj zZt)i%T3@8~nrf{hMBO01x@%pjQM5+g>C@_8wLYY!lZ>JjUhG(RSqeso}X%mTU#`*3L cLF5_hRHF$(&;Y)kQSre%B2=S%7Kq&Z55_Udod5s; literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/SingleDataSeriseResponse.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/SingleDataSeriseResponse.class new file mode 100644 index 0000000000000000000000000000000000000000..91f5cd66a218a6befcb7e768ea432fc6629977f5 GIT binary patch literal 2066 zcma)6(QX?>6g^|_#*X7OuG=Jpri9V}iQUAM7E0nIrFGL{u-hs|k>H7qJ;dAEyJkJE z)W6`F51=o3C=$35NC;j);+ueSW_Rtln}k+MJTrIhJ@?#m@9bay{`@O|tEeUr6S!P= z+XYWrEk~-t*G_}`ZpU@HvQV>~{g%9CDXS(uyDN9Xiv$dT+=*fLI?}V0?K%U00n=8p z-4)1G9$1g8LQmPPLdEW?qQH2~-ghk3^Q6GF$n{1gnnXIvR*yqw0juH`QIh*om4h7F zrR4|=@7InPUmg40PLEmJvg|yvyY^m7-f$dO`4zIHY^CM4_uPktJJQj0%LdaKCAT5R z!GhB;F(xoou^oB0*WQ!f=N2J!oLjeAyOw9`b7(YF(>=_RosuyE4sE%}qQnZi6Sr12Im3XE;oj;*!?ro;M1FpJB(DYoJ5G{%wA zLGPxqgk=U z3B;E)yEv}sLN1e&{HABMsNV~P3^;wM3%QoYNBDpW*DYsTd#A9DjRe^K%%Pq^NSaTa zuEN#B7QJME>8hsm1X6nF7Q+`h;Ts31$(pk2535!uoX=#_>NfRk`{c_y`Rz1HxJ9)4 zJLT#&)0J5W$F@2b)BM#gpmWy$^&M~qXL+L7n1K-j&K?1*5Fw@! za`~Sy^#gbDBZxDBM~JAi1+-rqX494=bIs9WQY&P5;0!P@T0w~kG{L!FF#kpNjc0f> z*T-TX?_{}N>Z9;~Rm}~n;y@h(ekji~yswLSxjdX9GK#W%%1D#(rF`ytn8rc=cZly` z#t-tpK~yi1>WBVObH7X0i|fY9pO~04{=n%cNUzKpeXRK&#sOhQHJ$XkbTxn&F>P_=sOt^x4BRBvG{zFizj2Dg@(*SbSm$4IDE%g-H}o4irl>XI z>t36>8cl0doq$%*YI8`-BpFRBZ0vQvv3w5fgc5S?{gn*;)BDNsHOC!7nua3TnaA|gcuikbrwLbA5@#NBGMuGZ^_{51~z z0DctW*^X3HJ`^MlV`<*by!Uoy{q6gguSE2e9);uydYl%E*s|1yT|75gT(VuNl;hW* z-B_{CW^EplFKBQomonDU|Hjea?L0iqBx2dhaYXc$d~oAn9u6dDF^*_{;Gduio@9otfn zU&jw_`zOpi^e z3Uja;7k2Tg$Z*{^QM;gKe=}#5$wz-hCdP5jcC=pX&wW_DOw**EZ!k~NhCi4?s$NmQ zY{-xJOv@C)pZ-<&kLG^sqysrYTcwj053<7s7B1UX{DX2Q*u$)-Y|3M$;b!;3%YIV7 z+CUIm@m~;yKFBCQ9wPJT67nwfkY7Q*1#YVUg+5(9hpsiyfVS6A*Q=|jg?H%sd1c$Y nOE=a~ze6`sc?+@Ekldy_>!WR-?gGAtxQ}>%5VVi4M-P7h!l((R literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/ExtFieldServiceImpl.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/ExtFieldServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..426fef93565f6695110698d92f9e7d3ab7e6f7bd GIT binary patch literal 6818 zcmb_g33yc175?vJGBcUHKp2QJpco@+Ai)6ygbAVvf<{9?5}_hBzRbKN4<<9iyf;8Z zTC3R2wc16gt$tl_x7z9;T9?*ptF`;S*S5B`i%a)vtNqV=Z!!}SV)QE?ynE-~d-ngF zdoEAE_TVD`7OA6x@F_GUGJ~<4p{LS@9qUUcW0sNIZYGS_s-5;~(?}(|+~4hk*;EjI zh1xCpc0HET)BUlvy<3cg9YjFk_zAL6h>$X$(sS!_8KGXM+XGzeC~@twb7s1~MIpLA zpSI0GV}og#y(yzLozB?0ZD!Jz!lI5$u0LjFY_ z!M`$-G{UIBbPdx`r!cw0OdFl~!CoWRt<(1sp-e(gZP0V3{Pq_8_JGM?%p0Y^I3N<~ z{f6C|N|9;f95?WJ+f2neOv~nORhQYH*6nw%yiOGH%PtPhT4+~a~j*{OiYn5nlLYjW`?c= z@%FTB^cy)1Cm==v4k*|5DI6wjM;&Vs0~Tmlh!Yh;qK&IWV`JG_Hy2yV{kb+P$)cxP zBFy*28kXQB2Ano1)DH`CJl~g3C**9bE1%7#Oe5D4#xk@75oe4XeVk)Oh8mXRWF|`{ zw<={B-2=JI4uu7tHiuwXZkMNP5T_{2J~$*}g;T+2((9^Sp(dB^VHWoENo^wbj+9L5T))vyj{)3Zc|lRZ6YdPrefG4~uzy{aq(T^hP^4hgK0 z1a;-cdgteC5Q>c&-XRcRlab`aWS&ACK3Eu?rW=HE@p1F41r)_ON6#YDStl zc*Jn!D1(K^omFEO-mT$15{rQF}j}sOJ&miA~b~kEM-NCGHrDBwZ-K_X>@>$5(7qJ zYj0*}2oH^BRNQFm@Pimc>)2#=DrG?3YNJw5gX=6pkQz0_9c_v7?DfA27p z_CUOT;r#i#o5O;JCp0{XFVp=ggXXa}W`$~(ji)p`EvcxvnX__0&$Y4?1@uIsM{dVJ zUr)kGhk&?Tx|FG9Nl=8mQ+d4f=M^~3Ju>2Y=XErdZgopUPk+u#_6SEdLqJQ)l%ke)-ulc7pZb&?m5ME$$As+YPB@y(p zs5};L!jsbZuwsqLF=iFcB~i^6kob0^DF9X`|7~$IUKbb`gIP&meXuvF&z{ee6V~M= zY$Ep@QCeiNpfp`bBy~9#<7!i$Ez?(xe#V|4m!m@Cn6EI4t)Y<-q{h6LF9p@MWimGH z)U$3AX@ymVsthVWpBSZ^)=Y2DY&BvXj$J&cdk;}f1yqpjGTYALlEO3P@%1QO=4a^X zWXiB+%d;(?9Upfi2&M9sAD{T9D{_3=a%_8?SL&%$muVXmsv3{g6b=7zSk;!+4%6^oXRVHFtcC6Aw2@nx(k;udf@-G1v7_QKmRE!7 zNQGJBA7w>#Lx7{%Dp&AdCH!n-f(UV5#Wz(oN7{^P3mP|S#@d*~4ZcA=iU7wcqy!?E zdeEA1VNQ*hLmr|=AIA!gM+k?R4`A*A%=cmDgIEL@3RaotbU+;;p z74c06aJml%i45}u_%xn`6U#)^4vVUF1h9kQxiiZ}wK<~BLWd{nX^xd#>ps}hHAPE1 z=QS75S-^T3HxzKLjGGJSk+HV`L&kvuQo>Mwa{E&&59rH7W$LrbZ03mW*G zo{N)d#0tc53Kc#TXVX6t<3+Ac!{&5zPdrCGk#)?OL7HuxRgk6vInMl!H>-R+3LX-V zTChDc?;=A9XlKdHybpUZ^C1kK`w(`W8`-@d@0?k{y9&5$Ki>Oj>6{z*_Z8i-Ms}JH z;Qc=M?YtPE5|m7t2@eK)H!Tar)N|fA??E9Du`1B1}7!5dQZkIFFa^_Bc zhynL-RFm1={E&>_jgfl}N%&drk3)FhAqflP6FzWA!UxAE{QMya$G0)+I6v~pu-hJ^ z9M?Ht1C23eg{C;@{tH^CKS$RG3;SY(^*M+38byejTE6Z zh&6nxcO%39J=jKQTiDGf=9Rb*w{pCbzY4g7P4uOBmg94Lj=sp<*Kw7K;A%C4ug_Vy zj@Y_hE#*_~EbLWXoNwg&NXKnz8*W!uaJ&Y0s{-y!dIPoPY~i6 z&U^w#d<|b`B53Mid;{O4MRn>vd<)-Z(#=wL;5(cJ_`hB|@LlF<5UW)d-y>}ZYm|xa zbF4zQ>ctN@3*$U>9)8GKH7vCfKjKWokLeq!`>uqaP=cgND}t|~DTrl3?Bd_5*RdTn zL8u`1Ie$xAL98e)x?B5Ljrhk&w3-Uq1X=^yA!XyI_?eqd_ z-@HIxAx2(Bf(=9;8-|Oxe~I!raop_MQH&$@;4k#7RMb8AD`$)&XMf{N%H$sWoijfr z?8ZOn=Ss@x$3Hm>P|8X87k7h{6{A#%qeO%Mk^Ucq)vMT6>9}=@pCUl!AX|_jYQxeb zQK($8OUYEkPajc%XAD>1(&gb^{>_dVRFhoTAH78`%gVU0qk4;6&Mb1Fi(aD*KBk$# rgqn&;&WD%3qBB*M($pkpHd#f~RA)9#9j>M;X-A}YoS}|jYDWJDH60py literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/FileStorageService.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/FileStorageService.class new file mode 100644 index 0000000000000000000000000000000000000000..cce88978b2c0053660d0bb68fdc09f611e8597d9 GIT binary patch literal 4008 zcmb7G`Fk7H6+O?AJ(4n6ut|gBE)FEba$-*np%5#ibzD0U@kZphancsX(vv)iG&3EI zY%7$~7U)9h3T>hLP8Uj>Ky8OKq@+9jgZf*)o;Q+Z$q{L>zfUu7yURJ}-g$5R=k+%L z9Kydev^N^OnnuC2^TyQt zd71GALIo!;&^hjSd81Uw9XfA}JNdlyk^J6Wy)T(O4fWq4%@clo4)1PC3U3W z6z81_#&Ky&&-7)MN4At1LCvFpG2R%TS}LtaIA{#J?&*!qsiIrp`FPFcYzv1ERAY2K z%g*OKvnZDw?}9NeO}k{|%nY-w7-l^}W4P=)OO{s+%k>qIwb7w)e3HACC(}j${g!ZTUwDac^Q)AUxt^Weo4a9U68C?Ai?YSTzM5 zaqJd|=A~aHLSSESL%<^ivs6kZZsscrfp_a@M~A@nam$vI<>I{bW=s+n5S%d!v!-XM zac#2WNDyHRA?(rdK6Eikf59TT2b-9?wX%r9?Pa&%nAvI1$x(RIR>m)TbUN1C64WI* zZxqV~-*QdQHzwBKlxC9+nbxRD%x=McBsBC=PyuM06mSc3I{I)xK(k7tMc1zcRGih& zFR;H+nQ}QJ-9Xkxt!PHqXCg2Jc8{5iE!*QeJtfLa_DE%|N97vBK@2MF?h)A8$WuLf z#mgZbQN&{S03OhAzd(PZ_y1WJIu2uqq^?UMo3d5qC}AX;c&b{GELy)(FR)|`M{rcb zg93YQcDre_jt}BPRrM(ssVtR4CmZ!L?yy>7IED{v7-?!K)r577VvL9fWigc#xVsUQ zYSW>5Hw@NrQXHSqk-|d)T}*V!v+|a07L+J#);cxT6i4k?1mgl?Km|0ZV+zx3K`anI zWoPBGa^I4Zl-hqvM;bHCwN#!j1zkYxPPK?FhFP4^@DYK#l>SWD%q&QQSQgm`4a*6- ztqStAZxu>9=5SU(XA+~!zO+khmz!Xy1>eGzhL5r}Y)0o;*(zkE7s1DAmu*G~uiv#Y z{V|-wp!zX&%p)VvVY;rg$y$FS>~HI@W|)MYgVd2z=tq2~x<85qoY!DAvs@|pvZ&(% z3alol%rD5!Dx1V%n!VKLVQChV5isj*Dw6@r8Ssm4*79Ps=<4`{!ez-={jYTP9gvk`oTz;CW|WwU2rN!fW)$5RR(jd4$sYbBx2>G(XpK-6=N zS2P*^;TEW$YY_Xb^#2T=)$k>Pz4^nSE#hbh zV`jl~mehBEiEDVi0ru2Xz4OtdN?%~`9XD}`sNiIRivq2vuEf&$KROkWT<ON(H~v@hkkAYNHBLwp*^LozhwFPLx!`0xRofyrSW^ z>loWySE(85D#BjzJN%x}(3(K91!;}qX|CcXLrD#n1?~unqP{TVxRt5kvlhi`SkdqY zfu80q%-_zMUUp-vj#aEtgr`QQ$A?Eo9~nK9O3$Pwj|<#c#kX$$=Ce%pb^KAo)ti!4 z@G;qIc!PS#FfM`P8ztC?*CraHuN4)ygjv0Ka)%Lzs^lUy7502>74Y(6` zaihRq?4x1&6t6Ii80T&rxPrR{Uc}a`I5^iiu!{Fz?|TjRuHe4O{uLzGFgz6I9;#}n zJ=FUp6^k_U%-M@;*hN1`J(JT058(u>HWap>D*ASWu(f4Ns(rb8nD0~^+@$eOV zu?<16U+G`P*REe;UR`(|-^O#KM}c+>JNUbwr1WxS5Z$_&wrU!>o?aPb|^ zh3RDh-{o67t)IpB_|`#>X?&k=8vQ2m1HMJ*If5VJM~w0XD&WWX39Y=0o%ktN!}uBf z^RnOdZ#=2txdeXBakPyAfUXslzo=6gr-OFRRa#J4Wp0v>mq=hZ9#%9QtWrRF6;q*W zIJSo05baBIq04xcP+vI{FmU~C8F;hCz+V~|IEl$R1AT$Ejx)CtWZ)!=W}GNa@NJSe zzbRxejUpb#GG+p#PXy&usUuyfBVDN>y_-BLR72d8z~At9Vl-99Ez^Wsgt%R7g<2c_ OL7dv~&w8c41^gFlCPU-^ literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/RnGroupMenuLineServiec.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/RnGroupMenuLineServiec.class new file mode 100644 index 0000000000000000000000000000000000000000..9c2a3f22a2159b88d3ab081733e4c4efea7c1919 GIT binary patch literal 551 zcmb7>zfQw25XR4;Z6N$BW#k3YrC!*IKvW1+DHVt?utjci1Xr$IId-MK8Uqi&Lm@6< zKx$bs-skUrcjxcx`{NS;F5x_cfWas?OKwppjgG(Rf>&tQGDrTbAFT1K8ET(MjcF}o z9zusfe<9X_E1^sNIA37y7=)rIUd-K`!E2msBT+l)Hbl&7TGnv08af`f@G=%tFJxUUwLz#4;NA*5cT}p#A d+7hBa>9CQG;FzQnas_Zomi|^3J)Sj>gCANInm7Oe literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/RnGroupMenuLineServiecImpl.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/RnGroupMenuLineServiecImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..229e6d381e8d563964ba7f6dabf4c2dd593217f5 GIT binary patch literal 2045 zcmb7FU31$+6g_LFQR52NEyYk$=m*d$AB{>$q2RQ|ZE5k0LztwK;VrYa*6s#b@<^+6 z@~>cq0m1{rGe3&qtdzKk-N5+4y3*ad_ndp~-Syx9{P8D%RebB9ByhJI5Bx;QFjB_v zMS-8HWKVaMzZpGG;%vCCqO7eWwPoF^+Zqf*2Qvb-UAZUyP)2=!qqD2J#=)$>%5>QT zL_!Mf@m+};#;G=OvVTOwQrH}M8v>U%v&iUy+SaM=gsK@uv5`i{Q7Ul19VdN19VR;J z_Yyf!uj1rKzoTT7`aRjr^UBc%znPi%l}=Q^w6kkE(&nK+*<08an0XQhs)91kyEq3| z;JhXBT{h^bkkM~;v$JT32BVGkJ;W@Y^ zaN%`%t;ndpN?a^pkuBVlVWu{E0(F~vBCKI$Uv_aDD*|VGItmIV-svJ{Mu+~!(9XCF z8x`EaT?e01pFH`ARTrOOl{3s51ul8V@r%RCAuDMXE?QhK*qung_4>)V-X9*#cJmGK zYg4r2p*?0~)(k_EKO&dIw{>c`I=7|!ku+Jtsd_XKFddfF`H_pS!Mu*uIfpGv3tl@` z$szQEG1qip9II>?NTZ6=TiJ@Uq^q83drw?F{X$)_9Tf21cx|PeR}~xT@8@@LS2b{* zr?<@C8U9N45Yx`_QlF)*&{{vQD?Z=imrpCKckwq=f96XGH9l=HP{jp4ZK&OL5pUCS zCh!iU?B-3{GHq?~7u1&y@Lmaj;luUipXe*{RA|BYD(ZQzYeoEFF7Cv&oN$$Km-tq~ z4aT1lbX%y8@G)H$YM0hR)h*Qg@A%{ZOC_u?{|cXw7O_kqpuIFs;5wzgkrSvF tv4;dKy(S(r!x3!Zc|woC)2WrcMcUr6LTjT!|5Mo#zR3%EHkyp*z`u)I{`&v` literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_DynamicTransactionService.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_DynamicTransactionService.class new file mode 100644 index 0000000000000000000000000000000000000000..6e57671582e4c9671128534deaa78d2d0db18896 GIT binary patch literal 1137 zcmcIj%TC)s6g^`?+@ytuXG;qUc4osYV3(>A6d^@QRYX{I<4!yiGt?eO<4I7~{i`ne z0elqdwUaccAk-kbv3>77KIcAfZh!s)aEKir9>ZajrQ9l!80C1+NS-S@)RE%nCOjD# zk?QEe3X_Y->CAM-K_3-{#+4Wfo(L23FWoB@IfiPi+)4QJUi)AN@IQM@Mq;NGkGS8%AB$}!%OP$@#r+OX-hJ!1+54Ad~)CW zlnneHsf3zj8l`AU9vL}RJ_uSQJ>SF_yn?Ngiy>{mw_wiS=a<{GCY0kH4&7{t8I}iq z+7UHtWS7eM@9ET~N@$G7qhfRw8q!yWdM6v$NS*40TC)4t&FvTWRApdTpz{U%3d16* zWcy@!cv0Fl`WoAHydwW1tqh85UBdF8(CcZaQHEBqN-PDs=3$LqWA{2XCT=3xERk>U YcH&xEm?9^kExend3lfI+^z^X(8;)gA1^@s6 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_DynamicTransactionServiceImpl.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_DynamicTransactionServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..e5405fe4be134abdc26b6d0ded16dd0a20c8f661 GIT binary patch literal 6717 zcmb_hd3;pW75>g7WRl4R0tgZkF(699Hi59ou$Y7((ScxsCBfibR6J*9N3B6K-fQ=7J!Tst*5K}}VdsoN z*K+JW|7G_`CLKj3q3)0|YQ)oqJsj^DIAjjGQB)CDpN&mIQ`YWJ`BV10r8#@ejFYom zCwq*rFV$5bJT>RL45yeJyk z{j+CCVLoOPqC=LQl1213PfAM4aE*A%88Iw7zRMUkbqo_Nrv>F8-1vVtdgg)C;aaGd zdp@U2hL=ECa$5e&Qn~JSnC?L*wad_n>Y7Ey$pNi{&IwK#wbVly5^mOV8#zVGx64En>j}%tOXier5#nd)7okB%AXVDZgLO=p zmd|iWnI#?vn!CHtaE`Ny)nS8a1tV8Scjy-4(#NrV7IQ6kaBGVwqnVJq+<`WN9(Xl;R^IJIu}CE3MP(# zTlQ%9ZiOqsr^|FUu7lJ+%4N?XkyEEzBd%81i+zk>gJDD^M@Wq9S2%!c3Ds<*(;3OE zB%D(`2gJKRSD%04-*pNG1{llc3fS2}-wIIQa7w`p8eXLx8df+Mv>?hu3WtNpHjNxn zu!BfZW)!XuB3El zb9^Mt@K4lKzj@T{AF|9ezmKKNH1}#9$8>+DcjSFBI+yCBG?($E#-Q7F&0#aEXdX3i zFFb0b^JdQwcT?l1oNUwuSb}>FI#1Dj;!ZMV9_2ni=g$z@tNqJaqGex{77$v4{f2pT z(3G<^7w zjMfnj^eS!As|16pFVd%M;@FW0ZQ?eDHWL<<^*R$94qj~97#Tauj{C5+PZCM+NQHo7#q@DH*MI^RGMXFHFa_0GEV9wkX3}W6V`p2p77;hUYYG9 zmV2mb&1; zWj63(V};IhPN_-nV>!NTnU2f%lXzhW-ze)k9LLS^CyR`KEz8AdH|>eim4t<*qOt5z z=dc-13Xcpl3SSizT}4;(j>s3eqKfcHaEXPHzVYoGm$aE%lyscK`AlNMvV)q?z}@Wh z*}e3qJoVUMOI(luA}~f zsX;}ZVrrnIJE&+IUCQQ%S;uEbw{4r*&a{!snYk#9a8gX5X|iBP$sx=?HI#Q0pBXIR zt)_ziP2qnL{f&g5HGFxg;%AJXwfyAIL;O3H|BCaI_&H_CaZJ0Lg$U~SSA&7+n8Cjq z$^gv7EPir8F`H3ySdQRaF|wMq8WUS`FXoP69&!5>wlpVTDHgDFKD+8$Y7$FZ*k**s z)@n;j$FLwW!Bm5on&ZO?ru3>Vz#?|yLLNMY_z&&rMOZv;zgg@XJgkD>P1W`r#?TVM zj%C`}3R!kctS%I5dg)C*czl+rScc_nxR!A%ICc@VGD-)?*Q{hs!GmS|g7{9}#ws1? zef-oj*A-T_I)VqW&Y#?m`Ak&u`)2-a;StT4h9$C8--)_$C+c|Wi`n)xwzz?%@hMlx zlnHF~r;M!U39HzPq%5{^44W#@cmnOad`5)Ndw4{IFM0T?2;cDVEfK!!;Rho8$iq)X z_=SgGiSSzwe-PnM9{wuAKRoOR)y4u@;;7GPDir(Zdv7%|sbU;1F|@<2N^8Gj8IK5I5rz+{%R9 zjt<BQV~KBK+>M4}sQIIu-Yg=F)SHD4wcZ+PBE_)Q#q{CBg{-#+9d*5h)|W!q&LNyP z9>S6*{@&awvon!wh7X?qZD#8!%^V1r;j^k>rjxzV+wcV?Z?+fA%%aOYN|vZC_sc9A zlrbS+&cl0hjlMH(WD4$)yo=>s}VHf2!%Upr~C A-T(jq literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Forms_Setup_Service.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Forms_Setup_Service.class new file mode 100644 index 0000000000000000000000000000000000000000..6073262d0528c2831d00d037eeae8899e795f5a9 GIT binary patch literal 1251 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 bilH)8=1@Kb#DWAqfWrkdf*BmeMUTG$vFIgJ literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Menu_Group_ServiceImpl.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Menu_Group_ServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..2f2fc1db665c24b4eaa4c7eb968093d3475ef717 GIT binary patch literal 4480 zcmcIm`*#~h75+wcB1hgjic9R6md1(G)^_4-(zt1eLL579kdq*%2A6_ZOJjMH)vmI; za%!N2LV*@qXnDWiZ_1;94rtQlzVYi;JT{}D}&^0GfYqurV#5dTC zo)qZy{IgCVuP*!EP4=bOf-dp(fHBWR1InfGl)(N?#6=)wGrHN%;0pAyFD-d~H7Eu$ ztk>AsHWhD{Kwzz~1fCt;l-}mEI%VJlP6<4g%tw1FlOYm#M|;Oz*8839OYtqY`n^D= zUgMsWQKdLZc%AP5qhI}OJrfxm#d!l4a8bZu$!TgX_Xb^PHaG3rT&TJ^3+yP~XCRMR z$}?#R`JGAfvG~}$Qn+m3iZakg17~DV@@-x5YN=pgPGR*Ct7GYD1M~QRzys8p3oSn^ zsz3=0HhHPz$JE{b3>P%D1q09EL)0N$QfF7ptwSZE_hADcQHFYH=&W1TW)!!N8n6^t zFTs-YB?D#EY#(gKD>_vjo=kz#TQX3=GS{2&Nvv}=rqVi7A{N&STn7&wm4&BuO|X3= z&Y)IPQZ`%z9=Kst4ieH$@RqPTMR&B${(`(wmjOG=4$mnU+lo|RAgV<@-?l9?W$Cb6 zMn$@Tjc59i!h~vn&ly<7$9RTD8Uk%q(cCfQ)Z^UkieN_;cU=$<#Q#e3nnlN zGVtntNnY~8b6(vopKUI&D}7SnP_irCi&`3=VnOLvnW*xay6y0I?!l)89x5d7XT!YZ z3@<6m!^e*gXK)KIs*B02`ud!K&*LS!Zq;hiWy70D`qgwj(FCJC5*uUr-oh6Qd{J$b zp3sXHGk6{^wt{uI_4z~(UK7~c#;zD$E80o2#mwoLowL<->5+Dg#C`Li3WLDLM|{Au zQhMQPO`5R^uLIc`&kKXlw`$R;%Ig0HzLmx|Nvsu9+g@?nF;oM!6bsuF0d+1jepDlb+>SoJv8*esSIc7L2 zzj>GE`vLx$90kWMUTq-_CXg}-q}`+%Aq{J!DPpFm+pCcF-@%^LI;e*=)IcN_Ls0=E*hdnN zQhAHuk7D{59;cXcv&6BB<4}w{n!^6KZ~$oF(BE)$_CSkpKe{QnhjH3VYJ2G7h_*N! z0jyaZ!ZEy?Mg|Fe967#Y+sCx+6L?Q-yAa#X#G;yGTa}B&#jh7mDzZ$PL@If^`+dxr`iw#IM z+6`0{%)}i;jE{E@b+^KFkRb=}${Ci>0LMWb!fsxFAIA~SOyVh?l2Z)Pc?M~o0aBGT z8IfD_YatFH3FC(LYmol={OY1k7Xp5D>#%N1Q4|zXX$?`2{k_3arFEpu-<77nvugUl z9o$Tz`wfakwLPF&Op*C1GM^&zX{LE55&4ldh9hf9Hr6FMn^Db!d{luQBdFQ}yWYn0 z3vc7rLjMc5@tN@kKHI>{xA96VaM9MZ8*Z8RF|1O{J<45?3{`x6?fnVycU*WfS1HYq`>Mg(Lj{Osc{tc8+tUv$& literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Menu_Register_Service.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Menu_Register_Service.class new file mode 100644 index 0000000000000000000000000000000000000000..7f7571085f7a948488324303d5a8ad0b817e046e GIT binary patch literal 1092 zcmcIjO>fgc5Pcicn1r^ZA5iGWtp`U!Y!BQ5NbLbBQleG~T)0GAd+Kg+*3o($lmmZ^ z13!QtRWY_xA|*mfBzoI<^Y!MZbeMf;4s72(?<5*zVZ*>cI=5#E(oZJ?u4|HUd z%Pa|eSPFRGU1UMVX*XRW(f-J_`hGXDkxa){o9M=>5q(eWHyJ9YWSESUHu6eEq^@IX zw^j<}qCft7(e;KBV^+0C?luXpR6Y|+o(gQUsu$DqAV@OfI-$U+Uy563KXADOJmiwz zmn(#=N3fwv5<|@_ynw5m+Y8I{?>~fV^^j-n&7HR*t`ciIvuU^B7}jjw(HG=Z+nG<#NZoSNc|EIir}YX$ zdZ_5xR}DwzD7NXSVHw_WfreD~1%bvBc1|YHfK3`&pb2amH7t3ixG*D~Nu7EH+D7fH zZeGwGL;Vjo8@)M$h8(Q(Z!H;6X3R=&$TTTE)jjIxqUafBdX(AX>G}y{*3!MAL-oh% z2#(e%m5h|PR2R_9@yvQKk{aS@Zb2tr8Alh5zO$TY*p4j%@w{Q>eACBMtEM5RdwM!& zFX)DqKBv!06}3$Fnn>yTWB+rZw-YWEq@BvqdkBpJjTh)yljXjXEUPi;&Dptgx&kHZ zju6?%Ob;&&WwSQ%JdzXGl?oE>7vF@ZFwF4OVc_f<$ZprQ9u0f2n;=&?j2P8|y-3H= zM{8HwpEiU?7=b?>nMObwFUtY7x4i zD2{442G)3!UMNV5G2goyX%9R++TmlDhL?EFD37$5n zt*uTnf!$i$D7jUi_4bv`W~oqaIGGyS+ey8^h6zv4&X4JZuzkgSP%1R`rbfEg+)olX zgL84571&%&wsEjsOh89L z!=tKDHxmnEoH@a5#A5$dr>+K1^@`2zYNv}Dt}5QGD|mT& zY;`)`r{Vqh0P*WH=cZNM*=NhGO5LE+eor~c16G2L4{7)?K0*#(W|?DanDZKjK*`56 zd>o$;(5U3RpIT0j$lb+9#i-3erWAZi!>92XQd2>M`mQLdd}4J0Yf+cSartObx-8{p z+sye1BzJ(J^4~;Gnw+Qsq#9ZAQwp(P)bKREM8L^wyg9kS>592fZY5LA_zGbVV$~lq zK2IBBxTr*ZUBfr)E8!Q`mTKf57ai#wG6^cGrr5%sbLqHb>VFL zo|;_W7wD?=w8*e2&!?&lL`~V81B}9iKYC9a>e{-awk)IH0DYI4`QgU;jLwQR;ieV83`PA`!w-B>zp3uMsNskH-XFQg@)@x# z>6|ci*OhJ@e-*f|E={WiJC45#Y=3!D7DsG*`iOUC(uF{1IPbXysE81Dmj!Pen=swBatU3@Emcs-5pK-0chL=dPkj^gN5L z%jghvd!?lIh@?bB(mgaakd*W#JxG}`^0p{RdzP^yRwt^{7u6n+g`$*K_hJ`~xR1>1 zcyHyxp^4oU`6*xilk}s3XMLgk?ij{;m(eTm6gqF>z@?k$ztnc{Iu7qCAydMG*Ky*7 zUgb@rAD1?+K$7ZqFb+G>OQkAC$v|qwoIaeyDO#Y+I*nJ;*oR1^A{p$AaOXALVRHVB z-Z=02q2VXFDey2xNuctR=c)|uQU-TEhp}Z$#L#&IkATJgx?eya^UVv=7MRyf&K_(- zH#+!jQ8lltVqO=r$Wc!RrJsi6GgP1T)#ouAsvi&4w}$bWi=jqkf)wB<$wustsA{dK zYV{RxT#{}+s_L|_%EUsb>R(*faqn`ir&ih1GkbeWuuE{%S}ft3THjp4Th;oG65g%W z_m=QMwSKgOPbx`!mk}5}(73I!3d=qw0yxM>9b%*oG7?9a&H=_P!>@;Nv(C85*p(F&MhhPkaVoP{?Ep>4>1BHK95styiEt%s{Am-&(1d@33MzN_Zxym};1V zKGNgsB~B=XP4W(<9EwO`TfIXm50|AdH9^1oaiu-}gg!mXpQ`4Y{QaC@|CRstYy1ws X_uu}2Kj9_(nN(_k`~`o*Kd|k;KUP%S literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service1/GrpMenuAccessServiceImpl.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service1/GrpMenuAccessServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..19aca4eb41aad6903bd1343132e8ff12e85f1652 GIT binary patch literal 1444 zcmbtUQBM;=5dQWkt&}RI3W$oLBDMwD5H-=1kTfJ1lcEGn-?w+$vUuHX_VytBD@`;8 zAN&FSDC69LRZESC54SfnyEF66e6#!Y+vhI;o`C1zF|7Kg%dHflmX5b|z$0l7lrLBL z3)|b0I&tF0%pt>2+!qIeheCJw>(;*X9m7oLSBD+hGm&z}9x*&^3?{Mt z-GMwm-D(WkHKmnXXLwe=P=rd8VRk3hPIYBdMXD9by4J=Cr;Ls$Y{S?Nk9t<=PTPvE zJT&$#Z%Lse-WGlWo{PQ%ugA_DDk}qmmf0|Y%wq(X3&`OL!$`T(90N6`fKg-_CK^i1 zS8=x`?HfUf8A=V~i?AuIO7v4>#_cIW^7u@Bf2Dyy6t|??Gr_hY#o=&@bZ(Za=+fXn{~wRWa3Np!fQ0orTp zwQ=0UTn@LW85fwA0&e3DL$0lKkk-HRPoRg*!C>(<34ns^=$+ff2>Uv$ReBK4V9{A9MD6;OzN%p$c|QY<;<@k}011)3dOW z%n-xywnsFb(m2AyPhXN6HIr@)y+jONa%D*JNY3FBS;t7rl9s3cIDMP6=g~i3{e(hw z=_4lIljdQP)+=e0Nn}tWzpJzY(Jebldc1^5oQKa!IG literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service1/MenuDetServiceImpl.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service1/MenuDetServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..8c537950749c9e68b87dd720a08b2fed90931d82 GIT binary patch literal 1944 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/logging/LogEntity.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/logging/LogEntity.class new file mode 100644 index 0000000000000000000000000000000000000000..fef58a9b23194825506d1105212628bfd34cb9a3 GIT binary patch literal 3811 zcma)8ZF3V<6n?hJW;f}Uwt*G`C@Pz7ILo33qWx?7S>1>aG} zarBFRa>gGZUvNf8Ei>vk=m(tf5AXx@XQ=qx-J7?jlFqc*bI*CsbI(2J+_U?~zd!y0 z;0Qj@(4yd>tg{?1SZ3a~+<4wuSjgE6@wBs$wB4M0T|-bo#}#wcjOR@n&dgo0vaW(q zsc02a^R%U_#ptDJueRz?dz}EKptbC%*$mTeV8lp_8U&b$?df?WnwgcP)=bGCK5v^-}O&Y8@SIEj-r^Rs3l zC)QFKbQg0>+Me_SYs3w720iJgWLsU#GAUy3{RRxQ`3GcunHiyd#6Y{y3Wl`Ej!^a+ z=oHEbmD7HTgnG!pR*#`rP0`lA^%?4)WmimF?xHh))-14aE^EyV=p;kzs`Zf(3a>CB zeq=t}i-%EAEu&y9t*a$7Prf=5zb!}lFGd*VQwE;KQBq`0J1NjYIbxs--4O(E+`tn! zDs;~n=)qngjT`9or4t4o^`)eN0qj+vIQ4xd_hJ`0?xJX~R#Bzi@`W%wZDkqpjIv!@ zeOr0unaWKn{mM(yaCRm&&7N0MOl-j_mh!yXS|#>SuZ&ddEr%8Al|ksel?`>*@r$ToPQmu-Jn*#> zrCfgAD(K*S?PPiV!P4jF>v#kvUNf+OLk!_q&d#}`LX|Uc1xr+!D=U^w&*9phDVMvZ z_3HK-(Xq_>5A}HQdwV#7aAh4&x%VEx!}^AYdi>)b*TMXd*2@7`t8C7p9+?QPuQ8SV zBK$WDTo%2pNMkFX(y)aFPJ%{52MwGCjfN-J z#4Fx}=)mTPI3b!4^=*!b1EvYl;O2;iageoNpX>z5TSRsT27kcLZz(lqTNFv;-_N#? z{N9OEt8zr3gC%$jhnmsv+bq4`eUjer=npriKd@PPzlSA#yGQ?cbNar`()%|-(sz3F zN1D?QZkFD^Pm+GCN6(j4WA2qZEL$5(bZ>CrE2zO+gTF%g5^CVq;2kK_Lj!Ag(pyqU zoF3v&A~^gzT4TYx=)4JII2K&Pu`*&bp%OBh2*p%^3Ef5XCfZ_ZEK~y;OK1d*CG?mk zK)M8JF}(&fkq8qsk%+{?0u+&;a4b>-noP73G?_4Btpa375T!CGc#B61G)#sM{UcX; z^&U=QitX8j-*Af4qJ?kq?~tM{z<2l8c$QL-|DWMG{;HV9CrDEYA&(`lrZ^!BuyC4^ zj?c+1i1 z$AZVbM%mplvdA{kI|gq;8(zcgWuYHU1cf0Mlonkyk8c`FsGf;^<2mUuwQQP5ggjHI zVq!P>UXuyUGqI7Rm*$yvZ(Q~nKTLVX06xZxxWF^2_y`v%wXje(@Dk4*zS1EmVx zz3R(jLN5C9gpf@@NVTB O=RK}(@I?H^dH+8WDR5i> literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/logging/LogExecutionTime.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/logging/LogExecutionTime.class new file mode 100644 index 0000000000000000000000000000000000000000..ffd84099b4bbacb94ce8128f075797e27e64b390 GIT binary patch literal 405 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/logging/NoLogging.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/logging/NoLogging.class new file mode 100644 index 0000000000000000000000000000000000000000..e8efc293cba94b79fe6e8564050008b0c8f1c2fa GIT binary patch literal 391 zcmaiwJxc>Y5Qg80CaY0nEJZ}INa;3qR)QxA`H=IpvDzHNv0-mlE_;FewG{pUf0Q^; zNSXtS`F`eQn6K~ECx9EAD6|OYc_?+o#(9p~g`%*&(Bm-t%M^AA{h3)9?Tid2(;4Sc zp+mUXc8&KTnrMU9cbk;ZeF=4y^MiFv=xsEw*NcSHwD!@K{ATBN>Ug_2m!pP_;+d%m zj<6o&gM%2Rr)&4o<_-l jK-dv$%TIw8)UV&ezQi-ByD~d?2QdzDgx#j!$*aGm)gDp^~{A+kQtjmx7cXH{uJJ@%uYjzXKzo9m^H ztQO#LHs>rTY!favUG1C?IvDSw!EZ|FPJLBod~YlhPX1`$tON+BN#%km_}MJX%<@KH zK{y{ZE=hHnbGRdPmfBV#e$~vymJ40MScKR}j375@m!a-0uLCF3;$i!Qd)dH&I pX`Bup;y!_}CDxG-11+ev-@&fLGpV~W+j|8u_Hls2RmC_$?;FC~cEfgM7=GMtb=qcZOUKuMv5tMT9A-^$K@kpEre%3gE z;J^>yM6}jD zf&5}KcVyi7eX5hbjh+7NIOZ5O)mVJ8X^t34bt+UO)6}TzKn8DLMJ6`xB}28-J!F{c z+hbiv6?GpCG#OgQ`lHMuN95-^A<@_JjA3zbBG0ABoQVWAdL9-Cn~@2QMTU);rb~}g zng*89;s}VVpo(N1ihl0W#|myU@KC!0InfL&o$gewm>If+BIq@77xy{tF)UoO;$syL z=r(7WV|dZI0(>(%(aQDy?_6ashdewY2dSpaY|QbPVQc1) zC?fm8z$zIX%EaV#*{tmsu{S8`O&=SmQG9M}Qif-PnMybP@g75CXtPA=S0-0%-!#0N z$Ava1BYI{)1s>*6qncCoq3pK5!VCQ1);BEuz?~|N^7>)0c3EE(&~;kZ3Lqz-M^A=h x33asSv`YIrnk1ErfCT88rHr7RQE&d~cRcw=m4BvY0rAW87PbrU4y_e*{sIc4#w-8; literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/logging1/SessionConverter.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/logging1/SessionConverter.class new file mode 100644 index 0000000000000000000000000000000000000000..67d616dd79e4725f6be52b82d76e211e4efd73d0 GIT binary patch literal 1152 zcmbtTS#Q%o5dJ1doum#8q2)fx(KbmdR!F>{luA`qL?pLC81)rxoW*tO+Nr&1`B~+K z>jCk^1HTC&X5$Dd4ynM)%+BmL-yA#p`Rn@+0PbViLXNQD#rq;rGK`cKVeI=scsGjupgcnLid15FvLn5(}+24Z*Q>#G~=ruyV(cB>v zHsZdjAdj+*BBls4P7tZ>(SA=Q&txxDgt`-ZGTf0#VC;#rpm&3mu;iSo);7WNvcd^# z4d)M4r^7&WoUGx^Llx3Ttj38i(xLIbNaVgcijzHY zqHH=8kMQ<1 zF5r@di-ZUNOk(3Qt`KalZ}Re;K9|dN{W6gft`RER-RJJ6>vp=^grYLjBeYIGX%6C@ zNx1j+e{@c$x|$bpOAaTCQrl8`H|{@?=7o4CIl*G%L=WBGKzYA?XbX#k#%Wij0tVYS zgBhNM8;=rCJqpbF&i(vx?wSGOCgbz`>A;eE#}rG8Ey0>t7h7*odc}tvDlE-4P{uS% zI|Hz;vPC8*qfGFCEkjy=i`v%8CsbD6;XL8Ee)X8W`7u)+1wPv>t0;|QYh%{=EONri z9Jr1f%vWH{JeQlpEsiUJzF@}U1-s2wkr;&9Iz#R-)RfRjLkLEb1B?}3&GuN^gX6C5ZBhR#d{Obi z_~e6slQGV=jiFIPLoS)!+5Kkr+u3jK$FDD60jyxz!2n^#j}L`bGK`cFVO*~VQGHqL zBucNx(UHMf*1QT+?6`8es?i#8bLys_0A?*Avk`AHDR^r z{fBbW48$|9bJdL_6`4xO+m}aDgfgm&s?l76N)F?=;GjTw9P7GBns)WImWS$XtPez@ z{FV;Pd*R1gv5Aa&XGFET%2lxb(>UBy+QkGe5^{BAy6c2T#gcdKw3T5@;);XIga_wN z;^Hc<5yqL-TFW%J3V|<85J!ZSzR2}PF{c~2<=`e^>1Wvwz$582`2E@ zgACy|W45+m?Nm2j5HiZX9HHF*E3*bAUzKpbkJ|TAWMz$14eNeWHoLmaZz|J>_nu3u z32p(_=v?s>?d{sW^8YC<2MdH^zv9e+u;^kGW2~WS+|s^!612Oer%4xW!7$C>6n8h+ za*Z&^)?rWZNIYiBpD^@+Cj-c_wc9`z!))CSfX5N`$R5Zj8yvG|lTLm{{sfl@n+xBO zTR6dW!f|2dn72~xbOoe&?sCEr{zh5%`F855PIxypC&Dc5aMCPe=5UvfDRSHp=qDx| t)=`PQ47WUxUt>s_p_WI9fdf2d%k$qb{}K1>$)_(u?b9rT|5xq3rQh65R5}0v literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/logging1/controller/AppUserLogController$1.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/logging1/controller/AppUserLogController$1.class new file mode 100644 index 0000000000000000000000000000000000000000..4ae41765c7cbcc085badfd0b12b8d1ac610ffa32 GIT binary patch literal 1089 zcmbVLTW=CU7(K(a;96GNqV-l(RKUcwNn=pc`UBGM>1D8OY%*BiYBlo=}T zf-tN~byDpbu1z(`jrCe~kVTH6)Cr_`c{J_|{f76$IA}HCVUO#;?h`O$gJyU#m)_bs z1?}z&Gg8A>T=TIoLK9oj7iRx&u9xeLS=lZ|Q#LF0^CmVI#jZNi1MwoT`d4RF`=Ko) zMY|&hp^B)GXKM1e&9E^~86DJcmrBWp!vjgTsu|MGi;a~j~4lCql6YJggL}cKDdl4 zG_TU1rFZh#CHN|?(P*hXnyp#3`3*~7Xpw^D%f;aHDV}V?!*Crp5?xz~uAJ31rN-(8 tb}6R4n4uEya|wfGx6xA7?Zu2XHsG5yrm#jy0W!FSJGe)yVxo_he*h=k45t79 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/logging1/controller/AppUserLogController$2.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/logging1/controller/AppUserLogController$2.class new file mode 100644 index 0000000000000000000000000000000000000000..6e827d14e26d716d109f9ce95edf58c8b76b27fe GIT binary patch literal 1089 zcmbVLTWb?R7(J6~6W3-<+i1NtYSbixtEGriDQKuDq*jc^mx@d_<7Vq-Cd^J-ee)+N zSOg#Z0sbiQo9(KB_9-komowjY=6sj=_4~(90Bg8eM26v>ug0DhJd(nAkqUxP26sJQ zNuyO13GF?aOkT%AcU92&2R2rV$T7IPe4l#}mw~rE*cHBED2_!O^FT0EyZ=vnMicEi zL&1!~xN(QB?ap$qWq26M&}=X~XwF8_>NDgzYA8xzIPIW_xiYe-I4Hqo$TnO3IaC>H zZ^9_5OLb818Lmw|&5iY1bdX1Zq0$Ydc)m9t2>pr=q9kbL^Qg~tX!j|Yvq3Z5pGj|H zm4bG+gc+&f3$FQC7@>)+90;@ZH`j~J)=Ake$5S>-&EqCE7v-MX)4q5TTK&r>Rr|Ir zBt^R^{Yb@B$RjmHTxD3BrHl?5xK5?y!{N51Th$5Dj*Cr@j~?~nenh=GGG^jErJ+Yz z2$fuKb(Idhcw$@ay-n1C(jSh@UW$04WGptN3C$-;sPjxpp*s2N76g`u*F{Ux;0%bK2APEu%wL+kxN>CMnl(vXK-W_M^ICW;ic+$cfp9B&W z5)XU;ABDK%8i>?9MV4ndbMKjRm-+Sk$4>woxK~Dw;c*~Gp5lHixb|WhhLH##d4UvK z$vEc9dp;h&Pq=E!aQh!vUoWG;;0*mE--~?_di%X04>Uu0#FNAiIYX`e|FokO(QY!7 z^dL&=59!+WJog%gXOW2X7Q@rVd=$+tLt$I?c?AsTZIrQKA&;t!3LJ)fquE_RjltcM z?t}t&59CDj-Q!3PT%$e(g+EIDmu(bLVyLzw!S^Pk9#`-DUYv$613&KiDl+>FEEocY zCvz#UuT%KWF4qIuf8#4spt&M8E983jZ`PL^%~^T3k|~>&##s}S6{{mBD&Q|8qknBy z-5;2eQnWiFh-E@0Jylc2EryMG3TmT{J5*G^-`^K>tDGV2tk@L!=uvTwV(Qv~)?@D# z4IRotB*kX4Emi0xW7Bj8CQ-*y9iE!K<;hrzgzpF)=}(kU`?U~UZO49+@B}XPM4nzp zjy@_Z;5ep12r*~{7UAb;^&+*PyF%k)>MNEvk7i?5Y<?mRZ ze*+Q~5(_?nk3!sW3`8QU$ntpR&Yd&oo^$>4*Y_U)T39V2!*FLHN3P;tD7bb*>HC53 zZ@U92w31=SmHQxyUdCK?q~HDo^ z7vYeFS^6h3^pKB0rDEEGA|_gbMe!3fdzfU;@W|NQm+2Y^+q6p>-L-IqgGaW52HyP@>` zK=`-Zz7$%?FyzX;A4M-?uG-RX{SDUEipVk8yWYO%hMw@PAZMFqvX&L{7^eFRT@ZPVCF64QDCUF1Hqr{4SQU@@OojQ zg6w-?*HeL6r@@?2f#J?n1=Q9^1$&F@f!u!PDR0O%SAK$dusV&e7HYUk%@dQ-)MyN^CvZ#H z9=gj8fTLe zM|9>rDmcO-#VkUnGdPVi^j)GiPo=)IDSQ^^Xf)6+eN9@v`4w}YX_A4#DtN~ zhv7Ufq`Wp#UIoKzjE&(9e59H_B?ybjx{x9mbW<&vY%XTBFa=+vF@t3i1<2tNuHYKY J$|*mZ{syQE4=Vrw literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/logging1/controller/AppUserLogController$6.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/logging1/controller/AppUserLogController$6.class new file mode 100644 index 0000000000000000000000000000000000000000..0a6362cf167c196732cbbfee60e3e7a21a08c940 GIT binary patch literal 1082 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/logging1/controller/AppUserLogController2.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/logging1/controller/AppUserLogController2.class new file mode 100644 index 0000000000000000000000000000000000000000..b1b5614417f3772ca7a369817d272a0e29570b12 GIT binary patch literal 4277 zcmcgv`Bxj)75<(Oj1Ut{l-LeV(kkA<5WrP1>gW7N`53)7{JM$dHxfdUN5}RrlO`9nzkbY!*&Y=%PBlNC* zdajzQreT{-!MK>YDzkw=8#M@|rd_XK_;&v2RfBQ`>5U3JI$L%Et0>PqtCnwNY&q^Y zZeRwM>-b86wAdQKY+yXHI&nR#plOO-G_7JoP@bMflb2RM1uOTm|fs z87wOs+koc+k2|@gw+d?^0@TrpA0@Rl@0mq;&GlA{j5HnJ$eY=~_0|ou=7q6f+GRU#)iTi^$UJl%AmKR1gF_yJ0 z#|lpI$ol#h1mcr!PA2gP_Gsu8*xh`9XDaUMcodHbbQWY#Iaq-MeRW}-v`yb1?Z5N< zJ0b8c9qs54*fDK6@0#XB7}s=n)ZU}S!!Ng>=>&eJlq!@q!!2CzmP;5_Um{8 zJC)gkIy#Z0i@~x*rX7z~b~nZ|-aRuiSax%lOhtu2dQ_J1rIR~jDIaq6aj4QOjLe#$ zfZ9y2c7Ve&veu)Vprv8yh%9Y|;60O=gUY<>cy9<*W>5%u=b6g1e2Jd(E+3Ge=Gt z8+nG)VT745dmEFp7WszKF&vo&QC3wM*diI>CbldkaU9QTI3X~2AN57Y2&g5cfGY}& z`#dbS?5RRE5)t!iRy3V**7c-exyF|4Xctc6IStIr1L|n+${ro>!MMPKOvx&(RGpS< ztj6iS{w4-C?x3wnOldeRus=-ryI|9C24@8{no1B@RowGi&V3w3m5T%hD!pEHAbKjy^dMTvBp#B4ExIbdWnb* zMh1R6N2(??TxOALUY;mhc20T;ypPnIbjx-w%@&o;le}q`ZVqgj&bwYX7)d8Fk405x zJ|M6&$}S7hJU*!7L-?>j2l>uo!6p{9wXTL%AXc$3qVxEO4pYT15xA9?Nep2z0V;ch zT5T&Ewo${)1~M4(1Ge*G5_v3ZU^jj;>S!a1iw+A{1!C?BizLtG9>w-gxViOhv^E?K zMaHkC_>9b1raCPhE=p{ZCDZd|ZIyj3GC+6NM>=~5G_Wo|({guXL9GX`ql{JZNp%A0 z1Qk9l^|g*e4f4Gg@Opcr8rE7QUae7_lO_r2C-6~L`Y^AZVCb~Pp1=zPZ%!IM)^HE2 z&?AA53+yt3z|1Ze>B?wGSXEO`?o}!O2_3H}KB?4EX{+8O@F@Yo*B(Bt<2Afa#x94} z1+GLK$kH8*y^knV-P&S}GWuB^pTisM(izf8;AFkY%I)&r^^Yd-1*V2_EuF2UaYizU z8O~fMzJ#x6__DyhmNW^wG;gP6U&mMRHO6XU{PdOCsTVF!&CRnkw`Rq*By%^9Z>R$C z&8Ch}b?Bay^e+_mdxk50@n<{;cLQQuKRuQk(rVd6TxT7VpC`eLu zXXVHnF|Y$ZFh`=Tu%A~iZppc@3##x7?1}t-IHXE%s~c=o>t@;pivN|55*j@g2|Y@5 z(sOe?GVyP$LJ0gk)) z?B@RtA3fagAX3#AO6VbOXrt)E*vZ*0&ieUOf1N4u4tD;}n;R-l= z0(&X0tZXS$D$a0!jL+o2E$kZ@{1Xmr>*x;AA0mE(SPzG~c2#!cN%T>Qa-kQ3P=Iz` zZ21rvz#xr0#c`aoA&M(lhePAay{GxVV+q2?5j?|p-7zj4Rf|53aZX@jmY#NSe0|`L zI52nx_dU1^vfc_!gt5s^Yit9op)_23w)d*bef8@VodP z$@P8iOe6kZ!fDqaG;C-%sbP`>HG8u+@o(BthtwGhL;MzpZTJCyWB6eRd>`jO;{3;4 o`AK*HJkkCw|T6Z#z2w2kh?js{jB1 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/logging1/entity/AppUserLog.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/logging1/entity/AppUserLog.class new file mode 100644 index 0000000000000000000000000000000000000000..3e786cf88f5a05dfbff13076fb17a7dcc78b00e4 GIT binary patch literal 6761 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 Pqxt@1G@whw&qV(L<3#mL literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/Controller/Rn_report_builder_Controller.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/Controller/Rn_report_builder_Controller.class new file mode 100644 index 0000000000000000000000000000000000000000..308af356e7f102614682dbca1f73c25c36f9817d GIT binary patch literal 37016 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%0D%n&nCdM5pXZ5G6XA`PN3i}q%pDdyx8n<()( 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�Awzo}J$m(=NjH`MAN zewPy*t=0u6s`bHIwIMhIzt)(eHj=vmZqiw_)3@CX!8UdT<33-oPHOka(ZNaT=VCm( zAk%~6*fZ}D;owO13#3(udBG~RAF)c&78L52IO6n*rGZz~uMqQzRe|T#lZaJ$?(klr zevO#lv&Z`(^&7+jo_*d6)l-NCJ&$+?)Nc{1_UxBes^6*KixHkD<;T?@;HMnvIUvtb zPa`(Udxqy(^^E$X7~$RId0IWI{v<|vFYzo?e^!4%?j4?q>N&(ldtXrd)n5@C<9%B_ zs{V#pjc=P;t^SVKSl`8Jk$N7nalSW=AF6*KHonSl+^1eZY(mv`<8<{RVns zRR0p8svC@Y^%D4-SarKGS-lLW^Q5X@$QRWs==qUVugk~PtB4)tA0ytc{*BmV|5M^Q z^%|&5_P;G2Rj-4}lz>-!N4)_mW?;0~quvCSse$Ptr`|%1+Q4I?S-p+Ji&23mahgka z+C~SSfggtMw2cXl77e&$hHIz6iDH_^@F<)U(w#uK#4Vooib)pTz0fAkLR4H#I^cN< zf}v|bxC4ZPTU-Wm{=e5NO8)Ob6XH!dQBHVWta?p&n`hQVst<_sAj#nqQRjNq`ChdS z{}=cR#Vd8R`Yo}&Bz6FQ=i7W|q&2PL(1WW@=+*1GpY~Dq!o%4JH3g}Oh6A{b_+RME zWn$XllNiaOBGkSX_fd)R(A{jq<73b9u|j!p qwZ=mZbiPaK33!5Zr_@vJfhX28lH;R1IPu5PmBdiE(le&A>i+-)*=e5u literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/Controller/servicereportcontroller.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/Controller/servicereportcontroller.class new file mode 100644 index 0000000000000000000000000000000000000000..12f846d8310cfc3493383be98195c2292c6a2e7f GIT binary patch literal 4238 zcmc&&d2<`(9e!R(v1EDUIHn{7Oc7VGoj4nULm&Q-#iH)z8qqr;W8+jdhSM0vB zV~%p)_kF`Ze1JC7F$HG$0L=6obvk|C-L)hu3RV9pp3&}m{*LE&u7COWk3Rz##kXlB z1a2>RtEMlliYt}r7tIOJRlZlLNZ$;kzvh&rFRPxfO7- zd`HjY#gtlhsM#H@BK&tlP=;(^t;yNYKmz5#sfJYwu99WxkF}DO#8$Pj!Prn+XqT0$ znzJ&f5`H-u-qma;FP3CAv`HG*2wWBNbv&~$UEdMto^#5srD{G^U-|#Yc4GJ>#k+Ni zq6F(!nE;p#cL>aU)tRnJKlCP^+p%UA`7;_ zHK7k&G^v_nhl-kuddO3qYZa3p_w0?aZtTZk8n9X0H4;oNP?oQOX77nej14Vj zaR-j3F)DCdOR~9=lN-1b$7t`eRFSEdT$(}PcY{Msp%XLE0^DujI0#)AO)Oo)JJL>) z%kIYdjcF417&xh!W|S8Z&f-3dr;%?8no7qo57@j5xY@NORKfM-@utI zMdqR`t+%=%@PL7CWV4vUxiroS>~3HmrvwAjn4vtRPtVZ)&jeQJ!7S#}m=ieM0%pwo z%DK?M0+;}IH*!(k?H2|+&Oe2rj*n^x{%GJ~t;P=8vS4@PQT!>5#{_O}S0KVHc7~~J zj+LYq7p>Y#8p|vr9g5d{-M|Viuz(dwQQ)3t507g5|4}T5g#YE9bD9_)6Njb>DN#IVLKL;m{OEv9IdTi}Hg&=l&tElZGx`U}BDo?DgBz z@BBt}dtcFaR;p#suBT-hthZLBSn_nuE$Kohu+a=moFm#u+_4vTY-)n=-EYPFM91pr z!np_|E1Oia$qPo82IXA!V@ z?}B6q^f&o?904?XB%Ixdl1!G zrH@Zd0Js6W`P4@>@qS#zH`^OrO(uIdPI0yu`#4JA+K};Hj;`bCK!EGNRv{HGxkq= zcvfq1@CDL*Kv`&Bjh$hIVDMIa)2+I&MB1U*#PvUs$65b|0`%-m$5+Odlp=*uP z))Q>oPlcF_Ms(|#jN(1KPa*XG0A3_I+7U-XbdtQ&iw~$ts*VSDxA54R(~ ua+JVFAsYM1`D4yM(dvd6e2UM)_viS6+`bIQU*T(>(GFf_NA*ot_kRGA!R{>p literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/entity/RnTableListDto.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/entity/RnTableListDto.class new file mode 100644 index 0000000000000000000000000000000000000000..20a7371083450c3bc7036a596680d7eb1dfb41b2 GIT binary patch literal 1071 zcma)4U279T6upy=rf!qArfq84+K(7(62X1YH>D7pR2H_eBul`jut|n=%4W9gPQ?5x z1x4_|AK;G?&+LX`+eKvI-np~q+&TBm{QCXlClS4(T8>hTsw01D2Hf=|S7tCYxl}^U z&8~FZp~r0zs+RI|lwq`f<$iQc&y^GN{qTy96r+?FGh!B_a(4#al=np_Kx<0rD_03$ zhKx$KCVn!nc@Ux3TB%Cmts`^Xmw2wb~uW zay~HHN$7v-d$XxT-;8vp91~bAMuyU}4&t3+#ER$asX)jH(1z1|YqtlT=6Rb@VZv49 z&VsR7t0!?Xr~a5fAV%AHTBnDM)@&hpXEq)3AfhuW+WyG(`feb!fW>A;T?*KCZ2!;A zKwBZaEoZBCUroJ_`#b0A(jQ;A0VY?t3`R?DgcRz8QMy*|8o(|{`^Y;8%Fyd#z zgGU>;AHxfMoyqRDqsIeH?FcCfdMto<`M ztx%o{SgwY&1{~~M;8u_qKZ=w=u|b=NTcDcA3_08QN~OdV~D`JeNfb7p@2`u>B6R%xq`5{#xxepL^+Q}MXagQCto;fgce z@@%VU8|4$f)JNTnlJA`lj$U!RV|~B)o|gopgj;6BOh%Jd9il2fa%*m}!VS;!g(F;UlG@~%Q<{l3m!OKTZrOx5hUlVeFeD+U&WGbAUhW_SG zHeWCc?-)%f;&1zvdeuYRZqKQ5+`!ynG!XDpKM=OO&486X*tZI{JRcPfE@L~DitE(u zNRSGHMrAk@f$JS3*l59cnakQnE@v8tcHY>_G8!s{sbbmC_I~c|UOu*^Vq0_M*rh2- z?}qESVv|udG+78l~tmbO@u+r8Dg^NjQu&QNzP7$ViVgO3O&Y zh}2+Wl)mt7=!%p))o4OW(if5j4@QHBemyAhSFWsnvfMkDY; z4`RO|%&}n<22{1(Fa`sP)NUAu0i|d+TtPzI1r&^~foBx`hi7)-yDVv040;=03sLD4tV_@6cU%N%1D;1m@m_tLHR#k$NyZ&7flQVFY;< z2^6K5tEiS4oc7?UV`6YsF)g$*Eh(9n)JzMlOv^~N(t#=JTg;RUneNejMV<7|FgDg{ zRmrqM58%~Yr^R#9Tbb6t^t1z0^kibDRLJyD$+X(aw4r2rtY%tmW!eIh(Sa#?tua$N yWO|}xT5Dz6Q8GPKGp)5U?Sjedz!ZIym}w$x&w4m+gdbLZ%jei{qMP`oFMb32)Jy^Z literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/entity/Rn_Rb_Date_String.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/entity/Rn_Rb_Date_String.class new file mode 100644 index 0000000000000000000000000000000000000000..0068fad8d30d5c95d746c183322515b2875c9b16 GIT binary patch literal 2040 zcma)+TXWM!6vxlzN`lC(xisM(C^!iqpn+1L2_`m-7{^IvB{O}}$o5VUV@p9=Gvqt< zp`9ty86Nlm{ZI`5vr*Ab6NfO`Qs-dTBm2DG$80^BW~M?3|f&?c2c)x zq(XIMyOHnK{ZgQ$UsFjK9gNbDps6>(yTEP*(Sf~Fe4>+GD*W!$*3W1r};$CvO(}tMlylt=6=xXNGP326`v1| zzNwE$-qE4fcS_}|=XiezS~B?Gid&s_1iwR3(3VJ}RP@TeQxY_m$ip~MI;AnUyu0Ii z`hKwyw|o^KD?ez3GWFTe=j;W|=m=S1vU0)m;?_>Z_lnOeWxrT)$~C`Q+%EeZN6-X2 z)0KPMkqL5|U}eql`(D`v^a3$zg8;WIU2}y{6H!_EIbH^ z?u?P3pDY@t5eU;0!l8o0Y*X7(y^fo^L4qnOOoSi{KHUFn&-QB;O|iWN`>z5)7odms z_3OoKVWqbl?C!2bGxP)O;qDvubA?`WCZ5j29(RqMKCozxolfUYkENKq%)-<~HvQG2 z1vXvEOigO2T`le;4f!JEZq4_+$~*j|%oASL51HrCF#fvJkj=PN-+i79(QeT#Zu=fx z1=}G05W_UU{ljS#rzPB-!OrC4lFpJv=kPg^(j@fIr(EwW_FOOx0V>`rn1ujU>lMsH zfSU9QendcI0t!LrL1AMT%((h5UHBUx19S;1LlDR=>s2ez6(mHsU#4qVPaFS3*Z+j@ zr11@-@eR5OEjHf3K7f5>_526AejIvS->#uzx3mXNg@Lm0{FT+RfZJh#12e4{nO3`* z?i!hHnVD9*nI0h6!#+$|-*ToY&2*dY80uvI1>wm$JvK7kqx;Z0U8l7VWOp-dg6UZw zrfg(#rWwujvyo}No2g`EdT3@^?`Cqq^r{b2Hmy0+oM!sP$n>b2scK|;Y-W1Y%~S)E f*M}*4C^^%DZqF0FKGhGFpXF~jZ=joarJG*>2EcRp literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/entity/Rn_Rb_Std_Param.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/entity/Rn_Rb_Std_Param.class new file mode 100644 index 0000000000000000000000000000000000000000..1b4489a0c51894fbd122e6935d8cab521eba0f9c GIT binary patch literal 2193 zcma)+Z*$v35XSfN$Ej0=rp9hbN}(-MeI8-RP|gx@8ca$xz0glDz{j7)lsj zNEFYHj^ApJo!Z9(ZQrQX_u7s2p`b-W{Ou?h_Cv&-3cbF>DO&BC+o%aD#&QtFN}s6c z)SLTGTd!a5MuDq59Ln_qUnVa5xqS8kvLmRZH%U{|Qn4Q%A$W^p7^Ooa_U^wp-I$?DPpkhi0roTW*+ zZqWiQ3c9rGhjMS&@5s2#giI54z2Lx$eV%8FQ|hIUI^5ZPr+NdwcqA3qpR0?l8%091 zSTs!qWXp z%po6GRHFA010nw>Mx{C$g2^k{_UB8*!N0Vq%)u*J@beae=HR(=T2J=)+M)`3%)#SK zNmJ1}sV^ITYtdCU zy4>u|EobYw+oqd9nZ#>Qpb4%lW;2*AV(kJ(2A!33kt~|S?|TVdf*nej*Wcq^zxtd;qUmFppWonIs)>?`l}7- z22M&?zeS(md*1mEy8SD}H=S3E&Y#g8Sh4da#tDpt3bv7H)f`_Jkvgynq!#K8|%(RhbIt0^?W0=y*n=xJ0 XE%R7^pXk?x-;gcLpQ6L?q-_5OE2VSP literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/entity/Rn_Rb_Where_Param.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/entity/Rn_Rb_Where_Param.class new file mode 100644 index 0000000000000000000000000000000000000000..b5abc1b0b6cef9539e343fce7974c48bf99c2a9c GIT binary patch literal 3093 zcma)-T~pge6o!w?r$He=0x3`$^3euJii?vbZJ;#9n4rYiuB_N;J5!BpZ$VU+7+Eyo zKlP%WX{Iy1=nv?R%Jkip47Rjxdn0-GJ?HGRXJ4)Ve*foRMD&PWk5NjYdrhyM@tNhg zEXeqc408iJIM3*=sW;5}G4q*Ov3#pNM#BnCpIARz8OL&uGUdhzYX%C9zY#HZOCd#5 zXhAgPS@tnH%iuxqs$%GVDHdcoB86iWN- z)bj(A?X_kr%i((Yau6A{|W%K@GrW;Y( z(+sU#QfR94#txdtX47*6-*Yfgt!qa9z|5CRhF&fz)K8iH56WzUa;i%qcA3QrT?nx) zOpI>Zt{v zwqc>Q;{UWOPGj#J)?hw$_-RGOu0VR}#e+-fqM6RliqVt|u)&979N<26?< z_B0?EJB-)k`8kzt@cij`J`STNK5`n*D5$i+GiG}-E{r&XoNAx*c#5Xd5>J^yO1~=E zW!#Cpz@bXZ(p|=bu|^Md=uBSV8rw6}4>`mT~ zCU0QHlt|veJB6Il^`&?8;Bx5+F`LDyJQNjpyEss|JpUD**Jqd=Q83_4n^LB1oawQY z>5-f%8)tfo#kK}8h2DsmrUldI^jOlTC%;1M?bD8w=}UTwDBk4DKHYyuPvT6wV9F0* z3T+uN%?hS1DbseGXB`MRcoatGdNe5GP z08{ueMoc#ZQ(nrn7iX$TnfB#OdvT`k!1Vn9rtlt!m=*-nb1Bn7oaqNC(+fG%L7b@p zrse>q@Cu5UmITvFDN`}d^rMuiBxfqdnNGm;(*UOM_KTR71yfndREaaWQYKx_REabB jVCoED3NPM>=_Z&`upWOJ;!lSEmAt~ZhT8%EEcJf?i@*!a literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/entity/Rn_rb_Column.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/entity/Rn_rb_Column.class new file mode 100644 index 0000000000000000000000000000000000000000..24effd96455b7a702349d891dbb45bdc49c70b62 GIT binary patch literal 2407 zcmai!ZFAE`5XbkDIEiC5Bq4z&=@XQK6CMOK1qx}vu@x$+*o-a0FfgN$OP)C$YsaN(5MoXE4+wJ;pJn+jT70WU!txP%V#-7vRv4;#R zt*TQqT2)4iiHqtv!krJ?7wyWfWjMmy7VdtqE;TRHh2BQ_kNsmVs;6weE%NwJW z7dzb4Xob$g5j&_HSIVP)V($_*s$}ICaemO~yoggmoWXjU*507ZLiVFZ>p~_H`e0zR zjA*iM!^bA{KWVfo^vlqX2pARMXLf|JqESIqssN#h7MwpRgy=jWF*I5dvF0JkQcat3 zt`+tpkMH^7Fc*jK>u*0-KP_xAH3mbcw#hjL~Jfg70bPKdJl< z#$o5O(s`4vLM5DcFiv2c-dulA<&&-FNTtuaFH-DNN*^Z z^xt6|X1c9px<$94I?Z(TJ?VL-J7BsyhABO_jA=zOeXnHN$}`?yH&Z<(W({JsHE4Hf6@NE}0%EnYQyx4JFf#nrS=F)B=+| zhAF*48Plp{dZ_I2NAF-9?x*KUrd@T9Kgu(`1kGc?<^wG+gmSia&%kR(fDHIQ$iTM-UM7)2${1587fvo@l literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/entity/Rn_rb_Tables.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/entity/Rn_rb_Tables.class new file mode 100644 index 0000000000000000000000000000000000000000..fce67daac9b28953cd4eb16c59c575ec4aabb1cf GIT binary patch literal 1688 zcmaizT~8B16o$`~@>L47wV;540!jg46;SXaBn7J3q!iLNO}uKh?W8Q(?vmZ9k^kg{ zCK3}b`~m(b<2$okEbXEDV5l>AbA}q+M{=Gd;oWI@k2Z8}tteyyrG|4Z#}~!)kLRjd()to0tF0N2l`T zh052Da)q*9{=jH9ME}sS+ASNpQQK&79Hg8*$mdE`{RrU&Hb zw(1w8l&J4UNw}ungjh_eR14YT9HXS4ZdjISctKUtPsrx;dbSkg4ZSsOQ|vPu$gEZX zbm%mAj0R{fPIu`ZqshE!^Fq5-`@`n$rE?V^o}(aCtfZ|JwvcA%wjf;b=yeXo+Jk&YZ@n;leY4YxH%B9lNB$YMc@sh3f#L@lLE!35Ot13Bdx6a?07H&V; zJ?ootOv9%pr~VAsHxn{a%1*>4iiK+Npc)KRnH~XV0KZ$5BGO#!hOwK)w-KxoHO6U- z;xvxe36Ca`2MdF|F|0u#i2%Im52O*mS^ERiN*+^$&-1;U zo^kIxYtB;DKI6JxU1gbL!@XqIf01Mov}Y% zx2oKmI3_CS)ab1o9eUZs2#zQ)%9eXU(4rhOkwaGwX-t?H#u3pSHL+WC3SKd>H&t?gFEmQIPTNwe>2eARW4H4kuhR zhZC+etkIE1;6!Y^TijSHy@E*Hm;y_Cf(*|yax|T?&`=Avk;ZXMxQ!*-E+&1yH zl%I)Pl*BEGqjwbK7QA)8Y+rO_`ubZ#Ix4~AAe$)7kCMuN&McphSqk4Aobb&l;k%ni zb|O+Rxyo?W&36y~i2p~fM|^~fIcn`cBUWP zDZLcBL9d7OhdR^ecS+hjvOYZP}pDhV=YCw&z~?oO$hH4j+w=eFsf_ zIQ|EeZ=t0hj{gp2ZenZ`FNI4AqgN;RD5-@%(Un)9pnn5qA+K&?ypAZ8G(rlcOkNXA z<_QKi(4E)vnHEs7q!Uyu8F^hmMhw#PMhj@NlqG1gl*?xYl#4;xe69{sAJXe|+c4Fl zXc~R;2*>%OLWb%AUgLnJcu#zV6V# zC>i*gEq0Pp7T@qjnWmJ(Df)2&y}I!?dUPoNU{FVze+I?9k(hmkSnuBBERZVqTYG`% z41dx{lS^eJ=4Z`@)`(eSq!RN1*`{zIv%#x^Tepm!@&$D|VYR-glj?L>Gb z<+Hg?iDEajI-rhGld2e&X@ND7TeUG*PlB8HZ4BJP71?IMBSm9>d!H>$CO#D%0N- GD*pj~LF5Vm literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/entity/Rn_report_builder.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/entity/Rn_report_builder.class new file mode 100644 index 0000000000000000000000000000000000000000..2e4daedb091a4c0a3e56e776b94ba074b15f8e39 GIT binary patch literal 10724 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 Bj7b0h literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/repository/Rn_column_Repository.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/repository/Rn_column_Repository.class new file mode 100644 index 0000000000000000000000000000000000000000..d856c2f768fe961fb524cd274c53469038d58c2d GIT binary patch literal 996 zcmbVL%Wl&^6upx+HGKdnkGkk~|%2t8n)h|{iMfpR2q1jWZ$doeK~V>7&74T8RSKh&{pA~F^>Q$aW{IpG$VW^Q_`fp zEIYf-S_a>aEUv{TIDM>tMQ6eJWz=fTI?7^#reb?@P{7Cz4s&2U-FVUj%4qT>6lR^&e3SFr|T>TFS U;&ZL)fBg@Sb_KFV&29kv2Kk&LF8}}l literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/repository/Rn_rb_adhoc_repository.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/repository/Rn_rb_adhoc_repository.class new file mode 100644 index 0000000000000000000000000000000000000000..ca828f107edf0ec2edf3e8e409d999850f7c1f65 GIT binary patch literal 450 zcmbV}!Ab)`42CmRyS6HL6(2!xJm_gf=tWQ#3S02HWVdmhb$4dSWR)I$Ee}3`4<$}} zu%-0mVUmyu`G3BA|9pM{z%`sCFi>z+xlS`-Ye_VhvGgt&alFvEEx0Uj{^F`)-A-U% z!D)kUs9UtPo|X+&lE6^GjpJGe&&Jlzj2*o@e${gn)Q!i@&5s`QKOF_*nd`Ztd()DF z^WCzSOGO2vnW-&G&vEi2+jfy=|8j7fZ9yO_MpgjwvY0FZq#IffR;VUU?@|S4c^_vx zdNRS3ElsR-f?}Kv3NCiK2|`Rx7M}E)K^o~P*o*HV-Ueco#5jOM7_IUcj$$6h|6_n( D8@!TI literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/repository/Rn_rb_date_param_repository.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/repository/Rn_rb_date_param_repository.class new file mode 100644 index 0000000000000000000000000000000000000000..9065888f488022a78e59cb48aeef0465f95309eb GIT binary patch literal 466 zcmbVJ!AitH49%>%byo$i-nqdn)-qw^Nh}vycA<9?cwtkYbCExyP~IV9o3DBi zY#TVN@da&zzOwg4O{GLIRlvZN?K^h9deR|!4g72s1Z~~nI{aOS=?|HKc@_pP>Bco= z;P?;j(~;J|EOV7d8Cbu+C7V*>{rhVHx%g5rYj4P5S3)C(~MS#)GKDa4wefdgGf`Zu6mr27btVX~@IIMF)R`%{2F DLNJns literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/repository/Rn_rb_where_param_repository.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/repository/Rn_rb_where_param_repository.class new file mode 100644 index 0000000000000000000000000000000000000000..ff7fa8a9452f9d4e1d471ac7a8cbee5c74ef1c35 GIT binary patch literal 887 zcma)4TTc@~6h6~ZDi^f~UU*x5@{%|)0UoT9fUdD-4Y(ze__CR856hJ8%sP9vq`!dw z#DhP8A7wnd7+ORK53{p#X6C!h`Obcy{sMqCSZzX0z(&swr9+h(BS{? z!0kIX#n>@~3A(D8ul~!M^J}4{afWh|w>BqLK%GaUd}mH`6Yjta%<-xQ^RU2ki+2}! ubvK85aQ_Fdm$UC#v2Y*`*<8PN(5BvuYhP^!Tj8 z$^&{>Ah{f(CI1@1uGC|k?y^rj;!U3wf*_Ps@-T=9xaCoGe2AIoBih6+^<$*9&?uIR zD;v&&vn9f=BQT9ko5{$N&gb=Fz3A}v(o2piPofyU%QVIq)`bwbbC}h8stny^P$Cfg7X~v;J zdtcuyVyogeX~a|sF70Pa@{yPIIExHtSL^z|@#D^I$6!U0prT zOy6~UaL4mh#FFM zXBdCO-C26`m_Rx?gcU?F)c0GVA9n*^=k$4!ra6oGgg!emMBlsrT9{O9v6bRIt9YeW z{#dDc)k3A{XvwAOTCH9wY?NwMud%XTtQ2y_r(rd3ZWNZwMLV~-^fHsQGfttp>R1;A zdf=d}3`R~T{Rzw%Q_Z3wHMTL*tq_mAJ&go1N%^HfvJMk}w}IYyww?smtTw$q%iHrt zneCk3O0}_E%ncs(y=^9#(+%6P&pbTws+cE?sXE+DBaB6ht#KdE+wJ4pZBF$;0^g6; z^xtjZxNbXon@mLfn;%u`#i4N{>{2XL-N03S+*}oTyb}nF;WL5#ZE~Ez6r6x@m_{oF zGjI~Wb2ytu>r@1%VfG8!XK*yF7M{fihtI)z9GSpt0o2uV;W&tkBSBn(%NWtHxH8D% zs)oQo*WfyGH(oaey>6O7mf0=M%z@kc;_eJCxO>3tQtCk5y@TKTTIX~M5Dgw^#0+GS d=s=q04~1Sp=P_8scM2X_wvY6ZNrcV;`~gQpKB)iz literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/repository/Rn_tables_Repository.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/repository/Rn_tables_Repository.class new file mode 100644 index 0000000000000000000000000000000000000000..cd7a1aa6c63e6918b5b6bcf7b88c211d45db1439 GIT binary patch literal 857 zcma)4TTc@~6h6~ZDi^f~sD0b`%wZ0umhbl2h()IW=wV5XCCNeY; zsa}Fv6kZnVFe9KbRAVI*Wn#J48)Bd8Fe_lwx>#nZ(Yz2RLK|`8KAFdaj zQ?%YOPBYB;WQ5;zrrF<)F_si*Ycc^cxT}q?Il2j>)y68xS<&l`ANcRP-b?S$*^%c= z#H<$$B=7qtKlHuO-`@+nQTxO8TRjl4z;5&yOQb4?A_P3Uu5Dixtt52UM6Ta1aw@;$ zLZB=WSZ1XlYBu` n-Y;==vH0;3FD@^`3Rh}8lKiT|DnBdm_yXif2{Ow!p91^=uM!9E literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/response/MasterResponse.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/response/MasterResponse.class new file mode 100644 index 0000000000000000000000000000000000000000..f76b7ac169ffb598cd39cbe9a1dc5ac53528e9ef GIT binary patch literal 2083 zcmah}U31$+6g_K8vE#U{>(nWxfzmcj{gG6BgpbxqXll}8u+xw*nW0Z8_F}7*B_qpW z`Y(9q2hf*1lo?28V1_9#FvD*G%2`=<94CPpS=zmO@7Z(Dz1M&K^YgC&marW|L}0$| zwhd33wj+JR+vT#`ah>id<`ICS1Ln{wbPpj*CdcLh?_N9LYs z^nA-Us#e!82~2KVO~>?mo)nlHJ6`VZZPRHQ+rDQx&C)7EvRggJx7u>Y>RP+DTyq@P zH+_pF1@cwPHM-xJ&8GAW^YFx2>sU3nA?;1i?MTmmLY%lKzwTL{Y($y9Aj>_|?vVy~ z)Rcau&pDmTkI`c2{4wJxTrY)OE6&~tY|~ZSZST5|jr-D(p6Sa5v9&UJPLjk-5;`UX z&Q&c(ZuHu_()-+G!UE~4TQ}_;)3ek*G-`g!q5`?wT1nt4ZX}UIUSML`ax8z9u3-uzNTvKvg7OxVIER!9T1?_532T+mkCGiHX2t;#=T@<%eBJYzE zd(^b4+L1&CoF1w~R+3nSDrenv)|GbxcW^g`H4faNiv5rzZYx*eswNsg=ZX2fH)dzFB`ME+E(|d?))3$l_J*1TJ9~S_t^sF~BMj zA_}2U{0W&KxQZS_oauXni0U?#jKJ%|+mt0v%Vk=0>K5e2eqi8u24!BL$Yy`R)i2U> z&oN&(0H1~Qn+JIN0Pp@+R@q@zY_1c)59N7|4^%S$FAw{PjK*0$W2DabaD9W`-BDrUclgAI(w8Z{rsnB{ zq;3&k)mm5CC|aZH^l9}=tq*DGB%^4Bgz>% literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/response/Rn_adhocParamResponse.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/response/Rn_adhocParamResponse.class new file mode 100644 index 0000000000000000000000000000000000000000..6baccac782b1e8ff208038ec85657c9c4d929783 GIT binary patch literal 2119 zcma)7U2hvj6g^|_#!j+rUAIng8z^l9#CFos_;6 z2jySz%nzV1c_d?-*0VEr=AL`*nS0lN{`1o>0G9As0x^Nb zy4N;+X*sS8Ouxoyx8u28X>Pd>tVYYLZ(6?9-ioXVXacE+)~;nbmfJM%)gH=vAfVfU zY)a>jhR|lczwgVtZ!yYpdCmzG)rqm}?!o>NTXZ>3bdN2YbXx`tqxu?aM}- z3JB8PwVWP#fm=-(l>14f=W`=G>3aQ`@ny+hh{%`S-7)mj6~}AWyhr9;=}O-UWP`!9 z5{XZe)rXUFnwwT_Hh(6T9sIV$UmFI5TC9cF)K zel+>qj=+sk>&s=YTxXtVy4M-7O;u&k@)}`*$w2yKo(#P0z_;C|z}bP|VWIV{#RRSh zoI9+)zWH{~b{f)8;the>v2{Bi*5}F;F5@i&^T-KIEZeRftO{hJ)Q-lU5;rVA~vZ>UTjgs+uD>5wT(t?+A#TLV8ajEsX#~+5I$oHk zpI7YSxTzAkPEM?8%b|GBB{JZ2UnR0)U=`|`>z2E&PAmTp4ct;j;i+mm)HL#BcX&Zd z`T|p`s^+2&pAL#oZ~crtibRi7rlZ zm)%2qJUVw8X`Y*)^$g!<`7=4^Cjff>2V|ab62m!;>Ig86S2!B|1IXe$R{|F>3oQbC z^%!7<2r-3_FZ_ti_ngI#Aj~enn8&H6xr<0 zxco(W?kV2PAArw7`t1X}dw^>%$|^g|iq$j*{7{~!xS^8ye|cC|WHie12|acCmkRms zplkbu-ypt)9^Wtg3Q=7k-{o+rxNj_QxTP)rf$6OFJ5E1_v6$5k@IiP&+b7IXO^xuD zmiq8RO-oqAZ3>fN$CY?rEzi^Vp@;7D@i1SGfrC+1; znrfgiN!=vAx@%o!qi7vfr%$VY)%uW@PBMyCbg`xIV%Z{e9hK}G+BAY*Ocj^4l~9=3 zRIx=_lBvRDBo+@){&Hn@yd3$yYZN!mlKm7F#?>iBm9rQ-C4-Gn4kf}B#GbKEHHshv U1>ox$$HR4u|Cj>z!X!8U1%h{~p#T5? literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/response/Rn_columnDTO.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/response/Rn_columnDTO.class new file mode 100644 index 0000000000000000000000000000000000000000..20adbc5e0ac4737e3b7268b475b0ebaa18bcfc7f GIT binary patch literal 1916 zcma)6U2hvz5Ixu4%{uNjB&IQh23lwm{1MlDw3Nn4=~r3|aS|m}BzU1~`zqen-VK{| ze@tI^qc3>?iMkR<6}(W1-vljZc2`N8SZQT@@1617bI+Wa*?*q@{uICktXfDZ%(VPo zHPBAi(_uAea=W|Zd%L>2;r-C^yZxSb^Uj(DLt*@$^T4Tg9dEn3*1V@%p+d@SE2z4H zvFh}+LT=?CW-|<2Z@Z>oZtJklxOAb&$kQ8rFLZml?mcjK-DX!`^E^LvLYJ2cK-cdz z{rlD1+S7p(>NWw48-81lLg6hNCPuifxSn3^_nJDm;}Am5`7NirE-~j; z-XuldW07c_$EiZ`XePqo9UB%h%xO2y$tcu|Ta>1u!;arxcLK@~>VUUejEKP|3rDf! z(1`xA?{pdZNb0)qQ!a6#wfC~o3(KYlUbzkv5og7Q2DPG zAweTyKkVp0VN^7kiHT(+Ut*lx44u~fhO?81m+3gW9T8sOKe2HhS)#0O)EmpB&MxV9 z*#Ks8IurVFy)Aq}l@52o^}gF}>mY+KsnyGkRdCx&SzN?|jT)v2yy$vvctu=GHm=|+ zx}2RI?XiERsr3;h6XaS3*QojYS;;IyydlSLDpZE4e+w(_I6!{)zw7`=oo*yZlevGkSha%um9-~e626N!NWBOS5@?+%R6kcT9hqoelcKs0er(|Z5#d^8)GfZQz{1?#Z!2+)` z%d!&@egjj8ALCR*A|VX>G4`eq`JEl zX(T2U%8ZvE!Kw^Uy}L9$T$xe~k}ybPj!H;}n3%z5+@+#6{yb7f^f-sq3+8K352Yvt zmlu2<*eNB0!nqv6c}?O8GW!QEewVxS1eb;L0E@Y+16&v8Tyo2N3~>9n*_ciEDjE18 V7adIN6MQqgcMnhN3VEf__#d4dE>8de literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/response/Rn_columnResponse.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/response/Rn_columnResponse.class new file mode 100644 index 0000000000000000000000000000000000000000..e5315c8b687a234b699291f2af72f39be24f7529 GIT binary patch literal 2106 zcma)7-*XyO6#g#k20}s1W8!4SzSIToz_!aSE=!#J z7e4z3*q1!i8KpBi^@{?NJ66*%{hlWUu8$qBRK_Ap$G7}_71yiXF9o5CYXr$|_juBlyH?k# z*>c@+T;KF9k|g_z{@%w|)1hIx2mtaq%c+mQB_=XRv$?-M8P$*+5sCmT_wFUWh( zw0k559yO(39%PZ8&y5kK>y2Z^mu7!4WM6jnPT-%e*lxS#J~Zw~M|!3&8;quv$b6Et zW|Gh`A#l24IdZetu1W6;lM)D|D{kGicTLYy`_QQQEsL5I#)W-xNtG(yQR-*s$1~6E z3M`LXUov&&JM%ov{mzhTsw(}K+t@Navn_q;k#^j7cYM!sngZvBatD1juoh#uDscX= z{RZY+JTS_go@FPWMzIt4XXu)wpgt8|t?5|0s!@$|zjbMu&Qao}3HUZ%I!e zq1tIK9PX*WINVL|_-6fK)$D|w7jK!}mg?GoW?6;#G>JR-glJpa6+7t!@I!f?;D$=(|K(vzkO@a$;GVJ$A`fU?SL>xHJuKsv^0Pp zX(@wMKDJ-Kc+2;Ja27qrQtTQGMI?P|H3IY%ioxZA<9pDB>g(2*VOQw zkkm5qRjqZEjiPl_odK;usr3;pon#cPu&|||upAG%j!X6}Z5lx@rHU)sY9P#Ps@S3| z@l@dvVvBv0zgnF=S&sa`HH;f&%YKFm6%2kAulEG#mhZ5l`BG1^T8buI-0`T>W Q&%=F$|C0iDgCw{91xFpHAOHXW literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/response/Rn_dateParamResponse.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/response/Rn_dateParamResponse.class new file mode 100644 index 0000000000000000000000000000000000000000..b4cbcd08ac9549a5d4f92b66c880f2596129036b GIT binary patch literal 2133 zcmb7FZF3q`6n-x329l7L(vpge*0xatBw1hLOG^?>X5!*f04|XEdGB8K-{H8Gn;npSx^;60Fl1*uD4Md!F;0=bQt7{`2#%09NpM3=x6F zn%gowY1)qT4X?^&r|mi&Y3w-rb<>yIrf0TxLSqb?K=QtMU>dgRG>p5|`?BT>=$0>A z9Uhf~v#xL1M%n841%b(3tKpb_*OLN;k>l0!NO0-+mVc;1?^O41G5Y?l?^#Zxuui1R zPM60mxo35(sx3Dh$MsF$B3XfK*>a7}H)f+DJ;NNF7#nS?;?||T?YV8~`G>@bd-Ch9 z<;i-KG6<4CFzqhcfkzGLmwKtB7P2F3>AH5x_+lws3R5UK2V;^*m2J0Gbsrdaq$53M zUuQ_INcxlHHk*Ks34ya^%aL2%R#kdmnAAZaRd#Epy=Qus+J{EXZ(0;)c~s)()>o<1 z=}T~aVN`+ap1}I3^+hC50JG21J#3#)PFAGfbn8LKNnd)TANSo}2MAm^(LU(BurFe` zCU9}kkUjIwu4UJy7su-Ym&Wz+LeQ^kQ@DyZ6Iei2U}DvBEPq`f9p*P2Cc8Jq3giMyI(31iVW-|y6vF-)!U=g5;&@v?WEIl83Tb5oAWZJR0hH(a3A~0Y z0?`G`?wLeRINei;tR=7xRqLARY^vMJ|KkL1D5G#yM-3zmJvk?? z-;|!flGj*EeeqDrP%u!g$l{G*tr!G)pSXrwQD_Cq&!cDOENZu0+ag z%C61dk%<$asa?10)#PnU^>=1m36~W^TwylB7$c&lgU=X;I)XSR`A+h5io5B1NMNRe zGd$%0(H;%&okNQECTKm+_XU0puK8O4J@+HhkGP27BA@CCi1JeK3@#vpm$_q$VGddd z_{u53G7%yQA(#IN=^wa?ou%SZIo>0iv} zzK5h}hCGN?)zbjh7?Wa}DE0*|MLZ%(yzGsBjhGq@=MG$e~2IhR9R)sYVfm Upa6V5<#Vu)@UK(gZjj{mzY#mIkpKVy literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/response/Rn_report_builder_response.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/response/Rn_report_builder_response.class new file mode 100644 index 0000000000000000000000000000000000000000..5cfaf6b353895ac4efa59be19a1dfef95729fc4e GIT binary patch literal 2200 zcmb7E-*XyO7(Ewu10kfPw4`FAF>R^=lCIYHqa}$=F|8=1F>x|uU+Mx^*cNtiS>ois z@Yz4WzT~0KD4o$6M_+Wtze%m+s-L8WUoYtrSkzZ8KcaCJ2AOS^WIxNX+uPOw!# zw>;VE2qa1m&3)78dREgYSsgDgFu7~hZPV+zQXoIJyjmK?CogGxmUnQRReqgF>76c@ zTXN6pSe2&Sux-aPJ&QU7G9}9~I$xXhx^xZmXvNrQTVRPU> zh3SwW`F*q5B|C7bF1=!3N^&tX#+IpT$AT{=;Zh)>Xz!mOB3WuWt%~!=xGQbxnx3rj zNUcEnljJrNhmHw>vn9)xTisSgx}TZ!K_FRjs%CS~bS*Uxf|}Q`Xw1sE#e@1DH+fik zA2NFa>*LWEF+u^%JWu+dJs_SaORwS7woTV;Nl&^I5%rv1&$aBjz=c5t znxd@2XC*s%2Z=x0afbta|yNmqu^`cKImY5)c`M^tM7;83PC; zo(`Zg-;Lun%nO7U6}vEQC?W5W6Fc2((!uA13^?6aLe}C~hpKqhv^Ul67;fQq1RK1~ zM~?PW;<%}{3P<(a_#zi{$7@JeAf|e6A^0Xt`N6?#de<|nkIH5{XwzuJ>@-x1`{ax2 z@KPK_d`z_Monm>D#}z4rZQE^n91MVByH3}w$~%_20duF9_nP8~c`Eg5@lqL z5uG0T+SnUR99K}_0g7PyXI%a~x$qRPXM5mpDfwm(*L!&9zf`4%s@P~JfFIfO6z?lB z|8Ea_i;TuuK4GTL{6a4K9dzw5_Z!5w(8GthUm?m%glv!rIkMX(9;46_>jh=co{cYxeylU<{ieu$a2?Rjx>BktQ009 z(Z6tp&GI*9BDlq0bZC8n)@$l+ognH4@l~yLrAE;jb*E3OUuu0wOD7pcD=6%yUs&D~ zrjA?o4PzQX=MwoihCS| lcvDi?_U%w6TtVm=`&6R|LeK!do>B49JS5ab`P3J=^Dhg0&Cvh= literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/response/Rn_stdParamResponse.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/response/Rn_stdParamResponse.class new file mode 100644 index 0000000000000000000000000000000000000000..87f5bba7613133c995d2c8d9c5423fe244a51c2b GIT binary patch literal 2123 zcmb7FZF3q`6n-u&fh60O(vp@oTH8hqkaT^CFDXeh#k8W3#>B~t{Sp_r1KYwbE|)m@ z7k>5!*f04|XEdGB8Are9On+0gK6lxWlwj2v*uD4Md(L^D=bQsi{`%<`01Nmmj)*|M z=Cv(f+AUWq%dc|T?RaiiTAS`pSJgLc-)?V)wm1xd zJSqogJ>|5lveQ)sf$=S;;o7R_OM%6q-wCo8Rv0I<+2dhb zZaZD4+LEiT>nU3~L@JOiJD%13+HN$YZ`nsD)@sM8cy-y@@V$=o)gI#{eEC(+@ntNyN~@*m4)~v& z9j2e%7FZg#{&)V`ed>9vd!0kP$%<4>uit7?NuSsg%G*-D<2D4&AIcuIT;E!VUDsX8;|IP+|x;%kvc-_P-vI1jEj_arufpkdjc$Vz;1l7-*ID@2i znm2I+7M<))N4j-NeB7x&4TZ3Cj>QRK6%u$;KxB2Kw{@h2p#UMbe-5BM-!<_Ht_nnF zHM%GkHIes-iG6LiDBW{J4l&)+M3zmgKo`1ZyKDNk_W#htO>GpO?xrI}Lr+eKr<&3i zn9yA{6HfYMU_9KN+ERAyLB;Nb4VY-!-KK8d0A@+2`NYH>e9UMYo2AMc)0GIB4cTk) z_halZ(8QM4^K0_9qkH?}hzj1&0CAOMg84;64+fucPICkajPsr3=>&I^_h8~w7pHm3 z*`Yle-aCsF?~T!Vj_>pQT3qu-0I}Q;NI&8tf(v}=E5IZ!@@e)jAcITX30%fBj4PGq=6uFDzz4w%W1nG;Yib5n zTIh!#Xj;T7Zc&&t=dH-fMKD7(KcX#)9B-|0W#Berr7;#yJjH1?%b%EvBg#)=ApI(( zH}v?7AhpQ&y4EqxM#DO;P9Ijk)Ug4q7{O>*VPT6wVL2dl9hU4H+6)H0k}ND4%YiV{ z$wHH|B$D}uh|eFO^yTvOXgP9y*D!CCE&D0T%p0Q=6|N$jlr+`@IkX7Z5qZWwH7J4* U6o9X1d>-v1{Ld7)8<5=i8_$=lsQ>@~ literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/response/Rn_tableResponse.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/response/Rn_tableResponse.class new file mode 100644 index 0000000000000000000000000000000000000000..773ea08ce659a90393b9d620d30203844e1bb956 GIT binary patch literal 2102 zcma)7U2hvj6g^|FV<*|Ru3M*=21?ri{z$rfgwoVWAT?<**l9>mB>Ga;_Q>9Ly=&I% zp!^G-`2qAL4@H7h0tvwjNc<+CoLR4(bdy3Qdw1r}+;h)8_g?$Ye}4J}z#=|NA|{Y; zx?RJQrtL`I@ETn9d#=-$#+Gy6HygIx3JpnU0_g|lu4&k&(>Crl9>}IIkg$B&?enM> zoDF=-HfmPiFAGd=TW!bm2c8tT9ywmFMFLC5xBNX7)@$7VTt)7eR|%5a8t|kmcdWie z6yN4F`8B(^GVX0 z(UHJ}z?qum$c;g_A-zBsflSS9n)Z(ASxTqSsQDd>niQkLKDVMul>RvLbNOiEg&l#V zsPzRiSH3gPvfS&9n5OH}@3^f^(=)r$mmXQCe0SUTET=7Sex!ELWJfr(|yvHVqmY?#*35QUv7ieA!j25IHApyL`0 zI+?wmbXo!nN1cZ4Uk;~QijGyN5;sj}UENmxAL_WNjKWn-bSP)&$*FMtj`RekR5Q(m zqdgrMN4rzozS(?OH+x~^(QyYK6K!*=T3=_lDk-xM2R45&CPqM0 z+wQ0GPV;n%yXkw-ajK8gJmtL59uM!G zMTYk#Xg$aGd43J9IrT^se?ayz7cpGmQ(Xb3@e-f<@B(spnLB}tn1vPszH$t(MueC` zD3*Ri_Is}4#}H?RH$p@eO(i4n>NuLRq-eQBOM=P;xv}A*nR|ja ziU;6lKJ(TA-Z{W~|CLp4oE01C1n@(7p5TT`=KtkkN0CvKUplejJZ)np9dMRCA)>Z;xX4B;kWl5z= zkC0qAK=sR&*^}ic4qd~zaklKIs4;GWQq;MMaZ<9_2;@*ATt)0D`&6R{LQnv{p7MFP NkMU1Z;BJuQ=D&E6q{ILK literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/response/Rn_whereParamResponse.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/response/Rn_whereParamResponse.class new file mode 100644 index 0000000000000000000000000000000000000000..a3b54d222f7e3318a8f224f0e308d34d96b03b8e GIT binary patch literal 2137 zcmb7FZF3q`6n-x329l7L(vnIWt!<+Q2wh*|OG^?>F|8=1F>&J9FL8l8utR%neu6G+}O_e{e!ou+Z8c2CxQ0p0Rt zyUU|WaMtrJ+o)JwzbG)dZ8aU!?|D+7IC8vP8Hp|(-}3iW?5*1Fmn!^j5Wl!eq|8>2 z$8EV|b*-8$*Br<7P2VD0fo#QcjqU@p*_57P9-SC#9jod#q`m369qIY|#EEDpxDO?OwC_8&&l1No-w_S7Z8@Ht+J=2#B zhSW-=KS^%03Fw#*I9;(ExzTIar1ynM9RyMpw{F@yre~>rXw>|cMPZCliJxC!B~N## z!P$jT39>r^tE1Kz(Le#rKFfE%bI3Vam43@@1SOZg^vFN%yW75JIZc6chvEmVH?S6C zxGHe|s3QmFn?1{JNH31p1m?ze@C-%2#Q@m#qIplO#C9;yhDpaxSrn9bYEB}uYxS@=~RXug2Y3RvG zaedCDz?AB(`Ecf^1LNUtX4^OG_p4?nY{PiV?6y=32Q8_;3DRr zg@7-g0IU!pq7ZWVpOF56tLO>D*};tvQAJb92)r_krYvzz92U?03Am&C^3K{ znE3@)zDmtM#_PF0_*qQ7*~i;`y!*VYGQ+IcO=G~1Tf|CZA{PG(r`RliV>X5;Kk=dT zYm{D712iV7>%>>J)>Sr&)^T+Pv<9WthqQE(QMAIsmV&}^MCdvy*|)T51ih3jE^8}+ zFmuUbi?YO%`G<%V`Y3~Al%mR2gp-oSMj(e0;VL3e*{2#s W5P|~m^_0(}eT4s>0(XKWH~$3!v$Adg literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/service/Rn_rb_adhoc_param_service.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/service/Rn_rb_adhoc_param_service.class new file mode 100644 index 0000000000000000000000000000000000000000..976df299b757e30aa7dd0be599dd9f074d8a4193 GIT binary patch literal 379 zcma)2F-`+95F8&#E(DNx0RAjzdlA(k zB&yZUXm)4j^XvTsz%9;76bd)K-s?;@CSskPZYX!blU^p1ow4g}?aiyrc5i-|5+jB4 zo$aiSHf{8?+mUC5QDZw&xV)+kT+1QqDm1*94*`YaRoEoUZ5BZs3ht_bB}yFlt#`C^ z=An1Axc_zae=2#MlVR&3HIm|qcw4Vu`gp{Y1)8nuHhX#uQLJ73S;BRnaiXAbBwYeZ YIvHbv0;OyPrkKeb%e$V$$pJk522Lk%EdT%j literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/service/Rn_rb_adhoc_param_serviceImpl.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/service/Rn_rb_adhoc_param_serviceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..3ba1139bd4f5e49e64034a74cac06d874ef26603 GIT binary patch literal 1224 zcmb7DYflqF6g|@xYH1PV3IZ^J_sxgy2|p8hYNK+)2d>KcJ(jUlu* zr`j2NaxS1Vb4}p-PA_q~qxN*F!&udm#5n1+Nm7BA4P)Cu+O;}q?=uN?Z0v_1R5D3} zeHmrM@)Qu%d(Iqdt6HQT-_VJ6n*#aj>YhO1m1(I7dY_-sXQY0QnitlyXSNqG<51}tHTC?(yneN()BC> z@i1UxI0D70xvZ``VYBWVUE3UCy%?$lwxNO|E|qZ;w~M$nItXVy`%5b;xP!Z#2A^;} zjs;c*DP$wI<&^bh9f^=NDsh0Ezht4ON6S+7jIFF6e6Vo7ODEmmoq9fmyjbe=xUJlQ zX}$BGL@`SGnAkNv8>!dYkHykIztR)mR)Ojt2Q?*~GLA6@yZwJz!#&nI&o#!C^ChP) z@k5VOPf+KmIiQr2JO$K(dTi|rE`Q3drz!no@X?h_W)CofS)K&uFi!^y+~;sLBT2c- z^E|os8P^_t#f==cAAh7F4^K9O0_7~_93z;e_xX%?u@4#$6OP3!`ZDR3xXa-_aSPP_ byJb4>-!0SjfYvcVh>v3>lMhc5tpdLQ*8EF> literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/service/Rn_rb_column_service.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/service/Rn_rb_column_service.class new file mode 100644 index 0000000000000000000000000000000000000000..0c829a6e54b145f385b886c24f0e81a67266a284 GIT binary patch literal 506 zcma)3Jx{|h6g-Evf$~+v#L85Jgcr6T77!9rP!MI0ob(Y~IS#U&Nc=ShegHoT;iQEj z?Z9NcyZ8L=?tOiKd;++{QHX%yJg-V_NGMH?n~YmBjm(KZ>C|LtUa7j&=?V-nV3;gK zBe)W};7PWi+%XKSXo%r-8h2dnq~fu(E;{Q23_CMfXyIz(2XuenD(- zMAvKI{&UPPH#&79Q)Io52Xe2~{81QDk|WbX1-Vvt^0Hjzq2uZO1{2Xbx~9R9eXF$X zl3d1k`!17p*N>5R literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/service/Rn_rb_column_serviceImpl.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/service/Rn_rb_column_serviceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..ca9e706f2bfc5124541898a3010b4c817056fcc1 GIT binary patch literal 1524 zcmb7ET~8B16g{&o)P5icQdB?@5eh{Xj4>u9Bm`qZQp5n^m2BIg3~qOu*(rp7rHP5b z2Y-M+%6Mj5YiJ?D!_J+#Gxyvx=ib?0zkmD$@CL6_a0J|H*l@M<{6HF4SKLVIGgX!D zUT~xQ%DMooO)-T>w7`n-L0I;s!3r`pm+x;fs|$j*$f3%%RPbC z9Vrv)3rnNJVXx~f2|V6w1x7XGp^8++mzzNl8qcUOhy>o1LtS^HrdC1ySbGh59_r6- zMS4Nx9(&ao*6Rkin=KQbD=lk;9b8v|G8+Pk!s4Moax1LK3=$a5A&Z>Aa9IWNW2;e- z`oLpefzfhU_54FmE4%JEljcN`$Xf5c{--S&BqQ&Pu(O47EOE;y-z}@iloop(0_lBK z4?NS-3}%wLllmzeRf66M4&ZAXM2k@EsMG|wo1FlZDHveD{Nm=vQoddFRzwSlZ_ld!FKPzKiFldtkO$46tO_n zItc|FRTB`~w(YNW%&l<+GW%gmSLFv~J9_%2m%n211q#x8Jv;#}uasMkP4n{cI!{C7j9PLpaz$nIO1s-CY zAbHLmOvE4&X9=!{mcHRp@e)rQ>@0twBN2m*BFXtU$2=K~Gy6mgJkt*90NZpkG5ajx zW;t{4f^m7;_TC(mxA*4gdr9wrV2I^3kA*I$Ld?nIkuImnODtaHl!;NNh&O!$mu0-_ ca}3$QS?3trfYm=IGCsCfX(PJabgse_z95xg1$55Pkqepj7> z7?>>I>Fn?B>-*yqzzxoGWD2@!cRG@70^J=5rnS+sIqHwXb zgVl`Kx=32 z6Hv*~hkAAQ>+Sz!1tSK-)-}{gqetSGcJrL75>pguUbcO#=)pIFdHL5K*QxGILE%VN a1(eJ)#S9s8xn(%UT+XTdmQ0-P#j_vdP;_4a literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/service/Rn_rb_date_param_serviceImpl.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/service/Rn_rb_date_param_serviceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..b6a1b025b8502850d79de5dc1b1e81fdf367a4df GIT binary patch literal 1248 zcmbVLT~AX%5Ix%#YH1N{0lyUxv7m7u)M!#dLNq2MMGQ5(HhbHpEZ*MR?A?O=D@{y{ zKKKLtQO2{k6=Q3R_^>m(GdpKy&&+=N{^cux$5_iFBk-sdccs-TjI@(Bkcqa(rlsXx z)U-jft(m$M5 zoER6|)A4eC`Dy}J_xh1DUA=D-6NGvziejgniK9f|Sv|HLne?oQItP4+K8fvH8E6$H z@<6pxbafUWxB4zVF;=$;JGo&Z<2D7d)wO+r-1E4tr;x==2}P6yX6h!=uln6U+c%1N z1jXw{KId^DS$dl3M{R`EsBA2LRLN8bADdT--LRmM7tF4V11PTq)iInSG z2D}>$*cdH9lQfrdyB9QH_*OTZr>V9%hJBvc0@#rf^0-jMb==J31|R=ltu5geZgWID z16yGzusVEGI(FMmTTk;?u_Ud)sdC;);%CQsDtg3r+8^yi+Llz#aj2vZ!a*h>Ln0-D4UK|7sffiyG!eYV2H0{HI?_y9$E!{0NiL*k^lez literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/service/Rn_rb_std_param_service.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/service/Rn_rb_std_param_service.class new file mode 100644 index 0000000000000000000000000000000000000000..d8ed8d1d4aaaa58e2e22d70e37894b43a70c0634 GIT binary patch literal 383 zcma)&F;2rk5Jmr*B!&PI2cV*YCfm>jQBoO!;sdO9ol)3mvqrmPOI(eD18^wB*rGB* zq8iN~{h2ra^XvTsz%9;86bh@RJ?KO>L}Hzs&XjuJklsX-oXNa3uQu6(`O!sFk(@$T8f`&DQ2TchHF)<-2N~q~;v-fr>i??^1y;}(XN)r>K z5B>mul=1Agg5DBSA9iMUcIV8@nb{vdzkMg7O-Mn!`-a-bPKZ>D^m zIZ;-dvpG7uXR_>P?qK@RHh1}xu%Nc+hISD=Dk2% zM)OS_il{A&a_6xzXO9#T*-Y0p1;a=pmxvP}FV~x%=%G~+Z>q#L*3t$>rIzZ&!VV1_ zY}#Qf9bbYo>p49LIxRGK-!-_gJ%K#EXNk~^3Ki)}neNcNBHf)Fg^SKz+Rh5yrw5n^ zSN2X6F=V$PrAHFhbT{g6!%fIc0~~^*zCZ+TWcz8~pCptCZ*T#UtvT zv`4z@d6dW$ab{Y2XhQi$x$#)~$7kAb?PXNIbX*gFNo|oOZ;k$CgC2tGELI*X<0ywN z;X@aoXP`6C7*ohuoH#Ut&aZ!=tDpRJ71BK>Ji6wke?aqe9VbQ$w1@yT>@#%3gCy8x zah_fOOgEo?rP~?Wd-f5AEIF`w%0VtbE+T^kM6Y?^rIFJZ81A&>vo8Z~8M_QUf?o}K bbhm=wqq`N@9>bbvaB+F8dimtM&^pmC0)R{* literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/service/Rn_rb_tables_service.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/service/Rn_rb_tables_service.class new file mode 100644 index 0000000000000000000000000000000000000000..1b3144dadef33a938c9a785d4f221103f84a1081 GIT binary patch literal 1516 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 iBTV$Y-nx8-*EhQ1l8r$+y4cfFa=5g literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userlist/repository/UserImageRepository.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userlist/repository/UserImageRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..7ed9e22a5153a91b511e7f2b58810cd4f6742837 GIT binary patch literal 661 zcmbVKyHdk25WLF+Ck8@z6nsKxPytkCQcy4hV^!VhEEGwqs11ge-*bjM zx}^Fyf}VAB%bh3^CPV0zDPPJ&C<_)Eez$%ZbKW7e91DU!*14GocOT)f#@1se8{w@Y zzjQVT|K;ksN-O_`+L}EKY#|YvcC>A$G;Ogx=s*Ly_S66$w(QzQ*aX)H+jXH{5!$H> O^$U{SV&40q-2Vo6^1zk= literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userlist/repository/UserListRepository.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userlist/repository/UserListRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..58b74e29c6ca1929001109990ced11c0681a465f GIT binary patch literal 362 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/controller/UserController.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/controller/UserController.class new file mode 100644 index 0000000000000000000000000000000000000000..4c3e102bc5a33e1039e1e7292fc8a9d6ba1b4005 GIT binary patch literal 12780 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 F^&fO$6}$id literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/controller1/AppUserController.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/controller1/AppUserController.class new file mode 100644 index 0000000000000000000000000000000000000000..6986944104f3daa7632eeac318130b8e44222cb3 GIT binary patch literal 15316 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/controller1/AppuserSessionController.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/controller1/AppuserSessionController.class new file mode 100644 index 0000000000000000000000000000000000000000..e3f648605a4e9cacfe29724d7e66f9447026b1ee GIT binary patch literal 2828 zcmb_e?NS?67=BI?xnP7Hm!&ssrYjYFn3cY7yUx@;#XwA;{jv4bGRu}zGMDm?WkCtV zE1s)Y_bjy`(2=QgWR+(-rIbMTO4U*Jrp(#CoiEF@Fs*pyq8t%#x{fi|2HIF+#- zxmexIOK;VpW3>C+f>q90o~`$_!8bGsMjR(_1kzHHDqSvT+>*dRUw=c3Hk7KE zE7GqpEOLhNQrlWGYnL2LRXu_mI=?@S(uvM(NnVH!bKx z(m=n!#Umx==+Z1Rz3L}0fI)%C(x(EwN4vi+kZMIQhIF2o0=N1OR8?4asbeY8Stn?0 z`^%;ZbREvL?aE%Z-F}I8qCwipAU$5Go0Jav2?lS;VY)2#yQ&9EK4QpS=w$EgA?tl}mmeZnhPs4#3!oph+=zq1ck4Q7^fu#iQVVO<|gCKCaL5=k1 zG_q_0t5{?0Z&?0f0D|rKK{Gz%Q7Bz(#(lQBMOU4lb*oNM*Y?8%zR)EbpG;3bTA5j1 zo5`-S){l|WEIEt4o$c)4Okv}Fy=-mh`i%BTHjcs*rdu!s3={-|7_K-ANMiQP}+j?AKFxUz%A z2=w8K!1ud<4gP_4ZAwS3W=pX7{5c-f42uPZoeKb6WdueTs%xBWBZNCjNMo4gQ@b`v zAcRpfR~>jAz`kL2QZ3nVu%Qg7o4*0 znMTPrrC#w(&({l%Ej_1HGQAOf!SOBW*crPxZMudh%cd=-c7Bf`D$w=H*f8{xVXx`) z`B!E^3iP?k%-Um@GrbL~U_L6lC4q_T{=kf`UZ_Pq#5^s~Hg4ILoD{e>_)eaNRs_y1 zR%~gN%@xbH@+C84+m198d|%*B*74SK-}NkeZPhc%=BDGl*7K%e`}(R;kdC*d8#@Mi zrXrn9%QK6F7@cy8W&$lZsUe0AftJCcl{mfCyV1e$eQ!q*^ zhG(gL?Jz3WEh3o=$@A!?BA%`}Q?5J31w*AFS!uGkX39*7NRzDqL9 z8L}j|=qaAF)@(yoJVG8my5)FslE$N@*MAe}%zQc6(Q1;z%eP@9@BeIzGJ^@3&Z+MB9C?`{ch zxpf)d-Sh5vh#ol|sE`po*mvxVsh^wh=MtcV!yv%&Xw#(~9Z$246v$m!!e>|1pzc2S9Y zR>K3O*%S9O(=Qiio-WVimWXVBMJO?cewt*nlaatw$no(Nb&_3Fc+DYE8!RsD z0(BpLhlZPeTcLGh>PL0MwQz}-W()tcu!Ypk$yF=YF|_kE&RrXK2|iEoGs|}(d?u1_ zp(Rtlpz|m0A~?nGj=;-VL~)LG@1vV%z16pI8a>?6E{Gs-hU->dJA7~`;ys$42sqe-yicgf4di54R=Y8A`ko`bpia=c)|}- zj>z-Uex6sFdHy1tXPx}rAkQP@`R4!P`OCw2j^H`jj^L|6LET(^&HW4JT~+hTe*x=0 BJ2L

    $}+6g_W}Fv+Bu#IOk}24u84Jx@|bq`nk+?GaD!*{W5sm zoN*O;)60c>Jn^l-_2#Q&3p}N;b)0&vyg6z4R>n4m9LEiez;Yd5VKD7_)4D(7S`JM`rc>w^>8gXtJ+6VmVfD zRH3e;b5f!Hq?w{|+{TNt5 z`Tqr+M%4SpEG3V1tiWzEXh9gxE2Uidsm?Xx6b`Hy*f}$!XDlbDSH*P9^@9;(W`-G{ zMGdotU7$%Vx|qh)8&RDo?5s`Wm?7y3Os^)NYgapN-Yl4YaKg>ar<$PfsD=itYsPl8 z$MLvA_X8A}hK<;vu%{!vw0s${Wu!QsP}sd({0aeY!fx!1V^7V+;N=O-yoL^RvU*s9 z3Y#J=maC7kl7oqWS1+H6qg!E1ML)?5@`-|F=S;5=y$aj11O{fVy%gp4oDmr9mfzmj zmp~VEsl|O1U+q{VCDl18h<*)EVu01m1e#8cm$MogUE!J-)Yy;`5l?A2h(U$Mz>N+S zHg;5pt)wu4!#ENLYh**{QmwNZo)$~va+3qwQP5aB<-%3iyXMMm9WjGzZmwKkyj?9u zE?0_Bw%`ZsL8G-d#y5SR4Mi`duzc5-T$oj1%&)#gMPFGw<-W$kB*~QHfO2Uv@O6;rTEVWZ{Z;kc;bCE;i#$FjqhHN1k$3QfZ4W~{KW)ucP^vJr@!s~QYs z2o*Uc=!WX@3XxKW!^mkc#h^IFj+Q)~)^IJX3Gy$}u4}jxpVF>p%1Ojgk;T8IZ+~YTss)&XBLO!p(WS{abSJUv^ieNViZ}8thT}vvD3Zm> zA)Hvz%9G2j{F}V>WV%Yb+D_4u`xw4>4`)Yux{G+Gh_tNdiWrymg(6;*^->X6WX%>a zC9740Evs9ECu^aISLyZZJqvhKydECyt@zi^paOfDqYnDpNe{Z{UpIF>*oR&WqL1F_ zILqA_`f-_aUSiM{*;$UkRoudDI@?OrJA8`~8DlhVGgilmXEbhcQMiMKEoZi7Fl<=uY;2Kdr zziFvI`}3D^R@Qm9m7r1cn^_3^4|Oq8_7@NMYRccJVy>iE7a J`v?38{0r4_f7$>5 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/CompanyDto.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/CompanyDto.class new file mode 100644 index 0000000000000000000000000000000000000000..c8da6b7ff5eebe3138b09dfb2b1ee6e5cbe90cfc GIT binary patch literal 3137 zcma)7U2has7=BK7W@mPpeo$#)1+>_L{bUtuEnA90DW%vJY@rB#G2IUB(A}B3JBz`1 zZM-t^%EZK5NemZCv?Q7sy}`uaq~i0=%x-tvVoTYX_q^vh&-;DmuYZ5}4Ztu82AUMQ z^L{Z~a_oZV1lda2DV4L17r4Rw?1W!jx4rup0^fk9(013pXJ-qxx01cGbl1rT29gQ~ zLapm(7o3u77u-+nrGi5+iMU)Oo$Gtor!Od|%L>gCzE=)xFIcn-6-TEV@=qzG#PVd( zb_)vaGno}X{Lq#$7z>9#o!ATTEw7)cB2}#Y#g)D zTHTncra(4&EVP9i<%VQ*^lr~Z-y%yj>jbO*@>RP;ivbHpH+Ztn4H~DSW;|NfOe!Ru zk1KY8=Ne2zO)}PZD@~tHTF7Eh!OYvFx;rTi_D?Vh?;Y7IB)HEkiJp_%qapaxyURM%xOQ=KM))HPoW zsnaws1a^LH)?Sah!CbY=tI|mdiQc|xiG13^MNBb-tMk*dlZQ)kr-{Ag?pEU;m>4%7LHTUd5VCa$w!ag{may|uKBr!kKk7T(1P`f|qg z+~BOJZdrH_?^9*3uRGqd!q83~wXMlwdt)X(WQ7L1>Y^Aoahu&V*i{RKnx#-vi-#JT zQhnmV9SiSBBQSZ3k~~+OTw$IT{7NbBTy*8?Y2A$Jq{NP6Y^DT%I{%)B0h4ly*G?1C z{BfE?nL`%7IaA@ABgA(zvFuUep5rRX)d9Xc_{&mOeCz!`q4Ng{O*q7-KtLlIKCK8q zqldXt(%8EY9o-ud=VBM4uDua)tac&l-W$URh{DT6>ud$yWeUB!(;wX{y%f4e-xAXI?M~mdS9-@iM3_g?9xEo<~` zAw6%-?YUQXaldJ=cvqiAY<@(4MMF%=#77H2qMP3Xaw7^g0Qetdzmlr&6X z4R2D?F$)K8QA(n~8}}R~10`zCQ!?=tZ;1&?DSSO`_<4UIkP!TB9n4CF@|D$gSEKY&3#5@jGnr z2xH_IYkPgLB5t!jhEAg9Dr2ug6&3`S#iR{kltko3QpD3{3|B literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/ERole.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/ERole.class new file mode 100644 index 0000000000000000000000000000000000000000..680ef9e2799698cf71115fb8d193b2218e227e97 GIT binary patch literal 1548 zcmaizT~pgu5Qg7_KV%D;IHaY8(0r1{HYqL%Nk8mT98eNBvYoNO9Zfrv5$2SLktIf! znR3^k)H)Z*q|;2V`=c`1J#vF@T0A4Ko;`b3d)~AA&$~Bo0c@bHVMgFeKO9se>H2|; ztD~WehE*BFUVK_LyP+>Nqy^@V+!MFzyTM`A3`PTie79qn&-ZMzD{#&F{|q$&U4=Jx zTFtgVK|$B-HO(J+|3$^y9m{Gw>~tHu9r9gLzGqQ*B>Qp84ctQ+2^5vr?vDn~2ktOt z*PL?g$P?*@$LyF@j$N57Cq&Dg;~}k??Y-7YuVL+(w!rnD&M!Py@B3ch#hU`DQn@FP z-VP6B4jCN+3kE*HrvlmfBxIpvoe5>fkry1+n&n=eVwVhLkj+73_{@ODkYl)JAjgnr zxM?8Ipfh}KKxdd`C>xk%Fc|I_Fc=C9RRaZvIflCi=8)yL4FeZY6u4k{fozWk`!d>f z_kAfaZ-sr=@41o3teiShSfJCzFFevoUy*dnD}g(p=t2Tvbl?T9PnXb=@r&@_nH$kE z-2ugCPh5W_>E&jre6FZEzDGmD7G;_e>y++mVBjIPskz)Ja!>o=@u@&%TGGxww?nNt zrSiWnl374gb##8A!%uIU+(h}j>t+!i8`!}Uf&0@5wtaUvtWACOL&mcc@LW)*rxVe1 zI~+xQ`N(6vbu~z997~6@y~DtbM-eUDol433>*rOtS=(Btt4-1P>RXH4Q2<$LCS|FQ zl%*C@mbyn-Y8+*$XOyLOQI+i8@8j3am#jcW0Y*CNUl{fiBM=>;tNTvn`Bq&v}}vymjh)(pKv7Yi!>6omP^nljPz< pMS1E>b5c=-EPq;`7nRp|^f$zR@8eQ30?pqz@ec$ucnV9|)_W5XMeP6p literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/Email.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/Email.class new file mode 100644 index 0000000000000000000000000000000000000000..d581e1f9e71cc77716c267601c9569b6f0b69dc0 GIT binary patch literal 1910 zcmaKsZBG+H5Xa{VZJ{1g%Y%Z7ASmTQPN1kfRSgfOrXqn-<12EsYdO>2k-MvrZ>5RG z#20=5Ka}x5du?gYt#5X2cmK2Vo0;AF{paT|BFfP7I7Kv?C^lwoK zE&tNktC?0cPQ4mEXxDtO%T2|RefsX)Io)xp^_uNz6l4EfS)*kBqxs1+s-|5r@{V2E z)M)Iej$>=0XnEFIRlKxq$2Wb;VZTu+|7=_!y5;%8E(s%7hSRuWBZ!90UfZk*jp7{i z)I!wz3iT^t3)l2TxoB4F0$zQd&-2RVfA!!hTwX|hZg=mXkSn}LdV(vmtWl~hy<^|C zWP-u&N>jGl{K#k&VY=9sWm|q$qn`9!5%fDwStO{3#&sH{n;H$~En6JaYiGhOn5Ynk zaY|;jXu1~98;iaExrLHV=G%MnZ{Lt2;fdhnoP6yZu>7RPKHYkjaBE8)>K((y4M=sFEThs3cL;WVTLth7Lq z7L9=&fD5h$##@*fuo`T1{s)bHm9pCyIUph1I~X|z1ay}sU^Ti&lNdXlztPkeY)0tH zc~a>-O*2rja~3uN8=GJFPE%K*6LNJL0cYe1qk*asp3yiD{663t)i7bEhf1c|Fw=&T zX->^F8)n)DQ??6J(4z)ZR5H!ef}&1~VWt;KrX_SnQK!W)(+-$+yD;&6Xw@kxnI0>d zmcvZ@N~Tpc({h+82d39unD}nCm{O7{qhwkOGv$>`Pt{CoVWziWI_$#4@1(^vB$=Km onbyNhM@ptmHPd>S=>$y0E=>GpTTH`XiqMuEx8;w3A3&DqFR5xL5dZ)H literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/EmailRequest.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/EmailRequest.class new file mode 100644 index 0000000000000000000000000000000000000000..8224da9bea285e8c447a75a71cab55fa09509483 GIT binary patch literal 1613 zcma)5U2hXt5Ixu4wHIdrCutH4DGA^Hh_h`;KZp~)qJSbL6eTDUJoU!DiWkG~R} z|Dw%&PO8rf3;oS8?ATd=X`|ix$nKNh3%>MQ7&%Xj#z^yzo0+*Um z$BUH=LZ!W4SH)dVh1%EOc&i=h2b=2ap6cp6EP>)<`BZv=40pXRcOI*z7O<5G5*S-Q zc(l)<))edDK>mTvpRyt4kk`Zesk zZ`eBCM&(g~#80^>VUh)!GF&y$=JJe- zJe&fu_|V0Kc`c%MWlb@td8FGa7ATmGE~Wz*NiJV|$G5a>KG~3aY4c87cH2fcfo!?5 zX3AV~aS@k@c7JniW0mFBNIq8GUcj;DUIRHg8jLfKd4Z|JL%!YfgO-XNd?Yab_P&%8 zTFV90@rjG87$@eEANu;bx%$+_XZV~~a&J$CErI$lfsbgOR%+)JHFY6(YKk+n;vkEl4to92xQC_(aO{21n3{5m!ntUbA*47w&2sQ z{s{LujSNokG$FjiNuF+M7cokYbHg~{4+AYSGh;HVwV&YrK#i9Y0UY!UbYYAeVRk z#tDl24<_@-^2e#AO`Rp8Wxk0aO%qU~THzS!%Xr<`0iDcY$rXHTi zx4g5MGE;0US<8tq)5S)cvN*-sGvw=iT>ff#dbk|bL26nzi)oZmAzd4%*?xu41vXww z!~VHS=1JcQ|ri6=VcW;T*cUwdSp2WW cETtTU`8bAvA8hywEDzty!yA5sTr#-%3bOzXHvj+t literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/GenericResponse.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/GenericResponse.class new file mode 100644 index 0000000000000000000000000000000000000000..676143e4e38459e1147d1e3413fa6437db1b93d6 GIT binary patch literal 632 zcma)3%T5A85Uk-LvaGxme4O+otj4`~(|9q#3qB%-#N)7ZUH_yK;D zv1cWaCB&(a^uaNyteMidx<+=Sv-4oINdUfy<$R^i}GAWK?DT43#5h00tA)Ea+b z&8|S^GU}6qG+Y2HwR5Br#k?I3 M+_0)U98=i+24G`*s{jB1 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/Login.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/Login.class new file mode 100644 index 0000000000000000000000000000000000000000..0f6c7fca08fe5aba90b96f445842ec55d4866417 GIT binary patch literal 2238 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 F_ztHZ$|V2* literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/Role.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/Role.class new file mode 100644 index 0000000000000000000000000000000000000000..d493312beed080971838e635e6ebe73755303fb6 GIT binary patch literal 3905 zcma)9TW=dx5T3Pn?X|N>6Vs-3FSLaKxw7;^3wBdTQa3fkA=oCpap}fBNw&3j-SxV( zQ0`Frgv1jP60cN3eEHL zc9cRA?JL<;-4RB`60Y8;3#YCN%Qf8_dfu*xD9IA_UpB58dd09-^p}<{i;^o*$SgxY z*D}o6)=FBUWWIsTRk3K+&83Q%vMk#*T+_Dd5)FFr>v|1mm~~fJC81}_*z`yj!>q7` zW4NNcXjB>kAhquDdgaD_@i?h?qvqkWr!w=!Z1KEAvSn0-M2WWR7F@^lF1)+T*)w*f zQMGVpPg&GUj#=XXa08=O^AaS{Hs4jlH7j~SxPZnA=89#w4F?Au?X;elyH|=2=~K1Z zE692JBwQTzaLWc#<6N&+^vg!+O5L_}V?Bxb3s_G>ofpf(;RIsa!(AfC8P<)W&0heN zW#N`qQRyzg(`*VdrevmOGkL^WMWCWQjZ7;JIDpbcOGdq9lo8whE>32AW8fybkjWRa zg`z}}Q<>t_%o(`JW%9EbxXEWu=Q9OpA}37CbWchY9v)dlg=Xxsh*Ovz*XR*?loM=P zV!lyb5>C+ok+^zx$*3$Ej>+plDZ8sCuDAc58TLrbIam>H7L-j4kNCy$*c^~{Pe9tN zb*&3+6LS^2x@2F`*D0Bfkwi~vq)-Gg!SlSwuk9Va1BNm5s7AfiCs7}ur&^3+({YXZ z+0+9QxDe25py{cNV8=Gdei9xU-k1ZfL4QuTt9E(8a1aeB$YsX{ zKeiq1TY}JdQy&m*At4YbT7e{jZR>IHp5q&oTMLAD4t8zUWUeaim&am!fjSkUamI@j@?Mts{^b9>Kkz{v{ zk>CWR)^=BggN!jDhj=)up2ibnp3)yeabN8(`aMI(kQwmp9lBl*hNcYY(dT1Yir#{Y zp^!6bK|0h`qrS>5<@HyV;}aS!Q3)4a$Y*nCMJbCWbVR*T!88wh*Hni5TWLcbr^kj` z2dS>@7e7kK#Lm|E_qEdvvr-n0N>>p-KOe(pc`{BG)w!*wSZZi=jo!rBa4Ib1X`-E3 z&5E`0v%_;*B}}F0_yNAD=lN~+cXNZACPDAx=3Q`i{6JfvlPbLr`i>uHMhnG<$kPbl z`eTi%bXcNz!EQJuaoXgG6ype=0x(VytC?>xUx;2Vcmq6@hCYcvc=^FcI1qgYAYJU~o9 z=KDU0Uv{QL_MQDe`nOPoh@CNnXm?jf=(q4$W9V;An{*Qg_F&`pW20Y_BHtbRoun^G3Ev(2jilW8=o)3cC4{;8aePwp#GllY zl>eZCJETn{iN9UzDVO zXfR4){HYLk`C{xIVzWStD3HvL_T~biH}O9Rj!?KV9P{Q8;}b$zk6A&a9CJ|qb6)xJ zCSvP`rj%|$$1}RtpFSZ^dPUybpI$|Y)&8+N6rEV3@+H2Tx(Q6cuD#uhcgDX<5J(s=(K4+d5C!E~g%m=%m&rtMVa)R!U4|rM z*c^tPi+7%OqHJ6|F3LBg{s)DOqDT@7fuH~IZLLGB*g;AY(8S1{ssI*ggSC(wwE;NV z32x!L7_bE~;?><;AH{X`DeXpP*&^)-5n>w=%eJHDJ}`8{7QGUfxw aYxL3mruJlz>=1q8aqE^>0-njA68#Ulob$K< literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/RoleUpdateDto.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/RoleUpdateDto.class new file mode 100644 index 0000000000000000000000000000000000000000..f3f5953056b79cc8a14b7b988942d9bde21572bf GIT binary patch literal 1384 zcmb7E+inv<4E3Z<(}qAVp*Lvh1}NR6(0$>FtIAD6N=wz-13XO=H<_}#6J{rc{1r$b zBp&zxJ_>PWQ<`3aR20SDv3=}gk9U9l{_&HD?$b(+GJ@{ZbQBntVazsYCv1{{W2Y$H>|yDCw8 zA+N@3`-+XA zVZ$HV%5Z%E9SK28DTzqf}5sIcubfZ4#_&`wZ;gBWEt+B#{jkG_~DiuiJ&E z67O$DLG!2SZ+BX!TgVy=2(*gtPPD#djY^v@tr{acp5FJ;FwbhQp$^$;8K?CwLic6V zN=LBhNTTPk?nUjydQFK`(t06FoOH~dvK-+$9;sN_CxQn2@~)u4=NM(42IyLWrf3=? ztg4vT+tD7IZHYS(G*Q(x8SYA>-1*2jXqyV1`PGXp2j)4_VC$~Ot-^#~J~5GW8AeFZ z%>rd<2%$+Y^nrgivV8HHV{2@iy1pTejM!pxu@Io)_7;zme!0)ZI3nc&jnf2zLF6d- zvEL{5Kd9ulblcSUl}bnIk{-V~EAG9Z66(4o&ESVAK<03og&xL#B%wTAdP@bmjJPWa zjnWw0I22RaHDw&_^T=Wsd9{n2Op&8N3S>AoX5qyKK+eD%Ks$G~@||YC;2}fTA%{}q zFwNn)&<&t@x`C6R1@a(IgTGSg^BHilFZdSSMhORg3Y~$@RhGX|snUbzQ}Z;2Gn1y6 z>V_TF2Ou4rphbYQ_$EN%<3&q-Ncp|2-Hzt^lB&=$YMdkGpCjd=TInC8+>IQQ8c#{x Ih0M^sKLzMBApigX literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/Sys_Accounts.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/Sys_Accounts.class new file mode 100644 index 0000000000000000000000000000000000000000..c9c5d862f177b81f92062ca5f262d50a20a49c01 GIT binary patch literal 6981 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 F{s#=;|4aY? literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/UserDto.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/UserDto.class new file mode 100644 index 0000000000000000000000000000000000000000..4f9b06e6877a406c6cbaba4e0b77d88ae9d197ab GIT binary patch literal 5787 zcmb_fYj7J^75>)NV)SHw}*hEe(%AA0+MoGfWv~%D^9H7=H1OVTR!s|CynL@7}$um2Ab*4?LFk z+;hJ3-FweH=iJpF|NE=o0N9VUDB3ji&N<83l5G`=wwtY#?NT{w7u~$OnmxzCG1rMA zq#?CrUAD3XtGJlGe|E{9bEAl8*ebPoCp%@A@>U`Ls5M)#38o{5)8xuK#dBlFG-#(Z zB#%19vTGIHX{%7N!(4;-(=@~u@};tS+FGV>dOVnE$}Q!Ki=!I!g5}%w6{}o+*eT6x z2;0k6zCi0jrBLv^FBUDgQsRtv)LReANg76dl60eo>256A?uj5UTl)tZg=VMP%2@GogUzJJ z3(oSab18e$F4`r_wdYA3I_k{ZF=*Irz(7(gJzum>SC(h((pm2W)8oz@576Q?pDjpYTp?trAcjGQ0J!qf@x5v?r4;XkKCWY>U z2Hq)j8a`xT(330!Bc3#8;0{l+4czHTiv~Kc%*n|0E-aRZ-Up4SGe4Q$5WyLP?+8Ak6t{W;?O*X3Io2uy1cct0iH5K1u2@m%MTc_#=OuXUVn%hjS{spnrA8P1f zJ#Vt0t8zLSJW~Bwj${NS$xj8zwRPL{OK}s{pR-s7M8IA)@HyPBfsJ-rB*HI5Okd%- zPdSy+oP8oMUI+{o|2^W6u!}X?&QBO|+=eK0$}zqPv~k=fZX_x5x{yy^5Aw+yK|Xl{ z$S3=~e6p>}Cp$TLwo#7oxn1hmf5~{8ly}zIwiCk^LhD5wU4DA==v-5qoYE zqW!HA@d{`{bl@6KrTM9`_ctLLZEZ!oI+)L1mc3`wd^*w^;k`IY!u5%1aFtE$p>N&2zo^!r<-7ag!lpO*Be@ZL=`XXgzZXq8?x z)++rLNk7ijhw2iuw%_(L$?B4HwAHD+-mQ|fTTV5B)4U+OqPl<6DaUK;;)s~CeM86I zSQp}I&~S!mubW5svc5Ce?+&>LzFKY!XWJD{xP^UxYH099ghSVcehcji!tK|FUWYa@ zJh+A_IixT>%+GVe#=!%pIeNehjr<;oOy~`CU4=1{39aG055HiB3AtcKGGT#QJC$rlSV5V0IF;V5Tyi0+dpq&P=KXlry^s%9-g*mjI;|s4J89 zK_St(H=f?>Uby|PrcGf9mv~m)+F=xU2e)Cbwj0aTweuac2SrLDoW)Hzl)^ZVe`AGG z1grQf9-xM4=gPVp|mL{MWTN zvBMK%{|C`;^h-?NkoXC;F@142BPZ^Wu*loSSEW}jVL#vuVS(GIHiLpJ4!-Y`XWcE; zK1^ML?EgrO9t<7oNsZ=28O$7#`7egdemymG715D3JSO!Q%#bi-Ldv3xn(#~)&9F4F z9Hf(;3HzoQGa^lqs)B=e1zQq=^Niykfp7XU3%| zUNy0d=+)CWUst>csPMJp@A!o5rD6OHpQO~r&!6!)L)y;Yr@zFfD1~qzGw}&ZVP?wX zc#=|tzo~NgG^Hq>#RNV>Nyl~U!)GbQ@F%|JK1C@m@=JRashdo_5c5mZm{NS)$M6Ttp^AA1_tG#Z*U2`8rzg(tdV2jdrPx&kKe*QVAu?y zND{Xu33!@-NX3%kkEe}Qgy+Tav5HoIji(<>f8jMeBkE@jUrB$1Uz9Hh`B_iCDCBQ> z@{EwbgkWYj|n17u8jj*qZpI*I@C% VFR0h>YU5Xc^}nF5bFXc<@jtwa*MtB7 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/UserProfileDTO.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/UserProfileDTO.class new file mode 100644 index 0000000000000000000000000000000000000000..484236e534eabb648d6896dc2a42da876645c49c GIT binary patch literal 3554 zcma)8Yjf087=F@CHrZ`@p-{>KV$oH4Wd*OzQc7t77u!->sDh}Z+t3Z&CMBE2%Qt5n z$H6c9$r*oue8CwVwalpFpdWC?Kfn*rpP}M&lI*43>Tai-^Pcy8&U@a=b58R6KR^5o z;5odjqD{h)yt|(9EVJlXex_Wqyi&$;eA|C7bBU9A&%JIJt?7#wRLBy#ZvR|<2b8x1`N^>inDX{cm zwqnc2b##g?RT>tUy3jqLqf6*IsGF|VL0F#B(Jd?*Et8@sLOGygmr%Bs>dVtR&{&

    waK3mA3xUd=&L*Z0}!T>1M0^qis2ir=BTQ|#Qk&CzN6LKdzcqPfW zp4G|4V_cOtoihS0lrQM$!R{ntcuB`II3{$4j>m*f!U-Myp>$Hmlc97<$J5wNin&|q z6YWKMxPHO%7_DeWy2iE6Kwqy20Ci;R3K4ahL;#667+S+gS74}TWp`+Q(U@#{NvY_Jv=9$m@LT>g96V9>Bo>eLr$^ArK9?5iF z#7a60usvNLNjx3xtNCtt&Q!c9p>O-?J6*PmE0(9>ZL)vsy)aOzHJ5P>H^{z`evuF-MYeRLzm^qM z4%sx)AEd_F25U4ZBJp&*At=I1E{RH(MX=;%a?ve&dFw1MItjbCrgv170*6Vu7=H@l z*bfyNA7U!&&<6izUlqHVJ(0Azj znnD{=d8ML%uom! zGvX;lVB!zZa|azMB^9p&Wet^}tf8e;0n#Fnn$qe(<3@s@aU+>Z2v9NtB~r;c(1g)W z(1f9<+673DK$I#V`7Tq7HQWpzhACIM`Vf;i&3g6XS4{D?XhRy`Vw$=bd-4^|P?B*D zpW-Yf1+%!#*=cgTh&8-SNrlH7J4Z>wXGEQ+l)&dWg;yvgvB~RjhEh9z;;yrlbj&ff zN%W}NU+7dJ{f)gUV*J-A?hD04bFp&3CfQ_Jd=)e{8Dq>%oL@zBSCr(xj;~TJiNZpN zl0?UMDxeVGpOfo z!AH16NxYdpz!LM0@e8Sd*C@$2$#%U?Nx@|t=TEfVM<1?GQiCS`f#f49WHwQf*f+aT*&L8JRxM4k4@bCzZX?5>YXG$LUstI U_Em5X{?2#h_OF6l!Et!!UtiBTng9R* literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUser.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUser.class new file mode 100644 index 0000000000000000000000000000000000000000..197c7da786574fe813b47d431c1073d25d264c9d GIT binary patch literal 22388 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 DI7GgD literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserDepartment.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserDepartment.class new file mode 100644 index 0000000000000000000000000000000000000000..b44906949fb37c921a1f443ed4f02f5f1ef5b5e8 GIT binary patch literal 3770 zcmbVOX;&L%6n-WU2y{vzEH!Oa>Q)$*NJOjBR@qw7P-RK6k&DKmYpe4*>J{z85hKQ#rSoE?Z{7 zvAlG(VwEdt%kgaQa4x-ADsA&(#VVO)ugKe8bZZ#AXC9d8g6Zt1H}>vXIZwktz9F*g z<}D4$Y*T2{E8EWgf`-)1DuIjEj$N_$3f7|IxSr|Ru2a!4rXD; zI@5u%>=vp;hsb8crV{D@#?okhjVS++Z@x3H+6Q z=5>75?;hYq!9_(;bKIG4c3%=Pqm z%MeoBJsp$6r6zrPyfKs%?-L!o~{hx9L{P zIqRw|({HRT9kY_X&Le$QtsG8`lq#gh7lE2XO$r2Xv^WN>g$>oA!tHJ+d3NkpIG_i6s6No)MZjbAbTGl>|U;jf4QNj%G6-50=f zc%COs>M8{2LNp+jUjq?Vj7BPk1}_&YXkCEtC7P2&jLM|dy!0e?t;DD;M1& literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserDto.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserDto.class new file mode 100644 index 0000000000000000000000000000000000000000..412a0633e9bca818fde30e913de5507281b504c9 GIT binary patch literal 8549 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserPosition.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserPosition.class new file mode 100644 index 0000000000000000000000000000000000000000..befaf0f1fcb29722e92f98c1a198f508d8ffa11f GIT binary patch literal 3211 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 WH5AP|n1QrU`rd8tU`L7S%YOkHKM}kD literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUser_who_column.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUser_who_column.class new file mode 100644 index 0000000000000000000000000000000000000000..32fb6fba1e3b024db88b5e7981086e237a0e79d8 GIT binary patch literal 3256 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/SignUp.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/SignUp.class new file mode 100644 index 0000000000000000000000000000000000000000..cf8ba49e23f33c9d71bd535dcb57ef20880ff3cd GIT binary patch literal 3861 zcma)8YjYD-7=AX%W;e-}mXsDEs0FI@N(4nErIb=zjJBn=Pz5h#n=Z}LWVa;Sa`86K zIF6%V^pi9G0QrJ5I%=6w$3Z{fjDLV1pg%*!=j?8hO;br{+TG{8?{nVsp7)mh9dPh zjGQAOe%UOQodruT8WNI|HNu=zGOgty39*7+B}9w%;(}$`r6mce z*)<+sH0I5+xmYkpEz5Rv$F!}oghTGm>*;m9U@p1BbdCzAq??vgPEXs;X*#&VgAYEO zIcMH9$O;!tE6hkl1=Oz#*dyW5dJoRsSgrS>jc4-a#f6&FEz5>85eUYvp5DMEtKrz| zTh3bRTih-=S+I+X_DcGUVHqXeF_!3JWXxVNVvz8N23a`TI%!(Q^jdMzD4o+8AQ5>x zrx)h+k}1}{FyiD*M(n_3v*hv&jowdI5+%;suR#%K#i*F_vzDy8lAAX{eL{nZn1lqW zGky|7`Wbf7R{952x1SBmkrB=~9JVs5>;Sw54ztbZ&Dq7|oJ-0HY zulg0K=Jj%3R5P2cr#CA?HLqa~=XleZ+3eIfLy=_yN=A9D!0Dn?@0jQgUMAiha68sr z^KfT(qZ6uQd)=o%m#};Dh&sJy7M6^XiX3y`4ZEJ&S;KK$f}!Cu2IZ)OJW(@|*&F}Wc0pK4tq@uv$9q6iFV_1d7`W@)r=pyw2xTx2zV5aaV3csY+|Tu zdxqHQO$>E!&k#pJ6GMl#XNZ%eiJ`vj85+PKQ@c6X85$3X==SyhfYi4{jnVG(7=E-x zvP5Y}I83(89!DD&>E`CUwrgHgT-ChdntuvMnt9*7UGt)ltL9bL{L$v#AKI>Y(H~Xw zao7CQ&CU01*Su(-s`+-;Jb#rMgCpH#+FF>R`~7`iL5|$+{}s}gki)n8??Rdy=-a@v z?vmj6^Z*~3$l&itq$2mQ^A@zhRAd7~6~=HzCS^DiP04~2y@%v2w4~%zG(Z~3C?t(! z)RZDfs!viDAZb2{s6vX|=GDRtli@?} z%GFxEk8w;eULE)iXE-fF=*D+=k+LxQ@HMhT5o$ieOGGlJ@CjZfilTrOOcE(5!JvGC zv*&X@r}-bl7dVBpL~(3zXwDEN@H4%6g-F9JeH%qmQUAsc1=2t0R1oH$O1Q^^vF5PS zVB<`3M0}YvCK<Z+nu z6|2eHHI`9a6${DVrMRknTc>^2bJM?L7$4(Ryv94q_y`w>LQK>LxX62lIpOnoohX8n zOzRs&GC4=_CQ%d)e}~>8Qrsl|iTDEwB21zrF>!o7;Ip<42|)+s3ZcS@)QfytG(f8{ zH%oo8Qcte&w@~<7)P^m!U0dt8kzwLjLSyz(7WZZLvp?a|h2-KLEQw5SU^%(M2l0r& zMGqg}fSoLPcvQ$85044F&c_C>KkSDp>*r1qpD0^6Q~N5ogSWSym7Bi`-gVpIz5f7& CilDpz literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/repository/AboutWorkRepo.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/repository/AboutWorkRepo.class new file mode 100644 index 0000000000000000000000000000000000000000..fe51f392f6119bb507a06398df131dac06807c63 GIT binary patch literal 435 zcmbV}u};G<5QcvjXlMZmvGEEZ;RU83q%I675>hL{?1Uq7NPUrg0d?fH7Py~Wy5K%mbm?0% zIQT(3S%VBF3ttB(ebj>I;x{}m{slfShOQH(9L{?!ThfhB zzHDh00*e!EPX@<--X;k}Vp(-$zpdx`Xa*ZPw)8WgS*G&{+n9XDDRwlD^?Voj0Q$L% AXaE2J literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/repository/CompanyRepo.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/repository/CompanyRepo.class new file mode 100644 index 0000000000000000000000000000000000000000..f4fb734314c97e84d96ac829a377046d74cf91b4 GIT binary patch literal 481 zcmbVJOHRWu5FHmvpcDwVC>y+iRS*&&u|R=VxWOT@BYOhMmSeHt02~T2Ns)-e z2C=Y5&-T2J=i~G39RNsonbs~Syv&nE$F3J42) zMp>fC<@}*gDFv`4;MBTY`r2ueuN+qD#kwb%A)zd49Mav?*io&?1stxl$u8S(kvr}b z5Y6Hrjf6VR=qUbeQW?_J%B1zni!`;3As-2t^25&X()48Et)fSpEwFP%oK3(av5iaB zwJupK9OOIhWCiRbIyXp-DgNBp}2Hh7JBW`ZXWz&4`^ SqcNN1GJ@THpTb^W_rCzu7?>vj literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/repository/RoleRepo.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/repository/RoleRepo.class new file mode 100644 index 0000000000000000000000000000000000000000..7d9e8089a659f5a1e7e9329f5776e75516c57f4e GIT binary patch literal 688 zcmb_a!A=4(5S>AA1w~Q6!2~b%pq|!{=)r?omB1GaY*~w?-E@lvKh1+5;71v!3q}$H zdhpOTGkJY8^X9#OyuJaz85~AXK{y)PiExs%kzPy-=?ac=TPSbcO!TalJq{zNBDBWz zL_(9v#Qk6_hdzQ$gmddMQRGgUY~*MnpRIcoDR~m(oR+z6atc&)W`t;@OnRv`La&{y zs9bnFq-Aeyp(=G*N zJd2Ca2y|h@b&G{MHb*A$Y0@y9`{U_DV#ny!RLQ FgHQFG*B1Z) literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/repository/SysAccountRepo.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/repository/SysAccountRepo.class new file mode 100644 index 0000000000000000000000000000000000000000..6ae79593d15a4258e211c2fefafda0acb6de0529 GIT binary patch literal 560 zcmbV}&q~8U5XNU)+i2^bh$r7bDYzFsMT81^kciTNSJ|f1xHZ`gyAvf>AIpOe;6sU% zR%k^J;$e4~Vfg0z&AflSz5&27>;}*hFi3479je?Q$;zYioR!vVvaXg%?T2YrLz?F9?!WB$NI(Y{D&aNKgPq)}#t1QyfL>xNm*S<) zQNZ4Js-tG4fQ>|FMp5Os<7LIh0y2vK1$g>L^DFaW%g|?xvp?ds>jLkz*W(*Wt4ZzF+|Bob@>CFgAxa^!abWCTz{)HtcZha#INK E34u4UD*ylh literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/repository1/AppUserDepartmentRepository.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/repository1/AppUserDepartmentRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..94b9ba5bdb0c55fa5b6f021bbd012b238cf7fd2f GIT binary patch literal 473 zcmbVJ%}N6?5S~=++N$8yn|Hw==s{M5f_RVxp^M(9>$s%uCSfwG^c8$04?choC7pV( zMT-Xyncrl-Z@zqdzP$s$DePs?GjLvo)-qw^No<#hlV&j_CxK@tb`;~C7OyBGOG{qH z-^~m*4eU?x8Eu2UwzrchRgyv9z**qhrpV6MkBlw71b(s)C}^hNrwfIRTFaAa2qWCR|F79NV9Qg`rDT{^k%iO@hxYHLc z-Mi!_4UN1Hg5rWt29DO!Nz|-vyWh DMF^Yw literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/repository1/AppUserPositionRepository.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/repository1/AppUserPositionRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..efad0188e843cf94b1114c3add631a88f006d60a GIT binary patch literal 467 zcmbV}!Ab)$5QZmJyS6HL_2LT%20`%<5qj|;3zaTTQ!3qD!)adDz2A>2yxrcYS! zX5Xa@HWlpG_=LJaSLx}zrjj!lDme48(kVpis)vXzJ^T2m?~zg00avE$>wwFF3dV)+ zVo6uFAq9tjDj)Zv3Py#k9C8<>`6d5p#N_`nagnd%Ajg*1QJ59Yg8RpsOQYam)=7U$ zcQ)C1LlfsbV~;K=IQrF8Vv6K>5lAm-7~!a3L)Mmj7RV`+eE{1q`if)NkvNq4F2E-? C@tL>) literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/repository1/AppUserRepository.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/repository1/AppUserRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..8e2c16ea445c208e534512cce37e77855f6dc463 GIT binary patch literal 3636 zcmb_eTT|Oc6h3megoGr}HffUHHfaJj5ELks1Vf1Jm`gC2V%p5~MYG6@5$NKsR#3n6 zhxMU9pg*e9vn$z>V;P)IA3PrIp7WjWT=)F_&!2w*z!DscLPi7K^cDrPpWX3QNTP=HDRpO&N}m(Zn7Tr(XSlO1}gKNrT7TtP5^kI&eUJ z|5Ah16e`h@?pDtSdL|_ zI$0+h3mV)qJtU{FHCSsy%CqcD?h~)9LCq5A5@|1BV4@9fUl&gfg^|pjOSVTU8VmkI! zPYy{a4Q_{3AJxiA3d!66-KD{76v>$|gg!G3S(84Y5j8rms*9}4BqSz8$VR_jUBVf% zdqaqb_>p(cTn%1cug@_ao@2OPR0w080}aO8z0bFJQ-jyZFjPD>t&$_=#I5V?0fP#A z%nb^r$$THHb)}a{gEtKaWelo>5+MnEZs2WLnWNE{1|wKE)W+U@nnFZPQZ+U!*ym_* z>sp~f$H)LtL>FYQ7_y&KJH-cB{2_0dDGiFff#|LXLg(B5FDqmp!_i61`-u73WU2qvsQ&{^C0Kq<2`c?LcKLGHxvCgIqh|YfYBX|4B>!^YYM06VYWXQb~m+LglI51=J09i`_d#t(b(nx z4mxNm=KG~0o|@E@PYhWXT)u%rP4o`;H94&$TMp=w=L(E1?rqrQH80>M+q7)7`k-f@oR{-SgFg~)Tewo@ z`={fob#jnUCTyu`EtkF7RC97SV4i#<^>|~=q+9mPV6L5$}7Y@eH0v8WRdXBk`wVVWb`snNAbTrU>TJ1ZTPg zXO-zWc+qQmzDrP7f-hkK{SE`VsA7@e`a_q(l2TZ{O5w*8g_WxmUZp6!hSgr~`7XgV zMP(h{z)-|}<74h`LxlonV_a5I5q}u|Qah<71@R8b9rrgshS=(|xvdm-(#XB<5)8@h cBDr>@ZX}GNxe9X1z+S|BUzr_2dR2gb0mcpRp8x;= literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/repository1/AppUserRoleRepository.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/repository1/AppUserRoleRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..824d6eec3cde5ad502163ef301dcb23ceda95139 GIT binary patch literal 453 zcmbVJy-EW?5T1>iGf}}-UqNsYwK@^fSja)(g7%YhJodcXS$5}?v_6)F58y+IqlJl@ z%3}V9`98jRdw+QafHT<3U|`_1;?73G)|1#iQA}C|PEI&3PV6Lv8*P@{Qu*D^VAH^U zgO6xi^tGMN8>%FOp@DObwM`*9U*AXU=!xTly+c9U1YEgnuLCX*8W_*Gj}=|HmJA%O zMLqrmG%%XE+N1PQ7oUsYB=X{41TKodGLRQ1KPAXl@Cx>IewiCMD0|)P=+-4SZ)xH^ v3yNc(3>>YclY}C%ECSi32Dz$dU_)(7-vgRu>Ibk5qpvuI9gRbs?*e=P1jdtk literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/repository1/AppUserSessionsRepository.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/repository1/AppUserSessionsRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..4656c31690ffdc233c3c5c8785cd62f40553ad13 GIT binary patch literal 1015 zcmbVL%We}f6unNGgqA{6-erMiSwN~)3B+Q6s*O?!m{Q093pSCHxlNr;?2+wBH6O(f zu;2suD8%(-+7tn5U@`L8zK?UxJ^udV>o)*+0{2@`WAJRKC)}V&6*`_TAs1ZLLjB)5%&}8sbn-RB}k!o~g!~{>ZIpK+L zf{!zCp*nw^iFrW=t4C5Ldxh`!Dxor)(eKz$IqBxO!iP}_A$Kz6k+d#kupG;g5-vB$ zVDLXRo?qVgOpov-HEep>JmU5Nx?`QZ6P~prDH*KII92gJXlHWsW8D$(#k=KyGm&%oF5MZ9xW>V`y5R{=o?d!<|I`o?nd3thu~4L-#a`ADogY` zZ{xl0mc?P;v+Uc-2*K$w8Vss!UnaqeU}u}bRZ?C~u`FIEn=zV4739gU#5y-a+?OeJ zeDGIuZTX=x_;Nw1nZLq?>HXrZf0^jwqv+^K`B3l;7Nrp${}G)fC!lskhJ5b!klqP{ zI(-dNskX$R1y`U3%YFwduu5x#UC1I@~F< P?^adrl_^b1*#P(n96Cb! literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/repository1/passwordTokenRepository.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/repository1/passwordTokenRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..36cb1bd5f7b65446fa5a74e44090e7bc82816c8c GIT binary patch literal 799 zcmb7CO)o=16upD0`mFCrEMBazFp;pJNDvnC1Z`tsBcr`)>UHLsnb)TOz;Ckf1Ntop76u7Wn;N&Vk*aoUL<8ydJ+BHUcs&+f*!(0G z9Y6*nw^CIP+G!yM`^#Ymz2rPvVI};|6_t~&&Cfq*7SW@@fk=-T+w*Usw{h@f?c1_QB{ z#=G0;LOm*~-^3KMpG;s3mU>B^3$K|&)5CWCXSN-)_=9IkQV@dY`%yE0itbKVzksRv z;gU{F1&?J!{VaZVQ0}#O&Fjw~SCTbiofx|M*yYK)-P5*-`(%A5nS|rYMtPv;n#}o&INFHeKi5 E0O?x(VgLXD literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/response/MessageResponse.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/response/MessageResponse.class new file mode 100644 index 0000000000000000000000000000000000000000..8ac0698c89dcfea3718f4d89d2774b677bf39fb9 GIT binary patch literal 647 zcma)2O;5r=5Pd^SD+Qz?_;K_GXzazChKmU&P$P!>QZ`UhTGJMPmnIq$5B>mulySDL zO2C7M-I+J@X6DU&e7?N{IK!cd0-@uE3n!Ao4`kvjV;RMa;`=a&r8AImET-}{$0l@w zJr@tc@kKCouE%rfCIoYl@d)+)Z+4hOUNAi;7#CjPC0#N9>krp(RD=<+Z zXs!0B1j2R&MHqxy-wWi`axs?Cof!L44GLZ1k3{4toCoz}=Ea1Q{{L5EdGXH*~A$vPWpu$*?RWQ4pU@q}+}U1lq7#+oiGjn;UWy`stZ(PaFkX+Ir)@CBju Bd!qmV literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/response/ServiceResponse.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/response/ServiceResponse.class new file mode 100644 index 0000000000000000000000000000000000000000..02b05584f345338158fbca56bcc079093529bc7c GIT binary patch literal 911 zcma)3U2hUW6g>kAba90iDQZ!R`m)f*eeq4x7mW!Cenbq3j{{8FZ5Gz-M}JixG_f)9 z!5`p{GM+nZL_rg?$;`cX&%Ni|Gv9xF{RZGM9@bD&7|h~DkQf~;O%~*-Nm6F%hj^Kq zU~H0$aAw{Xc@2)j?zz6uL8O+#qi|_n<%_9F-sx#%gfpJ$ zXrhx)@}lTuXCb8>kN$s8D&2i)va@*pMkjhm>Ys}vB7F=`i1>T^0#o+h~d!KB>4W2DHJa>4ywynXoHY>eV8}`v*#sQW_*+_^= zxXIWRcJNt1)?2vEQ&X|OQKCpdmoAUT~p_;n(pC{C~016I{L%Cm8Judb^oEM SN3WFiikf;HrTBJ2{@^DYwU$)? literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/response/UserItem.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/response/UserItem.class new file mode 100644 index 0000000000000000000000000000000000000000..d7b847ea62baf2ebba8cffc622469e87ec883f99 GIT binary patch literal 3091 zcma)7U2_v<6n-|@&2G|d8v+Gl5mAcvlVGiYDMbNGiMFLus20E2rrTy|vRji4S6(|_ zIpdWx&Uh;`4j0O3nb8?XZ*a!nq~ddSHy{0gW+vG^?>WzV-gC}#&bxpA_v`NfCa|F+ zrr>1JtK_P-Rd#JZSFhRC8dtSV&#l?HTU-`=yP`u?kiKi(vvOt2UC&)#xoa1F1qs0y zR%x4U8D~9reNsVk&8gP>d8=Y8$h4Uk{i+iHjJ0~X>;`ttu2@c)d)93~IFl|jgF|h* zBB%W~>aOop?1FpGsW~fU`;zN=zU4a%SB@!rl@)IzH)FeY)$;9C#-U#ER_!Dd95A6F zp`drxaqanfWyP-EwCFguzvCJjt~`t6OC{+O{*Kesbt`it!Db7{MTeE?VxiphY=mq6=mU zapX+Af#_jAkhg5G|w;DRYoXG3^ZEJ47ANI$P|)k@M)3gUx91<7*S#ARGz zxC=K5bJNVHz}j(y>Sa!d-V8J~&=yj1pw;||f#@v5_d;HDTvu?UHBq7Va@{Gf+EoMZ zk?zK14u)l!N?{(0CT?PYhhK19$G<45B@^%C1FEdeP21&EjkR|{gUhyt+IG~Wf!pk( z(G$(cgL6I-ryuX|)##{a`1+Jo(pOaWDFYTeXY@pnJy%7RZb*W*P0UGSu)s@F;F9FE zrXaQG)vHDOsv|So-KfB6sS{pgYsGo1sffvxQ;Nx)1#iw(@a8D--AyF>llE?|5?uB0 z-OGQDvck7E{4>%&QivhLr$DI0K|ak$K7>B56lv;x93Ab<5ocl_NBx~S;z;e|=y+$2 zPOzr&T{X(nc}$8jJn{?DKT+CUq{ATsVUeVO!ia*Gh}JkKNON%#1N*r@+NpaXy6IjI z+@IRteSfF!rGJ|4lY#q}_jiB1Q}@!AP4}t5J#Wq3#Zf+IUAtJrhaRle?XZV9p1uFu%s|LKgvg59s3JiS@kgv+=n@qRkv`ufjE=b2sx8aWHrGg9wT!f z-B~T0XakMsb%Mt8MphS)5rOoq(FU5xCkdL!r?N=_r6N!=n`(g62aGztYnV2}Y?^)Y z5NC0YrRc+VIL~K{Mg9tJP#4EAzC@mqiWzKRl9I+t!o~$k36yaaQ!&+$`wiE*4ouWtN<9v#ZRIIJVipF#0xC?=mGHoEsL2~y>&x0@h_ssydC z2{V%O(`G|!=BzPO$vK*h^8x+*oN()o>q+^7I-O28(~}p}set5T>B$l)Hqs;ap^t6h z?K`4BlUK!%RU?Zb#D}KwycU?qd9caIY7NswJ`tD_O%pqTyN>Nm-nB56D3LfSq+o`L zXr$*Fr5MY-h60m|bJpkZ4keY;jN@HO8kTua%~DDPr2GKm2^A_yQ4|uv*AqTl>zF9| zpfvyujJjPF!4hq-7ILRH0_)qsE&Lt^Zefo6I_>5M>k>BknfeX$%bA5oxFH;E;Z|mO z3m*zEd}Tff<#Cbkgz|*QD|~EW^;viGR8(w5K8Je*(E5Ho!usB~&(80c6Ex}F{{hrN B@~{8^ literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/response/UserResponse.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/response/UserResponse.class new file mode 100644 index 0000000000000000000000000000000000000000..def4bdd7871cbcb769b6215cb57a6656318963bc GIT binary patch literal 1941 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/service/CompanyService.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/service/CompanyService.class new file mode 100644 index 0000000000000000000000000000000000000000..c82189cedf275e38bc145177f67d4c47a55a3a80 GIT binary patch literal 617 zcmb7B%SyvQ6g^Yh)YeC9tA0b`!ff0~MW~9PL@NedxREiv#3|`Sl1U-I=E4u~qr{su zBDE;G890|S=W*}b`^zhU1MD_Y6R?AL>Lw&3O~%bqN>Z1fnF`1~ji=92=l&cvQ5Wb= z#ITkp=dC$*`dA+zVJCnPC(O^lZl~8)imDuE%}Y zz2&P=OOqueFjyiS{jtSy(Sv*knov-7m^k P`KyQi!id3k$=~?^6VIxp literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/service/RoleService.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/service/RoleService.class new file mode 100644 index 0000000000000000000000000000000000000000..b15c72c0864e3bf6831574f4940c3d3eab6d104f GIT binary patch literal 1390 zcmcIk%}(1u5S~p#LQG2oEp4HN_EITaSRr}~sss|1id=yb_0mJ7B_7Ozvumx_sdzOG zJOB@cm|dH+QcOW8T&$hHZ)Uz3&(-zCB>;SZPfe&X_&m@{#qf;DM2D33*=aw;8?5v00A-6K&q0DTTL8~ugC2Vex!PbPs zb~u?Fm6i6~=k9(bga&2UNfHLVPN+@Hv(!ix9~&{mKiZt}NLaxmJrq*$LlL7mO0c{B zAXh@qrVjd$p6V$TN__r6d!nO5;hM3;JcGHC&)xIy5rfT6!KkM^)GDUN{?8bLnxw#{ zh$1%@2K$|RBC4r6u{PyB%u=l~-18$Lwti0yZ2OXHv0AALuSL7vjimBsydCnk`@Rp_5(dgk?R3u0Poxiy9d$B+fhL9ZOA?|`pYtXZS_i%2MB2}dcOFd-dJ_{) zv0LHF;ZiXZwD4`(hxMQQvD!7)U6r7PR^qZ|T#u~=(lv=+0|*m0piRLTck|iZxtu~1Rn<4cZ8a&DwF5hy z^`>k$pFU(yIO46cw->N+;Zz#x|GNDVg9XVs zcCNdX!MEE)FZM8asEa~6zBJOIx^TRd&&bmBNU2cBxy))w^x-xG`$)*@w6c5?`_WG; zy<%U^cMeY$z2j9YwI+)NMta85Z?}OTQMl@Yo=~WB>A{v*{A%Tilw=kL>_t3D>e|_? z#FoN9+eIcvNnrs^Cxf7n9(Mc!)49{9=N!-j=UmvZh^wo@~T(z<1vf{A-kWLUTiHJf!zVb#2e{n0pQ2beZcnn&UCQxnH= zf-K5ACm0>`T^i|T;I#^C&qvQn@sr&8dK1kslbFF9P5ij{RWf=XlVGkHKY_Oxcr!zA zv8Zaot%#HA7d8bZ-io);DPjC;VG1|bLiD_}u1F<6X7H0HehTlPZUnYcZDQ#|T--h? z3g2hqU3fR$|h{DQJzEJcsj_*t53By&~w&d7e*Xw0x zdP{CD%QTq4qhyCT%i6+Fmb`Bp;W7fk%3c-)w@{UNeHfhX8Xj+8Ru zv++_cH)CbQR3~eR-2%ifnfPT$f`lWes&-~aRQLJ#?61Yjk zOFrj{WHEzm5Z-0O`&ENpyz!bTl$)=u^Y^@Xp=Wj)3GB?V19l|D0g|NCIEyqIo0<*JT$i zO5isY_AZpa*|HAh9NTx|`w2zJQQ!A6t|px3uQbq>P%DAoX6YaDtYNKZiMb@i-iqYdrLR7@J|pG_$Zvl!o6np1&ok7NP;^KmG;(X5e4hV(6?8Gqz<(-ijn`7=gg8Rpwxvz;O2v#bLzu{T`G9YTzM;$ojZq9t zo~PJ3R}*Y6-zuwEs^vWV(Oa#rmN@4GE0G@>F3C(gBs9Mn&nMKSeAn2W%}R0;CApHd zTr!a5hHh$BE7j$Ox{PkpX+L(zW2#ls5jVK`agThERhkbwUKa3G$aax5$)YpmP3tTs zuDQ}wuMpQXg~Kv*wW+SrmD=_DrV7DKLapTskG6~2A1L{OwV!p;vaJ!m0?;OLNkU!6 zNyA$9c}*n(IeTg>Yp>hNTph;e~XqpQnGsttIa zA8NCywy5iAyj>_blH#|-b*j;E&J*7)BDR|92HkiEUigq69?`jAAKSI4i5saN30^O{ zD%3u2@c9nmcmaEjbhLzkwe)&k;0Hy!5Wes;u5MO440VgbwN=C2{Iqw>Ne^oGa-tob zwwbC+QAjh72+BhWUyGX=tqg_lxAR$^2dx|Qykn(8cPs=$>*6Ex79OV3-`~S<%L}iK z2Y$5e9y^yC;mcU}iY9ea3r-}V)UBpkr`B_Thj*Q9y%hQ+;0NFjMrg z16kzfTHZ3$Z378ihWS+P!m~2wyoWgYrmt3Kjh?1Ou_1K^nZ$ul#wDZ0W9eVH1NJz5d)7UhJ zEefC1Pc43io43UzB`cD)VLM$EO6t^-Zlz37u~{Th)QxqEL~YTcR)y0dQCxtVaSPSh z!Nn{?H}j&Ft0?__wDgXB~sx2F!9p2jPIS?qll0|z!&6>cS7z&2vEonG3;<(+y* zD-=-KF@-@K;3lgndI$&k8SOpDJ*KYkjY5U(`A;%6^;30jz-Q(NfPHR$2^PEz4kKI_FW_TUce#a(PXZS3R8 z%58WX5BJ{3&huf;d7R!_O9{i2Ko?ZJ_=NTys|a6Xe?@!I!hOX2Q*>T0j^If=MGc10 zk5BWiiSlp6XLx6DhihocQ(Sq95{0DU%F|pq$B{wQzl596WI!3CCWA8 z!v<#ffS>X#S!+od+aU^8cp7Ia*nU>?>l?&Yc$=^Ci*9}hqtW-z2@(Su&u8ggY>&o& zjUf~=os85gmJ1qRE(7z`)~}UsA87rJ>g{iZx7@K_!_%Qt$}piBAtZ-M+uP~BQ4;i3 z{NY(1f5v#t;Oc=9THuxLUft1We$I!oub*iN!a{{bBKB2Pg?)HZ0}#T{!RJzf!4oUVEP6fRAV$f zL({TMCk{{G#~Iucbi^d?!BPI?wAr1Z!WFYik=ZmNis7|nn((lm>pSodylc>GT8_FG zaZgC3@6y>4>&xo699$@z_(%K`{UN#L6I?8Q=@c`q)A(m?R#$_V$jH0o48D1!^}kNx zThB1Szb&KUq%h^U0pIwoW0jv=NO+OS63 z@V$o5q5eqyrjgT%+kER8KBFaJdfLPsMlib?Q;m8>N>;2?P2rNwyT=wCbTXVSK#$59B*KKeIsAi-h{1qGt=5zn8x19Sb00i^iF#IKD?VhC-Gi< zl|fG%vtvuZUlsHfbAqeRw2DS}HQWlw0zHED#Toay;$ z4d;im&T*E+<7(8O!$xBDBDU#F)pt&A2FlP02Q_pmRe|oo2)eUBROqf?(bDkDDgNE` zA*4bStvFAJ;3CkjeR-gLkgj@wpgl;?PSUxL&|x1UXpa)K$LQD(vo?H$kUoz4c|iFX zKF))#Ct{$Tt$=p60@~RMXirx_`#=S>cT_;L7lFq45oj{&LZIzf3|dQ4+FM4QB#s>f zT!L7~${DqR0nm0zb#%Z;dpF-b-}&D8`=6J80{93&#-Ir-mED@*Nwez6z-ai= z^9?Thc3CbN`Fi~U58G~4mYVO@YxQajg92ku%ze|Snoh;o+8e}7EN(Y2hwcnhyXwSW-;*3Gx$0%3+%Y{w2(1uE%?yKg2Eap`pmGdluP z+YKkMYjVf-?cJ)(JB}Nef$ciJz;e;`Du!S8Y^Sp4nKk*$^`08L(sX=d&nzpK8D{%} zk#7XW=Bz>fCxc7(BMg>1rP~b|nGnjBUu^v1@Ia%8G!ALtj^9kgry$EuATb8PW*s zs!_E4fEVH=yW*HZ!y}zskHAU<2}w5w2ggz*x0;LN9A;uTFR&QpOUn#Q!*Xk;?HDE3 z3ubT9e`V!<9UtHV-IgyE1g=B|;^fP@80L=UeJM~e9Kj{p-SE9TUOj;f=3~eT%=SY} z#{w=3XuB+ur|JJn=TXzaVF@;=so=7t?pdGinP`pHHS!@U85JN zi+wJEO?(x@mcYy#g>`JBL|ds!sc_iJ*hOD8r_SO^pnwNDcJMXDeTs)xs@k3GOqN%r z$T84z1XD`2-=l%q5)nw0+=f?{w{6v+&qhz%MRkt}8Clvs+pctjgSs?I%>m64(bpYE zdWEX#`;t95-fn-G;e;6A?AQ3uff4RFF8CbcH*u)hlH_TaC!No?_<2ZKb!RmD8&cW% z=Qx#Jc#esm`AWki*KrJTJ&ECvkwQxFP45s`UMs>{1gf+9*Q&wpmgiueyXKg z@W;+IvS|W;90Fgb3XPIU1w8)(pY%dahfrslVr?^$$YF)>iu@4g7#{+kW0hjcU284e zR15dIhQCngW;xdZooYj;a0|DOpl^lHciPYvp;aWN2|aO$FAi~UV}9Wf_fJrj3Z>JG xXa-}*b_8X*t#Z1hGKmR%6UMq_mr_1}Z@FrC)J}@;c>bQB1X-RV><>4l{spfI$5{XX literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/service1/AppUserService.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/service1/AppUserService.class new file mode 100644 index 0000000000000000000000000000000000000000..a9758a3a425037e148c54e0d7488992bea310bd2 GIT binary patch literal 1796 zcmbVN+iuf95Ivjb(xeS-niR_Y+Tw7jDNuL_LP{i118IYZK!`WvEUAmLj_ge!zs3U} zz(*lw*UqIe2#c3^XLk0?IkPjHpTEBU0Pq-3a!4^$ZLe?o+;Rn%<}l!XVA9XXvH6}^ z9}M1+(FyGw(hTb-*2pqlOZ3e4rxR{Vayf#6WZUmpBd+2Zc8pdWmJ8{~@f5XI{m78B z!W4vZ$mOxuePj7npG%^_u+rnQ?z#$+tPP{u(#eO?am|(!$Qnbwn{$%ct&(d8~BXGj~bs_z+6PM2Yeb{k{G;)tl#1#t|5ubxj^O(UeF>(P3G6&N!DS)(4=K5XeuxImgA~w|F6&t z4-s-2u1RI2cA2$R%cCOxMbYa-fl2ig`8VpKpfQdlZO)@dx2c-6LPT3$ugAMhq1qq{ zuT1)F{`MJ43(-p8w0Cu=Rv7lxJZ#;zy`hjQer*ARVVjcud!!i3bW(9_iqBryvZRuUAklm$B3!cR@sax7XpHOKz9Se4;TSf?Ds?%|o$e$b zaM6t};*`4h6l%S(2BYcD*~i@ea^x|5NTMeOkw{-!RgNTeyrFONmyS#GT|WJ=?yBa` zGB7OB!wi(u3>jp}UM4F;M4_JEJPPDmAy*2kWEU6gGgzA)S=UEO*oa*D6v}k6qTQP~ zOBf;2xk(b*CeSUMpMhM^u8X)djlMjI4)L$x>SFXYT-T>=;HLiGioV;}(e`Z^vm;gQ ux`VqjSE%(~+;tzjv#2n=i3gFZxC9~#a$_&Td>Cz!@<-7YqklbBz5U+_MdslE literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/service1/AppUserServiceImpl.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/service1/AppUserServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..e3f9267fe1cd8cf7b060e3176ae9c83755b2d159 GIT binary patch literal 23353 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/service1/AppUserSessionsServiceImpl.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/service1/AppUserSessionsServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..99dc62c3113221f4e397ef4db873d7de2a935db9 GIT binary patch literal 1265 zcmbVLTW=CU6#fQi*HT=t+G@SETCH3XCng#-G$v@$#00G=N_-ubDV+*Co0$Q^ztTiw z^uhS-k20PGLbX6*`>-=}&Yts~@7#X<{{92NL)`O_V0aYh4mVP?L+NcnPr$d>^ z|EXxlu4RVB9Th6~jA18#W|Tsm`0aN?r#iB(tZKAnB@DF_E>4c&NmZK`w~%fSP z>}&IZH>3zHKM+Bj1Q!zrUgu#qZ&09f%8CI$~5be4!DwfB}lsio zi>4<@d&-cAM~GfYdV4rW_Yz5qB&F$Irf-*Q5_G4FUy&)6z99RFqy#R|=?_tSq>v@Q z99BrTHnPS=Tq245h7lN6>Ak>6h{LYoGMUBj&*_fg{o-e2OW$xMfuFefku;+aF%=N- nF|MBBh0u6a(Q literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/service1/PositionAndDepartmentServiceImpl.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/users/service1/PositionAndDepartmentServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..9534bb2868321b269a754ea23ebbec31d0c5698e GIT binary patch literal 1994 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 cS7X2b7nQL4(EtDd literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/utils/Port_Constant.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/utils/Port_Constant.class new file mode 100644 index 0000000000000000000000000000000000000000..6df5bf3fb0d1922d975e74850a1eadc16b5ab4e7 GIT binary patch literal 810 zcmah{ZEw<07(EvT6l8CxQ|5He*A0`FQc#$S2^pP|bd=CSvQJIHhIQ#$Q!Xa{EaL|g zKllUuQO4&23+$6k+S~K=Ip;ht{qy(NZva)i$sob7KZ>rE*mHx>)6_mB0;Mc5J=Va=K>Eb{c9!m5^shX=U|ojf|~+Pj@Wc?mI2>yxHzh z=wsW~n@+pyG+V8nZdnqx7_vP6CXapYxm4ObLnunP%aHIRhV7ZspxHO>#|lBrth>Y7!LASN19>N@I$XNy&ih8?G6J^ z%sCpl!N84uffvE_$;>8)Bwpq50()e|FZ~G#8UI->Z7F9((|F{a`7`}ntCz)6aX=L% z>4%|~kwThKhEQULb1V1`vZ8GIR>a0ie3S6@3N8@7w}S5zez1ZclFlySxyK{yk>g`R zB|62GEkibV>DO4YU?wTk%BN~#1BVgZwdn#Kn+v?DCp?vm}6q;Ed> zgS0$AG!mcvQN}ydLYo*9+oXHv%-(zE+>hB`zrS4oSjMV`A%?}OQ_s4BTek4BP0zF% z*>|QZHe6m8YmVLUxa}o39JjvPIu;uI45LToA7t0Z+N$i5%+lu)5cM5edO;7g^;4E{Bz zCPD~Az%Z^OhHDJLLf0jpD)q87JlC`j@|)>$n0&A62p|}OCczCIngk&UrgelQ2upBN zM;Jl5x}_t6VTQ31C9>VD?+bUA?^~2#tmIU=RpzcKvD%Elhj9|;9hwb>NK#ORlQ#8& zVWa~bw`SVhVu)@D@6f5e<+4?taLGS-!mXyDMJ|;dutE_m;DLrk;_b`4)$l}J#}cyC z4eq+URdtT3$(jE8?Cc+js+ZsFE7|21)r>(?s&+myyzUR{mNh+CCuM;i>v)J|h9~`W zYZh-b@_ibv_Z|<{I98Bl5v!_VIJ7rYr5oA?4y@lg~7D1 z(%Jf^Z3|b46%7pqhWY=vFASl}J6O!oO!?>r2Z~d25&^O_gv!$VDNCaVL=$rG$kR`A zsbhrVMhSf;EPuP-!78ya-x;E(m{1_@S71_ssel3r1!jT@%xXU<$k)b%QSrAiX;cDj zB#cV1jalOqb6<&f2)F4OCv6}VBcv@s=ijI6uuOY*l!x@98%Iy6C`b9ojI_+c%o*l; zBteo)iK-x7tu-WNYD5Qwhj2Fv+@pUODWtpktx$kui?=aXdE?7mR0>k`mT&qTnZ+;k zrlYV!&aM=NX{d5tMH#a4=tzuZ&hh9c*uUeXlmHFmC(yAgivB5{Df=8R$jUDaLmn@S GQ-1)MJ4m$v literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/utils/WireFrameConstant.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/utils/WireFrameConstant.class new file mode 100644 index 0000000000000000000000000000000000000000..3c3cefaa18bdc9b0b4df3fa802650be4327fc24d GIT binary patch literal 1621 zcma)+TX)k&5XWat94k%;khZjG>4gF

    Oq@S12IMa-v4ITw69tZ|+)J;!W2QM;8u! ztUmReKJ)|hL-q8(GKM{;FFZuq-^}cPc4lY&&%b~DO+>foq(L=Cm!fph$^=)5C|YG9 zRo;3aGttfXLO5xX7d$B%w8rS{34hF6iYLddV0I#+g3;!_Yj@n?H0b+BjCTAN5u+lL z$?+8g_! zw{-3R7p21SE7xjgcr?Jy*BGrYbFR`Y?QbwzTgKPCjzw=Vs>zs9y%SCc2Nu1<=+t27 zF>1o#^+R{h9a?k|R+*sq4OlzDxa}juWn_rca;9*sP1yaQzZbfPp+z4uvQ(NJ7vc%_ zXr+lgboOm1U1!vI%(H0DGe%ol%?{mZ==C7@F}B6L5QSVovH@p*?E4md!ie=@7`aa9 z1$~P?2jsX6nI;gadimVwB8eK@k>^+xVmafvjBq1%r{n2X+GxuIl*Hp$H0b;x0zw>a__fa?)5d=@d=3=qLJ_(HS4(*e@3|k%hdPjvYUZxSH@x zYJO&1E9Nq1bj5#(w}>~@9HnIziLTV+cK&~_^`?G?sNG8vkvWRzxyTzdXLREwF?K@tbjhcBxM5pa!T$7Px8fCit|$+u*YXp98;Q@T=hS2EPv8HTX@? z1%uxPziaS&;P(x_1ioVM2jHs)Uju(+@D1=ygInNF4gL&#%iu4-Um5&0_*;W-gTFKQ zF8IE|HrO$^1MV8U2lfp99_$<30|y2Vz(a#a;IY9I@S(v+xH+aL6W?EOgRP2*>ev6I oU;n7C^f!F<1rsiuolVXRHL~13VMkDP56%SC-3k62X;v_6#xJL literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/data.sql b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/data.sql new file mode 100644 index 0000000..77daec5 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/data.sql @@ -0,0 +1,2023 @@ +/* Instructor */ +insert into RN_INSTRUCTOR (ID, FIRST_NAME, LAST_NAME, EMAIL, CREATED_AT, UPDATED_AT) values + (1, 'rajdeep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (2, 'sandipan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (3, 'niladri', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (4, 'abhishek', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (5, 'sayandeep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (6, 'titas', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (7, 'dip', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (8, 'asif', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (9, 'anushree', 'sanyal', 'anus@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (10, 'trisha', 'das', 'trisha@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (11, 'avijit', 'chakraborty', 'avijit@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (12, 'dona', 'sen', 'dona@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (13, 'disha', 'maitra', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (14, 'sasa', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (15, 'vvvv', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (16, 'qqqq', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (17, 'saaaaayasndeep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (18, 'lllll', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (19, 'kkkkk', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (20, 'ffffff', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (21, 'rajaaQdesep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (22, 'sandaaQipsan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (23, 'nilaaQadri', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (24, 'abQhaaishek', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (25, 'sayanaadeep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (26, 'tiaatas', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (27, 'dittp', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (28, 'attsif', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (29, 'anutttshree', 'sanyal', 'anus@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (30, 'trigggsha', 'das', 'trisha@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (31, 'avijgggit', 'chakraborty', 'avijit@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (32, 'dogggna', 'sen', 'dona@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (33, 'rgggajdeep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (34, 'sangggdipan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (35, 'nifgfladri', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (36, 'abhisfgfhek', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (37, 'safgfgyandeep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (38, 'titfgfas', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (39, 'dfgfip', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (40, 'asifgff', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (41, 'fggfrajdeep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (42, 'fgfgsandipan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (43, 'ncxilgbgadri', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (44, 'adghghbhishek', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (45, 'sayandhyyueep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (46, 'teritas', 'mereaity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (47, 'dipere', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (48, 'asifcc', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (49, 'anushrccee', 'sanyal', 'anus@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (50, 'trishawww', 'das', 'trisha@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (51, 'avijiqqt', 'chakraborty', 'avijit@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (52, 'qqqdona', 'sen', 'dona@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (53, 'rajqqqdeep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (54, 'sandipqqqqan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (55, 'niladriwww', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (56, 'abhishewwwk', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (57, 'sayandeepbbb', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (58, 'tbbbitas', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (59, 'dbbbip', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (60, 'asbbbif', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (61, 'rajdeAFep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (62, 'sanSDFipan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (63, 'nilaSDFdri', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (64, 'abhiSDFshek', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (65, 'sayaSDndeep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (66, 'tiAStas', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (67, 'diASp', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (68, 'aASsif', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (69, 'anuASshree', 'sanyal', 'anus@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (70, 'triASsha', 'das', 'trisha@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (71, 'avASCijit', 'chakraborty', 'avijit@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (72, 'donVa', 'sen', 'dona@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (73, 'rajCVdeep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (74, 'saVndipan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (75, 'nilVadri', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (76, 'abChishek', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (77, 'saCyandeep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (78, 'titCas', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (79, 'diCp', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (80, 'asCif', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (81, 'rajdeCep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (82, 'saSndCipan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (83, 'nilCadri', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (84, 'abhSCshek', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (85, 'saSyCandeep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (86, 'titSasCE', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (87, 'diCp', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (88, 'asEif', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (89, 'anEushree', 'sanyal', 'anus@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (90, 'triEsha', 'das', 'trisha@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (91, 'avEijit', 'chakraborty', 'avijit@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (92, 'donEa', 'sen', 'dona@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (93, 'raEjdeep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (94, 'sanEdipan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (95, 'niladEri', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (96, 'abhEishek', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (97, 'sayEandeep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (98, 'tEitas', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (99, 'dEip', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (100, 'aEsif', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (101, 'rajSSdeep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (102, 'sandSSipan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (103, 'nilaLSSdri', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (104, 'abLhishek', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (105, 'saLyandeep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (106, 'tLitas', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (107, 'diLp', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (108, 'aLsif', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (109, 'anLushree', 'sanyal', 'anus@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (110, 'triLsha', 'das', 'trisha@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (111, 'aviLjit', 'chakraborty', 'avijit@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (112, 'doLna', 'sen', 'dona@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (113, 'rajLdeep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (114, 'sandLipan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (115, 'niULladri', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (116, 'aLbhUishek', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (117, 'sLLUayandeep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (118, 'tiLUtas', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (119, 'diUp', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (120, 'asUif', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'); + + +/* User */ +insert into user (user_id, password, first_name, last_name, email, company, phone, address1, address2, country, postal, role, is_active, is_blocked, security_provider_id, default_customer_id, secret_question, secret_answer, enable_beta_testing, enable_renewal) values +('demo' , 'demo' , 'Mrinmoy' , 'Majumdar', 'arivera2@joomla.org' , 'Abshire Inc', '7-(740)701-4547', '80429 Garrison Crossing', '4967' , 'USA' , '64890', 'USER' , 1, 0, 10001, 20000, 'Diverse' , 'Yellow' , 0, 0), +('admin' , '$2b$10$AkngMoFbJhllHomzUFdwAehsPzbHxY31XXtWTr0Cnpo9OYs7enn0q' , 'Theresa' , 'Russell' , 'trussell1@about.me' , 'Glover, Adams and Bins', '383-(779)851-3208', '30874 Graceland Terrace', '99152' , 'USA' , '51065', 'ADMIN', 1, 0, 10001, 20000, 'knowledge base', 'Mauv' , 1, 0), +('user' , '$2b$10$AK/siGGl4ITIq0dZHDck0uAyLJHkGPOeLBSAyUL8j5OU5vlf79wjq' , 'Virginia' , 'Reynolds', 'vreynolds0@slashdot.org', 'Rippin, Osinski and Beatty', '84-(228)809-9998', '0118 Burrows Plaza', '496' , 'USA' , '94086', 'USER' , 1, 0, 10001, 20000, 'Innovative' , 'Turquoise', 1, 1), +('jowens3' , 'jowens3' , 'Judy' , 'Owens' , 'jowens3@hp.com' , 'Altenwerth, Fisher and Heidenreich', '30-(772)268-8227', '98 Loeprich Way', '447', 'Greece' , null , 'USER' , 0, 0, 10001, 20001, 'capacity' , 'Fuscia' , 1, 1), +('kburns4' , 'kburns4' , 'Kelly' , 'Burns' , 'kburns4@icio.us' , 'McCullough-Morar', '86-(857)185-5740', '1638 Basil Alley', '56297' , 'China' , null , 'ADMIN', 1, 0, 10000, 20002, 'user-facing' , 'Crimson', 1, 1), +('jshaw5' , 'jshaw5' , 'Julie' , 'Shaw' , 'jshaw5@opera.com' , 'Steuber-Okuneva', '1-(871)375-6188', '389 Myrtle Pass', '41444' , 'Canada' , null , 'ADMIN', 1, 1, 10000, 20000, 'software' , 'Green' , 0, 1), +('pgilbert6' , 'pgilbert6', 'Peter' , 'Gilbert' , 'pgilbert6@eepurl.com' , 'Robel Inc', '52-(372)555-4687', '11522 Fuller Avenue', '5' , 'Mexico' , '39230', 'ADMIN', 1, 1, 10000, 20000, 'multi-state' , 'Puce' , 1, 1), +('jjacobs7' , 'jjacobs7' , 'Justin' , 'Jacobs' , 'jjacobs7@google.co.uk' , 'Harris-Bashirian', '963-(199)359-2552', '95012 Hanover Street', '2377' , 'India' , null , 'USER' , 1, 0, 10000, 20002, 'motivating' , 'Crimson', 1, 0), +('kbennett8' , 'kbennett8', 'Kevin' , 'Bennett' , 'kbennett8@hostgator.com', 'Leannon Inc', '62-(892)710-5713', '459 Coleman Drive', '397' , 'Indonesia' , null , 'ADMIN', 0, 0, 10001, 20000, 'Exclusive' , 'Purple' , 1, 1), +('cmurphy9' , 'cmurphy9' , 'Chris' , 'Murphy' , 'cmurphy9@over-blog.com' , 'Mosciski LLC', '64-(272)961-0086', '2 Ludington Point', '7' , 'New Zealand', null , 'ADMIN', 0, 1, 10000, 20000, 'empowering' , 'Maroon' , 0, 1); + +/* Employees */ +insert into employees (id, last_name, first_name, email, phone, address1, address2, city, state, postal_code, country, avatar, job_title, department, manager_id) values + (201, 'Harris' , 'George' , 'gharris0@pagesperso-orange.fr', '1-(210)270-8536', '2 Bayside Drive', null, 'San Antonio', 'Texas', '78240', 'United States', 'https://robohash.org/modilaboriosammolestiae.bmp?size=50x50&set=set1', 'Administrative Assistant I', 'Toys', null) +,(202, 'Hayes' , 'Rachel' , 'rhayes1@si.edu', '1-(971)797-2729', '30 Anhalt Street', null, 'Portland', 'Oregon', '97232', 'United States', 'https://robohash.org/seddistinctiodolorem.jpg?size=50x50&set=set1', 'Design Engineer', 'Books', null) +,(203, 'Palmer' , 'Anthony', 'apalmer2@posterous.com', '1-(702)984-2108', '02809 4th Pass', null, 'North Las Vegas', 'Nevada', '89036', 'United States', 'https://robohash.org/vitaererumdolore.png?size=50x50&set=set1', 'Health Coach II', 'Toys', null) +,(204, 'Alvarez' , 'Laura' , 'lalvarez3@time.com', '1-(518)328-2658', '647 Lakeland Road', null, 'Albany', 'New York', '12210', 'United States', 'https://robohash.org/nobisplaceatquisquam.jpg?size=50x50&set=set1', 'Computer Systems Analyst II', 'Health', null) +,(205, 'Reynolds', 'Annie' , 'areynolds4@nasa.gov', '1-(775)838-2203', '163 Carey Street', null, 'Reno', 'Nevada', '89550', 'United States', 'https://robohash.org/praesentiumdoloremrerum.png?size=50x50&set=set1', 'Senior Quality Engineer', 'Kids', null) +,(206, 'Henry' , 'Joe' , 'jhenry5@bbb.org', '1-(682)563-2229', '1 Harper Circle', null, 'Fort Worth', 'Texas', '76178', 'United States', 'https://robohash.org/earumiurevoluptas.jpg?size=50x50&set=set1', 'Chief Design Engineer', 'Electronics', null) +,(207, 'Willis' , 'Willie' , 'wwillis6@berkeley.edu', '1-(317)654-6888', '641 Kropf Parkway', null, 'Indianapolis', 'Indiana', '46216', 'United States', 'https://robohash.org/suntsitnecessitatibus.png?size=50x50&set=set1', 'Structural Analysis Engineer', 'Shoes', null) +,(208, 'Lawrence', 'Keith' , 'klawrence7@discovery.com', '1-(501)583-8851', '2184 Melby Crossing', null, 'Little Rock', 'Arkansas', '72222', 'United States', 'https://robohash.org/delenitiomnisconsequatur.jpg?size=50x50&set=set1', 'VP Quality Control', 'Outdoors', null) +,(209, 'Johnston', 'Tina' , 'tjohnston8@alexa.com', '1-(901)128-9976', '72 Hauk Road', null, 'Memphis', 'Tennessee', '38114', 'United States', 'https://robohash.org/voluptasautmaiores.png?size=50x50&set=set1', 'Assistant Media Planner', 'Electronics', null) +,(210, 'Burns' , 'Lisa' , 'lburns9@taobao.com', '1-(585)113-8402', '99 Manufacturers Drive', null, 'Rochester', 'New York', '14624', 'United States', 'https://robohash.org/illumsinttempore.jpg?size=50x50&set=set1', 'Operator', 'Industrial', null) +,(211, 'Stone' , 'Howard' , 'hstonea@ucsd.edu', '1-(202)958-2516', '03 Anthes Center', null, 'Washington', 'District of Columbia', '20425', 'United States', 'https://robohash.org/eautet.bmp?size=50x50&set=set1', 'Account Executive', 'Electronics', null) +,(212, 'Brown' , 'Julie' , 'jbrownb@squidoo.com', '1-(217)741-6449', '37574 4th Drive', null, 'Springfield', 'Illinois', '62705', 'United States', 'https://robohash.org/laborumtotameveniet.png?size=50x50&set=set1', 'Analog Circuit Design manager', 'Electronics', null) +,(213, 'Turner' , 'Edward' , 'eturnerc@theatlantic.com', '1-(701)353-1996', '3 Bultman Circle', null, 'Fargo', 'North Dakota', '58122', 'United States', 'https://robohash.org/sedutporro.png?size=50x50&set=set1', 'Structural Engineer', 'Computers', null) +,(214, 'Nichols' , 'Douglas', 'dnicholsd@fda.gov', '1-(302)771-6486', '5150 Holmberg Way', null, 'Wilmington', 'Delaware', '19805', 'United States', 'https://robohash.org/blanditiiscommodiet.png?size=50x50&set=set1', 'Editor', 'Outdoors', null) +,(215, 'Gilbert' , 'Jessica', 'jgilberte@infoseek.co.jp', '1-(320)607-0289', '32 Summit Park', null, 'Saint Cloud', 'Minnesota', '56372', 'United States', 'https://robohash.org/providentaccusamussed.bmp?size=50x50&set=set1', 'Account Executive', 'Baby', null) +,(216, 'Hernandez', 'Kathy' , 'khernandezf@shinystat.com', '1-(210)733-3380', '24 Merrick Way', null, 'San Antonio', 'Texas', '78225', 'United States', 'https://robohash.org/utfaciliset.png?size=50x50&set=set1', 'Junior Executive', 'Movies', null) +,(217, 'Sullivan', 'Lillian', 'lsullivang@flavors.me', '1-(904)885-2053', '42 Manufacturers Pass', null, 'Jacksonville', 'Florida', '32215', 'United States', 'https://robohash.org/quiaetaut.jpg?size=50x50&set=set1', 'Engineer I', 'Sports', null) +,(218, 'Jenkins' , 'Frances', 'fjenkinsh@huffingtonpost.com', '1-(512)764-3809', '69255 Dakota Plaza', null, 'Austin', 'Texas', '78769', 'United States', 'https://robohash.org/voluptatemnamaliquam.bmp?size=50x50&set=set1', 'Developer IV', 'Baby', null) +,(219, 'Myers' , 'Roger' , 'rmyersi@alexa.com', '1-(480)583-9583', '3 Eagle Crest Place', null, 'Gilbert', 'Arizona', '85297', 'United States', 'https://robohash.org/consequaturutquo.png?size=50x50&set=set1', 'Account Executive', 'Beauty', null) +,(220, 'Hunter' , 'Bonnie' , 'bhunterj@ucsd.edu', '1-(320)933-5140', '99 Arapahoe Terrace', null, 'Saint Cloud', 'Minnesota', '56372', 'United States', 'https://robohash.org/etfacilisquo.bmp?size=50x50&set=set1', 'Analog Circuit Design manager', 'Baby', null); + +/* Products */ +insert into products (id, product_code, product_name, description, standard_cost, list_price, target_level, reorder_level, minimum_reorder_quantity, quantity_per_unit, discontinued, category) values + (601, 'P1' , 'Nikon D810' , null, 1167.09, 1123.39, 75 , 10, 10, 50, 1, 'Camera') +,(602, 'P2' , 'Canon EOS 5D Mark IV' , null, 1382.83, 1293.84, 90 , 15, 15, 56, 0, 'Camera') +,(603, 'P3' , 'Dell XPS 13' , null, 1482.83, 1393.84, 95 , 20, 30, 56, 0, 'Laptop') +,(604, 'P4' , 'iPad Air' , null, 382.83 , 293.84 , 180, 75, 50, 56, 0, 'Tablet') +,(605, 'P5' , 'Acer Aspire S 13' , null, 882.83 , 793.84 , 40 , 15, 15, 56, 0, 'Laptop') +,(606, 'P6' , 'Nexus 6' , null, 633.88 , 511.7 , 75 , 10, 20, 79, 1, 'Phone' ) +,(607, 'P7' , 'ThinkPad T365' , null, 1441.02, 1308.98, 100, 30, 10, 92, 1, 'Laptop') +,(608, 'P8' , 'Moto Z' , null, 538.44 , 462.34 , 75 , 20, 20, 54, 1, 'Phone' ) +,(609, 'P9' , 'HTC 10' , null, 547.58 , 481.83 , 50 , 5 , 15, 58, 1, 'Tablet') +,(610, 'P10', 'MacBook Pro 13.3' , null, 1625.81, 1576.61, 120, 40, 30, 11, 1, 'Laptop') +,(611, 'P11', 'Nikon D500' , null, 867.09 , 723.39 , 75 , 25, 15, 50, 1, 'Camera') +,(612, 'P12', 'Pentax K-1' , null, 882.83 , 793.84 , 50 , 10, 5 , 56, 0, 'Camera') +,(613, 'P13', 'Asus Zenbook Ux305' , null, 1182.83, 1093.84, 55 , 10, 5 , 56, 0, 'Laptop') +,(614, 'P14', 'HP Envy m7-n109dx 17.3', null, 1382.83, 1293.84, 50 , 10, 10, 56, 0, 'Laptop') +,(615, 'P15', 'Microsft Surface Book' , null, 1682.83, 1593.84, 200, 80, 50, 56, 0, 'Tablet') +,(616, 'P16', 'Apple iPhone 7' , null, 833.88 , 711.76 , 250, 100,50, 79, 1, 'Phone' ) +,(617, 'P17', 'Google Pixel' , null, 641.02 , 608.98 , 100, 30 ,20, 92, 1, 'Phone' ) +,(618, 'P18', 'Samsung Galaxy S7' , null, 538.44 , 562.34 , 75 , 15, 10, 54, 1, 'Phone' ) +,(619, 'P19', 'Samasung Note' , null, 547.58 , 481.83 , 75 , 15, 15, 58, 1, 'Tablet') +,(620, 'P20', 'Chromebook 11.6' , null, 1078.81, 1008.61, 80 , 14, 10, 11, 1, 'Laptop'); + +/* Customers */ +insert into customers (id, last_name, first_name, email, company, phone, address1, address2, city, state, postal_code, country) values + (1 , 'Gray' , 'Clarence' , 'cgray0@rambler.ru' , 'Jetpulse' , '1-(260)615-5114', '02937 Merrick Avenue' , null, 'Fort Wayne', 'Indiana', '46805', 'United States') +,(2 , 'Cooper' , 'Emily' , 'ecooper1@macromedia.com' , 'Skippad' , '1-(251)614-5034', '60 Forster Crossing' , null, 'Mobile', 'Alabama', '36605', 'United States') +,(3 , 'Wilson' , 'George' , 'gwilson2@xinhuanet.com' , 'Riffpath' , '1-(901)445-9881', '52 Browning Center' , null, 'Memphis', 'Tennessee', '38181', 'United States') +,(4 , 'Mcdonald', 'Michael' , 'mmcdonald3@twitter.com' , 'Feedfire' , '1-(419)743-7314', '85093 Jackson Park' , null, 'Toledo', 'Ohio', '43610', 'United States') +,(5 , 'Tucker' , 'Lori' , 'ltucker4@etsy.com' , 'Oyondu' , '1-(202)381-2663', '0706 Heffernan Pass' , null, 'Washington', 'District of Columbia', '20380', 'United States') +,(6 , 'Hansen' , 'Lois' , 'lhansen5@stumbleupon.com', 'Yozio' , '1-(315)385-6866', '2 Ruskin Pass' , null, 'Syracuse', 'New York', '13251', 'United States') +,(7 , 'Grant' , 'Frances' , 'fgrant6@yale.edu' , 'Eire' , '1-(863)799-9068', '61402 Morning Court' , null, 'Lakeland', 'Florida', '33811', 'United States') +,(8 , 'Lewis' , 'Catherine', 'clewis7@unesco.org' , 'Realpoint', '1-(915)208-4997', '775 Messerschmidt Junction', null, 'El Paso', 'Texas', '88563', 'United States') +,(9 , 'Rogers' , 'Edward' , 'erogers8@guardian.co.uk' , 'Quinu' , '1-(971)934-2404', '7074 Montana Place' , null, 'Portland', 'Oregon', '97271', 'United States') +,(10, 'Owens' , 'Tina' , 'towens9@earthlink.net' , 'Blogtag' , '1-(712)989-9002', '59039 Sachtjen Street', null, 'Sioux City', 'Iowa', '51105', 'United States') +,(11, 'Peterson', 'Fred' , 'fpetersona@home.pl' , 'Meedoo' , '1-(202)228-9380', '55 Knutson Street', null, 'Washington', 'District of Columbia', '20099', 'United States') +,(12, 'Cox' , 'Jason' , 'jcoxb@slashdot.org' , 'Tagcat' , '1-(651)991-0172', '19 Hoffman Avenue', null, 'Saint Paul', 'Minnesota', '55114', 'United States') +,(13, 'Perez' , 'Paul' , 'pperezc@ask.com' , 'Kazu' , '1-(405)290-7944', '6336 Continental Circle', null, 'Oklahoma City', 'Oklahoma', '73167', 'United States') +,(14, 'Duncan' , 'Anthony' , 'aduncand@disqus.com' , 'Aibox' , '1-(727)705-8400', '17794 Northport Point', null, 'Clearwater', 'Florida', '33763', 'United States') +,(15, 'Graham' , 'Sean' , 'sgrahame@google.com.br' , 'Tekfly' , '1-(901)443-0731', '47493 Reinke Drive', null, 'Memphis', 'Tennessee', '38131', 'United States') +,(16, 'Simpson' , 'Jose' , 'jsimpsonf@youtube.com' , 'Youspan' , '1-(518)381-4659', '498 Carey Lane', null, 'Albany', 'New York', '12262', 'United States') +,(17, 'Simmons' , 'Frances' , 'fsimmonsg@webster.com' ,'Feednation', '1-(251)473-1327', '44102 Montana Crossing', null, 'Mobile', 'Alabama', '36641', 'United States') +,(18, 'Schmidt' , 'John' , 'jschmidth@vinaora.com' , 'Topicblab', '1-(202)945-2079', '384 Goodland Pass', null, 'Washington', 'District of Columbia', '20210', 'United States') +,(19, 'West' , 'Roger' , 'rwesti@cornell.edu' , 'Skilith' , '1-(716)707-3907', '74 Nancy Pass', null, 'Buffalo', 'New York', '14215', 'United States') +,(20, 'Fields' , 'Jesse' , 'jfieldsj@shop-pro.jp' , 'Vinte' , '1-(617)810-9493', '602 Laurel Park', null, 'Boston', 'Massachusetts', '02203', 'United States') +,(21, 'Patterson', 'Kathy' , 'kpattersonk@machines.org', 'Brainverse', '1-(806)803-9725', '67063 Spenser Junction', null, 'Amarillo', 'Texas', '79188', 'United States') +,(22, 'Bell' , 'Stephanie', 'sbelll@gravatar.com' , 'DabZ' , '1-(801)924-1975', '05 Gina Crossing', null, 'Salt Lake City', 'Utah', '84145', 'United States') +,(23, 'Turner' , 'Martha' , 'mturnerm@hp.com' , 'Yadel' , '1-(225)880-9134', '97789 Scofield Point', null, 'Baton Rouge', 'Louisiana', '70894', 'United States') +,(24, 'Ross' , 'Richard' , 'rrossn@weebly.com' , 'Voolith' , '1-(415)690-1916', '19 Briar Crest Alley', null, 'San Francisco', 'California', '94164', 'United States') +,(25, 'Stephens', 'Stephanie', 'sstephenso@times.co.uk' , 'BlogXS' , '1-(501)827-1408', '63291 Huxley Drive', null, 'North Little Rock', 'Arkansas', '72118', 'United States') +,(26, 'Sanchez' , 'Diane' , 'dsanchezp@sun.com' , 'Tagtune' , '1-(315)979-6793', '13 Oneill Junction', null, 'Syracuse', 'New York', '13224', 'United States') +,(27, 'Lawrence', 'Douglas' , 'dlawrenceq@flickr.com' , 'Browsetype', '1-(610)622-4045', '83224 Mallard Center', null, 'Philadelphia', 'Pennsylvania', '19109', 'United States') +,(28, 'Hansen' , 'Lori' , 'lhansenr@patch.com' , 'Einti' , '1-(915)266-1989', '48410 Westport Circle', null, 'El Paso', 'Texas', '88546', 'United States') +,(29, 'Medina' , 'Robert' , 'rmedinas@uiuc.edu' , 'Tambee' , '1-(216)752-7216', '0562 Muir Trail', null, 'Cleveland', 'Ohio', '44197', 'United States') +,(30, 'Harrison', 'Shawn' , 'sharrisont@webnode.com' , 'Youopia' , '1-(205)595-8085', '20 Mayer Center', null, 'Birmingham', 'Alabama', '35205', 'United States') +,(31, 'Alexander', 'Julia' , 'jalexanderu@netsol.com' , 'Oodoo' , '1-(864)349-2185', '61859 West Point', null, 'Greenville', 'South Carolina', '29610', 'United States') +,(32, 'Stanley', 'Victor' , 'vstanleyv@wikipedia.org' , 'Centimia' , '1-(561)507-7317', '08229 Glacier Hill Avenue', null, 'Boynton Beach', 'Florida', '33436', 'United States') +,(33, 'Wheeler', 'Dennis' , 'dwheelerw@indiatimes.com', 'Dynabox' , '1-(419)889-2883', '409 American Ash Plaza', null, 'Lima', 'Ohio', '45807', 'United States') +,(34, 'Frazier', 'Rachel' , 'rfrazierx@sfgate.com' , 'Skivee' , '1-(314)249-1796', '7 Waxwing Court', null, 'Saint Louis', 'Missouri', '63131', 'United States') +,(35, 'Brooks' , 'Shawn' , 'sbrooksy@mediafire.com' , 'Omba' , '1-(971)854-8478', '614 Monica Terrace', null, 'Portland', 'Oregon', '97240', 'United States') +,(36, 'Coleman', 'Frank' , 'fcolemanz@un.org' , 'Agimba' , '1-(318)446-4337', '4 Browning Park', null, 'Shreveport', 'Louisiana', '71151', 'United States') +,(37, 'Wright' , 'Frank' , 'fwright10@flickr.com' , 'Meedoo' , '1-(504)852-2553', '03446 Sheridan Trail', null, 'New Orleans', 'Louisiana', '70183', 'United States') +,(38, 'Perkins', 'Tina' , 'tperkins11@va.gov' , 'Rhybox' , '1-(571)497-0755', '62 Grayhawk Lane', null, 'Fairfax', 'Virginia', '22036', 'United States') +,(39, 'Griffin', 'Ruth' , 'rgriffin12@pcworld.com' , 'Trudoo' , '1-(504)312-7448', '29701 Jenifer Junction', null, 'Metairie', 'Louisiana', '70033', 'United States') +,(40, 'Sanchez', 'Sean' , 'ssanchez13@bandcamp.com' , 'Chatterpoint', '1-(316)535-7647', '10 Stuart Road', null, 'Wichita', 'Kansas', '67260', 'United States') +,(41, 'Harris' , 'Linda' , 'lharris14@ask.com' , 'Blogpad' , '1-(913)258-6547', '17635 Elka Alley', null, 'Shawnee Mission', 'Kansas', '66205', 'United States') +,(42, 'Wood' , 'George' , 'gwood15@imdb.com' , 'Feednation' , '1-(865)482-7169', '210 Anhalt Drive', null, 'Knoxville', 'Tennessee', '37924', 'United States') +,(43, 'Bennett', 'Nancy' , 'nbennett16@netsol.com' , 'Yodo' , '1-(210)749-3167', '97861 Harper Pass', null, 'San Antonio', 'Texas', '78260', 'United States') +,(44, 'Pierce' , 'Jesse' , 'jpierce17@cyberchimps.com', 'Divanoodle' , '1-(501)518-2300', '0 Columbus Terrace', null, 'Little Rock', 'Arkansas', '72231', 'United States') +,(45, 'Larson' , 'Jerry' , 'jlarson18@ustream.tv' , 'Kazu' , '1-(916)702-0977', '0422 Merry Court', null, 'Sacramento', 'California', '95852', 'United States') +,(46, 'Williams', 'Norma' , 'nwilliams19@spiegel.de' , 'Yacero' , '1-(562)631-4036', '5779 Burning Wood Crossing', null, 'Long Beach', 'California', '90847', 'United States') +,(47, 'Kelley' , 'Louis' , 'lkelley1a@wsj.com' , 'Linkbuzz' , '1-(432)286-2200', '04321 Northport Pass', null, 'Odessa', 'Texas', '79764', 'United States') +,(48, 'Mason' , 'Ruby' , 'rmason1b@census.gov' , 'Trudeo' , '1-(763)835-7627', '99219 5th Place', null, 'Monticello', 'Minnesota', '55565', 'United States') +,(49, 'Carr' , 'Nicole' , 'ncarr1c@yellowbook.com' , 'Plajo' , '1-(330)154-9245', '41 Monica Parkway', null, 'Youngstown', 'Ohio', '44511', 'United States') +,(50, 'Franklin', 'Michelle' , 'mfranklin1d@ucoz.com' , 'Wikivu' , '1-(405)751-8906', '62 Rutledge Alley', null, 'Oklahoma City', 'Oklahoma', '73147', 'United States') +,(51, 'Hawkins', 'Larry' , 'lhawkins1e@typepad.com' , 'Tagpad' , '1-(240)796-9270', '48 Columbus Road', null, 'Hagerstown', 'Maryland', '21747', 'United States') +,(52, 'Adams' , 'Lillian' , 'ladams1f@smugmug.com' , 'Avamm' , '1-(419)394-2363', '69708 West Avenue', null, 'Toledo', 'Ohio', '43605', 'United States') +,(53, 'Williamson', 'Janice' , 'jwilliamson1g@sbwire.com', 'Wordware' , '1-(212)576-0309', '311 Clemons Crossing', null, 'New York City', 'New York', '10090', 'United States') +,(54, 'Mitchell', 'Lisa' , 'lmitchell1h@live.com' , 'Trudoo' , '1-(225)794-6979', '17242 Eagan Terrace', null, 'Baton Rouge', 'Louisiana', '70820', 'United States') +,(55, 'Lawrence', 'Anna' , 'alawrence1i@manage.com' , 'Pixope' , '1-(818)505-8262', '51241 Tennessee Point', null, 'Santa Monica', 'California', '90405', 'United States') +,(56, 'Scott' , 'Margaret' , 'mscott1j@arizona.edu' , 'Mynte' , '1-(202)265-0994', '117 Arapahoe Crossing', null, 'Washington', 'District of Columbia', '20051', 'United States') +,(57, 'Harper' , 'Timothy' , 'tharper1k@loc.gov' , 'Trudoo' , '1-(212)348-5025', '137 Commercial Court', null, 'New York City', 'New York', '10175', 'United States') +,(58, 'Frazier' , 'Mary' , 'mfrazier1l@mapy.cz' , 'Photobug' , '1-(214)939-0299', '281 Briar Crest Way', null, 'Garland', 'Texas', '75049', 'United States') +,(59, 'Young' , 'Margaret' , 'myoung1m@ehow.com' , 'Realmix' , '1-(318)144-2666', '537 Memorial Way', null, 'Shreveport', 'Louisiana', '71105', 'United States') +,(60, 'Sullivan', 'Phyllis' , 'psullivan1n@jiathis.com' , 'Demivee' , '1-(518)361-7505', '117 Onsgard Crossing', null, 'Albany', 'New York', '12227', 'United States') +,(61, 'Knight' , 'Roy' , 'rknight1o@qq.com' , 'Meezzy' , '1-(478)438-2599', '60 Kinsman Drive', null, 'Macon', 'United Kingdom', '31210', 'United States') +,(62, 'Ruiz' , 'Andrea' , 'aruiz1p@domainmarket.com', 'Fivespan' , '1-(415)374-7204', '55455 Heffernan Plaza', null, 'San Francisco', 'California', '94142', 'United States') +,(63, 'Hayes' , 'Heather' , 'hhayes1q@odnoklasniki.ru', 'Twitternation', '1-(615)919-6350', '31 Banding Plaza', null, 'Jackson', 'Mississippi', '39296', 'United States') +,(64, 'Chapman' , 'Roy' , 'rchapman1r@theguardian.com', 'BlogXS' , '1-(941)329-4488', '27487 Fair Oaks Crossing', null, 'Sarasota', 'Florida', '34233', 'United States') +,(65, 'Moore' , 'Daniel' , 'dmoore1s@google.co.uk' , 'Twitterbridge', '1-(408)838-8747', '52377 Everett Court', null, 'San Jose', 'California', '95194', 'United States') +,(66, 'Day' , 'Amy' , 'aday1t@indiegogo.com' , 'Brainverse' , '1-(336)903-6679', '50107 Northport Circle', null, 'Winston Salem', 'North Carolina', '27157', 'United States') +,(67, 'Kelley' , 'Jesse' , 'jkelley1u@who.int' , 'Zoomzone' , '1-(304)183-6041', '31740 Bayside Trail', null, 'Huntington', 'West Virginia', '25711', 'United States') +,(68, 'Andrews' , 'Andrea' , 'aandrews1v@patch.com' , 'Fanoodle' , '1-(206)996-3516', '544 Lakewood Gardens Alley', null, 'Seattle', 'Washington', '98148', 'United States') +,(69, 'Willis' , 'Robert' , 'rwillis1w@si.edu' , 'Tazz' , '1-(678)738-3382', '0998 Bellgrove Circle', null, 'Duluth', 'United Kingdom', '30195', 'United States') +,(70, 'Reid' , 'Daniel' , 'dreid1x@miitbeian.gov.cn', 'Babbleblab', '1-(786)539-0220', '2 New Castle Avenue', null, 'Miami', 'Florida', '33111', 'United States') +,(71, 'Roberts' , 'Louise' , 'lroberts1y@cpanel.net' , 'Skippad' , '1-(316)418-5043', '598 Mayfield Road', null, 'Wichita', 'Kansas', '67210', 'United States') +,(72, 'Harrison', 'Margaret' , 'mharrison1z@globe.ne.jp' , 'Zoovu' , '1-(775)625-5357', '636 Maple Point', null, 'Reno', 'Nevada', '89550', 'United States') +,(73, 'Chapman' , 'Peter' , 'pchapman20@eventbrite.com', 'Linkbuzz' , '1-(574)707-4449', '1 Vermont Plaza', null, 'South Bend', 'Indiana', '46620', 'United States') +,(74, 'Tucker' , 'Willie' , 'wtucker21@hubpages.com' , 'Eazzy' , '1-(814)593-2963', '3 Dryden Trail', null, 'Erie', 'Pennsylvania', '16505', 'United States') +,(75, 'Bradley' , 'Adam' , 'abradley22@cnet.com' , 'Yabox' , '1-(903)334-0845', '15 Veith Center', null, 'Tyler', 'Texas', '75705', 'United States') +,(76, 'Armstrong', 'Juan' , 'jarmstrong23@archive.org', 'Gevee' , '1-(916)285-8157', '95 Claremont Crossing', null, 'Sacramento', 'California', '95865', 'United States') +,(77, 'Payne' , 'Kenneth' , 'kpayne24@com.com' , 'Skinte' , '1-(770)150-8423', '75 Beilfuss Court', null, 'Alpharetta', 'United Kingdom', '30022', 'United States') +,(78, 'Jacobs' , 'Louis' , 'ljacobs25@intel.com' , 'Photolist' , '1-(404)386-3449', '542 Browning Park', null, 'Atlanta', 'United Kingdom', '30343', 'United States') +,(79, 'Cooper' , 'Marilyn' , 'mcooper26@whitehouse.gov', 'Yotz' , '1-(520)875-3539', '03 Transport Point', null, 'Tucson', 'Arizona', '85710', 'United States') +,(80, 'Watkins' , 'William' , 'wwatkins27@pbs.org' , 'Brightbean', '1-(719)568-3678', '0316 La Follette Drive', null, 'Colorado Springs', 'Colorado', '80920', 'United States') +,(81, 'Baker' , 'Douglas' , 'dbaker28@exblog.jp' , 'Voonix' , '1-(619)121-6070', '99 Kedzie Terrace', null, 'Chula Vista', 'California', '91913', 'United States') +,(82, 'Cunningham','Daniel' , 'dcunningham29@oakley.com', 'Leexo' , '1-(619)609-6206', '53540 Hallows Place', null, 'San Diego', 'California', '92137', 'United States') +,(83, 'Mitchell', 'Edward' , 'emitchell2a@amazon.com' , 'Jatri' , '1-(502)427-5275', '3 Jana Junction', null, 'Louisville', 'Kentucky', '40280', 'United States') +,(84, 'Matthews', 'Adam' , 'amatthews2b@live.com' , 'Muxo' , '1-(316)764-9074', '5 Arapahoe Plaza', null, 'Wichita', 'Kansas', '67220', 'United States') +,(85, 'Jacobs' , 'Diane' , 'djacobs2c@jimdo.com' , 'Youspan' , '1-(804)398-4775', '6 Moose Street', null, 'Richmond', 'Virginia', '23285', 'United States') +,(86, 'Frazier' , 'Mary' , 'mfrazier2d@forbes.com' , 'Zoomdog' , '1-(716)502-4243', '713 Continental Trail', null, 'Buffalo', 'New York', '14210', 'United States') +,(87, 'Howard' , 'Anthony' , 'ahoward2e@disqus.com' , 'Katz' , '1-(805)800-7968', '006 Elka Center', null, 'Bakersfield', 'California', '93311', 'United States') +,(88, 'Kelly' , 'Anna' , 'akelly2f@unc.edu' , 'Trilia' , '1-(804)117-9707', '292 Browning Circle', null, 'Richmond', 'Virginia', '23228', 'United States') +,(89, 'Clark' , 'Kathy' , 'kclark2g@businesswire.com' , 'Gigabox' , '1-(831)755-4869', '45 Walton Parkway', null, 'Salinas', 'California', '93907', 'United States') +,(90, 'Carpenter', 'Gerald' , 'gcarpenter2h@foxnews.com' , 'Yakidoo' , '1-(213)344-9608', '84560 Stephen Parkway', null, 'Los Angeles', 'California', '90055', 'United States') +,(91, 'Hart' , 'Albert' , 'ahart2i@scribd.com' , 'Jaloo' , '1-(415)201-5281', '0 Washington Place', null, 'Oakland', 'California', '94611', 'United States') +,(92, 'Young' , 'Julia' , 'jyoung2j@craigslist.org' , 'Oloo' , '1-(615)660-1203', '0623 Gale Drive', null, 'Jackson', 'Mississippi', '39210', 'United States') +,(93, 'Pierce' , 'Tammy' , 'tpierce2k@psu.edu' , 'Ntags' , '1-(703)772-3155', '501 Leroy Parkway', null, 'Washington', 'District of Columbia', '20041', 'United States') +,(94, 'Washington', 'Ronald' , 'rwashington2l@drupal.org' , 'Livetube' , '1-(202)828-6093', '6220 Del Sol Alley', null, 'Washington', 'District of Columbia', '20551', 'United States') +,(95, 'Carter' , 'Alan' , 'acarter2m@simplemachines.org', 'Centizu' , '1-(952)234-1678', '043 Sunnyside Center', null, 'Young America', 'Minnesota', '55551', 'United States') +,(96, 'Freeman' , 'Stephanie', 'sfreeman2n@redcross.org' , 'Feednation' , '1-(504)126-8245', '1120 Veith Parkway', null, 'New Orleans', 'Louisiana', '70165', 'United States') +,(97, 'Price' , 'Sara' , 'sprice2o@irs.gov' , 'Izio' , '1-(415)668-5714', '96394 Bonner Hill', null, 'San Francisco', 'California', '94116', 'United States') +,(98, 'Parker' , 'Emily' , 'eparker2p@4shared.com' , 'Skalith' , '1-(330)637-4894', '0 Old Shore Center', null, 'Akron', 'Ohio', '44310', 'United States') +,(99, 'Chavez' , 'Jeremy' , 'jchavez2q@businessweek.com' , 'Topicware' , '1-(515)769-2045', '8584 Jay Street', null, 'Des Moines', 'Iowa', '50335', 'United States') +,(100, 'Kim' , 'Pamela' , 'pkim2r@stumbleupon.com' , 'Photolist' , '1-(510)144-4318', '3688 Gerald Trail', null, 'Sacramento', 'California', '95823', 'United States'); + +/* LOOK UP VALUES */ + + +/* orders */ +insert into orders (id, employee_id, customer_id, order_date, shipped_date, ship_name, ship_address1, ship_address2, ship_city, ship_state, ship_postal_code, ship_country, shipping_fee, payment_type, paid_date, order_status) values + (4001, 204, 40, '2016-04-05', '2016-11-06', 'Jean Fuller', '93 Spohn Place', null, 'Manggekompo', null, null, 'Indonesia', 8.14, 'Card', '2016-10-12', 'On Hold') +,(4002, 204, 95, '2017-01-29', '2016-05-28', 'Diane Holmes', '46 Eliot Trail', null, 'Virginia Beach', 'Virginia', '23459', 'United States', 1.55, 'Check', '2016-06-27', 'Shipped') +,(4003, 218, 54, '2016-08-19', '2016-12-08', 'Jerry Frazier', '23 Sundown Junction', null, 'Obodivka', null, null, 'Ukraine', 2.29, 'Cash', '2016-09-27', 'On Hold') +,(4004, 204, 69, '2016-09-25', '2016-12-24', 'Denise Freeman', '4909 Beilfuss Hill', null, 'Nova Venécia', null, '29830-000', 'Brazil', 4.77, 'Check', '2016-07-04', 'New') +,(4005, 215, 10, '2017-03-14', '2016-03-19', 'Jonathan Gordon', '7 Ludington Court', null, 'Sukamaju', null, null, 'Indonesia', 8.78, 'Check', '2016-03-22', 'On Hold') +,(4006, 211, 23, '2016-08-14', '2016-12-05', 'Sean Carter', '859 Dahle Plaza', null, 'Dayou', null, null, 'China', 9.43, 'Cash', '2016-08-21', 'New') +,(4007, 204, 92, '2017-01-02', '2016-07-09', 'Alice Warren', '5 Fuller Center', null, 'Log pri Brezovici', null, '1358', 'India', 3.25, 'Cash', '2016-03-24', 'Shipped') +,(4008, 205, 20, '2016-05-15', '2016-09-12', 'Andrea Hamilton', '99 Blue Bill Park Junction', null, 'Liangshui', null, null, 'China', 7.04, 'Check', '2016-09-02', 'On Hold') +,(4009, 219, 58, '2016-11-27', '2017-03-02', 'Wanda Hill', '907 Sundown Court', null, 'Pedra Azul', null, '39970-000', 'Brazil', 4.35, 'Cash', '2016-09-27', 'On Hold') +,(4010, 218, 57, '2016-09-11', '2017-02-26', 'Carolyn Foster', '0 Charing Cross Court', null, 'Chicago', 'Illinois', '60609', 'United States', 1.23, 'Cash', '2016-08-09', 'Complete') +,(4011, 207, 3 , '2017-03-01', '2016-08-04', 'Timothy Warren', '19 John Wall Parkway', null, 'Lyon', 'Rhône-Alpes', '69362 CEDEX 07', 'France', 9.57, 'Card', '2016-05-08', 'Complete') +,(4012, 210, 59, '2016-12-31', '2016-08-08', 'Kathleen Marshall', '2 Swallow Circle', null, 'Cunliji', null, null, 'China', 9.03, 'Cash', '2016-04-23', 'On Hold') +,(4013, 204, 57, '2017-01-11', '2017-02-13', 'Jane Ortiz', '1136 Kedzie Alley', null, 'Eirado', 'Viana do Castelo', '4990-540', 'Portugal', 8.9, 'Check', '2016-10-26', 'Shipped') +,(4014, 212, 26, '2016-09-23', '2016-05-13', 'Carolyn Martinez', '954 Kropf Court', null, 'Ibitinga', null, '14940-000', 'Brazil', 4.57, 'Card', '2016-09-11', 'New') +,(4015, 201, 86, '2016-11-04', '2016-10-03', 'Debra Willis', '89 Grasskamp Road', null, 'San Francisco', null, '8501', 'Philippines', 3.53, 'Card', '2016-10-05', 'New') +,(4016, 208, 17, '2016-04-17', '2016-03-22', 'Sharon Little', '27501 Sommers Junction', null, 'San Juan Opico', null, null, 'India', 6.87, 'Card', '2017-01-08', 'Complete') +,(4017, 205, 73, '2016-07-03', '2016-09-26', 'Nancy Hughes', '1 John Wall Avenue', null, 'La Libertad', null, null, 'Argentina', 4.67, 'Check', '2017-02-01', 'New') +,(4018, 213, 16, '2016-12-01', '2016-06-08', 'Sara Knight', '98248 Tony Pass', null, 'Val-d''Or', 'Québec', 'J9P', 'Canada', 9.52, 'Card', '2016-08-06', 'New') +,(4019, 209, 10, '2016-04-18', '2016-04-25', 'Russell Wood', '3 Commercial Point', null, 'Rokietnica', null, '62-090', 'Poland', 6.8, 'Card', '2017-01-20', 'On Hold') +,(4020, 216, 1 , '2016-07-23', '2017-02-23', 'Aaron Grant', '15477 Farwell Circle', null, 'Yongyang', null, null, 'China', 3.17, 'Cash', '2016-08-11', 'Complete') +,(4021, 209, 38, '2016-12-16', '2017-02-14', 'Ryan Foster', '9218 Leroy Avenue', null, 'Mogapinyana', null, null, 'India', 3.34, 'Cash', '2016-06-21', 'On Hold') +,(4022, 207, 91, '2016-07-18', '2016-04-06', 'Peter Montgomery', '570 Londonderry Pass', null, 'Mathakola', null, null, 'India', 8.11, 'Card', '2016-10-27', 'New') +,(4023, 209, 39, '2016-07-15', '2017-02-02', 'Lawrence Schmidt', '371 Acker Drive', null, 'Mesa', 'Arizona', '85205', 'United States', 1.39, 'Cash', '2016-10-27', 'Complete') +,(4024, 219, 51, '2016-12-08', '2017-01-03', 'Eric Gray', '4608 Farmco Point', null, 'Gemblengmulyo', null, null, 'Indonesia', 8.76, 'Card', '2016-05-13', 'Complete') +,(4025, 204, 77, '2016-09-24', '2017-01-20', 'Gloria Green', '62 Sunnyside Park', null, 'Itararé', null, '18460-000', 'Brazil', 7.75, 'Cash', '2017-02-06', 'On Hold') +,(4026, 215, 73, '2016-09-15', '2016-12-24', 'Nicholas Price', '5672 Ruskin Hill', null, 'Maimará', null, '4624', 'Argentina', 9.11, 'Card', '2016-07-22', 'On Hold') +,(4027, 208, 98, '2016-05-31', '2016-07-14', 'Doris Watson', '133 Gina Street', null, 'Bantiran', null, null, 'Indonesia', 3.0, 'Cash', '2016-10-08', 'Complete') +,(4028, 217, 39, '2016-05-10', '2016-04-07', 'Linda Foster', '40382 4th Terrace', null, 'Agrelo', 'Braga', '4730-300', 'Portugal', 2.39, 'Cash', '2016-09-11', 'Complete') +,(4029, 212, 52, '2016-09-14', '2016-12-21', 'Anthony Spencer', '02 Esker Junction', null, 'El Ocotón', null, null, 'Canada', 7.72, 'Check', '2016-09-23', 'Shipped') +,(4030, 218, 74, '2016-05-08', '2016-07-21', 'James Kennedy', '7460 Westport Hill', null, 'Köln', 'Nordrhein-Westfalen', '51107', 'Germany', 6.16, 'Cash', '2016-11-27', 'Shipped') +,(4031, 214, 4 , '2016-05-31', '2017-03-03', 'Theresa Robinson', '44 Havey Way', null, 'Qingtong', null, null, 'China', 5.02, 'Check', '2017-03-15', 'New') +,(4032, 201, 81, '2016-07-05', '2016-11-18', 'Jesse Ray', '68 Derek Hill', null, 'Azogues', null, null, 'Argentina', 5.41, 'Check', '2016-10-16', 'New') +,(4033, 203, 15, '2016-09-07', '2016-06-09', 'Harold Fields', '2 Vermont Terrace', null, 'Mogocha', null, '673732', 'Russia', 2.38, 'Check', '2016-03-30', 'Complete') +,(4034, 217, 11, '2016-08-19', '2016-12-08', 'Larry Watkins', '629 Waxwing Avenue', null, 'Krasnyy Oktyabr’', null, '398526', 'Russia', 5.23, 'Cash', '2016-07-01', 'On Hold') +,(4035, 205, 51, '2016-11-29', '2016-09-02', 'Debra Marshall', '23578 Arizona Junction', null, 'Juhut', null, null, 'Indonesia', 1.59, 'Card', '2016-06-17', 'Shipped') +,(4036, 217, 56, '2016-10-21', '2017-02-13', 'Todd Stephens', '63633 Columbus Avenue', null, 'Paccho', null, null, 'Peru', 5.09, 'Cash', '2016-04-25', 'New') +,(4037, 219, 60, '2016-09-22', '2016-11-08', 'Jean Webb', '0916 Grover Way', null, 'Kuršėnai', null, '81001', 'Denmark', 8.66, 'Cash', '2016-09-30', 'Shipped') +,(4038, 213, 3 , '2016-06-01', '2016-10-07', 'Heather Snyder', '44 Grayhawk Court', null, 'Haenam', null, null, 'Finland', 5.33, 'Cash', '2016-06-30', 'Complete') +,(4039, 201, 28, '2017-02-19', '2016-11-25', 'Janet Howard', '5351 Barby Trail', null, 'Shanghu', null, null, 'China', 9.18, 'Check', '2017-03-16', 'On Hold') +,(4040, 215, 74, '2016-09-14', '2016-06-23', 'Aaron Wheeler', '08 Burrows Avenue', null, 'Tân Sơn', null, null, 'Vietnam', 3.36, 'Card', '2017-03-05', 'New') +,(4041, 204, 79, '2016-09-27', '2017-02-15', 'Lori Watkins', '3 Pennsylvania Court', null, 'Victoria', null, 'VCT', 'India', 9.41, 'Card', '2016-08-12', 'New') +,(4042, 205, 92, '2016-11-03', '2016-05-11', 'Alice Miller', '7895 Amoth Avenue', null, 'Mae Lao', null, '57250', 'Thailand', 2.11, 'Cash', '2016-08-06', 'Shipped') +,(4043, 212, 82, '2016-11-17', '2016-04-19', 'Marilyn Nguyen', '25203 Meadow Ridge Plaza', null, 'Nine', 'Braga', '4775-446', 'Portugal', 6.03, 'Cash', '2016-05-07', 'On Hold') +,(4044, 218, 55, '2016-06-26', '2016-08-15', 'Ashley West', '08621 Porter Lane', null, 'Kingsport', 'Tennessee', '37665', 'United States', 8.23, 'Cash', '2016-12-17', 'New') +,(4045, 217, 53, '2016-05-07', '2017-02-25', 'Julia Fernandez', '91519 Harbort Way', null, 'Issoire', 'Auvergne', '63504 CEDEX', 'France', 1.14, 'Check', '2016-10-27', 'Complete') +,(4046, 211, 78, '2016-12-11', '2017-02-15', 'Willie Sims', '683 Caliangt Parkway', null, 'Balazar', 'Braga', '4805-005', 'Portugal', 6.57, 'Card', '2017-02-13', 'On Hold') +,(4047, 201, 77, '2016-05-20', '2017-02-19', 'Samuel Burke', '25 Grover Lane', null, 'Housuo', null, null, 'China', 6.99, 'Cash', '2016-08-12', 'New') +,(4048, 217, 72, '2016-11-06', '2016-09-29', 'Patricia Green', '29791 Thierer Street', null, 'Campamento', null, '052027', 'Argentina', 3.33, 'Check', '2016-03-24', 'Complete') +,(4049, 210, 98, '2016-08-24', '2016-04-16', 'Nicole Washington', '68 Monica Point', null, 'Cikaung', null, null, 'Indonesia', 5.78, 'Check', '2016-04-30', 'Complete') +,(4050, 215, 26, '2016-10-07', '2016-11-03', 'Marie Bryant', '36611 Schlimgen Place', null, 'Villa Francisca', null, '10215', 'Canada', 4.11, 'Check', '2016-07-29', 'Complete') +,(4051, 212, 51, '2016-05-19', '2017-03-16', 'Brandon Lane', '5 Duke Center', null, 'Soutinho', 'Porto', '4650-530', 'Portugal', 9.62, 'Check', '2016-11-28', 'Shipped') +,(4052, 205, 9 , '2016-07-19', '2016-09-05', 'Pamela Ferguson', '0 Mockingbird Crossing', null, 'Jefferson City', 'Missouri', '65105', 'United States', 9.98, 'Card', '2016-12-08', 'Shipped') +,(4053, 210, 42, '2016-04-09', '2017-02-05', 'Gloria Edwards', '8275 Sage Plaza', null, 'Yilkiqi', null, null, 'China', 5.21, 'Cash', '2016-11-10', 'On Hold') +,(4054, 211, 70, '2017-02-28', '2017-02-11', 'John Cole', '4679 Trailsway Circle', null, 'Sanlanbahai', null, null, 'China', 4.42, 'Card', '2017-01-06', 'Complete') +,(4055, 208, 65, '2017-01-11', '2017-02-14', 'Bobby Butler', '314 Jenna Crossing', null, 'Malusac', null, '2005', 'Philippines', 7.37, 'Cash', '2017-03-15', 'Shipped') +,(4056, 220, 15, '2016-07-12', '2016-09-06', 'Anthony Lane', '1 Packers Avenue', null, 'Batambak', null, null, 'Indonesia', 5.41, 'Card', '2016-11-21', 'On Hold') +,(4057, 220, 76, '2016-05-05', '2016-04-19', 'Karen Ray', '891 Raven Street', null, 'Chinju', null, null, 'Finland', 4.71, 'Cash', '2017-02-11', 'On Hold') +,(4058, 216, 90, '2017-01-26', '2016-12-19', 'Martha Gonzalez', '8695 Mandrake Place', null, 'Maythalūn', null, null, 'India', 1.75, 'Card', '2017-03-16', 'On Hold') +,(4059, 212, 43, '2016-09-20', '2017-02-11', 'Judy Daniels', '154 Lukken Court', null, 'Luoqiao', null, null, 'China', 4.63, 'Check', '2016-11-09', 'On Hold') +,(4060, 207, 80, '2016-04-29', '2016-07-01', 'Jane Stevens', '43 Kingsford Pass', null, 'Dobruševo', null, '7514', 'Denmark', 1.96, 'Cash', '2016-09-02', 'On Hold') +,(4061, 214, 89, '2016-10-09', '2016-09-09', 'Emily Miller', '5 Pearson Lane', null, 'East London', null, '5688', 'South Africa', 2.14, 'Card', '2016-06-10', 'Complete') +,(4062, 220, 8 , '2016-12-01', '2017-03-09', 'Sarah Johnson', '30 Chinook Lane', null, 'Selishche', null, '180536', 'Russia', 3.76, 'Card', '2016-11-18', 'On Hold') +,(4063, 220, 48, '2017-03-05', '2016-11-30', 'Carolyn Reyes', '72 Michigan Pass', null, 'Sukasenang', null, null, 'Indonesia', 6.52, 'Cash', '2016-05-20', 'Shipped') +,(4064, 214, 31, '2016-07-19', '2016-08-16', 'Kathryn Coleman', '43358 Packers Court', null, 'Przystajń', null, '42-141', 'Poland', 1.68, 'Card', '2016-12-13', 'Complete') +,(4065, 205, 41, '2016-12-09', '2016-03-20', 'Clarence Graham', '1675 Starling Point', null, 'Zangbawa', null, null, 'China', 5.82, 'Cash', '2016-07-08', 'Complete') +,(4066, 205, 41, '2016-05-25', '2016-11-15', 'David Harris', '00 Warner Court', null, 'Kabba', null, null, 'Netherlands', 7.24, 'Cash', '2016-09-24', 'New') +,(4067, 218, 13, '2016-07-24', '2016-12-06', 'Ruth Fields', '88567 Golf Course Plaza', null, 'Mauá', null, '09300-000', 'Brazil', 6.82, 'Cash', '2017-01-26', 'New') +,(4068, 206, 11, '2016-05-04', '2016-07-10', 'Todd Butler', '88 Graedel Point', null, 'Jablah', null, null, 'India', 3.83, 'Cash', '2016-06-17', 'On Hold') +,(4069, 215, 55, '2016-12-22', '2016-03-28', 'Catherine Perkins', '95 Troy Parkway', null, 'Frampol', null, '23-440', 'Poland', 7.6, 'Check', '2016-08-24', 'Shipped') +,(4070, 220, 40, '2016-10-17', '2016-12-01', 'Jeffrey Rodriguez', '3393 Weeping Birch Court', null, 'Burunday', null, null, 'Denmark', 2.52, 'Cash', '2016-09-06', 'Shipped') +,(4071, 218, 70, '2017-03-16', '2016-12-09', 'Rachel Butler', '79327 Ridgeway Circle', null, 'Dupnitsa', null, '2680', 'Denmark', 6.25, 'Check', '2016-04-02', 'Complete') +,(4072, 205, 45, '2017-01-22', '2016-05-15', 'Robin Fisher', '0 Susan Court', null, 'Morohongō', null, '357-0211', 'Japan', 4.42, 'Card', '2017-03-06', 'Complete') +,(4073, 217, 94, '2017-01-25', '2016-04-11', 'Ruth Carpenter', '4 Glacier Hill Road', null, 'Ngrejo', null, null, 'Indonesia', 4.9, 'Cash', '2016-08-13', 'On Hold') +,(4074, 219, 27, '2017-01-06', '2017-01-03', 'Irene Kelly', '0 Comanche Junction', null, 'Chao', null, null, 'Peru', 5.32, 'Check', '2016-11-20', 'On Hold') +,(4075, 214, 44, '2016-06-24', '2016-12-20', 'Douglas Sims', '81709 Helena Park', null, 'Dongmaku', null, null, 'China', 3.35, 'Card', '2017-02-27', 'Complete') +,(4076, 216, 27, '2016-09-23', '2016-10-05', 'Kenneth Rose', '5316 Dottie Way', null, 'Olszówka', null, '62-641', 'Poland', 2.63, 'Cash', '2016-05-27', 'Shipped') +,(4077, 211, 84, '2016-11-24', '2016-08-04', 'Jimmy Morgan', '42187 Shoshone Center', null, 'Saltsjöbaden', 'Stockholm', '133 41', 'Sweden', 1.11, 'Cash', '2016-09-09', 'On Hold') +,(4078, 202, 57, '2016-05-28', '2016-06-02', 'Annie Vasquez', '5 Lien Junction', null, 'Al Qaţn', null, null, 'South Africa', 2.73, 'Check', '2016-11-14', 'On Hold') +,(4079, 202, 64, '2016-07-05', '2016-05-20', 'Henry Mccoy', '58 Nelson Circle', null, 'Tsaghkahovit', null, null, 'India', 3.29, 'Card', '2016-08-18', 'Shipped') +,(4080, 216, 44, '2017-02-20', '2016-10-08', 'Norma Graham', '27 Heffernan Pass', null, 'Cairima', null, null, 'China', 7.02, 'Check', '2017-03-06', 'Complete') +,(4081, 218, 60, '2017-03-16', '2016-08-06', 'Albert Wright', '572 Vahlen Place', null, 'Drahovo', null, null, 'Ukraine', 4.92, 'Check', '2017-01-29', 'New') +,(4082, 219, 15, '2016-12-26', '2017-02-17', 'Jane Wells', '21 Merchant Way', null, 'Acacías', null, '507009', 'Argentina', 6.53, 'Card', '2016-06-04', 'Complete') +,(4083, 212, 61, '2016-06-24', '2016-03-23', 'Jesse Mitchell', '4060 Carioca Drive', null, 'Ntoroko', null, null, 'South Africa', 9.41, 'Cash', '2016-10-19', 'On Hold') +,(4084, 216, 3 , '2016-08-20', '2017-02-15', 'Carlos Brooks', '868 Pankratz Trail', null, 'Bat Khela', null, '18351', 'Iran', 1.0, 'Check', '2016-12-22', 'On Hold') +,(4085, 209, 25, '2016-12-03', '2016-06-01', 'Christopher Williamson', '8874 Starling Plaza', null, 'Tarbes', 'Midi-Pyrénées', '65951 CEDEX 9', 'France', 4.15, 'Card', '2017-02-04', 'New') +,(4086, 205, 2 , '2016-06-19', '2016-08-26', 'Joseph Wells', '7223 Carpenter Road', null, 'Chitral', null, '17200', 'Iran', 5.31, 'Card', '2016-07-22', 'Shipped') +,(4087, 216, 96, '2016-06-04', '2016-12-31', 'Teresa Thomas', '908 Ramsey Junction', null, 'Dzerzhinskiy', null, '140083', 'Russia', 4.29, 'Cash', '2017-03-03', 'Shipped') +,(4088, 203, 35, '2016-09-21', '2017-01-08', 'Scott Gomez', '70537 Tennessee Crossing', null, 'Bồng Sơn', null, null, 'Vietnam', 6.93, 'Cash', '2017-01-01', 'New') +,(4089, 210, 18, '2017-02-17', '2016-10-28', 'Nicole Miller', '0 Jackson Place', null, 'Šilheřovice', null, '747 15', 'Czech Republic', 5.64, 'Card', '2016-11-17', 'On Hold') +,(4090, 201, 8 , '2016-11-12', '2016-06-02', 'Donald Nguyen', '7320 Bunting Pass', null, 'Namioka', null, '953-0062', 'Japan', 7.07, 'Cash', '2016-09-29', 'Complete') +,(4091, 212, 67, '2016-04-08', '2016-11-21', 'Shawn Myers', '1844 Esch Plaza', null, 'Gračec', null, '10370', 'Canada', 4.84, 'Card', '2016-03-17', 'New') +,(4092, 220, 16, '2017-01-12', '2016-08-04', 'Daniel Armstrong', '2 Donald Alley', null, 'La Colorada', null, null, 'Denmark', 2.98, 'Check', '2016-12-08', 'Shipped') +,(4093, 203, 60, '2016-04-17', '2016-05-10', 'Henry Gonzales', '23848 6th Center', null, 'Guayatá', null, '153047', 'Argentina', 1.54, 'Check', '2016-04-18', 'New') +,(4094, 209, 37, '2016-08-07', '2016-04-26', 'Stephanie Snyder', '1152 Morning Park', null, 'Zhitan', null, null, 'China', 9.76, 'Card', '2016-05-23', 'New') +,(4095, 205, 46, '2016-09-01', '2017-02-25', 'Joan Butler', '98050 Mitchell Point', null, 'Bun Barat', null, null, 'Indonesia', 9.57, 'Card', '2017-01-25', 'Shipped') +,(4096, 211, 92, '2017-01-02', '2016-12-06', 'Gloria Murray', '8 Vidon Terrace', null, 'Rumenka', null, null, 'India', 5.33, 'Card', '2016-12-28', 'Shipped') +,(4097, 210, 66, '2016-07-04', '2016-05-30', 'Dorothy Simpson', '0 Pearson Point', null, 'Yevpatoriya', null, null, 'Ukraine', 3.52, 'Check', '2016-04-28', 'Complete') +,(4098, 219, 59, '2016-09-27', '2016-12-17', 'Katherine Brooks', '921 Anhalt Place', null, 'Rietavas', null, '90018', 'Denmark', 5.29, 'Check', '2016-12-19', 'Complete') +,(4099, 207, 65, '2016-07-06', '2016-10-11', 'Linda Reid', '89712 Dryden Point', null, 'Bronnitsy', null, '142451', 'Russia', 5.68, 'Card', '2016-07-08', 'New') +,(4100, 212, 61, '2016-04-14', '2016-05-02', 'Richard Carpenter', '17032 Melrose Crossing', null, 'White River', null, '1256', 'South Africa', 7.22, 'Card', '2016-08-03', 'Shipped') +,(4101, 206, 23, '2016-03-28', '2016-12-01', 'Clarence Coleman', '9167 Valley Edge Point', null, 'Guocun', null, null, 'China', 5.86, 'Check', '2016-08-19', 'Shipped') +,(4102, 202, 16, '2016-07-26', '2017-01-18', 'Kevin Dunn', '178 Park Meadow Avenue', null, 'Mlonggo', null, null, 'Indonesia', 4.15, 'Check', '2016-08-03', 'Complete') +,(4103, 211, 65, '2017-01-17', '2016-11-09', 'Keith Lopez', '689 Anthes Pass', null, 'Cibanten', null, null, 'Indonesia', 8.25, 'Check', '2016-10-15', 'Shipped') +,(4104, 218, 86, '2017-03-12', '2016-05-25', 'Chris Wright', '57974 Riverside Junction', null, 'Ban Mai', null, '80000', 'Thailand', 4.85, 'Cash', '2016-05-08', 'New') +,(4105, 215, 57, '2016-07-03', '2016-05-03', 'Michael Snyder', '93 Ohio Hill', null, 'Bryan', 'Texas', '77806', 'United States', 3.54, 'Card', '2016-08-10', 'Shipped') +,(4106, 210, 2 , '2017-03-07', '2016-09-18', 'David Day', '5024 Summerview Circle', null, 'Itapira', null, '13970-000', 'Brazil', 3.6, 'Cash', '2017-01-20', 'On Hold') +,(4107, 218, 4 , '2016-10-10', '2016-09-02', 'Lisa Kim', '4892 Huxley Center', null, 'Tanjungagung', null, null, 'Indonesia', 6.23, 'Cash', '2016-06-11', 'On Hold') +,(4108, 214, 26, '2016-06-02', '2016-10-05', 'Teresa Ellis', '1569 Mariners Cove Terrace', null, 'Maszkienice', null, '32-854', 'Poland', 7.65, 'Check', '2016-04-14', 'On Hold') +,(4109, 201, 51, '2016-10-07', '2017-02-02', 'Jimmy Lawson', '2165 Bluestem Center', null, 'Kampungbaru', null, null, 'Indonesia', 1.73, 'Check', '2016-09-30', 'Shipped') +,(4110, 215, 4 , '2016-08-21', '2017-02-05', 'Jerry Murray', '40070 Anderson Court', null, 'Vicente Guerrero', 'Veracruz Llave', '92440', 'Mexico', 1.57, 'Card', '2016-06-26', 'New') +,(4111, 210, 56, '2016-07-06', '2016-09-19', 'Joan Adams', '5322 Goodland Avenue', null, 'Paris 17', 'Île-de-France', '75853 CEDEX 17', 'France', 7.52, 'Cash', '2016-05-07', 'New') +,(4112, 214, 77, '2016-09-04', '2016-10-19', 'Chris Young', '7 Clove Center', null, 'Gongjiahe', null, null, 'China', 3.31, 'Card', '2016-11-06', 'New') +,(4113, 217, 62, '2016-07-18', '2016-09-30', 'Norma Oliver', '6002 Rieder Road', null, 'Lingbei', null, null, 'China', 8.85, 'Check', '2016-09-25', 'Complete') +,(4114, 213, 72, '2016-08-01', '2016-09-12', 'Douglas Day', '88 Helena Drive', null, 'Alcoutim', 'Faro', '8970-055', 'Portugal', 5.52, 'Card', '2016-12-19', 'New') +,(4115, 220, 6 , '2016-11-13', '2017-02-22', 'Janet James', '820 Westend Place', null, 'Springfield', 'Massachusetts', '01129', 'United States', 4.72, 'Cash', '2016-03-21', 'On Hold') +,(4116, 201, 72, '2016-09-01', '2016-09-07', 'Martha Lee', '2 Donald Hill', null, 'Majiang', null, null, 'China', 4.39, 'Cash', '2016-12-10', 'Shipped') +,(4117, 202, 40, '2017-02-04', '2016-12-09', 'Benjamin Cruz', '02989 Morningstar Avenue', null, 'Gīvī', null, null, 'Iran', 1.77, 'Check', '2017-01-29', 'Complete') +,(4118, 213, 48, '2016-12-24', '2017-01-06', 'Diane Porter', '7 Kensington Center', null, 'Pingyi', null, null, 'China', 4.69, 'Check', '2016-05-31', 'On Hold') +,(4119, 205, 69, '2016-06-30', '2016-05-01', 'Brandon Myers', '80411 Victoria Center', null, 'Punsu', null, null, 'Indonesia', 7.8, 'Cash', '2016-12-28', 'New') +,(4120, 220, 63, '2016-11-11', '2016-10-30', 'Beverly Garza', '2750 Sullivan Place', null, 'San Jose', null, '8427', 'Philippines', 8.15, 'Check', '2016-09-23', 'Shipped') +,(4121, 220, 32, '2016-05-05', '2016-09-05', 'Cynthia Simpson', '0731 Clarendon Point', null, 'Pomichna', null, null, 'Ukraine', 5.56, 'Card', '2017-02-23', 'On Hold') +,(4122, 201, 38, '2016-04-24', '2016-07-30', 'Janet West', '4800 Dottie Parkway', null, 'Tân Kỳ', null, null, 'Vietnam', 2.63, 'Cash', '2016-06-17', 'On Hold') +,(4123, 214, 24, '2016-04-04', '2016-06-11', 'Kevin Stone', '85 Duke Avenue', null, 'Shemonaīkha', null, null, 'Denmark', 9.99, 'Card', '2016-09-24', 'On Hold') +,(4124, 210, 9 , '2016-09-01', '2016-06-18', 'Amy Austin', '80663 Almo Park', null, 'Zaječov', null, '267 63', 'Czech Republic', 3.58, 'Card', '2016-08-29', 'Complete') +,(4125, 206, 78, '2017-02-09', '2016-07-07', 'Gregory Greene', '6 Commercial Junction', null, 'Hudong', null, null, 'China', 7.34, 'Cash', '2016-12-26', 'New') +,(4126, 215, 48, '2016-07-30', '2016-12-25', 'Laura Woods', '115 Ramsey Plaza', null, 'Allentown', 'Pennsylvania', '18105', 'United States', 4.92, 'Check', '2016-09-28', 'On Hold') +,(4127, 220, 19, '2016-03-29', '2016-05-27', 'Stephanie Reed', '452 Grayhawk Way', null, 'Sicheng', null, null, 'China', 1.1, 'Card', '2017-03-14', 'Shipped') +,(4128, 208, 64, '2016-06-03', '2016-08-13', 'Craig Gonzalez', '6028 West Street', null, 'Kliteh', null, null, 'Indonesia', 1.73, 'Cash', '2016-06-23', 'Complete') +,(4129, 201, 28, '2016-09-05', '2016-04-03', 'Raymond Gomez', '4 Stone Corner Place', null, 'Chechenglu', null, null, 'China', 4.32, 'Card', '2016-06-29', 'Complete') +,(4130, 215, 83, '2016-11-14', '2016-09-13', 'Kenneth Taylor', '7 Nevada Way', null, 'Alīpur', null, '34451', 'Iran', 5.07, 'Card', '2016-11-28', 'Complete') +,(4131, 203, 76, '2017-02-01', '2017-01-04', 'Jose Peters', '2493 Saint Paul Crossing', null, 'Bofuer', null, null, 'Indonesia', 9.85, 'Card', '2016-11-18', 'New') +,(4132, 207, 67, '2016-09-02', '2017-03-10', 'Martin West', '7251 Prairieview Place', null, 'Espinillo', null, '3460', 'Argentina', 7.9, 'Card', '2017-02-05', 'New') +,(4133, 208, 78, '2016-08-27', '2016-12-26', 'Louise Dunn', '4076 East Trail', null, 'Caramanta', null, '056047', 'Argentina', 1.28, 'Cash', '2016-12-22', 'Shipped') +,(4134, 209, 93, '2016-06-27', '2016-04-10', 'Gregory Stanley', '67 Namekagon Crossing', null, 'Pasarkayu', null, null, 'Indonesia', 2.83, 'Check', '2016-09-17', 'Complete') +,(4135, 206, 60, '2016-03-23', '2016-06-19', 'Ronald Palmer', '21 Old Shore Place', null, 'Tujing', null, null, 'China', 9.01, 'Check', '2016-12-22', 'New') +,(4136, 209, 10, '2016-11-07', '2016-11-21', 'Harry Robinson', '740 Toban Court', null, 'Liujiage', null, null, 'China', 7.13, 'Card', '2016-09-20', 'New') +,(4137, 214, 83, '2016-05-20', '2016-04-08', 'Joan Torres', '5167 Laurel Drive', null, 'Nirji', null, null, 'China', 9.81, 'Card', '2016-09-13', 'Complete') +,(4138, 207, 47, '2016-07-17', '2016-10-03', 'Carlos Jones', '4 Fuller Lane', null, 'Detroit', 'Michigan', '48258', 'United States', 8.02, 'Card', '2016-11-16', 'On Hold') +,(4139, 214, 92, '2016-07-17', '2017-01-23', 'Terry Freeman', '738 Vernon Road', null, 'Veverská Bítýška', null, '664 71', 'Czech Republic', 1.93, 'Check', '2016-04-04', 'Complete') +,(4140, 204, 92, '2016-06-09', '2016-05-06', 'Rose Hunt', '3242 Bunting Trail', null, 'Schaumburg', 'Illinois', '60193', 'United States', 7.65, 'Check', '2016-07-03', 'On Hold') +,(4141, 214, 12, '2016-11-19', '2017-03-16', 'Harry Reid', '395 Hauk Road', null, 'Rudky', null, null, 'Ukraine', 5.23, 'Card', '2017-01-18', 'On Hold') +,(4142, 212, 88, '2016-12-25', '2016-12-14', 'Fred Olson', '9311 Old Gate Park', null, 'Hejiabao', null, null, 'China', 4.02, 'Check', '2016-05-16', 'New') +,(4143, 217, 79, '2016-06-14', '2016-08-25', 'Paul Arnold', '08347 Comanche Pass', null, 'Bukovec', null, '739 84', 'Czech Republic', 6.02, 'Card', '2016-05-08', 'New') +,(4144, 216, 56, '2016-06-03', '2016-07-22', 'Carolyn Woods', '55 Stoughton Pass', null, 'Shengmi', null, null, 'China', 7.32, 'Card', '2016-07-27', 'New') +,(4145, 218, 84, '2016-07-02', '2016-11-05', 'Craig Schmidt', '2 Stephen Plaza', null, 'Arhust', null, null, 'Japan', 3.31, 'Check', '2016-06-17', 'New') +,(4146, 219, 13, '2016-09-02', '2017-01-29', 'Antonio Jordan', '452 Clemons Court', null, 'København', 'Region Hovedstaden', '1787', 'Denmark', 4.84, 'Card', '2016-11-10', 'Complete') +,(4147, 212, 51, '2016-10-19', '2017-01-20', 'Carol Evans', '1649 Crescent Oaks Road', null, 'Roubaix', 'Nord-Pas-de-Calais', '59100', 'France', 7.71, 'Card', '2017-03-08', 'On Hold') +,(4148, 217, 26, '2016-04-16', '2016-11-28', 'Steven Torres', '73679 Morning Drive', null, 'Ayotupas', null, null, 'Japan', 7.0, 'Card', '2016-06-12', 'On Hold') +,(4149, 215, 1 , '2017-02-06', '2016-10-27', 'Louis Watson', '03 Golf View Way', null, 'Madaoua', null, null, 'United Kingdom', 4.45, 'Check', '2016-07-22', 'Complete') +,(4150, 210, 100,'2017-01-14', '2016-11-12', 'Robin Reynolds', '5 Hagan Hill', null, 'Huacaschuque', null, null, 'Peru', 7.37, 'Check', '2017-02-09', 'New') +,(4151, 217, 24, '2016-09-06', '2016-10-11', 'Julia Gilbert', '3 Manitowish Avenue', null, 'Passos', 'Viana do Castelo', '4990-770', 'Portugal', 1.76, 'Card', '2016-07-16', 'New') +,(4152, 210, 90, '2016-05-26', '2016-07-14', 'Chris Chavez', '0 Birchwood Plaza', null, 'Odivelas', 'Lisboa', '2675-080', 'Portugal', 8.35, 'Cash', '2017-02-05', 'On Hold') +,(4153, 220, 79, '2016-10-27', '2016-08-14', 'Adam Morrison', '04510 West Circle', null, 'Weda', null, null, 'Japan', 8.84, 'Check', '2016-10-05', 'On Hold') +,(4154, 210, 57, '2017-02-21', '2016-09-28', 'Doris Snyder', '37027 Hintze Parkway', null, 'Vakhrushi', null, '613110', 'Russia', 2.75, 'Cash', '2016-12-02', 'Complete') +,(4155, 202, 24, '2017-02-03', '2016-08-03', 'Lisa Fisher', '919 Warner Circle', null, 'Kanbe', null, null, 'India', 2.48, 'Check', '2016-12-23', 'New') +,(4156, 213, 89, '2017-01-26', '2016-06-25', 'Gloria Murphy', '6750 Hansons Center', null, 'Saint Petersburg', null, '190990', 'Russia', 2.88, 'Cash', '2017-01-31', 'On Hold') +,(4157, 219, 83, '2016-08-03', '2016-06-15', 'Sara Mcdonald', '88365 Namekagon Park', null, 'Maofan', null, null, 'China', 4.69, 'Cash', '2016-09-22', 'New') +,(4158, 202, 79, '2016-08-13', '2016-10-08', 'John Barnes', '41 Springs Plaza', null, 'Carangola', null, '36800-000', 'Brazil', 4.84, 'Check', '2016-11-25', 'New') +,(4159, 215, 84, '2016-11-30', '2017-02-27', 'Bobby Matthews', '39153 Kipling Trail', null, 'Now Zād', null, null, 'Germany', 7.56, 'Cash', '2016-09-25', 'Shipped') +,(4160, 216, 40, '2016-07-27', '2016-12-05', 'Robin Greene', '899 Waubesa Alley', null, 'Vellinge', 'Skåne', '235 93', 'Sweden', 4.17, 'Card', '2016-12-22', 'New') +,(4161, 211, 91, '2017-03-12', '2016-09-11', 'Joseph Long', '3 Nobel Terrace', null, 'Bukabu', null, null, 'Japan', 2.26, 'Card', '2016-10-26', 'On Hold') +,(4162, 204, 94, '2016-10-08', '2016-09-26', 'Lisa Rodriguez', '880 Arizona Terrace', null, 'Elena', null, '5815', 'Argentina', 3.13, 'Cash', '2016-06-15', 'Shipped') +,(4163, 208, 49, '2017-02-23', '2016-06-05', 'Douglas Parker', '79 Mariners Cove Plaza', null, 'Şafāshahr', null, null, 'Iran', 1.83, 'Cash', '2016-10-26', 'On Hold') +,(4164, 201, 23, '2016-10-31', '2017-01-07', 'Laura Stewart', '97911 Meadow Ridge Road', null, 'Hexi', null, null, 'China', 1.24, 'Check', '2017-03-08', 'Shipped') +,(4165, 202, 27, '2017-01-07', '2016-10-05', 'Matthew Jordan', '29 Lakewood Trail', null, 'Kalkal Barat', null, null, 'Japan', 9.19, 'Card', '2016-09-03', 'Shipped') +,(4166, 218, 61, '2016-03-31', '2017-03-03', 'Denise Mason', '79 Carberry Alley', null, 'Vạn Giã', null, null, 'Vietnam', 7.78, 'Card', '2016-03-23', 'New') +,(4167, 220, 56, '2016-11-12', '2016-06-18', 'Phillip Castillo', '9910 Reindahl Parkway', null, 'Shangyanzhuang', null, null, 'China', 2.48, 'Card', '2016-07-14', 'Complete') +,(4168, 201, 41, '2016-07-10', '2016-07-29', 'Dorothy Nelson', '8 Hermina Terrace', null, 'Petrolina', null, '56300-000', 'Brazil', 1.52, 'Check', '2016-11-11', 'Shipped') +,(4169, 218, 100,'2016-12-18', '2016-12-02', 'Lawrence Willis', '21 Northland Trail', null, 'Bukor', null, null, 'India', 2.28, 'Card', '2017-01-06', 'New') +,(4170, 218, 6 , '2016-10-31', '2016-10-20', 'Jonathan Banks', '5748 Kings Hill', null, 'Tianning', null, null, 'China', 5.71, 'Check', '2016-06-02', 'Shipped') +,(4171, 211, 93, '2016-11-16', '2017-01-20', 'Gary Green', '001 Straubel Point', null, 'Huangshapu', null, null, 'China', 3.6, 'Cash', '2016-12-12', 'Complete') +,(4172, 203, 46, '2016-10-16', '2016-09-08', 'Nancy Bryant', '367 Gateway Park', null, 'Zhutang', null, null, 'China', 2.19, 'Cash', '2017-02-15', 'Shipped') +,(4173, 208, 72, '2016-08-27', '2016-04-09', 'Jeremy Rose', '8 Service Lane', null, 'Jinshandian', null, null, 'China', 8.09, 'Check', '2017-01-18', 'On Hold') +,(4174, 212, 88, '2016-06-25', '2016-08-21', 'Rebecca Gibson', '74 American Crossing', null, 'Canmang', null, null, 'China', 1.31, 'Card', '2017-02-08', 'New') +,(4175, 208, 75, '2017-02-28', '2017-01-03', 'Marilyn Hanson', '676 Service Crossing', null, 'Racławice', null, '32-222', 'Poland', 2.88, 'Check', '2017-02-18', 'New') +,(4176, 204, 1 , '2016-09-23', '2016-08-16', 'Denise Hanson', '8 Lakewood Crossing', null, 'Huaizhong', null, null, 'China', 9.48, 'Card', '2016-12-30', 'On Hold') +,(4177, 204, 20, '2017-03-02', '2016-12-27', 'John Shaw', '4752 Meadow Ridge Lane', null, 'Sosnovo-Ozerskoye', null, '612955', 'Russia', 7.17, 'Check', '2016-06-21', 'On Hold') +,(4178, 202, 30, '2016-03-20', '2016-10-17', 'Russell Fernandez', '5941 Esch Lane', null, 'Shuiyang', null, null, 'China', 1.04, 'Check', '2017-01-05', 'On Hold') +,(4179, 202, 27, '2017-01-14', '2016-07-31', 'Annie Ruiz', '67778 Butterfield Trail', null, 'Qalyūb', null, null, 'Germany', 5.51, 'Card', '2016-05-12', 'Shipped') +,(4180, 208, 1 , '2017-03-16', '2016-04-04', 'Ashley Gonzales', '88504 Johnson Street', null, 'Salingogan', null, '6417', 'Philippines', 7.56, 'Check', '2016-07-26', 'Shipped') +,(4181, 203, 70, '2016-03-25', '2016-11-06', 'Richard George', '54 3rd Circle', null, 'Haibeitou', null, null, 'China', 1.99, 'Cash', '2016-09-05', 'New') +,(4182, 219, 69, '2016-04-11', '2017-02-03', 'David Harris', '2 Menomonie Pass', null, 'Oslo', 'Oslo', '0188', 'Greece', 1.93, 'Check', '2016-11-30', 'Shipped') +,(4183, 211, 25, '2016-12-08', '2016-11-16', 'Catherine Reynolds', '302 Autumn Leaf Parkway', null, 'Lameiras', 'Lisboa', '2715-145', 'Portugal', 6.68, 'Cash', '2016-04-02', 'Shipped') +,(4184, 217, 73, '2016-06-19', '2016-11-29', 'Donald Moreno', '690 Laurel Park', null, 'Sinisian', null, '4212', 'Philippines', 3.1, 'Check', '2017-01-06', 'New') +,(4185, 210, 34, '2016-07-03', '2016-05-23', 'Ryan Thomas', '45044 Harper Place', null, 'Madīnat Lab‘ūs', null, null, 'South Africa', 6.31, 'Cash', '2016-06-27', 'Complete') +,(4186, 206, 91, '2016-05-26', '2016-09-09', 'Ruby Lynch', '8350 Karstens Parkway', null, 'Puyo', null, null, 'Argentina', 6.07, 'Check', '2016-05-10', 'Shipped') +,(4187, 208, 64, '2016-05-31', '2016-10-16', 'Linda Robinson', '6069 Chive Plaza', null, 'Joutseno', null, '54101', 'Finland', 3.11, 'Card', '2016-05-15', 'Shipped') +,(4188, 216, 41, '2017-02-07', '2016-03-28', 'Bonnie Morris', '2611 Comanche Junction', null, 'Lacombe', 'Alberta', 'T4L', 'Canada', 2.53, 'Check', '2016-08-31', 'New') +,(4189, 206, 51, '2016-12-20', '2016-12-08', 'Dennis Gardner', '2348 Blue Bill Park Crossing', null, 'Ngkiong', null, null, 'Japan', 5.1, 'Check', '2016-11-28', 'New') +,(4190, 220, 54, '2016-08-06', '2016-08-27', 'Carolyn Matthews', '817 Ohio Point', null, 'Orekhovo-Zuyevo', null, '142609', 'Russia', 7.52, 'Card', '2016-03-22', 'On Hold') +,(4191, 207, 96, '2016-07-03', '2016-06-18', 'Jesse Parker', '3 Eastwood Terrace', null, 'Berezovo', null, null, 'Ukraine', 6.64, 'Check', '2016-05-07', 'New') +,(4192, 216, 18, '2016-06-05', '2017-01-11', 'Ann Gilbert', '6 Oak Valley Lane', null, 'Caijiang', null, null, 'China', 3.72, 'Cash', '2016-11-17', 'On Hold') +,(4193, 208, 22, '2016-06-26', '2017-02-22', 'Martha Hawkins', '57581 Union Road', null, 'Ilinden', null, '1041', 'Denmark', 5.64, 'Cash', '2016-05-23', 'On Hold') +,(4194, 207, 42, '2017-02-03', '2017-01-08', 'Jeffrey Hart', '83 Green Ridge Point', null, 'Wangcheng', null, null, 'China', 1.15, 'Check', '2016-12-07', 'Shipped') +,(4195, 217, 28, '2016-10-18', '2016-05-01', 'Joseph Riley', '54373 Coleman Street', null, 'Karangbungur', null, null, 'Japan', 5.9, 'Cash', '2016-04-23', 'Complete') +,(4196, 207, 78, '2016-07-09', '2016-07-15', 'Brian Dean', '9 Stone Corner Hill', null, 'Dambulla', null, '21100', 'United Kingdom', 5.15, 'Check', '2016-07-09', 'On Hold') +,(4197, 204, 38, '2016-07-19', '2016-04-13', 'Christine Campbell', '47302 Porter Junction', null, 'Dananshan', null, null, 'China', 6.74, 'Card', '2016-11-07', 'Complete') +,(4198, 201, 7 , '2017-03-02', '2016-08-16', 'Ruth Mcdonald', '401 Erie Avenue', null, 'Borkowice', null, '26-422', 'Poland', 3.24, 'Cash', '2016-04-17', 'New') +,(4199, 216, 87, '2016-12-14', '2017-03-05', 'Jean Armstrong', '450 Sullivan Avenue', null, 'Carpenter', null, '2009', 'Philippines', 4.25, 'Cash', '2016-07-11', 'Complete') +,(4200, 218, 8 , '2017-02-01', '2016-04-17', 'Gary Price', '775 Butterfield Lane', null, 'Vaasa', null, '66999', 'Finland', 5.36, 'Card', '2016-07-09', 'Shipped') +,(4201, 217, 77, '2016-11-10', '2016-11-13', 'Carolyn Scott', '5878 Badeau Lane', null, 'Kazanskaya', null, '396614', 'Russia', 7.94, 'Card', '2016-12-09', 'New') +,(4202, 204, 10, '2016-08-12', '2016-03-21', 'Earl Anderson', '9 Roth Court', null, 'Governor’s Harbour', null, null, 'Canada', 2.47, 'Card', '2016-08-06', 'Complete') +,(4203, 204, 54, '2016-05-26', '2016-04-18', 'Elizabeth Kelley', '70 Burrows Street', null, 'Fucheng', null, null, 'China', 9.94, 'Cash', '2016-08-24', 'Shipped') +,(4204, 208, 58, '2017-03-09', '2016-04-17', 'Julia Wilson', '46476 Burning Wood Crossing', null, 'Koper', null, '6600', 'India', 3.82, 'Card', '2016-08-26', 'New') +,(4205, 208, 85, '2016-05-04', '2016-03-18', 'Jeffrey Oliver', '39 Tennessee Avenue', null, 'Jejkowice', null, '44-290', 'Poland', 7.22, 'Card', '2016-09-23', 'Shipped') +,(4206, 220, 8 , '2016-06-16', '2017-01-03', 'Angela Walker', '579 Miller Street', null, 'Hà Tĩnh', null, null, 'Vietnam', 1.04, 'Check', '2016-05-18', 'Complete') +,(4207, 212, 55, '2016-07-04', '2016-11-09', 'Karen Hansen', '953 Manufacturers Pass', null, 'Lysekil', 'Västra Götaland', '453 35', 'Sweden', 8.81, 'Check', '2016-03-18', 'New') +,(4208, 217, 96, '2016-10-26', '2016-07-11', 'Patricia West', '1 Browning Alley', null, 'Huayang', null, null, 'China', 7.54, 'Card', '2016-09-15', 'New') +,(4209, 203, 71, '2016-08-04', '2017-01-01', 'Phillip Gardner', '30438 Mariners Cove Way', null, 'Phu Khiao', null, '36110', 'Thailand', 3.03, 'Check', '2016-03-31', 'Shipped') +,(4210, 207, 30, '2017-03-08', '2016-07-21', 'Fred Howard', '45981 Hovde Trail', null, 'Suncheon', null, null, 'Finland', 1.13, 'Check', '2016-07-14', 'On Hold') +,(4211, 217, 57, '2016-05-28', '2017-03-11', 'George Wagner', '24863 Messerschmidt Road', null, 'Ningzhong', null, null, 'China', 6.5, 'Check', '2016-07-26', 'New') +,(4212, 213, 19, '2016-11-28', '2016-06-09', 'Clarence Russell', '85 Kropf Circle', null, 'Ouro Branco', null, '59347-000', 'Brazil', 6.88, 'Check', '2016-04-02', 'On Hold') +,(4213, 217, 51, '2016-06-25', '2016-05-25', 'Jane Johnston', '1708 Corscot Pass', null, 'Şafāshahr', null, null, 'Iran', 9.16, 'Cash', '2016-10-12', 'Complete') +,(4214, 203, 88, '2017-02-19', '2016-03-25', 'John Adams', '100 Hollow Ridge Way', null, 'Satita', null, null, 'India', 3.01, 'Cash', '2016-11-19', 'Shipped') +,(4215, 202, 12, '2017-01-26', '2016-10-07', 'Diana Graham', '12 Esch Park', null, 'Krasnokamensk', null, '662955', 'Russia', 9.29, 'Check', '2016-06-10', 'Shipped') +,(4216, 211, 66, '2016-07-19', '2016-11-30', 'John Henry', '448 Hanover Trail', null, 'Phitsanulok', null, '65000', 'Thailand', 7.23, 'Card', '2016-09-22', 'Shipped') +,(4217, 218, 98, '2016-11-20', '2016-11-12', 'Donna Bradley', '92136 Arkansas Avenue', null, 'Balong Wetan', null, null, 'Japan', 7.79, 'Card', '2016-12-18', 'New') +,(4218, 206, 5 , '2016-05-04', '2016-08-19', 'Kevin Harper', '2911 Laurel Point', null, 'Patapan', null, null, 'Japan', 1.52, 'Card', '2016-03-20', 'On Hold') +,(4219, 205, 76, '2016-11-15', '2016-12-12', 'Margaret Hanson', '9603 Northridge Junction', null, 'Mwembe', null, null, 'India', 4.76, 'Cash', '2017-03-14', 'Shipped') +,(4220, 206, 62, '2016-12-30', '2016-10-23', 'Henry Bradley', '84 Lake View Plaza', null, 'Zheleznovodsk', null, '357408', 'Russia', 8.08, 'Cash', '2017-02-23', 'Complete') +,(4221, 218, 91, '2016-08-07', '2016-08-31', 'Jane Fowler', '2484 Hoepker Hill', null, 'Huangcun', null, null, 'China', 9.34, 'Card', '2017-01-10', 'Complete') +,(4222, 207, 19, '2016-05-22', '2016-06-25', 'Kimberly Peterson', '5851 Carey Crossing', null, 'Pochuta', null, '04008', 'Japan', 9.16, 'Card', '2016-04-25', 'Shipped') +,(4223, 203, 69, '2017-02-13', '2016-09-18', 'Nicholas Simpson', '9 Hudson Way', null, 'Chashan', null, null, 'China', 5.37, 'Check', '2017-01-01', 'On Hold') +,(4224, 214, 71, '2017-02-28', '2016-06-18', 'Carol Rodriguez', '78 Grayhawk Place', null, 'Luntas', null, null, 'Indonesia', 1.76, 'Card', '2016-10-06', 'Shipped') +,(4225, 207, 34, '2017-03-06', '2016-07-20', 'Jessica Mason', '65 Merrick Lane', null, 'Křižanov', null, '789 01', 'Czech Republic', 9.75, 'Card', '2016-12-28', 'New') +,(4226, 209, 74, '2016-06-04', '2017-01-15', 'Jeffrey Sims', '05441 Wayridge Pass', null, 'Rennes', 'Bretagne', '35047 CEDEX 9', 'France', 9.09, 'Check', '2016-05-19', 'Shipped') +,(4227, 205, 74, '2016-09-09', '2017-01-06', 'Arthur Simmons', '733 Logan Circle', null, 'Dzhankoy', null, null, 'Ukraine', 2.51, 'Check', '2017-01-25', 'New') +,(4228, 207, 52, '2017-01-30', '2017-01-08', 'Kevin Williams', '3561 6th Trail', null, 'Narganá', null, null, 'Denmark', 7.32, 'Cash', '2016-06-24', 'On Hold') +,(4229, 209, 76, '2016-05-05', '2016-07-11', 'Joe Stewart', '0314 Ryan Parkway', null, 'San Jose', 'Oaxaca', '69570', 'Mexico', 9.28, 'Check', '2016-05-06', 'Shipped') +,(4230, 214, 2 , '2016-09-19', '2016-09-08', 'Walter Barnes', '80695 Stone Corner Road', null, 'Busdi', null, '6210', 'Philippines', 5.97, 'Check', '2016-07-19', 'Shipped') +,(4231, 211, 55, '2016-08-27', '2016-10-04', 'Sean Holmes', '91 Becker Drive', null, 'Gezan', null, null, 'China', 3.81, 'Check', '2016-06-14', 'Shipped') +,(4232, 209, 14, '2016-04-01', '2017-03-06', 'Sandra Perez', '45373 Buhler Park', null, 'Ust’-Kut', null, '162176', 'Russia', 4.25, 'Cash', '2017-01-22', 'Shipped') +,(4233, 205, 96, '2016-09-27', '2016-07-03', 'Sara Kelly', '73457 Buhler Court', null, 'Sima', null, null, 'Canada', 7.2, 'Card', '2016-12-14', 'Complete') +,(4234, 217, 74, '2016-11-22', '2017-01-18', 'Edward Reid', '02 Westport Trail', null, 'Tchaourou', null, null, 'India', 3.5, 'Cash', '2016-12-25', 'New') +,(4235, 206, 69, '2016-03-17', '2016-10-29', 'Betty Cook', '83578 Ohio Avenue', null, 'Stockholm', 'Stockholm', '101 22', 'Sweden', 6.17, 'Check', '2016-09-02', 'On Hold') +,(4236, 217, 97, '2017-02-06', '2016-07-01', 'Diana Ellis', '49 Jenna Circle', null, 'Yanshan', null, null, 'China', 6.06, 'Check', '2016-07-16', 'Complete') +,(4237, 216, 17, '2016-11-30', '2016-10-02', 'Donald Miller', '8581 Farragut Junction', null, 'Yosowilangun', null, null, 'Indonesia', 8.9, 'Check', '2016-11-01', 'Complete') +,(4238, 203, 21, '2017-02-09', '2016-12-14', 'Eric Coleman', '9242 Badeau Street', null, 'Caiyuan', null, null, 'China', 4.1, 'Check', '2016-06-07', 'Shipped') +,(4239, 213, 23, '2016-09-15', '2016-11-04', 'Heather Vasquez', '454 Gale Hill', null, 'Susoh', null, null, 'Indonesia', 1.59, 'Check', '2016-10-25', 'New') +,(4240, 208, 2 , '2016-05-28', '2016-05-21', 'Martin Sims', '30 Bunting Center', null, 'Efeng', null, null, 'China', 1.92, 'Cash', '2016-12-15', 'Complete') +,(4241, 202, 85, '2017-02-05', '2016-08-13', 'Catherine Washington', '637 Hermina Court', null, 'San Francisco', 'Jalisco', '46175', 'Mexico', 6.49, 'Card', '2016-12-20', 'On Hold') +,(4242, 204, 17, '2016-10-04', '2016-05-13', 'Gary Kennedy', '2 Grasskamp Point', null, 'Famaillá', null, '4132', 'Argentina', 9.78, 'Card', '2016-12-03', 'Complete') +,(4243, 205, 86, '2016-04-15', '2016-05-25', 'Pamela Parker', '43642 Utah Point', null, 'Santa Rosa', 'Nuevo Leon', '67803', 'Mexico', 1.78, 'Card', '2017-02-16', 'Shipped') +,(4244, 208, 3 , '2016-08-02', '2017-03-13', 'Michelle Russell', '947 Jenna Place', null, 'Kinshasa', null, null, 'Canada', 8.43, 'Cash', '2016-04-13', 'New') +,(4245, 210, 32, '2016-06-16', '2016-07-14', 'Lois Jenkins', '1 Pepper Wood Road', null, 'Kallinge', 'Blekinge', '372 53', 'Sweden', 4.77, 'Cash', '2016-03-17', 'On Hold') +,(4246, 203, 39, '2017-02-04', '2016-08-08', 'Kelly Ramirez', '20490 Eagle Crest Circle', null, 'Baraba', null, '623509', 'Russia', 8.65, 'Cash', '2016-10-04', 'Complete') +,(4247, 202, 24, '2016-05-05', '2016-11-26', 'Harold Gray', '9033 Elmside Plaza', null, 'N’dalatando', null, null, 'Netherlands', 2.78, 'Cash', '2016-07-24', 'New') +,(4248, 210, 16, '2017-01-27', '2017-03-14', 'Dennis Fisher', '4 Sage Road', null, 'Niederanven', null, 'L-6948', 'United Kingdom', 1.26, 'Check', '2016-05-12', 'On Hold') +,(4249, 203, 20, '2016-07-21', '2016-12-08', 'Antonio Wells', '99743 Algoma Hill', null, 'Mūdīyah', null, null, 'South Africa', 4.36, 'Card', '2016-05-28', 'Complete') +,(4250, 217, 88, '2016-05-31', '2016-10-17', 'William Gonzales', '3258 Holy Cross Way', null, 'Yangdun', null, null, 'China', 7.06, 'Check', '2016-04-13', 'New') +,(4251, 211, 1 , '2017-03-04', '2016-10-27', 'Ronald Ward', '5 Logan Terrace', null, 'Tanahmerah', null, null, 'Indonesia', 4.38, 'Card', '2016-09-22', 'On Hold') +,(4252, 217, 87, '2016-12-29', '2016-09-18', 'Gloria Boyd', '10 Grayhawk Hill', null, 'Boromlya', null, null, 'Ukraine', 4.84, 'Cash', '2016-08-01', 'On Hold') +,(4253, 212, 99, '2017-02-02', '2016-04-28', 'Raymond Scott', '3 Donald Trail', null, 'Lakshmīpur', null, '1553', 'Canada', 8.37, 'Cash', '2016-12-06', 'On Hold') +,(4254, 201, 7 , '2016-11-28', '2016-04-11', 'Arthur Hamilton', '95 Doe Crossing Avenue', null, 'Purwosari', null, null, 'Indonesia', 6.84, 'Card', '2016-06-14', 'Shipped') +,(4255, 220, 100,'2016-09-30', '2016-10-08', 'Jean Wagner', '5690 Meadow Valley Alley', null, 'Svedala', 'Skåne', '233 94', 'Sweden', 8.57, 'Check', '2017-01-06', 'Shipped') +,(4256, 218, 78, '2016-04-28', '2016-04-03', 'Kimberly Rose', '6067 Twin Pines Hill', null, 'Capinzal', null, '89665-000', 'Brazil', 6.07, 'Check', '2016-05-18', 'New') +,(4257, 213, 44, '2016-11-04', '2016-03-28', 'Doris Foster', '170 Chive Court', null, 'Lang', null, null, 'China', 1.72, 'Card', '2016-10-20', 'Shipped') +,(4258, 208, 46, '2017-01-11', '2016-09-25', 'Teresa Reynolds', '3 Prairie Rose Alley', null, 'Tashang', null, null, 'China', 4.84, 'Card', '2016-10-16', 'On Hold') +,(4259, 215, 89, '2016-07-07', '2016-12-29', 'Christine Turner', '0746 Heffernan Center', null, 'Henggang', null, null, 'China', 6.81, 'Cash', '2016-08-21', 'New') +,(4260, 210, 23, '2016-10-26', '2017-02-10', 'Jimmy Jordan', '903 Anniversary Trail', null, 'Elaiochóri', null, null, 'Greece', 9.66, 'Cash', '2017-01-10', 'Complete') +,(4261, 207, 20, '2016-11-07', '2017-02-17', 'Andrew Baker', '3 Pennsylvania Park', null, 'Kansas City', 'Missouri', '64130', 'United States', 5.46, 'Cash', '2016-11-20', 'Complete') +,(4262, 203, 32, '2017-02-21', '2016-11-17', 'Diana Dixon', '18520 Maryland Drive', null, 'Santa Catalina', null, '2701', 'Philippines', 4.66, 'Card', '2017-01-09', 'On Hold') +,(4263, 210, 10, '2017-02-28', '2017-02-26', 'Karen Miller', '5608 Moose Court', null, 'Torres Vedras', 'Lisboa', '2560-234', 'Portugal', 5.71, 'Card', '2016-11-30', 'New') +,(4264, 214, 39, '2017-01-09', '2016-10-24', 'Angela Austin', '9659 Vera Point', null, 'Santiaoshi', null, null, 'China', 6.59, 'Check', '2016-05-07', 'Shipped') +,(4265, 203, 3 , '2016-11-11', '2016-11-22', 'Steve Snyder', '7626 Hoepker Junction', null, 'Wulan Hada', null, null, 'China', 5.67, 'Cash', '2017-01-01', 'New') +,(4266, 218, 94, '2016-04-06', '2016-10-02', 'Kevin Daniels', '24 Chinook Point', null, 'Bhairāhawā', null, null, 'United Kingdom', 8.21, 'Card', '2016-05-12', 'Shipped') +,(4267, 203, 58, '2016-11-14', '2016-03-28', 'Patricia Welch', '60375 Corry Street', null, 'Solidaridad', 'Veracruz Llave', '94330', 'Mexico', 2.77, 'Card', '2017-02-02', 'On Hold') +,(4268, 218, 2 , '2016-07-02', '2016-08-14', 'Wanda Reynolds', '965 Calypso Circle', null, 'Dera Bugti', null, '80100', 'Iran', 8.86, 'Check', '2017-01-30', 'On Hold') +,(4269, 216, 47, '2017-03-11', '2016-07-16', 'Harold Williamson', '14332 Texas Junction', null, 'Mzimba', null, null, 'India', 2.47, 'Cash', '2016-06-01', 'Shipped') +,(4270, 213, 62, '2016-11-09', '2017-02-07', 'Juan Fox', '17 Eagan Crossing', null, 'Xiayang', null, null, 'China', 7.63, 'Card', '2017-02-17', 'Shipped') +,(4271, 211, 70, '2016-04-16', '2016-04-26', 'Ryan Long', '0 Harper Circle', null, 'Blagoveshchenka', null, '658670', 'Russia', 3.2, 'Card', '2016-09-10', 'Complete') +,(4272, 206, 29, '2016-03-25', '2016-10-07', 'Frank Cole', '07 Westend Place', null, 'Laixi', null, null, 'China', 1.93, 'Cash', '2016-05-01', 'New') +,(4273, 209, 25, '2016-05-06', '2016-04-13', 'Tammy Wilson', '74278 Grim Pass', null, 'Åkersberga', 'Stockholm', '184 70', 'Sweden', 2.83, 'Card', '2016-10-29', 'Complete') +,(4274, 206, 82, '2017-02-07', '2017-03-06', 'Joan Gonzales', '40 Stephen Street', null, 'Tlogoagung', null, null, 'Indonesia', 3.44, 'Check', '2016-10-14', 'Complete') +,(4275, 203, 91, '2016-10-10', '2016-11-04', 'Jeffrey Hughes', '38 Toban Plaza', null, 'Privas', 'Rhône-Alpes', '07004 CEDEX', 'France', 8.33, 'Card', '2016-04-23', 'On Hold') +,(4276, 210, 89, '2016-05-14', '2016-09-03', 'Rachel Martin', '08 Lake View Hill', null, 'Sandgerði', null, '245', 'India', 2.07, 'Cash', '2016-06-07', 'Complete') +,(4277, 208, 97, '2016-04-06', '2016-07-02', 'Laura Harper', '1 Dexter Street', null, 'Xintaimen', null, null, 'China', 8.08, 'Check', '2016-05-11', 'Shipped') +,(4278, 215, 3 , '2017-03-04', '2017-03-08', 'Annie Rivera', '5975 Debra Park', null, 'Canchaque', null, null, 'Peru', 5.65, 'Check', '2016-04-09', 'Complete') +,(4279, 201, 6 , '2017-03-01', '2016-08-06', 'Pamela Graham', '2 Monument Avenue', null, 'Danxi', null, null, 'China', 2.05, 'Check', '2016-05-23', 'New') +,(4280, 202, 35, '2017-02-04', '2016-06-09', 'Joseph Jenkins', '00001 Fairfield Center', null, 'Mashtūl as Sūq', null, null, 'Germany', 5.32, 'Card', '2016-12-28', 'New') +,(4281, 203, 76, '2016-05-19', '2016-07-29', 'Eugene Garcia', '8308 Onsgard Lane', null, 'Limoncito', null, null, 'India', 4.07, 'Card', '2016-10-20', 'Shipped') +,(4282, 204, 27, '2016-07-20', '2016-09-26', 'Kevin Anderson', '8 Thierer Center', null, 'Saint-Étienne', 'Rhône-Alpes', '42963 CEDEX 9', 'France', 4.88, 'Card', '2016-07-21', 'Complete') +,(4283, 214, 50, '2016-11-27', '2016-06-14', 'Robin Parker', '51949 Forster Parkway', null, 'Laval', 'Pays de la Loire', '53009 CEDEX', 'France', 1.04, 'Check', '2016-04-20', 'Complete') +,(4284, 214, 74, '2016-11-29', '2016-12-08', 'Kelly Palmer', '2 Hauk Hill', null, 'Östersund', 'Jämtland', '831 17', 'Sweden', 4.26, 'Card', '2016-10-08', 'Complete') +,(4285, 214, 76, '2016-10-22', '2016-05-05', 'Diane Freeman', '5441 Petterle Way', null, 'El Tambo', null, null, 'Peru', 7.17, 'Check', '2016-09-27', 'New') +,(4286, 209, 96, '2016-11-08', '2016-08-26', 'Kathleen Adams', '423 Talisman Point', null, 'Kurume', null, '963-8846', 'Japan', 1.99, 'Cash', '2016-05-19', 'On Hold') +,(4287, 204, 76, '2016-10-18', '2017-01-15', 'Teresa Mendoza', '818 Atwood Lane', null, 'Mosteiro', 'Viana do Castelo', '4980-125', 'Portugal', 3.29, 'Cash', '2016-10-03', 'On Hold') +,(4288, 210, 45, '2016-10-15', '2016-12-14', 'Irene Anderson', '4 Rutledge Alley', null, 'Saparua', null, null, 'Indonesia', 4.35, 'Card', '2016-10-13', 'On Hold') +,(4289, 209, 61, '2017-02-12', '2016-07-15', 'Terry Bennett', '351 Johnson Circle', null, 'Quiling', null, '2902', 'Philippines', 6.77, 'Card', '2016-07-20', 'New') +,(4290, 203, 1 , '2017-03-02', '2016-08-25', 'Ronald Mccoy', '73609 Waywood Center', null, 'Zheleznodorozhnyy', null, '238411', 'Russia', 1.05, 'Cash', '2016-06-10', 'New') +,(4291, 211, 73, '2016-09-13', '2016-04-17', 'Andrew Matthews', '820 Lawn Crossing', null, 'Japeri', null, '26400-000', 'Brazil', 1.22, 'Cash', '2016-09-08', 'New') +,(4292, 215, 15, '2016-12-26', '2016-10-04', 'Melissa Chapman', '88384 Ohio Park', null, 'Dayr al Ghuşūn', null, null, 'India', 9.89, 'Check', '2016-08-14', 'Shipped') +,(4293, 210, 18, '2016-11-23', '2016-12-12', 'Russell Griffin', '6 Eliot Lane', null, 'Changshu City', null, null, 'China', 9.37, 'Check', '2016-05-10', 'On Hold') +,(4294, 206, 95, '2016-06-24', '2017-01-21', 'Jeffrey Gray', '04078 Hudson Drive', null, 'Luangwa', null, null, 'India', 2.58, 'Cash', '2016-06-15', 'Shipped') +,(4295, 215, 85, '2016-10-23', '2017-01-29', 'Lori Frazier', '724 Logan Drive', null, 'Gent', 'Vlaanderen', '9052', 'Denmark', 8.59, 'Cash', '2017-01-01', 'New') +,(4296, 217, 83, '2016-04-08', '2017-02-07', 'Joan Ortiz', '90 Merchant Avenue', null, 'Irasan', null, '3120', 'Philippines', 4.64, 'Card', '2016-09-01', 'Complete') +,(4297, 211, 29, '2016-07-13', '2017-02-06', 'John Stanley', '680 Artisan Pass', null, 'Borås', 'Västra Götaland', '504 75', 'Sweden', 1.77, 'Cash', '2016-07-12', 'On Hold') +,(4298, 208, 65, '2016-12-28', '2016-04-19', 'Dorothy Bell', '397 Kim Place', null, 'Zhongxin', null, null, 'China', 1.2, 'Check', '2017-01-28', 'On Hold') +,(4299, 201, 43, '2017-01-12', '2016-08-07', 'Doris Ramirez', '181 Prentice Terrace', null, 'Severnyy', null, '141707', 'Russia', 2.65, 'Card', '2016-08-13', 'Shipped') +,(4300, 207, 27, '2016-11-10', '2016-11-01', 'Elizabeth Harrison', '067 Talisman Trail', null, 'Guangang', null, null, 'China', 4.78, 'Check', '2016-04-30', 'On Hold') +,(4301, 206, 64, '2016-08-14', '2017-01-13', 'Judith Howard', '55095 Sloan Alley', null, 'Longhua', null, null, 'China', 1.93, 'Card', '2016-10-29', 'New') +,(4302, 213, 33, '2017-01-19', '2016-05-23', 'Julia Simpson', '87375 Londonderry Parkway', null, 'Fufang', null, null, 'China', 9.23, 'Card', '2016-11-15', 'Shipped') +,(4303, 220, 49, '2016-08-01', '2016-04-23', 'Elizabeth Bell', '60 Ridgeview Trail', null, 'Infantas', 'Braga', '4810-578', 'Portugal', 3.22, 'Check', '2017-02-01', 'Complete') +,(4304, 217, 56, '2016-09-07', '2016-08-13', 'Ernest Andrews', '231 Graceland Terrace', null, 'Pindamonhangaba', null, '12400-000', 'Brazil', 2.77, 'Card', '2016-04-04', 'On Hold') +,(4305, 219, 44, '2016-06-11', '2016-03-27', 'Jeffrey Lopez', '76434 Havey Court', null, 'Khvalovo', null, '187435', 'Russia', 8.84, 'Cash', '2016-04-14', 'Shipped') +,(4306, 212, 16, '2016-05-29', '2016-12-31', 'Ralph Weaver', '15 Armistice Alley', null, 'Odienné', null, null, 'Canada', 7.1, 'Card', '2017-01-09', 'Shipped') +,(4307, 210, 16, '2016-10-19', '2017-01-10', 'Mary Stevens', '1928 Aberg Park', null, 'Dzwola', null, '23-304', 'Poland', 4.04, 'Card', '2016-08-24', 'Complete') +,(4308, 220, 50, '2016-09-23', '2016-09-16', 'Douglas Welch', '9 Ryan Circle', null, 'Babakanloa', null, null, 'Indonesia', 1.11, 'Card', '2016-10-13', 'Shipped') +,(4309, 217, 99, '2016-10-17', '2017-01-01', 'Raymond Cruz', '0402 Burning Wood Alley', null, 'Bucay', null, '2805', 'Philippines', 9.27, 'Cash', '2016-06-02', 'Complete') +,(4310, 219, 65, '2016-04-14', '2016-05-14', 'Sara Frazier', '43 Truax Terrace', null, 'Halton', 'England', 'LS9', 'United Kingdom', 5.56, 'Check', '2016-12-04', 'New') +,(4311, 220, 17, '2017-02-03', '2016-07-09', 'Sarah Lane', '414 Gina Point', null, 'Fulong', null, null, 'China', 3.35, 'Cash', '2016-12-27', 'New') +,(4312, 205, 77, '2017-02-27', '2016-04-10', 'Michelle Bradley', '16664 Towne Point', null, 'Yangchun', null, null, 'China', 8.64, 'Cash', '2017-01-28', 'Complete') +,(4313, 210, 68, '2016-08-29', '2016-10-27', 'Marie Porter', '7802 Hovde Plaza', null, 'Redakodi', null, null, 'Indonesia', 1.97, 'Cash', '2016-11-08', 'Complete') +,(4314, 207, 41, '2016-08-08', '2016-08-31', 'Melissa Moore', '438 Mendota Way', null, 'Bensonville', null, null, 'United Kingdom', 7.97, 'Cash', '2017-01-17', 'New') +,(4315, 212, 96, '2016-08-08', '2016-07-27', 'Katherine Bell', '76 Manley Park', null, 'Xagmakajor', null, null, 'China', 7.49, 'Cash', '2016-03-29', 'New') +,(4316, 209, 67, '2016-09-26', '2017-02-03', 'Katherine Elliott', '86 Nelson Point', null, 'Boavista', 'Aveiro', '4520-104', 'Portugal', 1.92, 'Card', '2016-04-28', 'Complete') +,(4317, 219, 40, '2016-10-09', '2016-12-21', 'Dorothy Rose', '75962 Basil Drive', null, 'Pécs', 'Baranya', '7610', 'Denmark', 3.23, 'Card', '2017-02-21', 'Shipped') +,(4318, 209, 68, '2017-01-15', '2017-01-03', 'Larry Hicks', '5985 Crest Line Road', null, 'Lingqiao', null, null, 'China', 2.77, 'Check', '2017-01-20', 'Complete') +,(4319, 214, 55, '2016-07-14', '2017-03-05', 'Paula Rodriguez', '6 Lawn Court', null, 'Simajia', null, null, 'China', 6.33, 'Check', '2016-04-08', 'Shipped') +,(4320, 203, 83, '2016-12-26', '2016-10-07', 'Sharon Richards', '43297 Rigney Avenue', null, 'Salto', null, null, 'India', 7.32, 'Check', '2016-09-14', 'Complete') +,(4321, 215, 29, '2016-12-27', '2016-07-21', 'Craig Day', '22 Thierer Center', null, 'Alberton', 'Prince Edward Island', 'P7K', 'Canada', 5.32, 'Check', '2016-04-02', 'On Hold') +,(4322, 207, 80, '2016-12-06', '2016-05-21', 'Donna Butler', '4149 Bartelt Point', null, 'Carbonear', 'Newfoundland and Labrador', 'A1Y', 'Canada', 3.1, 'Check', '2016-10-03', 'New') +,(4323, 216, 31, '2016-06-27', '2017-03-13', 'Carolyn Ferguson', '97225 Bartelt Avenue', null, 'Tinalmud', null, '1531', 'Philippines', 7.11, 'Cash', '2016-05-22', 'Complete') +,(4324, 212, 78, '2016-05-19', '2016-11-14', 'Peter Romero', '22977 Westridge Terrace', null, 'Toulouse', 'Midi-Pyrénées', '31029 CEDEX 4', 'France', 2.97, 'Check', '2016-09-09', 'Shipped') +,(4325, 213, 73, '2017-02-18', '2016-09-22', 'Jose Greene', '40351 Rusk Place', null, 'Vila Nova de Gaia', 'Porto', '4400-005', 'Portugal', 5.76, 'Cash', '2016-12-12', 'Shipped') +,(4326, 208, 62, '2017-02-14', '2016-11-13', 'Betty Anderson', '8403 Melody Center', null, 'Būsh', null, null, 'Germany', 9.56, 'Check', '2016-10-08', 'Shipped') +,(4327, 220, 56, '2016-09-06', '2016-08-17', 'Amanda Frazier', '47 Dapin Center', null, 'Pasirmanggu', null, null, 'Indonesia', 2.25, 'Card', '2016-07-11', 'On Hold') +,(4328, 201, 24, '2016-10-29', '2017-01-25', 'Douglas Foster', '6953 Stoughton Avenue', null, 'Bokhan', null, '669310', 'Russia', 1.26, 'Card', '2016-07-06', 'Complete') +,(4329, 206, 33, '2017-03-09', '2017-03-12', 'Louis Brown', '76 Little Fleur Park', null, 'Shazhenxi', null, null, 'China', 3.4, 'Check', '2016-08-09', 'Complete') +,(4330, 205, 61, '2016-04-14', '2016-09-26', 'Elizabeth Butler', '82 Springview Road', null, 'Kimito', null, '11710', 'Finland', 1.92, 'Card', '2016-10-18', 'Shipped') +,(4331, 220, 39, '2016-06-10', '2016-04-07', 'Albert Flores', '19 Talmadge Hill', null, 'Almelo', 'Provincie Overijssel', '7604', 'Netherlands', 4.23, 'Check', '2016-12-15', 'Shipped') +,(4332, 217, 47, '2016-10-25', '2016-09-28', 'Kimberly Fowler', '0 Trailsway Crossing', null, 'Iwata', null, '925-0145', 'Japan', 8.14, 'Check', '2016-06-06', 'On Hold') +,(4333, 209, 12, '2016-12-25', '2016-10-31', 'Joe Powell', '5 Everett Drive', null, 'Bergen', 'Hordaland', '5895', 'Greece', 8.02, 'Cash', '2016-09-05', 'Shipped') +,(4334, 219, 1 , '2016-08-12', '2017-02-18', 'Virginia Collins', '78693 Cordelia Point', null, 'San Benito', null, '8423', 'Philippines', 8.4, 'Cash', '2017-01-06', 'Complete') +,(4335, 220, 59, '2017-02-26', '2016-11-05', 'Mary Howard', '5 Golf View Street', null, 'Gjinkar', null, null, 'Canada', 3.54, 'Card', '2016-06-09', 'Complete') +,(4336, 220, 19, '2017-02-09', '2017-01-26', 'Ronald Stevens', '57 Old Shore Crossing', null, 'Bureng', null, null, 'United Kingdom', 8.21, 'Card', '2016-12-21', 'On Hold') +,(4337, 204, 59, '2016-05-14', '2016-07-08', 'James Evans', '44078 Warner Drive', null, 'Amurzet', null, '679230', 'Russia', 9.35, 'Card', '2016-07-22', 'Complete') +,(4338, 213, 96, '2016-09-02', '2016-11-10', 'Willie Snyder', '361 Stone Corner Pass', null, 'Sindangsari', null, null, 'Indonesia', 9.32, 'Check', '2016-04-10', 'Complete') +,(4339, 220, 30, '2017-03-04', '2016-08-16', 'Julie Black', '2922 Grasskamp Alley', null, 'Cotonou', null, null, 'India', 9.14, 'Cash', '2017-03-07', 'Shipped') +,(4340, 206, 17, '2016-11-18', '2016-11-24', 'Roy Olson', '4 Shopko Hill', null, 'Binagadi', null, null, 'India', 5.22, 'Check', '2016-10-14', 'Shipped') +,(4341, 202, 28, '2016-11-18', '2017-02-18', 'Evelyn Lawrence', '90 Crownhardt Center', null, 'Bayshint', null, null, 'Japan', 7.25, 'Check', '2016-12-16', 'On Hold') +,(4342, 209, 37, '2016-10-30', '2016-06-07', 'John Rodriguez', '69 Golf View Avenue', null, 'Hezuoqiao', null, null, 'China', 8.23, 'Cash', '2016-11-05', 'On Hold') +,(4343, 203, 51, '2016-04-09', '2016-12-17', 'Ruth Kim', '0027 Dunning Pass', null, 'Kuteynykove', null, null, 'Ukraine', 2.46, 'Cash', '2016-03-28', 'New') +,(4344, 217, 34, '2016-12-16', '2016-10-11', 'Shawn Patterson', '36 Little Fleur Circle', null, 'Xiekou', null, null, 'China', 6.43, 'Cash', '2016-03-27', 'New') +,(4345, 213, 59, '2016-10-30', '2016-07-10', 'Nancy Jones', '47088 Crowley Junction', null, 'Promna', null, '26-803', 'Poland', 5.67, 'Cash', '2016-12-02', 'Complete') +,(4346, 217, 70, '2016-12-27', '2016-10-06', 'Deborah Bishop', '1 Summer Ridge Circle', null, 'Bunobogu', null, null, 'Indonesia', 7.57, 'Cash', '2016-09-19', 'New') +,(4347, 203, 30, '2016-05-26', '2016-08-14', 'Steve Hunt', '4393 Summer Ridge Crossing', null, 'Hošťka', null, '348 06', 'Czech Republic', 5.78, 'Cash', '2016-12-30', 'Shipped') +,(4348, 203, 9 , '2016-04-14', '2016-10-19', 'Betty Black', '23 Nova Junction', null, 'Sępólno Krajeńskie', null, '89-400', 'Poland', 8.55, 'Cash', '2016-09-23', 'New') +,(4349, 211, 95, '2017-01-28', '2016-04-13', 'Gregory Wood', '96 Grasskamp Point', null, 'Psará', null, null, 'Greece', 8.47, 'Cash', '2016-12-18', 'Shipped') +,(4350, 218, 97, '2016-03-22', '2016-04-13', 'Martin Martinez', '5 Towne Crossing', null, 'Kista', 'Stockholm', '164 45', 'Sweden', 8.07, 'Check', '2016-05-15', 'On Hold') +,(4351, 215, 80, '2016-06-20', '2016-11-05', 'Margaret Cook', '82 Eggendart Junction', null, 'Omuthiya', null, null, 'India', 9.71, 'Cash', '2016-09-18', 'Shipped') +,(4352, 211, 15, '2016-09-02', '2017-01-23', 'Justin Myers', '6734 Continental Drive', null, 'Tadabliro', null, null, 'Indonesia', 2.23, 'Cash', '2016-05-12', 'New') +,(4353, 216, 77, '2016-10-09', '2016-07-31', 'Jane Ruiz', '2743 Harbort Center', null, 'Pasar', null, null, 'Indonesia', 4.88, 'Cash', '2016-06-04', 'New') +,(4354, 202, 53, '2017-03-15', '2016-06-21', 'Philip Bradley', '6 Bartillon Park', null, 'Aimorés', null, '35200-000', 'Brazil', 5.01, 'Cash', '2016-05-16', 'New') +,(4355, 220, 14, '2017-01-03', '2016-05-07', 'Phillip White', '1 Schurz Crossing', null, 'Tuzhai', null, null, 'China', 7.06, 'Check', '2016-10-18', 'New') +,(4356, 208, 85, '2016-12-26', '2016-07-28', 'George Ryan', '92 Morrow Road', null, 'Nijmegen', 'Provincie Gelderland', '6519', 'Netherlands', 5.76, 'Cash', '2016-12-14', 'New') +,(4357, 208, 73, '2016-04-06', '2016-04-01', 'Evelyn Rose', '134 Milwaukee Lane', null, 'Tiechang', null, null, 'China', 5.37, 'Cash', '2016-12-19', 'Shipped') +,(4358, 202, 77, '2016-04-14', '2016-10-21', 'Janet Robertson', '09309 Dottie Park', null, 'Ljubešćica', null, '42222', 'Canada', 5.27, 'Cash', '2016-06-07', 'On Hold') +,(4359, 202, 35, '2016-05-08', '2017-01-27', 'Diana Perry', '95535 Lotheville Center', null, 'Kvasice', null, '768 21', 'Czech Republic', 7.1, 'Card', '2016-07-27', 'New') +,(4360, 210, 86, '2016-11-23', '2016-10-12', 'Todd Elliott', '6737 Melrose Road', null, 'Catumbela', null, null, 'Netherlands', 2.19, 'Check', '2016-04-05', 'Shipped') +,(4361, 209, 45, '2016-04-07', '2016-06-30', 'Emily Dean', '143 Ridge Oak Alley', null, 'Diriá', null, null, 'United Kingdom', 1.33, 'Cash', '2016-12-31', 'Complete') +,(4362, 208, 88, '2016-05-08', '2016-04-14', 'Eric Simpson', '8113 Graceland Junction', null, 'Borovoy', null, '309135', 'Russia', 3.81, 'Card', '2016-06-21', 'Shipped') +,(4363, 211, 84, '2016-12-31', '2016-06-05', 'Alan Chapman', '461 Westport Center', null, 'Inayauan', null, '3336', 'Philippines', 8.62, 'Card', '2017-03-03', 'Complete') +,(4364, 205, 100,'2016-09-10', '2017-02-19', 'Denise Dixon', '066 Gerald Avenue', null, 'Venëv', null, '301320', 'Russia', 4.82, 'Check', '2016-04-22', 'Shipped') +,(4365, 211, 7 , '2017-03-09', '2017-03-16', 'Douglas Nelson', '03051 Grasskamp Way', null, 'Póvoa', 'Vila Real', '4870-130', 'Portugal', 1.67, 'Check', '2016-08-30', 'Complete') +,(4366, 213, 24, '2016-04-25', '2016-06-06', 'Louis Frazier', '65 Buhler Circle', null, 'Bīleh Savār', null, null, 'Iran', 9.53, 'Check', '2016-12-20', 'Complete') +,(4367, 207, 8 , '2016-09-24', '2016-04-06', 'Theresa Stanley', '487 Birchwood Point', null, 'T’et’ri Tsqaro', null, null, 'United Kingdom', 5.06, 'Cash', '2016-04-08', 'New') +,(4368, 207, 76, '2016-12-21', '2016-05-03', 'Sean Chapman', '3917 Miller Pass', null, 'Andaray', null, null, 'Peru', 4.36, 'Check', '2016-07-25', 'New') +,(4369, 215, 90, '2016-03-30', '2017-01-03', 'Eugene Brooks', '137 1st Hill', null, 'Independencia', 'Tamaulipas', '89888', 'Mexico', 9.56, 'Check', '2017-01-23', 'Shipped') +,(4370, 204, 33, '2016-12-17', '2016-10-22', 'Joan Martin', '24 Hayes Point', null, 'Dobrzeń Wielki', null, '46-081', 'Poland', 8.87, 'Cash', '2016-07-09', 'Shipped') +,(4371, 204, 13, '2016-12-11', '2016-05-07', 'Martha Mendoza', '0 Sommers Point', null, 'Jiamachi', null, null, 'China', 1.53, 'Check', '2016-08-05', 'On Hold') +,(4372, 211, 90, '2016-10-27', '2017-02-14', 'Joan Allen', '64 Bluestem Drive', null, 'Conde', 'Braga', '4815-019', 'Portugal', 2.66, 'Card', '2016-09-25', 'Shipped') +,(4373, 208, 81, '2016-08-20', '2017-03-16', 'Tammy Richards', '15541 Ramsey Alley', null, 'Gunungkendeng', null, null, 'Indonesia', 5.66, 'Cash', '2016-05-03', 'Shipped') +,(4374, 216, 19, '2017-01-22', '2016-09-10', 'Andrea Medina', '3 Goodland Pass', null, 'Ḩarīb', null, null, 'South Africa', 1.03, 'Card', '2016-10-12', 'Shipped') +,(4375, 213, 8 , '2016-09-13', '2016-12-21', 'Antonio Carpenter', '453 Duke Point', null, 'Rouen', 'Haute-Normandie', '76029 CEDEX', 'France', 5.11, 'Cash', '2017-01-26', 'Complete') +,(4376, 207, 83, '2016-11-29', '2016-04-13', 'Jeffrey Smith', '7 Old Shore Center', null, 'Licuan', null, '2500', 'Philippines', 8.55, 'Cash', '2016-11-08', 'New') +,(4377, 216, 13, '2016-11-06', '2016-10-08', 'Mark Perkins', '57 Troy Court', null, 'Mojimán', null, null, 'Canada', 2.03, 'Card', '2017-01-06', 'Shipped') +,(4378, 219, 4 , '2016-08-05', '2017-03-04', 'Louis Jordan', '5 Armistice Street', null, 'Labège', 'Midi-Pyrénées', '31673 CEDEX', 'France', 3.61, 'Cash', '2016-12-07', 'New') +,(4379, 218, 66, '2017-02-26', '2016-11-18', 'Fred Johnson', '4 Dovetail Crossing', null, 'Santa Cruz', null, null, 'India', 1.08, 'Cash', '2016-04-02', 'Complete') +,(4380, 201, 27, '2016-09-01', '2016-05-08', 'Rose Harvey', '8 Canary Plaza', null, 'Pingtan', null, null, 'China', 6.9, 'Check', '2016-12-09', 'Complete') +,(4381, 209, 89, '2017-02-04', '2016-08-30', 'Christine Thomas', '008 Carberry Alley', null, 'Logung', null, null, 'Indonesia', 6.13, 'Card', '2016-05-09', 'On Hold') +,(4382, 204, 47, '2016-08-11', '2016-12-27', 'Juan Reed', '4337 Del Sol Hill', null, 'Dayeuhluhur', null, null, 'Indonesia', 7.76, 'Card', '2016-06-15', 'New') +,(4383, 215, 30, '2016-08-07', '2016-07-22', 'Diane Gray', '899 Oneill Pass', null, 'Alegrete', null, '97540-000', 'Brazil', 5.62, 'Cash', '2016-12-26', 'Complete') +,(4384, 212, 88, '2016-07-23', '2016-05-07', 'Louise Baker', '46092 Kedzie Court', null, 'Ban Mo', null, '18130', 'Thailand', 4.0, 'Card', '2016-07-11', 'Complete') +,(4385, 203, 62, '2017-02-20', '2016-10-01', 'Paul Thompson', '77444 Northwestern Pass', null, 'Francisco I Madero', 'Coahuila De Zaragoza', '26010', 'Mexico', 3.99, 'Check', '2016-12-23', 'Shipped') +,(4386, 218, 26, '2016-09-02', '2016-06-10', 'Anne Kim', '67814 Buena Vista Court', null, 'Sanjie', null, null, 'China', 9.61, 'Card', '2016-04-05', 'New') +,(4387, 219, 20, '2017-03-05', '2016-12-19', 'Matthew Gutierrez', '33055 Evergreen Crossing', null, 'Cusco', null, null, 'Peru', 6.52, 'Check', '2017-02-17', 'Shipped') +,(4388, 219, 71, '2016-09-06', '2016-05-24', 'Janet Hernandez', '9243 Forest Run Parkway', null, 'Ulanov', null, null, 'Ukraine', 3.04, 'Cash', '2016-09-20', 'New') +,(4389, 207, 2 , '2016-04-25', '2017-02-16', 'Louis Chapman', '878 Roth Alley', null, 'Kusak', null, '423430', 'Russia', 5.78, 'Cash', '2017-02-18', 'On Hold') +,(4390, 218, 64, '2016-09-25', '2016-09-22', 'Joe Carpenter', '56 Artisan Park', null, 'Xinjiang', null, null, 'China', 8.2, 'Card', '2016-12-01', 'On Hold') +,(4391, 218, 64, '2016-07-30', '2016-07-23', 'Charles Harper', '7 Sutherland Road', null, 'Tatarbunary', null, null, 'Ukraine', 4.62, 'Cash', '2016-06-29', 'Shipped') +,(4392, 206, 92, '2016-05-05', '2016-07-17', 'Craig Reynolds', '3 Erie Park', null, 'East End', null, null, 'Canada', 2.03, 'Check', '2017-02-03', 'New') +,(4393, 212, 45, '2016-06-29', '2016-06-17', 'Raymond Mcdonald', '792 Brown Trail', null, 'Yangfang', null, null, 'China', 4.44, 'Card', '2017-02-27', 'Complete') +,(4394, 211, 87, '2016-09-28', '2016-04-03', 'Sandra Medina', '7 Eagan Circle', null, 'Baratleke', null, null, 'Indonesia', 4.34, 'Cash', '2017-01-05', 'Complete') +,(4395, 203, 57, '2016-08-18', '2017-03-05', 'Sean Carpenter', '33 Dottie Park', null, 'Sokal’', null, null, 'Ukraine', 5.39, 'Cash', '2017-02-22', 'On Hold') +,(4396, 203, 87, '2016-06-19', '2016-07-10', 'Alice Ferguson', '0399 Dixon Hill', null, 'Privolzhskiy', null, '413138', 'Russia', 8.74, 'Cash', '2016-12-23', 'New') +,(4397, 216, 61, '2016-08-01', '2016-12-25', 'Diana Nguyen', '5052 Rigney Junction', null, 'Guaynabo', 'Pr', '00971', 'Germany', 5.36, 'Check', '2016-07-12', 'On Hold') +,(4398, 211, 52, '2016-12-04', '2016-05-11', 'Earl Gutierrez', '32 Summit Avenue', null, 'Maqbanah', null, null, 'South Africa', 5.82, 'Cash', '2016-07-21', 'New') +,(4399, 208, 71, '2016-05-16', '2017-02-25', 'Gloria Gordon', '5 Prentice Trail', null, 'Xichang', null, null, 'China', 3.2, 'Card', '2016-05-24', 'Complete') +,(4400, 218, 7 , '2016-09-06', '2016-03-21', 'Robert Wheeler', '83 Logan Circle', null, 'Zhongshan', null, null, 'China', 9.15, 'Cash', '2016-08-16', 'Shipped') +,(4401, 210, 53, '2016-09-05', '2016-05-01', 'Walter Williamson', '8459 American Plaza', null, 'Santo Rosario', null, '3114', 'Philippines', 7.71, 'Check', '2017-01-25', 'New') +,(4402, 216, 92, '2016-10-10', '2016-03-28', 'Jonathan James', '164 Bonner Hill', null, 'Vale de Mendiz', 'Vila Real', '5085-105', 'Portugal', 2.96, 'Card', '2016-07-15', 'Shipped') +,(4403, 212, 12, '2016-09-15', '2016-11-11', 'Judy Williams', '207 Scofield Place', null, 'Lawa-an', null, '5706', 'Philippines', 9.68, 'Check', '2016-04-30', 'On Hold') +,(4404, 213, 83, '2016-04-25', '2016-05-14', 'Amy Olson', '84189 Schurz Circle', null, 'Ogoja', null, null, 'Netherlands', 5.18, 'Card', '2016-11-02', 'Complete') +,(4405, 209, 7 , '2016-12-01', '2016-08-30', 'Donna Vasquez', '82460 Ridgeway Hill', null, 'La Guacamaya', null, null, 'Canada', 5.32, 'Card', '2017-02-11', 'Complete') +,(4406, 209, 66, '2016-09-14', '2016-05-13', 'Susan Jacobs', '17 Morningstar Lane', null, 'Chedao', null, null, 'China', 4.12, 'Cash', '2016-11-11', 'New') +,(4407, 214, 57, '2016-05-04', '2016-06-03', 'Kathryn Burns', '116 Hollow Ridge Park', null, 'Comagascas', null, '1950', 'Philippines', 1.05, 'Cash', '2017-01-28', 'New') +,(4408, 201, 64, '2017-02-11', '2016-06-08', 'Doris Bennett', '090 Lien Place', null, 'Luotang', null, null, 'China', 1.35, 'Cash', '2016-12-16', 'Complete') +,(4409, 209, 41, '2017-02-28', '2016-09-05', 'Cynthia Robertson', '6 Eliot Center', null, 'Abu Dhabi', null, null, 'Denmark', 4.21, 'Check', '2017-01-01', 'New') +,(4410, 215, 24, '2016-08-28', '2016-10-30', 'Jonathan Parker', '0 Weeping Birch Hill', null, 'Cienfuegos', null, null, 'Denmark', 1.69, 'Card', '2017-01-21', 'Shipped') +,(4411, 206, 10, '2016-08-30', '2016-12-06', 'Bobby Foster', '8279 Ridgeview Place', null, 'Cruz Alta', null, '98000-000', 'Brazil', 7.5, 'Cash', '2016-09-09', 'On Hold') +,(4412, 205, 65, '2016-12-13', '2017-02-27', 'Phyllis Moore', '806 Acker Drive', null, 'Paoay', null, '2902', 'Philippines', 4.63, 'Cash', '2017-01-11', 'Shipped') +,(4413, 211, 2 , '2016-12-05', '2016-12-07', 'Kevin Gordon', '00875 Sherman Lane', null, 'Wansheng', null, null, 'China', 2.7, 'Card', '2016-07-31', 'New') +,(4414, 219, 25, '2017-02-08', '2016-06-22', 'Jack Mccoy', '2 Killdeer Center', null, 'Gresik', null, null, 'Indonesia', 4.1, 'Check', '2017-03-05', 'On Hold') +,(4415, 220, 9 , '2017-01-02', '2016-08-28', 'Margaret Fuller', '1960 Parkside Hill', null, 'Kafr Zaytā', null, null, 'India', 1.09, 'Cash', '2016-08-07', 'New') +,(4416, 214, 100,'2017-01-07', '2017-02-07', 'Melissa Nichols', '6 Lakewood Gardens Avenue', null, 'Stockholm', 'Stockholm', '113 90', 'Sweden', 4.1, 'Cash', '2016-03-31', 'On Hold') +,(4417, 210, 87, '2017-01-23', '2016-12-14', 'William Webb', '84 Mifflin Junction', null, 'Kanungu', null, null, 'South Africa', 4.38, 'Card', '2016-05-05', 'Complete') +,(4418, 213, 29, '2017-01-05', '2017-02-07', 'Anne Gonzales', '7 Myrtle Plaza', null, 'Davila', null, '2012', 'Philippines', 5.45, 'Cash', '2016-05-23', 'Shipped') +,(4419, 212, 94, '2016-10-19', '2016-12-20', 'Kathleen Graham', '22 Forest Run Hill', null, 'Mollepampa', null, null, 'Peru', 5.86, 'Check', '2016-07-31', 'Shipped') +,(4420, 201, 32, '2016-11-29', '2016-09-24', 'Diana Sanders', '8925 Kennedy Parkway', null, 'San Miguel de Tucumán', null, '4137', 'Argentina', 3.71, 'Cash', '2016-08-10', 'Complete') +,(4421, 208, 58, '2017-03-02', '2016-04-03', 'Willie Wright', '60 Old Shore Alley', null, 'Jinjiang', null, null, 'China', 6.72, 'Card', '2016-10-09', 'Shipped') +,(4422, 206, 59, '2016-04-19', '2016-12-29', 'Frank Evans', '785 Little Fleur Center', null, 'El Triunfo', null, null, 'Argentina', 9.43, 'Check', '2016-05-13', 'New') +,(4423, 209, 68, '2016-08-22', '2016-11-20', 'Phillip Carter', '6398 John Wall Center', null, 'Shouxihu', null, null, 'China', 4.22, 'Check', '2016-10-18', 'New') +,(4424, 205, 31, '2016-10-05', '2016-10-09', 'Lillian Gomez', '17560 Melrose Point', null, 'Milwaukee', 'Wisconsin', '53205', 'United States', 1.16, 'Check', '2016-04-17', 'On Hold') +,(4425, 202, 7 , '2016-07-24', '2017-02-22', 'John Ortiz', '45 Vera Place', null, 'Kiel', 'Schleswig-Holstein', '24109', 'Germany', 5.86, 'Cash', '2016-10-13', 'On Hold') +,(4426, 214, 80, '2016-10-04', '2016-09-01', 'Brandon Fields', '94792 Jackson Hill', null, 'San Juan', 'Pr', '00918', 'Germany', 2.54, 'Check', '2016-12-19', 'On Hold') +,(4427, 209, 23, '2016-06-23', '2016-04-29', 'Willie Hart', '20 Sloan Terrace', null, 'Mount Darwin', null, null, 'India', 3.71, 'Cash', '2016-09-22', 'Complete') +,(4428, 211, 7 , '2016-09-07', '2016-10-28', 'Walter Montgomery', '67285 Crowley Road', null, 'Wailolong', null, null, 'Indonesia', 9.79, 'Check', '2016-04-05', 'Complete') +,(4429, 217, 10, '2017-03-02', '2016-11-27', 'Sara Williamson', '72 Monterey Circle', null, 'Salvacion', null, '1114', 'Philippines', 3.33, 'Card', '2016-05-18', 'On Hold') +,(4430, 210, 12, '2017-02-18', '2016-03-17', 'Wayne Sanders', '21302 Valley Edge Pass', null, 'Balakasap', null, null, 'Indonesia', 2.18, 'Card', '2016-06-02', 'New') +,(4431, 220, 80, '2016-10-01', '2016-09-28', 'Cynthia Allen', '1 Karstens Avenue', null, 'Santo António das Areias', 'Portalegre', '7330-254', 'Portugal', 3.4, 'Cash', '2016-08-21', 'New') +,(4432, 211, 95, '2017-02-04', '2016-03-17', 'Jonathan Hughes', '93993 Fairview Junction', null, 'Buje', null, '52460', 'Canada', 5.19, 'Cash', '2016-10-01', 'New') +,(4433, 208, 67, '2017-02-11', '2016-06-01', 'Gerald Wright', '77811 Dennis Point', null, 'Hohoe', null, null, 'United Kingdom', 3.25, 'Card', '2016-07-15', 'New') +,(4434, 201, 53, '2016-12-25', '2017-01-07', 'Roy Anderson', '182 High Crossing Terrace', null, 'Bajiazi', null, null, 'China', 8.8, 'Card', '2017-02-11', 'Shipped') +,(4435, 207, 3 , '2016-05-30', '2016-04-07', 'Brenda Wright', '98 Kim Drive', null, 'Lillehammer', 'Oppland', '2605', 'Greece', 5.76, 'Cash', '2017-02-02', 'On Hold') +,(4436, 204, 29, '2016-07-19', '2016-07-05', 'Philip Price', '16 Brown Plaza', null, 'Čapljina', null, null, 'India', 9.62, 'Cash', '2016-11-05', 'On Hold') +,(4437, 210, 80, '2016-10-13', '2016-04-24', 'Michelle Webb', '4160 Everett Point', null, 'Waepana', null, null, 'Indonesia', 9.54, 'Cash', '2016-07-11', 'Complete') +,(4438, 209, 6 , '2016-12-31', '2017-01-27', 'Heather Fields', '10 Fairview Center', null, 'Złotniki Kujawskie', null, '88-180', 'Poland', 1.81, 'Cash', '2017-03-15', 'Shipped') +,(4439, 216, 53, '2017-02-01', '2016-09-12', 'Ryan Long', '0 Gateway Avenue', null, 'Pizhanka', null, '613380', 'Russia', 9.34, 'Cash', '2016-07-02', 'New') +,(4440, 211, 25, '2017-02-03', '2016-10-13', 'Joyce Stewart', '61 Burrows Street', null, 'Kushelevka', null, '658381', 'Russia', 6.4, 'Cash', '2017-01-29', 'On Hold') +,(4441, 215, 93, '2016-03-21', '2016-11-17', 'Walter Arnold', '97613 Pond Avenue', null, 'Looc', null, '5507', 'Philippines', 1.09, 'Cash', '2016-10-05', 'Shipped') +,(4442, 214, 10, '2016-05-10', '2016-05-31', 'Irene Simmons', '36 Larry Court', null, 'Rozhdestveno', null, '399768', 'Russia', 4.82, 'Check', '2017-01-13', 'Complete') +,(4443, 208, 19, '2017-02-09', '2017-02-05', 'Christina Mccoy', '1482 Rockefeller Point', null, 'Rybatskoye', null, '196851', 'Russia', 1.62, 'Cash', '2016-09-14', 'Shipped') +,(4444, 210, 98, '2017-02-15', '2016-05-17', 'Marie Fowler', '04 Prairie Rose Junction', null, 'Chicago', 'Illinois', '60604', 'United States', 7.47, 'Card', '2017-02-22', 'Complete') +,(4445, 218, 32, '2017-02-12', '2016-05-20', 'Louise Bell', '3 Charing Cross Pass', null, 'Selce', null, '1219', 'Denmark', 4.47, 'Cash', '2016-04-01', 'New') +,(4446, 209, 25, '2016-09-22', '2016-12-03', 'Barbara Black', '697 Oneill Drive', null, 'Shanghang', null, null, 'China', 4.66, 'Check', '2016-11-09', 'On Hold') +,(4447, 209, 100,'2016-08-26', '2017-01-16', 'James Holmes', '77 Marcy Court', null, 'Estreito', null, '65975-000', 'Brazil', 9.85, 'Check', '2016-12-04', 'On Hold') +,(4448, 210, 72, '2016-06-25', '2016-12-07', 'Kenneth Williams', '6400 Milwaukee Hill', null, 'Wanshan', null, null, 'China', 3.66, 'Card', '2016-06-09', 'On Hold') +,(4449, 213, 16, '2016-12-13', '2016-08-07', 'Joshua Jacobs', '8 Judy Park', null, 'Ágios Andréas', null, null, 'Greece', 3.81, 'Cash', '2016-07-07', 'Complete') +,(4450, 216, 100,'2016-12-21', '2017-02-13', 'Aaron Sanders', '1 Dakota Court', null, 'Huayllo', null, null, 'Peru', 7.59, 'Cash', '2016-04-22', 'On Hold') +,(4451, 211, 50, '2016-08-22', '2016-06-05', 'Eugene Scott', '03 Golden Leaf Point', null, 'Stírion', null, null, 'Greece', 8.99, 'Card', '2017-02-25', 'New') +,(4452, 220, 86, '2016-05-07', '2016-07-20', 'Cynthia Phillips', '820 Merchant Way', null, 'Mrongi Daja', null, null, 'Indonesia', 2.21, 'Check', '2016-04-27', 'On Hold') +,(4453, 213, 58, '2016-10-30', '2016-03-22', 'Martin Reed', '14 Meadow Vale Alley', null, 'Jiangdong', null, null, 'China', 3.58, 'Cash', '2017-02-12', 'Complete') +,(4454, 206, 98, '2016-05-14', '2016-11-07', 'Janet Porter', '74391 Ronald Regan Park', null, 'Lamakera Dua', null, null, 'Indonesia', 9.86, 'Check', '2016-06-12', 'New') +,(4455, 204, 2 , '2016-03-28', '2016-04-11', 'Amanda Duncan', '047 Jenna Road', null, 'Tungawan', null, '7018', 'Philippines', 2.04, 'Card', '2016-07-09', 'New') +,(4456, 211, 58, '2016-08-05', '2016-11-19', 'Joseph Henderson', '14 Morningstar Pass', null, 'Kolobolon', null, null, 'Indonesia', 6.44, 'Check', '2016-05-24', 'New') +,(4457, 215, 21, '2017-02-15', '2016-06-11', 'Cynthia Bishop', '066 Surrey Pass', null, 'Hưng Yên', null, null, 'Vietnam', 1.61, 'Check', '2016-07-05', 'Shipped') +,(4458, 211, 10, '2016-08-08', '2016-08-06', 'Craig Andrews', '7 Mariners Cove Court', null, 'Tuanchengshan', null, null, 'China', 8.4, 'Cash', '2016-12-15', 'New') +,(4459, 211, 71, '2016-05-13', '2017-02-19', 'Steve Warren', '6702 Delladonna Point', null, 'Pražmo', null, '739 04', 'Czech Republic', 8.29, 'Card', '2016-06-29', 'New') +,(4460, 214, 5 , '2016-12-21', '2016-06-21', 'Brenda Mills', '77934 Prairieview Way', null, 'Huafeng', null, null, 'China', 6.76, 'Cash', '2016-07-08', 'New') +,(4461, 212, 34, '2016-04-27', '2016-07-22', 'Randy Wright', '9 Thackeray Way', null, 'Dvůr Králové nad Labem', null, '544 01', 'Czech Republic', 9.45, 'Card', '2016-03-20', 'Shipped') +,(4462, 202, 47, '2016-10-31', '2016-06-30', 'Michelle Ramirez', '0152 Old Shore Road', null, 'Pulaupinang', null, null, 'Indonesia', 2.42, 'Card', '2016-09-05', 'New') +,(4463, 209, 86, '2016-07-30', '2016-04-29', 'Frank Duncan', '67 Buell Terrace', null, 'Krasne', null, null, 'Ukraine', 2.71, 'Card', '2016-06-22', 'Complete') +,(4464, 204, 62, '2017-03-01', '2017-03-11', 'Carlos Warren', '978 Merrick Circle', null, 'Penghua', null, null, 'China', 7.29, 'Cash', '2016-03-22', 'Shipped') +,(4465, 202, 87, '2016-06-23', '2016-11-15', 'Tina Gardner', '0 Mcguire Terrace', null, 'Cangqian', null, null, 'China', 2.17, 'Card', '2016-06-01', 'New') +,(4466, 220, 31, '2016-06-04', '2016-06-08', 'Stephen Turner', '17 Leroy Plaza', null, 'Pedaringan', null, null, 'Indonesia', 8.89, 'Check', '2016-05-09', 'Shipped') +,(4467, 210, 35, '2016-05-21', '2016-09-26', 'Melissa Wilson', '61199 Forest Center', null, 'Krmelín', null, '739 24', 'Czech Republic', 2.35, 'Card', '2016-06-20', 'On Hold') +,(4468, 216, 50, '2016-09-10', '2016-12-02', 'Billy Harper', '8940 Fisk Parkway', null, 'San Jose', 'California', '95113', 'United States', 3.98, 'Cash', '2016-10-04', 'Complete') +,(4469, 207, 22, '2016-06-03', '2016-11-06', 'Carl Davis', '5 Lindbergh Street', null, 'Taling Chan', null, '10170', 'Thailand', 4.71, 'Card', '2017-02-03', 'New') +,(4470, 211, 64, '2016-06-16', '2016-05-26', 'Gerald Henry', '2221 Porter Crossing', null, 'Mozdok', null, '363759', 'Russia', 9.57, 'Cash', '2016-10-11', 'Shipped') +,(4471, 206, 25, '2016-07-27', '2016-08-24', 'Debra Garza', '65379 Sunnyside Trail', null, 'Jiadingzhen', null, null, 'China', 1.06, 'Check', '2016-06-23', 'On Hold') +,(4472, 204, 18, '2016-08-30', '2016-10-09', 'Margaret Rodriguez', '3202 Marquette Point', null, 'Oranzherei', null, '416368', 'Russia', 3.35, 'Check', '2016-06-18', 'On Hold') +,(4473, 212, 88, '2016-10-29', '2016-05-25', 'William Burke', '46 Kingsford Center', null, 'San Juan', null, '11301', 'Denmark', 3.85, 'Check', '2017-02-12', 'Shipped') +,(4474, 217, 9 , '2017-02-19', '2016-05-29', 'Larry Myers', '731 Packers Point', null, 'Trelleborg', 'Skåne', '231 68', 'Sweden', 4.46, 'Card', '2016-06-19', 'New') +,(4475, 202, 40, '2016-11-03', '2016-04-25', 'Virginia Hall', '141 Rowland Way', null, 'Aoji-ri', null, null, 'Denmark', 7.58, 'Check', '2016-11-13', 'Shipped') +,(4476, 211, 16, '2017-03-07', '2016-10-14', 'Doris Berry', '60 Rusk Lane', null, 'Al Qamşīyah', null, null, 'India', 1.8, 'Check', '2016-03-19', 'On Hold') +,(4477, 210, 87, '2016-12-04', '2016-03-22', 'Juan Richards', '3830 Randy Parkway', null, 'Nakhon Nayok', null, '26120', 'Thailand', 1.22, 'Card', '2016-08-05', 'Complete') +,(4478, 203, 34, '2017-01-28', '2016-09-27', 'Kimberly Fox', '34957 Elka Way', null, 'Santiago', null, '97700-000', 'Brazil', 3.99, 'Check', '2016-07-06', 'On Hold') +,(4479, 219, 89, '2016-07-01', '2016-05-31', 'Ruby Ruiz', '90581 American Hill', null, 'Agudos', null, '17120-000', 'Brazil', 5.97, 'Cash', '2016-06-03', 'On Hold') +,(4480, 203, 53, '2016-10-17', '2016-11-07', 'Ruby Robinson', '385 Carioca Plaza', null, 'Kalangan', null, null, 'Indonesia', 8.71, 'Card', '2016-12-01', 'Complete') +,(4481, 207, 91, '2017-02-25', '2016-03-31', 'Victor Lopez', '170 Mariners Cove Circle', null, 'Bressuire', 'Poitou-Charentes', '79304 CEDEX', 'France', 8.59, 'Check', '2016-07-30', 'Complete') +,(4482, 215, 58, '2017-02-15', '2016-07-25', 'Kimberly Marshall', '647 Summerview Circle', null, 'Timahankrajan', null, null, 'Indonesia', 3.07, 'Check', '2016-04-21', 'On Hold') +,(4483, 207, 76, '2016-06-27', '2016-10-15', 'Pamela Matthews', '9379 Summit Trail', null, 'Brangsi', null, null, 'Indonesia', 1.35, 'Card', '2016-05-27', 'New') +,(4484, 210, 98, '2017-02-03', '2016-11-04', 'Randy Patterson', '6641 American Ash Point', null, 'Ivanec', null, '42240', 'Canada', 2.36, 'Card', '2016-10-31', 'Shipped') +,(4485, 205, 71, '2017-01-01', '2017-02-16', 'Carolyn Garza', '281 Raven Lane', null, 'Jingyang', null, null, 'China', 6.85, 'Check', '2016-04-27', 'Shipped') +,(4486, 202, 20, '2016-07-24', '2016-07-06', 'Ruth Perkins', '5656 Northview Lane', null, 'Burevestnik', null, '607612', 'Russia', 9.29, 'Cash', '2017-03-16', 'On Hold') +,(4487, 203, 49, '2017-02-20', '2017-01-12', 'Kelly Oliver', '249 Londonderry Pass', null, 'Grande Rivière du Nord', null, null, 'Canada', 7.65, 'Check', '2016-12-04', 'Shipped') +,(4488, 203, 67, '2016-11-09', '2016-07-19', 'Shirley Henry', '3045 Rowland Lane', null, 'Midlands', null, null, 'Germany', 5.35, 'Check', '2016-06-14', 'Complete') +,(4489, 209, 100,'2017-01-24', '2016-05-30', 'Marie Ferguson', '629 Crownhardt Junction', null, 'El Paso', 'Texas', '88546', 'United States', 5.18, 'Check', '2016-04-20', 'Shipped') +,(4490, 202, 87, '2016-06-27', '2016-09-05', 'Rachel Scott', '343 Schurz Road', null, 'Cabiguan', null, '1144', 'Philippines', 1.05, 'Cash', '2016-07-24', 'Shipped') +,(4491, 211, 93, '2017-01-16', '2016-09-29', 'Henry Fields', '26143 Del Sol Avenue', null, 'Huangduobu', null, null, 'China', 6.15, 'Card', '2016-06-02', 'Shipped') +,(4492, 217, 10, '2016-12-08', '2016-10-01', 'Harold Jones', '2 Oak Avenue', null, 'Surkhakhi', null, '386147', 'Russia', 9.96, 'Card', '2016-04-07', 'New') +,(4493, 217, 35, '2016-05-05', '2016-05-01', 'Walter Wright', '12 Paget Road', null, 'Siluman', null, null, 'Indonesia', 2.1, 'Cash', '2016-10-26', 'On Hold') +,(4494, 206, 51, '2017-02-25', '2016-10-24', 'Marilyn Hayes', '4 5th Way', null, 'Punkaharju', null, '58501', 'Finland', 3.57, 'Cash', '2016-06-22', 'New') +,(4495, 208, 3 , '2016-12-27', '2016-09-09', 'Sandra West', '0384 Bowman Center', null, 'Tagta', null, null, 'India', 6.45, 'Cash', '2016-08-25', 'New') +,(4496, 218, 41, '2017-01-10', '2016-12-11', 'Dennis Meyer', '4 Cambridge Alley', null, 'Cariamanga', null, null, 'Argentina', 5.33, 'Check', '2016-09-28', 'New') +,(4497, 216, 76, '2016-09-28', '2016-05-12', 'Frank Dean', '23227 Veith Park', null, 'Fengqiao', null, null, 'China', 6.72, 'Cash', '2016-04-12', 'Complete') +,(4498, 204, 3 , '2016-11-11', '2016-12-01', 'Amy Palmer', '7735 Maple Wood Road', null, 'Działoszyce', null, '28-440', 'Poland', 3.08, 'Card', '2016-09-07', 'Shipped') +,(4499, 211, 96, '2017-02-04', '2016-03-27', 'Emily Nelson', '3 Crownhardt Plaza', null, 'Oslob', null, '6025', 'Philippines', 6.41, 'Card', '2016-09-25', 'On Hold') +,(4500, 204, 7 , '2016-04-29', '2017-01-20', 'Randy Hanson', '687 Drewry Place', null, 'Barberena', null, '06002', 'Japan', 2.51, 'Card', '2016-12-12', 'Complete') +,(4501, 215, 92, '2017-02-27', '2016-09-26', 'Raymond Banks', '826 Mendota Pass', null, 'Chicago', 'Illinois', '60681', 'United States', 3.34, 'Card', '2016-10-30', 'Complete') +,(4502, 220, 24, '2016-10-01', '2016-09-26', 'Kimberly Robertson', '2643 Becker Trail', null, 'Columbus', 'United Kingdom', '31904', 'United States', 3.07, 'Check', '2016-04-27', 'Complete') +,(4503, 215, 52, '2017-02-25', '2016-08-08', 'Marilyn Miller', '1 Tennessee Park', null, 'Spokane', 'Washington', '99252', 'United States', 5.34, 'Check', '2016-08-16', 'On Hold') +,(4504, 220, 35, '2017-01-27', '2016-09-08', 'Marie Carpenter', '4575 Fair Oaks Hill', null, 'Richmond', 'Virginia', '23293', 'United States', 7.01, 'Cash', '2016-04-06', 'Shipped') +,(4505, 203, 10, '2016-06-24', '2017-02-22', 'Nicholas Wells', '823 Duke Center', null, 'Irvine', 'California', '92710', 'United States', 1.4, 'Check', '2016-06-17', 'On Hold') +,(4506, 207, 26, '2016-12-26', '2017-03-14', 'John Dean', '06 Spenser Place', null, 'Charleston', 'South Carolina', '29403', 'United States', 1.31, 'Cash', '2016-10-25', 'Shipped') +,(4507, 216, 28, '2016-08-22', '2016-12-13', 'Diana Spencer', '26 Ridgeway Plaza', null, 'Ogden', 'Utah', '84403', 'United States', 9.42, 'Cash', '2016-04-13', 'Shipped') +,(4508, 213, 90, '2016-08-31', '2017-01-13', 'Wanda Bowman', '862 Iowa Avenue', null, 'Kansas City', 'Kansas', '66160', 'United States', 7.1, 'Cash', '2016-10-19', 'Complete') +,(4509, 204, 93, '2016-07-07', '2016-05-31', 'Andrew Garrett', '27066 Gina Road', null, 'El Paso', 'Texas', '88558', 'United States', 6.88, 'Check', '2016-04-23', 'Complete') +,(4510, 202, 56, '2017-02-06', '2016-10-29', 'Juan Webb', '6233 South Junction', null, 'Lafayette', 'Louisiana', '70505', 'United States', 1.07, 'Cash', '2016-05-20', 'New') +,(4511, 219, 54, '2016-11-08', '2016-06-17', 'William Gardner', '5 Meadow Ridge Terrace', null, 'Tacoma', 'Washington', '98447', 'United States', 4.46, 'Check', '2016-05-25', 'Complete') +,(4512, 215, 4 , '2016-09-09', '2016-08-21', 'Fred Fernandez', '15 Ludington Junction', null, 'San Rafael', 'California', '94913', 'United States', 4.3, 'Cash', '2016-09-02', 'New') +,(4513, 206, 54, '2016-10-28', '2016-06-30', 'Ruth Ellis', '41196 Rieder Avenue', null, 'Baltimore', 'Maryland', '21211', 'United States', 8.39, 'Card', '2016-05-29', 'Complete') +,(4514, 215, 73, '2017-02-26', '2016-09-17', 'David Ferguson', '5813 Brown Parkway', null, 'Shawnee Mission', 'Kansas', '66286', 'United States', 2.71, 'Card', '2016-04-18', 'Shipped') +,(4515, 216, 23, '2016-11-08', '2016-06-27', 'Susan Freeman', '0 Bashford Parkway', null, 'Tucson', 'Arizona', '85720', 'United States', 5.5, 'Check', '2017-02-01', 'Shipped') +,(4516, 212, 9 , '2016-04-30', '2016-12-31', 'Alan Hunt', '193 Declaration Plaza', null, 'Louisville', 'Kentucky', '40256', 'United States', 9.74, 'Cash', '2017-01-20', 'On Hold') +,(4517, 202, 46, '2017-02-01', '2016-07-22', 'Phillip Romero', '1860 Thompson Crossing', null, 'Biloxi', 'Mississippi', '39534', 'United States', 3.02, 'Card', '2016-11-04', 'Complete') +,(4518, 203, 75, '2016-09-07', '2016-11-14', 'George Diaz', '6 Mcguire Center', null, 'Mesa', 'Arizona', '85210', 'United States', 7.84, 'Check', '2016-06-21', 'Shipped') +,(4519, 217, 68, '2016-10-07', '2016-08-15', 'Virginia King', '7405 High Crossing Alley', null, 'Sioux City', 'Iowa', '51105', 'United States', 4.03, 'Check', '2016-05-09', 'Complete') +,(4520, 216, 6 , '2017-02-18', '2017-02-17', 'Brenda Ruiz', '224 Badeau Street', null, 'Corpus Christi', 'Texas', '78426', 'United States', 9.11, 'Check', '2016-11-13', 'New') +,(4521, 201, 84, '2016-09-17', '2016-06-15', 'Debra Brown', '94 Morningstar Center', null, 'San Francisco', 'California', '94177', 'United States', 6.59, 'Check', '2017-03-10', 'Shipped') +,(4522, 205, 89, '2016-10-22', '2017-03-13', 'Emily Henry', '79 Manufacturers Center', null, 'Los Angeles', 'California', '90020', 'United States', 4.11, 'Cash', '2016-10-27', 'Complete') +,(4523, 211, 67, '2016-04-17', '2017-02-12', 'Aaron Peterson', '504 Schlimgen Terrace', null, 'Bethesda', 'Maryland', '20892', 'United States', 5.42, 'Card', '2016-08-25', 'Shipped') +,(4524, 215, 83, '2016-08-22', '2016-07-31', 'Janice Burke', '3 Mcbride Lane', null, 'Washington', 'District of Columbia', '20073', 'United States', 3.76, 'Card', '2016-08-09', 'Shipped') +,(4525, 217, 100,'2016-03-31', '2016-12-09', 'Debra Kelley', '18155 Northview Plaza', null, 'Detroit', 'Michigan', '48267', 'United States', 2.26, 'Cash', '2016-12-29', 'On Hold') +,(4526, 214, 32, '2016-11-24', '2016-03-28', 'Donald Sims', '86 Michigan Avenue', null, 'Brooklyn', 'New York', '11231', 'United States', 5.05, 'Check', '2016-08-07', 'Shipped') +,(4527, 205, 100,'2016-05-13', '2016-06-17', 'Daniel Mason', '4 Hanover Road', null, 'Reno', 'Nevada', '89595', 'United States', 4.81, 'Check', '2016-10-22', 'Shipped') +,(4528, 201, 32, '2016-11-15', '2016-11-16', 'Howard Knight', '5 Weeping Birch Alley', null, 'Jacksonville', 'Florida', '32225', 'United States', 5.99, 'Check', '2016-11-07', 'New') +,(4529, 213, 99, '2016-12-02', '2016-07-09', 'Virginia Hughes', '629 Manufacturers Point', null, 'Syracuse', 'New York', '13224', 'United States', 5.6, 'Card', '2016-12-02', 'Complete') +,(4530, 219, 18, '2016-12-07', '2017-02-07', 'Carl Graham', '90 Heffernan Pass', null, 'Saint Petersburg', 'Florida', '33737', 'United States', 9.35, 'Check', '2016-10-18', 'Complete') +,(4531, 201, 57, '2016-12-26', '2016-12-29', 'Joan Murray', '38 Bellgrove Crossing', null, 'Tacoma', 'Washington', '98447', 'United States', 6.69, 'Card', '2016-12-05', 'On Hold') +,(4532, 202, 58, '2016-04-02', '2016-07-01', 'Robert Williams', '09407 Northfield Circle', null, 'Cedar Rapids', 'Iowa', '52410', 'United States', 6.56, 'Card', '2016-04-16', 'On Hold') +,(4533, 218, 36, '2017-02-07', '2016-05-05', 'Ryan Black', '57199 Hoffman Place', null, 'Jacksonville', 'Florida', '32204', 'United States', 8.54, 'Check', '2017-01-24', 'Shipped') +,(4534, 208, 92, '2016-07-09', '2016-06-20', 'Brenda Hunter', '16179 Ludington Court', null, 'Birmingham', 'Alabama', '35263', 'United States', 9.82, 'Cash', '2016-09-30', 'New') +,(4535, 214, 70, '2016-08-04', '2016-06-29', 'Anne Warren', '08161 Barnett Parkway', null, 'Van Nuys', 'California', '91411', 'United States', 7.04, 'Cash', '2017-02-24', 'Complete') +,(4536, 213, 99, '2017-01-11', '2017-01-21', 'Betty Snyder', '9 Badeau Court', null, 'Davenport', 'Iowa', '52804', 'United States', 8.72, 'Card', '2016-09-03', 'Shipped') +,(4537, 217, 76, '2016-07-31', '2017-02-13', 'Edward Wilson', '1031 Esch Drive', null, 'Fresno', 'California', '93750', 'United States', 1.64, 'Check', '2016-04-21', 'On Hold') +,(4538, 210, 60, '2016-06-22', '2016-04-10', 'Terry Butler', '124 Hoepker Pass', null, 'San Antonio', 'Texas', '78255', 'United States', 2.35, 'Check', '2017-01-31', 'Complete') +,(4539, 220, 5 , '2016-11-12', '2016-04-25', 'Emily Hawkins', '990 Quincy Drive', null, 'Richmond', 'Virginia', '23289', 'United States', 4.36, 'Card', '2016-09-17', 'Complete') +,(4540, 213, 42, '2017-02-28', '2017-02-11', 'Cynthia Rose', '8881 Packers Trail', null, 'Berkeley', 'California', '94712', 'United States', 6.09, 'Check', '2016-04-14', 'New') +,(4541, 204, 27, '2016-09-30', '2017-01-28', 'Lisa Turner', '83 Graedel Terrace', null, 'Oakland', 'California', '94611', 'United States', 9.61, 'Card', '2016-05-07', 'Shipped') +,(4542, 219, 26, '2016-07-13', '2016-03-23', 'Jason Price', '475 Meadow Valley Point', null, 'Annapolis', 'Maryland', '21405', 'United States', 2.93, 'Check', '2016-06-10', 'New') +,(4543, 202, 63, '2016-07-29', '2016-05-20', 'Joan Hayes', '7 Upham Center', null, 'Temple', 'Texas', '76505', 'United States', 7.39, 'Card', '2016-09-20', 'Complete') +,(4544, 212, 97, '2016-10-31', '2017-01-16', 'Paula Torres', '443 Debs Terrace', null, 'Racine', 'Wisconsin', '53405', 'United States', 3.93, 'Card', '2016-07-07', 'Shipped') +,(4545, 201, 33, '2017-03-08', '2016-08-21', 'Theresa Watkins', '85395 Rusk Center', null, 'Jackson', 'Mississippi', '39210', 'United States', 5.32, 'Card', '2016-11-19', 'Complete') +,(4546, 211, 68, '2016-05-25', '2016-07-17', 'Clarence Nguyen', '155 Northport Road', null, 'Greensboro', 'North Carolina', '27455', 'United States', 7.06, 'Cash', '2016-08-24', 'Shipped') +,(4547, 203, 73, '2016-05-03', '2016-10-23', 'Jean Mason', '03 Eagle Crest Lane', null, 'Colorado Springs', 'Colorado', '80935', 'United States', 4.2, 'Cash', '2016-04-07', 'New') +,(4548, 217, 2 , '2016-05-20', '2016-08-07', 'Nicole Brown', '364 Debra Lane', null, 'Washington', 'District of Columbia', '20046', 'United States', 7.97, 'Cash', '2016-04-30', 'New') +,(4549, 220, 89, '2016-04-11', '2016-12-11', 'Carol Chapman', '756 Muir Point', null, 'Washington', 'District of Columbia', '20397', 'United States', 2.21, 'Card', '2017-02-05', 'Shipped') +,(4550, 211, 13, '2016-04-16', '2016-08-03', 'Roy George', '8 Anhalt Terrace', null, 'Indianapolis', 'Indiana', '46207', 'United States', 4.5, 'Check', '2017-03-06', 'New') +,(4551, 219, 37, '2016-04-14', '2017-03-01', 'Heather Bishop', '0901 Tennessee Street', null, 'Kingsport', 'Tennessee', '37665', 'United States', 1.92, 'Card', '2017-01-02', 'Shipped') +,(4552, 218, 94, '2017-03-05', '2016-06-01', 'Wayne Mason', '90645 Carberry Drive', null, 'Madison', 'Wisconsin', '53716', 'United States', 6.96, 'Card', '2016-12-31', 'Complete') +,(4553, 212, 37, '2016-10-16', '2016-10-13', 'Gloria Elliott', '100 Granby Junction', null, 'Miami', 'Florida', '33153', 'United States', 9.25, 'Cash', '2016-06-09', 'Shipped') +,(4554, 217, 4 , '2016-06-05', '2016-07-26', 'Timothy Hayes', '6001 Elgar Circle', null, 'Pensacola', 'Florida', '32575', 'United States', 6.5, 'Cash', '2016-03-30', 'Complete') +,(4555, 207, 49, '2016-08-19', '2016-08-15', 'Judith Baker', '3436 Briar Crest Park', null, 'Newark', 'New Jersey', '07188', 'United States', 2.33, 'Check', '2016-09-17', 'Complete') +,(4556, 217, 17, '2016-11-18', '2016-12-10', 'Roy Russell', '6401 Graedel Court', null, 'Alexandria', 'Virginia', '22301', 'United States', 3.24, 'Check', '2016-04-08', 'Complete') +,(4557, 216, 35, '2016-09-11', '2016-05-07', 'Jacqueline Davis', '864 Cherokee Lane', null, 'Columbus', 'Ohio', '43226', 'United States', 4.7, 'Card', '2016-08-06', 'Shipped') +,(4558, 211, 20, '2016-10-06', '2016-07-15', 'Eugene Castillo', '03090 Northland Circle', null, 'Salt Lake City', 'Utah', '84199', 'United States', 9.36, 'Card', '2016-10-06', 'Complete') +,(4559, 216, 13, '2017-01-13', '2016-03-28', 'Janice Mills', '522 Holmberg Alley', null, 'Scottsdale', 'Arizona', '85271', 'United States', 7.31, 'Cash', '2016-05-15', 'On Hold') +,(4560, 211, 77, '2016-08-24', '2017-03-13', 'Ruby White', '0070 Corben Way', null, 'Naples', 'Florida', '34114', 'United States', 3.71, 'Check', '2016-07-17', 'On Hold') +,(4561, 219, 55, '2016-08-13', '2016-11-19', 'Frank Jackson', '25 Rigney Point', null, 'Washington', 'District of Columbia', '20420', 'United States', 1.94, 'Cash', '2016-06-12', 'Shipped') +,(4562, 207, 96, '2016-10-12', '2016-12-04', 'Pamela Peterson', '830 Loftsgordon Junction', null, 'Houston', 'Texas', '77281', 'United States', 1.45, 'Check', '2017-03-06', 'New') +,(4563, 204, 70, '2016-07-23', '2017-02-06', 'Martha Frazier', '3 Gerald Lane', null, 'Scottsdale', 'Arizona', '85260', 'United States', 2.74, 'Cash', '2017-01-19', 'New') +,(4564, 204, 59, '2017-02-26', '2016-10-23', 'Kenneth Hawkins', '27305 Maple Crossing', null, 'San Diego', 'California', '92145', 'United States', 9.41, 'Cash', '2017-02-09', 'On Hold') +,(4565, 203, 66, '2016-08-06', '2017-02-03', 'Barbara Collins', '8 Norway Maple Junction', null, 'Fort Worth', 'Texas', '76198', 'United States', 1.08, 'Card', '2016-06-24', 'New') +,(4566, 217, 83, '2016-09-14', '2016-03-29', 'Gary Ellis', '97 Nobel Avenue', null, 'Alexandria', 'Louisiana', '71307', 'United States', 5.05, 'Card', '2016-06-13', 'Shipped') +,(4567, 214, 63, '2017-03-04', '2016-11-05', 'Douglas Hughes', '98309 Mccormick Park', null, 'Kansas City', 'Kansas', '66160', 'United States', 1.4, 'Card', '2017-02-13', 'Shipped') +,(4568, 208, 12, '2016-10-31', '2017-02-27', 'Harold Flores', '1 Merchant Lane', null, 'Duluth', 'United Kingdom', '30096', 'United States', 4.84, 'Check', '2016-04-30', 'On Hold') +,(4569, 201, 96, '2016-08-20', '2016-10-03', 'Marie Nguyen', '084 Stuart Hill', null, 'Arlington', 'Texas', '76004', 'United States', 5.95, 'Cash', '2016-04-25', 'On Hold') +,(4570, 203, 1 , '2016-10-13', '2016-03-21', 'Judy Fowler', '7541 Golf Course Way', null, 'Kansas City', 'Missouri', '64109', 'United States', 8.02, 'Check', '2016-05-05', 'New') +,(4571, 219, 49, '2016-11-04', '2016-09-02', 'Howard Rogers', '5 Scott Hill', null, 'Brooklyn', 'New York', '11215', 'United States', 5.21, 'Cash', '2016-10-28', 'Complete') +,(4572, 215, 5 , '2016-03-24', '2016-08-31', 'Stephanie Martinez', '0022 Reinke Trail', null, 'Baton Rouge', 'Louisiana', '70894', 'United States', 7.74, 'Card', '2016-08-14', 'On Hold') +,(4573, 206, 61, '2016-08-31', '2016-07-10', 'Jacqueline Lane', '780 Elka Place', null, 'Cleveland', 'Ohio', '44105', 'United States', 9.12, 'Check', '2016-11-30', 'On Hold') +,(4574, 220, 65, '2016-06-26', '2016-06-25', 'Betty Harrison', '23089 Kensington Junction', null, 'Greensboro', 'North Carolina', '27404', 'United States', 5.63, 'Check', '2016-03-30', 'Complete') +,(4575, 212, 81, '2016-04-28', '2016-10-19', 'Robin Bradley', '7895 Weeping Birch Plaza', null, 'Waterbury', 'Connecticut', '06721', 'United States', 7.34, 'Cash', '2017-01-25', 'On Hold') +,(4576, 216, 13, '2017-02-24', '2016-07-18', 'Ralph Bailey', '4019 Harper Park', null, 'Sacramento', 'California', '94291', 'United States', 6.77, 'Cash', '2017-02-02', 'New') +,(4577, 203, 43, '2016-09-24', '2016-11-18', 'Melissa Ross', '775 Lyons Road', null, 'Bridgeport', 'Connecticut', '06606', 'United States', 1.64, 'Check', '2016-07-23', 'Shipped') +,(4578, 212, 53, '2016-07-05', '2016-06-19', 'Joan Russell', '0 Kings Terrace', null, 'Bloomington', 'Illinois', '61709', 'United States', 4.66, 'Card', '2016-04-09', 'New') +,(4579, 214, 17, '2016-10-01', '2016-10-18', 'Benjamin George', '40131 Ronald Regan Road', null, 'Washington', 'District of Columbia', '20525', 'United States', 8.04, 'Check', '2016-06-16', 'Complete') +,(4580, 207, 69, '2016-04-19', '2017-02-09', 'Katherine Stone', '37483 Melrose Parkway', null, 'Fresno', 'California', '93794', 'United States', 6.7, 'Check', '2017-02-08', 'Complete') +,(4581, 218, 28, '2017-03-04', '2016-11-25', 'Ernest Cruz', '872 Nancy Street', null, 'Pompano Beach', 'Florida', '33069', 'United States', 5.81, 'Cash', '2016-04-21', 'On Hold') +,(4582, 217, 32, '2017-03-16', '2016-06-08', 'Joshua Edwards', '72309 Elmside Point', null, 'San Francisco', 'California', '94110', 'United States', 2.49, 'Cash', '2016-04-01', 'On Hold') +,(4583, 219, 83, '2017-01-24', '2016-07-25', 'Justin Mills', '88350 Wayridge Hill', null, 'Charleston', 'West Virginia', '25326', 'United States', 6.03, 'Card', '2016-10-07', 'New') +,(4584, 208, 45, '2016-10-18', '2016-05-13', 'Kathleen Gibson', '25 Carpenter Lane', null, 'Reno', 'Nevada', '89505', 'United States', 5.41, 'Check', '2016-08-21', 'Shipped') +,(4585, 216, 71, '2016-09-19', '2016-10-15', 'Ruby Bennett', '1 Muir Pass', null, 'Las Vegas', 'Nevada', '89135', 'United States', 2.5, 'Cash', '2016-11-29', 'On Hold') +,(4586, 214, 48, '2016-08-07', '2016-08-12', 'Richard Robinson', '1125 Melvin Terrace', null, 'Bethesda', 'Maryland', '20816', 'United States', 4.02, 'Card', '2017-01-09', 'Complete') +,(4587, 212, 62, '2016-12-17', '2017-01-23', 'Debra Sanchez', '534 Stoughton Lane', null, 'Johnstown', 'Pennsylvania', '15906', 'United States', 8.78, 'Cash', '2016-08-07', 'Shipped') +,(4588, 216, 30, '2016-10-24', '2016-12-21', 'Willie Dean', '680 Northview Circle', null, 'Huntington', 'West Virginia', '25775', 'United States', 8.43, 'Card', '2017-03-12', 'New') +,(4589, 210, 10, '2017-01-01', '2016-09-22', 'Christina Kelley', '8706 Sundown Street', null, 'Peoria', 'Illinois', '61635', 'United States', 4.24, 'Cash', '2017-02-08', 'On Hold') +,(4590, 205, 6 , '2016-11-29', '2017-02-23', 'Russell Montgomery', '977 Packers Drive', null, 'Charlotte', 'North Carolina', '28247', 'United States', 2.87, 'Cash', '2016-05-30', 'Complete') +,(4591, 206, 15, '2016-03-28', '2017-02-23', 'Edward Cunningham', '283 Bultman Way', null, 'Jacksonville', 'Florida', '32277', 'United States', 6.55, 'Check', '2017-03-10', 'Shipped') +,(4592, 209, 82, '2016-12-20', '2016-09-07', 'Michael Chavez', '00 Oak Avenue', null, 'Young America', 'Minnesota', '55551', 'United States', 8.22, 'Check', '2016-04-19', 'On Hold') +,(4593, 204, 24, '2017-03-13', '2016-08-30', 'David White', '506 Nevada Circle', null, 'Portland', 'Maine', '04109', 'United States', 1.11, 'Card', '2017-01-13', 'On Hold') +,(4594, 206, 27, '2016-09-13', '2017-03-12', 'Cheryl Vasquez', '9070 Di Loreto Court', null, 'Van Nuys', 'California', '91499', 'United States', 7.42, 'Card', '2017-02-25', 'On Hold') +,(4595, 211, 94, '2016-07-03', '2016-05-08', 'Charles Garrett', '1337 Hooker Trail', null, 'Honolulu', 'Hawaii', '96810', 'United States', 9.57, 'Check', '2016-10-04', 'Shipped') +,(4596, 216, 56, '2016-07-08', '2017-02-28', 'Michelle Butler', '1 Magdeline Lane', null, 'Orlando', 'Florida', '32813', 'United States', 7.05, 'Check', '2016-07-12', 'New') +,(4597, 217, 26, '2016-09-24', '2016-10-05', 'Howard Reyes', '3677 Donald Alley', null, 'Carol Stream', 'Illinois', '60351', 'United States', 7.62, 'Cash', '2017-02-08', 'Complete') +,(4598, 212, 76, '2016-04-13', '2016-08-10', 'Eugene Kelly', '838 Becker Plaza', null, 'Laredo', 'Texas', '78044', 'United States', 4.9, 'Check', '2016-10-23', 'New') +,(4599, 208, 29, '2016-04-16', '2016-05-15', 'Jimmy Mcdonald', '0 Dayton Place', null, 'Rochester', 'New York', '14646', 'United States', 1.56, 'Check', '2017-01-14', 'Complete') +,(4600, 208, 2 , '2016-04-26', '2016-04-06', 'Stephen Jacobs', '7131 Scoville Terrace', null, 'Phoenix', 'Arizona', '85020', 'United States', 4.52, 'Cash', '2017-01-22', 'On Hold'); + + + + +/* Order details */ +insert into order_items (order_id, product_id, quantity, unit_price, discount, order_item_status, date_allocated) values + (4001, 608, 1 , 97.34, 8.73, 'Allocated', '2017-01-15') +,(4001, 611, 2 , 58.46, 4.36, 'No Stock' , '2016-09-21') +,(4001, 616, 2 , 58.46, 4.36, 'No Stock' , '2016-09-21') +,(4001, 613, 2 , 58.46, 4.36, 'No Stock' , '2016-09-21') +,(4001, 615, 2 , 58.46, 4.36, 'No Stock' , '2016-09-21') +,(4002, 604, 3 , 88.97, 2.86, 'On Order' , '2016-12-15') +,(4002, 610, 4 , 37.19, 8.65, 'Allocated', '2016-10-12') +,(4002, 615, 4 , 37.19, 8.65, 'Allocated', '2016-10-12') +,(4003, 609, 8 , 92.87, 4.01, 'No Stock' , '2016-06-15') +,(4003, 612, 7 , 87.15, 3.54, 'No Stock' , '2017-02-09') +,(4004, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4004, 620, 2 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4004, 611, 4 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4004, 612, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4005, 618, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4005, 619, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4005, 620, 2 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4006, 617, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4006, 618, 2 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4006, 607, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4007, 617, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4007, 610, 2 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4007, 612, 5 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4008, 612, 1 , 57.2 , 8.94, 'Allocated', '2017-01-13') +,(4008, 615, 3 , 57.2 , 8.94, 'Allocated', '2017-01-13') +,(4008, 611, 1 , 57.2 , 8.94, 'Allocated', '2017-01-13') +,(4009, 605, 6 , 62.16, 5.68, 'No Stock' , '2017-02-13') +,(4009, 610, 6 , 19.31, 5.0 , 'No Stock' , '2016-09-16') +,(4009, 615, 9 , 51.21, 4.48, 'Allocated', '2016-10-18') +,(4010, 601, 1 , 32.18, 9.41, 'On Order' , '2016-03-17') +,(4010, 602, 1 , 31.35, 7.18, 'No Stock' , '2016-12-30') +,(4010, 603, 10, 24.24, 2.76, 'Allocated', '2016-07-05') +,(4010, 610, 6 , 9.09 , 3.02, 'On Order' , '2016-07-17') +,(4011, 604, 10, 58.25, 9.3 , 'No Stock' , '2016-04-04') +,(4011, 606, 5 , 73.34, 1.76, 'Allocated', '2016-06-30') +,(4011, 608, 3 , 95.07, 4.6 , 'On Order' , '2016-06-04') +,(4011, 615, 9 , 20.84, 3.93, 'Allocated', '2016-06-10') +,(4012, 604, 5 , 19.82, 9.97, 'No Stock' , '2016-09-21') +,(4012, 601, 3 , 19.82, 9.97, 'No Stock' , '2016-09-21') +,(4012, 610, 3 , 19.82, 9.97, 'No Stock' , '2016-09-21') +,(4013, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4013, 604, 2 , 19.82, 9.97, 'No Stock' , '2016-09-21') +,(4013, 606, 5 , 19.82, 9.97, 'No Stock' , '2016-09-21') +,(4014, 601, 3 , 37.57, 4.99, 'Allocated', '2016-08-21') +,(4015, 611, 8 , 95.27, 6.62, 'Allocated', '2017-03-13') +,(4015, 612, 2 , 89.63, 4.14, 'Allocated', '2016-04-07') +,(4015, 615, 8 , 69.03, 1.11, 'On Order' , '2016-08-15') +,(4016, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4016, 611, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4016, 612, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4017, 605, 6 , 75.88, 2.1 , 'On Order' , '2017-02-15') +,(4017, 610, 4 , 26.43, 7.18, 'On Order' , '2016-04-30') +,(4017, 619, 6 , 77.91, 9.26, 'No Stock' , '2016-04-02') +,(4018, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4019, 615, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4020, 614, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4021, 604, 3 , 20.14, 8.54, 'No Stock' , '2016-06-26') +,(4022, 614, 7 , 41.61, 4.62, 'On Order' , '2016-09-09') +,(4022, 619, 1 , 10.45, 2.56, 'On Order' , '2016-10-18') +,(4023, 607, 6 , 7.68 , 5.59, 'On Order' , '2016-11-15') +,(4023, 611, 7 , 89.4 , 1.71, 'No Stock' , '2016-04-03') +,(4024, 613, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4024, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4024, 608, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4024, 609, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4025, 612, 6 , 81.24, 3.52, 'Allocated', '2016-04-25') +,(4025, 614, 4 , 14.07, 2.58, 'On Order' , '2016-09-11') +,(4026, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4026, 618, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4027, 611, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4027, 612, 3 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4027, 613, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4028, 605, 5 , 95.04, 7.82, 'On Order' , '2016-07-24') +,(4028, 615, 8 , 74.56, 1.78, 'Allocated', '2016-12-09') +,(4029, 604, 1 , 11.06, 5.37, 'On Order' , '2016-11-26') +,(4029, 603, 1 , 11.06, 5.37, 'On Order' , '2016-11-26') +,(4029, 607, 1 , 11.06, 5.37, 'On Order' , '2016-11-26') +,(4030, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4030, 620, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4030, 619, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4031, 605, 7 , 75.42, 2.92, 'No Stock' , '2017-02-12') +,(4031, 608, 7 , 75.42, 2.92, 'No Stock' , '2017-02-12') +,(4031, 609, 7 , 75.42, 2.92, 'No Stock' , '2017-02-12') +,(4031, 615, 7 , 75.42, 2.92, 'No Stock' , '2017-02-12') +,(4032, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4032, 612, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4032, 611, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4032, 619, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4033, 615, 4 , 45.55, 6.19, 'Allocated', '2016-05-09') +,(4033, 609, 3 , 45.55, 6.19, 'Allocated', '2016-05-09') +,(4033, 620, 1 , 45.55, 6.19, 'Allocated', '2016-05-09') +,(4034, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4034, 620, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4034, 609, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4035, 613, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4035, 614, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4035, 619, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4036, 604, 1 , 46.63, 4.25, 'No Stock' , '2016-05-04') +,(4036, 605, 6 , 66.75, 9.97, 'Allocated', '2017-02-25') +,(4037, 615, 2 , 44.76, 7.22, 'On Order' , '2017-03-01') +,(4037, 612, 2 , 44.76, 7.22, 'On Order' , '2017-03-01') +,(4038, 602, 2 , 13.25, 7.66, 'On Order' , '2016-07-13') +,(4038, 620, 3 , 13.25, 7.66, 'On Order' , '2016-07-13') +,(4039, 609, 1 , 99.68, 6.09, 'No Stock' , '2016-07-24') +,(4039, 619, 3 , 99.68, 6.09, 'No Stock' , '2016-07-24') +,(4039, 620, 1 , 99.68, 6.09, 'No Stock' , '2016-07-24') +,(4040, 612, 2 , 79.64, 6.72, 'Allocated', '2016-04-24') +,(4040, 620, 2 , 79.64, 6.72, 'Allocated', '2016-04-24') +,(4041, 615, 9 , 42.79, 8.92, 'No Stock' , '2016-03-31') +,(4041, 612, 2 , 42.79, 8.92, 'No Stock' , '2016-03-31') +,(4041, 620, 1 , 42.79, 8.92, 'No Stock' , '2016-03-31') +,(4042, 617, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4042, 613, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4042, 620, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4043, 611, 7 , 87.95, 8.57, 'No Stock' , '2016-06-18') +,(4043, 619, 3 , 87.95, 8.57, 'No Stock' , '2016-06-18') +,(4043, 620, 1 , 87.95, 8.57, 'No Stock' , '2016-06-18') +,(4044, 602, 8 , 47.3 , 3.26, 'On Order' , '2016-11-05') +,(4044, 612, 3 , 79.42, 6.56, 'On Order' , '2017-02-11') +,(4045, 603, 3 , 31.01, 7.2 , 'No Stock' , '2016-11-11') +,(4045, 604, 10, 43.54, 6.8 , 'Allocated', '2016-11-13') +,(4045, 608, 7 , 15.2 , 3.58, 'Allocated', '2017-01-18') +,(4046, 611, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4047, 619, 2 , 81.11, 8.77, 'No Stock' , '2016-06-17') +,(4047, 620, 8 , 1.54 , 6.85, 'No Stock' , '2016-05-05') +,(4048, 605, 7 , 13.52, 2.44, 'On Order' , '2016-07-06') +,(4049, 603, 7 , 40.99, 5.77, 'Allocated', '2017-02-22') +,(4049, 609, 10, 90.45, 2.75, 'Allocated', '2017-01-26') +,(4049, 612, 10, 24.28, 9.85, 'No Stock' , '2016-10-01') +,(4050, 606, 4 , 27.84, 1.49, 'No Stock' , '2016-12-18') +,(4050, 607, 2 , 72.72, 3.08, 'On Order' , '2016-04-24') +,(4050, 612, 2 , 76.85, 5.15, 'No Stock' , '2017-02-25') +,(4051, 603, 1 , 57.6 , 1.77, 'Allocated', '2016-07-02') +,(4052, 605, 9 , 50.74, 6.47, 'No Stock' , '2016-05-22') +,(4053, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4054, 601, 10, 55.48, 9.19, 'On Order' , '2016-07-12') +,(4055, 606, 10, 57.17, 3.06, 'No Stock' , '2016-11-20') +,(4056, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4057, 609, 1 , 79.3 , 9.42, 'On Order' , '2016-10-01') +,(4057, 610, 5 , 41.21, 5.55, 'No Stock' , '2016-07-20') +,(4057, 618, 3 , 68.99, 6.42, 'On Order' , '2016-08-19') +,(4058, 604, 6 , 36.78, 6.96, 'Allocated', '2016-05-20') +,(4058, 619, 6 , 79.01, 4.3 , 'Allocated', '2016-06-19') +,(4059, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4060, 603, 10, 40.38, 2.1 , 'On Order' , '2017-02-05') +,(4060, 604, 9 , 41.98, 1.46, 'Allocated', '2017-01-17') +,(4061, 605, 1 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4061, 602, 1 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4061, 603, 1 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4062, 604, 1 , 71.77, 4.91, 'No Stock' , '2016-11-20') +,(4062, 605, 2 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4062, 607, 1 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4063, 608, 1 , 62.85, 4.62, 'Allocated', '2016-03-25') +,(4063, 605, 4 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4063, 607, 1 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4064, 615, 1 , 68.27, 6.79, 'No Stock' , '2016-07-06') +,(4064, 602, 2 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4064, 603, 5 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4064, 605, 1 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4065, 610, 5 , 99.76, 1.78, 'Allocated', '2016-09-23') +,(4066, 605, 1 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4066, 604, 9 , 2.63 , 7.42, 'Allocated', '2016-08-12') +,(4066, 615, 7 , 25.14, 7.22, 'No Stock' , '2016-03-27') +,(4067, 618, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4068, 602, 4 , 12.67, 5.17, 'Allocated', '2016-08-30') +,(4068, 603, 1 , 87.81, 1.02, 'On Order' , '2016-10-12') +,(4069, 620, 7 , 89.85, 3.49, 'Allocated', '2017-02-22') +,(4070, 615, 5 , 94.08, 4.09, 'On Order' , '2017-01-31') +,(4071, 616, 1, 10.00, 1.00, 'Allocated', '2016-12-14') +,(4072, 601, 3 , 89.95, 9.61, 'No Stock' , '2016-11-25') +,(4072, 612, 5 , 34.51, 5.99, 'No Stock' , '2016-05-25') +,(4073, 613, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4074, 606, 10, 98.2 , 3.63, 'On Order' , '2016-04-30') +,(4075, 605, 8 , 69.36, 9.16, 'On Order' , '2016-07-19') +,(4075, 606, 1 , 3.95 , 8.66, 'On Order' , '2016-04-09') +,(4076, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4077, 602, 10, 90.58, 5.92, 'No Stock' , '2016-06-23') +,(4077, 609, 1 , 8.25 , 3.74, 'No Stock' , '2016-12-07') +,(4077, 615, 9 , 86.2 , 4.5 , 'Allocated', '2017-03-10') +,(4078, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4078, 612, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4078, 618, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4079, 615, 7 , 1.95 , 1.76, 'On Order' , '2017-03-04') +,(4079, 613, 2 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4079, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4080, 608, 5 , 26.84, 9.03, 'On Order' , '2016-11-13') +,(4080, 609, 3 , 41.76, 4.08, 'Allocated', '2016-09-10') +,(4081, 604, 9 , 5.49 , 8.45, 'On Order' , '2016-10-21') +,(4082, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4083, 602, 1 , 44.85, 5.16, 'No Stock' , '2016-09-16') +,(4084, 604, 4 , 58.27, 4.09, 'Allocated', '2016-08-12') +,(4085, 605, 8 , 93.54, 7.49, 'On Order' , '2016-11-24') +,(4086, 615, 2 , 94.02, 1.63, 'No Stock' , '2016-09-01') +,(4087, 601, 2 , 79.39, 3.86, 'No Stock' , '2016-07-13') +,(4088, 615, 3 , 14.03, 3.74, 'Allocated', '2016-11-15') +,(4089, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4090, 611, 4 , 46.11, 1.53, 'No Stock' , '2016-07-25') +,(4091, 613, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4092, 602, 5 , 42.68, 7.92, 'On Order' , '2016-09-09') +,(4093, 615, 8 , 75.27, 5.92, 'No Stock' , '2016-07-09') +,(4094, 605, 7 , 91.05, 4.52, 'On Order' , '2017-02-21') +,(4095, 602, 6 , 58.5 , 9.62, 'On Order' , '2017-02-26') +,(4095, 604, 3 , 80.13, 4.11, 'No Stock' , '2016-12-01') +,(4095, 608, 1 , 23.96, 5.54, 'No Stock' , '2016-03-27') +,(4096, 601, 4 , 9.84 , 5.33, 'No Stock' , '2016-04-18') +,(4097, 605, 4 , 45.03, 5.61, 'On Order' , '2016-05-13') +,(4097, 606, 3 , 41.39, 3.59, 'On Order' , '2016-11-29') +,(4098, 607, 8 , 11.86, 2.74, 'No Stock' , '2016-11-23') +,(4099, 606, 2 , 54.09, 5.84, 'On Order' , '2016-10-08') +,(4100, 608, 3 , 6.62 , 1.25, 'Allocated', '2016-11-16') +,(4101, 617, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4102, 608, 1 , 2.54 , 9.62, 'On Order' , '2016-10-01') +,(4102, 609, 9 , 92.56, 5.98, 'On Order' , '2016-10-14') +,(4102, 610, 10, 26.81, 5.9 , 'On Order' , '2016-08-20') +,(4103, 606, 6 , 71.32, 9.88, 'No Stock' , '2016-09-10') +,(4103, 608, 1 , 73.91, 9.79, 'No Stock' , '2016-12-26') +,(4104, 603, 9 , 33.85, 4.08, 'Allocated', '2017-03-02') +,(4105, 601, 5 , 49.17, 1.99, 'On Order' , '2016-11-11') +,(4105, 606, 9 , 93.8 , 4.48, 'Allocated', '2017-01-06') +,(4106, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4107, 603, 2 , 24.95, 3.71, 'On Order' , '2016-07-20') +,(4107, 604, 5 , 43.75, 1.39, 'No Stock' , '2017-01-03') +,(4107, 608, 1 , 49.09, 8.72, 'Allocated', '2016-12-19') +,(4107, 616, 8 , 26.78, 1.21, 'On Order' , '2016-09-23') +,(4108, 604, 8 , 36.89, 3.04, 'On Order' , '2017-01-01') +,(4108, 619, 1 , 6.43 , 6.66, 'Allocated', '2016-05-03') +,(4109, 604, 9 , 89.19, 9.43, 'No Stock' , '2016-10-21') +,(4109, 609, 2 , 3.71 , 9.12, 'No Stock' , '2016-10-23') +,(4110, 605, 3 , 61.65, 7.86, 'On Order' , '2016-08-05') +,(4110, 606, 2 , 63.62, 7.4 , 'Allocated', '2016-06-07') +,(4111, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4111, 612, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4111, 613, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4112, 607, 5 , 63.7 , 9.44, 'On Order' , '2017-01-01') +,(4112, 610, 1 , 22.54, 8.3 , 'On Order' , '2016-04-09') +,(4113, 604, 6 , 86.01, 4.4 , 'Allocated', '2017-01-05') +,(4113, 611, 5 , 39.64, 4.58, 'Allocated', '2017-02-26') +,(4113, 615, 3 , 22.49, 3.61, 'Allocated', '2016-08-24') +,(4113, 619, 6 , 7.6 , 6.63, 'On Order' , '2016-05-01') +,(4114, 610, 6 , 3.77 , 4.79, 'Allocated', '2017-01-18') +,(4114, 608, 2 , 3.77 , 4.79, 'Allocated', '2017-01-18') +,(4114, 609, 3 , 3.77 , 4.79, 'Allocated', '2017-01-18') +,(4115, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4115, 620, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4116, 610, 5 , 54.21, 9.53, 'On Order' , '2016-05-11') +,(4116, 620, 3 , 54.21, 9.53, 'On Order' , '2016-05-11') +,(4116, 615, 1 , 54.21, 9.53, 'On Order' , '2016-05-11') +,(4117, 603, 7 , 91.81, 4.35, 'On Order' , '2016-04-18') +,(4117, 610, 9 , 79.15, 6.8 , 'Allocated', '2017-02-09') +,(4118, 611, 8 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4118, 615, 3 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4118, 612, 1 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4119, 611, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4119, 615, 8 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4119, 612, 4 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4120, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4120, 612, 2 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4120, 611, 8 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4121, 602, 3 , 7.09 , 6.48, 'No Stock' , '2016-06-03') +,(4121, 612, 2 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4121, 611, 1 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4122, 606, 5 , 44.99, 1.66, 'No Stock' , '2016-05-08') +,(4122, 611, 2 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4122, 612, 6 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4123, 607, 10, 4.78 , 1.32, 'Allocated', '2016-12-28') +,(4124, 604, 1 , 18.79, 6.75, 'On Order' , '2017-01-05') +,(4125, 605, 9 , 59.37, 1.61, 'On Order' , '2016-07-24') +,(4125, 608, 1 , 72.49, 2.72, 'On Order' , '2016-08-22') +,(4126, 610, 10, 13.83, 1.15, 'On Order' , '2016-09-29') +,(4126, 615, 10, 71.77, 9.08, 'No Stock' , '2017-02-24') +,(4127, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4128, 605, 6 , 94.61, 7.16, 'No Stock' , '2017-02-09') +,(4128, 616, 3 , 4.67 , 2.72, 'On Order' , '2016-04-06') +,(4129, 610, 5 , 73.89, 8.17, 'On Order' , '2016-04-30') +,(4130, 608, 6 , 47.42, 8.39, 'No Stock' , '2017-02-27') +,(4131, 602, 5 , 28.62, 6.07, 'No Stock' , '2016-03-21') +,(4132, 602, 7 , 38.86, 3.58, 'Allocated', '2016-06-21') +,(4132, 604, 4 , 89.39, 2.36, 'No Stock' , '2016-12-20') +,(4132, 605, 5 , 29.97, 9.78, 'No Stock' , '2016-08-03') +,(4133, 611, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4133, 613, 2 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4133, 615, 4 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4134, 606, 1 , 73.57, 3.21, 'Allocated', '2016-04-07') +,(4134, 608, 1 , 65.61, 8.68, 'On Order' , '2017-01-14') +,(4135, 603, 2 , 7.24 , 2.61, 'Allocated', '2017-01-02') +,(4135, 607, 6 , 15.99, 6.23, 'No Stock' , '2016-12-16') +,(4135, 609, 6 , 26.55, 2.9 , 'On Order' , '2016-11-25') +,(4135, 612, 8 , 17.99, 9.59, 'No Stock' , '2016-03-25') +,(4136, 606, 10, 16.82, 8.15, 'On Order' , '2016-06-22') +,(4137, 605, 2 , 39.96, 6.08, 'On Order' , '2016-05-22') +,(4138, 620, 6 , 4.6 , 3.68, 'Allocated', '2016-09-17') +,(4139, 601, 4 , 87.74, 7.37, 'No Stock' , '2016-11-25') +,(4140, 603, 10, 90.31, 6.8 , 'On Order' , '2016-05-23') +,(4140, 615, 8 , 82.86, 2.49, 'On Order' , '2016-12-24') +,(4141, 609, 7 , 20.28, 1.51, 'Allocated', '2017-02-10') +,(4142, 608, 7 , 55.47, 8.32, 'No Stock' , '2016-07-07') +,(4142, 619, 5 , 75.63, 1.64, 'Allocated', '2016-08-02') +,(4143, 606, 3 , 99.61, 4.9 , 'No Stock' , '2016-10-25') +,(4144, 604, 6 , 80.75, 3.9 , 'Allocated', '2016-09-09') +,(4145, 603, 3 , 57.97, 8.04, 'On Order' , '2016-06-17') +,(4146, 611, 8 , 69.7 , 6.14, 'On Order' , '2016-04-15') +,(4147, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4148, 602, 4 , 67.89, 1.73, 'Allocated', '2016-03-26') +,(4149, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4150, 615, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4151, 617, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4151, 618, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4152, 608, 10, 97.82, 9.97, 'No Stock' , '2016-07-11') +,(4152, 620, 10, 97.82, 9.97, 'No Stock' , '2016-07-11') +,(4153, 615, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4153, 618, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4153, 601, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4153, 613, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4154, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4154, 604, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4155, 606, 7 , 42.62, 2.57, 'No Stock' , '2017-02-11') +,(4155, 607, 2 , 83.04, 5.25, 'On Order' , '2016-09-01') +,(4155, 610, 6 , 90.56, 6.31, 'On Order' , '2016-10-18') +,(4156, 615, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4156, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4156, 601, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4157, 603, 9 , 93.09, 5.35, 'Allocated', '2016-08-03') +,(4157, 607, 6 , 40.05, 3.9 , 'On Order' , '2017-01-13') +,(4158, 612, 1 , 17.5 , 6.29, 'Allocated', '2016-04-14') +,(4158, 611, 1 , 17.5 , 6.29, 'Allocated', '2016-04-14') +,(4159, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4159, 612, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4160, 610, 8 , 42.67, 5.88, 'No Stock' , '2017-01-04') +,(4160, 620, 10, 87.78, 4.28, 'Allocated', '2016-11-20') +,(4161, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4161, 611, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4162, 613, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4162, 620, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4163, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4163, 612, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4163, 611, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4164, 607, 6 , 80.56, 4.32, 'On Order' , '2016-08-17') +,(4164, 608, 6 , 80.56, 4.32, 'On Order' , '2016-08-17') +,(4164, 617, 6 , 80.56, 4.32, 'On Order' , '2016-08-17') +,(4165, 604, 8 , 72.67, 7.56, 'On Order' , '2016-08-09') +,(4165, 603, 8 , 72.67, 7.56, 'On Order' , '2016-08-09') +,(4165, 614, 8 , 72.67, 7.56, 'On Order' , '2016-08-09') +,(4166, 601, 3 , 34.36, 9.92, 'No Stock' , '2016-09-01') +,(4166, 602, 10, 33.99, 5.76, 'Allocated', '2016-05-26') +,(4167, 603, 5 , 58.2 , 1.14, 'Allocated', '2016-06-20') +,(4167, 608, 1 , 20.01, 6.24, 'No Stock' , '2017-01-05') +,(4168, 601, 1 , 59.45, 7.44, 'On Order' , '2016-09-06') +,(4168, 605, 1 , 59.45, 7.44, 'On Order' , '2016-09-06') +,(4169, 604, 2 , 93.43, 2.26, 'No Stock' , '2017-01-16') +,(4169, 609, 2 , 93.43, 2.26, 'No Stock' , '2017-01-16') +,(4169, 607, 2 , 93.43, 2.26, 'No Stock' , '2017-01-16') +,(4170, 607, 10, 68.27, 9.02, 'No Stock' , '2017-02-11') +,(4170, 620, 10, 68.27, 9.02, 'No Stock' , '2017-02-11') +,(4171, 610, 10, 49.38, 3.71, 'Allocated', '2016-04-25') +,(4171, 601, 10, 49.38, 3.71, 'Allocated', '2016-04-25') +,(4171, 611, 10, 49.38, 3.71, 'Allocated', '2016-04-25') +,(4171, 613, 10, 49.38, 3.71, 'Allocated', '2016-04-25') +,(4171, 615, 10, 49.38, 3.71, 'Allocated', '2016-04-25') +,(4172, 606, 6 , 88.26, 2.95, 'No Stock' , '2016-04-11') +,(4172, 609, 7 , 60.97, 1.12, 'Allocated', '2016-10-14') +,(4173, 601, 10, 11.22, 9.03, 'On Order' , '2017-01-26') +,(4173, 603, 10, 11.22, 9.03, 'On Order' , '2017-01-26') +,(4173, 605, 10, 11.22, 9.03, 'On Order' , '2017-01-26') +,(4174, 607, 8 , 53.95, 6.31, 'No Stock' , '2016-04-30') +,(4174, 612, 2 , 13.56, 7.15, 'No Stock' , '2016-07-08') +,(4175, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4175, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4175, 620, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4176, 615, 2 , 70.24, 1.09, 'Allocated', '2017-01-21') +,(4176, 616, 2 , 70.24, 1.09, 'Allocated', '2017-01-21') +,(4177, 601, 2 , 17.86, 2.99, 'Allocated', '2016-05-07') +,(4177, 604, 8 , 18.39, 6.73, 'On Order' , '2016-04-05') +,(4178, 605, 9 , 23.59, 8.82, 'Allocated', '2016-09-11') +,(4178, 607, 9 , 62.59, 7.88, 'No Stock' , '2016-04-18') +,(4179, 614, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4180, 602, 7 , 48.19, 6.05, 'Allocated', '2016-11-30') +,(4180, 603, 1 , 48.19, 6.05, 'Allocated', '2016-11-30') +,(4181, 602, 2 , 64.2 , 4.74, 'Allocated', '2016-08-16') +,(4181, 603, 3 , 41.45, 2.49, 'Allocated', '2016-04-18') +,(4181, 604, 5 , 86.42, 6.42, 'No Stock' , '2016-05-03') +,(4182, 611, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4183, 615, 1 , 68.34, 8.16, 'On Order' , '2016-12-22') +,(4184, 601, 2 , 95.18, 2.74, 'Allocated', '2016-09-16') +,(4184, 603, 9 , 99.41, 9.44, 'No Stock' , '2016-07-01') +,(4184, 604, 1 , 29.52, 3.48, 'Allocated', '2016-04-02') +,(4185, 602, 2 , 22.84, 5.5 , 'On Order' , '2016-10-20') +,(4185, 611, 10, 34.57, 4.27, 'Allocated', '2017-02-05') +,(4185, 612, 4 , 85.32, 5.03, 'Allocated', '2017-03-14') +,(4185, 619, 9 , 64.97, 1.57, 'No Stock' , '2016-10-19') +,(4186, 605, 2 , 80.08, 7.63, 'On Order' , '2017-01-31') +,(4187, 602, 9 , 87.92, 7.74, 'On Order' , '2016-11-13') +,(4187, 616, 3 , 73.39, 6.52, 'On Order' , '2016-09-15') +,(4188, 604, 8 , 30.36, 1.97, 'No Stock' , '2016-06-05') +,(4188, 605, 5 , 70.95, 6.11, 'On Order' , '2016-03-31') +,(4188, 611, 3 , 23.18, 8.76, 'On Order' , '2016-03-30') +,(4189, 608, 4 , 52.23, 3.08, 'No Stock' , '2016-04-12') +,(4190, 602, 10, 17.3 , 4.18, 'No Stock' , '2016-03-29') +,(4190, 615, 6 , 34.29, 9.45, 'Allocated', '2016-11-01') +,(4191, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4192, 602, 4 , 90.29, 5.09, 'Allocated', '2017-02-14') +,(4192, 605, 8 , 1.03 , 1.28, 'On Order' , '2017-02-14') +,(4192, 615, 1 , 11.61, 7.49, 'No Stock' , '2016-08-11') +,(4193, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4194, 618, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4195, 617, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4196, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4197, 608, 10, 60.36, 3.99, 'On Order' , '2016-10-30') +,(4198, 606, 1 , 58.71, 2.32, 'No Stock' , '2016-06-26') +,(4199, 602, 8 , 12.59, 9.45, 'Allocated', '2016-04-16') +,(4199, 603, 7 , 5.5 , 2.26, 'No Stock' , '2016-11-28') +,(4200, 605, 10, 92.81, 1.0 , 'No Stock' , '2017-03-07') +,(4201, 606, 3 , 46.48, 5.94, 'Allocated', '2016-12-15') +,(4201, 608, 2 , 97.29, 5.87, 'No Stock' , '2016-09-12') +,(4202, 609, 4 , 56.7 , 2.07, 'No Stock' , '2017-03-11') +,(4202, 608, 4 , 56.7 , 2.07, 'No Stock' , '2017-03-11') +,(4203, 610, 2 , 29.12, 6.46, 'No Stock' , '2016-10-27') +,(4203, 609, 4 , 56.7 , 2.07, 'No Stock' , '2017-03-11') +,(4204, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4204, 609, 4 , 56.7 , 2.07, 'No Stock' , '2017-03-11') +,(4205, 610, 4 , 78.23, 5.95, 'No Stock' , '2016-06-21') +,(4205, 609, 4 , 56.7 , 2.07, 'No Stock' , '2017-03-11') +,(4206, 603, 2 , 40.49, 6.94, 'On Order' , '2017-02-23') +,(4206, 619, 6 , 80.19, 3.28, 'No Stock' , '2017-01-21') +,(4207, 604, 9 , 84.48, 7.01, 'No Stock' , '2016-08-17') +,(4207, 605, 9 , 41.79, 1.55, 'On Order' , '2016-06-27') +,(4207, 610, 5 , 12.3 , 9.51, 'On Order' , '2016-05-17') +,(4208, 603, 7 , 37.26, 3.68, 'Allocated', '2016-03-30') +,(4208, 605, 5 , 82.65, 2.76, 'On Order' , '2016-12-11') +,(4208, 607, 1 , 84.88, 8.67, 'No Stock' , '2016-04-28') +,(4208, 609, 1 , 88.01, 1.98, 'Allocated', '2016-10-04') +,(4208, 610, 6 , 88.85, 4.2 , 'No Stock' , '2016-04-19') +,(4209, 606, 6 , 46.31, 8.98, 'Allocated', '2016-04-20') +,(4210, 603, 2 , 92.12, 8.78, 'No Stock' , '2016-12-11') +,(4210, 609, 7 , 70.37, 6.89, 'Allocated', '2016-06-23') +,(4211, 614, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4212, 613, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4213, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4214, 608, 3 , 37.43, 5.18, 'Allocated', '2016-05-15') +,(4214, 610, 9 , 35.48, 7.16, 'On Order' , '2017-02-13') +,(4214, 611, 7 , 84.99, 8.17, 'No Stock' , '2016-07-08') +,(4215, 610, 5 , 4.35 , 2.65, 'Allocated', '2016-07-24') +,(4216, 606, 3 , 79.91, 8.92, 'Allocated', '2016-05-02') +,(4216, 608, 8 , 45.75, 3.7 , 'Allocated', '2017-02-24') +,(4216, 615, 1 , 55.11, 8.94, 'No Stock' , '2016-05-06') +,(4217, 605, 5 , 40.67, 3.31, 'On Order' , '2016-11-09') +,(4217, 610, 5 , 20.0 , 8.58, 'On Order' , '2016-07-27') +,(4218, 615, 7 , 34.14, 8.03, 'Allocated', '2016-11-12') +,(4218, 619, 9 , 62.61, 5.74, 'On Order' , '2016-11-08') +,(4219, 604, 9 , 46.24, 2.42, 'No Stock' , '2016-10-31') +,(4219, 613, 7 , 26.63, 3.9 , 'No Stock' , '2016-12-04') +,(4219, 619, 1 , 98.58, 7.38, 'No Stock' , '2016-08-06') +,(4220, 604, 5 , 66.78, 9.28, 'No Stock' , '2016-10-09') +,(4220, 609, 6 , 62.82, 9.71, 'No Stock' , '2016-04-06') +,(4221, 602, 8 , 8.44 , 1.85, 'Allocated', '2016-11-25') +,(4222, 601, 10, 84.14, 2.59, 'No Stock' , '2016-06-25') +,(4222, 604, 9 , 39.15, 8.12, 'No Stock' , '2016-09-27') +,(4223, 602, 2 , 74.35, 9.94, 'Allocated', '2016-04-18') +,(4223, 611, 4 , 58.85, 6.75, 'No Stock' , '2017-03-04') +,(4224, 618, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4225, 605, 7 , 88.08, 8.69, 'On Order' , '2016-11-13') +,(4226, 606, 1 , 84.22, 3.54, 'On Order' , '2017-01-19') +,(4226, 608, 4 , 97.1 , 4.73, 'On Order' , '2016-04-25') +,(4227, 606, 9 , 74.37, 1.85, 'On Order' , '2016-12-19') +,(4227, 607, 9 , 74.37, 1.85, 'On Order' , '2016-12-19') +,(4228, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4228, 618, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4228, 610, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4229, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4229, 618, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4230, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4230, 618, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4230, 619, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4231, 611, 6 , 36.05, 2.56, 'On Order' , '2017-02-12') +,(4231, 618, 6 , 36.05, 2.56, 'On Order' , '2017-02-12') +,(4232, 615, 8 , 16.99, 7.26, 'No Stock' , '2016-11-28') +,(4232, 618, 8 , 16.99, 7.26, 'No Stock' , '2016-11-28') +,(4233, 608, 6 , 70.71, 1.75, 'Allocated', '2016-09-29') +,(4233, 610, 6 , 70.71, 1.75, 'Allocated', '2016-09-29') +,(4233, 618, 6 , 70.71, 1.75, 'Allocated', '2016-09-29') +,(4234, 604, 5 , 15.26, 9.54, 'No Stock' , '2016-04-06') +,(4234, 619, 5 , 15.26, 9.54, 'No Stock' , '2016-04-06') +,(4235, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4235, 619, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4236, 607, 8 , 46.97, 4.9 , 'Allocated', '2017-02-16') +,(4236, 617, 8 , 46.97, 4.9 , 'Allocated', '2017-02-16') +,(4236, 620, 8 , 46.97, 4.9 , 'Allocated', '2017-02-16') +,(4237, 602, 1 , 27.79, 8.84, 'No Stock' , '2016-11-07') +,(4237, 620, 1 , 27.79, 8.84, 'No Stock' , '2016-11-07') +,(4238, 602, 3 , 32.5 , 2.63, 'No Stock' , '2016-04-09') +,(4238, 608, 8 , 88.3 , 7.59, 'On Order' , '2016-08-18') +,(4239, 606, 7 , 99.65, 2.31, 'Allocated', '2017-03-04') +,(4239, 616, 7 , 99.65, 2.31, 'Allocated', '2017-03-04') +,(4240, 606, 10, 43.66, 2.48, 'No Stock' , '2017-02-05') +,(4240, 609, 2 , 56.95, 2.11, 'No Stock' , '2016-11-15') +,(4241, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4241, 618, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4241, 620, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4242, 605, 6 , 52.37, 8.56, 'No Stock' , '2016-06-10') +,(4242, 606, 6 , 52.37, 8.56, 'No Stock' , '2016-06-10') +,(4242, 607, 6 , 52.37, 8.56, 'No Stock' , '2016-06-10') +,(4243, 604, 2 , 6.33 , 1.16, 'No Stock' , '2016-04-09') +,(4243, 614, 2 , 6.33 , 1.16, 'No Stock' , '2016-04-09') +,(4243, 610, 2 , 6.33 , 1.16, 'No Stock' , '2016-04-09') +,(4244, 609, 4 , 67.62, 7.49, 'On Order' , '2016-09-03') +,(4244, 619, 4 , 67.62, 7.49, 'On Order' , '2016-09-03') +,(4244, 620, 4 , 67.62, 7.49, 'On Order' , '2016-09-03') +,(4245, 608, 1 , 32.47, 9.9 , 'Allocated', '2017-03-14') +,(4245, 618, 1 , 32.47, 9.9 , 'Allocated', '2017-03-14') +,(4245, 620, 1 , 32.47, 9.9 , 'Allocated', '2017-03-14') +,(4246, 603, 10, 53.94, 3.85, 'No Stock' , '2016-06-04') +,(4246, 606, 7 , 6.16 , 9.37, 'No Stock' , '2016-07-05') +,(4246, 607, 3 , 27.34, 1.97, 'Allocated', '2016-11-15') +,(4246, 611, 4 , 73.06, 1.26, 'No Stock' , '2017-02-28') +,(4247, 601, 4 , 66.41, 4.54, 'On Order' , '2017-02-26') +,(4247, 605, 2 , 61.24, 5.9 , 'Allocated', '2016-12-15') +,(4248, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4248, 620, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4249, 615, 2 , 74.52, 3.88, 'On Order' , '2016-06-09') +,(4249, 620, 2 , 74.52, 3.88, 'On Order' , '2016-06-09') +,(4249, 609, 2 , 74.52, 3.88, 'On Order' , '2016-06-09') +,(4250, 606, 7 , 63.89, 3.39, 'On Order' , '2016-12-31') +,(4250, 612, 8 , 75.06, 4.19, 'Allocated', '2016-06-26') +,(4251, 602, 1 , 1.75 , 1.73, 'No Stock' , '2016-12-07') +,(4251, 604, 8 , 43.98, 1.58, 'Allocated', '2016-07-28') +,(4252, 606, 4 , 94.24, 1.31, 'No Stock' , '2017-03-14') +,(4252, 619, 10, 41.46, 4.18, 'No Stock' , '2017-03-03') +,(4252, 620, 3 , 29.91, 4.91, 'On Order' , '2016-12-28') +,(4253, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4253, 610, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4254, 610, 3 , 5.01 , 9.93, 'On Order' , '2017-02-03') +,(4254, 620, 2 , 5.01 , 9.93, 'On Order' , '2017-02-03') +,(4254, 612, 3 , 5.01 , 9.93, 'On Order' , '2017-02-03') +,(4255, 610, 7 , 45.49, 8.0 , 'Allocated', '2016-08-01') +,(4255, 611, 7 , 45.49, 8.0 , 'Allocated', '2016-08-01') +,(4256, 604, 9 , 6.74 , 1.84, 'No Stock' , '2016-06-13') +,(4256, 612, 4 , 42.02, 2.86, 'Allocated', '2016-09-19') +,(4256, 620, 2 , 31.71, 4.97, 'Allocated', '2016-10-02') +,(4257, 617, 1, 10.00, 1.00, 'On Order' , '2016-12-14') +,(4257, 610, 1, 10.00, 1.00, 'On Order' , '2016-12-14') +,(4257, 611, 1, 10.00, 1.00, 'On Order' , '2016-12-14') +,(4258, 605, 7 , 22.45, 8.41, 'On Order' , '2016-06-02') +,(4258, 615, 3 , 69.12, 3.65, 'Allocated', '2017-02-27') +,(4258, 619, 4 , 62.32, 2.23, 'Allocated', '2017-02-20') +,(4259, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4260, 603, 1 , 27.68, 1.99, 'Allocated', '2016-09-20') +,(4260, 604, 3 , 59.65, 3.05, 'No Stock' , '2016-12-31') +,(4261, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4262, 602, 4 , 51.73, 3.06, 'Allocated', '2017-01-17') +,(4263, 612, 4 , 18.46, 7.86, 'Allocated', '2016-08-12') +,(4263, 615, 4 , 18.46, 7.86, 'Allocated', '2016-08-12') +,(4263, 616, 4 , 18.46, 7.86, 'Allocated', '2016-08-12') +,(4264, 604, 8 , 82.02, 9.19, 'Allocated', '2016-11-28') +,(4264, 614, 8 , 82.02, 9.19, 'Allocated', '2016-11-28') +,(4265, 618, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4265, 620, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4266, 601, 2 , 66.57, 6.27, 'Allocated', '2016-09-19') +,(4266, 602, 2 , 66.57, 6.27, 'Allocated', '2016-09-19') +,(4267, 601, 4 , 44.78, 6.86, 'No Stock' , '2016-09-27') +,(4267, 610, 4 , 19.08, 6.41, 'No Stock' , '2016-12-24') +,(4268, 611, 1 , 24.72, 8.14, 'Allocated', '2016-06-08') +,(4268, 612, 1 , 24.72, 8.14, 'Allocated', '2016-06-08') +,(4269, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4269, 617, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4269, 618, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4270, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4270, 612, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4270, 620, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4271, 603, 2 , 80.47, 4.81, 'Allocated', '2016-05-25') +,(4271, 604, 8 , 38.65, 4.02, 'No Stock' , '2016-05-09') +,(4272, 610, 7 , 66.28, 2.85, 'No Stock' , '2016-09-17') +,(4273, 612, 10, 85.38, 8.44, 'No Stock' , '2016-12-19') +,(4274, 613, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4275, 610, 8 , 1.12 , 8.65, 'Allocated', '2016-10-28') +,(4275, 615, 1 , 24.01, 5.55, 'No Stock' , '2016-12-30') +,(4276, 603, 3 , 44.76, 7.28, 'No Stock' , '2016-12-28') +,(4277, 610, 9 , 40.01, 8.62, 'No Stock' , '2016-11-10') +,(4278, 603, 6 , 32.0 , 1.23, 'Allocated', '2016-12-23') +,(4278, 608, 4 , 38.01, 9.45, 'Allocated', '2016-10-05') +,(4278, 609, 5 , 31.99, 5.41, 'No Stock' , '2016-10-23') +,(4279, 613, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4280, 606, 5 , 7.52 , 2.76, 'Allocated', '2016-05-27') +,(4280, 609, 4 , 37.09, 4.44, 'On Order' , '2016-08-10') +,(4281, 610, 9 , 37.07, 8.7 , 'On Order' , '2016-12-28') +,(4281, 611, 2 , 37.07, 8.7 , 'On Order' , '2016-12-28') +,(4281, 612, 1 , 37.07, 8.7 , 'On Order' , '2016-12-28') +,(4282, 601, 1 , 19.14, 3.98, 'On Order' , '2016-11-09') +,(4282, 606, 3 , 88.94, 6.79, 'On Order' , '2016-09-29') +,(4282, 609, 6 , 25.35, 5.22, 'Allocated', '2016-10-05') +,(4283, 601, 1 , 14.78, 3.31, 'On Order' , '2016-10-07') +,(4284, 606, 5 , 32.57, 7.22, 'On Order' , '2016-08-24') +,(4285, 604, 5 , 47.88, 3.77, 'No Stock' , '2016-12-09') +,(4285, 615, 8 , 9.28 , 2.13, 'Allocated', '2016-03-27') +,(4286, 620, 5 , 63.24, 7.62, 'Allocated', '2016-12-06') +,(4287, 602, 6 , 2.9 , 9.5 , 'On Order' , '2016-10-06') +,(4287, 605, 5 , 7.63 , 2.78, 'Allocated', '2016-08-22') +,(4287, 611, 1 , 8.98 , 3.39, 'Allocated', '2016-07-18') +,(4287, 614, 3 , 34.4 , 7.12, 'On Order' , '2017-03-04') +,(4288, 604, 6 , 57.67, 3.25, 'Allocated', '2016-05-18') +,(4289, 601, 7 , 19.32, 7.31, 'On Order' , '2017-01-21') +,(4289, 615, 10, 89.16, 2.08, 'No Stock' , '2016-06-03') +,(4290, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4291, 601, 1 , 68.5 , 2.58, 'Allocated', '2016-11-05') +,(4291, 603, 5 , 11.27, 5.56, 'Allocated', '2016-06-10') +,(4291, 606, 1 , 76.82, 3.31, 'Allocated', '2016-09-27') +,(4292, 608, 10, 27.45, 4.8 , 'On Order' , '2016-05-12') +,(4292, 610, 9 , 16.78, 5.96, 'No Stock' , '2016-05-05') +,(4293, 612, 4 , 69.21, 2.07, 'Allocated', '2016-08-23') +,(4294, 619, 4 , 81.5 , 9.13, 'Allocated', '2017-01-20') +,(4295, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4296, 613, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4297, 604, 4 , 19.21, 1.7 , 'Allocated', '2016-08-20') +,(4297, 606, 4 , 71.24, 5.74, 'No Stock' , '2016-10-11') +,(4298, 613, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4299, 603, 8 , 81.7 , 5.69, 'Allocated', '2016-07-06') +,(4300, 601, 5 , 35.51, 8.38, 'On Order' , '2016-12-23') +,(4300, 607, 5 , 46.94, 6.82, 'No Stock' , '2016-07-29') +,(4301, 605, 6 , 99.32, 1.22, 'Allocated', '2016-09-02') +,(4301, 620, 7 , 96.67, 6.9 , 'Allocated', '2016-11-24') +,(4302, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4303, 605, 8 , 31.92, 5.62, 'On Order' , '2016-04-09') +,(4304, 615, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4305, 606, 1 , 2.53 , 1.15, 'On Order' , '2016-12-03') +,(4305, 609, 6 , 76.41, 7.87, 'Allocated', '2016-07-05') +,(4305, 612, 3 , 31.58, 5.53, 'On Order' , '2016-10-01') +,(4306, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4307, 601, 7 , 36.63, 3.9 , 'On Order' , '2016-09-16') +,(4307, 606, 10, 56.47, 8.96, 'No Stock' , '2017-02-25') +,(4308, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4309, 606, 6 , 84.25, 2.28, 'On Order' , '2016-04-07') +,(4310, 605, 7 , 15.88, 2.48, 'Allocated', '2017-02-17') +,(4311, 603, 2 , 67.26, 6.18, 'No Stock' , '2016-05-06') +,(4312, 619, 4 , 87.5 , 6.57, 'Allocated', '2017-03-14') +,(4313, 602, 3 , 87.01, 4.45, 'On Order' , '2016-08-30') +,(4313, 610, 7 , 54.92, 8.87, 'No Stock' , '2017-01-20') +,(4314, 602, 9 , 49.19, 2.67, 'Allocated', '2016-07-24') +,(4314, 607, 10, 32.19, 8.12, 'On Order' , '2016-11-23') +,(4315, 602, 7 , 9.25 , 3.78, 'On Order' , '2017-01-04') +,(4316, 613, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4317, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4318, 609, 5 , 29.17, 3.35, 'No Stock' , '2016-11-28') +,(4318, 610, 4 , 41.75, 3.7 , 'On Order' , '2016-09-09') +,(4318, 620, 5 , 81.63, 1.49, 'On Order' , '2016-04-16') +,(4319, 614, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4320, 613, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4321, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4322, 603, 2 , 21.09, 9.37, 'No Stock' , '2016-11-29') +,(4323, 608, 8 , 24.05, 9.49, 'On Order' , '2016-08-12') +,(4324, 607, 7 , 83.23, 1.48, 'On Order' , '2016-07-10') +,(4325, 608, 10, 35.28, 1.8 , 'Allocated', '2016-09-01') +,(4326, 602, 8 , 69.18, 4.43, 'No Stock' , '2016-07-31') +,(4326, 610, 2 , 24.44, 8.1 , 'No Stock' , '2016-03-29') +,(4327, 608, 3 , 22.57, 4.64, 'Allocated', '2016-03-23') +,(4328, 604, 1 , 55.53, 3.16, 'On Order' , '2016-12-14') +,(4328, 605, 2 , 38.78, 6.97, 'Allocated', '2017-03-04') +,(4328, 607, 5 , 28.94, 3.59, 'Allocated', '2016-08-01') +,(4329, 603, 6 , 65.93, 2.86, 'On Order' , '2016-10-25') +,(4330, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4331, 602, 5 , 37.37, 6.39, 'No Stock' , '2016-03-19') +,(4332, 606, 5 , 93.96, 3.31, 'No Stock' , '2016-08-09') +,(4332, 610, 5 , 3.77 , 6.74, 'Allocated', '2016-06-23') +,(4333, 608, 7 , 14.29, 3.95, 'On Order' , '2016-06-16') +,(4334, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4335, 609, 6 , 63.15, 9.3 , 'Allocated', '2016-08-31') +,(4336, 613, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4337, 610, 1 , 52.98, 5.68, 'Allocated', '2016-03-19') +,(4338, 610, 1 , 83.94, 3.56, 'Allocated', '2016-11-03') +,(4339, 604, 10, 78.06, 5.32, 'No Stock' , '2016-11-19') +,(4340, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4341, 609, 6 , 52.04, 7.63, 'No Stock' , '2016-11-25') +,(4341, 615, 1 , 9.44 , 8.66, 'No Stock' , '2016-09-06') +,(4342, 615, 6 , 67.41, 8.5 , 'Allocated', '2016-08-28') +,(4343, 615, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4344, 610, 10, 61.53, 5.36, 'On Order' , '2016-04-30') +,(4345, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4346, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4347, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4348, 608, 1 , 96.42, 4.57, 'On Order' , '2016-05-14') +,(4348, 610, 3 , 38.0 , 5.74, 'On Order' , '2016-05-30') +,(4348, 611, 6 , 38.59, 6.7 , 'On Order' , '2016-08-16') +,(4349, 613, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4350, 602, 8 , 81.72, 7.57, 'Allocated', '2016-08-18') +,(4350, 604, 6 , 95.31, 9.43, 'On Order' , '2016-12-29') +,(4350, 608, 9 , 43.57, 6.54, 'No Stock' , '2016-08-24') +,(4351, 602, 1 , 37.63, 3.31, 'No Stock' , '2016-08-26') +,(4351, 607, 9 , 83.22, 2.44, 'No Stock' , '2016-04-11') +,(4352, 602, 3 , 13.09, 3.98, 'No Stock' , '2016-10-03') +,(4352, 603, 9 , 88.58, 4.87, 'On Order' , '2017-03-05') +,(4352, 614, 4 , 47.62, 5.05, 'Allocated', '2016-05-30') +,(4353, 612, 9 , 28.8 , 1.77, 'Allocated', '2016-03-28') +,(4354, 618, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4355, 607, 4 , 20.25, 3.18, 'No Stock' , '2016-04-27') +,(4355, 608, 9 , 73.3 , 5.95, 'Allocated', '2016-12-08') +,(4355, 609, 7 , 26.16, 6.88, 'Allocated', '2016-12-09') +,(4356, 614, 8 , 93.97, 2.88, 'No Stock' , '2016-06-14') +,(4357, 605, 6 , 24.39, 5.53, 'No Stock' , '2016-07-31') +,(4357, 612, 4 , 71.28, 1.94, 'No Stock' , '2016-07-08') +,(4358, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4359, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4360, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4361, 601, 6 , 45.27, 1.05, 'Allocated', '2016-03-29') +,(4361, 609, 10, 39.75, 1.28, 'On Order' , '2016-07-15') +,(4362, 603, 4 , 42.92, 5.17, 'No Stock' , '2016-09-24') +,(4363, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4364, 602, 8 , 90.01, 4.2 , 'On Order' , '2017-02-09') +,(4365, 601, 2 , 92.96, 3.73, 'Allocated', '2016-06-10') +,(4365, 603, 7 , 86.67, 9.6 , 'On Order' , '2016-07-31') +,(4366, 604, 6 , 52.01, 2.02, 'No Stock' , '2016-09-23') +,(4366, 605, 9 , 88.21, 3.68, 'On Order' , '2016-08-10') +,(4366, 609, 8 , 80.78, 3.99, 'No Stock' , '2016-05-07') +,(4367, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4368, 604, 4 , 53.46, 4.56, 'No Stock' , '2016-09-07') +,(4369, 612, 2 , 8.5 , 3.86, 'Allocated', '2017-01-20') +,(4370, 603, 9 , 46.22, 8.2 , 'On Order' , '2016-09-02') +,(4370, 604, 10, 10.38, 2.29, 'Allocated', '2016-06-03') +,(4371, 610, 10, 23.33, 4.07, 'On Order' , '2016-08-25') +,(4372, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4373, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4374, 604, 3 , 29.51, 2.34, 'No Stock' , '2017-03-07') +,(4375, 618, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4376, 608, 10, 5.55 , 3.21, 'No Stock' , '2016-09-14') +,(4377, 602, 9 , 91.62, 8.57, 'On Order' , '2016-08-26') +,(4378, 603, 8 , 74.83, 5.38, 'On Order' , '2016-04-11') +,(4379, 605, 9 , 53.7 , 5.65, 'On Order' , '2016-10-29') +,(4380, 618, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4381, 619, 1 , 35.54, 3.78, 'Allocated', '2016-07-27') +,(4382, 602, 8 , 33.64, 7.95, 'Allocated', '2016-11-05') +,(4382, 606, 4 , 68.17, 6.06, 'On Order' , '2017-01-22') +,(4383, 613, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4384, 615, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4385, 609, 1 , 18.13, 8.94, 'On Order' , '2016-03-25') +,(4386, 613, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4387, 602, 8 , 86.06, 9.74, 'Allocated', '2016-12-01') +,(4387, 606, 8 , 87.31, 7.53, 'No Stock' , '2016-06-12') +,(4387, 610, 3 , 47.55, 5.2 , 'Allocated', '2016-10-06') +,(4388, 602, 4 , 5.86 , 3.52, 'On Order' , '2016-05-09') +,(4388, 603, 8 , 24.25, 6.18, 'Allocated', '2016-09-22') +,(4388, 606, 6 , 29.46, 2.93, 'Allocated', '2016-09-11') +,(4388, 619, 1 , 36.76, 7.37, 'No Stock' , '2016-12-29') +,(4389, 602, 1 , 94.23, 9.35, 'Allocated', '2016-06-13') +,(4389, 603, 2 , 40.15, 8.39, 'No Stock' , '2016-08-09') +,(4390, 609, 4 , 7.02 , 5.61, 'On Order' , '2016-11-29') +,(4391, 607, 1 , 48.41, 8.97, 'On Order' , '2016-07-10') +,(4392, 603, 8 , 74.91, 8.23, 'No Stock' , '2016-04-07') +,(4393, 611, 4 , 55.83, 4.56, 'Allocated', '2016-04-13') +,(4394, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4395, 610, 7 , 82.73, 5.09, 'No Stock' , '2016-09-27') +,(4395, 617, 6 , 26.05, 6.29, 'On Order' , '2016-07-24') +,(4396, 605, 9 , 66.19, 1.32, 'No Stock' , '2017-02-05') +,(4396, 619, 4 , 3.15 , 1.04, 'On Order' , '2016-07-08') +,(4397, 619, 9 , 78.52, 7.64, 'No Stock' , '2016-08-19') +,(4398, 618, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4399, 610, 7 , 85.03, 4.71, 'No Stock' , '2016-05-04') +,(4400, 612, 9 , 36.85, 6.54, 'On Order' , '2016-10-31') +,(4400, 620, 2 , 15.9 , 5.62, 'On Order' , '2016-06-18') +,(4401, 602, 1 , 91.01, 4.13, 'No Stock' , '2016-09-27') +,(4401, 604, 10, 98.7 , 5.27, 'Allocated', '2016-06-03') +,(4402, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4403, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4404, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4405, 604, 3 , 46.99, 9.31, 'No Stock' , '2016-09-08') +,(4405, 610, 10, 4.94 , 1.68, 'On Order' , '2016-11-15') +,(4406, 602, 7 , 25.84, 7.67, 'On Order' , '2016-10-28') +,(4406, 606, 2 , 96.43, 5.64, 'No Stock' , '2016-11-14') +,(4406, 607, 10, 14.91, 3.88, 'No Stock' , '2016-06-18') +,(4407, 606, 9 , 20.82, 6.82, 'No Stock' , '2016-10-08') +,(4407, 608, 4 , 29.19, 7.26, 'No Stock' , '2016-12-15') +,(4408, 605, 4 , 12.83, 9.29, 'No Stock' , '2016-11-20') +,(4408, 615, 4 , 89.77, 2.7 , 'No Stock' , '2017-03-07') +,(4408, 619, 3 , 36.44, 8.86, 'No Stock' , '2016-12-17') +,(4409, 602, 2 , 36.96, 9.73, 'Allocated', '2016-08-19') +,(4409, 611, 7 , 94.98, 4.11, 'On Order' , '2016-05-17') +,(4410, 603, 7 , 13.79, 5.05, 'No Stock' , '2016-09-28') +,(4410, 604, 10, 70.24, 4.07, 'No Stock' , '2016-10-27') +,(4410, 607, 6 , 26.39, 7.8 , 'No Stock' , '2016-03-21') +,(4411, 602, 7 , 3.47 , 3.86, 'No Stock' , '2017-03-14') +,(4411, 611, 3 , 10.43, 3.67, 'On Order' , '2016-12-27') +,(4412, 605, 10, 26.07, 6.78, 'Allocated', '2017-02-16') +,(4412, 607, 7 , 76.81, 5.67, 'No Stock' , '2016-11-26') +,(4412, 610, 3 , 98.77, 3.34, 'On Order' , '2016-09-29') +,(4413, 617, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4414, 606, 5 , 26.01, 4.54, 'On Order' , '2016-03-23') +,(4415, 605, 5 , 74.86, 1.68, 'No Stock' , '2016-09-18') +,(4416, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4417, 601, 6 , 66.38, 5.22, 'No Stock' , '2016-07-07') +,(4417, 604, 7 , 96.99, 4.89, 'No Stock' , '2016-09-30') +,(4418, 609, 8 , 59.88, 5.52, 'Allocated', '2016-09-03') +,(4419, 604, 4 , 54.04, 4.95, 'On Order' , '2017-01-05') +,(4420, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4421, 605, 2 , 96.34, 1.7 , 'On Order' , '2016-06-10') +,(4422, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4423, 602, 3 , 25.88, 5.34, 'Allocated', '2016-04-19') +,(4423, 605, 5 , 4.06 , 2.22, 'On Order' , '2016-06-21') +,(4423, 608, 9 , 20.4 , 4.26, 'On Order' , '2016-08-17') +,(4424, 605, 8 , 44.66, 4.23, 'Allocated', '2016-11-06') +,(4425, 607, 7 , 18.91, 6.75, 'On Order' , '2016-11-28') +,(4425, 608, 4 , 60.11, 4.46, 'No Stock' , '2017-02-15') +,(4426, 606, 8 , 44.98, 6.5 , 'On Order' , '2016-11-13') +,(4426, 607, 4 , 78.46, 2.91, 'Allocated', '2017-01-26') +,(4427, 604, 2 , 61.91, 3.08, 'On Order' , '2016-09-01') +,(4427, 607, 10, 53.82, 8.17, 'No Stock' , '2016-11-09') +,(4428, 603, 2 , 81.15, 5.94, 'Allocated', '2016-12-01') +,(4428, 605, 9 , 48.38, 5.26, 'On Order' , '2016-07-08') +,(4429, 606, 10, 28.8 , 2.75, 'Allocated', '2017-03-03') +,(4430, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4431, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4432, 603, 9 , 52.12, 4.42, 'No Stock' , '2016-09-03') +,(4433, 601, 4 , 34.09, 9.94, 'No Stock' , '2016-04-18') +,(4433, 605, 1 , 65.04, 7.32, 'On Order' , '2016-04-04') +,(4434, 601, 2 , 61.28, 1.15, 'On Order' , '2016-03-18') +,(4434, 605, 2 , 61.28, 1.15, 'On Order' , '2016-03-18') +,(4434, 607, 2 , 61.28, 1.15, 'On Order' , '2016-03-18') +,(4435, 610, 10, 9.19 , 7.18, 'On Order' , '2016-12-08') +,(4435, 612, 10, 9.19 , 7.18, 'On Order' , '2016-12-08') +,(4435, 614, 10, 9.19 , 7.18, 'On Order' , '2016-12-08') +,(4436, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4436, 618, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4436, 620, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4437, 601, 7 , 56.48, 9.07, 'Allocated', '2016-05-05') +,(4437, 602, 1 , 98.71, 8.08, 'On Order' , '2017-03-16') +,(4437, 609, 7 , 12.69, 5.56, 'On Order' , '2016-12-16') +,(4438, 604, 1 , 97.24, 5.43, 'Allocated', '2016-10-22') +,(4438, 605, 1 , 97.24, 5.43, 'Allocated', '2016-10-22') +,(4438, 606, 1 , 97.24, 5.43, 'Allocated', '2016-10-22') +,(4439, 615, 5 , 11.46, 3.07, 'Allocated', '2016-06-10') +,(4439, 618, 1 , 97.24, 5.43, 'Allocated', '2016-10-22') +,(4439, 620, 1 , 97.24, 5.43, 'Allocated', '2016-10-22') +,(4440, 603, 9 , 66.05, 8.7 , 'No Stock' , '2016-11-08') +,(4440, 616, 1 , 97.24, 5.43, 'Allocated', '2016-10-22') +,(4440, 620, 1 , 97.24, 5.43, 'Allocated', '2016-10-22') +,(4441, 602, 4 , 79.49, 2.54, 'Allocated', '2017-02-19') +,(4441, 609, 4 , 88.86, 9.63, 'Allocated', '2016-06-06') +,(4442, 608, 1 , 55.66, 2.52, 'Allocated', '2016-09-08') +,(4443, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4444, 602, 4 , 52.6 , 9.83, 'On Order' , '2017-01-18') +,(4444, 605, 8 , 81.63, 9.58, 'On Order' , '2017-01-27') +,(4445, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4445, 601, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4445, 607, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4446, 602, 3 , 76.28, 1.52, 'On Order' , '2017-02-17') +,(4446, 606, 5 , 18.52, 2.13, 'On Order' , '2016-06-28') +,(4447, 609, 9 , 54.61, 4.47, 'Allocated', '2016-07-08') +,(4447, 608, 9 , 54.61, 4.47, 'Allocated', '2016-07-08') +,(4447, 607, 9 , 54.61, 4.47, 'Allocated', '2016-07-08') +,(4448, 605, 2 , 69.71, 2.05, 'No Stock' , '2016-09-17') +,(4448, 606, 2 , 69.71, 2.05, 'No Stock' , '2016-09-17') +,(4448, 607, 2 , 69.71, 2.05, 'No Stock' , '2016-09-17') +,(4449, 618, 6 , 35.62, 5.23, 'On Order' , '2016-04-15') +,(4449, 619, 10, 86.97, 4.63, 'No Stock' , '2016-09-29') +,(4450, 619, 8 , 26.14, 4.87, 'On Order' , '2016-12-09') +,(4450, 620, 8 , 26.14, 4.87, 'On Order' , '2016-12-09') +,(4450, 601, 8 , 26.14, 4.87, 'On Order' , '2016-12-09') +,(4451, 604, 3 , 47.48, 1.4 , 'Allocated', '2016-09-12') +,(4452, 615, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4453, 606, 2 , 4.03 , 8.07, 'On Order' , '2016-12-10') +,(4454, 619, 7 , 55.92, 9.0 , 'On Order' , '2016-10-07') +,(4455, 602, 10, 50.3 , 9.33, 'On Order' , '2017-01-11') +,(4455, 603, 1 , 7.68 , 7.77, 'Allocated', '2016-12-09') +,(4455, 605, 1 , 98.23, 3.73, 'Allocated', '2016-07-07') +,(4456, 607, 8 , 54.83, 9.57, 'No Stock' , '2016-08-16') +,(4456, 612, 7 , 97.34, 1.24, 'Allocated', '2016-05-13') +,(4457, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4458, 615, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4459, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4460, 602, 8 , 37.95, 8.36, 'No Stock' , '2017-01-03') +,(4461, 620, 6 , 73.77, 2.02, 'Allocated', '2016-03-27') +,(4462, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4463, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4464, 606, 1 , 31.6 , 1.18, 'On Order' , '2016-09-05') +,(4465, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4466, 620, 10, 37.79, 1.76, 'Allocated', '2016-12-14') +,(4467, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4468, 610, 3 , 80.77, 6.87, 'Allocated', '2016-12-30') +,(4469, 602, 3 , 19.99, 5.21, 'No Stock' , '2016-08-11') +,(4469, 612, 3 , 73.21, 4.85, 'On Order' , '2017-02-19') +,(4470, 607, 4 , 7.7 , 5.78, 'No Stock' , '2016-04-22') +,(4471, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4472, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4473, 609, 2 , 97.6 , 1.84, 'Allocated', '2016-05-12') +,(4474, 611, 7 , 12.5 , 6.31, 'Allocated', '2016-04-18') +,(4475, 603, 2 , 44.42, 7.21, 'No Stock' , '2017-03-10') +,(4476, 603, 4 , 43.47, 5.63, 'No Stock' , '2016-09-17') +,(4477, 603, 4 , 24.99, 4.46, 'No Stock' , '2016-09-10') +,(4478, 606, 1 , 29.13, 4.59, 'On Order' , '2017-03-04') +,(4478, 619, 4 , 58.05, 2.9 , 'Allocated', '2017-01-26') +,(4479, 603, 10, 93.2 , 7.79, 'On Order' , '2016-03-21') +,(4479, 609, 4 , 70.36, 9.01, 'Allocated', '2017-02-03') +,(4479, 610, 6 , 49.48, 6.79, 'Allocated', '2017-03-01') +,(4480, 608, 9 , 11.03, 6.26, 'On Order' , '2016-12-10') +,(4481, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4482, 603, 10, 28.92, 8.1 , 'No Stock' , '2016-05-27') +,(4482, 607, 6 , 90.11, 5.74, 'On Order' , '2016-04-29') +,(4482, 610, 4 , 7.12 , 2.89, 'On Order' , '2017-01-12') +,(4482, 611, 1 , 12.48, 8.56, 'No Stock' , '2016-08-16') +,(4482, 614, 10, 55.93, 1.63, 'On Order' , '2016-07-09') +,(4482, 618, 1 , 33.9 , 2.46, 'Allocated', '2016-07-11') +,(4483, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4484, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4485, 605, 7 , 99.92, 1.31, 'No Stock' , '2016-05-11') +,(4486, 615, 7 , 4.39 , 3.61, 'Allocated', '2016-06-24') +,(4487, 602, 9 , 69.78, 7.96, 'No Stock' , '2016-12-29') +,(4487, 607, 5 , 24.92, 8.97, 'On Order' , '2016-08-15') +,(4487, 615, 4 , 72.16, 8.97, 'On Order' , '2016-07-28') +,(4488, 601, 9 , 64.29, 1.52, 'On Order' , '2016-03-30') +,(4488, 609, 10, 66.79, 5.3 , 'On Order' , '2016-07-11') +,(4489, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4490, 615, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4491, 602, 3 , 16.8 , 5.22, 'On Order' , '2016-09-16') +,(4492, 607, 4 , 99.59, 2.45, 'On Order' , '2017-03-04') +,(4493, 615, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4494, 615, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4495, 607, 7 , 86.05, 5.4 , 'Allocated', '2016-10-03') +,(4496, 603, 10, 55.12, 3.71, 'Allocated', '2016-07-06') +,(4497, 607, 7 , 27.3 , 4.26, 'Allocated', '2017-01-29') +,(4498, 604, 10, 89.58, 1.25, 'Allocated', '2016-03-19') +,(4498, 610, 10, 69.32, 2.48, 'No Stock' , '2016-06-24') +,(4499, 601, 4 , 56.58, 6.73, 'No Stock' , '2017-02-21') +,(4499, 602, 4 , 56.58, 6.73, 'No Stock' , '2017-02-21') +,(4499, 603, 4 , 56.58, 6.73, 'No Stock' , '2017-02-21') +,(4500, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4500, 620, 10, 54.41, 7.02, 'No Stock' , '2016-11-30') +,(4500, 619, 10, 54.41, 7.02, 'No Stock' , '2016-11-30') +,(4501, 620, 10, 54.41, 7.02, 'No Stock' , '2016-11-30') +,(4501, 619, 10, 54.41, 7.02, 'No Stock' , '2016-11-30') +,(4501, 618, 10, 54.41, 7.02, 'No Stock' , '2016-11-30') +,(4502, 603, 2 , 27.21, 1.12, 'No Stock' , '2016-07-27') +,(4502, 605, 9 , 39.93, 3.2 , 'On Order' , '2016-11-21') +,(4503, 615, 6 , 85.1 , 8.26, 'No Stock' , '2016-05-03') +,(4503, 611, 6 , 85.1 , 8.26, 'No Stock' , '2016-05-03') +,(4503, 612, 6 , 85.1 , 8.26, 'No Stock' , '2016-05-03') +,(4504, 615, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4504, 618, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4504, 619, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4505, 612, 3 , 10.99, 1.62, 'Allocated', '2016-09-04') +,(4505, 609, 3 , 10.99, 1.62, 'Allocated', '2016-09-04') +,(4505, 601, 3 , 10.99, 1.62, 'Allocated', '2016-09-04') +,(4506, 602, 7 , 88.03, 1.0 , 'On Order' , '2016-09-23') +,(4506, 603, 9 , 66.78, 1.18, 'Allocated', '2017-02-03') +,(4506, 606, 10, 85.37, 2.21, 'Allocated', '2016-10-03') +,(4506, 609, 9 , 84.3 , 4.06, 'Allocated', '2016-12-08') +,(4507, 617, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4508, 611, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4509, 611, 2 , 99.24, 8.51, 'Allocated', '2016-08-12') +,(4509, 612, 8 , 2.41 , 3.81, 'On Order' , '2016-08-30') +,(4510, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4511, 610, 3 , 73.48, 8.4 , 'Allocated', '2016-12-06') +,(4511, 611, 4 , 7.29 , 6.91, 'Allocated', '2016-12-23') +,(4511, 616, 5 , 26.16, 6.26, 'On Order' , '2016-12-09') +,(4512, 614, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4513, 614, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4514, 605, 6 , 86.17, 7.08, 'No Stock' , '2017-01-25') +,(4514, 610, 6 , 71.51, 6.3 , 'No Stock' , '2017-01-23') +,(4515, 617, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4516, 618, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4517, 604, 10, 55.76, 7.34, 'Allocated', '2016-10-23') +,(4517, 619, 2 , 1.09 , 7.07, 'Allocated', '2016-08-19') +,(4518, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4519, 609, 9 , 61.39, 7.83, 'On Order' , '2016-07-01') +,(4520, 619, 9 , 72.61, 9.55, 'No Stock' , '2016-10-08') +,(4521, 610, 10, 19.38, 3.54, 'Allocated', '2016-12-08') +,(4521, 615, 8 , 54.35, 7.77, 'No Stock' , '2017-01-31') +,(4522, 602, 9 , 68.98, 6.79, 'No Stock' , '2016-11-28') +,(4523, 606, 9 , 79.86, 1.63, 'No Stock' , '2016-05-25') +,(4524, 602, 9 , 91.58, 3.46, 'On Order' , '2017-03-12') +,(4525, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4526, 603, 9 , 56.56, 7.64, 'On Order' , '2016-10-14') +,(4526, 604, 4 , 80.67, 2.83, 'No Stock' , '2016-07-29') +,(4526, 610, 5 , 88.8 , 2.86, 'On Order' , '2017-02-25') +,(4527, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4528, 605, 4 , 73.64, 8.81, 'Allocated', '2017-01-26') +,(4528, 609, 4 , 64.56, 4.09, 'On Order' , '2016-10-03') +,(4529, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4530, 602, 9 , 70.97, 4.73, 'On Order' , '2016-12-07') +,(4531, 606, 10, 26.53, 2.83, 'No Stock' , '2016-03-25') +,(4531, 615, 5 , 79.05, 6.82, 'Allocated', '2016-08-04') +,(4531, 619, 4 , 36.14, 7.09, 'No Stock' , '2016-03-26') +,(4532, 605, 5 , 6.28 , 9.94, 'No Stock' , '2017-03-13') +,(4532, 610, 8 , 17.25, 3.68, 'Allocated', '2016-05-28') +,(4533, 615, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4534, 606, 8 , 60.95, 9.33, 'Allocated', '2016-07-15') +,(4534, 607, 10, 49.84, 8.32, 'No Stock' , '2016-04-24') +,(4535, 610, 6 , 17.67, 1.81, 'On Order' , '2017-03-01') +,(4535, 619, 3 , 88.0 , 3.12, 'Allocated', '2016-07-11') +,(4536, 615, 5 , 88.08, 4.93, 'Allocated', '2016-12-04') +,(4537, 611, 2 , 14.77, 4.04, 'No Stock' , '2016-03-25') +,(4538, 603, 6 , 3.51 , 4.54, 'Allocated', '2016-04-21') +,(4539, 603, 7 , 6.58 , 4.8 , 'Allocated', '2016-05-14') +,(4540, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4540, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4540, 618, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4541, 603, 5 , 37.47, 2.89, 'On Order' , '2016-04-07') +,(4541, 607, 4 , 35.17, 5.44, 'No Stock' , '2017-01-07') +,(4541, 615, 2 , 83.62, 4.01, 'Allocated', '2016-11-22') +,(4542, 605, 10, 92.43, 3.27, 'On Order' , '2017-01-23') +,(4542, 601, 10, 92.43, 3.27, 'On Order' , '2017-01-23') +,(4542, 603, 10, 92.43, 3.27, 'On Order' , '2017-01-23') +,(4543, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4543, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4543, 619, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4544, 611, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4544, 610, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4544, 609, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4545, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4545, 604, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4545, 606, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4546, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4546, 606, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4546, 608, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4547, 606, 4 , 81.81, 9.44, 'No Stock' , '2016-05-14') +,(4547, 602, 4 , 81.81, 9.44, 'No Stock' , '2016-05-14') +,(4547, 603, 4 , 81.81, 9.44, 'No Stock' , '2016-05-14') +,(4548, 614, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4548, 611, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4548, 615, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4549, 605, 9 , 24.12, 7.26, 'No Stock' , '2016-08-22') +,(4549, 606, 7 , 6.19 , 4.68, 'Allocated', '2016-09-02') +,(4550, 609, 8 , 49.04, 7.62, 'On Order' , '2016-06-10') +,(4550, 610, 10, 92.51, 4.84, 'No Stock' , '2017-02-24') +,(4551, 601, 3 , 85.1 , 2.45, 'Allocated', '2016-07-08') +,(4551, 602, 3 , 69.43, 1.31, 'No Stock' , '2017-03-15') +,(4551, 610, 1 , 19.38, 8.43, 'No Stock' , '2016-11-09') +,(4552, 601, 2 , 91.69, 8.12, 'On Order' , '2016-06-03') +,(4552, 613, 3 , 41.15, 6.38, 'No Stock' , '2016-04-11') +,(4553, 603, 1 , 5.22 , 8.43, 'On Order' , '2016-10-28') +,(4554, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4555, 607, 6 , 77.16, 3.07, 'No Stock' , '2016-04-29') +,(4555, 612, 9 , 81.31, 9.81, 'On Order' , '2017-01-24') +,(4556, 615, 10, 65.81, 7.25, 'Allocated', '2016-11-07') +,(4557, 603, 1 , 5.01 , 4.57, 'No Stock' , '2016-09-05') +,(4557, 606, 3 , 29.35, 8.67, 'On Order' , '2016-09-14') +,(4558, 601, 3 , 29.62, 7.16, 'No Stock' , '2016-11-06') +,(4559, 620, 2 , 87.83, 7.93, 'On Order' , '2016-11-09') +,(4560, 610, 7 , 9.51 , 8.01, 'On Order' , '2016-08-22') +,(4561, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4562, 610, 9 , 15.1 , 6.8 , 'Allocated', '2016-08-27') +,(4562, 611, 3 , 71.09, 1.26, 'No Stock' , '2016-07-12') +,(4563, 618, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4564, 602, 2 , 6.68 , 6.29, 'Allocated', '2016-03-19') +,(4565, 603, 7 , 81.01, 2.82, 'Allocated', '2017-03-06') +,(4565, 606, 8 , 99.68, 6.28, 'No Stock' , '2016-04-27') +,(4566, 614, 7 , 57.79, 4.48, 'No Stock' , '2016-11-02') +,(4567, 604, 7 , 94.42, 5.46, 'No Stock' , '2016-05-18') +,(4567, 605, 1 , 61.75, 1.31, 'Allocated', '2016-04-14') +,(4567, 608, 10, 25.99, 4.85, 'On Order' , '2016-05-01') +,(4567, 620, 9 , 62.17, 4.66, 'Allocated', '2016-06-11') +,(4568, 606, 8 , 66.92, 1.1 , 'Allocated', '2016-10-02') +,(4568, 607, 10, 95.6 , 9.17, 'On Order' , '2016-05-04') +,(4568, 608, 6 , 81.57, 6.24, 'No Stock' , '2017-01-24') +,(4569, 601, 10, 96.56, 6.33, 'Allocated', '2016-07-22') +,(4570, 610, 6 , 98.15, 2.57, 'No Stock' , '2016-06-28') +,(4571, 604, 8 , 5.15 , 2.51, 'No Stock' , '2016-07-11') +,(4572, 603, 2 , 59.21, 2.46, 'Allocated', '2016-11-18') +,(4573, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4574, 615, 3 , 14.81, 9.61, 'On Order' , '2016-05-04') +,(4575, 608, 10, 79.25, 7.08, 'On Order' , '2016-11-19') +,(4575, 611, 10, 79.25, 7.08, 'On Order' , '2016-11-19') +,(4575, 615, 10, 79.25, 7.08, 'On Order' , '2016-11-19') +,(4576, 607, 7 , 31.78, 2.05, 'On Order' , '2016-03-17') +,(4576, 608, 7 , 31.78, 2.05, 'On Order' , '2016-03-17') +,(4576, 610, 7 , 31.78, 2.05, 'On Order' , '2016-03-17') +,(4577, 604, 5 , 92.54, 6.26, 'On Order' , '2016-04-22') +,(4577, 603, 5 , 92.54, 6.26, 'On Order' , '2016-04-22') +,(4577, 601, 5 , 92.54, 6.26, 'On Order' , '2016-04-22') +,(4578, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4578, 602, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4578, 603, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4579, 615, 10, 70.19, 5.85, 'No Stock' , '2016-09-11') +,(4579, 616, 10, 70.19, 5.85, 'No Stock' , '2016-09-11') +,(4579, 620, 10, 70.19, 5.85, 'No Stock' , '2016-09-11') +,(4580, 601, 1 , 15.44, 3.76, 'No Stock' , '2016-04-08') +,(4580, 603, 1 , 15.44, 3.76, 'No Stock' , '2016-04-08') +,(4580, 605, 1 , 15.44, 3.76, 'No Stock' , '2016-04-08') +,(4580, 609, 1 , 15.44, 3.76, 'No Stock' , '2016-04-08') +,(4581, 607, 8 , 42.4 , 9.73, 'On Order' , '2016-06-04') +,(4581, 610, 9 , 79.73, 3.87, 'On Order' , '2016-04-20') +,(4581, 611, 5 , 78.01, 3.65, 'On Order' , '2016-03-17') +,(4581, 616, 5 , 50.56, 5.24, 'No Stock' , '2016-07-06') +,(4582, 609, 7 , 65.99, 9.4 , 'No Stock' , '2016-05-22') +,(4582, 607, 7 , 65.99, 9.4 , 'No Stock' , '2016-05-22') +,(4582, 606, 7 , 65.99, 9.4 , 'No Stock' , '2016-05-22') +,(4583, 604, 9 , 19.92, 6.51, 'Allocated', '2016-04-13') +,(4583, 610, 1 , 19.4 , 8.3 , 'On Order' , '2016-12-08') +,(4584, 617, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4584, 620, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4584, 613, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4585, 602, 2 , 90.57, 2.52, 'Allocated', '2016-05-22') +,(4585, 610, 10, 44.26, 3.84, 'On Order' , '2016-12-27') +,(4586, 604, 2 , 56.61, 9.64, 'Allocated', '2017-02-23') +,(4586, 612, 7 , 24.24, 7.68, 'On Order' , '2016-04-04') +,(4587, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4587, 611, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4587, 612, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4588, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4588, 601, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4588, 602, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4589, 601, 5 , 52.25, 4.47, 'Allocated', '2016-07-02') +,(4589, 603, 9 , 72.27, 4.97, 'On Order' , '2016-04-03') +,(4590, 610, 3 , 46.2 , 6.71, 'Allocated', '2016-12-16') +,(4590, 615, 5 , 52.0 , 5.26, 'On Order' , '2016-06-01') +,(4591, 601, 1 , 96.52, 2.39, 'No Stock' , '2017-01-16') +,(4591, 605, 8 , 19.56, 9.68, 'On Order' , '2016-09-15') +,(4592, 609, 10, 30.76, 3.2 , 'No Stock' , '2016-05-02') +,(4592, 619, 1 , 48.47, 6.13, 'On Order' , '2016-07-19') +,(4593, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4593, 619, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4593, 620, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4594, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4594, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4594, 618, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4594, 620, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4595, 605, 1 , 50.28, 8.15, 'Allocated', '2017-02-19') +,(4595, 601, 1 , 50.28, 8.15, 'Allocated', '2017-02-19') +,(4595, 602, 1 , 50.28, 8.15, 'Allocated', '2017-02-19') +,(4596, 605, 6 , 95.17, 7.53, 'On Order' , '2016-09-11') +,(4596, 609, 10, 82.11, 4.38, 'No Stock' , '2016-11-17') +,(4597, 608, 9 , 96.25, 4.8 , 'No Stock' , '2016-07-02') +,(4597, 605, 9 , 96.25, 4.8 , 'No Stock' , '2016-07-02') +,(4597, 601, 9 , 96.25, 4.8 , 'No Stock' , '2016-07-02') +,(4598, 603, 5 , 69.02, 6.1 , 'No Stock' , '2016-12-23') +,(4598, 608, 5 , 69.02, 6.1 , 'No Stock' , '2016-12-23') +,(4598, 610, 5 , 69.02, 6.1 , 'No Stock' , '2016-12-23') +,(4599, 603, 9 , 40.91, 6.68, 'On Order' , '2016-12-27') +,(4599, 607, 9 , 40.91, 6.68, 'On Order' , '2016-12-27') +,(4599, 609, 9 , 40.91, 6.68, 'On Order' , '2016-12-27') +,(4600, 611, 5 , 22.93, 8.87, 'Allocated', '2016-06-16') +,(4600, 615, 5 , 22.93, 8.87, 'Allocated', '2016-06-16') +,(4600, 612, 5 , 22.93, 8.87, 'Allocated', '2016-06-16'); diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/logback.xml b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/logback.xml new file mode 100644 index 0000000..12fa9be --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/logback.xml @@ -0,0 +1,108 @@ + + + + + + + + + ${LOG_PATTERN} + + + + + ${APP_LOG_ROOT}/ExceptionLogs/Error.log + + ${LOG_PATTERN} + + + ${APP_LOG_ROOT}/ExceptionLogs/Error-%d{yyyy-MM-dd}.%i.log + 1 + 10 + + + 10MB + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/messages.properties b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/messages.properties new file mode 100644 index 0000000..b015c87 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/messages.properties @@ -0,0 +1,5 @@ + +email.notempty=Please provide valid email id. +email.valid=Email should be valid +email.regex=Enter a valid email +name.minsize=Name should have minimum 3 characters diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/note.txt b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/note.txt new file mode 100644 index 0000000..dd9fbe6 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/note.txt @@ -0,0 +1,57 @@ +HEADER-LINE FORM : + +GET: http://localhost:9119/api/teacher +GET: http://localhost:9119/api/teacher/{id} +PUT: http://localhost:9119/api/teacher/{id} +DELETE: http://localhost:9119/api/teacher/{id} : NEED TO MODIFY THE INCORRECT ID INPUT ERROR HANDLING +POST: http://localhost:9119/api/teacher +===EX1=== +{ + "name": "niladri", + "email": "sen.niladri6@gmail.com", + "phoneNumber": 6291, + "salary": 1000.0, + "students": [{ + "name": "paku", + "depertment": "CSE", + "rollNumber": 108 + }] +} +===EX2===: +{ + "name": "sandipan", + "email": "sandy@gmail.com", + "phoneNumber": 9038, + "salary": 2000.0, + "students": [ + { + "name": "sahil", + "depertment": "CSE", + "rollNumber": 111 + }, + { + "name": "tarun", + "depertment": "CSE", + "rollNumber": 121 + } + ] +} + +===== 6.11.36 +user.java class code changed +@Getter @Setter private List role; +TokenUtil class code change + +===== 9.11.20 +1.8 +=== SWAGGER UI ==== +http://localhost:9119/swagger-ui.html + +========= +GIT HUB COMMAND +========= +$ git commit -m "your mesage" +$ git push origin main +$ git status + +$ git push origin main diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/schema.sql b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/schema.sql new file mode 100644 index 0000000..573e44a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/schema.sql @@ -0,0 +1,303 @@ +/** + Model : NorthWind +**/ + +DROP SCHEMA IF EXISTS northwind; + +CREATE SCHEMA northwind; +USE northwind; + +/* Table: user (Application Users) */ +CREATE TABLE user ( + user_id NVARCHAR(20) NOT NULL, + password NVARCHAR(255) NOT NULL, + first_name NVARCHAR(50) , + last_name NVARCHAR(50) , + email NVARCHAR(70) , + security_provider_id INT , + default_customer_id INT , + company NVARCHAR(50) , + phone NVARCHAR(20) , + address1 NVARCHAR(100), + address2 NVARCHAR(100), + country NVARCHAR(20) , + postal NVARCHAR(20) , + role NVARCHAR(20) , + other_roles NVARCHAR(80) , + is_active TINYINT , + is_blocked TINYINT , + secret_question NVARCHAR(100), + secret_answer NVARCHAR(100), + enable_beta_testing TINYINT, + enable_renewal TINYINT, + CONSTRAINT user_id PRIMARY KEY(user_id) +); + +/* Table: customers */ +CREATE TABLE customers ( + id INT NOT NULL, + last_name VARCHAR(50) , + first_name VARCHAR(50) , + email VARCHAR(50) , + company VARCHAR(50) , + phone VARCHAR(25) , + address1 VARCHAR(150), + address2 VARCHAR(150), + city VARCHAR(50) , + state VARCHAR(50) , + postal_code VARCHAR(15) , + country VARCHAR(50) , + PRIMARY KEY (id) +); + +/* Table: employees */ +CREATE TABLE employees ( + id INT NOT NULL, + last_name VARCHAR(50) , + first_name VARCHAR(50) , + email VARCHAR(50) , + avatar VARCHAR(250) , + job_title VARCHAR(50) , + department VARCHAR(50) , + manager_id INT , + phone VARCHAR(25) , + address1 VARCHAR(150), + address2 VARCHAR(150), + city VARCHAR(50) , + state VARCHAR(50) , + postal_code VARCHAR(15) , + country VARCHAR(50) , + PRIMARY KEY (id) +); + +/* Table: orders */ +CREATE TABLE orders ( + id INT NOT NULL, + employee_id INT , + customer_id INT , + order_date DATETIME , + shipped_date DATETIME , + ship_name VARCHAR(50) , + ship_address1 VARCHAR(150) , + ship_address2 VARCHAR(150) , + ship_city VARCHAR(50) , + ship_state VARCHAR(50) , + ship_postal_code VARCHAR(50) , + ship_country VARCHAR(50) , + shipping_fee DECIMAL(19,4) NULL DEFAULT '0.0000', + payment_type VARCHAR(50) , + paid_date DATETIME , + order_status VARCHAR(25), + PRIMARY KEY (id) +); + +/* Table: order_details */ +CREATE TABLE order_items ( + order_id INT NOT NULL, + product_id INT , + quantity DECIMAL(18,4) NOT NULL DEFAULT '0.0000', + unit_price DECIMAL(19,4) NULL DEFAULT '0.0000', + discount DECIMAL(19,4) NULL DEFAULT '0.0000', + order_item_status VARCHAR(25), + date_allocated DATETIME , + PRIMARY KEY (order_id, product_id) +); + +/* Table: products */ +CREATE TABLE products ( + id INT NOT NULL, + product_code VARCHAR(25) , + product_name VARCHAR(50) , + description VARCHAR(250), + standard_cost DECIMAL(19,4) NULL DEFAULT '0.0000', + list_price DECIMAL(19,4) NOT NULL DEFAULT '0.0000', + target_level INT , + reorder_level INT , + minimum_reorder_quantity INT , + quantity_per_unit VARCHAR(50) , + discontinued TINYINT NOT NULL DEFAULT '0', + category VARCHAR(50), + PRIMARY KEY (id) +); + + +/* Foreign Key: orders */ +ALTER TABLE orders ADD CONSTRAINT fk_orders__customers FOREIGN KEY (customer_id) REFERENCES customers(id); +ALTER TABLE orders ADD CONSTRAINT fk_orders__employees FOREIGN KEY (employee_id) REFERENCES employees(id); +/* Foreign Key: order_items */ +ALTER TABLE order_items ADD CONSTRAINT fk_order_items__orders FOREIGN KEY (order_id) REFERENCES orders(id); +ALTER TABLE order_items ADD CONSTRAINT fk_order_items__products FOREIGN KEY (product_id) REFERENCES products(id); + +/* Views */ +CREATE OR REPLACE VIEW order_info AS +select o.id as order_id + , o.order_date + , o.order_status + , o.paid_date + , o.payment_type + , o.shipped_date + , o.shipping_fee + , o.ship_name + , o.ship_address1 + , o.ship_address2 + , o.ship_city + , o.ship_state + , o.ship_postal_code + , o.ship_country + , o.customer_id + , o.employee_id + , concat(c.first_name, ' ', c.last_name) as customer_name + , c.phone customer_phone + , c.email customer_email + , c.company as customer_company + , concat(e.first_name, ' ', e.last_name) as employee_name + , e.department employee_department + , e.job_title employee_job_title + From orders o + , employees e + , customers c + where o.employee_id = e.id + and o.customer_id = c.id; + +CREATE OR REPLACE VIEW order_details AS +select oi.order_id + , oi.product_id + , oi.quantity + , oi.unit_price + , oi.discount + , oi.date_allocated + , oi.order_item_status + , o.order_date + , o.order_status + , o.paid_date + , o.payment_type + , o.shipped_date + , o.shipping_fee + , o.ship_name + , o.ship_address1 + , o.ship_address2 + , o.ship_city + , o.ship_state + , o.ship_postal_code + , o.ship_country + , p.product_code + , p.product_name + , p.category + , p.description + , p.list_price + , o.customer_id + , concat(c.first_name, ' ', c.last_name) as customer_name + , c.phone as customer_phone + , c.email as customer_email + , c.company as customer_company + , o.employee_id + , concat(e.first_name, ' ', e.last_name) as employee_name + , e.department as employee_department + , e.job_title as employee_job_title + From orders o + , products p + , order_items oi + , employees e + , customers c + where oi.order_id = o.id + and oi.product_id = p.id + and o.employee_id = e.id + and o.customer_id = c.id; + +CREATE OR REPLACE VIEW customer_orders AS +select o.order_date, o.order_status, o.paid_date, o.payment_type, o.shipping_fee, o.customer_id + , c.first_name customer_first_name, c.last_name customer_last_name, c.phone customer_phone, c.email customer_email, c.company + from orders o,customers c + where o.customer_id = c.id; + +CREATE OR REPLACE VIEW employee_orders AS +select o.order_date, o.order_status, o.paid_date, o.payment_type, o.shipping_fee, o.employee_id + , e.first_name employee_first_name, e.last_name employee_last_name, e.email employee_email, e.department + from orders o,employees e + where o.customer_id = e.id; + + + /* REAL_NET */ + CREATE TABLE RN_INSTRUCTOR ( + ID VARCHAR(20) NOT NULL AUTO_INCREMENT, + FIRST_NAME VARCHAR(20) NOT NULL, + LAST_NAME VARCHAR(20) NOT NULL, + EMAIL VARCHAR(20) NOT NULL, + CREATED_AT DATETIME, + UPDATED_AT DATETIME, + PRIMARY KEY (id) + ); + + /*==== EXTENSION FIELD ===*/ + CREATE TABLE RN_EXT_FIELD_T ( + ID int(11) NOT NULL AUTO_INCREMENT, + TYPE VARCHAR(20), + DATA_TYPE VARCHAR(20), + FIELD_NAME VARCHAR(20), + MAPPING VARCHAR(20), + FORM_CODE VARCHAR(20), + IS_ACTIVE BOOLEAN, + ACCOUNT_ID VARCHAR(20), + CREATED_AT DATETIME, + UPDATED_AT DATETIME, + CREATED_BY VARCHAR(20), + UPDATED_BY VARCHAR(20), + PRIMARY KEY (ID) +); + +/*========= lookup ======== +CREATE TABLE `rn_lookup_values_t` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `LOOKUP_CODE` longtext, + `MEANING` longtext, + `DESCRIPTION` longtext, + `LOOKUP_TYPE` longtext, + `ACTIVE_START_DATE` datetime DEFAULT NULL, + `ACTIVE_END_DATE` datetime DEFAULT NULL, + `ENABLED_FLAG` longtext, + `CREATED_BY` int(11) DEFAULT NULL, + `CREATION_DATE` datetime DEFAULT NULL, + `LAST_UPDATED_BY` int(11) DEFAULT NULL, + `LAST_UPDATE_DATE` datetime DEFAULT NULL + PRIMARY KEY (`ID`) +); */ + + + +/*========= LOGGING ======== + +DROP TABLE logging_event_exception IF EXISTS; +DROP TABLE logging_event_property IF EXISTS; +DROP TABLE logging_event IF EXISTS; + +CREATE TABLE logging_event ( + timestmp BIGINT NOT NULL, + formatted_message LONGVARCHAR NOT NULL, + logger_name VARCHAR(256) NOT NULL, + level_string VARCHAR(256) NOT NULL, + thread_name VARCHAR(256), + reference_flag SMALLINT, + arg0 VARCHAR(256), + arg1 VARCHAR(256), + arg2 VARCHAR(256), + arg3 VARCHAR(256), + caller_filename VARCHAR(256), + caller_class VARCHAR(256), + caller_method VARCHAR(256), + caller_line CHAR(4), + event_id IDENTITY NOT NULL); + + +CREATE TABLE logging_event_property ( + event_id BIGINT NOT NULL, + mapped_key VARCHAR(254) NOT NULL, + mapped_value LONGVARCHAR, + PRIMARY KEY(event_id, mapped_key), + FOREIGN KEY (event_id) REFERENCES logging_event(event_id)); + +CREATE TABLE logging_event_exception ( + event_id BIGINT NOT NULL, + i SMALLINT NOT NULL, + trace_line VARCHAR(256) NOT NULL, + PRIMARY KEY(event_id, i), + FOREIGN KEY (event_id) REFERENCES logging_event(event_id)); */ \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/maven-archiver/pom.properties b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/maven-archiver/pom.properties new file mode 100644 index 0000000..18b0177 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/maven-archiver/pom.properties @@ -0,0 +1,3 @@ +groupId=com.realnet +artifactId=app +version=1.0.0 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..bfa96cf --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,337 @@ +com/realnet/test/Controllers/Tesr1Controller.class +com/realnet/Rpt_builder/Services/Rpt_builder_Service.class +com/realnet/fnd/repository/RnGroupLineRepository.class +com/realnet/fnd/entity/Rn_Ext_Fields.class +com/realnet/Builders/Entity/Builder_entity_t.class +com/realnet/config/EmailService.class +com/realnet/users/entity1/AppUserLoginHist.class +com/realnet/userDTO/User.class +com/realnet/fnd/controller/Rn_DynamicTransactionController.class +com/realnet/Dashboard_builder/Controllers/Dashboard_builder_Controller.class +com/realnet/users/entity/Sys_Accounts.class +com/realnet/utils/Port_Constant.class +com/realnet/users/entity/Login.class +com/realnet/Builders/Repos/BuilderRepository.class +com/realnet/logging/NoLogging.class +com/realnet/Billing/Dto/ApprovalNote_SO.class +com/realnet/Rpt_builder2/Repository/Rpt_builder2_Repository.class +com/realnet/SequenceGenerator/repo/SeqRepo.class +com/realnet/fnd/response/Rn_Menu_Register_Response.class +com/realnet/fnd/entity/Rn_Forms_Component_Setup.class +com/realnet/Dashboard_builder/Services/DashboardSchedule_Service.class +com/realnet/Notification/Entity/NotificationService.class +com/realnet/Dashboard_builder/Entity/DashboardSchedule_t.class +com/realnet/logging1/controller/AppUserLogController$3.class +com/realnet/fnd/response/Rn_Forms_SetupResponse.class +com/realnet/Payment/Razorpay/RazorpayDTO.class +com/realnet/fnd/controller/MainController.class +com/realnet/config/JWTConstant.class +com/realnet/fnd/controller/Rn_Forms_Setup_Controller.class +com/realnet/report_builder/Entity/Rp_Who_collumn.class +com/realnet/api_registery/Services/Api_registery_headerService.class +com/realnet/fnd/service/Rn_Menu_Register_Service.class +com/realnet/RealNetApp.class +com/realnet/Billing/Dto/ServiceOrderDto.class +com/realnet/utils/WireFrameConstant.class +com/realnet/fnd/entity/WireFrameCopyDTO.class +com/realnet/Rpt_builder2_lines/Entity/Rpt_builder2_lines_t.class +com/realnet/userlist/repository/UserImageRepository.class +com/realnet/Dashboard_builder/Repository/DashboardSchedule_Repository.class +com/realnet/Billing/Controllers/ApprovalHistory_Controller.class +com/realnet/test/Repository/Tesr1Repository.class +com/realnet/userDTO/Sys_Accounts.class +com/realnet/report_builder/Repository/Rp_lineRepository.class +com/realnet/SequenceGenerator/Controller/SequenceController.class +com/realnet/SequenceGenerator/Service/SequenceService.class +com/realnet/Billing/Job/Repository/BillingJobRepository.class +com/realnet/fnd/repository/Rn_Main_Menu_Repository.class +com/realnet/fnd/service/RnGroupMenuLineServiec.class +com/realnet/fnd/service/Rn_DynamicTransactionService.class +com/realnet/fnd/repository/Rn_Menu_Group_Repository.class +com/realnet/fnd/entity1/MenuDet.class +com/realnet/users/controller1/AppUserGrpController.class +com/realnet/users/entity/EmailRequest.class +com/realnet/users/service1/AppUserRoleServiceImpl.class +com/realnet/fnd/entity/Rn_Lookup_Values.class +com/realnet/api_registery/Repository/Api_registery_lineRepository.class +com/realnet/users/entity1/AppUserSessionsCompositeKey.class +com/realnet/logging1/SessionConverter.class +com/realnet/users/repository/RoleRepo.class +com/realnet/fnd/entity/Rn_AuditEntity.class +com/realnet/users/entity/UserProfileDTO.class +com/realnet/FromExtensionJson/Entity/FromExtensionJson_t.class +com/realnet/users/entity1/SignUp.class +com/realnet/users/entity1/AppUserPasswlog.class +com/realnet/Payment/Paytm/PaytmPayment.class +com/realnet/userlist/entity/UserImage.class +com/realnet/userDTO/PasswordResetRequest.class +com/realnet/userlist/controller/UserListController.class +com/realnet/Billing/Controllers/ApprovalQueue_Controller.class +com/realnet/fnd/controller/Rn_ExtensionController.class +com/realnet/test/Entity/Tesr1.class +com/realnet/users/entity/Email.class +com/realnet/fnd/response/PageResponse.class +com/realnet/users/entity/GenericResponse.class +com/realnet/fnd/repository/LookUpRepository.class +com/realnet/fnd/repository1/GrpMenuAccessRepository.class +com/realnet/FromExtensionJson/Services/FromExtensionJson_Service.class +com/realnet/config/CorsFilter.class +com/realnet/users/repository/AboutWorkRepo.class +com/realnet/logging1/repository/AppUserLogginRepository.class +com/realnet/users/entity/ERole.class +com/realnet/fnd/entity/Rn_Function_Register.class +com/realnet/fnd/service/RnGroupMenuLineServiecImpl.class +com/realnet/Dashboard1/Entity/Dashbord_Header.class +com/realnet/fnd/controller/Rn_Menu_Group_Controller.class +com/realnet/Billing/Repositorys/ApprovalHistory_Repository.class +com/realnet/FileUpload/Controllers/UploadeddocsController.class +com/realnet/FromExtensionJson/Controllers/FromExtensionJson_Controller.class +com/realnet/fnd/entity/Rn_Menu_Group_Header.class +com/realnet/dashboard_builder_authsec/Entity/who_column.class +com/realnet/fnd/service/Rn_Function_Register_Service.class +com/realnet/fnd/controller1/TokenFreeController.class +com/realnet/logging/LogExecutionTime.class +com/realnet/config/SecurityConfig.class +com/realnet/Billing/Repositorys/ApprovalReturnHistory_Repo.class +com/realnet/users/controller1/AppUserController.class +com/realnet/test/Services/Test1Service.class +com/realnet/fnd/service1/GrpMenuAccessServiceImpl.class +com/realnet/fnd/controller1/MenuController.class +com/realnet/users/service/AboutWorkService.class +com/realnet/users/response/UserResponse.class +com/realnet/fnd/entity/Rn_Main_Menu.class +com/realnet/Builders/Services/BuilderService.class +com/realnet/api_registery/Entity/Token_registery.class +com/realnet/Dashboard_builder/Controllers/DashboardSchedule_Controller.class +com/realnet/Billing/Entitys/CustomerRates_t.class +com/realnet/Rpt_builder/Controllers/Rpt_builder_Controller.class +com/realnet/Dashboard1/Controller/Dashbord1Controller.class +com/realnet/fnd/entity/Success.class +com/realnet/Payment/Razorpay/RazorpayRepo.class +com/realnet/users/repository/CompanyRepo.class +com/realnet/api_registery/Services/Api_registery_lineService.class +com/realnet/Billing/Job/Entity/BillingJobEntity.class +com/realnet/Notification/Entity/NotEntity.class +com/realnet/Rpt_builder/Entity/Rpt_builder_t.class +com/realnet/users/repository1/AppUserRepository.class +com/realnet/fnd/entity/Version.class +com/realnet/Dashboard1/Service/HeaderService.class +com/realnet/fnd/service/Rn_Menu_Group_Service.class +com/realnet/report_builder/Repository/ReportRepository.class +com/realnet/userDTO/UserDto.class +com/realnet/fnd/entity1/ExtensionModel.class +com/realnet/fnd/service/FileStorageService.class +com/realnet/logging1/service/LoggingService.class +com/realnet/report_builder/Entity/ReportQueryDataDTO.class +com/realnet/exceptions/StorageException.class +com/realnet/Dashboard1/Entity/Dashbord1_Line.class +com/realnet/fnd/entity/Rn_Sub_Menu.class +com/realnet/fnd/service/Rn_Function_Register_ServiceImpl.class +com/realnet/users/entity/LoginUser.class +com/realnet/users/service1/PositionAndDepartmentServiceImpl.class +com/realnet/dashboard_builder_authsec/Entity/Extension.class +com/realnet/fnd/repository/Rn_LookUpRepository.class +com/realnet/fnd/response/Rn_Menu_Group_Response.class +com/realnet/Billing/Dto/BillingPeriodsResponse.class +com/realnet/fnd/repository/Rn_DynamicTransactionRepository.class +com/realnet/FileUpload/Services/UploadedFileService.class +com/realnet/utils/Constant.class +com/realnet/fnd/service/Rn_Menu_Group_ServiceImpl.class +com/realnet/users/entity1/AppUser_who_column.class +com/realnet/users/controller1/PositonAndDepartmentController.class +com/realnet/fnd/controller/Rn_Menu_Register_Controller.class +com/realnet/api_registery/Services/GeneratetokenService.class +com/realnet/session/entity/AboutWork.class +com/realnet/users/controller/UserController.class +com/realnet/api_registery/Entity/Api_registery_header.class +com/realnet/userDTO/UserProfileDTO.class +com/realnet/api_registery/Controllers/Api_registery_headerController.class +com/realnet/api_registery/Controllers/GeneratetokenController.class +com/realnet/Dashboard1/Repository/Dashboard_lineRepository.class +com/realnet/SequenceGenerator/Entity/Sequence.class +com/realnet/test/Services/Tesr1Service.class +com/realnet/config/JwtAuthenticationEntryPoint.class +com/realnet/test/Entity/Test1.class +com/realnet/users/response/ServiceResponse.class +com/realnet/fnd/entity/Rn_Menu_Group_Line.class +com/realnet/users/entity/CompanyDto.class +com/realnet/logging/LogEntity.class +com/realnet/FileUpload/Entity/who_column.class +com/realnet/Notification/Repository/NotRepo.class +com/realnet/fnd/entity/DropDownDTO.class +com/realnet/userDTO/LoginUser.class +com/realnet/Payment/Paytm/AppConfig.class +com/realnet/fnd/service/ExtFieldServiceImpl.class +com/realnet/users/controller1/SysAccountController.class +com/realnet/fnd/entity/Rn_Forms_Setup.class +com/realnet/fnd/service/Rn_Forms_Setup_Service.class +com/realnet/users/entity1/AppUserDto.class +com/realnet/Billing/Dto/ServiceWithDiscount.class +com/realnet/config/AppConfig.class +com/realnet/fnd/entity/Rn_Instance_Type.class +com/realnet/config/SwaggerConfig.class +com/realnet/Rpt_builder2/Controllers/Rpt_builder2_Controller.class +com/realnet/fnd/entity/Rn_Who_AccId_Column.class +com/realnet/fnd/repository/Rn_InstanceTypeRepository.class +com/realnet/users/entity/RoleUpdateDto.class +com/realnet/fnd/entity/ProjectMini.class +com/realnet/exceptions/InvalidUserDataException.class +com/realnet/fnd/entity/ErrorPojo.class +com/realnet/config/MessageSourceConfig.class +com/realnet/Rpt_builder2/Controllers/RpDownloadController.class +com/realnet/Notification/Controller/NotController.class +com/realnet/FileUpload/Repository/UploadFileRepository.class +com/realnet/users/service1/AppUserSessionsServiceImpl.class +com/realnet/WhoColumn/Who_column.class +com/realnet/fnd/repository/ExtFieldRepository.class +com/realnet/Billing/Dto/ApprovalQueue_SO.class +com/realnet/users/entity1/AppUser.class +com/realnet/fnd/entity/Rn_FlexEntity.class +com/realnet/Dashboard1/Entity/dashbord_Who_collumn.class +com/realnet/Billing/Services/ApprovalQueueService.class +com/realnet/Rpt_builder/Controllers/FileConverterController.class +com/realnet/WhoColumn/Extension.class +com/realnet/dashboard_builder_authsec/Entity/Dashboard.class +com/realnet/users/response/MessageResponse.class +com/realnet/Billing/Repositorys/ApprovalQueue_Repository.class +com/realnet/fnd/service/ExtFieldService.class +com/realnet/test/Repository/Test1Repository.class +com/realnet/users/entity/PasswordResetRequest.class +com/realnet/api_registery/Entity/Api_registery_line.class +com/realnet/fnd/response/Rn_Main_Menu_Response.class +com/realnet/session/entity/SessionItem.class +com/realnet/Rpt_builder2_lines/Services/Rpt_builder2_lines_Service.class +com/realnet/test/Repository/Api_registeryRepository.class +com/realnet/userDTO/Provider.class +com/realnet/fnd/repository/Rn_Forms_Setup_Repository.class +com/realnet/logging/LoggingAspect.class +com/realnet/Billing/Services/ApprovalHistory_Service.class +com/realnet/userDTO/Role.class +com/realnet/userDTO/RoleUpdateDto.class +com/realnet/fnd/entity/Rn_Dynamic_Transaction.class +com/realnet/config/TokenProvider.class +com/realnet/fnd/response/Rn_Function_Register_Response.class +com/realnet/Rpt_builder/Repository/Rpt_builder_Repository.class +com/realnet/fnd/entity/SuccessPojo.class +com/realnet/fnd/repository/Rn_Menu_Register_Repository.class +com/realnet/fnd/entity1/MIXMENUN.class +com/realnet/Dashboard_builder/Services/Dashboard_builder_Service.class +com/realnet/users/entity1/AppUserPosition.class +com/realnet/fnd/service1/MenuDetServiceImpl.class +com/realnet/dashboard_builder_authsec/Services/DashboardService.class +com/realnet/session/entity/VersionModel.class +com/realnet/fnd/controller/Rn_Function_Register_Controller.class +com/realnet/users/service/RoleService.class +com/realnet/test/Services/Api_registeryService.class +com/realnet/dashboard_builder_authsec/Repository/DashboardRepository.class +com/realnet/fnd/repository1/MenuDetRepository.class +com/realnet/Dashboard1/Repository/HeaderRepository.class +com/realnet/exceptions/ResourceNotFoundException.class +com/realnet/fnd/entity/Error.class +com/realnet/fnd/entity/Rn_Who_Columns.class +com/realnet/logging1/controller/AppUserLogController.class +com/realnet/Payment/Razorpay/RazorpayDTO$RazorpayDTOBuilder.class +com/realnet/fnd/entity/projectCopyDTO.class +com/realnet/users/repository1/AppUserDepartmentRepository.class +com/realnet/Dashboard_builder/Controllers/ChartBuilder.class +com/realnet/FileUpload/Services/FileuploadService.class +com/realnet/userlist/service/impl/UserListServiceImpl.class +com/realnet/logging1/controller/AppUserLogController$6.class +com/realnet/fnd/response/SingleDataSeriseResponse.class +com/realnet/fnd/entity/Rn_Menu_Register.class +com/realnet/Rpt_builder2_lines/Controllers/Rpt_builder2_lines_Controller.class +com/realnet/users/repository1/AppUserPositionRepository.class +com/realnet/Billing/Entitys/ApprovalHistory_t.class +com/realnet/logging1/PatternLayoutWithUserContext.class +com/realnet/users/entity/PasswordResetToken.class +com/realnet/Gaurav_testing/Controllers/Gaurav_testing_Controller.class +com/realnet/userDTO/Rn_Who_Columns.class +com/realnet/users/entity1/AppUserPasswlogCompositeKey.class +com/realnet/Gaurav_testing/Repository/Gaurav_testing_Repository.class +com/realnet/test/Controllers/Api_registeryController.class +com/realnet/fnd/entity1/menudet_who.class +com/realnet/users/repository/SysAccountRepo.class +com/realnet/fnd/entity/SingleSerise.class +com/realnet/fnd/controller/Rn_Main_Menu_Controller.class +com/realnet/fnd/entity1/MixMenuNew.class +com/realnet/logging1/UserConverter.class +com/realnet/fnd/controller/Rn_Menu_Group_Line_Controller.class +com/realnet/fnd/service/Rn_DynamicTransactionServiceImpl.class +com/realnet/report_builder/Entity/Rp_builder.class +com/realnet/logging1/controller/AppUserLogController$5.class +com/realnet/users/service1/AppUserService.class +com/realnet/fnd/controller1/LoadMenuController.class +com/realnet/fnd/response/OperationResponse.class +com/realnet/logging1/entity/AppUserLog.class +com/realnet/fnd/entity1/GrpMenuAccess.class +com/realnet/users/entity/Role.class +com/realnet/userlist/entity/UserList.class +com/realnet/dashboard_builder_authsec/Controllers/DashboardController.class +com/realnet/api_registery/Controllers/Api_registery_lineController.class +com/realnet/users/controller/RoleController.class +com/realnet/logging1/controller/AppUserLogController2.class +com/realnet/userDTO/Email.class +com/realnet/fnd/entity/Rn_ExtensionEntity.class +com/realnet/logging1/controller/AppUserLogController$4.class +com/realnet/session/controller/SessionController.class +com/realnet/fnd/service/Rn_Forms_Setup_ServiceImpl.class +com/realnet/users/service1/AppUserServiceImpl.class +com/realnet/fnd/service1/SecmenuDetailService.class +com/realnet/Dashboard_builder/Entity/Dashboard_builder_t.class +com/realnet/utils/WireFrameConstant$FormType.class +com/realnet/logging/SecurityNoLogging.class +com/realnet/Dashboard_builder/Repository/Dashboard_builder_Repository.class +com/realnet/users/repository1/passwordTokenRepository.class +com/realnet/users/service/AboutServiceImple.class +com/realnet/logging1/controller/AppUserLogController$1.class +com/realnet/users/repository1/AppUserRoleRepository.class +com/realnet/users/service/CompanyService.class +com/realnet/session/response/SessionResponse.class +com/realnet/Gaurav_testing/Services/Gaurav_testing_Service.class +com/realnet/userDTO/CompanyDto.class +com/realnet/report_builder/Service/Report_builderService.class +com/realnet/Billing/Entitys/BillingPeriods_t.class +com/realnet/report_builder/Controller/Report_buildercontroller.class +com/realnet/users/entity/UserDto.class +com/realnet/Gaurav_testing/Entity/Gaurav_testing_t.class +com/realnet/fnd/repository/Rn_Function_Register_Repository.class +com/realnet/fnd/service/Rn_Main_Menu_ServiceImpl.class +com/realnet/api_registery/Repository/Api_registery_headerRepository.class +com/realnet/api_registery/Repository/Token_registery_Repository.class +com/realnet/FromExtensionJson/Repository/FromExtensionJson_Repository.class +com/realnet/config/JwtAuthenticationFilter.class +com/realnet/logging1/controller/AppUserLogController$2.class +com/realnet/users/service/RoleServiceImpl.class +com/realnet/report_builder/Entity/Rp_Line.class +com/realnet/users/repository1/AppUserSessionsRepository.class +com/realnet/userDTO/Rn_Who_AccId_Column.class +com/realnet/users/controller1/AppuserSessionController.class +com/realnet/users/entity1/AppUserPrinciple.class +com/realnet/fnd/entity1/MixMenu.class +com/realnet/userlist/repository/UserListRepository.class +com/realnet/fnd/entity/ModuleCopyDTO.class +com/realnet/Rpt_builder2/Controllers/ReportHtmlController.class +com/realnet/fnd/entity1/GrpMenuAccesscompositeKey.class +com/realnet/users/entity1/AppUserSessions.class +com/realnet/Rpt_builder2/Services/Rpt_builder2_Service.class +com/realnet/userlist/service/UserListService.class +com/realnet/fnd/response/Rn_DynamicTransactionResponse.class +com/realnet/Rpt_builder2/Entity/Rpt_builder2_t.class +com/realnet/test/Entity/Api_registery.class +com/realnet/users/entity1/AppUserRole.class +com/realnet/Rpt_builder2_lines/Repository/Rpt_builder2_lines_Repository.class +com/realnet/FileUpload/Entity/Uploadeddocs.class +com/realnet/userDTO/Login.class +com/realnet/fnd/response/EntityResponse.class +com/realnet/users/response/UserItem.class +com/realnet/config/MyCommandLineRunner.class +com/realnet/fnd/entity/Modulemini.class +com/realnet/Payment/Razorpay/RazorpayController.class +com/realnet/users/entity1/AppUserDepartment.class +com/realnet/fnd/response/CustomResponse.class +com/realnet/test/Controllers/Test1Controller.class +com/realnet/userDTO/EmailRequest.class +com/realnet/fnd/service/Rn_Menu_Register_ServiceImpl.class +com/realnet/fnd/response/OperationResponse$ResponseStatusEnum.class +com/realnet/users/entity1/Registration.class +com/realnet/fnd/service/Rn_Main_Menu_Service.class diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..3f4020e --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,345 @@ +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_Function_Register_Repository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Who_AccId_Column.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Entity/DashboardSchedule_t.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/config/TokenProvider.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Menu_Group_Line_Controller.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Paytm/PaytmPageController.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/PasswordResetRequest.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Repository/DashboardSchedule_Repository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository/SysAccountRepo.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Services/Api_registery_lineService.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/AppUserServiceImpl.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Entity/Api_registery_header.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Sub_Menu.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/AppUserPositionRepository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_DynamicTransactionResponse.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Repositorys/ApprovalHistory_Repository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2_lines/Entity/Rpt_builder2_lines_t.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/AppUserSessionsRepository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Services/FileuploadService.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/exceptions/StorageException.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Dto/ServiceOrderDto.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/FromExtensionJson/Services/FromExtensionJson_Service.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/RoleUpdateDto.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Notification/Repository/NotRepo.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Function_Register_Controller.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Menu_Group_Header.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller1/MenuController.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Services/UploadedFileService.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Repositorys/ApprovalQueue_Repository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/dashboard_builder_authsec/Repository/DashboardRepository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/session/entity/AboutWork.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Gaurav_testing/Controllers/Gaurav_testing_Controller.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/FromExtensionJson/Entity/FromExtensionJson_t.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Api/Controllers/ServiceOrderApiController.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/repository/AppUserLogginRepository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/GrpMenuAccesscompositeKey.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/response/MessageResponse.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Dto/ServiceWithDiscount.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_Function_Register_Response.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Entitys/CustomerRates_t.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/config/CorsFilter.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/dashboard_builder_authsec/Entity/Dashboard.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Login.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Error.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/LookUpRepository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/AboutServiceImple.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/config/SwaggerConfig.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/AppUserDepartmentRepository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/MenuDet.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/User.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2_lines/Controllers/Rpt_builder2_lines_Controller.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_InstanceTypeRepository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/test/Controllers/Tesr1Controller.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserDto.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Forms_Setup_Service.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/RoleServiceImpl.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/response/ServiceResponse.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/PdfService.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Forms_Setup_ServiceImpl.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/UserProfileDTO.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Builders/Services/BuilderService.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Services/EmailGenerateService.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/RealNetApp.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/test/Services/Api_registeryService.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Forms_Setup.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/config/HttpLoggingFilter.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/Sys_Accounts.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/utils/WireFrameConstant.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Rn_Who_Columns.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/PasswordResetToken.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/RoleUpdateDto.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Repository/Token_registery_Repository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/test/Entity/Api_registery.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Lookup_Values.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller1/TokenFreeController.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/ProjectMini.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Instance_Type.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Gaurav_testing/Services/Gaurav_testing_Service.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserPosition.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/exceptions/ResourceNotFoundException.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Menu_Register.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserLoginHist.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Menu_Register_ServiceImpl.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Main_Menu_ServiceImpl.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/session/entity/VersionModel.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Provider.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Role.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/SequenceGenerator/Entity/Sequence.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/Role.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/UserDto.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/config/MyCommandLineRunner.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/AppUserService.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/FromExtensionJson/Controllers/FromExtensionJson_Controller.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder/Controllers/Rpt_builder_Controller.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Controllers/Api_registery_headerController.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/session/controller/SessionController.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_AuditEntity.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/SingleSerise.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/entity/UserImage.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Service/Report_builderService.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Controllers/Rpt_builder2_Controller.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/dashboard_builder_authsec/Entity/Extension.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_DynamicTransactionController.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Controllers/RpDownloadController.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/EmailRequest.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUser_who_column.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/service/UserListService.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/LoginUser.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Function_Register_Service.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Notification/Entity/NotificationService.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Gaurav_testing/Entity/Gaurav_testing_t.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Services/GeneratetokenService.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller/UserController.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2_lines/Repository/Rpt_builder2_lines_Repository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Controllers/Api_registery_lineController.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/test/Controllers/Test1Controller.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Entity/Uploadeddocs.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/repository/UserImageRepository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/AppUserSessionsServiceImpl.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/FromExtensionJson/Repository/FromExtensionJson_Repository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/PageResponse.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Services/ApprovalQueueService.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/PatternLayoutWithUserContext.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/config/JWTConstant.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_DynamicTransactionRepository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Razorpay/RazorpayController.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository/UserRepo.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/AppuserSessionController.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/ExtFieldService.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/exceptions/InvalidUserDataException.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserDepartment.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Dto/BillingPeriodsResponse.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserSessions.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/MainController.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/GenericResponse.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/ModuleCopyDTO.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Razorpay/RazorpayRepo.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Main_Menu.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Who_Columns.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/AppUserGrpController.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/test/Services/Test1Service.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Dto/ApprovalQueue_SO.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/SequenceGenerator/Controller/SequenceController.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/AppUserRepository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Rn_Who_AccId_Column.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/ChartBuilder.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/EmailGenerate.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Entity/Rpt_builder2_t.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/ExtensionModel.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/ExtFieldServiceImpl.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Services/Dashboard_builder_Service.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/UserConverter.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/AppUserRoleServiceImpl.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/test/Repository/Tesr1Repository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/CompanyService.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_FlexEntity.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_Menu_Group_Repository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_Main_Menu_Response.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Entity/Rp_Who_collumn.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/RnGroupLineRepository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/OperationResponse.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Entity/Rp_builder.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/EntityResponse.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/repository/UserListRepository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Services/Api_registery_headerService.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Entity/Dashbord1_Line.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/GrpMenuAccess.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/MixMenu.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/PdfController.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/SysAccountController.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller1/LoadMenuController.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Repository/Dashboard_builder_Repository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Job/Controller/BillingJobServiceController.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/PositonAndDepartmentController.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Email.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Dto/ApprovalNote_SO.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service1/SecmenuDetailService.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2_lines/Services/Rpt_builder2_lines_Service.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_Main_Menu_Repository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/session/entity/SessionItem.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/Dashboard_builder_Controller.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Menu_Group_Controller.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/dashboard_builder_authsec/Entity/who_column.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Repository/ReportRepository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/logging/LogExecutionTime.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Ext_Fields.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Job/Repository/BillingJobRepository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Job/Service/BillingJobService.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/LoginUser.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Main_Menu_Controller.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Controllers/ApprovalQueue_Controller.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Function_Register.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/test/Repository/Api_registeryRepository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/dashboard_builder_authsec/Controllers/DashboardController.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_Menu_Group_Response.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/logging/SecurityNoLogging.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/FileStorageService.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/SequenceGenerator/repo/SeqRepo.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Repository/UploadFileRepository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Repository/HeaderRepository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_DynamicTransactionService.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Menu_Group_ServiceImpl.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Repository/Rp_lineRepository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/ExceptionLoggingController.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/SequenceGenerator/Service/SequenceService.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/config/EmailService.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/config/SecurityConfig.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Entity/dashbord_Who_collumn.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/logging/NoLogging.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/DashboardSchedule_Controller.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository/RoleRepo.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_LookUpRepository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/WorkSpaceController1.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_Forms_Setup_Repository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Main_Menu_Service.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Repositorys/ApprovalReturnHistory_Repo.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Repository/Dashboard_lineRepository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Entity/Dashbord_Header.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Entity/Rp_Line.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/AboutWorkService.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Gaurav_testing/Repository/Gaurav_testing_Repository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/Email.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/passwordTokenRepository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Menu_Register_Controller.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Entity/Api_registery_line.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/CustomUserDetails.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service1/MenuDetServiceImpl.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/test/Entity/Tesr1.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_Forms_SetupResponse.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Entity/Token_registery.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository1/GrpMenuAccessRepository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Function_Register_ServiceImpl.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Entity/ReportQueryDataDTO.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/WhoColumn/Extension.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/PositionAndDepartmentServiceImpl.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Dynamic_Transaction.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder/Controllers/FileConverterController.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/UserDto.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository1/MenuDetRepository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/config/AppConfig.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserPasswlog.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/service/LoggingService.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/utils/Constant.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/WhoColumn/Who_column.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Repository/Api_registery_lineRepository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_Menu_Register_Repository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/MIXMENUN.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserPrinciple.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/session/response/SessionResponse.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Paytm/PaytmPayment.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Entity/Dashboard_builder_t.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/config/JwtAuthenticationFilter.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/UserProfileDTO.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/projectCopyDTO.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/menudet_who.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/logging/LogEntity.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder/Services/Rpt_builder_Service.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Repository/Api_registery_headerRepository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/CompanyDto.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Controllers/ReportHtmlController.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/config/MessageSourceConfig.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/utils/Port_Constant.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/controller/AppUserLogController2.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Controller/Report_buildercontroller.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Notification/Controller/NotController.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/SingleDataSeriseResponse.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/PasswordResetRequest.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserSessionsCompositeKey.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/config/JwtAuthenticationEntryPoint.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/CompanyDto.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/response/UserResponse.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Paytm/AppConfig.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Entitys/BillingPeriods_t.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/entity/AppUserLog.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserPasswlogCompositeKey.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/logging/LoggingAspect.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/test/Repository/Test1Repository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_Menu_Register_Response.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/EmailRequest.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Razorpay/RazorpayDTO.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_DynamicTransactionServiceImpl.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Job/Entity/BillingJobEntity.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/MixMenuNew.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service1/GrpMenuAccessServiceImpl.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_ExtensionController.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository/CompanyRepo.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUser.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder/Entity/Rpt_builder_t.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/RnGroupMenuLineServiecImpl.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/test/Entity/Test1.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/AppUserRoleRepository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/SuccessPojo.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Menu_Register_Service.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Services/Rpt_builder2_Service.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Menu_Group_Service.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Services/ApprovalHistory_Service.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/dashboard_builder_authsec/Services/DashboardService.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/ExtFieldRepository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Sys_Accounts.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/response/UserItem.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Entity/who_column.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Controller/Dashboard2.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_ExtensionEntity.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/Registration.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserRole.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/UserService.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller/RoleController.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/RoleService.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/ERole.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Success.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Services/DashboardSchedule_Service.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/controller/AppUserLogController.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/ErrorPojo.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Modulemini.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder/Repository/Rpt_builder_Repository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Repository/Rpt_builder2_Repository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/service/impl/UserListServiceImpl.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/WireFrameCopyDTO.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Controllers/ApprovalHistory_Controller.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Version.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Service/HeaderService.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/test/Services/Tesr1Service.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/AppUserController.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Menu_Group_Line.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Forms_Component_Setup.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Builders/Entity/Builder_entity_t.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/CustomResponse.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/DropDownDTO.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/SessionConverter.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Controllers/GeneratetokenController.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/controller/UserListController.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Forms_Setup_Controller.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Notification/Entity/NotEntity.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/Login.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Api/Controllers/BillingSequentialApi.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Builders/Repos/BuilderRepository.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/entity/UserList.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/CompanyServiceImpl.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/RnGroupMenuLineServiec.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/SignUp.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Entitys/ApprovalHistory_t.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository/AboutWorkRepo.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Controllers/UploadeddocsController.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/test/Controllers/Api_registeryController.java +/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Controller/Dashbord1Controller.java diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/sonar/.sonar_lock b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/sonar/.sonar_lock new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/sonar/report-task.txt b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/sonar/report-task.txt new file mode 100644 index 0000000..6b356cf --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/sonar/report-task.txt @@ -0,0 +1,6 @@ +projectKey=authsec-spring-boot +serverUrl=http://13.232.138.21:9000 +serverVersion=10.4.0.87286 +dashboardUrl=http://13.232.138.21:9000/dashboard?id=authsec-spring-boot +ceTaskId=f2f7c914-db27-431f-a6ba-1a2fe53b793b +ceTaskUrl=http://13.232.138.21:9000/api/ce/task?id=f2f7c914-db27-431f-a6ba-1a2fe53b793b diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/test.txt b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/test.txt new file mode 100644 index 0000000..6e3359a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/test.txt @@ -0,0 +1 @@ +testt \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/test.xml b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/test.xml new file mode 100644 index 0000000..6e3359a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/test.xml @@ -0,0 +1 @@ +testt \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.editorconfig b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.editorconfig new file mode 100644 index 0000000..59d9a3a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.editorconfig @@ -0,0 +1,16 @@ +# Editor configuration, see https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.ts] +quote_type = single + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.github/workflows/blank.yml b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.github/workflows/blank.yml new file mode 100644 index 0000000..b2340b2 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.github/workflows/blank.yml @@ -0,0 +1,17 @@ +name: CI + +on: [push] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v1 + - name: Run a one-line script + run: echo Hello, world! + - name: Run a multi-line script + run: | + echo Add other actions to build, + echo test, and deploy your project. diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.gitignore b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.gitignore new file mode 100644 index 0000000..f5445e8 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.gitignore @@ -0,0 +1,42 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# compiled output +/dist +/tmp +/out-tsc + +# dependencies +/node_modules + +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# IDE - VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json + +# misc +/.angular/cache +/.sass-cache +/connect.lock +/coverage +/libpeerconnection.log +npm-debug.log +yarn-error.log +testem.log +/typings + +# System Files +.DS_Store +Thumbs.db + + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.sureai/.directory_structure.md b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.sureai/.directory_structure.md new file mode 100644 index 0000000..3cafd40 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.sureai/.directory_structure.md @@ -0,0 +1,60 @@ +# Directory Structure for Angular Clarity Boilerplate + +This document outlines the directory structure for the Angular Clarity boilerplate project. +/ +├── .vscode/ # VSCode settings +├── node_modules/ # Node.js modules +├── src/ # Application source code +│ ├── app/ # Application components and modules +│ │ ├── core/ # Core module (singleton services, guards, etc.) +│ │ ├── shared/ # Shared module (common components, pipes, etc.) +│ │ ├── app-routing.module.ts +│ │ ├── app.component.html +│ │ ├── app.component.scss +│ │ └── app.module.ts +│ ├── assets/ # Static assets (images, icons, etc.) +│ ├── environments/ # Environment-specific configuration +│ ├── index.html # Main HTML file +│ ├── main.ts # Main entry point +│ └── styles.scss # Global styles +├── .editorconfig # Editor configuration +├── .gitignore # Git ignore file +├── angular.json # Angular CLI configuration +├── package.json # Project dependencies and scripts +├── README.txt # Project README file ignore the README.md file +└── tsconfig.json # TypeScript configuration + +## Detailed Content and Customizations: + +### Project Root: `/` +- This is the base directory for the entire Angular Clarity boilerplate. + +### `.vscode/` +- Contains VSCode-specific settings to help with development consistency. + +### `node_modules/` +- Contains all the npm packages and dependencies for the project. + +### `src/` +- Contains the main source code for the application. + - `app/`: The root component and module for the application. + - `core/`: Provides singleton services and modules that are used across the application. + - `shared/`: Contains shared components, directives, and pipes. + - `app-routing.module.ts`: Defines the main routes for the application. + - `app.component.html`: The main HTML template for the root component. + - `app.component.scss`: The main stylesheet for the root component. + - `app.module.ts`: The root module that ties everything together. + - `assets/`: Contains static assets like images, fonts, and icons. + - `environments/`: Contains environment-specific configuration files (e.g., for development and production). + - `index.html`: The main HTML file that is served to the browser. + - `main.ts`: The main entry point for the application. + - `styles.scss`: The global stylesheet for the application. + +### Root Level Configuration Files: +- These files are crucial for the project's configuration, build process, and development environment. + - `.editorconfig`: Ensures consistent coding styles across different editors. + - `.gitignore`: Specifies which files and folders should be ignored by Git. + - `angular.json`: The configuration file for the Angular CLI. + - `package.json`: Defines the project's dependencies and scripts. + - `README.txt`: The main documentation file for the project. + - `tsconfig.json`: The configuration file for the TypeScript compiler. \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.sureai/.io8coder_breakdown.md b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.sureai/.io8coder_breakdown.md new file mode 100644 index 0000000..55598c9 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.sureai/.io8coder_breakdown.md @@ -0,0 +1,68 @@ +### io8coder_breakdown.md + +**io8coder Breakdown for "Angular Clarity Boilerplate":** + +**B - Business Understanding:** + +* **Goal:** To provide a robust and scalable boilerplate for developing Angular applications using the Clarity Design System. +* **Target Audience:** Angular developers looking to quickly start new projects with a pre-configured, best-practice project structure. +* **Key Features:** + * Pre-configured Angular project with Clarity Design System. + * Responsive layout and navigation. + * Scalable architecture with core and shared modules. + * Example components and routing. +* **Monetization/Value:** An open-source project that accelerates development, ensures consistency, and reduces setup time. + +**M - Model Definition:** + +* **Data Model (Example):** + * `User`: + * `id` (unique identifier) + * `username` (string) + * `email` (string) + * `Product`: + * `id` (unique identifier) + * `name` (string) + * `description` (string) + * `price` (number) +* **User Interface (UI) Model:** + * **Layout:** Main layout with a header, sidebar, and content area. + * **Navigation:** Vertical navigation in the sidebar with collapsible sections. + * **Header:** Main header with branding and user profile/actions. + * **Components:** Examples of Clarity components such as data grids, forms, modals, and alerts. +* **API Model (Example - to be implemented by the developer):** + * `GET /api/users`: Retrieve a list of users. + * `GET /api/users/{id}`: Retrieve a single user. + * `POST /api/users`: Create a new user. + * `PUT /api/users/{id}`: Update an existing user. + * `DELETE /api/users/{id}`: Delete a user. + +**A - Architecture Design:** + +* **Frontend:** Angular, TypeScript, HTML, SCSS. +* **UI Framework:** Clarity Design System. +* **State Management (Optional - to be integrated):** NgRx or other state management libraries. +* **Backend:** This is a frontend boilerplate and is backend-agnostic. It can be connected to any backend (e.g., Node.js, Python, Java) via RESTful or GraphQL APIs. +* **Database:** Not applicable for the frontend boilerplate. +* **Deployment:** Can be deployed to any static web hosting service (e.g., Firebase Hosting, Netlify, Vercel, AWS S3). + +**D - Development Plan:** + +* **Phase 1: Initial Setup & Customization** + * Clone the boilerplate repository. + * Install dependencies. + * Customize the theme (branding, colors, logos). + * Configure environment variables. +* **Phase 2: Feature Development** + * Create new feature modules. + * Develop components using Clarity components. + * Implement routing for new pages. + * Integrate with backend APIs. + * Add state management if needed. +* **Phase 3: Testing** + * Write unit tests for components and services. + * Write end-to-end tests for user flows. +* **Phase 4: Build & Deployment** + * Build the application for production. + * Deploy to a hosting service. + * Set up CI/CD pipelines for automated builds and deployments. \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.sureai/.io8coder_plan.md b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.sureai/.io8coder_plan.md new file mode 100644 index 0000000..7a9859c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.sureai/.io8coder_plan.md @@ -0,0 +1,59 @@ +**io8coder Plan for "Angular Clarity Boilerplate":** + +**Project Title:** Angular Clarity Boilerplate + +**Project Goal:** To provide developers with a feature-rich, scalable, and easy-to-use boilerplate for building enterprise-grade Angular applications with the Clarity Design System. + +**Key Deliverables:** + +1. A pre-configured Angular project. +2. Integration with the Clarity Design System. +3. A responsive layout with a header, sidebar, and content area. +4. Example modules (core, shared) and components. +5. A clear and well-documented project structure. + +**Technology Stack:** + +* **Frontend:** Angular, TypeScript, HTML, SCSS. +* **UI Framework:** Clarity Design System. +* **Package Manager:** npm. +* **Build Tool:** Angular CLI. + +**Phased Approach:** + +**Phase 1: Project Setup and Core Architecture (Estimated: 1 day)** + +* **Task 1.1:** Initialize a new Angular project. +* **Task 1.2:** Integrate the Clarity Design System. +* **Task 1.3:** Set up the core and shared modules. +* **Task 1.4:** Create the main layout component with a header, sidebar, and content area. + +**Phase 2: Navigation and Routing (Estimated: 1 day)** + +* **Task 2.1:** Implement the main routing module (`app-routing.module.ts`). +* **Task 2.2:** Create a navigation service to manage sidebar menu items. +* **Task 2.3:** Add example routes and components (e.g., dashboard, about page). +* **Task 2.4:** Implement lazy loading for feature modules. + +**Phase 3: Example Components and Theming (Estimated: 2 days)** + +* **Task 3.1:** Create example components using various Clarity components (datagrid, forms, modals, etc.). +* **Task 3.2:** Implement a theme service for switching between light and dark themes. +* **Task 3.3:** Add custom styles and branding. + +**Phase 4: Documentation and Finalization (Estimated: 1 day)** + +* **Task 4.1:** Write a comprehensive `README.txt` file. +* **Task 4.2:** Add comments and documentation to the code. +* **Task 4.3:** Clean up the codebase and remove any unnecessary files. + +**Testing Strategy:** + +* **Unit Tests:** Use Jasmine and Karma to write unit tests for components and services. +* **End-to-End Tests:** Use Protractor or Cypress for end-to-end testing of user flows. +* **Manual Testing:** Perform manual testing to ensure the application is working as expected. + +**Assumptions:** + +* The developer has a basic understanding of Angular and the Clarity Design System. +* The developer has Node.js and the Angular CLI installed. \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.sureai/analysis_document.md b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.sureai/analysis_document.md new file mode 100644 index 0000000..e7a01d0 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.sureai/analysis_document.md @@ -0,0 +1,63 @@ +# Analysis Document +Generated: Tuesday, September 16, 2025 + +## Project Overview +The project is an **Angular Clarity Boilerplate**, designed to serve as a foundational template for building modern, scalable, and feature-rich web applications. It provides a pre-configured Angular project integrated with the VMware Clarity Design System, enabling developers to kickstart new projects with a robust and consistent architecture, thereby accelerating the development lifecycle. + +## Business Analysis +The primary business need is to **streamline the initial setup phase of new Angular projects** within an organization or for individual developers. The target audience is **Angular developers and development teams** who require a standardized, best-practice project structure. The value proposition is centered around increasing development efficiency, enforcing UI/UX consistency through the Clarity Design System, and reducing the boilerplate code that developers need to write for every new project. + +## User Requirements (Developer Requirements) +The "users" of this boilerplate are developers. Their core requirements are: +- Developers must be able to **quickly set up a new project** by cloning the repository and installing dependencies. +- Developers must be provided with a **clear and understandable project structure** that promotes scalability and maintainability. +- The boilerplate must include a **pre-built, responsive application layout** (e.g., header, sidebar, content area). +- Developers must have access to **pre-configured core and shared modules** for common functionalities like services, guards, and reusable components. +- The boilerplate must be **easily extendable** with new feature modules and components. + +## Functional Requirements +The boilerplate will provide the following functional capabilities out-of-the-box: + +- **Pre-configured Angular Environment:** A ready-to-use Angular CLI project with all necessary dependencies and build configurations. +- **Clarity Design System Integration:** Full integration of Clarity UI components and styles, ready for immediate use. +- **Scalable Architecture:** A modular structure featuring a `CoreModule` for singleton services and a `SharedModule` for reusable UI components, directives, and pipes. +- **Responsive Layout:** A default application shell with a responsive header, navigation sidebar, and main content area. +- **Routing:** A pre-configured routing module with examples of lazy-loaded feature modules. +- **Theming:** Basic support for Clarity's light and dark themes. + +## Non-Functional Requirements + +- **Performance:** The initial boilerplate should be lightweight, ensuring fast development server startup times and optimized production builds. +- **Usability (Developer Experience):** The codebase must be clean, well-commented, and logically organized to provide an excellent developer experience. +- **Maintainability:** The modular architecture must facilitate easy updates to dependencies and allow for the addition of new features without introducing breaking changes to the core structure. +- **Scalability:** The architecture is designed to support the growth of large, enterprise-scale applications. +- **Extensibility:** The boilerplate should be easy to customize and extend with additional libraries, modules, and configurations as per project-specific needs. + +## User Stories (Developer Stories) + +### User Story 1: Quick Project Initialization +- **As a developer, I want to clone the repository and run `npm install` and `ng serve` to get a live development server running, so that I can bypass manual setup and start building features immediately.** +- **Acceptance Criteria:** + - Given I have Node.js and Angular CLI installed, + - When I clone the repository, install dependencies, and run the start command, + - Then the application compiles successfully and is accessible in my browser at `localhost:4200`. + +### User Story 2: Add a New Feature +- **As a developer, I want to create a new lazy-loaded feature module with its own components and routing, so that I can add new sections to the application in a scalable way.** +- **Acceptance Criteria:** + - Given the boilerplate is running, + - When I use the Angular CLI to generate a new module and add it to the main routing configuration, + - Then I can navigate to the new feature's route, and its components are rendered correctly. + +### User Story 3: Utilize Shared Components +- **As a developer, I want to use a component from the `SharedModule` within a new feature module, so that I can reuse common UI elements and maintain consistency.** +- **Acceptance Criteria:** + - Given I have a new feature module, + - When I import the `SharedModule` into my feature module, + - Then I can use the shared components (e.g., a custom card or loader) in my feature's templates without errors. + +## Business Rules (Architectural Principles) +- Singleton services (e.g., logging, authentication) must be provided in the `CoreModule`. +- Reusable components, pipes, and directives that do not have a dependency on services must be declared and exported in the `SharedModule`. +- All major application features should be encapsulated within their own lazy-loaded modules. +- Environment-specific variables (e.g., API endpoints) must be managed in the `environments` folder. \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.sureai/architecture_document.md b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.sureai/architecture_document.md new file mode 100644 index 0000000..cfde347 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.sureai/architecture_document.md @@ -0,0 +1,138 @@ +# Architecture Document +Generated: Tuesday, September 16, 2025 + +## System Overview +The Angular Clarity Boilerplate is a frontend-only, single-page application (SPA) template. It is designed to serve as a foundational starting point for developing enterprise-grade web applications. The system provides a pre-configured, modular, and scalable architecture using the Angular framework and is visually styled with the VMware Clarity Design System. Its primary purpose is to accelerate development by providing a structured and feature-rich starting point. + +## Architecture Pattern +The boilerplate is built upon a **Component-Based Architecture**, which is fundamental to the Angular framework. The UI is composed of a tree of reusable and encapsulated components. + +The overall architectural pattern follows best practices for scalable Angular applications, emphasizing a **Modular Design**. The application is segregated into a `CoreModule`, a `SharedModule`, and is designed for the addition of multiple `FeatureModules`. This structure promotes separation of concerns, reusability, and maintainability. + +## Component Design (Frontend) + +- **AppModule:** The root module of the application, responsible for bootstrapping the `AppComponent` and importing essential modules like the `CoreModule` and `AppRoutingModule`. + +- **AppComponent:** The main application shell component. It contains the primary layout, including the Clarity header, sidebar navigation, and the main content area where routed components are displayed via ``. + +- **CoreModule:** This module is designed to be imported only once by the `AppModule`. It contains singleton services, route guards, and other one-time setup logic (e.g., HTTP interceptors). This pattern prevents services from being provided multiple times across the application. + +- **SharedModule:** This module contains commonly used components, directives, and pipes that can be reused across different feature modules. It is imported by feature modules whenever they need access to these shared elements. It primarily exports common Angular modules (like `CommonModule`, `FormsModule`) and Clarity UI modules. + +- **Feature Modules (Conceptual):** The architecture is designed for developers to create new feature modules (e.g., `DashboardModule`, `AdminModule`). These modules encapsulate all the components, services, and routing related to a specific business domain. They are typically **lazy-loaded** to improve initial application load performance. + +## Data Architecture + +### Primary Database +- Not applicable. As a frontend-only boilerplate, this project does not include a database. It is designed to connect to any backend with a data persistence layer. + +### Data Model (Client-Side) +- Data models will be defined using **TypeScript interfaces or classes** within feature modules. These models will represent the structure of data objects retrieved from or sent to the backend API. +- **Example `User` model:** + ```typescript + export interface User { + id: number; + name: string; + email: string; + role: 'admin' | 'user'; + } + + Of course. Here is the architecture_document.md for the Angular Clarity boilerplate project, presented in a single code block for easy copying. + +Markdown + +# Architecture Document +Generated: Tuesday, September 16, 2025 + +## System Overview +The Angular Clarity Boilerplate is a frontend-only, single-page application (SPA) template. It is designed to serve as a foundational starting point for developing enterprise-grade web applications. The system provides a pre-configured, modular, and scalable architecture using the Angular framework and is visually styled with the VMware Clarity Design System. Its primary purpose is to accelerate development by providing a structured and feature-rich starting point. + +## Architecture Pattern +The boilerplate is built upon a **Component-Based Architecture**, which is fundamental to the Angular framework. The UI is composed of a tree of reusable and encapsulated components. + +The overall architectural pattern follows best practices for scalable Angular applications, emphasizing a **Modular Design**. The application is segregated into a `CoreModule`, a `SharedModule`, and is designed for the addition of multiple `FeatureModules`. This structure promotes separation of concerns, reusability, and maintainability. + +## Component Design (Frontend) + +- **AppModule:** The root module of the application, responsible for bootstrapping the `AppComponent` and importing essential modules like the `CoreModule` and `AppRoutingModule`. + +- **AppComponent:** The main application shell component. It contains the primary layout, including the Clarity header, sidebar navigation, and the main content area where routed components are displayed via ``. + +- **CoreModule:** This module is designed to be imported only once by the `AppModule`. It contains singleton services, route guards, and other one-time setup logic (e.g., HTTP interceptors). This pattern prevents services from being provided multiple times across the application. + +- **SharedModule:** This module contains commonly used components, directives, and pipes that can be reused across different feature modules. It is imported by feature modules whenever they need access to these shared elements. It primarily exports common Angular modules (like `CommonModule`, `FormsModule`) and Clarity UI modules. + +- **Feature Modules (Conceptual):** The architecture is designed for developers to create new feature modules (e.g., `DashboardModule`, `AdminModule`). These modules encapsulate all the components, services, and routing related to a specific business domain. They are typically **lazy-loaded** to improve initial application load performance. + +## Data Architecture + +### Primary Database +- Not applicable. As a frontend-only boilerplate, this project does not include a database. It is designed to connect to any backend with a data persistence layer. + +### Data Model (Client-Side) +- Data models will be defined using **TypeScript interfaces or classes** within feature modules. These models will represent the structure of data objects retrieved from or sent to the backend API. +- **Example `User` model:** + ```typescript + export interface User { + id: number; + name: string; + email: string; + role: 'admin' | 'user'; + } +Data Flow +API Call: A component's method calls a function in its corresponding service (e.g., userService.getUsers()). + +Service Layer: The service uses Angular's HttpClient to make an HTTP request to the backend API. + +Data Retrieval: The service receives the HTTP response and typically returns an Observable of the data, typed with the appropriate TypeScript interface. + +Component Update: The component subscribes to the Observable. Once the data is received, it updates its local state, triggering Angular's change detection to re-render the template and display the new data. + +API Design (Backend Communication) +This boilerplate is backend-agnostic. It is designed to communicate with any backend that exposes a RESTful or GraphQL API. + +Communication Protocol +HTTP/HTTPS: Communication is handled via standard HTTP requests using Angular's HttpClient service. + +Example Service Implementation +An example of a service making API calls: +// in user.service.ts +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { User } from '../models/user.model'; +import { environment } from '../../environments/environment'; + +@Injectable({ + providedIn: 'root' +}) +export class UserService { + private apiUrl = `${environment.apiBaseUrl}/users`; + + constructor(private http: HttpClient) { } + + getUsers(): Observable { + return this.http.get(this.apiUrl); + } + + getUserById(id: number): Observable { + return this.http.get(`${this.apiUrl}/${id}`); + } +} + +Error Handling +HTTP interceptors can be provided in the CoreModule to handle API errors globally (e.g., logging errors, redirecting on 401 Unauthorized responses). + +Security Architecture +Authentication: Authentication logic (e.g., handling JWTs, interacting with OAuth providers) should be encapsulated within an AuthService provided in the CoreModule. + +Authorization (Route Guards): The architecture uses Angular's Route Guards to protect routes. An AuthGuard can be implemented to prevent unauthorized users from accessing certain parts of the application. + +Client-Side Security: The boilerplate does not inherently protect against all client-side vulnerabilities. Developers should follow best practices for preventing XSS and CSRF attacks. + +Scalability Considerations +Lazy Loading: The architecture strongly encourages the use of lazy-loaded feature modules. This ensures that the initial application bundle size remains small, leading to faster load times. As new features are added, they do not impact the initial load performance. + +Modular Design: The strict separation of concerns into Core, Shared, and Feature modules makes the codebase easier to manage, test, and scale as the application grows in complexity. + +State Management: For applications with complex state, a state management library like NgRx or Akita can be easily integrated into this architecture without requiring significant refactoring. \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.sureai/prd_document.md b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.sureai/prd_document.md new file mode 100644 index 0000000..38f0f19 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.sureai/prd_document.md @@ -0,0 +1,62 @@ +# Product Requirements Document (PRD) - Angular Clarity Boilerplate + +## 1. Product Vision + +To provide a robust, scalable, and feature-rich boilerplate that serves as a foundational template for building modern, enterprise-grade web applications using Angular and the VMware Clarity Design System. The vision is to accelerate the development lifecycle by offering a pre-configured, best-practice project structure. + +## 2. Target Audience + +The primary target audience consists of **Angular developers and development teams** who require a standardized, efficient, and consistent starting point for new projects. This includes: + +* **Enterprise Development Teams:** Teams that need to maintain a consistent look and feel across multiple applications. +* **Independent Developers:** Individuals looking to quickly bootstrap new projects without spending significant time on initial setup and configuration. + +## 3. User Stories (Developer Stories) + +### User Story 1: Quick Project Initialization +- **As a developer, I want to clone the repository and run `npm install` and `ng serve` to get a live development server running, so that I can bypass manual setup and start building features immediately.** +- **Acceptance Criteria:** + - Given I have Node.js and Angular CLI installed, + - When I clone the repository, install dependencies, and run the start command, + - Then the application compiles successfully and is accessible in my browser at `localhost:4200`. + +### User Story 2: Add a New Feature +- **As a developer, I want to create a new lazy-loaded feature module with its own components and routing, so that I can add new sections to the application in a scalable way.** +- **Acceptance Criteria:** + - Given the boilerplate is running, + - When I use the Angular CLI to generate a new module and add it to the main routing configuration, + - Then I can navigate to the new feature's route, and its components are rendered correctly. + +### User Story 3: Utilize Shared Components +- **As a developer, I want to use a component from the `SharedModule` within a new feature module, so that I can reuse common UI elements and maintain consistency.** +- **Acceptance Criteria:** + - Given I have a new feature module, + - When I import the `SharedModule` into my feature module, + - Then I can use the shared components (e.g., a custom card or loader) in my feature's templates without errors. + +## 4. Functional Requirements + +- **FR-001: Pre-configured Angular Environment:** A ready-to-use Angular CLI project with all necessary dependencies and build configurations. +- **FR-002: Clarity Design System Integration:** Full integration of Clarity UI components and styles, ready for immediate use. +- **FR-003: Scalable Architecture:** A modular structure featuring a `CoreModule` for singleton services and a `SharedModule` for reusable UI components, directives, and pipes. +- **FR-004: Responsive Layout:** A default application shell with a responsive header, navigation sidebar, and main content area. +- **FR-005: Routing:** A pre-configured routing module with examples of lazy-loaded feature modules. +- **FR-006: Theming:** Basic support for Clarity's light and dark themes. + +## 5. Non-Functional Requirements + +- **NFR-001: Performance:** The initial boilerplate should be lightweight, ensuring fast development server startup times and optimized production builds. +- **NFR-002: Usability (Developer Experience):** The codebase must be clean, well-commented, and logically organized to provide an excellent developer experience. +- **NFR-003: Maintainability:** The modular architecture must facilitate easy updates to dependencies and allow for the addition of new features without introducing breaking changes to the core structure. +- **NFR-004: Scalability:** The architecture is designed to support the growth of large, enterprise-scale applications. +- **NFR-005: Extensibility:** The boilerplate should be easy to customize and extend with additional libraries, modules, and configurations as per project-specific needs. + +## 6. Out of Scope + +The following features and functionalities are explicitly out of scope for the boilerplate: + +- **Backend Implementation:** This is a frontend-only boilerplate and does not include any backend code or database. +- **Authentication/Authorization Logic:** While the architecture supports the implementation of security features, no pre-built authentication or authorization logic is included. +- **State Management:** The boilerplate does not include a state management library (e.g., NgRx, Akita) by default, allowing developers to choose the best solution for their needs. +- **Business Logic:** No specific business logic or application features are included beyond the basic structural components. +- **CI/CD Pipelines:** While the project is ready for CI/CD, no pre-configured pipelines are included. \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.sureai/project_plan.md b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.sureai/project_plan.md new file mode 100644 index 0000000..736c8c7 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.sureai/project_plan.md @@ -0,0 +1,73 @@ +# Project Plan - Angular Clarity Boilerplate + +## 1. Project Goal + +To develop and deliver a comprehensive, scalable, and well-documented Angular boilerplate. The final product will serve as a foundational template, enabling developers to rapidly bootstrap new enterprise-grade web applications using the VMware Clarity Design System. + +## 2. Methodology + +The project will follow an iterative development approach, focusing on establishing a solid architectural foundation first. The goal is to create a robust Minimum Viable Product (MVP) boilerplate that is immediately useful and can be enhanced over time with additional features and refinements based on developer feedback. + +## 3. Key Phases & Workflow + +1. **Phase 1: Foundation & Architecture Definition:** Define the core architectural patterns, including the modular structure (`Core`, `Shared`, `Feature` modules) and establish the base project setup. +2. **Phase 2: MVP Scope & Requirements:** Outline the essential features for the initial boilerplate release, including Clarity integration, responsive layout, and routing. Document these in the PRD and Architecture Document. +3. **Phase 3: Backlog Creation & Planning:** Break down the architectural and functional requirements into a prioritized list of development tasks. +4. **Phase 4: Development & Integration:** Implement the core architecture, integrate the Clarity Design System, and build out the foundational components and modules. +5. **Phase 5: Quality Assurance & Documentation:** Thoroughly test the boilerplate for stability and ease of use. Ensure all key architectural decisions are well-documented within the code and in project documents like the `README.txt`. +6. **Phase 6: Release & Future Iteration:** Package and release the initial version of the boilerplate. Plan for future enhancements based on potential developer needs and feedback. + +## 4. Initial Backlog (MVP Focus) + +The following tasks represent the initial backlog for creating the boilerplate: + +### Architecture & Setup Tasks +- Initialize a new project using the Angular CLI. +- Define and implement the `CoreModule` for singleton services. +- Define and implement the `SharedModule` for reusable components, pipes, and directives. +- Configure the main `AppRoutingModule` and set up a basic routing structure. +- Establish the environment configuration files (`environments` folder). + +### Clarity Design System Integration +- Install all necessary Clarity npm packages (`@clr/angular`, `@clr/ui`, `@cds/core`). +- Import Clarity's global styles and icon assets into the project. +- Implement the main application layout (`AppComponent`) using Clarity's header, sidebar, and content area components. +- Ensure the layout is fully responsive. + +### Boilerplate Feature Tasks +- Create an example of a lazy-loaded `FeatureModule` to demonstrate the pattern. +- Add a dashboard or home page component as a default view. +- Include examples of common Clarity components (e.g., a datagrid, a form) on example pages to showcase usage. +- Implement basic support for switching between Clarity's light and dark themes. + +### Documentation Tasks +- Create a comprehensive `README.txt` with setup instructions, an overview of the architecture, and usage guidelines. +- Add inline comments to the code to explain key architectural patterns and configurations. +- Generate all required project documentation (`analysis_document.md`, `architecture_document.md`, etc.). + +## 5. Feature Prioritization Strategy + +Prioritization will focus on establishing a stable and usable foundation. **Must-have** features include the core modular architecture and full integration of the Clarity layout. **Should-have** features include example pages and components. **Could-have** features for future iterations might include state management integration or CI/CD templates. + +## 6. Key Technologies + +- **Frontend Framework:** Angular +- **Programming Language:** TypeScript +- **UI Library:** VMware Clarity Design System +- **Styling:** SCSS +- **Package Manager:** npm +- **Build Tool:** Angular CLI + +## 7. Success Metrics (MVP) + +- The boilerplate can be successfully cloned and set up with just `npm install` and `ng serve`. +- The resulting application is stable, responsive, and free of console errors. +- The project structure is logical and easy for an Angular developer to understand. +- All core architectural patterns (Core/Shared/Feature modules, lazy loading) are correctly implemented and demonstrated. + +## 8. Future Considerations (Post-MVP) + +- Integrating a state management library (e.g., NgRx, Akita) with an example implementation. +- Adding more complex example pages (e.g., a settings page, a user profile). +- Creating custom Angular Schematics to automate the creation of new feature modules that follow the boilerplate's conventions. +- Including pre-configured templates for CI/CD pipelines (e.g., GitHub Actions). \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.sureai/requirements_document.md b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.sureai/requirements_document.md new file mode 100644 index 0000000..d85e0a5 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.sureai/requirements_document.md @@ -0,0 +1,95 @@ +# Requirements Document +Generated: Tuesday, September 16, 2025 + +## Functional Requirements (Developer-Facing) + +### FR-001: Project Initialization +- **Description:** The system shall provide a developer-ready Angular project that can be set up with minimal effort. +- **Acceptance Criteria:** + - A developer shall be able to clone the project from a Git repository. + - A developer shall be able to install all required dependencies using a single `npm install` command. + - A developer shall be able to start the local development server using the `ng serve` command. + - The boilerplate shall compile without errors and be viewable in a web browser. +- **Priority:** High + +### FR-002: Modular Architecture +- **Description:** The system shall be structured with a scalable and maintainable modular architecture. +- **Acceptance Criteria:** + - The project shall include a `CoreModule` for providing singleton services and one-time imports. + - The project shall include a `SharedModule` for reusable components, directives, and pipes. + - The architecture shall support the creation of lazy-loaded `FeatureModules` to encapsulate business domain logic. +- **Priority:** High + +### FR-003: Clarity Design System Integration +- **Description:** The system shall be fully integrated with the VMware Clarity Design System for UI components and styling. +- **Acceptance Criteria:** + - All necessary Clarity npm packages shall be included as dependencies. + - Clarity's global stylesheets and assets shall be correctly configured and loaded. + - The boilerplate shall use Clarity components for its core layout (header, sidebar, etc.). + - Developers shall be able to use any Clarity component within their feature modules. +- **Priority:** High + +### FR-004: Responsive Application Layout +- **Description:** The system shall provide a default, responsive application layout. +- **Acceptance Criteria:** + - The boilerplate shall include a main application shell with a header, a collapsible sidebar for navigation, and a main content area. + - The layout shall adapt correctly to various screen sizes, including desktop, tablet, and mobile. +- **Priority:** High + +### FR-005: Routing and Navigation +- **Description:** The system shall include a pre-configured routing system for navigating between different views. +- **Acceptance Criteria:** + - The project shall have a main `AppRoutingModule`. + - The boilerplate shall provide an example of a lazy-loaded feature route. + - Navigation links in the sidebar shall correctly navigate to their corresponding routes. +- **Priority:** Medium + +## Non-Functional Requirements + +### NFR-001: Performance (Developer Experience) +- **Description:** The boilerplate should be optimized for a fast and efficient development workflow. +- **Acceptance Criteria:** + - The initial `ng serve` compilation time shall be reasonably fast. + - Live-reloading times during development shall be minimal. + - The production build (`ng build --prod`) shall be optimized, with tree-shaking and minification enabled. +- **Priority:** Medium + +### NFR-002: Usability (Developer Experience) +- **Description:** The codebase should be intuitive and easy for an Angular developer to understand and extend. +- **Acceptance Criteria:** + - The project structure shall be logical and follow established Angular best practices. + - The code shall be clean, well-formatted, and include comments for complex or non-obvious sections. + - A comprehensive `README.txt` file shall guide developers on setup, architecture, and usage. +- **Priority:** High + +### NFR-003: Maintainability +- **Description:** The codebase should be structured to allow for easy updates, modifications, and extensions. +- **Acceptance Criteria:** + - The modular architecture shall allow for independent development and testing of features. + - Dependencies shall be clearly defined in `package.json` and easy to update. + - The separation of concerns between modules should be strictly enforced. +- **Priority:** High + +## Data Requirements (Client-Side) + +### Entity Modeling: +- **Description:** The boilerplate will not have predefined data models but will require developers to define them using TypeScript. +- **Attributes:** + - Data models shall be defined as **TypeScript interfaces or classes**. + - These models will represent the structure of data consumed from and sent to a backend API. + +## Interface Requirements + +### UI/UX Requirements (Frontend Boilerplate): +- **Layout:** A clean, professional single-page application layout based on the Clarity Design System. +- **Header:** A top header bar, typically containing the application title/logo and user-related actions (e.g., profile, logout). +- **Sidebar:** A collapsible vertical navigation sidebar containing links to different feature areas of the application. +- **Content Area:** A main content area where the components for the currently active route are displayed. +- **Styling:** Adherence to the styles and design tokens provided by the Clarity Design System. + +### API Requirements (Backend Interaction): +- **Backend Agnostic:** The boilerplate is a frontend application and makes no assumptions about the backend technology stack. +- **Communication Protocol:** The boilerplate shall use Angular's `HttpClient` module to communicate with a backend over HTTP/HTTPS. +- **API Endpoint Configuration:** The base URL for the backend API shall be configurable via the `environments` files (e.g., `environment.ts`, `environment.prod.ts`). +- **Data Format:** The boilerplate is designed to work with APIs that transact data in **JSON** format. +- **Error Handling:** The architecture shall support a centralized way to handle API errors, typically through an `HttpInterceptor` provided in the `CoreModule`. \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.sureai/sprint_plan.md b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.sureai/sprint_plan.md new file mode 100644 index 0000000..0a5977f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.sureai/sprint_plan.md @@ -0,0 +1,81 @@ +# Angular Boilerplate Project - Sprint Plan (Sprint 1) + +## Sprint Goal + +To establish the foundational architecture of the Angular Clarity Boilerplate, including setting up the core project structure, integrating the Clarity Design System, implementing the main responsive layout, and creating a clear, documented starting point for developers. + +## Sprint Duration + +[Assumed: A focused 1-week sprint to deliver the core boilerplate MVP.] + +## Team Capacity + +[Assumed: Full developer availability for the sprint duration.] + +## Product Backlog Items (Developer Stories) for Sprint 1 + +1. **User Story: Quick Project Initialization** + * **As a developer, I want to clone the repository and run `npm install` and `ng serve` to get a live development server running, so that I can bypass manual setup and start building features immediately.** + * **Acceptance Criteria:** + * The project is initialized using the latest stable Angular CLI. + * All necessary dependencies are defined in `package.json`. + * The application compiles successfully without errors. + +2. **User Story: Scalable Architecture Foundation** + * **As a developer, I want a well-defined modular structure (`Core`, `Shared`), so that I can build a scalable and maintainable application.** + * **Acceptance Criteria:** + * A `CoreModule` is created for singleton services and one-time imports. + * A `SharedModule` is created for reusable components, directives, and pipes. + * The `AppModule` is cleanly organized and imports the necessary foundational modules. + +3. **User Story: Clarity Design System Integration** + * **As a developer, I want a responsive application layout built with the Clarity Design System, so that I have a professional and consistent UI foundation.** + * **Acceptance Criteria:** + * Clarity dependencies are added and correctly configured. + * The main `AppComponent` uses Clarity components for the header, sidebar navigation, and main content area. + * The layout is responsive and functions correctly on desktop, tablet, and mobile screen sizes. + +## Sprint Tasks (Derived from User Stories) + +### Architecture & Setup Tasks: +- **Task:** Initialize a new Angular project using the Angular CLI. +- **Task:** Clean up default boilerplate files and structure the project directories. +- **Task:** Create the `CoreModule` and ensure it is imported only once in the `AppModule`. +- **Task:** Create the `SharedModule` with common exports (`CommonModule`, `FormsModule`, etc.). +- **Task:** Set up the main `AppRoutingModule` with a default route. +- **Task:** Configure environment files (`environment.ts`, `environment.prod.ts`) with a placeholder for an API base URL. + +### Clarity Integration Tasks: +- **Task:** Install `@clr/angular`, `@clr/ui`, and `@cds/core` npm packages. +- **Task:** Configure `angular.json` to include Clarity's global CSS files and assets. +- **Task:** Implement the main application layout in `app.component.html` using ``, ``, and ``. +- **Task:** Add placeholder navigation links in the vertical navigation sidebar. +- **Task:** Ensure the Clarity icons are properly loaded and can be used within the application. + +### Documentation & General Tasks: +- **Task:** Create the initial `README.txt` file with project setup instructions. +- **Task:** Write inline comments for the `CoreModule` and `SharedModule` explaining their purpose. +- **Task:** Set up basic linting rules in `.eslintrc.json` to enforce code quality. +- **Task:** Configure the `.gitignore` file to exclude unnecessary files from version control. + +## Definition of Done (DoD) for Sprint 1 + +- All selected user stories are implemented and meet their acceptance criteria. +- The boilerplate can be successfully set up and run by another developer following the `README.txt`. +- The core architecture (`CoreModule`, `SharedModule`) is in place. +- The main application layout using Clarity is implemented and responsive. +- All code is reviewed, formatted, and merged into the main branch. +- No known critical bugs or console errors in the initial boilerplate. + +## Potential Impediments + +- Issues with Clarity dependency versions or peer dependencies. +- Unexpected complexities in configuring Clarity's global styles with the Angular CLI. +- Difficulties in achieving the desired responsive behavior with the Clarity layout components. + +## Next Steps + +- Daily stand-ups to track progress and identify any blockers. +- Prepare for Sprint 2, which will focus on adding example feature modules, advanced routing (lazy loading), and more complex Clarity component examples. +- Sprint Review at the end of the sprint to demonstrate the working boilerplate. +- Sprint Retrospective to refine the development process. \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.sureai/tech_stack_document.md b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.sureai/tech_stack_document.md new file mode 100644 index 0000000..fe4ad83 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.sureai/tech_stack_document.md @@ -0,0 +1,39 @@ +# Technology Stack Document +Generated: Tuesday, September 16, 2025 + +## Frontend Technologies + +* **Framework:** **Angular**. The boilerplate is built on the latest stable version of the Angular framework, chosen for its robustness, component-based architecture, and suitability for large-scale, enterprise applications. +* **Language:** **TypeScript**. As a superset of JavaScript, TypeScript is used for its strong typing, which improves code quality, maintainability, and developer productivity. +* **Styling:** **SCSS**. SCSS is used for its advanced features over standard CSS, such as variables, nesting, and mixins, allowing for more organized and maintainable stylesheets. +* **UI Framework:** **VMware Clarity Design System**. This comprehensive design system provides a set of accessible, high-quality UI components and a consistent visual language, which accelerates UI development. +* **Core Libraries:** + * **RxJS:** Used extensively throughout Angular for reactive programming and managing asynchronous operations. + * **Zone.js:** A signaling mechanism that enables Angular's automatic change detection. + +## Backend Technologies + +* **Backend Agnostic:** This is a frontend-only boilerplate and is not tied to any specific backend technology. It is designed to communicate with any backend that exposes a RESTful or GraphQL API. + +## Database Technologies + +* **Not Applicable:** As a frontend project, the boilerplate does not include a database. + +## Infrastructure & Deployment + +* **Web Server:** The built application consists of static files that can be served by any modern web server (e.g., **Nginx**, **Apache**, **Caddy**). +* **Hosting:** The project can be deployed to any static site hosting provider, such as **Firebase Hosting**, **Netlify**, **Vercel**, **AWS S3**, or **GitHub Pages**. +* **Containerization (Optional):** The application can be easily containerized using **Docker** for consistent deployment environments. + +## Development & Build Tools + +* **Build Tool:** **Angular CLI**. The command-line interface for Angular is used for creating, building, testing, and deploying the application. +* **Package Manager:** **npm**. The Node Package Manager is used for managing all project dependencies. +* **Version Control:** **Git**. Git is the standard for version control and source code management. +* **Testing:** + * **Unit Testing:** **Jasmine** (framework) and **Karma** (test runner) are the default tools for unit testing in Angular. + * **End-to-End (E2E) Testing:** The project can be configured to use **Protractor** or more modern alternatives like **Cypress** or **Playwright**. +* **Code Formatting/Linting:** + * **ESLint:** Used for identifying and reporting on patterns in ECMAScript/JavaScript code. + * **Prettier:** An opinionated code formatter that enforces a consistent style. + * **EditorConfig:** Helps maintain consistent coding styles for multiple developers working on the same project across various editors and IDEs. \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.vscode/settings.json b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.vscode/settings.json new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/.vscode/settings.json @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/README.md b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/README.md new file mode 100644 index 0000000..c3d97fe --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/README.md @@ -0,0 +1,52 @@ +# Angular-Clarity + +This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 16.0.4 [Angular.io](https://angular.io/) version 16.0.4 and [Clarity Design System](https://vmware.github.io/clarity/news) by VMware version 6.4.5/15.5.0 + +## Install +- clone project `git clone https://github.com/superpck/angular-clarity` +- goto project folder `cd angular-clarity` +- install necessary package `npm install` +- Fix some vulnerabilities (if founded) `npm audit fix --force` +- Run application with command `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files. +- or Run `ng serve --port 8080 --open` with another port and open web browser. + +## Code scaffolding + +Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. + +## Build + +- Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `--prod` flag for a production build. +- or `ng build --base-href ./ --prod --output-hashing none` + +## Running unit tests + +Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Running end-to-end tests + +Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). + +## Screenshot +About Page +![About](1.png) + +Login Page +![Datagrid](6.png) + +Datagrid +![Datagrid](2.png) + +Datagrid expand row and single action +![expand](3.png) + +Modal +![modal](4.png) + +sweetalert2 +![sweetalert2](5.png) + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/README.txt b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/README.txt new file mode 100644 index 0000000..b5799f2 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/README.txt @@ -0,0 +1,202 @@ +# Angular Clarity Boilerplate + +This project is an Angular boilerplate application that uses the [Clarity Design System](https://clarity.design/) by VMware. It serves as a starter template for building modern, responsive, and feature-rich web applications. + +This boilerplate is pre-configured with a standard project structure and includes essential modules and components to kickstart your development process. + +--- + +## 🚀 Features + +* **Angular:** The latest version of the Angular framework. +* **Clarity Design System:** A comprehensive set of UX guidelines, HTML/CSS components, and Angular components. +* **Responsive Layout:** A responsive navigation and layout structure. +* **Scalable Architecture:** A well-organized and scalable project structure. +* **Theming:** Easily customizable themes (light and dark). + +--- + +## 🛠️ Getting Started + +Follow these instructions to get a copy of the project up and running on your local machine for development and testing purposes. + +### Prerequisites + +Make sure you have [Node.js](https://nodejs.org/) and the [Angular CLI](https://angular.io/cli) installed on your system. + +```bash +npm install -g @angular/cli + +## Installation + +Install the dependencies: +npm install + +Running the Application +Run the following command to start the development server: +ng serve + +The app will automatically reload if you change any of the source files. + + +## DEPENDENCIES + +This project includes the following main dependencies: + +@angular/animations: The Angular animations library. +@angular/common: Commonly needed services, pipes, and directives. +@angular/compiler: The Angular template compiler. +@angular/core: Core Angular framework. +@angular/forms: Angular's form validation and handling library. +@angular/platform-browser: Everything needed to run Angular in a web browser. +@angular/router: The Angular router for navigation. +@cds/core: Clarity Design System core components. +@clr/angular: Angular components for Clarity. +@clr/ui: HTML/CSS components for Clarity. +rxjs: Reactive extensions for JavaScript. +zone.js: A signaling mechanism for Angular that allows it to detect when to run change detection. + + +📂 Project Structure +/ +├── .vscode/ # VSCode settings +├── node_modules/ # Node.js modules +├── src/ # Application source code +│ ├── app/ # Application components and modules +│ │ ├── core/ # Core module (singleton services, guards, etc.) +│ │ ├── shared/ # Shared module (common components, pipes, etc.) +│ │ ├── app-routing.module.ts +│ │ ├── app.component.html +│ │ ├── app.component.scss +│ │ └── app.module.ts +│ ├── assets/ # Static assets (images, icons, etc.) +│ ├── environments/ # Environment-specific configuration +│ ├── index.html # Main HTML file +│ ├── main.ts # Main entry point +│ └── styles.scss # Global styles +├── .editorconfig # Editor configuration +├── .gitignore # Git ignore file +├── angular.json # Angular CLI configuration +├── package.json # Project dependencies and scripts +├── README.md # This README file +└── tsconfig.json # TypeScript configuration + + +--- + +## ✅ What’s already built in this codebase (with file locations) + +### Authentication & Login +- Login page (UI + logic): + - src/app/modules/login/login-page/login-page.component.html + - src/app/modules/login/login-page/login-page.component.ts + - src/app/modules/login/login-page/login-page.component.spec.ts +- Login routing + module: + - src/app/modules/login/login-routing.module.ts + - src/app/modules/login/login.module.ts +- Auth services: + - src/app/services/api/login.service.ts + - src/app/services/auth_guard.service.ts + - src/app/services/jwt.interceptor.ts +- Account flows: + - Forgot/reset password: src/app/modules/login/forgotresetpassword/forgotresetpassword.component.html + - Forgot/reset password (alt): src/app/modules/login/forgotresetpassword1/forgotresetpassword1.component.html + - Email verification: src/app/modules/login/emailverification/emailverification.component.{ts,html} + - Add guest: src/app/modules/login/addguest/addguest.component.html + - About work: src/app/modules/login/about-work/about-work.component.{ts,html} + +### Shell, Layout, Navigation (Menus/Sidebar/Topbar) +- Application shell and layout (includes navbar/sidebar containers): + - src/app/modules/main/layout/layout.component.{ts,html,scss} +- Main module + routing: + - src/app/modules/main/main.module.ts + - src/app/modules/main/main-routing.module.ts +- Menu models and admin menu management: + - Models: src/app/models/builder/Rn_Main_Menu.ts, src/app/models/builder/Rn_Sub_Menu.ts, src/app/models/builder/Rn_Fb_Header.ts + - Services: src/app/services/admin/menu-register.service.ts, src/app/services/admin/menu-group.service.ts, src/app/services/admin/menumaintance.service.ts + - Components (CRUD): + - src/app/modules/main/admin/menu-register/* (add/edit/all/readonly) + - src/app/modules/main/admin/menu-group/* (all/edit/read-only) + - src/app/modules/main/admin/menumaintance/menumaintance.component.{ts,html} + - src/app/modules/main/admin/submenu/submenu.component.{ts,html} + - src/app/services/api/realnet-menu.service.ts + +### User & Access Management +- User management (list/add/edit/profile/settings, groups): + - src/app/modules/main/admin/user/user.component.{ts,html} + - src/app/modules/main/admin/usermaintance/usermaintance.component.{ts,html} + - src/app/modules/main/admin/usermaintanceadd/usermaintanceadd.component.{ts,html} + - src/app/modules/main/admin/usermaintanceedit/usermaintanceedit.component.{ts,html} + - src/app/modules/main/admin/usergrpmaintenance/usergrpmaintenance.component.ts + - src/app/modules/main/admin/profile-setting/profile-setting.component.html + - Services: src/app/services/admin/usermaintance.service.ts, src/app/services/admin/usergrpmaintaince.service.ts, src/app/services/admin/user-profile.service.ts, src/app/services/admin/user-registration.service.ts +- Access types / permissions: + - src/app/modules/main/admin/accesstype/accesstype.component.{ts,html} + - src/app/services/admin/accesstype.service.ts + - Guard: src/app/services/auth_guard.service.ts + +### System Administration & Configuration +- System parameters, health, logs, connectors, webhooks: + - System parameters: src/app/modules/main/admin/systemparameters/systemparameters.component.html; service: src/app/services/admin/sysparameter.service.ts + - Health checkup: src/app/services/admin/health-checkup.service.ts + - Session logger UI: src/app/modules/main/admin/sessionlogger/sessionlogger.component.html; service: src/app/services/admin/sessionlogger.service.ts + - Connectors & mapping: src/app/services/admin/sure-connector.service.ts, src/app/services/admin/connector-mapping.service.ts + - Outgoing webhooks: src/app/services/admin/outgoingwebhook.service.ts + - Audit reporting: src/app/services/admin/auditreport.service.ts; API: src/app/services/api/audittrail.service.ts + - Deployment profile: src/app/services/admin/deploymentprofile.service.ts + +### Foundation (FND) and Data Management +- Token registry: + - src/app/modules/main/fnd/Token_registery/Token_registery.component.{ts,html} + - src/app/modules/main/fnd/Token_registery/Token_registery.service.ts +- API registry (CRUD + lines): + - src/app/modules/main/fnd/apiregistery/apiregistery.component.{ts,html} + - src/app/modules/main/fnd/apiregistery/allapiregistery/allapiregistery.component.{ts,html} + - src/app/modules/main/fnd/apiregistery/Apiregisteryline/Apiregisteryline.component.{ts,html} +- Sequence generator: + - src/app/modules/main/fnd/sequencegenarator/sequencegenarator.component.{ts,html} +- Extensions: + - src/app/modules/main/fnd/extension/* (add/edit/all/components) +- Document master: + - src/app/modules/main/admin/documentmaster/documentmaster.component.{ts,html} +- Data management (bulk import, mapping rules): + - Bulk import: src/app/modules/main/datamanagement/bulkimport/**/*.{ts,html} + - Mapping rules: src/app/modules/main/datamanagement/mappingrule/**/*.{ts,html} + - Services: src/app/services/fnd/bulkimport.service.ts, src/app/services/fnd/datamanagement.service.ts + +### Reporting & Dashboards +- Report builder and runner (multiple generations): + - Builder: src/app/modules/main/builder/report-build/**/*.{ts,html} + - Builder v2: src/app/modules/main/builder/report-build2/**/*.{ts,html} + - Runner: src/app/modules/main/builder/report-runner/**/*.{ts,html} + - Dashboard (new + runner): src/app/modules/main/builder/dashboardnew/**/*, src/app/modules/main/builder/dashboardrunner/**/* + - Services: src/app/services/api/report-builder.service.ts, src/app/services/builder/*.ts + +### Query (Super Admin) +- Query management: + - src/app/modules/main/superadmin/query/**/*.{ts,html} + - src/app/modules/main/superadmin/queryadd/queryadd.component.ts + - src/app/modules/main/superadmin/queryedit/queryedit.component.ts + - API: src/app/services/api/query-runner.service.ts + +### Shared Utilities +- Pipes: + - src/app/pipes/*.ts (e.g., search-filter.pipe.ts, thai-date*.pipe.ts, time-pipe.pipe.ts, sanitize.pipe.ts) +- Notifications/Alerts services: + - src/app/services/notification.service.ts, src/app/services/alerts.service.ts, src/app/services/fnd/alerts.service.ts +- CSV/Excel helpers: + - src/app/services/csv.service.ts, src/app/services/excel.service.ts +- i18n assets: + - src/assets/i18n/en.json, src/assets/i18n/hi.json +- App-level routing + module: + - src/app/app-routing.module.ts + - src/app/app.module.ts + +--- + +## Quick Start (recap) +1. npm install -g @angular/cli +2. npm install +3. ng serve + +This project already includes: authentication flow, guarded routes, admin menus and access, user and group management, system configuration screens, FND (token/api registry, sequences, extensions), data management (bulk import, mapping rules), reporting and dashboards, super-admin queries, shared utilities (pipes, alerts, CSV/Excel), i18n scaffolding, and a Clarity-based layout and navigation. diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/SECURITY.md b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/SECURITY.md new file mode 100644 index 0000000..034e848 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/SECURITY.md @@ -0,0 +1,21 @@ +# Security Policy + +## Supported Versions + +Use this section to tell people about which versions of your project are +currently being supported with security updates. + +| Version | Supported | +| ------- | ------------------ | +| 5.1.x | :white_check_mark: | +| 5.0.x | :x: | +| 4.0.x | :white_check_mark: | +| < 4.0 | :x: | + +## Reporting a Vulnerability + +Use this section to tell people how to report a vulnerability. + +Tell them where to go, how often they can expect to get an update on a +reported vulnerability, what to expect if the vulnerability is accepted or +declined, etc. diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/angular.json b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/angular.json new file mode 100644 index 0000000..d9b66a6 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/angular.json @@ -0,0 +1,134 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "newProjectRoot": "projects", + "projects": { + "angularclarity": { + "projectType": "application", + "schematics": { + "@schematics/angular:component": { + "style": "scss" + } + }, + "root": "", + "sourceRoot": "src", + "prefix": "app", + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:browser", + "options": { + "outputPath": "dist", + "index": "src/index.html", + "main": "src/main.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "tsconfig.app.json", + "allowedCommonJsDependencies": [ + "lodash", "xlsx", "file-saver","@swimlane/ngx-datatable","@swimlane/ngx-charts","jquery","highcharts","chart.js", + "clone-deep","@ckeditor/ckeditor5-build-classic","@ctrl/ngx-codemirror" + ], + "assets": [ + "src/favicon.ico", + "src/assets" + ], + "styles": [ + "node_modules/@clr/icons/clr-icons.min.css", + "node_modules/@clr/ui/clr-ui.min.css", + "src/styles.scss", + "node_modules/ngx-toastr/toastr.css" + ], + "scripts": [ + "node_modules/@webcomponents/webcomponentsjs/custom-elements-es5-adapter.js", + "node_modules/@webcomponents/webcomponentsjs/webcomponents-bundle.js", + "node_modules/@clr/icons/clr-icons.min.js" + ], + "vendorChunk": true, + "extractLicenses": false, + "buildOptimizer": false, + "sourceMap": true, + "optimization": false, + "namedChunks": true + }, + "configurations": { + "production": { + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.prod.ts" + } + ], + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "namedChunks": false, + "extractLicenses": true, + "vendorChunk": false, + "buildOptimizer": true, + "budgets": [ + { + "type": "initial", + "maximumWarning": "10mb", + "maximumError": "10mb" + }, + { + "type": "anyComponentStyle", + "maximumWarning": "200kb", + "maximumError": "4mb" + } + ] + } + }, + "defaultConfiguration": "" + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "options": { + "browserTarget": "angularclarity:build" + }, + "configurations": { + "production": { + "browserTarget": "angularclarity:build:production" + } + } + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "browserTarget": "angularclarity:build" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "src/test.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "tsconfig.spec.json", + "karmaConfig": "karma.conf.js", + "assets": [ + "src/favicon.ico", + "src/assets" + ], + "styles": [ + "src/styles.scss" + ], + "scripts": [] + } + }, + "e2e": { + "builder": "@angular-devkit/build-angular:protractor", + "options": { + "protractorConfig": "e2e/protractor.conf.js", + "devServerTarget": "angularclarity:serve" + }, + "configurations": { + "production": { + "devServerTarget": "angularclarity:serve:production" + } + } + } + } + } + }, + "cli": { + "analytics": "6e7a3b23-d894-47dd-8b4b-7fdeba9a5abd" + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/browserslist b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/browserslist new file mode 100644 index 0000000..8084853 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/browserslist @@ -0,0 +1,12 @@ +# This file is used by the build system to adjust CSS and JS output to support the specified browsers below. +# For additional information regarding the format and rule options, please see: +# https://github.com/browserslist/browserslist#queries + +# You can see what browsers were selected by your queries by running: +# npx browserslist + +> 0.5% +last 2 versions +Firefox ESR +not dead +not IE 9-11 # For IE 9-11 support, remove 'not'. \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/e2e/protractor.conf.js b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/e2e/protractor.conf.js new file mode 100644 index 0000000..7c798cf --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/e2e/protractor.conf.js @@ -0,0 +1,32 @@ +// @ts-check +// Protractor configuration file, see link for more information +// https://github.com/angular/protractor/blob/master/lib/config.ts + +const { SpecReporter } = require('jasmine-spec-reporter'); + +/** + * @type { import("protractor").Config } + */ +exports.config = { + allScriptsTimeout: 11000, + specs: [ + './src/**/*.e2e-spec.ts' + ], + capabilities: { + browserName: 'chrome' + }, + directConnect: true, + baseUrl: 'http://localhost:4200/', + framework: 'jasmine', + jasmineNodeOpts: { + showColors: true, + defaultTimeoutInterval: 30000, + print: function() {} + }, + onPrepare() { + require('ts-node').register({ + project: require('path').join(__dirname, './tsconfig.json') + }); + jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); + } +}; \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/e2e/src/app.e2e-spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/e2e/src/app.e2e-spec.ts new file mode 100644 index 0000000..98d296a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/e2e/src/app.e2e-spec.ts @@ -0,0 +1,23 @@ +import { AppPage } from './app.po'; +import { browser, logging } from 'protractor'; + +describe('workspace-project App', () => { + let page: AppPage; + + beforeEach(() => { + page = new AppPage(); + }); + + it('should display welcome message', () => { + page.navigateTo(); + expect(page.getTitleText()).toEqual('angularclarity app is running!'); + }); + + afterEach(async () => { + // Assert that there are no errors emitted from the browser + const logs = await browser.manage().logs().get(logging.Type.BROWSER); + expect(logs).not.toContain(jasmine.objectContaining({ + level: logging.Level.SEVERE, + } as logging.Entry)); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/e2e/src/app.po.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/e2e/src/app.po.ts new file mode 100644 index 0000000..b68475e --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/e2e/src/app.po.ts @@ -0,0 +1,11 @@ +import { browser, by, element } from 'protractor'; + +export class AppPage { + navigateTo(): Promise { + return browser.get(browser.baseUrl) as Promise; + } + + getTitleText(): Promise { + return element(by.css('app-root .content span')).getText() as Promise; + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/e2e/tsconfig.json b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/e2e/tsconfig.json new file mode 100644 index 0000000..39b800f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/e2e/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/e2e", + "module": "commonjs", + "target": "es5", + "types": [ + "jasmine", + "jasminewd2", + "node" + ] + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/karma.conf.js b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/karma.conf.js new file mode 100644 index 0000000..26cf885 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, './coverage/ang'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/package-lock.json b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/package-lock.json new file mode 100644 index 0000000..430863f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/package-lock.json @@ -0,0 +1,14862 @@ +{ + "name": "angular-clarity", + "version": "16.0.4", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "angular-clarity", + "version": "16.0.4", + "dependencies": { + "@angular/animations": "^16.0.4", + "@angular/cdk": "^16.2.4", + "@angular/common": "^16.0.4", + "@angular/compiler": "^16.0.4", + "@angular/core": "^16.0.4", + "@angular/forms": "^16.0.4", + "@angular/platform-browser": "^16.0.4", + "@angular/platform-browser-dynamic": "^16.0.4", + "@angular/router": "^16.0.4", + "@auth0/angular-jwt": "^5.1.2", + "@cds/core": "^6.9.0", + "@ckeditor/ckeditor5-angular": "^7.0.1", + "@ckeditor/ckeditor5-build-classic": "^40.0.0", + "@clr/angular": "^15.5.0", + "@clr/core": "^4.0.15", + "@clr/icons": "^13.0.2", + "@clr/ui": "^15.5.0", + "@ctrl/ngx-codemirror": "^7.0.0", + "@ngx-translate/core": "^16.0.3", + "@ngx-translate/http-loader": "^16.0.0", + "@swimlane/ngx-charts": "^20.4.1", + "@webcomponents/custom-elements": "^1.6.0", + "@webcomponents/webcomponentsjs": "^2.8.0", + "angular-gridster2": "^16.0.0", + "angularx-qrcode": "^16.0.2", + "chart.js": "^4.4.0", + "dom-to-image": "^2.6.0", + "express": "^4.18.2", + "file-saver": "^2.0.5", + "highcharts": "^11.1.0", + "highcharts-angular": "^3.1.2", + "jquery": "^3.7.1", + "jspdf": "^2.5.1", + "jszip": "^3.10.1", + "lit-html": "^3.1.0", + "lodash": "^4.17.21", + "moment": "^2.29.4", + "ng-dynamic-component": "^10.1.1", + "ng2-charts": "^5.0.3", + "ng2-ckeditor": "^1.3.7", + "ng2-search-filter": "^0.5.1", + "ngx-captcha": "^13.0.0", + "ngx-chips": "^3.0.0", + "ngx-cookie-service": "^16.0.0", + "ngx-drag-drop": "^16.1.0", + "ngx-image-cropper": "^7.0.2", + "ngx-toastr": "^17.0.2", + "numeral": "^2.0.6", + "rxjs": "^7.8.1", + "sweetalert2": "^11.4.8", + "tslib": "^2.5.2", + "xlsx": "https://cdn.sheetjs.com/xlsx-0.19.3/xlsx-0.19.3.tgz", + "zone.js": "~0.13.0" + }, + "devDependencies": { + "@angular-devkit/build-angular": "^16.0.4", + "@angular/cli": "^16.0.4", + "@angular/compiler-cli": "^16.0.4", + "@types/jasmine": "~4.3.2", + "@types/jasminewd2": "~2.0.10", + "@types/node": "^20.2.5", + "jasmine-core": "~5.0.0", + "jasmine-spec-reporter": "~7.0.0", + "karma": "~6.4.2", + "karma-chrome-launcher": "~3.2.0", + "karma-coverage-istanbul-reporter": "~3.0.3", + "karma-jasmine": "~5.1.0", + "karma-jasmine-html-reporter": "^2.0.0", + "ts-node": "^10.9.1", + "tslint": "~6.1.3", + "typescript": "^5.1.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@angular-devkit/architect": { + "version": "0.1602.12", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1602.12.tgz", + "integrity": "sha512-19Fwwfx+KvJ01SyI6cstRgqT9+cwer8Ro1T27t1JqlGyOX8tY3pV78ulwxy2+wCzPjR18V6W7cb7Cv6fyK4xog==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "16.2.12", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/build-angular": { + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-16.2.12.tgz", + "integrity": "sha512-VVGKZ0N3gyR0DP7VrcZl4io3ruWYT94mrlyJsJMLlrYy/EX8JCvqrJC9c+dscrtKjhZzjwdyhszkJQY4JfwACA==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "2.2.1", + "@angular-devkit/architect": "0.1602.12", + "@angular-devkit/build-webpack": "0.1602.12", + "@angular-devkit/core": "16.2.12", + "@babel/core": "7.22.9", + "@babel/generator": "7.22.9", + "@babel/helper-annotate-as-pure": "7.22.5", + "@babel/helper-split-export-declaration": "7.22.6", + "@babel/plugin-proposal-async-generator-functions": "7.20.7", + "@babel/plugin-transform-async-to-generator": "7.22.5", + "@babel/plugin-transform-runtime": "7.22.9", + "@babel/preset-env": "7.22.9", + "@babel/runtime": "7.22.6", + "@babel/template": "7.22.5", + "@discoveryjs/json-ext": "0.5.7", + "@ngtools/webpack": "16.2.12", + "@vitejs/plugin-basic-ssl": "1.0.1", + "ansi-colors": "4.1.3", + "autoprefixer": "10.4.14", + "babel-loader": "9.1.3", + "babel-plugin-istanbul": "6.1.1", + "browserslist": "^4.21.5", + "chokidar": "3.5.3", + "copy-webpack-plugin": "11.0.0", + "critters": "0.0.20", + "css-loader": "6.8.1", + "esbuild-wasm": "0.18.17", + "fast-glob": "3.3.1", + "guess-parser": "0.4.22", + "https-proxy-agent": "5.0.1", + "inquirer": "8.2.4", + "jsonc-parser": "3.2.0", + "karma-source-map-support": "1.4.0", + "less": "4.1.3", + "less-loader": "11.1.0", + "license-webpack-plugin": "4.0.2", + "loader-utils": "3.2.1", + "magic-string": "0.30.1", + "mini-css-extract-plugin": "2.7.6", + "mrmime": "1.0.1", + "open": "8.4.2", + "ora": "5.4.1", + "parse5-html-rewriting-stream": "7.0.0", + "picomatch": "2.3.1", + "piscina": "4.0.0", + "postcss": "8.4.31", + "postcss-loader": "7.3.3", + "resolve-url-loader": "5.0.0", + "rxjs": "7.8.1", + "sass": "1.64.1", + "sass-loader": "13.3.2", + "semver": "7.5.4", + "source-map-loader": "4.0.1", + "source-map-support": "0.5.21", + "terser": "5.19.2", + "text-table": "0.2.0", + "tree-kill": "1.2.2", + "tslib": "2.6.1", + "vite": "4.5.2", + "webpack": "5.88.2", + "webpack-dev-middleware": "6.1.1", + "webpack-dev-server": "4.15.1", + "webpack-merge": "5.9.0", + "webpack-subresource-integrity": "5.1.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "optionalDependencies": { + "esbuild": "0.18.17" + }, + "peerDependencies": { + "@angular/compiler-cli": "^16.0.0", + "@angular/localize": "^16.0.0", + "@angular/platform-server": "^16.0.0", + "@angular/service-worker": "^16.0.0", + "jest": "^29.5.0", + "jest-environment-jsdom": "^29.5.0", + "karma": "^6.3.0", + "ng-packagr": "^16.0.0", + "protractor": "^7.0.0", + "tailwindcss": "^2.0.0 || ^3.0.0", + "typescript": ">=4.9.3 <5.2" + }, + "peerDependenciesMeta": { + "@angular/localize": { + "optional": true + }, + "@angular/platform-server": { + "optional": true + }, + "@angular/service-worker": { + "optional": true + }, + "jest": { + "optional": true + }, + "jest-environment-jsdom": { + "optional": true + }, + "karma": { + "optional": true + }, + "ng-packagr": { + "optional": true + }, + "protractor": { + "optional": true + }, + "tailwindcss": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/tslib": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", + "dev": true + }, + "node_modules/@angular-devkit/build-webpack": { + "version": "0.1602.12", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1602.12.tgz", + "integrity": "sha512-1lmR4jCkxPJuAFXReesEY3CB+/5jSebGE5ry6qJJvNm6kuSc9bzfTytrcwosVY+Q7kAA2ij7kAYw0loGbTjLWA==", + "dev": true, + "dependencies": { + "@angular-devkit/architect": "0.1602.12", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "webpack": "^5.30.0", + "webpack-dev-server": "^4.0.0" + } + }, + "node_modules/@angular-devkit/core": { + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.2.12.tgz", + "integrity": "sha512-o6ziQs+EcEonFezrsA46jbZqkQrs4ckS1bAQj93g5ZjGtieUz8l/U3lclvKpL/iEzWkGVViSYuP2KyW2oqTDiQ==", + "dev": true, + "dependencies": { + "ajv": "8.12.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.2.0", + "picomatch": "2.3.1", + "rxjs": "7.8.1", + "source-map": "0.7.4" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/schematics": { + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.2.12.tgz", + "integrity": "sha512-lf/Nz2o875pllxGNUcI2by4rctfRsOZOxvaLq2UaH6XG6Re9tqeNfn40a8qXrr9/IYntXnlvEid/pd9e8gFBIw==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "16.2.12", + "jsonc-parser": "3.2.0", + "magic-string": "0.30.1", + "ora": "5.4.1", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular/animations": { + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-16.2.12.tgz", + "integrity": "sha512-MD0ElviEfAJY8qMOd6/jjSSvtqER2RDAi0lxe6EtUacC1DHCYkaPrKW4vLqY+tmZBg1yf+6n+uS77pXcHHcA3w==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/core": "16.2.12" + } + }, + "node_modules/@angular/cdk": { + "version": "16.2.14", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-16.2.14.tgz", + "integrity": "sha512-n6PrGdiVeSTEmM/HEiwIyg6YQUUymZrb5afaNLGFRM5YL0Y8OBqd+XhCjb0OfD/AfgCUtedVEPwNqrfW8KzgGw==", + "dependencies": { + "tslib": "^2.3.0" + }, + "optionalDependencies": { + "parse5": "^7.1.2" + }, + "peerDependencies": { + "@angular/common": "^16.0.0 || ^17.0.0", + "@angular/core": "^16.0.0 || ^17.0.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/cli": { + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-16.2.12.tgz", + "integrity": "sha512-Pcbiraoqdw4rR2Ey5Ooy0ESLS1Ffbjkb6sPfinKRkHmAvyqsmlvkfbB/qK8GrzDSFSWvAKMMXRw9l8nbjvQEXg==", + "dev": true, + "dependencies": { + "@angular-devkit/architect": "0.1602.12", + "@angular-devkit/core": "16.2.12", + "@angular-devkit/schematics": "16.2.12", + "@schematics/angular": "16.2.12", + "@yarnpkg/lockfile": "1.1.0", + "ansi-colors": "4.1.3", + "ini": "4.1.1", + "inquirer": "8.2.4", + "jsonc-parser": "3.2.0", + "npm-package-arg": "10.1.0", + "npm-pick-manifest": "8.0.1", + "open": "8.4.2", + "ora": "5.4.1", + "pacote": "15.2.0", + "resolve": "1.22.2", + "semver": "7.5.4", + "symbol-observable": "4.0.0", + "yargs": "17.7.2" + }, + "bin": { + "ng": "bin/ng.js" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular/common": { + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-16.2.12.tgz", + "integrity": "sha512-B+WY/cT2VgEaz9HfJitBmgdk4I333XG/ybC98CMC4Wz8E49T8yzivmmxXB3OD6qvjcOB6ftuicl6WBqLbZNg2w==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/core": "16.2.12", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/compiler": { + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-16.2.12.tgz", + "integrity": "sha512-6SMXUgSVekGM7R6l1Z9rCtUGtlg58GFmgbpMCsGf+VXxP468Njw8rjT2YZkf5aEPxEuRpSHhDYjqz7n14cwCXQ==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/core": "16.2.12" + }, + "peerDependenciesMeta": { + "@angular/core": { + "optional": true + } + } + }, + "node_modules/@angular/compiler-cli": { + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-16.2.12.tgz", + "integrity": "sha512-pWSrr152562ujh6lsFZR8NfNc5Ljj+zSTQO44DsuB0tZjwEpnRcjJEgzuhGXr+CoiBf+jTSPZKemtSktDk5aaA==", + "dev": true, + "dependencies": { + "@babel/core": "7.23.2", + "@jridgewell/sourcemap-codec": "^1.4.14", + "chokidar": "^3.0.0", + "convert-source-map": "^1.5.1", + "reflect-metadata": "^0.1.2", + "semver": "^7.0.0", + "tslib": "^2.3.0", + "yargs": "^17.2.1" + }, + "bin": { + "ng-xi18n": "bundles/src/bin/ng_xi18n.js", + "ngc": "bundles/src/bin/ngc.js", + "ngcc": "bundles/ngcc/index.js" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/compiler": "16.2.12", + "typescript": ">=4.9.3 <5.2" + } + }, + "node_modules/@angular/compiler-cli/node_modules/@babel/core": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz", + "integrity": "sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helpers": "^7.23.2", + "@babel/parser": "^7.23.0", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.2", + "@babel/types": "^7.23.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@angular/compiler-cli/node_modules/@babel/core/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/@angular/compiler-cli/node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@angular/compiler-cli/node_modules/@babel/generator": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.6", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@angular/compiler-cli/node_modules/@babel/template": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz", + "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@angular/core": { + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-16.2.12.tgz", + "integrity": "sha512-GLLlDeke/NjroaLYOks0uyzFVo6HyLl7VOm0K1QpLXnYvW63W9Ql/T3yguRZa7tRkOAeFZ3jw+1wnBD4O8MoUA==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "rxjs": "^6.5.3 || ^7.4.0", + "zone.js": "~0.13.0" + } + }, + "node_modules/@angular/forms": { + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-16.2.12.tgz", + "integrity": "sha512-1Eao89hlBgLR3v8tU91vccn21BBKL06WWxl7zLpQmG6Hun+2jrThgOE4Pf3os4fkkbH4Apj0tWL2fNIWe/blbw==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/common": "16.2.12", + "@angular/core": "16.2.12", + "@angular/platform-browser": "16.2.12", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/platform-browser": { + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-16.2.12.tgz", + "integrity": "sha512-NnH7ju1iirmVEsUq432DTm0nZBGQsBrU40M3ZeVHMQ2subnGiyUs3QyzDz8+VWLL/T5xTxWLt9BkDn65vgzlIQ==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/animations": "16.2.12", + "@angular/common": "16.2.12", + "@angular/core": "16.2.12" + }, + "peerDependenciesMeta": { + "@angular/animations": { + "optional": true + } + } + }, + "node_modules/@angular/platform-browser-dynamic": { + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-16.2.12.tgz", + "integrity": "sha512-ya54jerNgreCVAR278wZavwjrUWImMr2F8yM5n9HBvsMBbFaAQ83anwbOEiHEF2BlR+gJiEBLfpuPRMw20pHqw==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/common": "16.2.12", + "@angular/compiler": "16.2.12", + "@angular/core": "16.2.12", + "@angular/platform-browser": "16.2.12" + } + }, + "node_modules/@angular/router": { + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-16.2.12.tgz", + "integrity": "sha512-aU6QnYSza005V9P3W6PpkieL56O0IHps96DjqI1RS8yOJUl3THmokqYN4Fm5+HXy4f390FN9i6ftadYQDKeWmA==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/common": "16.2.12", + "@angular/core": "16.2.12", + "@angular/platform-browser": "16.2.12", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@assemblyscript/loader": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz", + "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==", + "dev": true + }, + "node_modules/@auth0/angular-jwt": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@auth0/angular-jwt/-/angular-jwt-5.2.0.tgz", + "integrity": "sha512-9FS2L0QwGNlxA/zgeehCcsR9CZscouyXkoIj1fODM36A8BLfdzg9k9DWAXUQ2Drjk0AypGAFzeNZR4vsLMhdeQ==", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/common": ">=14.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.9.tgz", + "integrity": "sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.5", + "@babel/generator": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.9", + "@babel/helper-module-transforms": "^7.22.9", + "@babel/helpers": "^7.22.6", + "@babel/parser": "^7.22.7", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.8", + "@babel/types": "^7.22.5", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.9.tgz", + "integrity": "sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.23.10", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.10.tgz", + "integrity": "sha512-2XpP2XhkXzgxecPNEEK8Vz8Asj9aRxt08oKOqtiZoqV2UGZ5T+EkyP9sXQ9nwMxBIG34a7jmasVqoMop7VdPUw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.23.0", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", + "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name/node_modules/@babel/template": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz", + "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", + "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", + "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function/node_modules/@babel/template": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz", + "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.9.tgz", + "integrity": "sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==", + "dev": true, + "dependencies": { + "@babel/template": "^7.23.9", + "@babel/traverse": "^7.23.9", + "@babel/types": "^7.23.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers/node_modules/@babel/template": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz", + "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", + "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz", + "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", + "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", + "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead.", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-unicode-property-regex instead.", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", + "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", + "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", + "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz", + "integrity": "sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", + "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", + "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", + "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", + "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", + "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.23.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz", + "integrity": "sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-split-export-declaration": "^7.22.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", + "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties/node_modules/@babel/template": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz", + "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", + "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", + "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", + "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", + "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", + "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", + "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz", + "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", + "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", + "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", + "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", + "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", + "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", + "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", + "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.9.tgz", + "integrity": "sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", + "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", + "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", + "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", + "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz", + "integrity": "sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.23.3", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", + "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", + "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", + "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", + "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", + "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", + "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", + "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", + "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", + "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.9.tgz", + "integrity": "sha512-9KjBH61AGJetCPYp/IEyLEp47SyybZb0nDRpBvmtEkm+rUIwxdlKpyNHI1TmsGkeuLclJdleQHRZ8XLBnnh8CQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "babel-plugin-polyfill-corejs2": "^0.4.4", + "babel-plugin-polyfill-corejs3": "^0.8.2", + "babel-plugin-polyfill-regenerator": "^0.5.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", + "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", + "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", + "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", + "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", + "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", + "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", + "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", + "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", + "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.9.tgz", + "integrity": "sha512-wNi5H/Emkhll/bqPjsjQorSykrlfY5OWakd6AulLvMEytpKasMVUpVy8RL4qBIBs5Ac6/5i0/Rv0b/Fg6Eag/g==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.9", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.5", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.5", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.22.5", + "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.22.5", + "@babel/plugin-transform-async-generator-functions": "^7.22.7", + "@babel/plugin-transform-async-to-generator": "^7.22.5", + "@babel/plugin-transform-block-scoped-functions": "^7.22.5", + "@babel/plugin-transform-block-scoping": "^7.22.5", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-class-static-block": "^7.22.5", + "@babel/plugin-transform-classes": "^7.22.6", + "@babel/plugin-transform-computed-properties": "^7.22.5", + "@babel/plugin-transform-destructuring": "^7.22.5", + "@babel/plugin-transform-dotall-regex": "^7.22.5", + "@babel/plugin-transform-duplicate-keys": "^7.22.5", + "@babel/plugin-transform-dynamic-import": "^7.22.5", + "@babel/plugin-transform-exponentiation-operator": "^7.22.5", + "@babel/plugin-transform-export-namespace-from": "^7.22.5", + "@babel/plugin-transform-for-of": "^7.22.5", + "@babel/plugin-transform-function-name": "^7.22.5", + "@babel/plugin-transform-json-strings": "^7.22.5", + "@babel/plugin-transform-literals": "^7.22.5", + "@babel/plugin-transform-logical-assignment-operators": "^7.22.5", + "@babel/plugin-transform-member-expression-literals": "^7.22.5", + "@babel/plugin-transform-modules-amd": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.22.5", + "@babel/plugin-transform-modules-systemjs": "^7.22.5", + "@babel/plugin-transform-modules-umd": "^7.22.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.22.5", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.5", + "@babel/plugin-transform-numeric-separator": "^7.22.5", + "@babel/plugin-transform-object-rest-spread": "^7.22.5", + "@babel/plugin-transform-object-super": "^7.22.5", + "@babel/plugin-transform-optional-catch-binding": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.22.6", + "@babel/plugin-transform-parameters": "^7.22.5", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.5", + "@babel/plugin-transform-property-literals": "^7.22.5", + "@babel/plugin-transform-regenerator": "^7.22.5", + "@babel/plugin-transform-reserved-words": "^7.22.5", + "@babel/plugin-transform-shorthand-properties": "^7.22.5", + "@babel/plugin-transform-spread": "^7.22.5", + "@babel/plugin-transform-sticky-regex": "^7.22.5", + "@babel/plugin-transform-template-literals": "^7.22.5", + "@babel/plugin-transform-typeof-symbol": "^7.22.5", + "@babel/plugin-transform-unicode-escapes": "^7.22.5", + "@babel/plugin-transform-unicode-property-regex": "^7.22.5", + "@babel/plugin-transform-unicode-regex": "^7.22.5", + "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.22.5", + "babel-plugin-polyfill-corejs2": "^0.4.4", + "babel-plugin-polyfill-corejs3": "^0.8.2", + "babel-plugin-polyfill-regenerator": "^0.5.1", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6.tgz", + "integrity": "sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, + "node_modules/@babel/runtime": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.6.tgz", + "integrity": "sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==", + "dependencies": { + "regenerator-runtime": "^0.13.11" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", + "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.9.tgz", + "integrity": "sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/generator": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.6", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz", + "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@cds/city": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@cds/city/-/city-1.1.0.tgz", + "integrity": "sha512-S9K+Q39BGOghyLHmR0Wdcmu1i1noSUk8HcvMj+3IaohZw02WFd99aPTQDHJeseXrXZP3CNovaSlePI0R11NcFg==", + "optional": true + }, + "node_modules/@cds/core": { + "version": "6.9.2", + "resolved": "https://registry.npmjs.org/@cds/core/-/core-6.9.2.tgz", + "integrity": "sha512-Tx5L8/kLueBoSpu18w9eLonqFk1CVromp9bBXk6FLVVmYghE/lSt/WsYi6c0xyv7rJZpcHoGS/gh5p9Erelk3Q==", + "dependencies": { + "lit": "^2.1.3", + "ramda": "^0.29.0", + "tslib": "^2.3.1" + }, + "optionalDependencies": { + "@cds/city": "^1.1.0", + "modern-normalize": "1.1.0" + } + }, + "node_modules/@ckeditor/ckeditor5-adapter-ckfinder": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-adapter-ckfinder/-/ckeditor5-adapter-ckfinder-40.2.0.tgz", + "integrity": "sha512-YKdydg4DzaMk91saOL55KBNQE3St2NEj1E9hlk9CzHKQaHc79dYzHDNBolSE7ZmzkNJ4ToVbY7kRW5CDGfG5Rg==", + "dependencies": { + "ckeditor5": "40.2.0" + } + }, + "node_modules/@ckeditor/ckeditor5-angular": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-angular/-/ckeditor5-angular-7.0.1.tgz", + "integrity": "sha512-bHBmBMa9PAXk1MMjeq+9nV/HVWdwv36kRjpOr4JUiYYxRFdtPBXWj+3Jb9TUymyWchhxMA440iYJVoYgVw3lOA==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": ">=13.0.0", + "@angular/core": ">=13.0.0", + "@angular/forms": ">=13.0.0", + "@ckeditor/ckeditor5-core": ">=37.0.0", + "@ckeditor/ckeditor5-engine": ">=37.0.0", + "@ckeditor/ckeditor5-utils": ">=37.0.0", + "@ckeditor/ckeditor5-watchdog": ">=37.0.0", + "rxjs": ">=6.0.0" + } + }, + "node_modules/@ckeditor/ckeditor5-autoformat": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-autoformat/-/ckeditor5-autoformat-40.2.0.tgz", + "integrity": "sha512-F3w5k7ti5l6V8U07eSQ3gup3ivltRZQXdtvstBXMmTzDb2ceazNcUDLb6TKSHp5y30ETN0dRGgbhx9xiDL0TXg==", + "dependencies": { + "ckeditor5": "40.2.0" + } + }, + "node_modules/@ckeditor/ckeditor5-basic-styles": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-basic-styles/-/ckeditor5-basic-styles-40.2.0.tgz", + "integrity": "sha512-P7jYddLnRpaR4zVCqDa8InsZ6YNRHdF0RrX6+Uz81+A1IfyfmSd+5IaiLxxdnFWQ4JlEhJutjy9vMwSmOhZocQ==", + "dependencies": { + "ckeditor5": "40.2.0" + } + }, + "node_modules/@ckeditor/ckeditor5-block-quote": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-block-quote/-/ckeditor5-block-quote-40.2.0.tgz", + "integrity": "sha512-t03Yp+MeAyQhwdGZqUlkJEx25VSiigpzkIGGOhccSaTIIZ9XcWDkrTevDhwA4Pq4Q9IRQ8Loj3KCVSBuAqkBgw==", + "dependencies": { + "ckeditor5": "40.2.0" + } + }, + "node_modules/@ckeditor/ckeditor5-build-classic": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-build-classic/-/ckeditor5-build-classic-40.2.0.tgz", + "integrity": "sha512-b9zt1kU0S2Azco8mXraxj56pctHRs9y/XfdVrpFzxiRbbzyBZ42WgX1ThJNTqH6WkXCxDPYSbqPhNIvPHpuEyg==", + "dependencies": { + "@ckeditor/ckeditor5-adapter-ckfinder": "40.2.0", + "@ckeditor/ckeditor5-autoformat": "40.2.0", + "@ckeditor/ckeditor5-basic-styles": "40.2.0", + "@ckeditor/ckeditor5-block-quote": "40.2.0", + "@ckeditor/ckeditor5-ckbox": "40.2.0", + "@ckeditor/ckeditor5-ckfinder": "40.2.0", + "@ckeditor/ckeditor5-cloud-services": "40.2.0", + "@ckeditor/ckeditor5-easy-image": "40.2.0", + "@ckeditor/ckeditor5-editor-classic": "40.2.0", + "@ckeditor/ckeditor5-essentials": "40.2.0", + "@ckeditor/ckeditor5-heading": "40.2.0", + "@ckeditor/ckeditor5-image": "40.2.0", + "@ckeditor/ckeditor5-indent": "40.2.0", + "@ckeditor/ckeditor5-link": "40.2.0", + "@ckeditor/ckeditor5-list": "40.2.0", + "@ckeditor/ckeditor5-media-embed": "40.2.0", + "@ckeditor/ckeditor5-paragraph": "40.2.0", + "@ckeditor/ckeditor5-paste-from-office": "40.2.0", + "@ckeditor/ckeditor5-table": "40.2.0", + "@ckeditor/ckeditor5-typing": "40.2.0" + } + }, + "node_modules/@ckeditor/ckeditor5-ckbox": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-ckbox/-/ckeditor5-ckbox-40.2.0.tgz", + "integrity": "sha512-w/A3RA7qpR7Scl4hgUTt8j+oV7oD9IFPNGTpp0xoyfWEV8Ymm2NrMAvV0PAJiavYS3+FT4GO4RBOM6BvLHuV3w==", + "dependencies": { + "blurhash": "2.0.5", + "ckeditor5": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-ckfinder": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-ckfinder/-/ckeditor5-ckfinder-40.2.0.tgz", + "integrity": "sha512-kiW5TZOLHYd6hhWeDIrep8FXLo0q14b0e0Jit0XSi3z4PQfdDSRk9UuMJPkkf4EdF3PUSdMJ9bccJG76DYXzFQ==", + "dependencies": { + "ckeditor5": "40.2.0" + } + }, + "node_modules/@ckeditor/ckeditor5-clipboard": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-clipboard/-/ckeditor5-clipboard-40.2.0.tgz", + "integrity": "sha512-8/xPH9/i86ukcEiHdmTgNuPVJeYTrivbx5ZYqycPO4Eem7VM99gIbOe7pIYpuV+klr9ymVxIHbGyTJDJ3oUO8A==", + "dependencies": { + "@ckeditor/ckeditor5-core": "40.2.0", + "@ckeditor/ckeditor5-engine": "40.2.0", + "@ckeditor/ckeditor5-ui": "40.2.0", + "@ckeditor/ckeditor5-utils": "40.2.0", + "@ckeditor/ckeditor5-widget": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-clipboard/node_modules/@ckeditor/ckeditor5-core": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-core/-/ckeditor5-core-40.2.0.tgz", + "integrity": "sha512-0fqIaN+ZhkXXA3mpBN+alycBzPMc8ruO8VrP0OnvCjowqZVS2HXC2AaXNBdxc75xGI3ScXIor7FsgFHxVJIYYQ==", + "dependencies": { + "@ckeditor/ckeditor5-engine": "40.2.0", + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-clipboard/node_modules/@ckeditor/ckeditor5-engine": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-40.2.0.tgz", + "integrity": "sha512-sgboUX8Ps+LcEgywyT3BeK1nzLHjNVIiZU1qvRxR3ixzIw4w2xRNXCGfESWLW5Y5rv9+ypUCrX61oLnZU64PQQ==", + "dependencies": { + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-clipboard/node_modules/@ckeditor/ckeditor5-utils": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-40.2.0.tgz", + "integrity": "sha512-f+kTJBwwk7Y/LXm8pEPxBTXVlJwQrH7Levzye9zxEDB0Jtj7+brGr87o666fPmL/ATQc5M+VPhbvnk2sOv7WKg==", + "dependencies": { + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-cloud-services": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-cloud-services/-/ckeditor5-cloud-services-40.2.0.tgz", + "integrity": "sha512-xrPQjFGGy1ZfXyKIMw0uzn7OIriSv13YMw0M2ZTh+V1jRN1HW9KzzNb2DlQc+6wQfRk0bq69XGLp3M296/cVTQ==", + "dependencies": { + "ckeditor5": "40.2.0" + } + }, + "node_modules/@ckeditor/ckeditor5-core": { + "version": "41.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-core/-/ckeditor5-core-41.1.0.tgz", + "integrity": "sha512-Z23stcZ5lx1jsQa+9jybyz1h/HvIYqpKo2OW9s27KD9oAvbNNYvsNqtCZMDecik/7ofr8wiWC/xnzCk7QRwmuA==", + "peer": true, + "dependencies": { + "@ckeditor/ckeditor5-engine": "41.1.0", + "@ckeditor/ckeditor5-utils": "41.1.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-easy-image": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-easy-image/-/ckeditor5-easy-image-40.2.0.tgz", + "integrity": "sha512-bE9YHGYEY1ql5mIqZSI2fkoBA4th28M0GDaJutwJYKM3t+Bost3Zh1UfmYKE2kvYgmeLY1L3hjQpN9w7NYyLpw==", + "dependencies": { + "ckeditor5": "40.2.0" + } + }, + "node_modules/@ckeditor/ckeditor5-editor-classic": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-editor-classic/-/ckeditor5-editor-classic-40.2.0.tgz", + "integrity": "sha512-dftfDBxANOgqgQZ4SB3YTsEV/XX1u0g9jopbOBwqIABnVVa8zoGcktgFdGnLUFk51sL65baSx2z8Z1NNYdZcFQ==", + "dependencies": { + "ckeditor5": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-engine": { + "version": "41.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-41.1.0.tgz", + "integrity": "sha512-YYZKXESH6iml9BT3EIlYgKgkH/DqeW2Xe0IzhuC+T7OqemBYp5x/HMP7tQMjsRGImc4+4iyTZ+8pJTAlU5pJyQ==", + "peer": true, + "dependencies": { + "@ckeditor/ckeditor5-utils": "41.1.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-enter": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-enter/-/ckeditor5-enter-40.2.0.tgz", + "integrity": "sha512-GjTRaKNX8QEDJ3YYKG3GfPZfGHrcigGBxbo+1WDT7NaOsR2DA/CIZfHlAPfgJDAMV17bhWsT3gy3+oQZsExtnQ==", + "dependencies": { + "@ckeditor/ckeditor5-core": "40.2.0", + "@ckeditor/ckeditor5-engine": "40.2.0", + "@ckeditor/ckeditor5-utils": "40.2.0" + } + }, + "node_modules/@ckeditor/ckeditor5-enter/node_modules/@ckeditor/ckeditor5-core": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-core/-/ckeditor5-core-40.2.0.tgz", + "integrity": "sha512-0fqIaN+ZhkXXA3mpBN+alycBzPMc8ruO8VrP0OnvCjowqZVS2HXC2AaXNBdxc75xGI3ScXIor7FsgFHxVJIYYQ==", + "dependencies": { + "@ckeditor/ckeditor5-engine": "40.2.0", + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-enter/node_modules/@ckeditor/ckeditor5-engine": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-40.2.0.tgz", + "integrity": "sha512-sgboUX8Ps+LcEgywyT3BeK1nzLHjNVIiZU1qvRxR3ixzIw4w2xRNXCGfESWLW5Y5rv9+ypUCrX61oLnZU64PQQ==", + "dependencies": { + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-enter/node_modules/@ckeditor/ckeditor5-utils": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-40.2.0.tgz", + "integrity": "sha512-f+kTJBwwk7Y/LXm8pEPxBTXVlJwQrH7Levzye9zxEDB0Jtj7+brGr87o666fPmL/ATQc5M+VPhbvnk2sOv7WKg==", + "dependencies": { + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-essentials": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-essentials/-/ckeditor5-essentials-40.2.0.tgz", + "integrity": "sha512-7iUUy0Uwiei4yLrn145SOcyzriMeVFVc5ontQkxQE5b9alFdAc/6ZoDPZqwD7V0zi5RQ/2YsoVMRLFa4hbPfNA==", + "dependencies": { + "ckeditor5": "40.2.0" + } + }, + "node_modules/@ckeditor/ckeditor5-heading": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-heading/-/ckeditor5-heading-40.2.0.tgz", + "integrity": "sha512-uDT1sttMy+KrKi90jnqEI43886o1wfKrROWqaMbmKOerTbIi58GNH9LvX04sf1RyHV3+3566RRmB248fsLkYjA==", + "dependencies": { + "ckeditor5": "40.2.0" + } + }, + "node_modules/@ckeditor/ckeditor5-image": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-image/-/ckeditor5-image-40.2.0.tgz", + "integrity": "sha512-0Dunw1o5k2+5Q5XiWLDG1r8k9awosfIFuDZwqKJGWtDaNE4QQbJ9+iJSwiiRw2QjcGr7D3JdH7xwJZFra7kYmA==", + "dependencies": { + "@ckeditor/ckeditor5-ui": "40.2.0", + "ckeditor5": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-indent": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-indent/-/ckeditor5-indent-40.2.0.tgz", + "integrity": "sha512-gSlRGoyAslB2OpqghimIY6Oiflf3Z2/MdLBzvFipU5N4X66cL29HuWZc/bOkcFzWwNeDK5LgzfLdvXNzkdv5Xw==", + "dependencies": { + "ckeditor5": "40.2.0" + } + }, + "node_modules/@ckeditor/ckeditor5-link": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-link/-/ckeditor5-link-40.2.0.tgz", + "integrity": "sha512-/r4Ti9USdrURBX+qutvyDGOb75sNuSgtXdI8xK503EVfx5yBIi6qsYIYWoFvnGJKkLYkVo+940ilduhwzq0M7g==", + "dependencies": { + "@ckeditor/ckeditor5-ui": "40.2.0", + "ckeditor5": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-list": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-list/-/ckeditor5-list-40.2.0.tgz", + "integrity": "sha512-lsQWSLSFRHRQ2AxA6vgTib9YELjF2J5jpR6H4RDW1gM//dL3FjvLxKPPN/V7rMcp15rrpSiOya+qB99l24DEpQ==", + "dependencies": { + "ckeditor5": "40.2.0" + } + }, + "node_modules/@ckeditor/ckeditor5-media-embed": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-media-embed/-/ckeditor5-media-embed-40.2.0.tgz", + "integrity": "sha512-ORY7VebL7UTuBG/4++UxzqEKjnlZZKAFqUrIom7xXpQNfo6oJFtZLnKYwESZ6iNk7NBOAeiHEecP2tKWyFQd1g==", + "dependencies": { + "@ckeditor/ckeditor5-ui": "40.2.0", + "ckeditor5": "40.2.0" + } + }, + "node_modules/@ckeditor/ckeditor5-paragraph": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-paragraph/-/ckeditor5-paragraph-40.2.0.tgz", + "integrity": "sha512-NotxWP1cKvbJSY1UwdTe/Oy1NnAj9Etsi4Z7XA908EvCsNSnFtzdMhYzLhFZJ18avrQFDa7PpSKSyN3M64CbSA==", + "dependencies": { + "@ckeditor/ckeditor5-core": "40.2.0", + "@ckeditor/ckeditor5-ui": "40.2.0", + "@ckeditor/ckeditor5-utils": "40.2.0" + } + }, + "node_modules/@ckeditor/ckeditor5-paragraph/node_modules/@ckeditor/ckeditor5-core": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-core/-/ckeditor5-core-40.2.0.tgz", + "integrity": "sha512-0fqIaN+ZhkXXA3mpBN+alycBzPMc8ruO8VrP0OnvCjowqZVS2HXC2AaXNBdxc75xGI3ScXIor7FsgFHxVJIYYQ==", + "dependencies": { + "@ckeditor/ckeditor5-engine": "40.2.0", + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-paragraph/node_modules/@ckeditor/ckeditor5-engine": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-40.2.0.tgz", + "integrity": "sha512-sgboUX8Ps+LcEgywyT3BeK1nzLHjNVIiZU1qvRxR3ixzIw4w2xRNXCGfESWLW5Y5rv9+ypUCrX61oLnZU64PQQ==", + "dependencies": { + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-paragraph/node_modules/@ckeditor/ckeditor5-utils": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-40.2.0.tgz", + "integrity": "sha512-f+kTJBwwk7Y/LXm8pEPxBTXVlJwQrH7Levzye9zxEDB0Jtj7+brGr87o666fPmL/ATQc5M+VPhbvnk2sOv7WKg==", + "dependencies": { + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-paste-from-office": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-paste-from-office/-/ckeditor5-paste-from-office-40.2.0.tgz", + "integrity": "sha512-kdk7uJlSa9mvyuNAwmIfV6Kc1tfWI6DbCs19jyseA/F0vySKibb0DsBVSZ7xa5ihcjphfJvwpypWYL0BYdYKLQ==", + "dependencies": { + "ckeditor5": "40.2.0" + } + }, + "node_modules/@ckeditor/ckeditor5-select-all": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-select-all/-/ckeditor5-select-all-40.2.0.tgz", + "integrity": "sha512-yaYCqhdMcoEH3BsilhweNdbOfuO/cexQ1r1/mYoBoW4CypIuAeq8J/3qLpvFaThmCRPzJBn1J7v2Yjs/0UnamA==", + "dependencies": { + "@ckeditor/ckeditor5-core": "40.2.0", + "@ckeditor/ckeditor5-ui": "40.2.0", + "@ckeditor/ckeditor5-utils": "40.2.0" + } + }, + "node_modules/@ckeditor/ckeditor5-select-all/node_modules/@ckeditor/ckeditor5-core": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-core/-/ckeditor5-core-40.2.0.tgz", + "integrity": "sha512-0fqIaN+ZhkXXA3mpBN+alycBzPMc8ruO8VrP0OnvCjowqZVS2HXC2AaXNBdxc75xGI3ScXIor7FsgFHxVJIYYQ==", + "dependencies": { + "@ckeditor/ckeditor5-engine": "40.2.0", + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-select-all/node_modules/@ckeditor/ckeditor5-engine": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-40.2.0.tgz", + "integrity": "sha512-sgboUX8Ps+LcEgywyT3BeK1nzLHjNVIiZU1qvRxR3ixzIw4w2xRNXCGfESWLW5Y5rv9+ypUCrX61oLnZU64PQQ==", + "dependencies": { + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-select-all/node_modules/@ckeditor/ckeditor5-utils": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-40.2.0.tgz", + "integrity": "sha512-f+kTJBwwk7Y/LXm8pEPxBTXVlJwQrH7Levzye9zxEDB0Jtj7+brGr87o666fPmL/ATQc5M+VPhbvnk2sOv7WKg==", + "dependencies": { + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-table": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-table/-/ckeditor5-table-40.2.0.tgz", + "integrity": "sha512-yODne7az/aJ9lsuI7w476pgGV2QBoH2tOKp3JFh/e2DdHC20637LCVd0cx8sUe3zk61X/eYPY+wOiRJx/mIUqg==", + "dependencies": { + "ckeditor5": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-typing": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-typing/-/ckeditor5-typing-40.2.0.tgz", + "integrity": "sha512-2E7LkmC4RHdenMUwow0EZDKxlbX00c5UHysUVT51EBGrXiJcN++0cqxQaeJzQ262oTDpk94qE5IZdGXt3ntzrw==", + "dependencies": { + "@ckeditor/ckeditor5-core": "40.2.0", + "@ckeditor/ckeditor5-engine": "40.2.0", + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-typing/node_modules/@ckeditor/ckeditor5-core": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-core/-/ckeditor5-core-40.2.0.tgz", + "integrity": "sha512-0fqIaN+ZhkXXA3mpBN+alycBzPMc8ruO8VrP0OnvCjowqZVS2HXC2AaXNBdxc75xGI3ScXIor7FsgFHxVJIYYQ==", + "dependencies": { + "@ckeditor/ckeditor5-engine": "40.2.0", + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-typing/node_modules/@ckeditor/ckeditor5-engine": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-40.2.0.tgz", + "integrity": "sha512-sgboUX8Ps+LcEgywyT3BeK1nzLHjNVIiZU1qvRxR3ixzIw4w2xRNXCGfESWLW5Y5rv9+ypUCrX61oLnZU64PQQ==", + "dependencies": { + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-typing/node_modules/@ckeditor/ckeditor5-utils": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-40.2.0.tgz", + "integrity": "sha512-f+kTJBwwk7Y/LXm8pEPxBTXVlJwQrH7Levzye9zxEDB0Jtj7+brGr87o666fPmL/ATQc5M+VPhbvnk2sOv7WKg==", + "dependencies": { + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-ui": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-ui/-/ckeditor5-ui-40.2.0.tgz", + "integrity": "sha512-K8oC9zrJokZD5Nl4uQjJMo8Couds0eHmfNI/go6iU4A4OAdDzph+W50QnyMed4etKnMdhvUSbnuZnPtQjnsvFA==", + "dependencies": { + "@ckeditor/ckeditor5-core": "40.2.0", + "@ckeditor/ckeditor5-utils": "40.2.0", + "color-convert": "2.0.1", + "color-parse": "1.4.2", + "lodash-es": "4.17.21", + "vanilla-colorful": "0.7.2" + } + }, + "node_modules/@ckeditor/ckeditor5-ui/node_modules/@ckeditor/ckeditor5-core": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-core/-/ckeditor5-core-40.2.0.tgz", + "integrity": "sha512-0fqIaN+ZhkXXA3mpBN+alycBzPMc8ruO8VrP0OnvCjowqZVS2HXC2AaXNBdxc75xGI3ScXIor7FsgFHxVJIYYQ==", + "dependencies": { + "@ckeditor/ckeditor5-engine": "40.2.0", + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-ui/node_modules/@ckeditor/ckeditor5-engine": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-40.2.0.tgz", + "integrity": "sha512-sgboUX8Ps+LcEgywyT3BeK1nzLHjNVIiZU1qvRxR3ixzIw4w2xRNXCGfESWLW5Y5rv9+ypUCrX61oLnZU64PQQ==", + "dependencies": { + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-ui/node_modules/@ckeditor/ckeditor5-utils": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-40.2.0.tgz", + "integrity": "sha512-f+kTJBwwk7Y/LXm8pEPxBTXVlJwQrH7Levzye9zxEDB0Jtj7+brGr87o666fPmL/ATQc5M+VPhbvnk2sOv7WKg==", + "dependencies": { + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-undo": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-undo/-/ckeditor5-undo-40.2.0.tgz", + "integrity": "sha512-k2VZS5x4SJtYk3zhdwHYg+D00DgD0iWR0H4qQgcWmQMFRipYvXJRixP3hSLZGJciQanPFeYcjZgxNQ+rU1s8ug==", + "dependencies": { + "@ckeditor/ckeditor5-core": "40.2.0", + "@ckeditor/ckeditor5-engine": "40.2.0", + "@ckeditor/ckeditor5-ui": "40.2.0" + } + }, + "node_modules/@ckeditor/ckeditor5-undo/node_modules/@ckeditor/ckeditor5-core": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-core/-/ckeditor5-core-40.2.0.tgz", + "integrity": "sha512-0fqIaN+ZhkXXA3mpBN+alycBzPMc8ruO8VrP0OnvCjowqZVS2HXC2AaXNBdxc75xGI3ScXIor7FsgFHxVJIYYQ==", + "dependencies": { + "@ckeditor/ckeditor5-engine": "40.2.0", + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-undo/node_modules/@ckeditor/ckeditor5-engine": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-40.2.0.tgz", + "integrity": "sha512-sgboUX8Ps+LcEgywyT3BeK1nzLHjNVIiZU1qvRxR3ixzIw4w2xRNXCGfESWLW5Y5rv9+ypUCrX61oLnZU64PQQ==", + "dependencies": { + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-undo/node_modules/@ckeditor/ckeditor5-utils": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-40.2.0.tgz", + "integrity": "sha512-f+kTJBwwk7Y/LXm8pEPxBTXVlJwQrH7Levzye9zxEDB0Jtj7+brGr87o666fPmL/ATQc5M+VPhbvnk2sOv7WKg==", + "dependencies": { + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-upload": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-upload/-/ckeditor5-upload-40.2.0.tgz", + "integrity": "sha512-AdJSKvWEQbSSyA/DfxbCHRhFN6S4ew4kuYETO57e6AS3aOuYGLBRdu9Mub7IAQcOyy1LL6ktr9u5WEOoWS2h0w==", + "dependencies": { + "@ckeditor/ckeditor5-core": "40.2.0", + "@ckeditor/ckeditor5-ui": "40.2.0", + "@ckeditor/ckeditor5-utils": "40.2.0" + } + }, + "node_modules/@ckeditor/ckeditor5-upload/node_modules/@ckeditor/ckeditor5-core": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-core/-/ckeditor5-core-40.2.0.tgz", + "integrity": "sha512-0fqIaN+ZhkXXA3mpBN+alycBzPMc8ruO8VrP0OnvCjowqZVS2HXC2AaXNBdxc75xGI3ScXIor7FsgFHxVJIYYQ==", + "dependencies": { + "@ckeditor/ckeditor5-engine": "40.2.0", + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-upload/node_modules/@ckeditor/ckeditor5-engine": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-40.2.0.tgz", + "integrity": "sha512-sgboUX8Ps+LcEgywyT3BeK1nzLHjNVIiZU1qvRxR3ixzIw4w2xRNXCGfESWLW5Y5rv9+ypUCrX61oLnZU64PQQ==", + "dependencies": { + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-upload/node_modules/@ckeditor/ckeditor5-utils": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-40.2.0.tgz", + "integrity": "sha512-f+kTJBwwk7Y/LXm8pEPxBTXVlJwQrH7Levzye9zxEDB0Jtj7+brGr87o666fPmL/ATQc5M+VPhbvnk2sOv7WKg==", + "dependencies": { + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-utils": { + "version": "41.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-41.1.0.tgz", + "integrity": "sha512-2WtcUHbZ7wJoDVKb1AHeB4OSdf0ZLg1PMemr46yjCHDCf7NunGp/n+suZWloIKPuyG9OPkp9lhIBI4MHeDNHYw==", + "peer": true, + "dependencies": { + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-watchdog": { + "version": "41.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-watchdog/-/ckeditor5-watchdog-41.1.0.tgz", + "integrity": "sha512-zAKmuUpYW+X80rNFHIZ0cWXZWeXUd86xO+PVfKEmtSt4By4dKA3wDNT0Ub631x+oZQepp2eoG54R7CpLd2WFiw==", + "peer": true, + "dependencies": { + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-widget": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-widget/-/ckeditor5-widget-40.2.0.tgz", + "integrity": "sha512-okeUSwbnu6TUKvwBOl0YdED6Me0/vvs1ybfKZPNEJNwGl989iG0LQO4oYUye8BTCZvzCZ2cBTb1Cvnwr8KRcbg==", + "dependencies": { + "@ckeditor/ckeditor5-core": "40.2.0", + "@ckeditor/ckeditor5-engine": "40.2.0", + "@ckeditor/ckeditor5-enter": "40.2.0", + "@ckeditor/ckeditor5-typing": "40.2.0", + "@ckeditor/ckeditor5-ui": "40.2.0", + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-widget/node_modules/@ckeditor/ckeditor5-core": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-core/-/ckeditor5-core-40.2.0.tgz", + "integrity": "sha512-0fqIaN+ZhkXXA3mpBN+alycBzPMc8ruO8VrP0OnvCjowqZVS2HXC2AaXNBdxc75xGI3ScXIor7FsgFHxVJIYYQ==", + "dependencies": { + "@ckeditor/ckeditor5-engine": "40.2.0", + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-widget/node_modules/@ckeditor/ckeditor5-engine": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-40.2.0.tgz", + "integrity": "sha512-sgboUX8Ps+LcEgywyT3BeK1nzLHjNVIiZU1qvRxR3ixzIw4w2xRNXCGfESWLW5Y5rv9+ypUCrX61oLnZU64PQQ==", + "dependencies": { + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-widget/node_modules/@ckeditor/ckeditor5-utils": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-40.2.0.tgz", + "integrity": "sha512-f+kTJBwwk7Y/LXm8pEPxBTXVlJwQrH7Levzye9zxEDB0Jtj7+brGr87o666fPmL/ATQc5M+VPhbvnk2sOv7WKg==", + "dependencies": { + "lodash-es": "4.17.21" + } + }, + "node_modules/@clr/angular": { + "version": "15.14.5", + "resolved": "https://registry.npmjs.org/@clr/angular/-/angular-15.14.5.tgz", + "integrity": "sha512-fMnkCrr3gyhVFWZiOdT8wdL+Hj/1A3YeQuz/g51DbDQdt8j2piFA5ivt5mHLuqMZWcpPX7zgDIVS7pu12FwjzQ==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/cdk": "15 || 16", + "@angular/common": "15 || 16", + "@angular/core": "15 || 16", + "@cds/core": "^5.6.0 || ^6.0.0", + "@clr/ui": "15.14.5" + } + }, + "node_modules/@clr/city": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@clr/city/-/city-1.1.0.tgz", + "integrity": "sha512-R+C4uywmXoTD01LINOt3O0cBRviQdbAVNxdVvOyuO3+rM9bvFroF7UZY0R1ue/xvKXlqJrEkNKZQODeKjzaAhA==", + "optional": true + }, + "node_modules/@clr/core": { + "version": "4.0.15", + "resolved": "https://registry.npmjs.org/@clr/core/-/core-4.0.15.tgz", + "integrity": "sha512-KnUxZGCMcfRu7GdSihHRQPbElYcGwfTey5HkZnIw3KM+o02Ru1cH0jJn7St5+dF9V3RVYryTEdZ66gHQrstFzw==", + "dependencies": { + "@types/resize-observer-browser": "^0.1.3", + "lit-element": "^2.3.1", + "lit-html": "^1.2.1", + "ramda": "^0.27.0", + "tslib": "^2.0.0" + }, + "optionalDependencies": { + "@clr/city": "^1.1.0", + "@webcomponents/custom-elements": "^1.4.2", + "@webcomponents/shadycss": "^1.10.1", + "@webcomponents/webcomponentsjs": "^2.4.4", + "css-vars-ponyfill": "^2.3.2", + "normalize.css": "^8.0.1" + } + }, + "node_modules/@clr/core/node_modules/lit-html": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-1.4.1.tgz", + "integrity": "sha512-B9btcSgPYb1q4oSOb/PrOT6Z/H+r6xuNzfH4lFli/AWhYwdtrgQkQWBbIc6mdnf6E2IL3gDXdkkqNktpU0OZQA==" + }, + "node_modules/@clr/core/node_modules/ramda": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.2.tgz", + "integrity": "sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA==" + }, + "node_modules/@clr/icons": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/@clr/icons/-/icons-13.0.2.tgz", + "integrity": "sha512-bdcSuFvQAbIIp8Q2Fm55BjHW5cawP4xEOkZf2IEIin0d9ViRcAJNjACBCOMDhx2up7nPZsXwN2gL8zJhL7TSZQ==", + "peerDependencies": { + "@webcomponents/custom-elements": "^1.0.0" + } + }, + "node_modules/@clr/ui": { + "version": "15.14.5", + "resolved": "https://registry.npmjs.org/@clr/ui/-/ui-15.14.5.tgz", + "integrity": "sha512-Of2qpedwLE3dZh2virgk3w/kWMli+ugfXHfBVIg+HSmIlJCcmunPEGvh+u+GpgqtcETOIgitkZ54RmvuOrGL9Q==" + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@ctrl/ngx-codemirror": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@ctrl/ngx-codemirror/-/ngx-codemirror-7.0.0.tgz", + "integrity": "sha512-qvIWtSTw/8fdXDnofBTX6LmTW9646HhawG2+Qyagf1vH40jCy0ZbHnkC20UYOVpUX+QCd1e/PQpkvWQ/1iGFzQ==", + "dependencies": { + "@types/codemirror": "^5.60.7", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/core": ">=16.0.0-0", + "@angular/forms": ">=16.0.0-0", + "codemirror": "^5.65.9" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.17.tgz", + "integrity": "sha512-wHsmJG/dnL3OkpAcwbgoBTTMHVi4Uyou3F5mf58ZtmUyIKfcdA7TROav/6tCzET4A3QW2Q2FC+eFneMU+iyOxg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.17.tgz", + "integrity": "sha512-9np+YYdNDed5+Jgr1TdWBsozZ85U1Oa3xW0c7TWqH0y2aGghXtZsuT8nYRbzOMcl0bXZXjOGbksoTtVOlWrRZg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.17.tgz", + "integrity": "sha512-O+FeWB/+xya0aLg23hHEM2E3hbfwZzjqumKMSIqcHbNvDa+dza2D0yLuymRBQQnC34CWrsJUXyH2MG5VnLd6uw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.17.tgz", + "integrity": "sha512-M9uJ9VSB1oli2BE/dJs3zVr9kcCBBsE883prage1NWz6pBS++1oNn/7soPNS3+1DGj0FrkSvnED4Bmlu1VAE9g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.17.tgz", + "integrity": "sha512-XDre+J5YeIJDMfp3n0279DFNrGCXlxOuGsWIkRb1NThMZ0BsrWXoTg23Jer7fEXQ9Ye5QjrvXpxnhzl3bHtk0g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.17.tgz", + "integrity": "sha512-cjTzGa3QlNfERa0+ptykyxs5A6FEUQQF0MuilYXYBGdBxD3vxJcKnzDlhDCa1VAJCmAxed6mYhA2KaJIbtiNuQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.17.tgz", + "integrity": "sha512-sOxEvR8d7V7Kw8QqzxWc7bFfnWnGdaFBut1dRUYtu+EIRXefBc/eIsiUiShnW0hM3FmQ5Zf27suDuHsKgZ5QrA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.17.tgz", + "integrity": "sha512-2d3Lw6wkwgSLC2fIvXKoMNGVaeY8qdN0IC3rfuVxJp89CRfA3e3VqWifGDfuakPmp90+ZirmTfye1n4ncjv2lg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.17.tgz", + "integrity": "sha512-c9w3tE7qA3CYWjT+M3BMbwMt+0JYOp3vCMKgVBrCl1nwjAlOMYzEo+gG7QaZ9AtqZFj5MbUc885wuBBmu6aADQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.17.tgz", + "integrity": "sha512-1DS9F966pn5pPnqXYz16dQqWIB0dmDfAQZd6jSSpiT9eX1NzKh07J6VKR3AoXXXEk6CqZMojiVDSZi1SlmKVdg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.17.tgz", + "integrity": "sha512-EvLsxCk6ZF0fpCB6w6eOI2Fc8KW5N6sHlIovNe8uOFObL2O+Mr0bflPHyHwLT6rwMg9r77WOAWb2FqCQrVnwFg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.17.tgz", + "integrity": "sha512-e0bIdHA5p6l+lwqTE36NAW5hHtw2tNRmHlGBygZC14QObsA3bD4C6sXLJjvnDIjSKhW1/0S3eDy+QmX/uZWEYQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.17.tgz", + "integrity": "sha512-BAAilJ0M5O2uMxHYGjFKn4nJKF6fNCdP1E0o5t5fvMYYzeIqy2JdAP88Az5LHt9qBoUa4tDaRpfWt21ep5/WqQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.17.tgz", + "integrity": "sha512-Wh/HW2MPnC3b8BqRSIme/9Zhab36PPH+3zam5pqGRH4pE+4xTrVLx2+XdGp6fVS3L2x+DrsIcsbMleex8fbE6g==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.17.tgz", + "integrity": "sha512-j/34jAl3ul3PNcK3pfI0NSlBANduT2UO5kZ7FCaK33XFv3chDhICLY8wJJWIhiQ+YNdQ9dxqQctRg2bvrMlYgg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.17.tgz", + "integrity": "sha512-QM50vJ/y+8I60qEmFxMoxIx4de03pGo2HwxdBeFd4nMh364X6TIBZ6VQ5UQmPbQWUVWHWws5MmJXlHAXvJEmpQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.17.tgz", + "integrity": "sha512-/jGlhWR7Sj9JPZHzXyyMZ1RFMkNPjC6QIAan0sDOtIo2TYk3tZn5UDrkE0XgsTQCxWTTOcMPf9p6Rh2hXtl5TQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.17.tgz", + "integrity": "sha512-rSEeYaGgyGGf4qZM2NonMhMOP/5EHp4u9ehFiBrg7stH6BYEEjlkVREuDEcQ0LfIl53OXLxNbfuIj7mr5m29TA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.17.tgz", + "integrity": "sha512-Y7ZBbkLqlSgn4+zot4KUNYst0bFoO68tRgI6mY2FIM+b7ZbyNVtNbDP5y8qlu4/knZZ73fgJDlXID+ohY5zt5g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.17.tgz", + "integrity": "sha512-bwPmTJsEQcbZk26oYpc4c/8PvTY3J5/QK8jM19DVlEsAB41M39aWovWoHtNm78sd6ip6prilxeHosPADXtEJFw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.17.tgz", + "integrity": "sha512-H/XaPtPKli2MhW+3CQueo6Ni3Avggi6hP/YvgkEe1aSaxw+AeO8MFjq8DlgfTd9Iz4Yih3QCZI6YLMoyccnPRg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.17.tgz", + "integrity": "sha512-fGEb8f2BSA3CW7riJVurug65ACLuQAzKq0SSqkY2b2yHHH0MzDfbLyKIGzHwOI/gkHcxM/leuSW6D5w/LMNitA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz", + "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@kurkle/color": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.2.tgz", + "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==" + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "dev": true + }, + "node_modules/@lit-labs/ssr-dom-shim": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.2.0.tgz", + "integrity": "sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g==" + }, + "node_modules/@lit/reactive-element": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.6.3.tgz", + "integrity": "sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.0.0" + } + }, + "node_modules/@ngtools/webpack": { + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-16.2.12.tgz", + "integrity": "sha512-f9R9Qsk8v+ffDxryl6PQ7Wnf2JCNd4dDXOH+d/AuF06VFiwcwGDRDZpmqkAXbFxQfcWTbT1FFvfoJ+SFcJgXLA==", + "dev": true, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "@angular/compiler-cli": "^16.0.0", + "typescript": ">=4.9.3 <5.2", + "webpack": "^5.54.0" + } + }, + "node_modules/@ngx-translate/core": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/@ngx-translate/core/-/core-16.0.3.tgz", + "integrity": "sha512-UPse66z9tRUmIpeorYodXBQY6O4foUmj9jy9cCuuja7lqdOwRBWPzCWqc+qYIXv5L2QoqZdxgHtqoUz+Q9weSA==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": ">=16", + "@angular/core": ">=16" + } + }, + "node_modules/@ngx-translate/http-loader": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@ngx-translate/http-loader/-/http-loader-16.0.0.tgz", + "integrity": "sha512-l3okOHGVxZ1Bm55OpakSfXvI2yYmVmhYqgwGU4aIQIRUqpkBCrSDZnmrHTcZfsGJzXKB5E2D2rko9i28gBijmA==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": ">=16", + "@angular/core": ">=16" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/fs": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", + "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/git": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-4.1.0.tgz", + "integrity": "sha512-9hwoB3gStVfa0N31ymBmrX+GuDGdVA/QWShZVqE0HK2Af+7QGGrCTbZia/SW0ImUTjTne7SP91qxDmtXvDHRPQ==", + "dev": true, + "dependencies": { + "@npmcli/promise-spawn": "^6.0.0", + "lru-cache": "^7.4.4", + "npm-pick-manifest": "^8.0.0", + "proc-log": "^3.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/git/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@npmcli/git/node_modules/which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/installed-package-contents": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.0.2.tgz", + "integrity": "sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==", + "dev": true, + "dependencies": { + "npm-bundled": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "bin": { + "installed-package-contents": "lib/index.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/move-file": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "deprecated": "This functionality has been moved to @npmcli/fs", + "dev": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/move-file/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/node-gyp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", + "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/promise-spawn": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", + "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", + "dev": true, + "dependencies": { + "which": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/promise-spawn/node_modules/which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/run-script": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.2.tgz", + "integrity": "sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA==", + "dev": true, + "dependencies": { + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/promise-spawn": "^6.0.0", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^3.0.0", + "which": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/run-script/node_modules/which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@schematics/angular": { + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-16.2.12.tgz", + "integrity": "sha512-rc6Dxo7yLnNhECxZyvwv3qL40GvMHw/gMeme8DUGN7zgcUdBJ7LOCURp7EZqOBghMVeeJvLrohitEbs9NhRLBA==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "16.2.12", + "@angular-devkit/schematics": "16.2.12", + "jsonc-parser": "3.2.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@sigstore/bundle": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-1.1.0.tgz", + "integrity": "sha512-PFutXEy0SmQxYI4texPw3dd2KewuNqv7OuK1ZFtY2fM754yhvG2KdgwIhRnoEE2uHdtdGNQ8s0lb94dW9sELog==", + "dev": true, + "dependencies": { + "@sigstore/protobuf-specs": "^0.2.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/protobuf-specs": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.2.1.tgz", + "integrity": "sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/sign": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-1.0.0.tgz", + "integrity": "sha512-INxFVNQteLtcfGmcoldzV6Je0sbbfh9I16DM4yJPw3j5+TFP8X6uIiA18mvpEa9yyeycAKgPmOA3X9hVdVTPUA==", + "dev": true, + "dependencies": { + "@sigstore/bundle": "^1.1.0", + "@sigstore/protobuf-specs": "^0.2.0", + "make-fetch-happen": "^11.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/sign/node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@sigstore/sign/node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@sigstore/sign/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@sigstore/sign/node_modules/make-fetch-happen": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/sign/node_modules/minipass-fetch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz", + "integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==", + "dev": true, + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/@sigstore/sign/node_modules/minipass-fetch/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/@sigstore/tuf": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-1.0.3.tgz", + "integrity": "sha512-2bRovzs0nJZFlCN3rXirE4gwxCn97JNjMmwpecqlbgV9WcxX7WRuIrgzx/X7Ib7MYRbyUTpBYE0s2x6AmZXnlg==", + "dev": true, + "dependencies": { + "@sigstore/protobuf-specs": "^0.2.0", + "tuf-js": "^1.1.7" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", + "dev": true + }, + "node_modules/@swimlane/ngx-charts": { + "version": "20.5.0", + "resolved": "https://registry.npmjs.org/@swimlane/ngx-charts/-/ngx-charts-20.5.0.tgz", + "integrity": "sha512-PNBIHdu/R3ceD7jnw1uCBVOj4k3T6IxfdW6xsDsglGkZyoWMEEq4tLoEurjLEKzmDtRv9c35kVNOXy0lkOuXeA==", + "dependencies": { + "d3-array": "^3.1.1", + "d3-brush": "^3.0.0", + "d3-color": "^3.1.0", + "d3-ease": "^3.0.1", + "d3-format": "^3.1.0", + "d3-hierarchy": "^3.1.0", + "d3-interpolate": "^3.0.1", + "d3-sankey": "^0.12.3", + "d3-scale": "^4.0.2", + "d3-selection": "^3.0.0", + "d3-shape": "^3.2.0", + "d3-time-format": "^3.0.0", + "d3-transition": "^3.0.1", + "rfdc": "^1.3.0", + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/animations": ">=12.0.0", + "@angular/cdk": ">=12.0.0", + "@angular/common": ">=12.0.0", + "@angular/core": ">=12.0.0", + "@angular/forms": ">=12.0.0", + "@angular/platform-browser": ">=12.0.0", + "@angular/platform-browser-dynamic": ">=12.0.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true + }, + "node_modules/@tufjs/canonical-json": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-1.0.0.tgz", + "integrity": "sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@tufjs/models": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-1.0.4.tgz", + "integrity": "sha512-qaGV9ltJP0EO25YfFUPhxRVK0evXFIAGicsVXuRim4Ed9cjPxYhNnNJ49SFmbeLgtxpslIkX317IgpfcHPVj/A==", + "dev": true, + "dependencies": { + "@tufjs/canonical-json": "1.0.0", + "minimatch": "^9.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@tufjs/models/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@tufjs/models/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/ckeditor": { + "version": "4.9.10", + "resolved": "https://registry.npmjs.org/@types/ckeditor/-/ckeditor-4.9.10.tgz", + "integrity": "sha512-dcOPCXM0Cr5Z0i6eF/aW5LvECrS+cdl2Gi7lU+rEUNWby0w9Yl6mBubjrs29OVAducpuZjB4mfDayE+o4/gGdQ==", + "peer": true + }, + "node_modules/@types/codemirror": { + "version": "5.60.15", + "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.15.tgz", + "integrity": "sha512-dTOvwEQ+ouKJ/rE9LT1Ue2hmP6H1mZv5+CCnNWu2qtiOe2LQa9lCprEY20HxiDmV/Bxh+dXjywmy5aKvoGjULA==", + "dependencies": { + "@types/tern": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "dev": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", + "dev": true + }, + "node_modules/@types/cors": { + "version": "2.8.17", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", + "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.56.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.2.tgz", + "integrity": "sha512-uQDwm1wFHmbBbCZCqAlq6Do9LYwByNZHWzXppSnay9SuwJ+VRbjkbLABer54kcPnMSlG6Fdiy2yaFXm/z9Z5gw==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + }, + "node_modules/@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.43", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.43.tgz", + "integrity": "sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "dev": true + }, + "node_modules/@types/http-proxy": { + "version": "1.17.14", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", + "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/jasmine": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-4.3.6.tgz", + "integrity": "sha512-3N0FpQTeiWjm+Oo1WUYWguUS7E6JLceiGTriFrG8k5PU7zRLJCzLcWURU3wjMbZGS//a2/LgjsnO3QxIlwxt9g==", + "dev": true + }, + "node_modules/@types/jasminewd2": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.13.tgz", + "integrity": "sha512-aJ3wj8tXMpBrzQ5ghIaqMisD8C3FIrcO6sDKHqFbuqAsI7yOxj0fA7MrRCPLZHIVUjERIwsMmGn/vB0UQ9u0Hg==", + "dev": true, + "dependencies": { + "@types/jasmine": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.11.19", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.19.tgz", + "integrity": "sha512-7xMnVEcZFu0DikYjWOlRq7NTPETrm7teqUT2WkQjrTIkEgUyyGdWsj/Zg8bEJt5TNklzbPD1X3fqfsHw3SpapQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/node-forge": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/qs": { + "version": "6.9.11", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.11.tgz", + "integrity": "sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==", + "dev": true + }, + "node_modules/@types/raf": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/@types/raf/-/raf-3.4.3.tgz", + "integrity": "sha512-c4YAvMedbPZ5tEyxzQdMoOhhJ4RD3rngZIdwC2/qDN3d7JpEhB6fiBRKVY1lg5B7Wk+uPBjn5f39j1/2MY1oOw==", + "optional": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true + }, + "node_modules/@types/resize-observer-browser": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/@types/resize-observer-browser/-/resize-observer-browser-0.1.11.tgz", + "integrity": "sha512-cNw5iH8JkMkb3QkCoe7DaZiawbDQEUX8t7iuQaRTyLOyQCR2h+ibBD4GJt7p5yhUHrlOeL7ZtbxNHeipqNsBzQ==" + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", + "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", + "dev": true, + "dependencies": { + "@types/http-errors": "*", + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/tern": { + "version": "0.23.9", + "resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.9.tgz", + "integrity": "sha512-ypzHFE/wBzh+BlH6rrBgS5I/Z7RD21pGhZ2rltb/+ZrVM1awdZwjx7hE5XfuYgHWk9uvV5HLZN3SloevCAp3Bw==", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==" + }, + "node_modules/@types/ws": { + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", + "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@vitejs/plugin-basic-ssl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.0.1.tgz", + "integrity": "sha512-pcub+YbFtFhaGRTo1832FQHQSHvMrlb43974e2eS8EKleR3p1cDdkJFPci1UhwkEf1J9Bz+wKBSzqpKp7nNj2A==", + "dev": true, + "engines": { + "node": ">=14.6.0" + }, + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webcomponents/custom-elements": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@webcomponents/custom-elements/-/custom-elements-1.6.0.tgz", + "integrity": "sha512-CqTpxOlUCPWRNUPZDxT5v2NnHXA4oox612iUGnmTUGQFhZ1Gkj8kirtl/2wcF6MqX7+PqqicZzOCBKKfIn0dww==" + }, + "node_modules/@webcomponents/shadycss": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/@webcomponents/shadycss/-/shadycss-1.11.2.tgz", + "integrity": "sha512-vRq+GniJAYSBmTRnhCYPAPq6THYqovJ/gzGThWbgEZUQaBccndGTi1hdiUP15HzEco0I6t4RCtXyX0rsSmwgPw==", + "optional": true + }, + "node_modules/@webcomponents/webcomponentsjs": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/@webcomponents/webcomponentsjs/-/webcomponentsjs-2.8.0.tgz", + "integrity": "sha512-loGD63sacRzOzSJgQnB9ZAhaQGkN7wl2Zuw7tsphI5Isa0irijrRo6EnJii/GgjGefIFO8AIO7UivzRhFaEk9w==" + }, + "node_modules/@wessberg/ts-evaluator": { + "version": "0.0.27", + "resolved": "https://registry.npmjs.org/@wessberg/ts-evaluator/-/ts-evaluator-0.0.27.tgz", + "integrity": "sha512-7gOpVm3yYojUp/Yn7F4ZybJRxyqfMNf0LXK5KJiawbPfL0XTsJV+0mgrEDjOIR6Bi0OYk2Cyg4tjFu1r8MCZaA==", + "deprecated": "this package has been renamed to ts-evaluator. Please install ts-evaluator instead", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "jsdom": "^16.4.0", + "object-path": "^0.11.5", + "tslib": "^2.0.3" + }, + "engines": { + "node": ">=10.1.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/wessberg/ts-evaluator?sponsor=1" + }, + "peerDependencies": { + "typescript": ">=3.2.x || >= 4.x" + } + }, + "node_modules/@wessberg/ts-evaluator/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@wessberg/ts-evaluator/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@wessberg/ts-evaluator/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wessberg/ts-evaluator/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "deprecated": "Use your platform's native atob() and btoa() methods instead", + "dev": true + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "dependencies": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "node_modules/acorn-globals/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/adjust-sourcemap-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + }, + "engines": { + "node": ">=8.9" + } + }, + "node_modules/adjust-sourcemap-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agentkeepalive": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "dev": true, + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/angular-gridster2": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/angular-gridster2/-/angular-gridster2-16.0.0.tgz", + "integrity": "sha512-Us6nwxS+84W49nRXk/Dcm7KxgVmJNzkMwLDN2/FfoRlV1nhcv8j7kM2llhSpelwGPDyw/T64BePFw2Dx03QaTQ==", + "dependencies": { + "tslib": "^2.4.0" + }, + "peerDependencies": { + "@angular/common": "^16.0.0", + "@angular/core": "^16.0.0", + "rxjs": "^7.0.0" + } + }, + "node_modules/angularx-qrcode": { + "version": "16.0.2", + "resolved": "https://registry.npmjs.org/angularx-qrcode/-/angularx-qrcode-16.0.2.tgz", + "integrity": "sha512-FztOM7vjNu88sGxUU5jG2I+A9TxZBXXYBWINjpwIBbTL+COMgrtzXnScG7TyQeNknv5w3WFJWn59PcngRRYVXA==", + "dependencies": { + "qrcode": "1.5.3", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/core": "^16.0.0" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-styles/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/ansi-styles/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "node_modules/are-we-there-yet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "dev": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/are-we-there-yet/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.14", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz", + "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + ], + "dependencies": { + "browserslist": "^4.21.5", + "caniuse-lite": "^1.0.30001464", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/babel-loader": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", + "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", + "dev": true, + "dependencies": { + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.8.tgz", + "integrity": "sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.5.0", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.8.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.7.tgz", + "integrity": "sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.4", + "core-js-compat": "^3.33.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3/node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.4.tgz", + "integrity": "sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz", + "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.5.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "devOptional": true + }, + "node_modules/base64-arraybuffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", + "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==", + "optional": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "dev": true, + "engines": { + "node": "^4.5.0 || >= 5.9" + } + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/blurhash": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/blurhash/-/blurhash-2.0.5.tgz", + "integrity": "sha512-cRygWd7kGBQO3VEhPiTgq4Wc43ctsM+o46urrmPOiuAe+07fzlSB9OJVdpgDL0jPqXUVQ9ht7aq7kxOeJHRK+w==" + }, + "node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/bonjour-service": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", + "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "node_modules/browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/btoa": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", + "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==", + "bin": { + "btoa": "bin/btoa.js" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/builtins": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "dev": true, + "dependencies": { + "semver": "^7.0.0" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacache": { + "version": "17.1.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", + "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^7.7.1", + "minipass": "^7.0.3", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/cacache/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/cacache/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/cacache/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001587", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001587.tgz", + "integrity": "sha512-HMFNotUmLXn71BQxg8cijvqxnIAofforZOwGsxyXJ0qugTdspUF4sPSJ2vhgprHCB996tIDzEq1ubumPDV8ULA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/canvg": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/canvg/-/canvg-3.0.10.tgz", + "integrity": "sha512-qwR2FRNO9NlzTeKIPIKpnTY6fqwuYSequ8Ru8c0YkYU7U0oW+hLUvWadLvAu1Rl72OMNiFhoLu4f8eUjQ7l/+Q==", + "optional": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "@types/raf": "^3.4.0", + "core-js": "^3.8.3", + "raf": "^3.4.1", + "regenerator-runtime": "^0.13.7", + "rgbcolor": "^1.0.1", + "stackblur-canvas": "^2.0.0", + "svg-pathdata": "^6.0.3" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "node_modules/chart.js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.1.tgz", + "integrity": "sha512-C74QN1bxwV1v2PEujhmKjOZ7iUM4w6BWs23Md/6aOZZSlwMzeCIDGuZay++rBgChYru7/+QFeoQW0fQoP534Dg==", + "dependencies": { + "@kurkle/color": "^0.3.0" + }, + "engines": { + "pnpm": ">=7" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ckeditor5": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/ckeditor5/-/ckeditor5-40.2.0.tgz", + "integrity": "sha512-JaFuY/6DX1wbA6yRB2xQVMr+9W1C3HvSX4AT10ccoKBKe9OctIatekDt2ztV+cMaVHLF1wocskS/Ql9XFRy2Eg==", + "dependencies": { + "@ckeditor/ckeditor5-clipboard": "40.2.0", + "@ckeditor/ckeditor5-core": "40.2.0", + "@ckeditor/ckeditor5-engine": "40.2.0", + "@ckeditor/ckeditor5-enter": "40.2.0", + "@ckeditor/ckeditor5-paragraph": "40.2.0", + "@ckeditor/ckeditor5-select-all": "40.2.0", + "@ckeditor/ckeditor5-typing": "40.2.0", + "@ckeditor/ckeditor5-ui": "40.2.0", + "@ckeditor/ckeditor5-undo": "40.2.0", + "@ckeditor/ckeditor5-upload": "40.2.0", + "@ckeditor/ckeditor5-utils": "40.2.0", + "@ckeditor/ckeditor5-watchdog": "40.2.0", + "@ckeditor/ckeditor5-widget": "40.2.0" + } + }, + "node_modules/ckeditor5/node_modules/@ckeditor/ckeditor5-core": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-core/-/ckeditor5-core-40.2.0.tgz", + "integrity": "sha512-0fqIaN+ZhkXXA3mpBN+alycBzPMc8ruO8VrP0OnvCjowqZVS2HXC2AaXNBdxc75xGI3ScXIor7FsgFHxVJIYYQ==", + "dependencies": { + "@ckeditor/ckeditor5-engine": "40.2.0", + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/ckeditor5/node_modules/@ckeditor/ckeditor5-engine": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-40.2.0.tgz", + "integrity": "sha512-sgboUX8Ps+LcEgywyT3BeK1nzLHjNVIiZU1qvRxR3ixzIw4w2xRNXCGfESWLW5Y5rv9+ypUCrX61oLnZU64PQQ==", + "dependencies": { + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/ckeditor5/node_modules/@ckeditor/ckeditor5-utils": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-40.2.0.tgz", + "integrity": "sha512-f+kTJBwwk7Y/LXm8pEPxBTXVlJwQrH7Levzye9zxEDB0Jtj7+brGr87o666fPmL/ATQc5M+VPhbvnk2sOv7WKg==", + "dependencies": { + "lodash-es": "4.17.21" + } + }, + "node_modules/ckeditor5/node_modules/@ckeditor/ckeditor5-watchdog": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-watchdog/-/ckeditor5-watchdog-40.2.0.tgz", + "integrity": "sha512-ets7o2dUR7l23G9o/RAbu+gJzUkc2Ul269E3TEhZnbQXFjshvEGK2kzuay7I+/waL3ADuYe4zuoBqsqdPoAhfg==", + "dependencies": { + "lodash-es": "4.17.21" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/codemirror": { + "version": "5.65.16", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.16.tgz", + "integrity": "sha512-br21LjYmSlVL0vFCPWPfhzUCT34FM/pAdK7rRIZwa0rrtrIdotvP4Oh4GUHsu2E3IrQMCfRkL/fN3ytMNxVQvg==", + "peer": true + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/color-parse": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/color-parse/-/color-parse-1.4.2.tgz", + "integrity": "sha512-RI7s49/8yqDj3fECFZjUI1Yi0z/Gq1py43oNJivAIIDSyJiOZLfYCRQEgn8HEVAj++PcRe8AnL2XF0fRJ3BTnA==", + "dependencies": { + "color-name": "^1.0.0" + } + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "dev": true + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/connect/node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/connect/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/connect/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, + "dependencies": { + "is-what": "^3.14.1" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/copy-webpack-plugin": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", + "dev": true, + "dependencies": { + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.1", + "globby": "^13.1.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/core-js": { + "version": "3.36.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.36.0.tgz", + "integrity": "sha512-mt7+TUBbTFg5+GngsAxeKBTl5/VS0guFeJacYge9OmHb+m058UwwIm41SE9T4Den7ClatV57B6TYTuJ0CX1MAw==", + "hasInstallScript": true, + "optional": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.36.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.0.tgz", + "integrity": "sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw==", + "dev": true, + "dependencies": { + "browserslist": "^4.22.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/cosmiconfig/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/cosmiconfig/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "node_modules/critters": { + "version": "0.0.20", + "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.20.tgz", + "integrity": "sha512-CImNRorKOl5d8TWcnAz5n5izQ6HFsvz29k327/ELy6UFcmbiZNOsinaKvzv16WZR0P6etfSWYzE47C4/56B3Uw==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "css-select": "^5.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.2", + "htmlparser2": "^8.0.2", + "postcss": "^8.4.23", + "pretty-bytes": "^5.3.0" + } + }, + "node_modules/critters/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/critters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/critters/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/critters/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-line-break": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-2.1.0.tgz", + "integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==", + "optional": true, + "dependencies": { + "utrie": "^1.0.2" + } + }, + "node_modules/css-loader": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz", + "integrity": "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==", + "dev": true, + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.21", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.3", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.8" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-vars-ponyfill": { + "version": "2.4.8", + "resolved": "https://registry.npmjs.org/css-vars-ponyfill/-/css-vars-ponyfill-2.4.8.tgz", + "integrity": "sha512-4/j4AX4htytYHWyHVZ2BFQ+NoCGZEcOH2h4/2mmgE4SkrFg4Xq6tGYR77DtvvUIDsaXuJN+sj41bbgauA0Gfmg==", + "optional": true, + "dependencies": { + "balanced-match": "^1.0.2", + "get-css-data": "^2.0.2" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "node_modules/custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", + "dev": true + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-sankey": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", + "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", + "dependencies": { + "d3-array": "1 - 2", + "d3-shape": "^1.2.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "dependencies": { + "internmap": "^1.0.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==" + }, + "node_modules/d3-sankey/node_modules/d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "dependencies": { + "d3-path": "1" + } + }, + "node_modules/d3-sankey/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz", + "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==", + "dependencies": { + "d3-time": "1 - 2" + } + }, + "node_modules/d3-time-format/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "dependencies": { + "internmap": "^1.0.0" + } + }, + "node_modules/d3-time-format/node_modules/d3-time": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", + "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", + "dependencies": { + "d3-array": "2" + } + }, + "node_modules/d3-time-format/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "dependencies": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/date-format": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", + "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "dev": true + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "node_modules/di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", + "dev": true + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dijkstrajs": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz", + "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==" + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "dev": true, + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", + "dev": true, + "dependencies": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom-to-image": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/dom-to-image/-/dom-to-image-2.6.0.tgz", + "integrity": "sha512-Dt0QdaHmLpjURjU7Tnu3AgYSF2LuOmksSGsUcE6ItvJoCWTBEmiMXcqBdNSAm9+QbbwD7JMoVsuuKX6ZVQv1qA==" + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "deprecated": "Use your platform's native DOMException instead", + "dev": true, + "dependencies": { + "webidl-conversions": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/dompurify": { + "version": "2.4.7", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.4.7.tgz", + "integrity": "sha512-kxxKlPEDa6Nc5WJi+qRgPbOAbgTpSULL+vI3NUXsZMlkJxTqYI9wg5ZTay2sFrdZRWHPWNi+EdAhcJf81WtoMQ==", + "optional": true + }, + "node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dev": true, + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/electron-to-chromium": { + "version": "1.4.673", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.673.tgz", + "integrity": "sha512-zjqzx4N7xGdl5468G+vcgzDhaHkaYgVcf9MqgexcTqsl2UHSCmOj/Bi3HAprg4BZCpC7HyD8a6nZl6QAZf72gw==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/encode-utf8": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", + "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/engine.io": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.4.tgz", + "integrity": "sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg==", + "dev": true, + "dependencies": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.11.0" + }, + "engines": { + "node": ">=10.2.0" + } + }, + "node_modules/engine.io-parser": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.2.tgz", + "integrity": "sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/engine.io/node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/engine.io/node_modules/ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/enhanced-resolve": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", + "dev": true + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "devOptional": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "optional": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", + "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.17.tgz", + "integrity": "sha512-1GJtYnUxsJreHYA0Y+iQz2UEykonY66HNWOb0yXYZi9/kNrORUEHVg87eQsCtqh59PEJ5YVZJO98JHznMJSWjg==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.17", + "@esbuild/android-arm64": "0.18.17", + "@esbuild/android-x64": "0.18.17", + "@esbuild/darwin-arm64": "0.18.17", + "@esbuild/darwin-x64": "0.18.17", + "@esbuild/freebsd-arm64": "0.18.17", + "@esbuild/freebsd-x64": "0.18.17", + "@esbuild/linux-arm": "0.18.17", + "@esbuild/linux-arm64": "0.18.17", + "@esbuild/linux-ia32": "0.18.17", + "@esbuild/linux-loong64": "0.18.17", + "@esbuild/linux-mips64el": "0.18.17", + "@esbuild/linux-ppc64": "0.18.17", + "@esbuild/linux-riscv64": "0.18.17", + "@esbuild/linux-s390x": "0.18.17", + "@esbuild/linux-x64": "0.18.17", + "@esbuild/netbsd-x64": "0.18.17", + "@esbuild/openbsd-x64": "0.18.17", + "@esbuild/sunos-x64": "0.18.17", + "@esbuild/win32-arm64": "0.18.17", + "@esbuild/win32-ia32": "0.18.17", + "@esbuild/win32-x64": "0.18.17" + } + }, + "node_modules/esbuild-wasm": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.18.17.tgz", + "integrity": "sha512-9OHGcuRzy+I8ziF9FzjfKLWAPbvi0e/metACVg9k6bK+SI4FFxeV6PcZsz8RIVaMD4YNehw+qj6UMR3+qj/EuQ==", + "dev": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-scope/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter-asyncresource": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz", + "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==", + "dev": true + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exponential-backoff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", + "dev": true + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fflate": { + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.4.8.tgz", + "integrity": "sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==" + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/file-saver": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/find-cache-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", + "dev": true, + "dependencies": { + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "dev": true, + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", + "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "dev": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-css-data": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/get-css-data/-/get-css-data-2.1.1.tgz", + "integrity": "sha512-JpMa/f5P4mDXKg6l5/2cHL5xNY77Jap7tHyduMa6BF0E2a7bQ6Tvaz2BIMjeVYZYLcmOZ5w2Ro0yVJEI41tMbw==", + "optional": true + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "dev": true, + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/guess-parser": { + "version": "0.4.22", + "resolved": "https://registry.npmjs.org/guess-parser/-/guess-parser-0.4.22.tgz", + "integrity": "sha512-KcUWZ5ACGaBM69SbqwVIuWGoSAgD+9iJnchR9j/IarVI1jHVeXv+bUXBIMeqVMSKt3zrn0Dgf9UpcOEpPBLbSg==", + "dev": true, + "dependencies": { + "@wessberg/ts-evaluator": "0.0.27" + }, + "peerDependencies": { + "typescript": ">=3.7.5" + } + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, + "node_modules/hasown": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", + "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hdr-histogram-js": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz", + "integrity": "sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==", + "dev": true, + "dependencies": { + "@assemblyscript/loader": "^0.10.1", + "base64-js": "^1.2.0", + "pako": "^1.0.3" + } + }, + "node_modules/hdr-histogram-percentiles-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz", + "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", + "dev": true + }, + "node_modules/highcharts": { + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/highcharts/-/highcharts-11.3.0.tgz", + "integrity": "sha512-Dk+Qfk/xit8KnXKPDxmcVcq48ZlcVSq7oYJR5VZlAVWnJ0BY3JFFi1GOvgSNUzlh2wzsfenihWpkAkWoag4Xqg==" + }, + "node_modules/highcharts-angular": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/highcharts-angular/-/highcharts-angular-3.1.2.tgz", + "integrity": "sha512-f168ZhRVVlV7vJ2g0gDH3IaTNv84c91z6GYRWuER0Ep5kLalAUH0KDtFhrTOb6+sjue7BK8M7aPY74fiC4bGXA==", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/common": ">=11.0.0", + "@angular/core": ">=11.0.0", + "highcharts": ">=9.0.0" + } + }, + "node_modules/hosted-git-info": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", + "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "dev": true, + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, + "dependencies": { + "whatwg-encoding": "^1.0.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/html-entities": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz", + "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/html2canvas": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.4.1.tgz", + "integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==", + "optional": true, + "dependencies": { + "css-line-break": "^2.1.0", + "text-segmentation": "^1.0.3" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dev": true, + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-walk": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.4.tgz", + "integrity": "sha512-t7sv42WkwFkyKbivUCglsQW5YWMskWtbEf4MNKX5u/CCWHKSPzN4FtBQGsQZgCLbxOzpVlcbWVK5KB3auIOjSw==", + "dev": true, + "dependencies": { + "minimatch": "^9.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/ignore-walk/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/ignore-walk/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, + "optional": true, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" + }, + "node_modules/immutable": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz", + "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==", + "dev": true + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", + "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/inquirer": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", + "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/inquirer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/inquirer/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/inquirer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dev": true, + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/ip-address/node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "dev": true + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "dev": true, + "engines": { + "node": ">= 8.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", + "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jasmine-core": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.0.1.tgz", + "integrity": "sha512-D4bRej8CplwNtNGyTPD++cafJlZUphzZNV+MSAnbD3er4D0NjL4x9V+mu/SI+5129utnCBen23JwEuBZA9vlpQ==", + "dev": true + }, + "node_modules/jasmine-spec-reporter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-7.0.0.tgz", + "integrity": "sha512-OtC7JRasiTcjsaCBPtMO0Tl8glCejM4J4/dNuOJdA8lBjz4PmWjYQ6pzb0uzpBNAWJMDudYuj9OdXJWqM2QTJg==", + "dev": true, + "dependencies": { + "colors": "1.4.0" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jiti": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", + "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", + "dev": true, + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/jquery": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", + "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "dev": true + }, + "node_modules/jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dev": true, + "dependencies": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsdom/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true, + "engines": [ + "node >= 0.2.0" + ] + }, + "node_modules/jspdf": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/jspdf/-/jspdf-2.5.1.tgz", + "integrity": "sha512-hXObxz7ZqoyhxET78+XR34Xu2qFGrJJ2I2bE5w4SM8eFaFEkW2xcGRVUss360fYelwRSid/jT078kbNvmoW0QA==", + "dependencies": { + "@babel/runtime": "^7.14.0", + "atob": "^2.1.2", + "btoa": "^1.2.1", + "fflate": "^0.4.8" + }, + "optionalDependencies": { + "canvg": "^3.0.6", + "core-js": "^3.6.0", + "dompurify": "^2.2.0", + "html2canvas": "^1.0.0-rc.5" + } + }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/karma": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.2.tgz", + "integrity": "sha512-C6SU/53LB31BEgRg+omznBEMY4SjHU3ricV6zBcAe1EeILKkeScr+fZXtaI5WyDbkVowJxxAI6h73NcFPmXolQ==", + "dev": true, + "dependencies": { + "@colors/colors": "1.5.0", + "body-parser": "^1.19.0", + "braces": "^3.0.2", + "chokidar": "^3.5.1", + "connect": "^3.7.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.1", + "glob": "^7.1.7", + "graceful-fs": "^4.2.6", + "http-proxy": "^1.18.1", + "isbinaryfile": "^4.0.8", + "lodash": "^4.17.21", + "log4js": "^6.4.1", + "mime": "^2.5.2", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.5", + "qjobs": "^1.2.0", + "range-parser": "^1.2.1", + "rimraf": "^3.0.2", + "socket.io": "^4.4.1", + "source-map": "^0.6.1", + "tmp": "^0.2.1", + "ua-parser-js": "^0.7.30", + "yargs": "^16.1.1" + }, + "bin": { + "karma": "bin/karma" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/karma-chrome-launcher": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.2.0.tgz", + "integrity": "sha512-rE9RkUPI7I9mAxByQWkGJFXfFD6lE4gC5nPuZdobf/QdTEJI6EU4yIay/cfU/xV4ZxlM5JiTv7zWYgA64NpS5Q==", + "dev": true, + "dependencies": { + "which": "^1.2.1" + } + }, + "node_modules/karma-coverage-istanbul-reporter": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-3.0.3.tgz", + "integrity": "sha512-wE4VFhG/QZv2Y4CdAYWDbMmcAHeS926ZIji4z+FkB2aF/EposRb6DP6G5ncT/wXhqUfAb/d7kZrNKPonbvsATw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^3.0.6", + "istanbul-reports": "^3.0.2", + "minimatch": "^3.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/mattlewis92" + } + }, + "node_modules/karma-jasmine": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.1.0.tgz", + "integrity": "sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ==", + "dev": true, + "dependencies": { + "jasmine-core": "^4.1.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "karma": "^6.0.0" + } + }, + "node_modules/karma-jasmine-html-reporter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-2.1.0.tgz", + "integrity": "sha512-sPQE1+nlsn6Hwb5t+HHwyy0A1FNCVKuL1192b+XNauMYWThz2kweiBVW1DqloRpVvZIJkIoHVB7XRpK78n1xbQ==", + "dev": true, + "peerDependencies": { + "jasmine-core": "^4.0.0 || ^5.0.0", + "karma": "^6.0.0", + "karma-jasmine": "^5.0.0" + } + }, + "node_modules/karma-jasmine/node_modules/jasmine-core": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.6.0.tgz", + "integrity": "sha512-O236+gd0ZXS8YAjFx8xKaJ94/erqUliEkJTDedyE7iHvv4ZVqi+q+8acJxu05/WJDKm512EUNn809In37nWlAQ==", + "dev": true + }, + "node_modules/karma-source-map-support": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", + "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", + "dev": true, + "dependencies": { + "source-map-support": "^0.5.5" + } + }, + "node_modules/karma/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/karma/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/karma/node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/karma/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/karma/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/launch-editor": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz", + "integrity": "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.8.1" + } + }, + "node_modules/less": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/less/-/less-4.1.3.tgz", + "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==", + "dev": true, + "dependencies": { + "copy-anything": "^2.0.1", + "parse-node-version": "^1.0.1", + "tslib": "^2.3.0" + }, + "bin": { + "lessc": "bin/lessc" + }, + "engines": { + "node": ">=6" + }, + "optionalDependencies": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "source-map": "~0.6.0" + } + }, + "node_modules/less-loader": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.1.0.tgz", + "integrity": "sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==", + "dev": true, + "dependencies": { + "klona": "^2.0.4" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "less": "^3.5.0 || ^4.0.0", + "webpack": "^5.0.0" + } + }, + "node_modules/less/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "optional": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/less/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "optional": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/less/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/less/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/license-webpack-plugin": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", + "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", + "dev": true, + "dependencies": { + "webpack-sources": "^3.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-sources": { + "optional": true + } + } + }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/lit": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/lit/-/lit-2.8.0.tgz", + "integrity": "sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA==", + "dependencies": { + "@lit/reactive-element": "^1.6.0", + "lit-element": "^3.3.0", + "lit-html": "^2.8.0" + } + }, + "node_modules/lit-element": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-2.5.1.tgz", + "integrity": "sha512-ogu7PiJTA33bEK0xGu1dmaX5vhcRjBXCFexPja0e7P7jqLhTpNKYRPmE+GmiCaRVAbiQKGkUgkh/i6+bh++dPQ==", + "dependencies": { + "lit-html": "^1.1.1" + } + }, + "node_modules/lit-element/node_modules/lit-html": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-1.4.1.tgz", + "integrity": "sha512-B9btcSgPYb1q4oSOb/PrOT6Z/H+r6xuNzfH4lFli/AWhYwdtrgQkQWBbIc6mdnf6E2IL3gDXdkkqNktpU0OZQA==" + }, + "node_modules/lit-html": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.1.2.tgz", + "integrity": "sha512-3OBZSUrPnAHoKJ9AMjRL/m01YJxQMf+TMHanNtTHG68ubjnZxK0RFl102DPzsw4mWnHibfZIBJm3LWCZ/LmMvg==", + "dependencies": { + "@types/trusted-types": "^2.0.2" + } + }, + "node_modules/lit/node_modules/lit-element": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.3.3.tgz", + "integrity": "sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.1.0", + "@lit/reactive-element": "^1.3.0", + "lit-html": "^2.8.0" + } + }, + "node_modules/lit/node_modules/lit-html": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.8.0.tgz", + "integrity": "sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==", + "dependencies": { + "@types/trusted-types": "^2.0.2" + } + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", + "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", + "dev": true, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log4js": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.9.1.tgz", + "integrity": "sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==", + "dev": true, + "dependencies": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "flatted": "^3.2.7", + "rfdc": "^1.3.0", + "streamroller": "^3.1.5" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.1.tgz", + "integrity": "sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/make-fetch-happen": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/@npmcli/fs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", + "dev": true, + "dependencies": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/make-fetch-happen/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/cacache": { + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/make-fetch-happen/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/make-fetch-happen/node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/make-fetch-happen/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-fetch-happen/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-fetch-happen/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/make-fetch-happen/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-fetch-happen/node_modules/ssri": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/unique-filename": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", + "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", + "dev": true, + "dependencies": { + "unique-slug": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/unique-slug": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", + "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "dev": true, + "dependencies": { + "fs-monkey": "^1.0.4" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.7.6", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz", + "integrity": "sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==", + "dev": true, + "dependencies": { + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-collect/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/minipass-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", + "dev": true, + "dependencies": { + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-fetch/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-fetch/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-flush/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/minipass-json-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "dev": true, + "dependencies": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "node_modules/minipass-json-stream/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-json-stream/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/modern-normalize": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/modern-normalize/-/modern-normalize-1.1.0.tgz", + "integrity": "sha512-2lMlY1Yc1+CUy0gw4H95uNN7vjbpoED7NNRSBHE25nWfLBdmMzFCsPshlzbxHz+gYMcBEUN8V4pU16prcdPSgA==", + "optional": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "engines": { + "node": "*" + } + }, + "node_modules/mrmime": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", + "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dev": true, + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/needle": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz", + "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", + "dev": true, + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/needle/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/ng-dynamic-component": { + "version": "10.7.0", + "resolved": "https://registry.npmjs.org/ng-dynamic-component/-/ng-dynamic-component-10.7.0.tgz", + "integrity": "sha512-shkht4L2nA632qo5GNendZdQXoHUBuKz6SLLh20qi5oESBm3b5AWyhHu0fb/7tb+f+zAcwtVVe1M0819/bnK9A==", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/common": ">=14.1.3", + "@angular/core": ">=14.1.3", + "rxjs": ">=6.0.0" + } + }, + "node_modules/ng2-charts": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/ng2-charts/-/ng2-charts-5.0.4.tgz", + "integrity": "sha512-AnOZ2KSRw7QjiMMNtXz9tdnO+XrIKP/2MX1TfqEEo2fwFU5c8LFJIYqmkMPkIzAEm/U9y/1psA5TDNmxxjEdgA==", + "dependencies": { + "lodash-es": "^4.17.15", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/cdk": ">=16.0.0", + "@angular/common": ">=16.0.0", + "@angular/core": ">=16.0.0", + "@angular/platform-browser": ">=16.0.0", + "chart.js": "^3.4.0 || ^4.0.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/ng2-ckeditor": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ng2-ckeditor/-/ng2-ckeditor-1.3.7.tgz", + "integrity": "sha512-3VdJLc/MUlFBbLg0rDwO3L+G3ofIn/zulV8rz/L4QVScQHpbJXGLJe6hIYNnAWOPaYFoGpczPC03YR+px3oJdQ==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@types/ckeditor": "^4.9.10" + } + }, + "node_modules/ng2-material-dropdown": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ng2-material-dropdown/-/ng2-material-dropdown-1.0.0.tgz", + "integrity": "sha512-waKgEkKQwGZT0dqRAd3ZW+wueYs5Xw9owiPBSMdg5jru5DcKDpUqFaADMqqI7HPuzJCxNJSln6nXX1tMYDbXGA==", + "dependencies": { + "tslib": "^2.0.0" + } + }, + "node_modules/ng2-search-filter": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/ng2-search-filter/-/ng2-search-filter-0.5.1.tgz", + "integrity": "sha512-noN8R+Gyxo5ZuboEOvq+u0zKio6pEf1IVYQTCZfAfXm6ONmzWu/M2xK0di9oVUprDbPBQXCGUuvD5i2GD+35HA==" + }, + "node_modules/ngx-captcha": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/ngx-captcha/-/ngx-captcha-13.0.0.tgz", + "integrity": "sha512-WmT0p0C1iaR4PT7etFdpuQ5rS8EILkizBJhgbP9Prc14jfwYsLTfAsevYPxZPwlU4Dd02osH1//a37Qb93wTWg==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": ">= 15.0.0", + "@angular/core": ">= 15.0.0" + } + }, + "node_modules/ngx-chips": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ngx-chips/-/ngx-chips-3.0.0.tgz", + "integrity": "sha512-hBJg4m9kCtCfersQef7vr2Ve6j9ntFSoB5ktF8MyOQnpONAriIp46c3Tb2wdf/lMEB2Xmc45snfJKnxKh3zimg==", + "dependencies": { + "ng2-material-dropdown": ">=1.0.0", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/animations": ">=10.1.5", + "@angular/common": ">=10.1.5", + "@angular/compiler": ">=10.1.5", + "@angular/core": ">=10.1.5", + "@angular/forms": ">=10.1.5" + } + }, + "node_modules/ngx-cookie-service": { + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/ngx-cookie-service/-/ngx-cookie-service-16.1.0.tgz", + "integrity": "sha512-FrzMjsGCHZCd2sEucigMaGyzImBL0l6gwWn6jmLBhcNVx0D7P8Yvtgk9aUptlqBrVKy4c2upglSa3Ogv3679bw==", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/common": "^16.0.0", + "@angular/core": "^16.0.0" + } + }, + "node_modules/ngx-drag-drop": { + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/ngx-drag-drop/-/ngx-drag-drop-16.1.0.tgz", + "integrity": "sha512-y2l9pJGD7OupsIRkCElN/JqTgzjg2V9ZxymKGQR7ZjjcdjaP1wKkiFWIgVEvLNtb8wgm10U+9tkGwLClGaHkQA==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": "^16.0.0", + "@angular/core": "^16.0.0" + } + }, + "node_modules/ngx-image-cropper": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/ngx-image-cropper/-/ngx-image-cropper-7.2.1.tgz", + "integrity": "sha512-SRsY9ar+sGbdzQ1D37PQicSkqaMX7n2ADvz8FdHUjGMGYbLjKe0o6fKhy5QKfV7dS6aD1VqhNr0fr486B1r2NA==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": ">=13.0.0", + "@angular/core": ">=13.0.0" + } + }, + "node_modules/ngx-toastr": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/ngx-toastr/-/ngx-toastr-17.0.2.tgz", + "integrity": "sha512-KehiPx6bkbiUyJbabf0ZA04+ASumS8r/y4wPsUOMI9OrBvBcfq27UQmWuQKoVR8E+9y4Pq7eZkSg2kvxNvpxTA==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": ">=16.0.0-0", + "@angular/core": ">=16.0.0-0", + "@angular/platform-browser": ">=16.0.0-0" + } + }, + "node_modules/nice-napi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", + "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "!win32" + ], + "dependencies": { + "node-addon-api": "^3.0.0", + "node-gyp-build": "^4.2.2" + } + }, + "node_modules/node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": true, + "optional": true + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true, + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-gyp": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.1.tgz", + "integrity": "sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==", + "dev": true, + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.0.3", + "nopt": "^6.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^12.13 || ^14.13 || >=16" + } + }, + "node_modules/node-gyp-build": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.0.tgz", + "integrity": "sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==", + "dev": true, + "optional": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-gyp/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "node_modules/nopt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "dev": true, + "dependencies": { + "abbrev": "^1.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/normalize-package-data": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", + "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", + "dev": true, + "dependencies": { + "hosted-git-info": "^6.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize.css": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.1.tgz", + "integrity": "sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==", + "optional": true + }, + "node_modules/npm-bundled": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.0.tgz", + "integrity": "sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==", + "dev": true, + "dependencies": { + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-install-checks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz", + "integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==", + "dev": true, + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-normalize-package-bin": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", + "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-package-arg": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", + "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-packlist": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz", + "integrity": "sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==", + "dev": true, + "dependencies": { + "ignore-walk": "^6.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-pick-manifest": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.1.tgz", + "integrity": "sha512-mRtvlBjTsJvfCCdmPtiu2bdlx8d/KXtF7yNXNWe7G0Z36qWA9Ny5zXsI2PfBZEv7SXgoxTmNaTzGSbbzDZChoA==", + "dev": true, + "dependencies": { + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^10.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-registry-fetch": { + "version": "14.0.5", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz", + "integrity": "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==", + "dev": true, + "dependencies": { + "make-fetch-happen": "^11.0.0", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^10.0.0", + "proc-log": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-registry-fetch/node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm-registry-fetch/node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/npm-registry-fetch/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/npm-registry-fetch/node_modules/make-fetch-happen": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-registry-fetch/node_modules/minipass-fetch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz", + "integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==", + "dev": true, + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/npm-registry-fetch/node_modules/minipass-fetch/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "dev": true, + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/numeral": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/numeral/-/numeral-2.0.6.tgz", + "integrity": "sha512-qaKRmtYPZ5qdw4jWJD6bxEf1FJEqllJrwxCLIm0sQU/A7v2/czigzOb+C2uSiFsa9lBUzeH7M1oK+Q+OLxL3kA==", + "engines": { + "node": "*" + } + }, + "node_modules/nwsapi": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz", + "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==", + "dev": true + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-path": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.8.tgz", + "integrity": "sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA==", + "dev": true, + "engines": { + "node": ">= 10.12.0" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ora/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": true, + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-retry/node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/pacote": { + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.2.0.tgz", + "integrity": "sha512-rJVZeIwHTUta23sIZgEIM62WYwbmGbThdbnkt81ravBplQv+HjyroqnLRNH2+sLJHcGZmLRmhPwACqhfTcOmnA==", + "dev": true, + "dependencies": { + "@npmcli/git": "^4.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/promise-spawn": "^6.0.1", + "@npmcli/run-script": "^6.0.0", + "cacache": "^17.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^5.0.0", + "npm-package-arg": "^10.0.0", + "npm-packlist": "^7.0.0", + "npm-pick-manifest": "^8.0.0", + "npm-registry-fetch": "^14.0.0", + "proc-log": "^3.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^6.0.0", + "read-package-json-fast": "^3.0.0", + "sigstore": "^1.3.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "devOptional": true, + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-html-rewriting-stream": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-7.0.0.tgz", + "integrity": "sha512-mazCyGWkmCRWDI15Zp+UiCqMp/0dgEmkZRvhlsqqKYr4SsVm/TvnSpD9fCvqCA2zoWJcfRym846ejWBBHRiYEg==", + "dev": true, + "dependencies": { + "entities": "^4.3.0", + "parse5": "^7.0.0", + "parse5-sax-parser": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-sax-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-7.0.0.tgz", + "integrity": "sha512-5A+v2SNsq8T6/mG3ahcz8ZtQ0OUFTatxPbeidoMB7tkJSGDY3tdfl4MHovtLQHkEn5CGxijNWRQHhRQ6IRpXKg==", + "dev": true, + "dependencies": { + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "dev": true, + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "optional": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/piscina": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.0.0.tgz", + "integrity": "sha512-641nAmJS4k4iqpNUqfggqUBUMmlw0ZoM5VZKdQkV2e970Inn3Tk9kroCc1wpsYLD07vCwpys5iY0d3xI/9WkTg==", + "dev": true, + "dependencies": { + "eventemitter-asyncresource": "^1.0.0", + "hdr-histogram-js": "^2.0.1", + "hdr-histogram-percentiles-obj": "^3.0.0" + }, + "optionalDependencies": { + "nice-napi": "^1.0.2" + } + }, + "node_modules/pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "dev": true, + "dependencies": { + "find-up": "^6.3.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dev": true, + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/pngjs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-loader": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.3.tgz", + "integrity": "sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==", + "dev": true, + "dependencies": { + "cosmiconfig": "^8.2.0", + "jiti": "^1.18.2", + "semver": "^7.3.8" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.4.tgz", + "integrity": "sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.1.1.tgz", + "integrity": "sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.15", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", + "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true, + "optional": true + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "dev": true, + "engines": { + "node": ">=0.9" + } + }, + "node_modules/qrcode": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz", + "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==", + "dependencies": { + "dijkstrajs": "^1.0.1", + "encode-utf8": "^1.0.3", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" + }, + "bin": { + "qrcode": "bin/qrcode" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/qrcode/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/qrcode/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/qrcode/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "node_modules/qrcode/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/raf": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", + "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", + "optional": true, + "dependencies": { + "performance-now": "^2.1.0" + } + }, + "node_modules/ramda": { + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.29.1.tgz", + "integrity": "sha512-OfxIeWzd4xdUNxlWhgFazxsA/nl3mS4/jGZI5n00uWOoSSFRhC1b6gl6xvmzUamgmqELraWp0J/qqVlXYPDPyA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/ramda" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/read-package-json": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.4.tgz", + "integrity": "sha512-AEtWXYfopBj2z5N5PbkAOeNHRPUg5q+Nen7QLxV8M2zJq1ym6/lCz3fYNTCXe19puu2d06jfHhrP7v/S2PtMMw==", + "dev": true, + "dependencies": { + "glob": "^10.2.2", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^5.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/read-package-json-fast": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", + "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", + "dev": true, + "dependencies": { + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/read-package-json-fast/node_modules/json-parse-even-better-errors": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", + "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/read-package-json/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/read-package-json/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/read-package-json/node_modules/json-parse-even-better-errors": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", + "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/read-package-json/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/reflect-metadata": { + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.14.tgz", + "integrity": "sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==", + "dev": true + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regex-parser": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.0.tgz", + "integrity": "sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg==", + "dev": true + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dev": true, + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "dev": true, + "dependencies": { + "is-core-module": "^2.11.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-url-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", + "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", + "dev": true, + "dependencies": { + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^8.2.14", + "source-map": "0.6.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/resolve-url-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/resolve-url-loader/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz", + "integrity": "sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==" + }, + "node_modules/rgbcolor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgbcolor/-/rgbcolor-1.0.1.tgz", + "integrity": "sha512-9aZLIrhRaD97sgVhtJOW6ckOEh6/GnvQtdVNfdZ6s67+3/XwLS9lBcQYzEEhYVeUowN7pRzMLsyGhK2i/xvWbw==", + "optional": true, + "engines": { + "node": ">= 0.8.15" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sass": { + "version": "1.64.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.64.1.tgz", + "integrity": "sha512-16rRACSOFEE8VN7SCgBu1MpYCyN7urj9At898tyzdXFhC+a+yOX5dXwAR7L8/IdPJ1NB8OYoXmD55DM30B2kEQ==", + "dev": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-loader": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.3.2.tgz", + "integrity": "sha512-CQbKl57kdEv+KDLquhC+gE3pXt74LEAzm+tzywcA0/aHZuub8wTErbjAoNI57rPUWRYRNC5WUnNl8eGJNbDdwg==", + "dev": true, + "dependencies": { + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + } + } + }, + "node_modules/sax": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==", + "dev": true, + "optional": true + }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true + }, + "node_modules/selfsigned": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "dev": true, + "dependencies": { + "@types/node-forge": "^1.3.0", + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, + "node_modules/set-function-length": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz", + "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==", + "dependencies": { + "define-data-property": "^1.1.2", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.5.tgz", + "integrity": "sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/sigstore": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-1.9.0.tgz", + "integrity": "sha512-0Zjz0oe37d08VeOtBIuB6cRriqXse2e8w+7yIy2XSXjshRKxbc2KkhXjL229jXSxEm7UbcjS76wcJDGQddVI9A==", + "dev": true, + "dependencies": { + "@sigstore/bundle": "^1.1.0", + "@sigstore/protobuf-specs": "^0.2.0", + "@sigstore/sign": "^1.0.0", + "@sigstore/tuf": "^1.0.3", + "make-fetch-happen": "^11.0.1" + }, + "bin": { + "sigstore": "bin/sigstore.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/sigstore/node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/sigstore/node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/sigstore/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/sigstore/node_modules/make-fetch-happen": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/sigstore/node_modules/minipass-fetch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz", + "integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==", + "dev": true, + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/sigstore/node_modules/minipass-fetch/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socket.io": { + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.4.tgz", + "integrity": "sha512-DcotgfP1Zg9iP/dH9zvAQcWrE0TtbMVwXmlV4T4mqsvY+gw+LqUGPfx2AoVyRk0FLME+GQhufDMyacFmw7ksqw==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "cors": "~2.8.5", + "debug": "~4.3.2", + "engine.io": "~6.5.2", + "socket.io-adapter": "~2.5.2", + "socket.io-parser": "~4.2.4" + }, + "engines": { + "node": ">=10.2.0" + } + }, + "node_modules/socket.io-adapter": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz", + "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==", + "dev": true, + "dependencies": { + "ws": "~8.11.0" + } + }, + "node_modules/socket.io-adapter/node_modules/ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/socket.io-parser": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "dev": true, + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/socks": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.3.tgz", + "integrity": "sha512-vfuYK48HXCTFD03G/1/zkIls3Ebr2YNa4qU9gHDZdblHLiqhJrJGkY3+0Nx0JpN9qBhJbVObc1CNciT1bIZJxw==", + "dev": true, + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-loader": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-4.0.1.tgz", + "integrity": "sha512-oqXpzDIByKONVY8g1NUPOTQhe0UTU5bWUl32GSkqK2LjJj0HmwTMVKxcUip0RgAYhY1mqgOxjbQM48a0mmeNfA==", + "dev": true, + "dependencies": { + "abab": "^2.0.6", + "iconv-lite": "^0.6.3", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.72.1" + } + }, + "node_modules/source-map-loader/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", + "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==", + "dev": true + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/spdy-transport/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/ssri": { + "version": "10.0.5", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", + "integrity": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==", + "dev": true, + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/ssri/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/stackblur-canvas": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/stackblur-canvas/-/stackblur-canvas-2.7.0.tgz", + "integrity": "sha512-yf7OENo23AGJhBriGx0QivY5JP6Y1HbrrDI6WLt6C5auYZXlQrheoY8hD4ibekFKz1HOfE48Ww8kMWMnJD/zcQ==", + "optional": true, + "engines": { + "node": ">=0.1.14" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/streamroller": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.5.tgz", + "integrity": "sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==", + "dev": true, + "dependencies": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "fs-extra": "^8.1.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-pathdata": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/svg-pathdata/-/svg-pathdata-6.0.3.tgz", + "integrity": "sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==", + "optional": true, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/sweetalert2": { + "version": "11.10.5", + "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-11.10.5.tgz", + "integrity": "sha512-q9eE3EKhMcpIDU/Xcz7z5lk8axCGkgxwK47gXGrrfncnBJWxHPPHnBVAjfsVXcTt8Yi8U6HNEcBRSu+qGeyFdA==", + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/limonte" + } + }, + "node_modules/symbol-observable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", + "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", + "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/terser": { + "version": "5.19.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.2.tgz", + "integrity": "sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser-webpack-plugin/node_modules/terser": { + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.27.1.tgz", + "integrity": "sha512-29wAr6UU/oQpnTw5HoadwjUZnFQXGdOfj0LjZ4sVxzqwHh/QVkvr7m8y9WoR4iN3FRitVduTc6KdjcW38Npsug==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-segmentation": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/text-segmentation/-/text-segmentation-1.0.3.tgz", + "integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==", + "optional": true, + "dependencies": { + "utrie": "^1.0.2" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tough-cookie": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", + "dev": true, + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node/node_modules/acorn-walk": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", + "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/tslint": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz", + "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==", + "deprecated": "TSLint has been deprecated in favor of ESLint. Please see https://github.com/palantir/tslint/issues/4534 for more information.", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^4.0.1", + "glob": "^7.1.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.3", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.13.0", + "tsutils": "^2.29.0" + }, + "bin": { + "tslint": "bin/tslint" + }, + "engines": { + "node": ">=4.8.0" + }, + "peerDependencies": { + "typescript": ">=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev || >= 4.0.0-dev" + } + }, + "node_modules/tslint/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/tslint/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "peerDependencies": { + "typescript": ">=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tuf-js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-1.1.7.tgz", + "integrity": "sha512-i3P9Kgw3ytjELUfpuKVDNBJvk4u5bXL6gskv572mcevPbSKCV3zt3djhmlEQ65yERjIbOSncy7U4cQJaB1CBCg==", + "dev": true, + "dependencies": { + "@tufjs/models": "1.0.4", + "debug": "^4.3.4", + "make-fetch-happen": "^11.1.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/tuf-js/node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/tuf-js/node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/tuf-js/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/tuf-js/node_modules/make-fetch-happen": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/tuf-js/node_modules/minipass-fetch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz", + "integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==", + "dev": true, + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/tuf-js/node_modules/minipass-fetch/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-assert": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", + "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", + "dev": true + }, + "node_modules/typescript": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", + "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/ua-parser-js": { + "version": "0.7.37", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.37.tgz", + "integrity": "sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], + "engines": { + "node": "*" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "dev": true, + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/utrie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/utrie/-/utrie-1.0.2.tgz", + "integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==", + "optional": true, + "dependencies": { + "base64-arraybuffer": "^1.0.2" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/validate-npm-package-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "dev": true, + "dependencies": { + "builtins": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/vanilla-colorful": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/vanilla-colorful/-/vanilla-colorful-0.7.2.tgz", + "integrity": "sha512-z2YZusTFC6KnLERx1cgoIRX2CjPRP0W75N+3CC6gbvdX5Ch47rZkEMGO2Xnf+IEmi3RiFLxS18gayMA27iU7Kg==" + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vite": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.2.tgz", + "integrity": "sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w==", + "dev": true, + "dependencies": { + "esbuild": "^0.18.10", + "postcss": "^8.4.27", + "rollup": "^3.27.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", + "dev": true, + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "dependencies": { + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true, + "engines": { + "node": ">=10.4" + } + }, + "node_modules/webpack": { + "version": "5.88.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", + "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-middleware": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-6.1.1.tgz", + "integrity": "sha512-y51HrHaFeeWir0YO4f0g+9GwZawuigzcAdRNon6jErXy/SqV/+O6eaVAzDqE6t3e3NpGeR5CS+cCDaTC+V3yEQ==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.12", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server": { + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", + "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", + "dev": true, + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.13.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ipaddr.js": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", + "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-dev-server/node_modules/webpack-dev-middleware": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/webpack-merge": { + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz", + "integrity": "sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-subresource-integrity": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", + "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", + "dev": true, + "dependencies": { + "typed-assert": "^1.0.8" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "html-webpack-plugin": ">= 5.0.0-beta.1 < 6", + "webpack": "^5.12.0" + }, + "peerDependenciesMeta": { + "html-webpack-plugin": { + "optional": true + } + } + }, + "node_modules/webpack/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/webpack/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "dependencies": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==" + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xlsx": { + "version": "0.19.3", + "resolved": "https://cdn.sheetjs.com/xlsx-0.19.3/xlsx-0.19.3.tgz", + "integrity": "sha512-8IfgFctB7fkvqkTGF2MnrDrC6vzE28Wcc1aSbdDQ+4/WFtzfS73YuapbuaPZwGqpR2e0EeDMIrFOJubQVLWFNA==", + "license": "Apache-2.0", + "bin": { + "xlsx": "bin/xlsx.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zone.js": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.13.3.tgz", + "integrity": "sha512-MKPbmZie6fASC/ps4dkmIhaT5eonHkEt6eAy80K42tAm0G2W+AahLJjbfi6X9NPdciOE9GRFTTM8u2IiF6O3ww==", + "dependencies": { + "tslib": "^2.3.0" + } + } + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/package.json b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/package.json new file mode 100644 index 0000000..390434a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/package.json @@ -0,0 +1,89 @@ +{ + "name": "angular-clarity", + "version": "16.0.4", + "subVersion": "2023.06.02-01", + "scripts": { + "ng": "ng", + "start": "node --max_old_space_size=8192 ./node_modules/@angular/cli/bin/ng serve --port 4201 -o", + "start:https": "ng serve --port 4201 --ssl -o", + "build-prod": "node --max_old_space_size=64384 ./node_modules/@angular/cli/bin/ng build --prod ", + "build": "node --max_old_space_size=8192 ./node_modules/@angular/cli/bin/ng build --base-href ./ --configuration production --aot --build-optimizer", + "test": "ng test", + "lint": "ng lint", + "e2e": "ng e2e" + }, + "private": true, + "dependencies": { + "@angular/animations": "^16.0.4", + "@angular/cdk": "^16.2.4", + "@angular/common": "^16.0.4", + "@angular/compiler": "^16.0.4", + "@angular/core": "^16.0.4", + "@angular/forms": "^16.0.4", + "@angular/platform-browser": "^16.0.4", + "@angular/platform-browser-dynamic": "^16.0.4", + "@angular/router": "^16.0.4", + "@auth0/angular-jwt": "^5.1.2", + "@cds/core": "^6.9.0", + "@ckeditor/ckeditor5-angular": "^7.0.1", + "@ckeditor/ckeditor5-build-classic": "^40.0.0", + "@clr/angular": "^15.5.0", + "@clr/core": "^4.0.15", + "@clr/icons": "^13.0.2", + "@clr/ui": "^15.5.0", + "@ctrl/ngx-codemirror": "^7.0.0", + "@ngx-translate/core": "^16.0.3", + "@ngx-translate/http-loader": "^16.0.0", + "@swimlane/ngx-charts": "^20.4.1", + "@webcomponents/custom-elements": "^1.6.0", + "@webcomponents/webcomponentsjs": "^2.8.0", + "angular-gridster2": "^16.0.0", + "angularx-qrcode": "^16.0.2", + "chart.js": "^4.4.0", + "dom-to-image": "^2.6.0", + "express": "^4.18.2", + "file-saver": "^2.0.5", + "highcharts": "^11.1.0", + "highcharts-angular": "^3.1.2", + "jquery": "^3.7.1", + "jspdf": "^2.5.1", + "jszip": "^3.10.1", + "lit-html": "^3.1.0", + "lodash": "^4.17.21", + "moment": "^2.29.4", + "ng-dynamic-component": "^10.1.1", + "ng2-charts": "^5.0.3", + "ng2-ckeditor": "^1.3.7", + "ng2-search-filter": "^0.5.1", + "ngx-captcha": "^13.0.0", + "ngx-chips": "^3.0.0", + "ngx-cookie-service": "^16.0.0", + "ngx-drag-drop": "^16.1.0", + "ngx-image-cropper": "^7.0.2", + "ngx-toastr": "^17.0.2", + "numeral": "^2.0.6", + "rxjs": "^7.8.1", + "sweetalert2": "^11.4.8", + "tslib": "^2.5.2", + "xlsx": "https://cdn.sheetjs.com/xlsx-0.19.3/xlsx-0.19.3.tgz", + "zone.js": "~0.13.0" + }, + "devDependencies": { + "@angular-devkit/build-angular": "^16.0.4", + "@angular/cli": "^16.0.4", + "@angular/compiler-cli": "^16.0.4", + "@types/jasmine": "~4.3.2", + "@types/jasminewd2": "~2.0.10", + "@types/node": "^20.2.5", + "jasmine-core": "~5.0.0", + "jasmine-spec-reporter": "~7.0.0", + "karma": "~6.4.2", + "karma-chrome-launcher": "~3.2.0", + "karma-coverage-istanbul-reporter": "~3.0.3", + "karma-jasmine": "~5.1.0", + "karma-jasmine-html-reporter": "^2.0.0", + "ts-node": "^10.9.1", + "tslint": "~6.1.3", + "typescript": "^5.1.0" + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/app-config.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/app-config.ts new file mode 100644 index 0000000..37bf97e --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/app-config.ts @@ -0,0 +1,42 @@ +import { Injectable } from '@angular/core'; +import{environment} from 'src/environments/environment'; +/** + * This is a singleton class + */ +@Injectable() +export class AppConfig { + //Provide all the Application Configs here + + public version: string = "1.0.0"; + public locale: string = "en-US"; + public currencyFormat = { style: "currency", currency: "USD" }; + public dateFormat = { year: 'numeric', month: 'short', day: 'numeric' }; +// port in enviroment + // API Related configs + public apiPort: string; // this.apiURL //9191 to pc used and 8080/billingback to jboss + public apiProtocol: string; + public apiHostName: string; + public baseApiPath: string; + public backendURL: string = environment.backendUrl; + + constructor() { + if (this.apiProtocol === undefined) { + this.apiProtocol = window.location.protocol; + } + if (this.apiHostName === undefined) { + this.apiHostName = window.location.hostname; + } + if (this.apiPort === undefined) { + this.apiPort = window.location.port; + } + if (this.apiHostName.includes("infomud") || this.apiHostName.includes("heroku")) { + this.baseApiPath = this.apiProtocol + "//" + this.apiHostName + "/"; + } + else { + this.baseApiPath = this.backendURL + "/"; + } + if (this.locale === undefined) { + this.locale = navigator.language; + } + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/app-routing.module.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/app-routing.module.ts new file mode 100644 index 0000000..16371b5 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/app-routing.module.ts @@ -0,0 +1,14 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + + +const routes: Routes = [ + {path: '', redirectTo: 'login', pathMatch: 'full'} + +]; + +@NgModule({ + imports: [RouterModule.forRoot(routes)], + exports: [RouterModule] +}) +export class AppRoutingModule { } diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/app.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/app.component.html new file mode 100644 index 0000000..583ce2e --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/app.component.html @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/app.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/app.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/app.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/app.component.spec.ts new file mode 100644 index 0000000..30e49af --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/app.component.spec.ts @@ -0,0 +1,35 @@ +import { TestBed, async } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; +import { AppComponent } from './app.component'; + +describe('AppComponent', () => { + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [ + RouterTestingModule + ], + declarations: [ + AppComponent + ], + }).compileComponents(); + })); + + it('should create the app', () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.componentInstance; + expect(app).toBeTruthy(); + }); + + it(`should have as title 'angularclarity'`, () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.componentInstance; + expect(app.title).toEqual('angularclarity'); + }); + + it('should render title', () => { + const fixture = TestBed.createComponent(AppComponent); + fixture.detectChanges(); + const compiled = fixture.nativeElement; + expect(compiled.querySelector('.content span').textContent).toContain('angularclarity app is running!'); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/app.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/app.component.ts new file mode 100644 index 0000000..c3d492a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/app.component.ts @@ -0,0 +1,18 @@ +import { Component } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +@Component({ + selector: 'app-root', + templateUrl: './app.component.html', + styleUrls: ['./app.component.scss'] +}) +export class AppComponent { + title = 'angularclarity'; + constructor(private translate: TranslateService) { + // Set the default language + this.translate.setDefaultLang('en'); + } + +switchLanguage(language: string) { + this.translate.use(language); +} +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/app.module.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/app.module.ts new file mode 100644 index 0000000..183d4a9 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/app.module.ts @@ -0,0 +1,130 @@ +import { ExcelService } from './services/excel.service'; +import { BrowserModule } from '@angular/platform-browser'; + +import { ToastrModule } from 'ngx-toastr'; + +import { AppRoutingModule } from './app-routing.module'; +import { AppComponent } from './app.component'; +import { ClarityModule } from '@clr/angular'; +import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; +import { HashLocationStrategy, LocationStrategy } from '@angular/common'; +import { HttpClientModule, HTTP_INTERCEPTORS,HttpClient } from '@angular/common/http'; +import { MainModule } from './modules/main/main.module'; +import { LoginModule } from './modules/login/login.module'; +import { MainService } from './services/main.service'; +import { AlertService } from './services/alert.service'; +import { HelperModule } from './pipes/helpers.module'; +import { LogoComponent } from './modules/logo/logo.component'; +import { AppConfig } from './app-config'; +import { JwtInterceptor } from './services/jwt.interceptor'; +import { UserInfoService } from './services/user-info.service'; +import { AuthGuard } from './services/auth_guard.service'; +import { LoginService } from './services/api/login.service'; +import { ApiRequestService } from './services/api/api-request.service'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import {CUSTOM_ELEMENTS_SCHEMA, NgModule } from "@angular/core"; +import { TranslateService } from './services/api/translate.service'; +import { RealnetMenuService } from './services/api/realnet-menu.service'; +import { UserProfileService } from './services/admin/user-profile.service'; +import { DragDropModule } from '@angular/cdk/drag-drop'; +import { TranslateModule, TranslateLoader } from '@ngx-translate/core'; +import { TranslateHttpLoader } from '@ngx-translate/http-loader'; +import '@clr/icons'; +import '@clr/icons/shapes/all-shapes'; +import { AboutComponent } from './modules/main/admin/about/about.component'; +import { LayoutComponent } from './modules/main/layout/layout.component'; +import { SetupiconComponent } from './modules/main/builder/setupicon/setupicon.component'; +import { MenumaintanceComponent } from './modules/main/admin/menumaintance/menumaintance.component'; +import { UsermaintanceComponent } from './modules/main/admin/usermaintance/usermaintance.component'; +import { UsergrpmaintenanceComponent } from './modules/main/admin/usergrpmaintenance/usergrpmaintenance.component'; +import { MenuaccesscontrolComponent } from './modules/main/admin/menuaccesscontrol/menuaccesscontrol.component'; + +import { SystemparametersComponent } from './modules/main/admin/systemparameters/systemparameters.component'; +import { AccesstypeComponent } from './modules/main/admin/accesstype/accesstype.component'; +import { SequencegenaratorComponent } from './modules/main/fnd/sequencegenarator/sequencegenarator.component'; +import { ReportbuildallComponent } from './modules/main/builder/report-build/reportbuildall/reportbuildall.component'; +import { ReportrunnerallComponent } from './modules/main/builder/report-runner/reportrunnerall/reportrunnerall.component'; +import { ReportbuildaddComponent } from './modules/main/builder/report-build/reportbuildadd/reportbuildadd.component'; +import { DashboardrunnerComponent } from './modules/main/builder/dashboardrunner/dashboardrunner.component'; +import { DashrunnerallComponent } from './modules/main/builder/dashboardrunner/dashrunnerall/dashrunnerall.component'; +import { AllnewdashComponent } from './modules/main/builder/dashboardnew/allnewdash/allnewdash.component'; +import { AddnewdashComponent } from './modules/main/builder/dashboardnew/addnewdash/addnewdash.component'; +import { DashboardComponent } from './modules/main/fnd/dashboard/dashboard.component'; +import { ReportBuild2allComponent } from './modules/main/builder/report-build2/report-build2all/report-build2all.component'; +import { ReportBuild2addComponent } from './modules/main/builder/report-build2/report-build2add/report-build2add.component'; + +export function HttpLoaderFactory(http: HttpClient) { + return new TranslateHttpLoader(http , './assets/i18n/', '.json'); +} +@NgModule({ + declarations: [ + AppComponent, + LogoComponent, + AboutComponent, + AccesstypeComponent, + SequencegenaratorComponent, +LayoutComponent, +SetupiconComponent, +MenumaintanceComponent, +UsermaintanceComponent, +UsergrpmaintenanceComponent, +MenuaccesscontrolComponent, +SystemparametersComponent, +ReportbuildallComponent, +ReportrunnerallComponent, +ReportbuildaddComponent, +DashboardrunnerComponent, +DashrunnerallComponent, +AllnewdashComponent, +AddnewdashComponent, +DashboardComponent, +ReportBuild2allComponent, +ReportBuild2addComponent, + + ], + imports: [ + BrowserModule, + AppRoutingModule, + ClarityModule, + HttpClientModule, + BrowserAnimationsModule, + ToastrModule.forRoot(), + HelperModule, + MainModule, + LoginModule, + FormsModule, + ReactiveFormsModule, + DragDropModule, + TranslateModule.forRoot({ + loader: { + provide: TranslateLoader, + useFactory: HttpLoaderFactory, + deps: [HttpClient] + } + }) + + ], + providers: [ + MainService, + AlertService, + ExcelService, + UserInfoService, + LoginService, + ApiRequestService, + TranslateService, + RealnetMenuService, + UserProfileService, + // ProjectSetupService, + // TechnologyStackService, + // DropdownService, + // WireframeService, + // SuregitService, + AuthGuard, + AppConfig, + { provide: HTTP_INTERCEPTORS, useClass: JwtInterceptor, multi: true }, + { provide: LocationStrategy, useClass: HashLocationStrategy } // HashLocationStrategy to use # and remove # PathLocationStrategy + ], + bootstrap: [AppComponent], + schemas: [CUSTOM_ELEMENTS_SCHEMA ] +}) +export class AppModule { } diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/global.model.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/global.model.ts new file mode 100644 index 0000000..74382c6 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/global.model.ts @@ -0,0 +1,169 @@ +export class field{ + _id?:any; + name?:any; + type?:any; + icon?:any; + toggle?:any; + required?:any; + regex?:any; + errorText?:any; + label?:any; + description?:any; + placeholder?:any; + className?:any; + subtype?:any; + handle?:any; + min?:number; + max?:number; + inline?:any; + value?:any; + size?:any; + values?:Array; + div_name?:any; + gridLine_name?:any; + children?: field[]; + tooltipmsg?:any; + maxcharacters?:any; + visibilty?:any; + duplicateVal?:any; + encryptData?:any; + personalHealthInfo?:any; + descriptionText?:any; + heightpx?:any; + showDescription?:boolean; + personalInfo?:boolean; + readOnly?:any; + sessionVar?:any; + allowedDays?:any; + allowedHrsFrom?:any; + allowedHrsTo?:any; + showSeconds?:boolean; + datePicker?:any; + alphabeticalOrdering?:boolean; + fieldLayout?:any; + otherChoice?:boolean; + dynamicList?:any; + iconType?:any; + target?:any; + defaultCamera?:any; + imgoption?:Array; + questions?:Array; + maxDuration?:any; + maxNo?:number; + decimalPlaces?:number; + currencyType?:any; + formatNo?:any; + providersData?:any; + apikey?:any; + expanded?:boolean; + files?:Array; + password?:any; + content?:any; + theme?:any; + norows?:number; + nocolumns?:number; + editordata?:any; +} +export class value{ + label?:any=""; + value?:any=""; +} +export class value1{ + label1?:any=""; + value1?:any=""; +} +export interface IProperty { + url?: string; + loading?: boolean; + itemsPerPage?: number; + total?: number; + p?: number; + sizeLimit?: number; + title?: string; + text?: string; + items?: any[]; + sub?: any; + isBlocked?: boolean; + isDeleted?: boolean; + isEmailVerified?: string; + successMsg?: string; + msg?: string; + userId?: string; + status?: number; + userPlaceholder?: string; + searchKey?: string; + fullName?: string; + email?: string; + countryCode?: string; + dialCode?: string; + phoneNumber?: string; + value?: Date; + data?: any; + name_es?: string; + name_en?: string; + countries?: any; + states?: any; + cities?: any; + countries1?: any; + states1?: any; + cities1?: any; + countries2?: any; + states2?: any; + cities2?: any; + localities?: any; + buildings?: any; + country_id?: string; + state_id?: string; + city_id?: string; + locality_id?: string; + building_id?: string; + countryCount?: number; + stateCount?: number; + cityCount?: number; + stateCityCount?: number; + localityCount?: number; + buildingCount?: number; + countriesAdd?: any; + statesAdd?: any; + citiesAdd?: any; + localitiesAdd?: any; + country_idAdd?: string; + state_idAdd?: string; + city_idAdd?: string; + locality_idAdd?: string; + countryCountAdd?: number; + stateCountAdd?: number; + cityCountAdd?: number; + localityCountAdd?: number; + successText?: string; + propertyTypes?: any; + propertyTypesCount?: number; + amenities?: any; + amenitiesCount?: number; + projectTypes?: any; + projectTypesCount?: number; + routeName?: string; + icon?: any; + userType?: string; + overlay?: any; + is_broker_seller_dev?: number; + is_buyer_renter?: number; + is_broker?: number; + is_data_collector?: number; + image?: any; + index?: number; + name?: string; + phone?: string; + type?: number; + property_id?: string; + banks?: any; + bankCount?: string; + flag?: number; + page?: number; + property_for?: any; + status_id?:any; + type_id?:any; + post_type?:any; + developer_id?:any; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/admin/role.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/admin/role.ts new file mode 100644 index 0000000..abf5370 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/admin/role.ts @@ -0,0 +1,4 @@ +export enum Role { + // User = 'User', + Admin = 'Admin' +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/admin/systemparameter.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/admin/systemparameter.ts new file mode 100644 index 0000000..73e6b22 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/admin/systemparameter.ts @@ -0,0 +1,30 @@ +export class Systemparameter{ + + + public schedulerTime: number; + public leaseTaxCode: String; + public vesselConfProcessLimit: number; + public rowToDisplay: any; + public linkToDisplay: any; + public rowToAdd: any; + public lovRowToDisplay:any; + public lovLinkToDisplay: any; + public oidserverName: any; + public oidBase: any; + public oidAdminUser: any; + public oidServerPort: any; + public userDefaultGroup: any; + public defaultDepartment: any; + public defaultPosition: any; + public singleCharge: any; + public firstDayOftheWeek:any; + public hourPerShift: any; + public cnBillingFrequency: any; + public billingDepartmentCode: any; + public basePriceList: any; + public nonContainerServiceOrder: any; + public ediMaeSchedulerONOFF: any; + public ediSchedulerONOFF: any; +public company_Display_Name:any; +public upload_Logo:any; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/admin/user.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/admin/user.ts new file mode 100644 index 0000000..15072a8 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/admin/user.ts @@ -0,0 +1,14 @@ +export class User { + public id: number; + public name: string; + public gender: string; + public dob: string; + public email: string; + public picture:Blob; + public location:string; + public address1:string; + public country:string; + public phone:number; + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/admin/userdepartment.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/admin/userdepartment.ts new file mode 100644 index 0000000..d53f135 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/admin/userdepartment.ts @@ -0,0 +1,12 @@ +export class userdepartment{ + public departmentCode:String; + public active:String; + public description:String; + public createdOn:Date; + public createdBy:String; + public updatedOn:Date; + public updatedBy:String; + public id:number; + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/admin/usergrpma.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/admin/usergrpma.ts new file mode 100644 index 0000000..349ad24 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/admin/usergrpma.ts @@ -0,0 +1,10 @@ +export class Usergrpmain { + public usrGrp: number; + public groupName:string; + public groupDesc:string; + public createby:string; + public createdate:Date; + public groupLevel:string; + public status:string; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/admin/usermaintaince.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/admin/usermaintaince.ts new file mode 100644 index 0000000..3d1d806 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/admin/usermaintaince.ts @@ -0,0 +1,38 @@ +import { userdepartment } from "./userdepartment"; +import { userposition } from "./userposition"; + +export class Usermain { + public userId: number; + public changePassw:string; + public confirmPassword:string; + public createby:string; + public createdate:Date; + public customerId:number; + public customerNumer:String; + public departmentCode:string; + public departmentCodeString:string; + public email:string; + public firstLogin:String; + public fullName:String; + public langCode: String; + public notification:String; + public password1: String; + public password2: String; + public password3: String; + public password4: String; + public positionCodeString:String; + public pwdChangedCnt:string; + public shortName: string; + public status:string; + public updateby:string; + public updatedate:Date; + public username: string; + public userPassw: string; + public usrGrpId:number; + public title: string; + public expiryDate: Date; + public lastPwdChangedDate:Date; + + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/admin/userposition.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/admin/userposition.ts new file mode 100644 index 0000000..7b36d9a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/admin/userposition.ts @@ -0,0 +1,9 @@ +export class userposition{ + public positionCode:String; + public active:String; + public description:String; + public createdOn:Date; + public createdBy:String; + public updatedOn:Date; + public updatedBy:String; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/ActiveTechnology.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/ActiveTechnology.ts new file mode 100644 index 0000000..fa99e85 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/ActiveTechnology.ts @@ -0,0 +1,4 @@ +export interface ActiveTechnology { + id; +name; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/AdhocParam.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/AdhocParam.ts new file mode 100644 index 0000000..e25d168 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/AdhocParam.ts @@ -0,0 +1,13 @@ + + +export class AdhocParam{ + + + public id: number; + public table_allias_name: string; + public column_name: string; + public column_allias_name: string; + + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/Audit.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/Audit.ts new file mode 100644 index 0000000..1a38432 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/Audit.ts @@ -0,0 +1,9 @@ +export class Audit { + public accountId: number; + public createdAt: Date; + public createdBy: string; + public updatedAt: Date; + public updatedBy: string; + + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/Bcf_TechnologyStack.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/Bcf_TechnologyStack.ts new file mode 100644 index 0000000..9c7537e --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/Bcf_TechnologyStack.ts @@ -0,0 +1,9 @@ +import { Audit } from "./Audit"; +export class Bcf_TechnologyStack extends Audit { + public id: number; + public tech_stack: string; + public tech_stack_key: string; + public tags: string; + public base_prj_file_name: string; + public active: boolean; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/ColumnList.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/ColumnList.ts new file mode 100644 index 0000000..a84c0a8 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/ColumnList.ts @@ -0,0 +1,4 @@ +export interface ColumnList { + // id: number; + table_name: string; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/DateParam.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/DateParam.ts new file mode 100644 index 0000000..786ad6c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/DateParam.ts @@ -0,0 +1,11 @@ +export class DateParam{ + + + public date_id: number; + public col_table_alies_name_date: string; + public col_date_query: string; + public column_alias_date_query: string; + + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/FileData.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/FileData.ts new file mode 100644 index 0000000..b7b379d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/FileData.ts @@ -0,0 +1,10 @@ +export interface FileData { + id: number; + text: string; + /* public id: number; + public text: string; */ + /* constructor(id: number, text: string) { + this.id = id; + this.text = text; + } */ +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/FileDetails.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/FileDetails.ts new file mode 100644 index 0000000..6eac3c4 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/FileDetails.ts @@ -0,0 +1,4 @@ +export interface FileDetails { + id: number; + text: string; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/Module_Setup.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/Module_Setup.ts new file mode 100644 index 0000000..ecc0fcf --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/Module_Setup.ts @@ -0,0 +1,14 @@ +import { Audit } from "./Audit"; +import { ProjectSetup } from "./Project_setup"; +import { Rn_Fb_Header } from "./Rn_Fb_Header"; + +export class ModuleSetup extends Audit { + public id: number; + public moduleName: string; + public description: string; + public modulePrefix: string; + public copyTo?: string; + public technologyStack: string; + public project: ProjectSetup; + public rn_fb_headers: Rn_Fb_Header[]; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/Project_setup.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/Project_setup.ts new file mode 100644 index 0000000..1173df2 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/Project_setup.ts @@ -0,0 +1,22 @@ +import { Audit } from "./Audit"; +import { ModuleSetup } from "./Module_Setup"; + +export class ProjectSetup extends Audit { + public id: number; + public projectName: string; + public description: string; + public copyTo?: string; + public technologyStack: string; + public techStackId: number; + public projectPrefix: string; + public dbName: string; + public dbUserName: string; + public dbPassword: string; + public portNumber: string; + public namespace: string; + public tags:string; + public category:string; + public accessibility:boolean; + public modules: ModuleSetup[]; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/RbColumns.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/RbColumns.ts new file mode 100644 index 0000000..13b372a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/RbColumns.ts @@ -0,0 +1,12 @@ +export class RbColumns{ + + + public id: number; + public column_name: string; + public functions: string; + public column_allias_name: string; + public table_allies_name: string; + public asc_desc: string; + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/RbTables.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/RbTables.ts new file mode 100644 index 0000000..5603a7e --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/RbTables.ts @@ -0,0 +1,7 @@ +export class RbTables{ + public table_id: number; + public table_name: string; + public table_allias_name: string; + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/ReportBuilder.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/ReportBuilder.ts new file mode 100644 index 0000000..0c6ee59 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/ReportBuilder.ts @@ -0,0 +1,8 @@ +export class ReportBuilder { + public report_id: number; +public report_name:string; +public description: string; +public report_tags: string; +public servicename:string; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/ReportBuilderQuery.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/ReportBuilderQuery.ts new file mode 100644 index 0000000..9064f25 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/ReportBuilderQuery.ts @@ -0,0 +1,4 @@ +export class ReportBuilderQuery { + public master_select: string; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/Rn_Cff_ActionBuilder_Header.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/Rn_Cff_ActionBuilder_Header.ts new file mode 100644 index 0000000..6654bae --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/Rn_Cff_ActionBuilder_Header.ts @@ -0,0 +1,14 @@ +import { Audit } from "./Audit"; +import { Rn_Cff_ActionBuilder_Line } from "./Rn_Cff_ActionBuilder_Line"; +import { Rn_Fb_Header } from "./Rn_Fb_Header"; + +export class Rn_Cff_ActionBuilder_Header extends Audit { + public id: number; + public rn_fb_header: Rn_Fb_Header; + public technologyStack: string; + public controllerName: string; + public methodName: string; + public actionName: string; + public fileLocation: string; + public actionBuilderLines: Rn_Cff_ActionBuilder_Line[]; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/Rn_Cff_ActionBuilder_Line.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/Rn_Cff_ActionBuilder_Line.ts new file mode 100644 index 0000000..7e9be6b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/Rn_Cff_ActionBuilder_Line.ts @@ -0,0 +1,18 @@ +import { Audit } from "./Audit"; +import { Rn_Cff_ActionBuilder_Header } from "./Rn_Cff_ActionBuilder_Header"; + +export class Rn_Cff_ActionBuilder_Line extends Audit { + public id: number; + public actionType1: string; + public actionType2: string; + public dataType: string; + public variableName: string; + public assignment: string; + public message: string; + public conditions: string; + public forward: string; + public equation: string; + public seq: number; + public action: string; + public rn_cff_actionBuilderHeader: Rn_Cff_ActionBuilder_Header; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/Rn_Fb_Header.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/Rn_Fb_Header.ts new file mode 100644 index 0000000..2423279 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/Rn_Fb_Header.ts @@ -0,0 +1,22 @@ +import { Audit } from "./Audit"; +import { Rn_Fb_Lines } from "./Rn_Fb_Lines"; + +export class Rn_Fb_Header extends Audit { + public id: number; + public techStack: string; + public objectType: string; + public subObjectType: string; + public uiName: string; + public formType: string; + public tableName: string; + public lineTableName: string; + public multilineTableName: string; + public formCode: string; + public build: boolean; + public updated: boolean; + public menuName: string; + public headerName: string; + public convertedTableName: string; + public rn_fb_lines: Rn_Fb_Lines[]; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/Rn_Fb_Lines.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/Rn_Fb_Lines.ts new file mode 100644 index 0000000..da08a69 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/Rn_Fb_Lines.ts @@ -0,0 +1,49 @@ +import { Audit } from "./Audit"; + +export class Rn_Fb_Lines extends Audit { + public id: number; + public fieldName: string; + public mapping: string; + public dataType: string; + public formCode: string; + public key1: string; + public type1: string; + public mandatory: boolean; + public hidden: boolean; + public readonly: boolean; + public dependent: boolean; + public dependent_on: string; + public dependent_sp: string; + public dependent_sp_param: string; + public validation_1: boolean; + public val_type: string; + public val_sp: string; + public val_sp_param: string; + public sequence: boolean; + public seq_name: string; + public seq_sp: string; + public seq_sp_param: string; + public default_1: boolean; + public default_type: string; + public default_value: string; + public default_sp: string; + public default_sp_param: string; + public calculated_field: boolean; + public cal_sp: string; + public cal_sp_param: string; + public add_to_grid: boolean; + public sp_for_autocomplete: boolean; + public sp_name_for_autocomplete: string; + public sp_for_dropdown: boolean; + public sp_name_for_dropdown: string; + public type_field: string; + public methodName: string; + public seq: number; + public form_type: string; + public section_num: number; + public button_num: string; + public type2: string; + public table_name?: string; + public line_table_name: string; + public line_table_no: number; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/Rn_Main_Menu.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/Rn_Main_Menu.ts new file mode 100644 index 0000000..cd002e0 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/Rn_Main_Menu.ts @@ -0,0 +1,17 @@ +import { Audit } from "./Audit"; +import { Rn_Sub_Menu } from './Rn_Sub_Menu'; + +export class Rn_Main_Menu extends Audit { + public menuItemId: number; + public menuItemDesc: string; + public mainMenuActionName : string; + public mainMenuIconName: string; + public menu_type: string; + public mcreate:String; + public mdelete:String; + public medit:String; + public menuId:Number; + public mquery:String; + public mvisible:String; + public subMenus: Rn_Sub_Menu[]; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/Rn_Sub_Menu.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/Rn_Sub_Menu.ts new file mode 100644 index 0000000..bcbc9b2 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/Rn_Sub_Menu.ts @@ -0,0 +1,16 @@ +import { Audit } from "./Audit"; + +export class Rn_Sub_Menu extends Audit { + public menuItemId: number; + public menuItemDesc: string; + public mainMenuActionName : string; + public mainMenuIconName: string; + public menu_type: string; + public mcreate:String; + public mdelete:String; + public medit:String; + public menuId:Number; + public mquery:String; + public mvisible:String; + //public menu_icon: string; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/StdParam.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/StdParam.ts new file mode 100644 index 0000000..015c577 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/StdParam.ts @@ -0,0 +1,12 @@ +export class StdParam{ + + + public std_id: number; + public col_table_alies_name_std_para: string; + public col_std_para_query: string; + public field_type: string; + public sp_for_dd: string; + + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/WhereParam.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/WhereParam.ts new file mode 100644 index 0000000..c98b3be --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/WhereParam.ts @@ -0,0 +1,14 @@ +export class WhereParam{ + + + public where_id: number; + public explecity: string; + public where_coloumn1_tbl_alias_name: string; + public where_coloumn: string; + public where_condition: string; + public switch_control: string; + public where_coloumn2_tbl_alias_name:string; + public where_coloumn2:string; + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/WireFrame.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/WireFrame.ts new file mode 100644 index 0000000..c1dce53 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/WireFrame.ts @@ -0,0 +1,29 @@ +export interface WireFrame { + header: Header; + line: Line; +} +export interface Header { +section: Section[]; +} +export interface Line { +section: Section[]; +} +export interface Section { +id: number; +fieldName: string; +mapping: string; +dataType: string; +type_field: string; +section_num: number; +fields: Field[]; +} + +export interface Field { +id: number; +fieldName: string; +mapping: string; +dataType: string; +type_field: string; +section_num: number; +seq: number; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/dashboard.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/dashboard.ts new file mode 100644 index 0000000..36e89e4 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/dashboard.ts @@ -0,0 +1,114 @@ +export interface WidgetModel { + name: string; + identifier: string; +} +export interface SubmenuItem { + name: string; + identifier: string; +} + +export interface WidgetModel1 { + name: string; + submenu?: SubmenuItem[]; + showSubmenu?: boolean; // Optional property to control submenu visibility + identifier: string; +} + +export interface DashboardContentModel { + cols: number; + rows: number; + y: number; + x: number; + chartid: number; + component?: any; + name: string; + type?:string; +} + +export interface DashboardModel { + id: number; + username: string; + dashboard: Array; +} + + +export interface DashboardContentModel2 { + cols: number; + rows: number; + y: number; + x: number; + chartid: number; + charttitle?: string; + component?: any; + name: string; + type?: string; + values?:Array; + imgoption?:Array; + keyValue?:string; + fieldtext?:any; + dropdown_type?:string; + imageURL?:string; +} + +export interface DashboardModel2 { + id: number; + username: string; + dashboard: Array; +} + +export class value{ + label?:any=""; + value?:any=""; +} +export class value1{ + label1?:any=""; + value1?:any=""; +} + + +export const WidgetsMock: WidgetModel[] = [ + { + name: 'Radar Chart', + identifier: 'radar_chart' + }, + { + name: 'Doughnut Chart', + identifier: 'doughnut_chart' + }, + { + name: 'Line Chart', + identifier: 'line_chart' + }, + { + name: 'Bar Chart', + identifier: 'bar_chart' + }, + { + name: 'Pie Chart', + identifier: 'pie_chart' + }, + { + name: 'Polar Area Chart', + identifier: 'polar_area_chart' + }, + { + name: 'Bubble Chart', + identifier: 'bubble_chart' + }, + { + name: 'Scatter Chart', + identifier: 'scatter_chart' + }, + { + name: 'Dynamic Chart', + identifier: 'dynamic_chart' + }, + { + name: 'Financial Chart', + identifier: 'financial_chart' + }, + { + name: 'To Do', + identifier: 'to_do_chart' + } +] diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/gitfile.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/gitfile.ts new file mode 100644 index 0000000..1279faf --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/gitfile.ts @@ -0,0 +1,9 @@ +export class Gitfile { + + public content :String; + public url :String; + public sha:String; + public encoding:String; + public size:String; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/rptBuilder.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/rptBuilder.ts new file mode 100644 index 0000000..d55ca79 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/rptBuilder.ts @@ -0,0 +1,14 @@ +export class RptBuilder{ + + public id:number; + public name; + public folder: string; + public query: string; + public date_param_flag:boolean; + public adhoc_param_flag:boolean; + public adhoc_param_string: string; + public std_param_json: string; + + + } + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/suregit.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/suregit.ts new file mode 100644 index 0000000..5e721a6 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/suregit.ts @@ -0,0 +1,9 @@ +export class Suregit { + public path :String; + public sha :String; + public url :String; + public type:Number; + public mode:String; + public size:String; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/surename.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/surename.ts new file mode 100644 index 0000000..e57af9c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/surename.ts @@ -0,0 +1,9 @@ +export class Surename { + public id :number; + public message :String; + public name :String; + public timestamp:Number; + public email:String; + public username:String; +public sha:any; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/surestar.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/surestar.ts new file mode 100644 index 0000000..42eaf13 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/surestar.ts @@ -0,0 +1,9 @@ +export class Surestar { + public id :number; + public email :String; + public watchers_count :number; + public forks_count:Number; + public stars_count:number; + public size:String; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/webpagebuilder.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/webpagebuilder.ts new file mode 100644 index 0000000..12c47b1 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/builder/webpagebuilder.ts @@ -0,0 +1,55 @@ +export interface WidgetModel { + name: string; + identifier: string; +} + +export interface DashboardContentModel { + cols: number; + rows: number; + y: number; + x: number; + chartid: number; + component?: any; + name: string; +} + +export interface DashboardModel { + id: number; + username: string; + dashboard: Array; +} + +export const WidgetsMock: WidgetModel[] = [ + // { + // name: 'Text field', + // identifier: 'text_field' + // }, + { + name: 'Text area', + identifier: 'text_area' + }, + { + name: 'Table field', + identifier: 'table_field' + }, + // { + // name: 'Background Color', + // identifier: 'background_color' + // }, + // { + // name: 'Box field', + // identifier: 'box_field' + // }, + { + name: 'Image field', + identifier: 'img_field' + }, + { + name: 'Line field', + identifier: 'line_field' + }, + { + name: 'QR code', + identifier: 'qr_code' + } +] diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/Bcf_Exception_Rule_Library .ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/Bcf_Exception_Rule_Library .ts new file mode 100644 index 0000000..bfa5d5d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/Bcf_Exception_Rule_Library .ts @@ -0,0 +1,10 @@ +import { Audit } from "../builder/Audit"; + +export class Bcf_Exception_Rule_Library extends Audit { + id: number; + tech_stack: string; + object_type: string; + sub_object_type: string; + object_name_variable: string; + object_name_dynamic_string: string; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/Bcf_Extractor.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/Bcf_Extractor.ts new file mode 100644 index 0000000..b86c5fe --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/Bcf_Extractor.ts @@ -0,0 +1,17 @@ +import { Audit } from "../builder/Audit"; +import { Bcf_Extractor_Params } from "./Bcf_Extractor_Params"; + +export class Bcf_Extractor extends Audit { + id: number; + tech_stack: string; + tech_stack_key: string; + object_type: string; + sub_object_type: string; + form_type_name: string; + std_wf_name: string; + icon_file_name: string; + sample_file_name: string; + extractor_stage: string; + rn_bcf_extractor_Params: Bcf_Extractor_Params[]; +} + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/Bcf_Extractor_Params.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/Bcf_Extractor_Params.ts new file mode 100644 index 0000000..c2d20b2 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/Bcf_Extractor_Params.ts @@ -0,0 +1,20 @@ +import { Audit } from "../builder/Audit"; + +export class Bcf_Extractor_Params extends Audit { + id: number; + tech_stack: string; + object_type: string; + sub_object_type: string; + file_code: any; + name_string: string; + address_string: string; + moved_address_string: string; + reference_address_string: string; + description: string; + file_name_var: string; + file_name_dynamic_string: string; + is_extraction_enabled: boolean; + is_creation_enabled: boolean; + total_project_path_dynamic_string:string; +} + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/Bcf_Rule_Library.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/Bcf_Rule_Library.ts new file mode 100644 index 0000000..44428f8 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/Bcf_Rule_Library.ts @@ -0,0 +1,16 @@ +import { Audit } from "../builder/Audit"; + +export class Bcf_Rule_Library extends Audit { + id: number; + group_id: number; + rule_name: string; + tech_stack: string; + object_type: string; + sub_object_type: string; + file_code: string; + rule_type: string; + identifier_start_string: string; + identifier_end_string: string; + replacement_string: string; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/BiDashHeader.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/BiDashHeader.ts new file mode 100644 index 0000000..f1dc31b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/BiDashHeader.ts @@ -0,0 +1,13 @@ +import { BiDashLine } from './BiDashLine'; + +export class BiDashHeader{ + + + public header_id: number; + public dashboard_name: string; + public components: BiDashLine[]; + + + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/BiDashLine.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/BiDashLine.ts new file mode 100644 index 0000000..2e49b8f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/BiDashLine.ts @@ -0,0 +1,17 @@ +export class BiDashLine{ + + + + public section_type: string; + public widgets1: string; + public widgets2: string; + public widgets3: string; + public widgets4: string; + public widgets5: string; + public widgets6: string; + + + + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/BiWidget.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/BiWidget.ts new file mode 100644 index 0000000..52f1b7b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/BiWidget.ts @@ -0,0 +1,10 @@ +export class BiWidget { + public id: number; +public widget_name: string; +public widget_description: string; + public chart_type: string; + public sql_query:string; + public label:string; + public color_scheme:string; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/DynamicForm.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/DynamicForm.ts new file mode 100644 index 0000000..6861694 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/DynamicForm.ts @@ -0,0 +1,37 @@ +//import { Audit } from "./Audit"; +import { Audit } from "../builder/Audit"; +export class DynamicForm extends Audit { + public id: number; + public form_id: number; + public form_version: number; + public comp1: string; + public comp2: string; + public comp3: string; + public comp4: string; + public comp5: string; + public comp6: string; + public comp7: string; + public comp8: string; + public comp9: string; + public comp10: string; + public comp11: string; + public comp12: string; + public comp13: string; + public comp14: string; + public comp15: string; + public comp16: string; + public comp17: string; + public comp18: string; + public comp19: string; + public comp20: string; + public comp21: string; + public comp22: string; + public comp23: string; + public comp24: string; + public comp25: string; + public comp_l26: string; + public comp_l27: string; + public comp_l28: string; + public comp_l29: string; + public comp_l30: string; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/ExtensionField.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/ExtensionField.ts new file mode 100644 index 0000000..3becca0 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/ExtensionField.ts @@ -0,0 +1,47 @@ +import { Audit } from "../builder/Audit"; + +export class ExtensionField extends Audit { + public id: number; + public field_name: string; + public mapping: string; + public data_type: string; + public form_code: string; + public type: string; + public isActive: boolean; + + /* public mandatory: string; + public hidden: string; + public readonly: string; + public dependent: string; + public dependent_on: string; + public dependent_sp: string; + public dependent_sp_param: string; + public validation_1: string; + public val_type: string; + public val_sp: string; + public val_sp_param: string; + public sequence: string; + public seq_name: string; + public seq_sp: string; + public seq_sp_param: string; + public default1: string; + public default_type: string; + public default_value: string; + public default_sp: string; + public default_sp_param: string; + public calculated_field: string; + public cal_sp: string; + public cal_sp_param: string; + public add_to_grid: string; + public attr1: string; + public attr2: string; + public attr3: string; + public drop_value: string; + public dropdown: string; + public sp_name: string; + public ext_dd_id: string; + public sp_name_forautocomplete: string; + public ext_dependent_id: string; + public radio: string; + public radio_option: string; */ +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/Mapping.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/Mapping.ts new file mode 100644 index 0000000..385fdd6 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/Mapping.ts @@ -0,0 +1,4 @@ +export interface Mapping { + label: string; + value: string; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/Rn_Forms_Component_Setup.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/Rn_Forms_Component_Setup.ts new file mode 100644 index 0000000..41378c8 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/Rn_Forms_Component_Setup.ts @@ -0,0 +1,12 @@ +import { Audit } from "../builder/Audit"; +export class Rn_Forms_Component_Setup extends Audit { + public component_id: number; + public label: string; + public type: string; + public mapping: string; + public mandatory: string; + public readonly: string; + public drop_values: string; + public sp: string; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/Rn_Forms_Setup.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/Rn_Forms_Setup.ts new file mode 100644 index 0000000..872efee --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/Rn_Forms_Setup.ts @@ -0,0 +1,11 @@ +import { Rn_Forms_Component_Setup } from "./Rn_Forms_Component_Setup"; +import { Audit } from "../builder/Audit"; +export class Rn_Forms_Setup extends Audit { + public form_id: number; + public form_name: string; + public form_desc: string; + public related_to: string; + public page_event: string; + public button_caption: string; + public components: Rn_Forms_Component_Setup[]; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/RuleCopy.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/RuleCopy.ts new file mode 100644 index 0000000..0b905a4 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/RuleCopy.ts @@ -0,0 +1,20 @@ +export class RuleCopy { + public from_tech_stack: string; +public from_object_type: string; +public from_sub_object_type: string; +public to_tech_stack: string; +public to_object_type: string; +public to_sub_object_type: string; + +} + +export interface Rule { + tech_stack: string; + object_type: string; + sub_object_type: string; + version: string; + replacement_string: string; + keyword: string; + priority: number; + service: string; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/Studentadd.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/Studentadd.ts new file mode 100644 index 0000000..25927d4 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/Studentadd.ts @@ -0,0 +1,10 @@ + + +export class student { + public id: number; + public wf_id:number; + public current_json: string; + public status: string; + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/TableList.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/TableList.ts new file mode 100644 index 0000000..8f66129 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/TableList.ts @@ -0,0 +1,4 @@ +export interface TableList { + // id: number; + table_name: string; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/ValidationError.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/ValidationError.ts new file mode 100644 index 0000000..a72bfd6 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/ValidationError.ts @@ -0,0 +1,4 @@ +export class ValidationError { + field: any; + message: any; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/apiregisteryline.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/apiregisteryline.ts new file mode 100644 index 0000000..5db740a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/apiregisteryline.ts @@ -0,0 +1,10 @@ +export class ApiRegisteryLine { + public id: number; + public url: string; + public method: string; + public header_id: number; + + + + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/book.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/book.ts new file mode 100644 index 0000000..3f9f0de --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/book.ts @@ -0,0 +1,10 @@ +export class book { + public id: number; + public booktype: string; + public bookname: string; + public price: number; + public writer: string; + public code:number; + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/department.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/department.ts new file mode 100644 index 0000000..5da15cf --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/department.ts @@ -0,0 +1,10 @@ +export class Department { + public id: number; + public department_code: string; + public description: string; + public active: string; + public created_by:string; + public created_on:string; + public updated_by:string; + public updated_on:string; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/health_checkup.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/health_checkup.ts new file mode 100644 index 0000000..6cff663 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/health_checkup.ts @@ -0,0 +1,10 @@ +export class HealthCheckup { + public id: number; + public ip: string; + public port: number; + public serviceName: string; + public createProject: boolean; + public buildProject: boolean; + public createDeployment: boolean; + public deployApp: boolean; +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/play.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/play.ts new file mode 100644 index 0000000..3c5b927 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/play.ts @@ -0,0 +1,9 @@ +export class College { + public studentid: number; + public wf_instance_id:number; + public studentname: string; + public department: string; + public joiningDate: string; + public phone: number; + public emailId:string; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/table-setup.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/table-setup.ts new file mode 100644 index 0000000..8f66129 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/table-setup.ts @@ -0,0 +1,4 @@ +export interface TableList { + // id: number; + table_name: string; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/university.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/university.ts new file mode 100644 index 0000000..16e9a12 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/models/fnd/university.ts @@ -0,0 +1,11 @@ +import {book} from '../../models/fnd/book'; + +export class university { + public id: number; + public name: string; + public email: string; + public subject: string; + public phone: number; + public books: book[]; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/about-work/about-work.component.css b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/about-work/about-work.component.css new file mode 100644 index 0000000..1d2e597 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/about-work/about-work.component.css @@ -0,0 +1,45 @@ +.clr-input { + color: #212529; + padding: 0.75rem 0.75rem; + margin-top: 10px; + margin-bottom: 10px; +} + +input[type=text], [type=password], [type=number], [type=email], [type=date], textarea { + width: 80%; + padding: 15px 15px; + background-color: rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} + +.eye { + position: absolute; +} + +#hide1 { + display: none; +} + +.container { + align-content: center; +} + +.center { + width: auto; + margin: 0 auto; +} + +.required-field, .error_mess { + color: red; +} + +select { + margin: 15px 0px; + width: 80%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; +}/*# sourceMappingURL=about-work.component.css.map */ \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/about-work/about-work.component.css.map b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/about-work/about-work.component.css.map new file mode 100644 index 0000000..f40c4d1 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/about-work/about-work.component.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["about-work.component.scss","about-work.component.css"],"names":[],"mappings":"AAAA;EACE,cAAA;EAGA,wBAAA;EACA,gBAAA;EACA,mBAAA;ACDF;;ADGA;EACE,UAAA;EACA,kBAAA;EACA,oCAAA;EAEA,qBAAA;EACA,sBAAA;EACA,kBAAA;EACA,sBAAA;ACDF;;ADGA;EACE,kBAAA;ACAF;;ADGA;EACE,aAAA;ACAF;;ADGA;EACE,qBAAA;ACAF;;ADGA;EACE,WAAA;EACA,cAAA;ACAF;;ADGA;EACE,UAAA;ACAF;;ADGA;EACE,gBAAA;EACA,UAAA;EACA,gBAAA;EACA,sBAAA;EACA,kBAAA;ACAF","file":"about-work.component.css"} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/about-work/about-work.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/about-work/about-work.component.html new file mode 100644 index 0000000..5faf200 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/about-work/about-work.component.html @@ -0,0 +1,261 @@ + + + + +

    +

    Welcome to cloudnsure!

    +
    Tell Us More About You
    +
    Tell Us About Your Work!
    + +
    +
    +
    + + +
    +
    + + +
    +
    *This field is Required
    +
    +
    +
    +
    + + +
    +
    *This field is Required
    +
    +
    +
    +
    + + +
    +
    *This field is Required
    +
    +
    + + + + + + + +
    +
    + + +
    +
    *This field is Required
    +
    +
    + + +
    +
    + + +
    +
    *This field is Required
    +
    +
    +
    +
    + + +
    +
    *This field is Required
    +
    +
    +
    +
    + + +
    +
    *This field is Required
    +
    +
    +
    +
    + + +
    +
    *This field is Required
    +
    +
    +
    +
    + + +
    +
    *This field is Required
    +
    +
    + + + +
    +
    + +
    + +
    +

    Wrong account? Log in instead.

    +
    + + +
    + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/about-work/about-work.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/about-work/about-work.component.scss new file mode 100644 index 0000000..a3a8aee --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/about-work/about-work.component.scss @@ -0,0 +1,122 @@ +// .clr-input { +// color: #212529; +// // border: 1px solid #ced4da; +// // border-radius: 0.25rem; +// padding: 0.75rem 0.75rem; +// margin-top: 10px; +// margin-bottom: 10px; +// } +// input[type=text],[type=password],[type=number],[type=email],[type=date],textarea { +// width: 80%; +// padding: 15px 15px; +// background-color:rgb(255, 255, 255); +// // margin: 8px 0; +// display: inline-block; +// border: 1px solid #ccc; +// border-radius: 4px; +// box-sizing: border-box; +// } +// .eye { +// position: absolute; +// } + +// #hide1 { +// display: none; +// } + +// .container { +// align-content: center; +// } + +// .center { +// width: auto; +// margin: 0 auto; +// } + +.required-field,.error_mess{ + color:indianred; + font-weight: bold; + + } + // select{ + // margin:15px 0px; + // width: 80%; + // padding: 5px 5px; + // border: 1px solid #ccc; + // border-radius: 4px; + // } + + + + + + + $background: #f5f6fa; + $text: #9c9c9c; + $input-bg-color: #fff; + $input-text-color: #a3a3a3; + $button-bg-color: #7f8ff4; + $button-text-color: #fff; + $google-button-bg-color: #7f8ff4; + $linkedin-button-bg-color: #4b76eb; + + + :root { + background: $background; + color: $text; + font: 1rem "PT Sans", sans-serif; + } + + //** helper + .display_msg { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + } + + .form { + &__field { + width: 360px; + padding: 7px 9px; + margin: 0 12px; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; + } + } + + .btn { + display: inline-block; + background: transparent; + color: inherit; + font: inherit; + border: 0; + outline: 0; + padding: 0; + transition: all 200ms ease-in; + cursor: pointer; + + &--primary { + background: $button-bg-color; + color: $button-text-color; + box-shadow: 0 0 10px 2px rgba(0, 0, 0, .1); + border-radius: 2px; + width: 100%; + + &:hover { + background: darken($button-bg-color, 4%); + } + + &:active { + background: $button-bg-color; + box-shadow: inset 0 0 10px 2px rgba(0, 0, 0, .2); + } + } + } + // form { + // margin-left: 8%; + // } + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/about-work/about-work.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/about-work/about-work.component.spec.ts new file mode 100644 index 0000000..fcd9bd1 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/about-work/about-work.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AboutWorkComponent } from './about-work.component'; + +describe('AboutWorkComponent', () => { + let component: AboutWorkComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ AboutWorkComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(AboutWorkComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/about-work/about-work.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/about-work/about-work.component.ts new file mode 100644 index 0000000..953b3b6 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/about-work/about-work.component.ts @@ -0,0 +1,301 @@ +import {Component, OnInit} from '@angular/core'; +import {AbstractControl, FormBuilder, FormControl, FormGroup, ValidationErrors, Validators} from '@angular/forms'; +import {ActivatedRoute, Router} from '@angular/router'; +import { UserProfileService } from 'src/app/services/admin/user-profile.service'; +import { UserRegistrationService } from 'src/app/services/admin/user-registration.service'; +import { environment } from 'src/environments/environment'; +import { CustomerService } from './customer.service'; +import { ToastrService } from 'ngx-toastr'; + +@Component({ + selector: 'app-about-work', + templateUrl: './about-work.component.html', + styleUrls: ['./about-work.component.scss'] +}) + + + +export class AboutWorkComponent implements OnInit { + + // LoginUrl = environment.portalurl; + public entryForm: FormGroup; + public custentryForm: FormGroup; // user + public customerentryForm: FormGroup; + aboutdata; + id: number; + checknumberId: number; + data1: boolean; + name:string; + email: string; + submitted = false; + custsubmitted = false; + constructor( + private router: Router, + private route: ActivatedRoute, + private userRegistration: UserRegistrationService, + private _fb: FormBuilder, + private userprofile: UserProfileService, + private customerservice: CustomerService, + private toastr: ToastrService + ) { + } + companyid = 1; + ngOnInit(): void { + this.route.queryParams.subscribe(params => { + this.email = params['email']; + console.log(this.email) + }); + this.id = this.route.snapshot.params['id']; + this.checknumberId = this.route.snapshot.params['checknumberId']; + this.name = this.userRegistration.getStoredName(); + console.log(this.id, this.checknumberId); + this.userRegistration.removeStoredName(); + + // this.data1 = this.route.snapshot.data['data1']; + // if (this.id >= 0) { + // this.onCheck(); + + // } + // else { + // this.router.navigate(['../about-work']); + // } + + + this.onCheck(); + // this.email = this.userRegistration.getStoredEmail(); + + this.custentryForm = this._fb.group({ + first_name: [null, [Validators.required]], + last_name:[null, [Validators.required]], + mob_no:[null,[Validators.required,Validators.pattern('^[0-9]{10}$')]], + email:[this.email], + usrGrpId:[41], + new_password: [null, [Validators.required,Validators.minLength(6),Validators.maxLength(40)]], + confirm_password: [null, [Validators.required]], + account_id:[this.companyid], + + date_of_birth:[null, [Validators.required]], + gender:[null,Validators.required] + + }, { + validator: ConfirmedValidator('new_password', 'confirm_password') + }); + + + this.entryForm = this._fb.group({ + companyName:[null, [Validators.required]], + pancard:[null,[Validators.required]], + workspace:[null,[Validators.required]], + email: [this.email,[Validators.required,Validators.email]], + gstNumber:[null,[Validators.required]], + mobile: [this.custentryForm.value.mob_no, [Validators.pattern('^[0-9]{10}$')]], + + country:[null,[Validators.required]], + state:[null,[Validators.required]], + city:[null], + street_address:[null], + street_address2:[null], + + }, { + }); + + this.customerentryForm = this._fb.group({ + first_name: [null], + last_name:[null], + date_of_birth:[null], + gender:[null], + companyId:[null], + time_zone:[null,], + gst_state:[null], + email:[null], + entity_name:[this.companyid], + + }); + } + + companyForm:boolean = false; + oncustSubmit(){ + console.log(this.custentryForm.value); + // this.custentryForm.value.entity_name = this.companyid; + if (this.custentryForm.invalid) { + this.custsubmitted = true; + return; + }else{ + // this.companyForm = true; + // this.oncustContinue(); + this.onContinue(); + } + + } + selectedFile; + oncustContinue() { + + + + console.log(this.custentryForm.value); + + this.customerservice.saveCustomer(this.custentryForm.value, this.selectedFile).subscribe((data => { + console.log(data); + console.log(data.id, "User id"); + console.log("Roles", data.role); + console.log(data.checknumberId, "checknumber"); + this.aboutdata = data; + if (data.role == "USER") { + this.router.navigate(["../login/"]); + // window.location.href = `${this.LoginUrl}/#/login`; + } else { + this.router.navigate(["../pricing/" + data.id]); + } + + })) + } + + + +userId; + +onSubmit(){ + this.entryForm.value.email = this.email + if (this.entryForm.invalid) { + this.submitted = true; + return; + }else{ + this.onContinue(); + } + +} + onContinue() { + + + // this.entryForm.value.mobile = this.custentryForm.value.mob_no; + console.log(this.custentryForm.value); + + // this.userprofile.addUserinSignUP(this.entryForm.value).subscribe(data => { + // console.log(data); + // this.companyid = data.account_id; + // console.log(this.companyid, "company id"); + // this.aboutdata = data; + // this.custentryForm.value.account_id = data?.account_id + // // this.custentryForm.value.new_password = + // console.log(this.custentryForm.value); + this.userprofile.adduserData(this.custentryForm.value).subscribe(cdata => { + console.log(cdata); + this.userId = cdata.userId; + + if (cdata) { + this.toastr.success("Registrated Successfully"); + this.router.navigate(["../login/"]); + } else { + this.router.navigate(["../login/"]); + } + // this.customerentryForm.get('companyId').setValue(this.companyid); + // this.customerentryForm.get('gst_state').setValue(this.entryForm.value.state); + // this.customerentryForm.get('entity_name').setValue(this.entryForm.value.companyName); + // this.customerentryForm.get('first_name').setValue(this.custentryForm.value.first_name); + // this.customerentryForm.get('last_name').setValue(this.custentryForm.value.last_name); + // this.customerentryForm.get('date_of_birth').setValue(this.custentryForm.value.date_of_birth); + // this.customerentryForm.get('gender').setValue(this.custentryForm.value.gender); + // this.customerentryForm.get('email').setValue(this.email); + + + // this.customerservice.saveCustomer(this.customerentryForm.value, this.selectedFile).subscribe(data => { + // console.log(data); + // console.log(data.id, "User id"); + // this.aboutdata = data; + // if (data.status >= 200 && data.status <= 299) { + // console.log(data?.body) + // this.router.navigate(["../pricing/" + this.companyid +"/" +this.userId]); + // } + // }) + },(error)=>{ + console.log(error); + this.toastr.error(error?.error.message); + }) + // }) + } + + + + + + + + + onCheck() { + + this.userprofile.getUser(this.id, this.checknumberId).subscribe((data => { + // console.log(data.userId, "User id"); + console.log("data", data.email); + console.log(data); + this.data1 = data; + this.email = data.email; + this.name=data.fullName; + (this.entryForm.controls['email']).setValue(data.email); + (this.entryForm.controls['name']).setValue(data.fullName); + console.log(this.name) + + })) + + + } + + + onCountryChange(event) { + console.log(event.dialCode); + console.log(event.name); + console.log(event.iso2); + } + + back() { + this.router.navigate(["../../all"], {relativeTo: this.route}); + } + + + newpHide: boolean = true; + newIcon: string = "eye"; + newShapeChanger() { + this.newpHide = !this.newpHide; + if(this.newpHide){ + this.newIcon = 'eye' + } else { + this.newIcon = 'eye-hide' + } + } + + + cnewpHide: boolean = true; + cnewIcon: string = "eye"; + cnewShapeChanger() { + this.cnewpHide = !this.cnewpHide; + if(this.cnewpHide){ + this.cnewIcon = 'eye' + } else { + this.cnewIcon = 'eye-hide' + } + } + +} +// export function passwordMatchValidator(control: AbstractControl): ValidationErrors | null { +// const password = control.get('password'); +// const confirmPassword = control.get('confirmPassword'); + +// if (password.value !== confirmPassword.value) { +// return { passwordMismatch: true }; +// } + +// return null; +// } +export function ConfirmedValidator(controlName: string, matchingControlName: string){ + return (formGroup: FormGroup) => { + const control = formGroup.controls[controlName]; + const matchingControl = formGroup.controls[matchingControlName]; + if (matchingControl.errors && !matchingControl.errors.confirmedValidator) { + return; + } + if (control.value !== matchingControl.value) { + matchingControl.setErrors({ confirmedValidator: true }); + } else { + matchingControl.setErrors(null); + } + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/about-work/customer.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/about-work/customer.service.ts new file mode 100644 index 0000000..a0db265 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/about-work/customer.service.ts @@ -0,0 +1,152 @@ +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { ApiRequestService } from 'src/app/services/api/api-request.service'; + +@Injectable({ + providedIn: 'root' +}) +export class CustomerService { + + constructor(private apiRequest: ApiRequestService) { } + + saveCustomer(data: any, file?: any): Observable { + const url = `token/Customer_master/Customer_master`; + const formData = new FormData(); + formData.append('body', JSON.stringify(data)); + formData.append('file', file); + + return this.apiRequest.postFormData(url, formData); + } + + updateCustomer(data: any, file: any,id: number): Observable { + const url = `token/Customer_master/Customer_master/${id}`; + + const formData = new FormData(); + formData.append('body', JSON.stringify(data)); + formData.append('file', file); + + return this.apiRequest.postFormData(url, formData); + } + + getAllCustomers(): Observable { + const url = `token/Customer_master/Customer_master`; + return this.apiRequest.get(url); + } + + getCustomerById(id: number): Observable { + const url = `token/Customer_master/Customer_master/${id}`; + return this.apiRequest.get(url); + } + + deleteCustomerById(id: number): Observable { + const url = `token/Customer_master/Customer_master/${id}`; + return this.apiRequest.delete(url); + } + + + + + ////////site + + // saveCustomersite(data: any, file: any): Observable { + // const url = `Sites/Sites`; + // const formData = new FormData(); + // formData.append('body', JSON.stringify(data)); + // formData.append('file', file); + + // return this.apiRequest.postFormData(url, formData); + // } + saveCustomersite(data: any): Observable { + const url = `Sites/Sites`; + return this.apiRequest.postFormData(url, data); + } + + // updateCustomersite(data: any, file: any,id: number): Observable { + // const url = `Sites/Sites/${id}`; + + // const formData = new FormData(); + // formData.append('body', JSON.stringify(data)); + // formData.append('file', file); + + // return this.apiRequest.postFormData(url, formData); + // } + + updateCustomersite(data: any,id: number): Observable { + const url = `Sites/Sites/${id}`; + return this.apiRequest.put(url, data); + } + + getAllCustomerssite(): Observable { + const url = `Sites/Sites`; + return this.apiRequest.get(url); + } + + getCustomersiteById(id: number): Observable { + const url = `Sites/Sites/${id}`; + return this.apiRequest.get(url); + } + + deleteCustomersiteById(id: number): Observable { + const url = `Sites/Sites/${id}`; + return this.apiRequest.delete(url); + } + + + getsiteBycustId(id: number): Observable { + const url = `Sites/getSitesByCustomer/${id}`; + return this.apiRequest.get(url); + } + + + + ////// custom package + + public savecustompkgeData(data: any): Observable { + return this.apiRequest.post(`Billing/CustomPackage/CustomPackage`, data); + } + + public getcustompkgDetails(): Observable { + return this.apiRequest.get(`Billing/CustomPackage/CustomPackage`); + } + + public getcustompkgDetailsById(id: number): Observable { + return this.apiRequest.get(`Billing/CustomPackage/CustomPackage/${id}`); + } + + public deletecustompkgById(id: number): Observable { + return this.apiRequest.delete(`Billing/CustomPackage/CustomPackage/${id}`); + } + + public updatecustompkgData(data: any, id: number): Observable { + return this.apiRequest.put(`Billing/CustomPackage/CustomPackage/${id}`, data); + } + + + ///biiling total + public billingTotal(invoiceId: number, creditNoteId:number,paymentId): Observable { + return this.apiRequest.get(`Billing/Payments/alltotall/${invoiceId}/${creditNoteId}/${paymentId}`); + } + + public getdatabycustID(customerId: any): Observable { + return this.apiRequest.get(`token/Customer_master/getReceiptApplication/${customerId}`); + } + + + ////// list of items + //generate + getServicesBycustId(customerId: any): Observable { + return this.apiRequest.get(`token/Customer_master/getAllservices/${customerId}`); + } + + //generate 2 + getServices2BycustId(customerId: any): Observable { + return this.apiRequest.get(`token/Customer_master/getAllservicesWithDisc/${customerId}`); + } + + //discount and charges + //generate + getdiscountchargesBycustId(customerId: any): Observable { + return this.apiRequest.get(`token/Customer_master/getAllservicesWithDiscOrderlevel/${customerId}`); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/addguest/addguest.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/addguest/addguest.component.html new file mode 100644 index 0000000..b5e25a4 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/addguest/addguest.component.html @@ -0,0 +1,137 @@ + + +
    + + +
    + +
    + cloudnSure + +
    +
    + + + + + + + + +
    +
    +

    Welcome to cloudnsure!

    +
    You're signing up as {{email}} +
    +
    +
    +
    + +
    +
    First Name is required
    +
    +
    +
    + +
    +
    Last Name is required
    +
    +
    +
    + +
    +
    Mobile Number is required
    +
    Mobile Number is 10 numbers
    +
    +
    +
    + + +
    +
    password is required
    +
    Password must be Minimum 6 Characters
    +
    +
    +
    + + +
    +
    Password is required.
    +
    Password and Confirm Password must be match.
    +
    + + +
    +
    +

    User Info Is Added Please Login

    +

    Wrong account? Log in instead.

    +
    +
    \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/addguest/addguest.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/addguest/addguest.component.scss new file mode 100644 index 0000000..4408425 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/addguest/addguest.component.scss @@ -0,0 +1,86 @@ +//@import '../../../../../styles1.scss'; + + +//** variables +$background: #f5f6fa; +$text: #9c9c9c; +$input-bg-color: #fff; +$input-text-color: #a3a3a3; +$button-bg-color: #7f8ff4; +$button-text-color: #fff; +$google-button-bg-color: #7f8ff4; +$linkedin-button-bg-color: #4b76eb; + +//** root +:root { + background: $background; + color: $text; + font: 1rem "PT Sans", sans-serif; +} + +//** helper +.display_msg { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} + +.form { + /* margin-left: auto; + margin-right: auto; */ + &__field { + // width: 360px; + // //background: #fff; + // color: $input-text-color; + // font: inherit; + // //box-shadow: 0 6px 10px 0 rgba(0, 0, 0 , .1); + // border: 1 solid rgb(235, 230, 230); + // background-color:rgb(255, 255, 255); + // display: inline-block; + // border-radius: 4px; + // box-sizing: border-box; + // //outline: 0; + // padding: 6px 9px; + width: 360px; + padding: 7px 9px; + // margin: 3px 0; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; + } +} + +.btn { + display: inline-block; + background: transparent; + color: inherit; + font: inherit; + border: 0; + outline: 0; + padding: 0; + transition: all 200ms ease-in; + cursor: pointer; + + &--primary { + background: $button-bg-color; + color: $button-text-color; + box-shadow: 0 0 10px 2px rgba(0, 0, 0, .1); + border-radius: 2px; + width: 100%; + + &:hover { + background: darken($button-bg-color, 4%); + } + + &:active { + background: $button-bg-color; + box-shadow: inset 0 0 10px 2px rgba(0, 0, 0, .2); + } + } +} +form { + margin-left: 8%; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/addguest/addguest.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/addguest/addguest.component.spec.ts new file mode 100644 index 0000000..562261f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/addguest/addguest.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AddguestComponent } from './addguest.component'; + +describe('AddguestComponent', () => { + let component: AddguestComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ AddguestComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(AddguestComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/addguest/addguest.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/addguest/addguest.component.ts new file mode 100644 index 0000000..4a01c87 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/addguest/addguest.component.ts @@ -0,0 +1,68 @@ +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { ActivatedRoute } from '@angular/router'; +import { MyworkspaceService } from 'src/app/services/admin/myworkspace.service'; +@Component({ + selector: 'app-addguest', + templateUrl: './addguest.component.html', + styleUrls: ['./addguest.component.scss'] +}) +export class AddguestComponent implements OnInit { + + public form: FormGroup; + submitted = false; + passchange; + newpHide: boolean = true; + newIcon: string = "eye"; + newShapeChanger() { + this.newpHide = !this.newpHide; + if(this.newpHide){ + this.newIcon = 'eye' + } else { + this.newIcon = 'eye-hide' + } + } + cpHide: boolean = true; + conIcon: string = "eye"; + comfShapeChanger() { + this.cpHide = !this.cpHide; + if(this.cpHide){ + this.conIcon = 'eye' + } else { + this.conIcon = 'eye-hide' + } + } + get f() { return this.form.controls; } + email: string; + token; + constructor(private _fb: FormBuilder, + private route: ActivatedRoute, + private mywork:MyworkspaceService) { } + + ngOnInit(): void { + this.email = this.mywork.getStoredEmail(); + console.log(this.email) + this.token = this.route.snapshot.params["id"]; + console.log("token is ", this.token); + //form validation + this.form = this._fb.group( + { + first_name: ['', Validators.required], + last_name: ['', Validators.required], + mob_no: ['', [Validators.required,Validators.minLength(10)]], + password: ['',[ Validators.required, Validators.minLength(6), Validators.maxLength(40)]], + confirm_password: ['', Validators.required], + + }, ); + } + onsubmit(){ +this.mywork.addguestdetails(this.form.value,this.token).subscribe((data)=>{ + console.log(data); + this.passchange=data; + console.log('success ', data); + },(err) => { + console.log('failure ', err); +}) + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/emailverification/emailverification.component.css b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/emailverification/emailverification.component.css new file mode 100644 index 0000000..0100f0b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/emailverification/emailverification.component.css @@ -0,0 +1,95 @@ +.header-6 { + background-color: #0072a3; +} + +:root { + background: #f5f6fa; + color: #9c9c9c; + font: 1rem "PT Sans", sans-serif; +} + +html, +body, +.container { + height: 100%; +} + +a { + color: inherit; +} +a:hover { + color: #7f8ff4; +} + +.email_check { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} + +.uppercase { + text-transform: uppercase; +} + +.new { + display: inline-block; + background: transparent; + color: inherit; + font: inherit; + border: 0; + outline: 0; + padding: 0; + transition: all 200ms ease-in; + cursor: pointer; +} +.new--newprimary { + background: #7f8ff4; + color: #fff; + box-shadow: 0 0 10px 2px rgba(0, 0, 0, 0.1); + border-radius: 2px; + width: 100%; +} +.new--newprimary:hover { + background: #6c7ff2; +} +.new--newprimary:active { + background: #7f8ff4; + box-shadow: inset 0 0 10px 2px rgba(0, 0, 0, 0.2); +} +.new--primary1 { + background: #4CAF50; + color: #fff; + box-shadow: 0 0 10px 2px rgba(0, 0, 0, 0.1); + border-radius: 2px; + width: 100%; +} +.new--primary1:hover { + background: #6c7ff2; +} +.new--primary1:active { + background: #7f8ff4; + box-shadow: inset 0 0 10px 2px rgba(0, 0, 0, 0.2); +} + +/* &--inside { + margin-left: -96px; +} */ +.form { + /* margin-left: auto; + margin-right: auto; */ +} +.form__field { + width: 360px; + background: #fff; + color: #626161; + font: inherit; + box-shadow: 0 6px 10px 0 rgba(0, 0, 0, 0.1); + border: 0; + outline: 0; + padding: 10px 18px; +} + +.form__field { + border: 2px solid #7f8ff4; +}/*# sourceMappingURL=emailverification.component.css.map */ \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/emailverification/emailverification.component.css.map b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/emailverification/emailverification.component.css.map new file mode 100644 index 0000000..c07827b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/emailverification/emailverification.component.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["emailverification.component.scss","emailverification.component.css"],"names":[],"mappings":"AAAA;EACE,yBAAA;ACCF;;ADUA;EACC,mBATY;EAUZ,cATM;EAUN,gCAAA;ACPD;;ADUA;;;EAGC,YAAA;ACPD;;ADUA;EACC,cAAA;ACPD;ADSC;EACC,cApBgB;ACalB;;ADYA;EACC,aAAA;EACA,sBAAA;EACA,mBAAA;EACA,uBAAA;ACTD;;ADYA;EACC,yBAAA;ACTD;;ADaA;EACC,qBAAA;EACA,uBAAA;EACA,cAAA;EACA,aAAA;EACA,SAAA;EACA,UAAA;EACA,UAAA;EACA,6BAAA;EACA,eAAA;ACVD;ADYC;EACC,mBAjDgB;EAkDhB,WAjDkB;EAkDlB,2CAAA;EACA,kBAAA;EAGA,WAAA;ACZF;ADeE;EACC,mBAAA;ACbH;ADgBE;EACC,mBA/De;EAgEf,iDAAA;ACdH;ADiBC;EACC,mBAAA;EACA,WApEkB;EAqElB,2CAAA;EACA,kBAAA;EAGA,WAAA;ACjBF;ADoBE;EACC,mBAAA;AClBH;ADqBE;EACC,mBAlFe;EAmFf,iDAAA;ACnBH;;ADwBC;;GAAA;AAMD;EACC;uBAAA;ACvBD;ADyBC;EACC,YAAA;EAEA,gBAAA;EACA,cAtGiB;EAuGjB,aAAA;EACA,2CAAA;EACA,SAAA;EACA,UAAA;EACA,kBAAA;ACxBF;;AD2BA;EACE,yBAAA;ACxBF","file":"emailverification.component.css"} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/emailverification/emailverification.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/emailverification/emailverification.component.html new file mode 100644 index 0000000..b490534 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/emailverification/emailverification.component.html @@ -0,0 +1,123 @@ + + + +
    +
    + + +
    + +
    + {{ loginEnvironment.loginHeading2 | sanitize}} + +
    +
    +
    + +
    \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/emailverification/emailverification.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/emailverification/emailverification.component.scss new file mode 100644 index 0000000..acf07f3 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/emailverification/emailverification.component.scss @@ -0,0 +1,153 @@ +.header-6 { + background-color: #0072a3; +} + +.recaptcha-container { + display: flex; + flex-direction: column; + align-items: center; + margin-top: 10px; +} + +.recaptcha-box { + display: flex; + align-items: center; + gap: 8px; + margin-bottom: 5px; +} + +.recaptcha-input { + width: 100%; + max-width: 300px; + padding: 8px; + text-align: center; + border: 1px solid #ccc; + border-radius: 4px; +} + +.error_mess { + color: red; + font-size: 12px; + margin-top: 5px; +} + +//** variables +$background: #f5f6fa; +$text: #9c9c9c; +$input-bg-color: #fff; +$input-text-color: #626161; +$button-bg-color: #7f8ff4; +$button-text-color: #fff; + +//** root +:root { + background: $background; + color: $text; + font: 1rem "PT Sans", sans-serif; +} + +html, +body, +.container { + height: 100%; +} + +a { + color: inherit; + + &:hover { + color: $button-bg-color; + } +} + +//** helper +.email_check { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} + +.uppercase { + text-transform: uppercase; +} + +//** button +.new { + display: inline-block; + background: transparent; + color: inherit; + font: inherit; + border: 0; + outline: 0; + padding: 0; + transition: all 200ms ease-in; + cursor: pointer; + + &--newprimary { + background: $button-bg-color; + color: $button-text-color; + box-shadow: 0 0 10px 2px rgba(0, 0, 0, .1); + border-radius: 2px; + //padding: 12px 36px; + //padding: 7px 158px; + width: 100%; + + + &:hover { + background: darken($button-bg-color, 4%); + } + + &:active { + background: $button-bg-color; + box-shadow: inset 0 0 10px 2px rgba(0, 0, 0, .2); + } + } + + &--primary1 { + background: #4CAF50; + color: $button-text-color; + box-shadow: 0 0 10px 2px rgba(0, 0, 0, .1); + border-radius: 2px; + //padding: 12px 36px; + //padding: 7px 158px; + width: 100%; + + + &:hover { + background: darken($button-bg-color, 4%); + } + + &:active { + background: $button-bg-color; + box-shadow: inset 0 0 10px 2px rgba(0, 0, 0, .2); + } + } +} + +/* &--inside { + margin-left: -96px; + } */ + + +//** form +.form { + + /* margin-left: auto; + margin-right: auto; */ + &__field { + width: 360px; + //width: 450px; + background: #fff; + color: $input-text-color; + font: inherit; + box-shadow: 0 6px 10px 0 rgba(0, 0, 0, .1); + border: 0; + outline: 0; + padding: 10px 18px; + } +} + +.form__field { + border: 2px solid #7f8ff4; +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/emailverification/emailverification.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/emailverification/emailverification.component.spec.ts new file mode 100644 index 0000000..220c3b5 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/emailverification/emailverification.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EmailverificationComponent } from './emailverification.component'; + +describe('EmailverificationComponent', () => { + let component: EmailverificationComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ EmailverificationComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(EmailverificationComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/emailverification/emailverification.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/emailverification/emailverification.component.ts new file mode 100644 index 0000000..50a3b58 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/emailverification/emailverification.component.ts @@ -0,0 +1,236 @@ +import { Component, OnInit, ViewEncapsulation } from '@angular/core'; +import { HttpClient, HttpErrorResponse } from "@angular/common/http"; + +import { AbstractControl, FormBuilder, FormGroup, ValidationErrors, Validators } from "@angular/forms"; +import { ActivatedRoute, Router } from "@angular/router"; + + +import { UserRegistrationService } from 'src/app/services/admin/user-registration.service'; +import { environment } from 'src/environments/environment'; +import { ToastrService } from 'ngx-toastr'; +import { LoginEnvironment } from '../login-page/login_environment'; + +export interface EmailRequest { + email: string; +} +@Component({ + selector: 'app-emailverification', + templateUrl: './emailverification.component.html', + styleUrls: ['./emailverification.component.scss'] +}) +export class EmailverificationComponent implements OnInit { + + loginEnvironment = LoginEnvironment; + + + + // baseUrl= environment.portalurl; + submitted = false; + conditions = { + condition1: true, + condition2: true, + condition3: true, + } + + siteKey = environment.captchaSiteKey; + // siteKey: string = "6Le7ayYpAAAAAL76n79XlVJCg1jbXZGbnzGNJ1rt"; + constructor(private _fb: FormBuilder, + private router: Router, + private route: ActivatedRoute, + private userRegistrationService: UserRegistrationService, + private http: HttpClient, + private toastr: ToastrService) { + } + + ngOnInit(): void { + this.generatefieldname(); + this.userRegistrationService.removeSignedUpUserInfo(); + this.userRegistrationService.removeStoredEmail(); + this.emailCheckForm = this._fb.group({ + email: [null, [Validators.email, Validators.required]], + // recaptcha: ['', Validators.required], + recaptcha: [null, [Validators.required, this.checkfieldname.bind(this)]], + first_name: [null], + last_name: [null], + mob_no: [null], + account_id: [null], + usrGrpId: [null], + new_password: [null], + confirm_password: [null], + accesstype: [null], + }); + } + + model: any = {}; + EmailRequest: EmailRequest; + emailErrMsg: string = "" + + fieldnameCode = ''; + generatefieldname(): void { + const possibleCharacters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; + const codeLength = 6; // Change to desired length + + let fieldname = ''; + for (let i = 0; i < codeLength; i++) { + const randomIndex = Math.floor(Math.random() * possibleCharacters.length); + fieldname += possibleCharacters.charAt(randomIndex); + } + this.fieldnameCode = fieldname; + } + + checkfieldname(control: AbstractControl): ValidationErrors | null { + if (control.value !== this.fieldnameCode) { + return { fieldnameMismatch: true }; + } + return null; + } + + fieldnameMismatch = false; + + // checkfieldnameEdit(): void { + // if (this.rowSelected.recaptcha !== this.fieldnameCode) { + // this.fieldnameMismatch = true; + // } else { this.fieldnameMismatch = false; } + // } + emailExistCheck() { + console.log('input email: ', this.model.email); + this.userRegistrationService.emailCheck(this.model.email) + .subscribe((res) => { + console.log('email check Res : ', res); + }, (err) => { + console.log(err); + }); + } + + emailCheckForm: FormGroup; + + get f() { + return this.emailCheckForm.controls; + } + + // onSubmit() { + // console.log('this.emailCheckForm.value : ', this.emailCheckForm.value); + // this.userRegistrationService.emailCheck(this.emailCheckForm.value) + // .subscribe((res) => { + // console.log('success: ', res); + // let email: string = res.message; + // console.log(email); + // this.userRegistrationService.storeEmail(email); + // this.router.navigate(["/selfregistration"]); + // }, (err: HttpErrorResponse) => { + // console.log(err); + // console.log(err.error.message); + // if (err.status === 409) { + // this.emailErrMsg = 'Email Already Exists'; + // } else { + // this.emailErrMsg = 'Server error'; + // } + // }); + // } + verifyButton = false; + handleSuccess(e) { + console.log("ReCaptcha", e); + console.log(this.emailCheckForm.controls); + const data: any = this.emailCheckForm.controls; + if (data.recaptcha.status == "VALID") { + this.verifyButton = true; + } + } + + result: any; + otpfromuser: string = ''; + otpshow = false; + onSubmit() { + if (this.emailCheckForm.invalid) { + this.submitted = true; + + console.log(`invalid form..`); + + Object.keys(this.emailCheckForm.controls).forEach(field => { + const control = this.emailCheckForm.get(field); + if (control && control.invalid) { + console.log(`Error in field: ${field}`, control.errors); + } + } + ); + return; + } + + let email = this.emailCheckForm.value.email; + console.log(this.emailCheckForm.value); + delete this.emailCheckForm.value.recaptcha + this.userRegistrationService.sendEmail(this.emailCheckForm.value).subscribe((res) => { + // this.userService.storeEmail(email); + // this.router.navigate(["/verify-account"]) + console.log(res); + this.emailErrMsg = ''; + + if (res) { + this.otpshow = true; + } + }, (err: HttpErrorResponse) => { + console.log(err) + if (err.status >= 400 && err.status <= 499) { + this.emailErrMsg = 'Email Already Exists or Enter Correct Email'; + } else { + this.emailErrMsg = 'Server error'; + } + }) + } + + + sendOTP(): void { + this.userRegistrationService.sendOTP(this.emailCheckForm.value.email).subscribe( + (response) => { + const email = this.emailCheckForm.value.email + console.log(`"${email}", please check and enter OTP from your email`, response); + // this.toastr.success(`"${email}", please check and enter OTP from your email`) + // Handle the response as needed + this.otpfromuser = '' + this.toastr.success(response?.msg.toString()); + }, + (error) => { + console.error('Failed to send OTP:', error); + // Handle errors + if (error.status >= 400 && error.status <= 499) { + this.toastr.error(error?.message.toString()); + } else if (error.status >= 500 && error.status <= 599) { + this.toastr.error("server error"); + } + } + ); + } + emailotpMsg: string = ""; + verifyOTP(): void { + this.userRegistrationService.verifyOTP(this.emailCheckForm.value.email, this.otpfromuser).subscribe( + (response) => { + console.log('OTP verification result:', response); + // Handle the verification result as needed + this.toastr.success(response?.msg.toString()); + setTimeout(() => { + this.router.navigate(["../about-work"], { relativeTo: this.route, queryParams: { email: this.emailCheckForm.value.email } }); + }, 500); + }, + (error) => { + console.error('OTP verification failed:', error); + // Handle errors + if (error.status >= 400 && error.status <= 499) { + // this.toastr.error(error?.error?.msg.toString()); + this.emailotpMsg = error?.error?.msg; + } else if (error.status >= 500 && error.status <= 599) { + this.emailotpMsg = 'Server error'; + } + } + ); + } + + + onSignUp() { + this.router.navigate(["signup"]); + } + + goToLogin() { + // window.location.href = `${this.baseUrl}/#/login`; + this.router.navigate(["login"]) + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotpassword/forgotpassword.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotpassword/forgotpassword.component.html new file mode 100644 index 0000000..c7dbdff --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotpassword/forgotpassword.component.html @@ -0,0 +1,38 @@ + + +
    + + +
    + +
    + cloudnSure + +
    +
    + +
    + + +
    +
    + + + + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotpassword/forgotpassword.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotpassword/forgotpassword.component.scss new file mode 100644 index 0000000..546c22b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotpassword/forgotpassword.component.scss @@ -0,0 +1,75 @@ +.email_check { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} +.form { + /* margin-left: auto; + margin-right: auto; */ + &__field { + width: 370px; + //width: 450px; + background: #fff; + color: #a3a3a3; + font: inherit; + box-shadow: 0 6px 10px 0 rgba(0, 0, 0 , .1); + border: 0; + outline: 0; + padding: 10px 18px; + } +} +.form__field{ + border: 2px solid #7f8ff4 ; +} + +.btn { + display: inline-block; + background: transparent; + color: inherit; + font: inherit; + border: 0; + outline: 0; + padding: 0; + transition: all 200ms ease-in; + cursor: pointer; + + &--primary { + background: #7f8ff4; + color: #fff; + box-shadow: 0 0 10px 2px rgba(0, 0, 0, .1); + border-radius: 2px; + //padding: 12px 36px; + //padding: 7px 158px; + width: 100%; + + + &:hover { + background: darken(#7f8ff4, 4%); + } + + &:active { + //background: $button-bg-color; + box-shadow: inset 0 0 10px 2px rgba(0, 0, 0, .2); + } + } + &--primary1{ + background: #4CAF50; + color: #fff; + box-shadow: 0 0 10px 2px rgba(0, 0, 0, .1); + border-radius: 2px; + //padding: 12px 36px; + //padding: 7px 158px; + width: 100%; + + + &:hover { + background: darken(#7f8ff4, 4%); + } + + &:active { + background: #7f8ff4; + box-shadow: inset 0 0 10px 2px rgba(0, 0, 0, .2); + } + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotpassword/forgotpassword.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotpassword/forgotpassword.component.spec.ts new file mode 100644 index 0000000..5b02d71 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotpassword/forgotpassword.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ForgotpasswordComponent } from './forgotpassword.component'; + +describe('ForgotpasswordComponent', () => { + let component: ForgotpasswordComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ForgotpasswordComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ForgotpasswordComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotpassword/forgotpassword.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotpassword/forgotpassword.component.ts new file mode 100644 index 0000000..5888101 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotpassword/forgotpassword.component.ts @@ -0,0 +1,67 @@ +import { HttpErrorResponse } from '@angular/common/http'; +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import { ToastrService } from 'ngx-toastr'; +import {ForgotpassService} from '../../../services/api/forgotpass.service'; +@Component({ + selector: 'app-forgotpassword', + templateUrl: './forgotpassword.component.html', + styleUrls: ['./forgotpassword.component.scss'] +}) +export class ForgotpasswordComponent implements OnInit { + public emailCheckForm: FormGroup; + emailErrMsg: string = "" +emailsend; + constructor(private _fb: FormBuilder, + private router: Router, + private route:ActivatedRoute, + private toastr:ToastrService, + private forgotpassservice:ForgotpassService) { } + + ngOnInit(): void { + this.emailCheckForm = this._fb.group({ + email: ['', Validators.email] + }); + } + onsubmit(){ + let email = this.emailCheckForm.value.email; + console.log(email); + this.forgotpassservice.sendemail(email).subscribe((data)=>{ + this.forgotpassservice.storeEmail(email); + console.log(data); + + // if(data=200){ + // this.toastr.success('Email Send successfully'); + // } + }, + (err: HttpErrorResponse) => { + console.log(err) + if (err.status === 200) { + this.emailsend=err.status; + //this.emailErrMsg = 'Email send please check mail'; + } + + } + ); + this.emailCheckForm.reset(); + } + onSubmit() { + let email = this.emailCheckForm.value.email; + console.log(email); + this.forgotpassservice.sendemail(email).subscribe((res) => { + this.forgotpassservice.storeEmail(email); + //this.router.navigate(["/varify-account"]) + }, (err: HttpErrorResponse) => { + console.log(err) + if (err.status === 409) { + this.emailErrMsg = 'Email Already Exists'; + } else { + this.emailErrMsg = 'Server error'; + } + }) + } + gotoreset(){ + this.router.navigate(["../forgotresetpassword"], { relativeTo: this.route }); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotresetpassword/forgotresetpassword.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotresetpassword/forgotresetpassword.component.html new file mode 100644 index 0000000..7f51910 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotresetpassword/forgotresetpassword.component.html @@ -0,0 +1,50 @@ + + +
    + + +
    + +
    + cloudnSure + +
    +
    + +
    +
    +

    Please Reset Your Password

    +

    you're signed in as {{ email }}

    +
    + +
    + +
    + + +
    +
    password is required
    +
    Password must be Minimum 3 Characters
    +
    +
    +
    + + +
    +
    Password is required.
    +
    Password and Confirm Password must be match.
    +
    +
    + +
    +
    +

    Email Is Reset Please Login

    +

    Wrong account? Log in instead.

    +
    +
    diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotresetpassword/forgotresetpassword.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotresetpassword/forgotresetpassword.component.scss new file mode 100644 index 0000000..3ee7d64 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotresetpassword/forgotresetpassword.component.scss @@ -0,0 +1,83 @@ +//@import '../../../../../styles1.scss'; + + +//** variables +$background: #f5f6fa; +$text: #9c9c9c; +$input-bg-color: #fff; +$input-text-color: #a3a3a3; +$button-bg-color: #7f8ff4; +$button-text-color: #fff; +$google-button-bg-color: #7f8ff4; +$linkedin-button-bg-color: #4b76eb; + +//** root +:root { + background: $background; + color: $text; + font: 1rem "PT Sans", sans-serif; +} + +//** helper +.display_msg { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} + +.form { + /* margin-left: auto; + margin-right: auto; */ + &__field { + // width: 360px; + // //background: #fff; + // color: $input-text-color; + // font: inherit; + // //box-shadow: 0 6px 10px 0 rgba(0, 0, 0 , .1); + // border: 1 solid rgb(235, 230, 230); + // background-color:rgb(255, 255, 255); + // display: inline-block; + // border-radius: 4px; + // box-sizing: border-box; + // //outline: 0; + // padding: 6px 9px; + width: 360px; + padding: 9px 11px; + // margin: 3px 0; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; + } +} + +.btn { + display: inline-block; + background: transparent; + color: inherit; + font: inherit; + border: 0; + outline: 0; + padding: 0; + transition: all 200ms ease-in; + cursor: pointer; + + &--primary { + background: $button-bg-color; + color: $button-text-color; + box-shadow: 0 0 10px 2px rgba(0, 0, 0, .1); + border-radius: 2px; + width: 100%; + + &:hover { + background: darken($button-bg-color, 4%); + } + + &:active { + background: $button-bg-color; + box-shadow: inset 0 0 10px 2px rgba(0, 0, 0, .2); + } + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotresetpassword/forgotresetpassword.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotresetpassword/forgotresetpassword.component.spec.ts new file mode 100644 index 0000000..d6988e6 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotresetpassword/forgotresetpassword.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ForgotresetpasswordComponent } from './forgotresetpassword.component'; + +describe('ForgotresetpasswordComponent', () => { + let component: ForgotresetpasswordComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ForgotresetpasswordComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ForgotresetpasswordComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotresetpassword/forgotresetpassword.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotresetpassword/forgotresetpassword.component.ts new file mode 100644 index 0000000..c61c0a8 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotresetpassword/forgotresetpassword.component.ts @@ -0,0 +1,103 @@ +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import {ForgotpassService} from '../../../services/api/forgotpass.service'; +@Component({ + selector: 'app-forgotresetpassword', + templateUrl: './forgotresetpassword.component.html', + styleUrls: ['./forgotresetpassword.component.scss'] +}) +export class ForgotresetpasswordComponent implements OnInit { + emailErrMsg: string = "" + oldpHide: boolean = true; + oldIcon: string = "eye"; + passchange; + + oldShapeChanger() { + this.oldpHide = !this.oldpHide; + if(this.oldpHide){ + this.oldIcon = 'eye' + } else { + this.oldIcon = 'eye-hide' + } + } + newpHide: boolean = true; + newIcon: string = "eye"; + newShapeChanger() { + this.newpHide = !this.newpHide; + if(this.newpHide){ + this.newIcon = 'eye' + } else { + this.newIcon = 'eye-hide' + } + } + cpHide: boolean = true; + conIcon: string = "eye"; + comfShapeChanger() { + this.cpHide = !this.cpHide; + if(this.cpHide){ + this.conIcon = 'eye' + } else { + this.conIcon = 'eye-hide' + } + } + email: string; + resetPasswordForm: FormGroup; + token; + constructor( private _fb: FormBuilder, + private router: Router, + private route: ActivatedRoute, + private forgotpassservice:ForgotpassService) { } + + ngOnInit(): void { + this.email = this.forgotpassservice.getStoredEmail(); + console.log(this.email) + //token + this.token = this.route.snapshot.params["id"]; + console.log("token is ", this.token); + this.resetPasswordForm = this._fb.group({ + email:this.email, + newPassword: ['', [Validators.required, Validators.minLength(3)]], + confirmPassword: ['', [Validators.required]] + }, { + validator: ConfirmedValidator('newPassword', 'confirmPassword') + }); + } + + get f() { return this.resetPasswordForm.controls; } + + submitted = false; + onSubmit() { + console.log('this.resetPasswordForm.value : ', this.resetPasswordForm.value); + this.submitted = true; + if(this.resetPasswordForm.invalid){ + return; + } + this.resetPassword(); + } + + resetPassword() { + this.forgotpassservice.resetpass(this.resetPasswordForm.value,this.token) + .subscribe((res) => { + this.passchange=res; + console.log('success ', res); + },(err) => { + console.log('failure ', err); + }); + this.resetPasswordForm.reset(); + } +} +export function ConfirmedValidator(controlName: string, matchingControlName: string){ + return (formGroup: FormGroup) => { + const control = formGroup.controls[controlName]; + const matchingControl = formGroup.controls[matchingControlName]; + if (matchingControl.errors && !matchingControl.errors.confirmedValidator) { + return; + } + if (control.value !== matchingControl.value) { + matchingControl.setErrors({ confirmedValidator: true }); + } else { + matchingControl.setErrors(null); + } + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotresetpassword1/forgotresetpassword1.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotresetpassword1/forgotresetpassword1.component.html new file mode 100644 index 0000000..86869d4 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotresetpassword1/forgotresetpassword1.component.html @@ -0,0 +1,142 @@ + + +
    + + +
    + +
    + cloudnSure + +
    +
    + + + + + + + + +
    +
    +

    Welcome to cloudnsure!

    +
    You're signing up as {{email}}
    +
    +
    +
    + +
    +
    First Name is required
    +
    +
    +
    + +
    +
    Last Name is required
    +
    +
    +
    + +
    +
    Mobile Number is required
    +
    Mobile Number is 10 numbers
    +
    +
    +
    + + +
    +
    password is required
    +
    Password must be Minimum 6 Characters
    +
    +
    +
    + + +
    +
    Password is required.
    +
    Password and Confirm Password must be match.
    +
    + + +
    +
    +

    User Info Is Added Please Login

    +

    Wrong account? Log in instead.

    +
    +
    + + + + + + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotresetpassword1/forgotresetpassword1.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotresetpassword1/forgotresetpassword1.component.scss new file mode 100644 index 0000000..4408425 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotresetpassword1/forgotresetpassword1.component.scss @@ -0,0 +1,86 @@ +//@import '../../../../../styles1.scss'; + + +//** variables +$background: #f5f6fa; +$text: #9c9c9c; +$input-bg-color: #fff; +$input-text-color: #a3a3a3; +$button-bg-color: #7f8ff4; +$button-text-color: #fff; +$google-button-bg-color: #7f8ff4; +$linkedin-button-bg-color: #4b76eb; + +//** root +:root { + background: $background; + color: $text; + font: 1rem "PT Sans", sans-serif; +} + +//** helper +.display_msg { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} + +.form { + /* margin-left: auto; + margin-right: auto; */ + &__field { + // width: 360px; + // //background: #fff; + // color: $input-text-color; + // font: inherit; + // //box-shadow: 0 6px 10px 0 rgba(0, 0, 0 , .1); + // border: 1 solid rgb(235, 230, 230); + // background-color:rgb(255, 255, 255); + // display: inline-block; + // border-radius: 4px; + // box-sizing: border-box; + // //outline: 0; + // padding: 6px 9px; + width: 360px; + padding: 7px 9px; + // margin: 3px 0; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; + } +} + +.btn { + display: inline-block; + background: transparent; + color: inherit; + font: inherit; + border: 0; + outline: 0; + padding: 0; + transition: all 200ms ease-in; + cursor: pointer; + + &--primary { + background: $button-bg-color; + color: $button-text-color; + box-shadow: 0 0 10px 2px rgba(0, 0, 0, .1); + border-radius: 2px; + width: 100%; + + &:hover { + background: darken($button-bg-color, 4%); + } + + &:active { + background: $button-bg-color; + box-shadow: inset 0 0 10px 2px rgba(0, 0, 0, .2); + } + } +} +form { + margin-left: 8%; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotresetpassword1/forgotresetpassword1.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotresetpassword1/forgotresetpassword1.component.spec.ts new file mode 100644 index 0000000..04d1708 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotresetpassword1/forgotresetpassword1.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { Forgotresetpassword1Component } from './forgotresetpassword1.component'; + +describe('Forgotresetpassword1Component', () => { + let component: Forgotresetpassword1Component; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ Forgotresetpassword1Component ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(Forgotresetpassword1Component); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotresetpassword1/forgotresetpassword1.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotresetpassword1/forgotresetpassword1.component.ts new file mode 100644 index 0000000..66b459e --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/forgotresetpassword1/forgotresetpassword1.component.ts @@ -0,0 +1,71 @@ +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { ActivatedRoute } from '@angular/router'; +import { ToastrService } from 'ngx-toastr'; +import { MyworkspaceService } from 'src/app/services/admin/myworkspace.service'; + +@Component({ + selector: 'app-forgotresetpassword1', + templateUrl: './forgotresetpassword1.component.html', + styleUrls: ['./forgotresetpassword1.component.scss'] +}) +export class Forgotresetpassword1Component implements OnInit { + public form: FormGroup; + submitted = false; + passchange; + newpHide: boolean = true; + newIcon: string = "eye"; + newShapeChanger() { + this.newpHide = !this.newpHide; + if (this.newpHide) { + this.newIcon = 'eye' + } else { + this.newIcon = 'eye-hide' + } + } + cpHide: boolean = true; + conIcon: string = "eye"; + comfShapeChanger() { + this.cpHide = !this.cpHide; + if (this.cpHide) { + this.conIcon = 'eye' + } else { + this.conIcon = 'eye-hide' + } + } + get f() { return this.form.controls; } + email: string; + token; + constructor(private _fb: FormBuilder, + private route: ActivatedRoute, + private mywork: MyworkspaceService, + private toastr: ToastrService,) { } + + ngOnInit(): void { + this.email = this.mywork.getStoredEmail(); + console.log(this.email) + this.token = this.route.snapshot.params["id"]; + console.log("token is ", this.token); + //form validation + this.form = this._fb.group( + { + first_name: ['', Validators.required], + last_name: ['', Validators.required], + mob_no: ['', [Validators.required, Validators.minLength(10)]], + password: ['', [Validators.required, Validators.minLength(6), Validators.maxLength(40)]], + confirm_password: ['', Validators.required], + + },); + } + onsubmit() { + this.mywork.adduserdetails(this.form.value, this.token).subscribe((data) => { + console.log(data); + this.passchange = data; + this.toastr.success('Email Send successfully'); + console.log('success ', data); + }, (err) => { + this.toastr.error("Server Error"); + console.log('failure ', err); + }) + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/login-page/login-page.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/login-page/login-page.component.html new file mode 100644 index 0000000..df4eba9 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/login-page/login-page.component.html @@ -0,0 +1,146 @@ + + + + +
    + +
    + + + +
    + +
    + + + + +
    + +
    + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/login-page/login-page.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/login-page/login-page.component.scss new file mode 100644 index 0000000..221d360 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/login-page/login-page.component.scss @@ -0,0 +1,23 @@ + .tamplate1 { + background-image: url(../../../../assets/images/new.png); + background-repeat: no-repeat; + background-size: 60%; + background-position: right center; + border: 1px solid #000; + } + + .tamplate2 { + background-image: url(../../../../assets/images/new.png); + background-repeat: no-repeat; + background-size: 60%; + background-position: left center; + display: flex; + justify-content: flex-end; + align-items: center; + border: 1px solid #000; + } + .signup { + cursor: pointer; + // color:#80b0ff; + } + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/login-page/login-page.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/login-page/login-page.component.spec.ts new file mode 100644 index 0000000..fe42df4 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/login-page/login-page.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { LoginPageComponent } from './login-page.component'; + +describe('LoginPageComponent', () => { + let component: LoginPageComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ LoginPageComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(LoginPageComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/login-page/login-page.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/login-page/login-page.component.ts new file mode 100644 index 0000000..be82326 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/login-page/login-page.component.ts @@ -0,0 +1,108 @@ +import { Component, OnInit } from '@angular/core'; +import { Router } from '@angular/router'; +import { LoginService } from '../../../services/api/login.service'; +import { ActivatedRoute} from '@angular/router'; +import { HttpErrorResponse } from '@angular/common/http'; +import { ToastrService } from 'ngx-toastr'; +import{environment} from 'src/environments/environment'; +// import { ExtendedLoginEnvironment, LoginEnvironment } from './login_environment'; +//import { UserRegistrationService } from 'src/app/services/api/user-registration.service'; +import { LoginEnvironment } from './login_environment'; + + +@Component({ + selector: 'app-login-page', + templateUrl: './login-page.component.html', + styleUrls: ['./login-page.component.scss'] +}) +export class LoginPageComponent implements OnInit { + + loginEnvironment = LoginEnvironment; + showLogin2 = true; + + + // loginEnvironment: LoginEnvironment = { + // companyName: 'io8.dev', + // imagePath: '../../../../assets/images/new.png', + // fpass: 'forgot password', + // isSignup: true, + // // template:'', + // }; + + + // loginEnvironment: ExtendedLoginEnvironment = { + // companyName: 'io8.dev', + // imagePath: '../../../../assets/images/new.png', + // fpass: 'Forgot Password?', + // isSignup: true // or false based on your requirement + // }; + + + email = ''; + password = ''; + isError = false; + + model: any = {}; + errMsg: string = ''; + constructor( + private router: Router, + private route:ActivatedRoute, + private loginService: LoginService, + private toastr: ToastrService, + ) { } + + ngOnInit() { + this.loginService.logout(false); + + this.loginEnvironment["imagePath"] = !this.loginEnvironment.loginImageURL ? "../../../../assets/images/new.png" : this.loginEnvironment.loginImageURL; + + console.log('Login Environment:', this.loginEnvironment); + } + + getWrapperClass(): string { + if (this.loginEnvironment.templateNo === 'Template 1') { + return 'login-wrapper tamplate1'; + + } else if (this.loginEnvironment.templateNo === 'Template 2') { + return 'login-wrapper tamplate2'; + } else if (this.loginEnvironment.templateNo === '') { + return 'login-wrapper tamplate1'; // Default class or empty string if no match + } + } + + onLogin() { + // tslint:disable-next-line:max-line-length + this.loginService.getToken(this.model.email, this.model.password) + .subscribe(resp => { + if (resp.user === undefined || resp.user.token === undefined || resp.user.token === "INVALID") { + this.errMsg = 'Checking Email or password'; + return; + } + this.router.navigate([resp.landingPage]);// add , {skipLocationChange: true} + }, + (errResponse: HttpErrorResponse) => { + switch (errResponse.status) { + case 401: + this.errMsg = 'Email or password is incorrect'; + break; + case 404: + this.errMsg = 'Service not found'; + case 408: + this.errMsg = 'Request Timedout'; + case 500: + this.errMsg = 'Internal Server Error'; + default: + this.errMsg = 'Server Error'; + } + } + ); + + } + goaccount(){ + } + goforgotpass(){ + this.router.navigate(["../forgotpass"], { relativeTo: this.route }); + } + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/login-page/login_environment.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/login-page/login_environment.ts new file mode 100644 index 0000000..c6eaeef --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/login-page/login_environment.ts @@ -0,0 +1,15 @@ + + +export const LoginEnvironment = { + + "templateNo": "Template 1", + "loginHeading": "Welcome", + "loginHeading2": "io8.dev1", + "isSignup": "true", + "loginSignup": "Use your ID to sign in OR ", + "loginSignup2": "create one now", + "loginForgotpass": "FORGOT PASSWORD?", + "loginImage": "[]", + "loginImageURL": "null" + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/login-routing.module.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/login-routing.module.ts new file mode 100644 index 0000000..d0e2a2f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/login-routing.module.ts @@ -0,0 +1,27 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; +import { AddguestComponent } from './addguest/addguest.component'; +import { ForgotpasswordComponent } from './forgotpassword/forgotpassword.component'; +import { ForgotresetpasswordComponent } from './forgotresetpassword/forgotresetpassword.component'; +import { Forgotresetpassword1Component } from './forgotresetpassword1/forgotresetpassword1.component'; + +import { LoginPageComponent } from './login-page/login-page.component'; +import { EmailverificationComponent } from './emailverification/emailverification.component'; +import { AboutWorkComponent } from './about-work/about-work.component'; + +const routes: Routes = [ + { path: 'login', component: LoginPageComponent }, + {path: 'forgotpass', component:ForgotpasswordComponent}, + {path:'forgotresetpassword/:id', component:ForgotresetpasswordComponent}, + {path:'adduser/:id', component:Forgotresetpassword1Component}, + {path:'addguest/:id', component:AddguestComponent}, + + { path: 'email-verification', component: EmailverificationComponent }, + {path: 'about-work', component:AboutWorkComponent}, +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class LoginRoutingModule { } diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/login.module.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/login.module.ts new file mode 100644 index 0000000..afc5e7d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/login/login.module.ts @@ -0,0 +1,30 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { ClarityModule } from '@clr/angular'; +import { NgxCaptchaModule } from 'ngx-captcha'; + +import { LoginRoutingModule } from './login-routing.module'; +import { LoginPageComponent } from './login-page/login-page.component'; +import { ForgotpasswordComponent } from './forgotpassword/forgotpassword.component'; +import { ForgotresetpasswordComponent } from './forgotresetpassword/forgotresetpassword.component'; +import { Forgotresetpassword1Component } from './forgotresetpassword1/forgotresetpassword1.component'; +import { AddguestComponent } from './addguest/addguest.component'; + +import { EmailverificationComponent } from './emailverification/emailverification.component'; +import { AboutWorkComponent } from './about-work/about-work.component'; +import { SanitizePipe } from 'src/app/pipes/sanitize.pipe'; + +@NgModule({ + declarations: [LoginPageComponent, ForgotpasswordComponent, ForgotresetpasswordComponent, Forgotresetpassword1Component, AddguestComponent, + EmailverificationComponent, AboutWorkComponent,SanitizePipe], + imports: [ + CommonModule, + FormsModule, + ClarityModule, + LoginRoutingModule, + ReactiveFormsModule, + NgxCaptchaModule, + ] +}) +export class LoginModule { } diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/logo/logo.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/logo/logo.component.html new file mode 100644 index 0000000..2ce72ee --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/logo/logo.component.html @@ -0,0 +1,26 @@ + + + + + + + + + + + + + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/logo/logo.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/logo/logo.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/logo/logo.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/logo/logo.component.ts new file mode 100644 index 0000000..cb0dad1 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/logo/logo.component.ts @@ -0,0 +1,17 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-logo', + templateUrl: './logo.component.html', + styleUrls: ['./logo.component.scss'] +}) +export class LogoComponent implements OnInit { + + + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/BuilderComponents/stepperworkflow/Stepper_workflow/Stepper_workflow.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/BuilderComponents/stepperworkflow/Stepper_workflow/Stepper_workflow.component.html new file mode 100644 index 0000000..483d3de --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/BuilderComponents/stepperworkflow/Stepper_workflow/Stepper_workflow.component.html @@ -0,0 +1,405 @@ + +
    +
    +
    +

    Stepper Workflow

    +
    +
    + + + +
    +
    + + + + Loading ... + +
    {{error}}
    +
    + + Name + + + + Description + + + + Active + + + + + + Action + + + + + + {{user. name }} + + + + + + + {{user. active }} + + + + + + + +
    Who Column
    +
    Account ID: {{user.accountId}}
    +
    Created At: {{user.createdAt| date}}
    +
    Created By: {{user.createdBy}}
    +
    Updated At: {{user.updatedAt | date}}
    +
    Updated By: {{user.updatedBy}}
    +
    +
    + + + + + +
    + + + + + + + +
    + + + Users per page + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} + of {{pagination.totalItems}} users + + +
    + + + +
    +
    +
    +
    +
    +
    + +
    +
    + {{beforeText(item.fieldtext)}} + {{ app[transform(item.fieldtext) ] }} + {{afterText(item.fieldtext)}} +
    + +
    + {{beforeText(item.fieldtext)}} + {{ app[transform(item.fieldtext) ] | date}} + {{afterText(item.fieldtext)}} +
    +
    + {{beforeText(item.fieldtext)}} + {{ app[transform(item.fieldtext) ]}} + {{afterText(item.fieldtext)}} +
    + +
    +
    +
    + + +
    + +
    + +
    + File Preview +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/BuilderComponents/stepperworkflow/Stepper_workflow/Stepper_workflow.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/BuilderComponents/stepperworkflow/Stepper_workflow/Stepper_workflow.component.scss new file mode 100644 index 0000000..c47b921 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/BuilderComponents/stepperworkflow/Stepper_workflow/Stepper_workflow.component.scss @@ -0,0 +1,78 @@ +//@import "../../../../assets/scss/var"; +.s-info-bar { + display: flex; + flex-direction: row; + justify-content: space-between; + button { + outline: none; + } +} +.delete,.heading{ + text-align: center; + color: red; +} +.entry-pg { + width: 750px; +} + +.button1::after { + content: none; +} +.button1:hover::after { + content: "ADD ROWS"; +} + +.section { + background-color: #dddddd; + height: 40px; +} + +.section p { + //color: white; + padding: 10px; + font-size: 18px; +} + +.clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; +} + +.clr-file { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + //padding: 0.6rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; +} + +.center { + text-align: center; +} +select{ + width: 100%; + margin-top: 3px; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; +} +input[type=text],[type=date],[type=number],textarea { + width: 100%; + padding: 15px 15px; + background-color:rgb(255, 255, 255); + // margin: 8px 0; + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} +.error_mess { + color: red; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/BuilderComponents/stepperworkflow/Stepper_workflow/Stepper_workflow.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/BuilderComponents/stepperworkflow/Stepper_workflow/Stepper_workflow.component.ts new file mode 100644 index 0000000..8052672 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/BuilderComponents/stepperworkflow/Stepper_workflow/Stepper_workflow.component.ts @@ -0,0 +1,259 @@ + + + + + + + + + + + + + + + + + + + + + + + +import { Component, OnInit } from '@angular/core'; +import { ToastrService } from 'ngx-toastr'; +import { AlertService } from 'src/app/services/alert.service'; +import { Stepper_workflowservice } from './Stepper_workflow.service'; +import { AbstractControl, FormArray, FormBuilder, FormGroup, Validators, ValidationErrors } from '@angular/forms'; +import { ExtensionService } from 'src/app/services/fnd/extension.service'; +import { DashboardContentModel2 } from 'src/app/models/builder/dashboard'; +import { Stepper_workflowcardvariable } from './Stepper_workflow_cardvariable'; +import { UserInfoService } from 'src/app/services/user-info.service'; +import { ActivatedRoute, Router } from '@angular/router'; + +declare var JsBarcode: any; +@Component({ + selector: 'app-Stepper_workflow', + templateUrl: './Stepper_workflow.component.html', + styleUrls: ['./Stepper_workflow.component.scss'] +}) +export class Stepper_workflowComponent implements OnInit { + cardButton = Stepper_workflowcardvariable.cardButton; + cardmodeldata = Stepper_workflowcardvariable.cardmodeldata; + public dashboardArray: DashboardContentModel2[]; + isCardview = Stepper_workflowcardvariable.cardButton; + cardmodal; changeView() { + this.isCardview = !this.isCardview; + } + beforeText(fieldtext: string): string { // Extract the text before the first '<' + const index = fieldtext.indexOf('<'); + return index !== -1 ? fieldtext.substring(0, index) : fieldtext; + } + afterText(fieldtext: string): string { // Extract the text after the last '>' + const index = fieldtext.lastIndexOf('>'); + return index !== -1 ? fieldtext.substring(index + 1) : ''; + } + transform(fieldtext: string): string { + const match = fieldtext.match(/<([^>]*)>/); + return match ? match[1] : ''; // Extract the text between '<' and '>' + } + userrole; + rowSelected: any = {}; + modaldelete = false; + modalEdit = false; + modalAdd = false; + public entryForm: FormGroup; + loading = false; + product; + modalOpenedforNewLine = false; + newLine: any; + additionalFieldsFromBackend: any[] = []; + formcode = 'Stepper_workflow_formCode' + tableName = 'Stepper_workflow'; checkFormCode; selected: any[] = []; constructor( + private extensionService: ExtensionService, + private userInfoService: UserInfoService, + private mainService: Stepper_workflowservice, + private alertService: AlertService, + private toastr: ToastrService, + private _fb: FormBuilder, + private router: Router, + private route: ActivatedRoute, + ) { } + // component button + ngOnInit(): void { + if (this.cardmodeldata !== '') { + this.cardmodal = JSON.parse(this.cardmodeldata); + this.dashboardArray = this.cardmodal.dashboard.slice(); + console.log(this.dashboardArray) + } + this.userrole = this.userInfoService.getRoles(); + this.getData(); + this.entryForm = this._fb.group({ + name: [null], + + description: [null], + + active: [true], + + + + }); // component_button200 + // form code start + this.extensionService.getJsonObjectsByFormCodeList(this.formcode).subscribe(data => { + console.log(data); + const jsonArray = data.map((str) => JSON.parse(str)); + this.additionalFieldsFromBackend = jsonArray; + this.checkFormCode = this.additionalFieldsFromBackend.some(field => field.formCode === "Stepper_workflow_formCode"); + console.log(this.checkFormCode); + console.log(this.additionalFieldsFromBackend); + if (this.additionalFieldsFromBackend && this.additionalFieldsFromBackend.length > 0) { + this.additionalFieldsFromBackend.forEach(field => { + if (field.formCode === this.formcode) { + if (!this.entryForm.contains(field.extValue)) { + // Add the control only if it doesn't exist in the form + this.entryForm.addControl(field.extValue, this._fb.control(field.fieldValue)); + } + } + }); + } + }); + console.log(this.entryForm.value); + // form code end + + + } + + + error; + getData() { + this.mainService.getAll().subscribe((data) => { + console.log(data); + this.product = data; + if (this.product.length == 0) { + this.error = "No Data Available" + } + }, (error) => { + console.log(error); + if (error) { + this.error = "Server Error"; + } + }); + } + onEdit(row) { + this.rowSelected = row; + + this.modalEdit = true; + } + onDelete(row) { + this.rowSelected = row; + this.modaldelete = true; + } + delete(id) { + this.modaldelete = false; + console.log("in delete " + id); + this.mainService.delete(id).subscribe( + (data) => { + console.log(data); + this.ngOnInit(); + if (data) { this.toastr.success('Deleted successfully'); } + }); + } + onUpdate(id) { + this.modalEdit = false; + + + //console.log("in update"); + console.log("id " + id); + console.log(this.rowSelected); + //console.log("out update"); + this.mainService.update(id, this.rowSelected).subscribe( + (data) => { + console.log(data); + if (data || data.status >= 200 && data.status <= 299) { + this.toastr.success("Update Successfully"); + } + setTimeout(() => { + this.ngOnInit(); + }, 500); + + }, (error) => { + console.log(error); + if (error.status >= 200 && error.status <= 299) { + // this.toastr.success("update Succesfully"); + } + if (error.status >= 400 && error.status <= 499) { + this.toastr.error("Not Updated"); + } + if (error.status >= 500 && error.status <= 599) { + this.toastr.error("Not Updated"); + } + }); + setTimeout(() => { + this.ngOnInit(); + }, 500); + } + onCreate() { + this.modalAdd = false; + + this.mainService.create(this.entryForm.value).subscribe( + (data) => { + console.log(data); + if (data || data.status >= 200 && data.status <= 299) { + this.toastr.success("Added Successfully"); + } + setTimeout(() => { + this.ngOnInit(); + }, 500); + + }, (error) => { + console.log(error); + if (error.status >= 200 && error.status <= 299) { + // this.toastr.success("Added Succesfully"); + } + if (error.status >= 400 && error.status <= 499) { + this.toastr.error("Not Added"); + } + if (error.status >= 500 && error.status <= 599) { + this.toastr.error("Not Added"); + } + }); + setTimeout(() => { + this.ngOnInit(); + }, 500); + } + goToAdd(row) { + this.modalAdd = true; + this.submitted = false; + + } + submitted = false; + onSubmit() { + console.log(this.entryForm.value); + this.submitted = true; + if (this.entryForm.invalid) { + return; + } this.onCreate(); + + } + + + rsModaldescription = false; + goToReplaceStringdescription(row) { + this.rowSelected = row; this.rsModaldescription = true; + } + + + gotoStepper(id) { + + console.log('id is ', id) + + // stepper route + + + + + } + + // updateaction +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/BuilderComponents/stepperworkflow/Stepper_workflow/Stepper_workflow.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/BuilderComponents/stepperworkflow/Stepper_workflow/Stepper_workflow.service.ts new file mode 100644 index 0000000..da9eebd --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/BuilderComponents/stepperworkflow/Stepper_workflow/Stepper_workflow.service.ts @@ -0,0 +1,39 @@ +import { Injectable } from '@angular/core'; +import { Observable } from "rxjs"; +import { HttpClient, HttpHeaders, HttpParams, } from "@angular/common/http"; +import { ApiRequestService } from "src/app/services/api/api-request.service"; +import { environment } from 'src/environments/environment'; +@Injectable({ + providedIn: 'root' +}) +export class Stepper_workflowservice{ + private baseURL = "Stepper_workflow/Stepper_workflow" ; constructor( + private http: HttpClient, + private apiRequest: ApiRequestService, + ) { } + getAll(page?: number, size?: number): Observable { + return this.apiRequest.get(this.baseURL); + } + getById(id: number): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.get(_http); + } + create(data: any): Observable { + return this.apiRequest.post(this.baseURL, data); + } + update(id: number, data: any): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.put(_http, data); + } + delete(id: number): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.delete(_http); + } + + + + + + +// updateaction +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/BuilderComponents/stepperworkflow/Stepper_workflow/Stepper_workflow_cardvariable.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/BuilderComponents/stepperworkflow/Stepper_workflow/Stepper_workflow_cardvariable.ts new file mode 100644 index 0000000..1cdd2a5 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/BuilderComponents/stepperworkflow/Stepper_workflow/Stepper_workflow_cardvariable.ts @@ -0,0 +1,4 @@ +export const Stepper_workflowcardvariable = { + "cardButton": false, + "cardmodeldata": `` +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/BuilderComponents/test.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/BuilderComponents/test.html new file mode 100644 index 0000000..815da4a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/BuilderComponents/test.html @@ -0,0 +1,20 @@ + + + + +gaurav + + + + +

    this is h1

    +

    this is h1

    +

    this is h1

    +

    this is h1

    +

    Lorem ipsum, dolor sit amet consectetur adipisicing elit. Ipsa fuga, asperiores mollitia iste vitae repellendus adipisci atque eum corrupti ad placeat unde voluptatum quia perferendis neque expedita, sequi iure quo. Ut error adipisci ex cum sint, suscipit, voluptatem repellat nemo dolorum unde dolores quasi aut. A earum quo mollitia voluptatibus!

    + + + + + + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/about/about.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/about/about.component.html new file mode 100644 index 0000000..552bb52 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/about/about.component.html @@ -0,0 +1,13 @@ + + +
    + Angular Logo +

    + Angular {{ version.full }} + and Clarity Design System 15.2.0 +

    + UX guidelines, HTML/CSS framework, and Angular components working together to craft exceptional experiences +
    diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/about/about.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/about/about.component.scss new file mode 100644 index 0000000..e6d686a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/about/about.component.scss @@ -0,0 +1,15 @@ +a:link { + text-decoration: none; +} + +a:visited { + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +a:active { + text-decoration: none; +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/about/about.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/about/about.component.spec.ts new file mode 100644 index 0000000..6b77344 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/about/about.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AboutComponent } from './about.component'; + +describe('AboutComponent', () => { + let component: AboutComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ AboutComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AboutComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/about/about.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/about/about.component.ts new file mode 100644 index 0000000..07e4283 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/about/about.component.ts @@ -0,0 +1,14 @@ +import { Component, OnInit, VERSION } from '@angular/core'; + +@Component({ + selector: 'app-about', + templateUrl: './about.component.html', + styleUrls: ['./about.component.scss'] +}) +export class AboutComponent implements OnInit { + version: any = VERSION; + constructor() { } + + ngOnInit() {} + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/about/about.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/about/about.component.html new file mode 100644 index 0000000..29e3819 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/about/about.component.html @@ -0,0 +1,18 @@ + + +
    + Image +

    + {{ 'ABOUT_TITLE' | translate }} +

    + {{ 'ABOUT_DESCRIPTION' | translate }} +
    diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/about/about.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/about/about.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/about/about.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/about/about.component.spec.ts new file mode 100644 index 0000000..6b77344 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/about/about.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AboutComponent } from './about.component'; + +describe('AboutComponent', () => { + let component: AboutComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ AboutComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AboutComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/about/about.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/about/about.component.ts new file mode 100644 index 0000000..80c565f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/about/about.component.ts @@ -0,0 +1,19 @@ +import { Component, OnInit, VERSION } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; + +@Component({ + selector: 'app-about', + templateUrl: './about.component.html', + styleUrls: ['./about.component.scss'] +}) +export class AboutComponent implements OnInit { + version: any = VERSION; + + constructor(private translate: TranslateService) { } + + ngOnInit() {} + + switchLanguage(language: string) { + this.translate.use(language); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/accesstype/accesstype.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/accesstype/accesstype.component.html new file mode 100644 index 0000000..289c50b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/accesstype/accesstype.component.html @@ -0,0 +1,204 @@ + + + + + +
    +
    +

    {{'accessType' | translate}}

    +
    +
    + + +
    +
    + + + + Loading ... +
    {{error}}
    + + {{'name' | translate}} + {{'default' | translate}} + {{'description' | translate}} + + + + + {{user.name}} + + {{user.description}} + + + + + + + + + + + + {{'usersPerPage' | translate}} + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} + {{'of' | translate}} {{pagination.totalItems}} {{'users' | translate}} + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/accesstype/accesstype.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/accesstype/accesstype.component.scss new file mode 100644 index 0000000..d3cd6e7 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/accesstype/accesstype.component.scss @@ -0,0 +1,62 @@ +input[type=text],[type=date],[type=password] { + width: 100%; + padding: 15px 20px; + // margin: 3px 0; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} +.required-field{ + color: red; +font-size: 18px; + +} +.green{ + background-color: rgb(156, 231, 156); + color: black; +} +.blue{ + background-color: #57abcf;//rgb(82, 87, 161); + color: black; +} +.td-title { + text-align: center; + width: 150px; +color: white; + font-weight: bold; + background-color: rgba(63, 122, 231, 0.863); + //color: rgb(24, 13, 13); +} +th{ + //background-color:rgb(170, 169, 169); + font-weight: bold; +} +.td-content{ + text-align: left; +} +.delete,.heading{ + text-align: center; + color: red; +} +.section p { +background-color: rgb(206, 201, 201); + padding: 10px; + font-size: 18px; +} + +select{ + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; +} + +input.ng-invalid.ng-touched { + border-color: red; +} + +.error_mess { + color: red; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/accesstype/accesstype.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/accesstype/accesstype.component.spec.ts new file mode 100644 index 0000000..5c4bf19 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/accesstype/accesstype.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AccesstypeComponent } from './accesstype.component'; + +describe('AccesstypeComponent', () => { + let component: AccesstypeComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ AccesstypeComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(AccesstypeComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/accesstype/accesstype.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/accesstype/accesstype.component.ts new file mode 100644 index 0000000..a54048d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/accesstype/accesstype.component.ts @@ -0,0 +1,189 @@ +import { Component, OnInit } from '@angular/core'; +import { Form, FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import { ToastrService } from 'ngx-toastr'; +import { AccesstypeService } from 'src/app/services/admin/accesstype.service'; + +@Component({ + selector: 'app-accesstype', + templateUrl: './accesstype.component.html', + styleUrls: ['./accesstype.component.scss'] +}) +export class AccesstypeComponent implements OnInit { + loading = false; + selected: any[] = []; + rowSelected: any = {}; + modaldelete = false; + modalAdd = false; + modaledit = false; + moduleAdd = false; + error; + data; + module; + moduledata; + submitted = false; + selected1 = "true"; + public entryForm: FormGroup; + public mentryForm: FormGroup; + constructor(private _fb: FormBuilder, private toastr: ToastrService, + private router: Router, private accesstype: AccesstypeService, + private route: ActivatedRoute, + ) { } + + ngOnInit(): void { + this.entryForm = this._fb.group({ + + name: ['', [Validators.required]], + defaultvalue: ['', [Validators.required]], + description: ['', [Validators.required]], + + }); + this.mentryForm = this._fb.group({ + modulename: [null], + }) + this.getdata(); + this.getdata1(); + } + getdata() { + this.accesstype.getAll().subscribe(resp => { + this.data = resp; + console.log('menus: ', this.data); + if (this.data.length == 0) { + this.error = "No data Available"; + console.log(this.error) + } + }, (error) => { + console.log(error); + if (error) { + this.error = "Server Error"; + } + }) + } + getdata1() { + this.accesstype.getAll1().subscribe(resp => { + this.moduledata = resp; + console.log('menus: ', this.moduledata); + if (this.moduledata.length == 0) { + this.error = "No data Available"; + console.log(this.error) + } + }, (error) => { + console.log(error); + if (error) { + this.error = "Server Error"; + } + }) + } + goToAdd() { + this.modalAdd = true; + } + onSubmit() { + console.log(this.entryForm.value); + this.submitted = true; + if (this.entryForm.invalid) { + return; + } + console.log(this.entryForm.value); + this.accesstype.create(this.entryForm.value).subscribe((data) => { + console.log(data); + if (data) { + this.toastr.success('Added successfully'); + } + this.ngOnInit(); + }, + (error) => { + console.log('Error in adding data...', error); + if (error) { + this.toastr.error('Not added Data Getting Some Error'); + } + this.ngOnInit(); + + }); + this.modalAdd = false; + } + goToEdit(row) { + this.rowSelected = row; + console.log(row) + this.modaledit = true; + //this.router.navigate(["../edit/" + id], { relativeTo: this.route }); + } + onDelete(row) { + this.rowSelected = row; + this.modaldelete = true; + } + + delete(id) { + this.modaldelete = false; + console.log("in delete " + id); + this.accesstype.delete(id).subscribe((data) => { + console.log(data); + if (data) { + this.toastr.success('Deleted successfully'); + } + this.ngOnInit(); + }, + (error) => { + console.log('Error in adding data...', error); + if (error) { + this.toastr.error('Not Deleted Data Getting Some Error'); + } + this.ngOnInit(); + }); + + } + onUpdate(id) { + this.modaledit = false; + this.accesstype.update(id, this.rowSelected).subscribe((data) => { + console.log(data); + if (data) { + this.toastr.success('Updated successfully'); + } + this.ngOnInit(); + }, + (error) => { + console.log('Error in adding data...', error); + if (error) { + this.toastr.error('Not updated Data Getting Some Error'); + } + this.ngOnInit(); + }); + } + goTomodules() { + this.router.navigate(["../acmodules"], { relativeTo: this.route }); + } + accessid; + gomodules(row) { + this.rowSelected = row; + this.moduleAdd = true; + this.accessid = row.id + this.getallidmodules(this.accessid) + } + moduledata1; + getallidmodules(id) { + this.accesstype.getById(id).subscribe((data) => { + console.log(data); + this.moduledata1 = data; + if (this.moduledata1.length == 0) { + this.error = "No data Available"; + console.log(this.error) + } + }) + } + addmodules(id) { + console.log(this.mentryForm.value); + this.accesstype.addById(id, this.mentryForm.value).subscribe((data) => { + console.log(data); + if (data) { + this.toastr.success("Added Successfully"); + } + this.ngOnInit(); + }, (error) => { + console.log('Error in adding data...', error); + if (error) { + this.toastr.error('Not Added Data Getting Some Error'); + } + this.ngOnInit(); + }) + this.moduleAdd = false; + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentmaster/documentmaster.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentmaster/documentmaster.component.html new file mode 100644 index 0000000..fce1d94 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentmaster/documentmaster.component.html @@ -0,0 +1,128 @@ + + + + +
    +
    + +
    + + +
    +
    + + + + + + + + + data not found! + + + NO + + + Structure ID + + + Structure Name + + + Structure Seq + + + + + + {{i+1}} + {{user.StructureID}} + {{user.StructureName}} + {{user.StructureSeq}} + + + + + + + + + + + + + + + + +
    StructureName{{user.StructureName}}
    +
    +
    + + + + Record per page + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} + of {{pagination.totalItems}} Records + + +
    +
    + + + + + + + + + + + + + + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentmaster/documentmaster.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentmaster/documentmaster.component.scss new file mode 100644 index 0000000..36abb8c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentmaster/documentmaster.component.scss @@ -0,0 +1 @@ +@import '../../../../../styles1.scss'; diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentmaster/documentmaster.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentmaster/documentmaster.component.spec.ts new file mode 100644 index 0000000..7fde7a8 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentmaster/documentmaster.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DocumentmasterComponent } from './documentmaster.component'; + +describe('DocumentmasterComponent', () => { + let component: DocumentmasterComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ DocumentmasterComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(DocumentmasterComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentmaster/documentmaster.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentmaster/documentmaster.component.ts new file mode 100644 index 0000000..4779866 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentmaster/documentmaster.component.ts @@ -0,0 +1,30 @@ +import { Component, OnInit } from '@angular/core'; +import { FormGroup } from '@angular/forms'; +import { ExcelService } from '../../../../services/excel.service'; +import * as moment from 'moment'; +@Component({ + selector: 'app-documentmaster', + templateUrl: './documentmaster.component.html', + styleUrls: ['./documentmaster.component.scss'] +}) +export class DocumentmasterComponent implements OnInit { + loading = false; + public entryForm: FormGroup; + givendata; + orders; + modalAdd= false; + modaledit=false; + rowSelected :any= {}; + constructor(private excel: ExcelService,) { } + + ngOnInit(): void { + } + onExport() { + this.excel.exportAsExcelFile(this.givendata, 'user_', + moment().format('YYYYMMDD_HHmmss')) + } + goToAdd() { + this.modalAdd=true; + //this.router.navigate(["../usermaintanceadd"],{relativeTo:this.route}); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentreference/documentreference.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentreference/documentreference.component.html new file mode 100644 index 0000000..db3c0eb --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentreference/documentreference.component.html @@ -0,0 +1,180 @@ + + + + +
    +
    + +
    + + +
    +
    + + + + + + + + + data not found! + + + NO + + + Document Code + + + Pad Zero + + + Start With + + + Last Number + + + Max Length + + + Structure ID + + + + + {{i+1}} + {{user. DocumentCode}} + {{user. PadZero}} + {{user. StartWith}} + {{user. LastNumber}} + {{user. MaxLength}} + {{user. StructureID}} + + + + + + + + + + + + + + + + +
    StructureID{{user. StructureID}}
    +
    +
    + + + + Record per page + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} + of {{pagination.totalItems}} Records + + +
    +
    + + + + + + + + + + + + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentreference/documentreference.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentreference/documentreference.component.scss new file mode 100644 index 0000000..36abb8c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentreference/documentreference.component.scss @@ -0,0 +1 @@ +@import '../../../../../styles1.scss'; diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentreference/documentreference.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentreference/documentreference.component.spec.ts new file mode 100644 index 0000000..18b137e --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentreference/documentreference.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DocumentreferenceComponent } from './documentreference.component'; + +describe('DocumentreferenceComponent', () => { + let component: DocumentreferenceComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ DocumentreferenceComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(DocumentreferenceComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentreference/documentreference.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentreference/documentreference.component.ts new file mode 100644 index 0000000..5678564 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentreference/documentreference.component.ts @@ -0,0 +1,30 @@ +import { Component, OnInit } from '@angular/core'; +import { FormGroup } from '@angular/forms'; +import { ExcelService } from '../../../../services/excel.service'; +import * as moment from 'moment'; +@Component({ + selector: 'app-documentreference', + templateUrl: './documentreference.component.html', + styleUrls: ['./documentreference.component.scss'] +}) +export class DocumentreferenceComponent implements OnInit { + loading = false; + public entryForm: FormGroup; + givendata; + orders; + modalAdd= false; + modaledit=false; + rowSelected :any= {}; + constructor(private excel: ExcelService,) { } + + ngOnInit(): void { + } + onExport() { + this.excel.exportAsExcelFile(this.givendata, 'user_', + moment().format('YYYYMMDD_HHmmss')) + } + goToAdd() { + this.modalAdd=true; + //this.router.navigate(["../usermaintanceadd"],{relativeTo:this.route}); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentstructure/documentstructure.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentstructure/documentstructure.component.html new file mode 100644 index 0000000..dae85a6 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentstructure/documentstructure.component.html @@ -0,0 +1,56 @@ + +
    +
    +
    + +
    + For Structure ID + +
    +
    + + + + + + No Result Found + No + Seq + Prefix + Type + Delete + + + + + + + + + users + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentstructure/documentstructure.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentstructure/documentstructure.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentstructure/documentstructure.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentstructure/documentstructure.component.spec.ts new file mode 100644 index 0000000..0f200c4 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentstructure/documentstructure.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DocumentstructureComponent } from './documentstructure.component'; + +describe('DocumentstructureComponent', () => { + let component: DocumentstructureComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ DocumentstructureComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(DocumentstructureComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentstructure/documentstructure.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentstructure/documentstructure.component.ts new file mode 100644 index 0000000..2117853 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/documentstructure/documentstructure.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-documentstructure', + templateUrl: './documentstructure.component.html', + styleUrls: ['./documentstructure.component.scss'] +}) +export class DocumentstructureComponent implements OnInit { + loading = false; + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/all/all-menu-group.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/all/all-menu-group.component.html new file mode 100644 index 0000000..4b1d101 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/all/all-menu-group.component.html @@ -0,0 +1,1057 @@ + + +
    +
    +
    +

    User list

    +
    +
    + + + +
    +
    + + + user not found! + + + Menu Name + + + + + Description + + + + + Enabled + + + + + Start Date + + + + + End Date + + + + + + {{user.menu_name}} + {{user.description}} + {{user.active}} + {{user.start_date_1}} + {{user.end_date_1}} + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Menu Name: {{user.menu_name}} +
    Description: {{user.description}}
    Enabled: {{user.active}}
    Default End Date: 10/03/2001 Start Date: {{user.start_date_1}}
    Default End Date: 10/03/2001 End Date: {{user.end_date_1}}
    + + + + + + + + + + + + + + + + + + + +
    Sr. NoNameTypeMenu NameActive
    {{ i + 1 }}{{ line.name }}{{ line.type }} {{ line.menu_name }} {{ line.active }}
    + + +
    +
    + + + + Users per page + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} + of {{pagination.totalItems}} users + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/all/all-menu-group.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/all/all-menu-group.component.scss new file mode 100644 index 0000000..76ae2bd --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/all/all-menu-group.component.scss @@ -0,0 +1,65 @@ +// // @import '../../../../assets/scss/var'; +// .s-info-bar { +// display: flex; +// flex-direction: row; +// justify-content: space-between; +// button { +// outline: none; +// } +// } + +// .grid-pg { +// width:750px; +// } + + +// #add { +// position: absolute; +// //position: fixed; +// transition: .5s ease; +// top: 16%; +// left: 79%; +// } + +input[type=text],[type=date], select { + width: 100%; + padding: 12px 20px; + margin: 8px 0; + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; + } + .required-field{ + color: red; + + } + .horizontal{ + width: 50%; + padding: 10px; + } + + .td-title { + text-align: center; + color: white; + font-weight: bold; + background-color: rgba(63, 122, 231, 0.863); + //color: rgb(24, 13, 13); + } + th{ + background-color:rgb(170, 169, 169); + font-weight: bold; + } + .td-content{ + text-align: left; + } + .delete,.heading{ + text-align: center; + color: red; + } + .section p { + background-color: rgb(206, 201, 201); + padding: 10px; + font-size: 18px; + } + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/all/all-menu-group.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/all/all-menu-group.component.ts new file mode 100644 index 0000000..83594c5 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/all/all-menu-group.component.ts @@ -0,0 +1,506 @@ +import { Component, OnInit, TemplateRef, ViewChild, ViewEncapsulation } from '@angular/core'; +import { MenuGroupService } from '../../../../../services/admin/menu-group.service'; +import { MenuRegisterService } from '../../../../../services/admin/menu-register.service'; + +import { ToastrService } from 'ngx-toastr'; +import { university } from '../../../../../models/fnd/university'; +import { AlertService } from '../../../../../services/alert.service'; +import { UniversityService } from 'src/app/services/admin/university.service'; +import { ExcelService } from '../../../../../services/excel.service'; +import * as moment from 'moment'; +import { FormArray, FormBuilder, FormGroup } from '@angular/forms'; +import { HttpErrorResponse } from '@angular/common/http'; +import { ActivatedRoute, Router } from '@angular/router'; + +@Component({ + selector: 'app-all-menu-group', + templateUrl: './all-menu-group.component.html', + styleUrls: ['./all-menu-group.component.scss'], +}) +export class AllMenuGroupComponent implements OnInit { + + rowSelected: any = {}; + modaldelete = false; + modalEdit = false; + modalAdd = false; + public entryForm: FormGroup; + + loading = false; + university; + modalOpenedforNewLine = false; + newLine: university = new university(); + + hname = ['ashwini', 'akash', 'satyam', 'ganesh', 'krishna']; + + email = ['a@gmail.com', 'b@gmail.com', 'c@gmail.com', 'd@gmail.com', 'k@gmail.com']; + + subject = ['marathi', 'hindi', 'english']; + + booktype = ['maths', 'language', 'science']; + + bookname: string[] = ['rich dad poor dad', 'The one thing', 'The momb who head farai', 'trump', 'lucky', 'syamchi aai', + 'aai', 'ek hota karwar', 'chawa', 'mutunjay', 'duniyadari', 'dad', + 'story book', 'horror story', 'poem']; + + writer = ['true', 'false']; + + + price = ['100', '200']; + + basic: boolean = false; + + id: number; + submitted = false; + currentUrl = ""; + selected: any[] = []; + + constructor( + private _mg: MenuGroupService, + private _mr: MenuRegisterService, + private mainService: UniversityService, + private alertService: AlertService, + private toastr: ToastrService, + private excel: ExcelService, + private _fb: FormBuilder, + private router: Router, + private route: ActivatedRoute, + ) { + + } + + ngOnInit() { + + this.getData(); + + } + getData() { + this._mg.getAll().subscribe((data) => { + console.log(data); + this.university = data; + this.university = this.university.items; + console.log(this.university); + + }); + + this.entryForm = this._fb.group({ + menu_name: [null], + description: [null], + active: [null], + start_date_1: [null], + end_date_1: [null], + start_date: [null], + end_date: [null], + + + menu_group_lines: this._fb.array([this.initLinesForm()]), + + + + }); + + } + + initLinesForm() { + return this._fb.group({ + + menu_id: 23, + menu_name: [null], + name: [null], + active: [null], + seq: 32, + type: [null], + + }); + } + + onEdit(row) { + this.rowSelected = row; + console.log(this.rowSelected); + + this.modalEdit = true; + } + + onDelete(row) { + this.rowSelected = row; + this.modaldelete = true; + } + + delete(id) { + this.modaldelete = false; + console.log("in delete " + id); + // this.mainService.delete(id).subscribe( + // (data) => { + // console.log(data); + + // this.ngOnInit(); + + // }, + // ); + + this._mg.deleteById(id).subscribe( + (data: any)=>{ + console.log('Deletion success...'); + this.ngOnInit(); + } + ); + if (id) { + this.toastr.success('Deleted successfully'); + } + + } + + onUpdate(id) { + this.modalEdit = false; + //console.log("in update"); + console.log("id " + id); + console.log(this.rowSelected); + //console.log("out update"); + // this.mainService.update(id, this.rowSelected).subscribe( + // (data) => { + // console.log(data); + + // }, + + // ); + this._mg.updateGroupHeader(id, this.rowSelected).subscribe( + (data: any)=>{ + console.log(data); + console.log('Update Success...'); + this.modalEdit = false; + this.ngOnInit(); + + }, + (error: any)=>{ + console.log(error); + + } + ); + if (id) { + this.toastr.success('Updated successfully'); + } + + } + onExport() { + this.excel.exportAsExcelFile(this.university, 'user_', + moment().format('YYYYMMDD_HHmmss')) + } + goToAdd(row) { + + this.modalAdd = true; + + } + onSubmit() { + + + + //console.warn("calling submit"); + + //console.log(this.entryForm.value); + this.submitted = true; + if (this.entryForm.invalid) { + return; + } + this.onCreate(); + } + + + + onCreate() { + this.modalAdd = false; + + this._mg.addToDb(this.entryForm.value).subscribe( + (data: any)=>{ + console.log(data); + this.ngOnInit(); + }, + (error: any)=>{ + console.log(error); + + } + ); + if (this.entryForm.value) { + this.toastr.success('Added successfully'); + + } + } + + get controls() { + return (this.entryForm.get("menu_group_lines") as FormArray).controls; + } + + onRemoveLines(index: number) { + (this.entryForm.get("menu_group_lines")).removeAt(index); + } + onAddLines() { + (this.entryForm.get("menu_group_lines")).push(this.initLinesForm()); + } + update() { + this.mainService.update(this.id, this.university).subscribe( + (data) => { + console.log(data); + + }, + (error: HttpErrorResponse) => { + console.log(error.message); + } + ); + } + +} + + + + + + +// import { Component, OnInit, TemplateRef, ViewChild, ViewEncapsulation } from '@angular/core'; +// import { MenuGroupService } from 'src/app/services/api/menu-group.service'; +// import { MenuRegisterService } from 'src/app/services/api/menu-register.service'; + + +// @Component({ +// selector: 'app-all-menu-group', +// templateUrl: './all-menu-group.component.html', +// styleUrls: ['./all-menu-group.component.scss'], +// encapsulation: ViewEncapsulation.Emulated +// }) +// export class AllMenuGroupComponent implements OnInit { +// @ViewChild('getById') selectById: TemplateRef; +// @ViewChild('txId') txId: TemplateRef; +// basic: boolean = false; +// columns: any[]; +// rows: any[]; +// temp = []; + +// filterData: string; +// isLoading: boolean = false; + +// modalEdit: false; +// loading = false; +// openEdit = false; +// openAdd = false; +// openAddLine = false; +// openEditHeader = false; + +// mgdata: any; +// linesData: Array; +// lines = []; + +// updata = { +// id: '', +// active: '', +// createdAt: '', +// createdBy: '', +// description: '', +// end_date: '', +// end_date_1: '', +// menu_name: '', +// start_date: '', +// start_date_1: '', +// updatedAt: '', +// updatedBy: '', +// menu_group_lines: [ +// { +// id: '', +// active: '', +// createdAt: '', +// createdBy: '', +// menu_id: '', +// manu_name: '', +// name: '', +// seq: '', +// type: '', +// updatedAt: '', +// updatedBy: '' +// }, +// ], +// } + +// updateHeader = { +// id: '', +// active: '', +// createdAt: '', +// createdBy: '', +// description: '', +// end_date: '', +// end_date_1: '', +// menu_name: '', +// start_date: '', +// start_date_1: '', +// updatedAt: '', +// updatedBy: '', +// } + +// menu_group_line = +// { +// id: '', +// menu_id: '', +// menu_name: '', +// name: '', +// active: '', +// seq: '', +// type: '', +// menu_group_header: { +// id: '' +// } +// } + +// headerAdd = { +// menu_name: '', +// description: '', +// active: false, +// start_date_1: '', +// end_date_1: '' +// } + +// lineAdd = { +// name: '', +// menu_name: '', +// active: false, +// type: '', +// menu_group_header: { +// id: '' +// } +// } + +// constructor( +// private _mg: MenuGroupService, +// private _mr: MenuRegisterService +// ) { +// this.linesData = new Array(); +// } + +// ngOnInit() { + +// this._mg.getAll().subscribe( +// (data: any) => { +// this.mgdata = data; +// console.log(this.mgdata); + +// } +// ); + +// } + +// addData() { +// console.log(this.headerAdd); +// this._mg.addToDb(this.headerAdd).subscribe( +// (data: any) => { +// console.log('Data addedd successfully...'); +// this.openAdd = false; +// this.ngOnInit(); +// }, +// (error: any) => { +// console.log(error); + +// } + +// ); +// } + +// openAddLinef(id: any) { +// this.openAddLine = true; +// console.log(id); +// this.lineAdd.menu_group_header.id = id; + + +// } +// saveD() { +// console.log(this.lineAdd); +// this._mg.addLineToDb(this.lineAdd).subscribe( +// (data: any) => { +// console.log('data added success...'); +// this.openAddLine = false; +// this.ngOnInit(); +// }, +// (error: any) => { +// console.log(error); + +// } +// ); +// } + +// openEditGroup(id: any) { +// this.openEdit = true; +// console.log(id); +// this._mg.getOneById(id).subscribe( +// (data: any) => { +// this.updata = data; +// this.lines = this.updata.menu_group_lines; +// for(let val of this.updata.menu_group_lines){ +// this.linesData.push(val); +// } +// console.log('New Data of Lines : '); +// console.log(this.lines); +// }, +// (error: any) => { +// console.log(error); + +// } +// ); + +// } + +// perfUpdate(){ +// console.log(this.updata); +// this.updateHeader.id = this.updata.id; +// this.updateHeader.active = this.updata.active; +// this.updateHeader.createdAt = this.updata.createdAt; +// this.updateHeader.createdBy = this.updata.createdBy; +// this.updateHeader.description = this.updata.description; +// this.updateHeader.end_date = this.updata.end_date; +// this.updateHeader.end_date_1 = this.updata.end_date_1; +// this.updateHeader.menu_name = this.updata.menu_name; +// this.updateHeader.start_date = this.updata.start_date; +// this.updateHeader.start_date_1 = this.updata.start_date_1; +// this.updateHeader.updatedAt = this.updata.updatedAt; +// this.updateHeader.updatedBy = this.updata.updatedBy; + +// this._mg.updateGroupHeader(this.updateHeader.id, this.updateHeader).subscribe( +// (datah: any)=>{ +// console.log('Data(header) updated successsfully...'); +// console.log(datah); + +// for(let val of this.lines){ +// this.menu_group_line.id = val.id; +// this.menu_group_line.menu_id = val.menu_id; +// this.menu_group_line.menu_name = val.menu_name; +// this.menu_group_line.name = val.name; +// this.menu_group_line.seq = val.seq; +// this.menu_group_line.type = val.type; +// // this.menu_group_line.menu_group_header.id = datah.id; +// this.menu_group_line.menu_group_header.id = this.updateHeader.id; + +// this._mg.updateLineById(this.menu_group_line).subscribe( +// (data: any)=>{ +// console.log('Data(Line) Updated Successfully...'); +// console.log(data); +// this.linesData = []; +// this.openEdit = false; +// this.ngOnInit(); +// console.log(this.linesData); + +// }, +// (error: any)=>{ +// console.log(error); + +// } +// ); +// } +// }, +// (error: any)=>{ +// console.log(error); + +// } +// ); +// } + +// closeM(){ +// this.openEdit = false; +// this.linesData = []; +// } + + + +// } + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/edit/edit-menu-group.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/edit/edit-menu-group.component.html new file mode 100644 index 0000000..75220a5 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/edit/edit-menu-group.component.html @@ -0,0 +1,99 @@ + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/edit/edit-menu-group.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/edit/edit-menu-group.component.ts new file mode 100644 index 0000000..2ba68dc --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/edit/edit-menu-group.component.ts @@ -0,0 +1,97 @@ +import { Component, OnInit } from "@angular/core"; +import { ActivatedRoute, Router } from "@angular/router"; +import { HttpClient, HttpErrorResponse } from "@angular/common/http"; +// import { Rn_Menu_Group_Line } from "src/app/models/Rn_Menu_Group_Line"; +// import { Rn_Menu_Group_Header } from "src/app/models/Rn_Menu_Group_Header"; +// import { MenuGroupService } from "src/app/services/api/menu-group.service"; +// import { MenuRegisterService } from "src/app/services/api/menu-register.service"; + +@Component({ + selector: "edit-menu-group", + templateUrl: "./edit-menu-group.component.html", + styleUrls: ["./edit-menu-group.scss"], +}) +export class EditMenuGroupComponent implements OnInit { + updated = false; + // rn_menu_group_header: Rn_Menu_Group_Header; + // rn_menu_group_line: Rn_Menu_Group_Line[]; + id: number; + + types = ['user', 'admin', 'mis report', 'bi report']; + + constructor( + private router: Router, + private route: ActivatedRoute, + // private menuRegisterService: MenuRegisterService, + // private menuGroupService: MenuGroupService + ) {} + + ngOnInit() { + //this.getMapings(); + + // this.rn_menu_group_header = new Rn_Menu_Group_Header(); + // this.id = this.route.snapshot.params["id"]; + // console.log("update with id = ", this.id); + // this.getById(this.id); + } + +// getById(id: number) { +// this.menuGroupService.getById(id).subscribe((data) => { +// this.rn_menu_group_header = data; +// this.rn_menu_group_line = data.menu_group_lines; +// }); +// } + +// update() { +// this.menuGroupService.update(this.id, this.rn_menu_group_header).subscribe( +// (resp) => { +// console.log(resp); +// this.router.navigate(["../../all"], { relativeTo: this.route }); +// }, +// (error: HttpErrorResponse) => { +// console.log(error.message); +// } +// ); +// this.rn_menu_group_header = new Rn_Menu_Group_Header(); +// } + +// onSubmit() { +// this.updated = true; +// this.update(); +// } + +// /* getMapings() { +// this.httpService +// .get('./assets/json/form-setup-mapping.json') +// .subscribe(data => { +// console.log(data); +// this.mappings = data; +// }, err => console.log(err) +// ) +// } */ + +// menuDate: any[]; +// menuDropDown: any[]; +// getMenuData() { +// //this.menuRegisterService.getAll().subscribe((data) => { +// this.menuRegisterService.getByAccountId().subscribe((data) => { +// this.menuDate = data; +// console.log('Menu List by Account Id : ', this.menuDate); +// const keys = this.menuDate.map((item) => { +// const container = {id: '', name: ''}; +// container.id = item.id; +// container.name = item.main_menu_name; +// return container; +// }); +// console.log('Menu dropdown: ', keys); +// this.menuDropDown = keys; +// }, (err) => { +// console.log(err) +// } +// ); +// } + +// back() { +// this.router.navigate(["../../all"], { relativeTo: this.route }); +// } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/edit/edit-menu-group.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/edit/edit-menu-group.scss new file mode 100644 index 0000000..ffe3733 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/edit/edit-menu-group.scss @@ -0,0 +1,51 @@ +// @import '../../../../assets/scss/var'; + +.s-info-bar{ + display:flex; + flex-direction: row; + justify-content:space-between; + button{outline:none;} +} + +.edit-pg { + width:750px; +} + +#lines { + table, th, td { + border: 0.5px solid #f1f0f0; + border-collapse: collapse; + } + input, input :focus { + //-webkit-appearance: none; + outline: none; + border-width:0px; + border:none; + } +} + +.clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; +} + +.center { + text-align: center; +} + +$bg-color: #dddddd; +.section { + background-color: $bg-color; + height: 40px; +} + +.section p { + //color: white; + padding: 10px; + font-size: 18px; +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/menu-group.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/menu-group.component.html new file mode 100644 index 0000000..0680b43 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/menu-group.component.html @@ -0,0 +1 @@ + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/menu-group.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/menu-group.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/menu-group.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/menu-group.component.ts new file mode 100644 index 0000000..fb6833d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/menu-group.component.ts @@ -0,0 +1,16 @@ +import { Component, OnInit, ViewEncapsulation } from '@angular/core'; + +@Component({ + selector: 'app-menu-group', + templateUrl: './menu-group.component.html', + styleUrls: ['./menu-group.component.scss'], + // encapsulation: ViewEncapsulation.Emulated +}) +export class MenuGroupComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/read-only/readonly-menu-group.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/read-only/readonly-menu-group.component.html new file mode 100644 index 0000000..54ee5b7 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/read-only/readonly-menu-group.component.html @@ -0,0 +1,94 @@ + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/read-only/readonly-menu-group.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/read-only/readonly-menu-group.component.ts new file mode 100644 index 0000000..9d0ad17 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/read-only/readonly-menu-group.component.ts @@ -0,0 +1,44 @@ +import { Component, OnInit } from '@angular/core'; +import { ActivatedRoute, Router } from '@angular/router'; +// import { Rn_Forms_Setup } from 'src/app/models/Rn_Forms_Setup'; +// import { FormSetupService } from 'src/app/services/api/form-setup.service'; +// import { Rn_Menu_Group_Header } from 'src/app/models/Rn_Menu_Group_Header'; +// import { MenuGroupService } from 'src/app/services/api/menu-group.service'; + +@Component({ + selector: 'readonly-menu-group', + templateUrl: './readonly-menu-group.component.html', + styleUrls: [ './readonly-menu-group.scss'], +}) +export class ReadOnlyMenuGroupComponent implements OnInit { + basic: boolean = false; + id: number; + // rn_menu_group_header: Rn_Menu_Group_Header; + constructor( + private router: Router, + private route: ActivatedRoute, + // private menuGroupService: MenuGroupService + ) { } + + ngOnInit() { + // this.getById(); + } + + // getById() { + // this.rn_menu_group_header = new Rn_Menu_Group_Header(); + // this.id = this.route.snapshot.params['id']; + // this.menuGroupService.getById(this.id) + // .subscribe(data => { + // console.log(data); + // this.rn_menu_group_header = data; + // }); + // } + + // goToWhoColumns() { + // this.basic = !this.basic; + // } + + // back() { + // this.router.navigate(['../../all'], {relativeTo: this.route}); + // } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/read-only/readonly-menu-group.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/read-only/readonly-menu-group.scss new file mode 100644 index 0000000..3036f69 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-group/read-only/readonly-menu-group.scss @@ -0,0 +1,23 @@ +// @import '../../../../assets/scss/var'; +.s-info-bar { + display: flex; + flex-direction: row; + justify-content: space-between; + button { + outline: none; + } +} + +.read-only-pg { + width:750px; +} + + + +#build_btn { + position: absolute; + transition: .5s ease; + top: 404px; + left: 644px; +} + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/add-menur/add-menur.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/add-menur/add-menur.component.html new file mode 100644 index 0000000..0e3e30e --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/add-menur/add-menur.component.html @@ -0,0 +1 @@ +

    add-menur works!

    diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/add-menur/add-menur.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/add-menur/add-menur.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/add-menur/add-menur.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/add-menur/add-menur.component.spec.ts new file mode 100644 index 0000000..fccbe61 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/add-menur/add-menur.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AddMenurComponent } from './add-menur.component'; + +describe('AddMenurComponent', () => { + let component: AddMenurComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ AddMenurComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(AddMenurComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/add-menur/add-menur.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/add-menur/add-menur.component.ts new file mode 100644 index 0000000..c24e5f3 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/add-menur/add-menur.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-add-menur', + templateUrl: './add-menur.component.html', + styleUrls: ['./add-menur.component.scss'] +}) +export class AddMenurComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/all-menur/all-menur.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/all-menur/all-menur.component.html new file mode 100644 index 0000000..6c134ab --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/all-menur/all-menur.component.html @@ -0,0 +1,203 @@ + + +
    +
    +
    +

    menu register

    +
    +
    + + +
    +
    + + user not found! + + + Sr. No + + + + + Menu Name + + + + + Action Link + + + + + Menu Icon + + + + + Flag + + + + + End Date + + + + + {{i + 1}} + {{user.main_menu_name}} + {{user.main_menu_action_name}} + {{user.main_menu_icon}} + {{user.enable_flag}} + {{user.end_date_1}} + + + + ˝ + + + + + + Users per page + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} + of {{pagination.totalItems}} users + + + +
    + + + + + + + + + + + + + + + + + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/all-menur/all-menur.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/all-menur/all-menur.component.scss new file mode 100644 index 0000000..4f6d7c9 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/all-menur/all-menur.component.scss @@ -0,0 +1,14 @@ +input[type=text],[type=date], select { + width: 100%; + padding: 12px 20px; + margin: 8px 0; + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; + } + + .delete,.heading{ + text-align: center; + color: red; + } \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/all-menur/all-menur.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/all-menur/all-menur.component.spec.ts new file mode 100644 index 0000000..620106c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/all-menur/all-menur.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AllMenurComponent } from './all-menur.component'; + +describe('AllMenurComponent', () => { + let component: AllMenurComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ AllMenurComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(AllMenurComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/all-menur/all-menur.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/all-menur/all-menur.component.ts new file mode 100644 index 0000000..67ea77d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/all-menur/all-menur.component.ts @@ -0,0 +1,187 @@ +import { Component, OnInit } from '@angular/core'; +import { ToastrService } from 'ngx-toastr'; +import { MenuGroupService } from '../../../../../services/admin/menu-group.service'; +import { MenuRegisterService } from '../../../../../services/admin/menu-register.service'; + +@Component({ + selector: 'app-all-menur', + templateUrl: './all-menur.component.html', + styleUrls: ['./all-menur.component.scss'] +}) +export class AllMenurComponent implements OnInit { + + basic: boolean = false; + columns: any[]; + rows: any[]; + temp = []; + selected: any[] = []; + filterData: string; + isLoading: boolean = false; + + modalEdit: false; + loading = false; + + openEdit = false; + openAdd = false; + + modaldelete = false; + tempid: any; + + regData: any; + + addReg = { + main_menu_name: '', + main_menu_action_name: '', + main_menu_icon: '', + enable_flag: false, + end_date_1: '' + } + + upReg = { + id: '', + main_menu_name: '', + main_menu_action_name: '', + main_menu_icon: '', + enable_flag: '', + end_date_1: '' + } + + line = { + id: '', + menu_id: '', + menu_name: '', + name: '', + active: true, + seq: '', + type: '', + menu_group_header: { + id: 5, + } + }; + + lenReg: any; + + constructor( + private _mr: MenuRegisterService, + private _mg: MenuGroupService, + private toastr: ToastrService, + ) { } + + ngOnInit(): void { + + this._mr.getd().subscribe( + (data: any) => { + this.regData = data.items; + this.lenReg = this.regData.length; + console.log(this.regData); + console.log(this.lenReg); + + + } + ); + + + } + + saveData() { + console.log(this.addReg); + + this._mr.add(this.addReg).subscribe( + (data: any) => { + console.log('Data Success...'); + + this.line.menu_id = data.id; + this.line.active = true; + this.line.type = 'admin'; + // this.line.menu_group_header.id = '5'; + + this._mr.getd().subscribe( + (data: any)=>{ + this.lenReg = data.length; + } + ); + + this.line.seq = this.lenReg + 1; + + this._mg.addLineToDb(this.line).subscribe( + (data: any)=>{ + console.log('both success..'); + + }, + (error: any)=>{ + console.log(error); + + } + ); + + this.openAdd = false; + this.addReg = { + main_menu_name: '', + main_menu_action_name: '', + main_menu_icon: '', + enable_flag: false, + end_date_1: '' + }; + this.ngOnInit(); + this.toastr.success('Added successfully'); + }, + (error: any) => { + console.log(error); + + } + ); + } + + editReg(id: any) { + this.openEdit = true; + console.log(id); + this._mr.getById(id).subscribe( + (data: any) => { + this.upReg = data; + console.log(this.upReg); + }, + (error: any) => { + console.log(error); + } + ); + } + + performup() { + this._mr.update(this.upReg.id, this.upReg).subscribe( + (data: any) => { + console.log('updation success...'); + this.toastr.success('Updated successfully'); + this.openEdit = false; + this.ngOnInit(); + + }, + (error: any) => { + console.log(error); + + } + ); + } + + delete(id: any) { + this.tempid = id; + this.modaldelete = true; + + } + + del() { + console.log('Id of row u clicked is : ' + this.tempid); + this._mr.deleteById(this.tempid).subscribe( + (data: any) => { + console.log('Deletion successful..'); + this.ngOnInit(); + this.modaldelete = false; + this.toastr.success('Deleted successfully'); + }, + (error: any) => { + console.log(error); + + } + ); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/edit-menur/edit-menur.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/edit-menur/edit-menur.component.html new file mode 100644 index 0000000..862db5a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/edit-menur/edit-menur.component.html @@ -0,0 +1 @@ +

    edit-menur works!

    diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/edit-menur/edit-menur.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/edit-menur/edit-menur.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/edit-menur/edit-menur.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/edit-menur/edit-menur.component.spec.ts new file mode 100644 index 0000000..cf744ca --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/edit-menur/edit-menur.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EditMenurComponent } from './edit-menur.component'; + +describe('EditMenurComponent', () => { + let component: EditMenurComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ EditMenurComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(EditMenurComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/edit-menur/edit-menur.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/edit-menur/edit-menur.component.ts new file mode 100644 index 0000000..7f5dcf8 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/edit-menur/edit-menur.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-edit-menur', + templateUrl: './edit-menur.component.html', + styleUrls: ['./edit-menur.component.scss'] +}) +export class EditMenurComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/menu-register.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/menu-register.component.html new file mode 100644 index 0000000..0680b43 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/menu-register.component.html @@ -0,0 +1 @@ + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/menu-register.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/menu-register.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/menu-register.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/menu-register.component.spec.ts new file mode 100644 index 0000000..3b21b1f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/menu-register.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MenuRegisterComponent } from './menu-register.component'; + +describe('MenuRegisterComponent', () => { + let component: MenuRegisterComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ MenuRegisterComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(MenuRegisterComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/menu-register.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/menu-register.component.ts new file mode 100644 index 0000000..e8e3459 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/menu-register.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-menu-register', + templateUrl: './menu-register.component.html', + styleUrls: ['./menu-register.component.scss'] +}) +export class MenuRegisterComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/readonly-menur/readonly-menur.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/readonly-menur/readonly-menur.component.html new file mode 100644 index 0000000..2c0eda0 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/readonly-menur/readonly-menur.component.html @@ -0,0 +1 @@ +

    readonly-menur works!

    diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/readonly-menur/readonly-menur.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/readonly-menur/readonly-menur.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/readonly-menur/readonly-menur.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/readonly-menur/readonly-menur.component.spec.ts new file mode 100644 index 0000000..efe0482 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/readonly-menur/readonly-menur.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ReadonlyMenurComponent } from './readonly-menur.component'; + +describe('ReadonlyMenurComponent', () => { + let component: ReadonlyMenurComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ReadonlyMenurComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ReadonlyMenurComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/readonly-menur/readonly-menur.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/readonly-menur/readonly-menur.component.ts new file mode 100644 index 0000000..bf58eb2 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menu-register/readonly-menur/readonly-menur.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-readonly-menur', + templateUrl: './readonly-menur.component.html', + styleUrls: ['./readonly-menur.component.scss'] +}) +export class ReadonlyMenurComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menuaccesscontrol/menuaccesscontrol.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menuaccesscontrol/menuaccesscontrol.component.html new file mode 100644 index 0000000..88a4b66 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menuaccesscontrol/menuaccesscontrol.component.html @@ -0,0 +1,279 @@ + + +
    +
    +
    +

    {{ 'MENU_ACCESS_CONTROL' | translate }}

    +
    +
    + {{ 'EDIT_MODE' | translate }} +
    +
    +
    + {{ 'FOR' | translate }} + + {{ 'SHOW_ALL' | translate }} {{ 'ONLY_MAIN_MENU' | translate + }} + +
    +
    +
    + +
    +
    + +
    + + +
    + {{ ' Close toggle to activate Add button. ' | translate }} +
    +
    +
    + + + + + Loading ... +
    {{ 'NO_DATA_AVAILABLE' | translate }}
    +
    + + + {{ 'NO' | translate }} + + + {{ 'MENU_ITEM_NAME' | translate }} + + + {{ 'VIEW' | translate }} + + + {{ 'CREATE' | translate }} + + + {{ 'EDIT' | translate }} + + + {{ 'DELETE' | translate }} + + + + {{ 'QUERY' | translate }} + + + {{ 'EXPORT' | translate }} + + + + {{i+1}} + {{all.menuItemDesc}} +    {{all.menuItemDesc}} + + + + + + + + + + + + + + + + + + + + + + +
    Menuname
    +
    +
    + + + + Record per page + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} + of {{pagination.totalItems}} Records + + +
    + + + + Loading ... +
    No data available
    +
    + + + NO + + + Menu Item Name + + + View + + + Create + + + Edit + + + Delete + + + + Query + + + Export + + + + {{i+1}} + {{all.menuItemDesc}} + + + + + + + + + + + + + + + +
    Menuname
    +
    +
    +
    + + + Record per page + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} + of {{pagination.totalItems}} Records + + +
    + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menuaccesscontrol/menuaccesscontrol.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menuaccesscontrol/menuaccesscontrol.component.scss new file mode 100644 index 0000000..1b7ad42 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menuaccesscontrol/menuaccesscontrol.component.scss @@ -0,0 +1,99 @@ +input[type=text],[type=date],[type=password],[type=checkbox] { + width: 100%; + padding: 15px 20px; + // margin: 3px 0; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} +.required-field{ + color: red; +font-size: 18px; + +} +// select{ +// width: 100%; +// padding: 5px 5px; +// border: 1px solid #ccc; +// border-radius: 4px; +// } +.td-title { + text-align: center; + width: 150px; +color: white; + font-weight: bold; + background-color: rgba(63, 122, 231, 0.863); + //color: rgb(24, 13, 13); +} +th{ + //background-color:rgb(170, 169, 169); + font-weight: bold; +} +.td-content{ + text-align: left; +} +.delete,.heading{ + text-align: center; + color: red; +} +//toggle button +.switch { + position: relative; + display: inline-block; + width: 60px; + height: 34px; +} + +.switch input { + opacity: 0; + width: 0; + height: 0; +} + +.slider { + position: absolute; + cursor: pointer; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: #ccc; + -webkit-transition: .4s; + transition: .4s; +} + +.slider:before { + position: absolute; + content: ""; + height: 26px; + width: 26px; + left: 4px; + bottom: 4px; + background-color: white; + -webkit-transition: .4s; + transition: .4s; +} + +input:checked + .slider { + background-color: #0072a3; +} + +input:focus + .slider { + box-shadow: 0 0 1px #0072a3; +} + +input:checked + .slider:before { + -webkit-transform: translateX(26px); + -ms-transform: translateX(26px); + transform: translateX(26px); +} + + .slider.round { + border-radius: 34px; + } + + .slider.round:before { + border-radius: 50%; + } diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menuaccesscontrol/menuaccesscontrol.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menuaccesscontrol/menuaccesscontrol.component.spec.ts new file mode 100644 index 0000000..46c2323 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menuaccesscontrol/menuaccesscontrol.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MenuaccesscontrolComponent } from './menuaccesscontrol.component'; + +describe('MenuaccesscontrolComponent', () => { + let component: MenuaccesscontrolComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ MenuaccesscontrolComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(MenuaccesscontrolComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menuaccesscontrol/menuaccesscontrol.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menuaccesscontrol/menuaccesscontrol.component.ts new file mode 100644 index 0000000..1ccf78e --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menuaccesscontrol/menuaccesscontrol.component.ts @@ -0,0 +1,246 @@ +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup } from '@angular/forms'; +import { ActivatedRoute } from '@angular/router'; +import { ToastrService } from 'ngx-toastr'; +import { MenuGroupService } from 'src/app/services/admin/menu-group.service'; +import { MenumaintanceService } from 'src/app/services/admin/menumaintance.service'; +import { UsergrpmaintainceService } from 'src/app/services/admin/usergrpmaintaince.service'; +import { UsermaintanceService } from '../../../../services/admin/usermaintance.service'; +@Component({ + selector: 'app-menuaccesscontrol', + templateUrl: './menuaccesscontrol.component.html', + styleUrls: ['./menuaccesscontrol.component.scss'] +}) +export class MenuaccesscontrolComponent implements OnInit { + loading = false; + givendata; + alldata; + colvalue = "true"; + usergrpid = 1; + secmenuaccessdata; + modalAdd = false; + modaledit = false; + modaldelete = false; + modaldelete1 = false; + rowSelected: any = {}; + public entryForm: FormGroup; + selected = "true"; + menudata; + menus; + menuselectid = 1; + msg; + error; + mcreate; + medit; + mdelete; + toggle: boolean = false; + maindata; + showdata; + constructor(private mainservice: UsermaintanceService, + private _fb: FormBuilder, + private toastr: ToastrService, + private route: ActivatedRoute, + private usergrpservice: UsergrpmaintainceService, + private menuGroupService: MenuGroupService, + private menuservice: MenumaintanceService,) { } + + ngOnInit(): void { + this.showdata = this.menuGroupService.getdata(); + console.log(this.showdata); + this.mcreate = this.showdata.mcreate; + console.log(this.mcreate); + this.mdelete = this.showdata.mdelete + console.log(this.mdelete); + this.medit = this.showdata.medit + console.log(this.medit); + this.dropddowngetdata(); + // this.getall(); + this.getbyuseriddata(); + + this.entryForm = this._fb.group({ + grpid: this.usergrpid, + gmenuid: this.menuselectid, + }); + + } + dropddowngetdata() { + this.usergrpservice.getAll().subscribe((data) => { + console.log(data); + this.givendata = data; + }); + } + getdata() { + this.menuservice.getByCurrentUserMenuGroupId1().subscribe(resp => { + this.menus = resp; + console.log('menus: ', this.menus); + }) + } + getall() { + this.usergrpservice.getall().subscribe((data) => { + this.secmenuaccessdata = data + console.log(data); + }) + } + idofselected(val) { + console.log(val); + this.usergrpid = val; + + } + idselected(val) { + console.log(val) + this.menuselectid = val; + } + getbyuseriddata() { + this.usergrpservice.getbyusergrpid(this.usergrpid).subscribe((data) => { + this.alldata = data; + console.log(this.alldata); + if (this.alldata.array?.length === 0) { + this.msg = 'No Data Availabel' + } + for (this.alldata; this.alldata >= 100; this.alldata++) { + this.maindata = this.alldata.menuId === 0 + console.log(this.maindata) + } + + // console.log(this.menudata) + }, + (error) => { + console.log('Error in adding data...', error); + if (error) { + this.error = "No data Available" + } + }); + } + modaladd() { + this.modalAdd = true; + this.getdata(); + } + onSubmit() { + this.modalAdd = false; + this.entryForm.value.grpid = this.usergrpid; + this.entryForm.value.gmenuid = this.menuselectid; + console.log(this.entryForm.value); + this.menuservice.create2(this.entryForm.value).subscribe((data) => { + console.log(data); + if (data) { + this.toastr.success('Added successfully'); + } + this.ngOnInit(); + + }, + (error) => { + console.log('Error in adding data...', error); + if (error.status == 400) { + this.toastr.error(error.error); + + } else if (error) { + this.toastr.error('Not added Data Getting Some Error'); + } + this.ngOnInit(); + }); + + } + modalEdit(row) { + this.rowSelected = row; + console.log(this.rowSelected); + this.modaledit = true; + } + modalDelete(row) { + this.rowSelected = row; + console.log(this.rowSelected) + this.modaldelete = true; + } + delete(id, usrgrp) { + this.modaldelete = false; + this.usergrpservice.delete(id, usrgrp).subscribe((data) => { + console.log(data); + if (data) { + this.toastr.success('Deleted successfully'); + } + this.ngOnInit(); + }, (error) => { + console.log('Error in adding data...', error); + if (error) { + this.toastr.error('Not Deleted Data Getting Some Error'); + } + this.ngOnInit(); + }); + } + modaldeletemainmenu(row) { + this.rowSelected = row; + console.log(this.rowSelected) + this.modaldelete1 = true; + } + delete1(id, usrgrp) { + this.modaldelete1 = false; + this.usergrpservice.deletemain(id, usrgrp).subscribe((data) => { + console.log(data); + if (data) { + this.toastr.success('Deleted successfully'); + } + this.ngOnInit(); + }, (error) => { + console.log('Error in adding data...', error); + if (error) { + this.toastr.error('Not Deleted Data Getting Some Error'); + } + this.ngOnInit(); + }); + } + onUpdate(id: any, usrgrp: any) { + this.modaledit = false; + console.log(id, usrgrp); + this.menuservice.update2(id, usrgrp, this.rowSelected).subscribe((data) => { + console.log(data); + if (data) { + this.toastr.success('Updated successfully'); + } + this.ngOnInit(); + }, (error) => { + console.log('Error in adding data...', error); + if (error) { + this.toastr.error('Not Updated Data Getting Some Error'); + } + this.ngOnInit(); + }); + } + onChecked(value) { + if (value == "y") { + this.selected = "y" + console.log(this.selected); // make a call for checked + } + else { + this.selected = "n"// make a call for unchecked + } + } + changedelete(val) { + console.log(val); + val = this.colvalue = val; + console.log(val); + } + data: {}; + Sync(id: any, row) { + this.rowSelected = row; + console.log(id); + if (this.rowSelected.subMenus != 0) { + this.rowSelected.subMenus = [] + } console.log(this.rowSelected); + this.menuservice.sink(id, this.rowSelected).subscribe((data) => { + console.log(data); + if (data) { + this.toastr.success('SYNC successfully'); + } + this.ngOnInit(); + }, (error) => { + console.log(error); + if (error) { + this.toastr.error('Not SYNC Data Getting Some Error'); + } + this.ngOnInit(); + }) + } + toggleCheckbox() { + this.toggle = !this.toggle; + //this.dataService.setDivToggler(this.toggler); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menumaintance/menumaintance.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menumaintance/menumaintance.component.html new file mode 100644 index 0000000..7025f45 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menumaintance/menumaintance.component.html @@ -0,0 +1,441 @@ + + + + + +
    +
    +

    {{ 'MENU_MAINTENANCE' | translate }}

    + {{ 'MAIN_MENU' | translate }}
    + +
    + +
    +
    + + +
    + + + + + +
    +
    + + + {{'LOADING'|translate}} ... +
    {{error}}
    + + + + + + + {{'NO' | translate}} + + + + + + {{'MENU_ITEM_NAME' | translate}} + + + + + + {{'ID' | translate}} + + + + + + {{'SEQUENCE' | translate}} + + + + + + {{'MODULE_NAME' | translate}} + + + + + + {{'MENU_ACTION_LINK' | translate}} + + + + + + {{'STATUS' | translate}} + + + + + + {{'SUB_MENU' | translate}} + + + + + + + {{'ACTION' | translate}} + + + + + + + + + {{i+1}} + {{user.menuItemDesc}} + {{user.menuId}} + {{user.itemSeq}} + {{user.moduleName}} + {{user.main_menu_action_name}} + {{user.status}} + + + + + + +
    {{'WHO_COLUMN'|translate}}
    +
    {{'ACCOUNT_ID'|translate}} {{user.accountId}}
    +
    {{'CREATED_AT'|translate}} {{user.createdAt| date}}
    +
    {{'CREATED_BY'|translate}} {{user.createdBy}}
    +
    {{'UPDATED_AT'|translate}} {{user.updatedAt | date}}
    +
    {{'UPDATED_BY'|translate}} {{user.updatedBy}}
    +
    +
    +
    + + + + + + + + +
    Menu Name: {{user.menuItemDesc}}
    +
    +
    + + + + Users per page + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} + of {{pagination.totalItems}} users + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menumaintance/menumaintance.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menumaintance/menumaintance.component.scss new file mode 100644 index 0000000..ab11a3c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menumaintance/menumaintance.component.scss @@ -0,0 +1,62 @@ +input[type=text],[type=date],[type=password] { + width: 100%; + padding: 15px 20px; + // margin: 3px 0; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} +.required-field{ + color: red; +font-size: 18px; + +} +.green{ + background-color: rgb(156, 231, 156); + color: black; +} +.blue{ + background-color: #57abcf;//rgb(82, 87, 161); + color: black; +} +input.ng-invalid.ng-touched { + border-color: red; +} + +.error_mess { + color: red; +} +.td-title { + text-align: center; + width: 150px; +color: white; + font-weight: bold; + background-color: rgba(63, 122, 231, 0.863); + //color: rgb(24, 13, 13); +} +th{ + //background-color:rgb(170, 169, 169); + font-weight: bold; +} +.td-content{ + text-align: left; +} +.delete,.heading{ + text-align: center; + color: red; +} +.section p { +background-color: rgb(206, 201, 201); + padding: 10px; + font-size: 18px; +} + +select{ + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; +} + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menumaintance/menumaintance.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menumaintance/menumaintance.component.spec.ts new file mode 100644 index 0000000..4024471 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menumaintance/menumaintance.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MenumaintanceComponent } from './menumaintance.component'; + +describe('MenumaintanceComponent', () => { + let component: MenumaintanceComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ MenumaintanceComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(MenumaintanceComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menumaintance/menumaintance.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menumaintance/menumaintance.component.ts new file mode 100644 index 0000000..af0657f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/menumaintance/menumaintance.component.ts @@ -0,0 +1,216 @@ +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { ToastrService } from 'ngx-toastr'; +import { MenumaintanceService } from '../../../../services/admin/menumaintance.service'; +import { Rn_Main_Menu } from '../../../../models/builder/Rn_Main_Menu'; +import { ActivatedRoute, Router } from '@angular/router'; +import { MenuGroupService } from 'src/app/services/admin/menu-group.service'; +import { CsvService } from 'src/app/services/csv.service'; +import { ExcelService } from 'src/app/services/excel.service'; +import * as moment from 'moment'; +import { TranslateService } from '@ngx-translate/core'; +@Component({ + selector: 'app-menumaintance', + templateUrl: './menumaintance.component.html', + styleUrls: ['./menumaintance.component.scss'] +}) +export class MenumaintanceComponent implements OnInit { + loading = false; + selected: any[] = []; + rowSelected: any = {}; + modaldelete = false; + modalAdd = false; + modaledit = false; + givendata; + menus: Rn_Main_Menu[]; + mainid = 0; + public entryForm: FormGroup; + mcreate; + mdelete; + medit; + showdata; + error; + submitted = false; + constructor(private menuservice: MenumaintanceService, + private toastr: ToastrService, + private excel: ExcelService, + private _fb: FormBuilder, + private route: ActivatedRoute, + private menuGroupService: MenuGroupService, + private csvService: CsvService, + private translate: TranslateService, + private router: Router,) { } + + ngOnInit(): void { + this.showdata = this.menuGroupService.getdata(); + console.log(this.showdata); + this.mcreate = this.showdata.mcreate; + console.log(this.mcreate); + this.mdelete = this.showdata.mdelete + console.log(this.mdelete); + this.medit = this.showdata.medit + console.log(this.medit); + + // this.menuservice.getAll().subscribe((data) => { + // console.log(data); + // this.givendata = data; + // }); + + this.entryForm = this._fb.group({ + // menuItemId:[null], + menuId: [null], + menuItemDesc: ['', [Validators.required]], + itemSeq: ['', [Validators.required, Validators.pattern(/^-?(0|[1-9]\d*)?$/)]], + moduleName: ['', [Validators.required]], + status: ['', [Validators.required]], + main_menu_action_name: ['', [Validators.required]], + main_menu_icon_name: ['', [Validators.required]] + }); + this.getdata(); + } + + switchLanguage(language: string) { + this.translate.use(language); + } + getdata() { + this.menuservice.getByCurrentUserMenuGroupId1().subscribe(resp => { + this.menus = resp; + console.log('menus: ', this.menus); + if (this.menus.length == 0) { + this.error = "No data Available"; + console.log(this.error) + } + }, (error) => { + console.log(error); + if (error) { + this.error = "Server Error"; + } + }) + } + onSubmit() { + this.submitted = true; + if (this.entryForm.invalid) { + return; + } + this.menuservice.create1(this.entryForm.value).subscribe((data) => { + console.log(data); + if (data) { + this.toastr.success('Added successfully'); + } + this.ngOnInit(); + }, + (error) => { + console.log('Error in adding data...', error); + if (error) { + this.toastr.error('Not added Data Getting Some Error'); + } + this.getdata(); + }); + this.modalAdd = false; + } + goToAdd() { + this.modalAdd = true; + } + submenu(id: any) { + this.router.navigate(["../submenu/" + id], { relativeTo: this.route }) + } + data: {}; + shrink(id: any, row) { + this.rowSelected = row; + console.log(this.rowSelected); + if (this.rowSelected.subMenus != 0) { + this.rowSelected.subMenus = [] + } console.log(this.rowSelected); + this.menuservice.sink(id, this.rowSelected).subscribe((data) => { + console.log(data); + }) + } + goToEdit(row) { + this.rowSelected = row; + console.log(row) + this.modaledit = true; + //this.router.navigate(["../edit/" + id], { relativeTo: this.route }); + } + onDelete(row) { + this.rowSelected = row; + this.modaldelete = true; + } + + delete(id) { + this.modaldelete = false; + console.log("in delete " + id); + this.menuservice.delete1(id).subscribe((data) => { + console.log(data); + this.toastr.success('Deleted successfully'); + this.ngOnInit(); + }, + (error) => { + console.log('Error in adding data...', +error); + if (error) { + this.toastr.error('Not Deleted Data Getting Some Error'); + } + }); + + } + onUpdate(id) { + this.modaledit = false; + this.menuservice.update1(id, this.rowSelected).subscribe((data) => { + console.log(data); + if (data) { + this.toastr.success('Updated successfully'); + } + this.ngOnInit(); + + }, + (error) => { + console.log('Error in adding data...', error); + if (error) { + this.toastr.error('Not updated Data Getting Some Error'); + } + this.ngOnInit(); + + }); + } + + onExport() { + this.excel.exportAsExcelFile(this.givendata, 'menumaintanance_', + moment().format('YYYYMMDD_HHmmss')) + } + + // csv + + modalCsv = false; + selectedFiles: File; + fileList; + ttype = 'menumaintenance'; + + + // Import CSV + public selectFile(event) { + this.selectedFiles = event.target.files[0]; + // this.saveCsv(); + } + + csvImport() { + console.log("import CSV"); + this.modalCsv = true; + } + saveCsv() { + this.csvService.importCsv(this.selectedFiles, this.ttype).subscribe(data => { + console.log(data); + this.fileList = data; + this.modalCsv = false; + }, + (error) => { + console.log(error); + if (error.status == 202) { + this.toastr.success(error.error.text) + } + }); + } + + downloadFiles() { + this.csvService.downloadCsvs(this.ttype); + + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/modules/modules.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/modules/modules.component.html new file mode 100644 index 0000000..c74922e --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/modules/modules.component.html @@ -0,0 +1,146 @@ + + + + + +
    +
    +

    Modules

    +
    +
    + + +
    +
    + + + + Loading ... +
    {{error}}
    + + + Modules + + + Description + + + Access Exclusive + + + + + + {{user.modules}} + {{user.description}} + {{user.access_exclusive}} + + + + + + + + + + + + + + Users per page + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} + of {{pagination.totalItems}} users + + +
    + + + + + + + + + + + + + + + + + + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/modules/modules.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/modules/modules.component.scss new file mode 100644 index 0000000..ab11a3c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/modules/modules.component.scss @@ -0,0 +1,62 @@ +input[type=text],[type=date],[type=password] { + width: 100%; + padding: 15px 20px; + // margin: 3px 0; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} +.required-field{ + color: red; +font-size: 18px; + +} +.green{ + background-color: rgb(156, 231, 156); + color: black; +} +.blue{ + background-color: #57abcf;//rgb(82, 87, 161); + color: black; +} +input.ng-invalid.ng-touched { + border-color: red; +} + +.error_mess { + color: red; +} +.td-title { + text-align: center; + width: 150px; +color: white; + font-weight: bold; + background-color: rgba(63, 122, 231, 0.863); + //color: rgb(24, 13, 13); +} +th{ + //background-color:rgb(170, 169, 169); + font-weight: bold; +} +.td-content{ + text-align: left; +} +.delete,.heading{ + text-align: center; + color: red; +} +.section p { +background-color: rgb(206, 201, 201); + padding: 10px; + font-size: 18px; +} + +select{ + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; +} + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/modules/modules.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/modules/modules.component.spec.ts new file mode 100644 index 0000000..cf10dbf --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/modules/modules.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ModulesComponent } from './modules.component'; + +describe('ModulesComponent', () => { + let component: ModulesComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ModulesComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ModulesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/modules/modules.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/modules/modules.component.ts new file mode 100644 index 0000000..b681676 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/modules/modules.component.ts @@ -0,0 +1,121 @@ +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { ToastrService } from 'ngx-toastr'; +import { AccesstypeService } from 'src/app/services/admin/accesstype.service'; + +@Component({ + selector: 'app-modules', + templateUrl: './modules.component.html', + styleUrls: ['./modules.component.scss'] +}) +export class ModulesComponent implements OnInit { + loading = false; + selected: any[] = []; + rowSelected: any = {}; + modaldelete = false; + modalAdd = false; + modaledit = false; + error; + data; + submitted = false; + public entryForm: FormGroup; + constructor(private _fb: FormBuilder, private accesstype: AccesstypeService, + private toastr: ToastrService,) { } + + ngOnInit(): void { + this.entryForm = this._fb.group({ + modules: ['', [Validators.required]], + description: ['', [Validators.required]], + access_exclusive: ['', [Validators.required]], + }); + this.getdata(); + } + getdata() { + this.accesstype.getAll1().subscribe(resp => { + this.data = resp; + console.log('menus: ', this.data); + if (this.data.length == 0) { + this.error = "No data Available"; + console.log(this.error) + } + }, (error) => { + console.log(error); + if (error) { + this.error = "Server Error"; + } + }) + } + goToAdd() { + this.modalAdd = true; + } + onSubmit() { + console.log(this.entryForm.value); + this.submitted = true; + if (this.entryForm.invalid) { + return; + } + this.accesstype.create1(this.entryForm.value).subscribe((data) => { + console.log(data); + if (data) { + this.toastr.success('Added successfully'); + } + this.ngOnInit(); + }, + (error) => { + console.log('Error in adding data...', error); + if (error) { + this.toastr.error('Not added Data Getting Some Error'); + } + this.ngOnInit(); + + }); + this.modalAdd = false; + } + goToEdit(row) { + this.rowSelected = row; + console.log(row) + this.modaledit = true; + //this.router.navigate(["../edit/" + id], { relativeTo: this.route }); + } + onDelete(row) { + this.rowSelected = row; + this.modaldelete = true; + } + + delete(id) { + this.modaldelete = false; + console.log("in delete " + id); + this.accesstype.delete1(id).subscribe((data) => { + console.log(data); + if (data) { + this.toastr.success('Deleted successfully'); + } + this.ngOnInit(); + }, + (error) => { + console.log('Error in adding data...', error); + if (error) { + this.toastr.error('Not Deleted Data Getting Some Error'); + } + this.ngOnInit(); + }); + + } + onUpdate(id) { + this.modaledit = false; + this.accesstype.update1(id, this.rowSelected).subscribe((data) => { + console.log(data); + if (data) { + this.toastr.success('Updated successfully'); + } + this.ngOnInit(); + }, + (error) => { + console.log('Error in adding data...', error); + if (error) { + this.toastr.error('Not updated Data Getting Some Error'); + } + this.ngOnInit(); + }); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/myworkspace/myworkspace.component.css b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/myworkspace/myworkspace.component.css new file mode 100644 index 0000000..8f4c16f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/myworkspace/myworkspace.component.css @@ -0,0 +1,85 @@ +.s-info-bar { + display: flex; + flex-direction: row; + justify-content: space-between; +} +.s-info-bar button { + outline: none; +} + +.delete, .heading { + text-align: center; + color: red; +} + +.entry-pg { + width: 750px; +} + +.button1::after { + content: none; +} + +.button1:hover::after { + content: "ADD ROWS"; +} + +.section { + background-color: #dddddd; + height: 40px; +} + +.section p { + padding: 10px; + font-size: 18px; +} + +.clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; +} + +.clr-file { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; +} + +.center { + text-align: center; +} + +select { + width: 100%; + margin-top: 3px; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; +} + +input[type=text], [type=date], [type=number], textarea { + width: 100%; + padding: 15px 15px; + background-color: rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} + +.error_mess { + color: red; +} + +.required-field { + color: red; + font-size: 18px; +}/*# sourceMappingURL=myworkspace.component.css.map */ \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/myworkspace/myworkspace.component.css.map b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/myworkspace/myworkspace.component.css.map new file mode 100644 index 0000000..768da17 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/myworkspace/myworkspace.component.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["myworkspace.component.scss","myworkspace.component.css"],"names":[],"mappings":"AAWA;EACE,aAAA;EACA,mBAAA;EACA,8BAAA;ACVF;ADWE;EACE,aAAA;ACTJ;;ADYA;EACE,kBAAA;EACA,UAAA;ACTF;;ADWA;EACE,YAAA;ACRF;;ADWA;EACE,aAAA;ACRF;;ADUA;EACE,mBAAA;ACPF;;ADUA;EACE,yBAAA;EACA,YAAA;ACPF;;ADUA;EAEE,aAAA;EACA,eAAA;ACRF;;ADWA;EACE,cAAA;EACA,yBAAA;EACA,sBAAA;EACA,wBAAA;EACA,eAAA;EACA,WAAA;EACA,mBAAA;ACRF;;ADWA;EACE,cAAA;EACA,yBAAA;EACA,sBAAA;EAEA,eAAA;EACA,WAAA;EACA,mBAAA;ACTF;;ADYA;EACE,kBAAA;ACTF;;ADWA;EACE,WAAA;EACA,eAAA;EACA,gBAAA;EACA,sBAAA;EACA,kBAAA;ACRF;;ADUA;EACE,WAAA;EACA,kBAAA;EACA,oCAAA;EAEA,qBAAA;EACA,sBAAA;EACA,kBAAA;EACA,sBAAA;ACRF;;ADUA;EACE,UAAA;ACPF;;ADUA;EACE,UAAA;EACF,eAAA;ACPA","file":"myworkspace.component.css"} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/myworkspace/myworkspace.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/myworkspace/myworkspace.component.html new file mode 100644 index 0000000..c39b264 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/myworkspace/myworkspace.component.html @@ -0,0 +1,309 @@ +
    +

    Organization and Workspaces

    +
    + +
    + + + + + + + + + + + + + + + switch + +
    Organization: {{ sys_account.companyName }}
    Account Id: {{ sys_account.gstNumber }}
    Selected Workspace: {{sys_account.workspace }}
    + +
    + + + + + + + + Loading ... + + + No + + + Name + + + Account Type + + + Status + + + Actions + + + {{i+1}} + + {{user.fullName}}
    {{user.username}}{{user.email}}
    + + + {{user.status}} + +
    + + + + Users per page + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} + of {{pagination.totalItems}} users + + +
    +
    +
    + + + + + + Loading ... + + + No + + + Name + + + Account Type + + + Status + + + Access Till + + + Actions + + + {{i+1}} + + {{user.fullName}}
    {{user.username}}{{user.email}}
    + {{user.roles[0].description}} + {{user.status}} + {{user.access_duration}} + + +
    + + + + Users per page + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} + of {{pagination.totalItems}} users + + +
    +
    +
    + + + + + + Loading ... + + + No + + + Team Name + + + Owner + + + Count + + + Members + + + + {{i+1}} + {{user.name}} + {{user.owner_id}} + 3 +
    + +
    +
    + +
    + + + + Users per page + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} + of {{pagination.totalItems}} users + + +
    +
    +
    + +
    + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/myworkspace/myworkspace.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/myworkspace/myworkspace.component.scss new file mode 100644 index 0000000..9568abf --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/myworkspace/myworkspace.component.scss @@ -0,0 +1,94 @@ +// input[type=text],[type=date], select,textarea { +// width: 100%; +// padding: 12px 20px; +// margin: 8px 0; +// display: inline-block; +// border: 1px solid #ccc; +// border-radius: 4px; +// box-sizing: border-box; +// } + +//@import "../../../../assets/scss/var"; +.s-info-bar { + display: flex; + flex-direction: row; + justify-content: space-between; + button { + outline: none; + } +} +.delete,.heading{ + text-align: center; + color: red; +} +.entry-pg { + width: 750px; +} + +.button1::after { + content: none; +} +.button1:hover::after { + content: "ADD ROWS"; +} + +.section { + background-color: #dddddd; + height: 40px; +} + +.section p { + //color: white; + padding: 10px; + font-size: 18px; +} + +.clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; +} + +.clr-file { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + //padding: 0.6rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; +} + +.center { + text-align: center; +} +select{ + width: 100%; + margin-top: 3px; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; +} +input[type=text],[type=date],[type=number],textarea { + width: 100%; + padding: 15px 15px; + background-color:rgb(255, 255, 255); + // margin: 8px 0; + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} +.error_mess { + color: red; +} + +.required-field{ + color: red; +font-size: 18px; + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/myworkspace/myworkspace.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/myworkspace/myworkspace.component.spec.ts new file mode 100644 index 0000000..46b827c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/myworkspace/myworkspace.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MyworkspaceComponent } from './myworkspace.component'; + +describe('MyworkspaceComponent', () => { + let component: MyworkspaceComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ MyworkspaceComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(MyworkspaceComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/myworkspace/myworkspace.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/myworkspace/myworkspace.component.ts new file mode 100644 index 0000000..283c78d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/myworkspace/myworkspace.component.ts @@ -0,0 +1,206 @@ +import { Component, OnInit } from '@angular/core'; +import { ActivatedRoute, Router } from '@angular/router'; +import { UserProfileService } from 'src/app/services/admin/user-profile.service'; +import { UserInfoService } from 'src/app/services/user-info.service'; +import { Sys_Account } from 'src/app/services/admin/user-registration.service'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { ToastrService } from 'ngx-toastr'; +import { MyworkspaceService } from './myworkspace.service'; +@Component({ + selector: 'app-myworkspace', + templateUrl: './myworkspace.component.html', + styleUrls: ['./myworkspace.component.scss'] +}) +export class MyworkspaceComponent implements OnInit { + loading = false; + selected: any[] = []; + sys_account: Sys_Account; + + userEmail: string; + companyName: string; + workspace: string; + gstNumber: string; + modalteam = false; + modaluser = false; + modalguest = false; + allworkmodal = false; + allworkspacedata; + alluser; + allguest; + allwdata; + public teamForm: FormGroup; + public userForm: FormGroup; + public guestForm: FormGroup; + public entryForm: FormGroup; + constructor(private router: Router, + private route: ActivatedRoute, + private userProfileService: UserProfileService, + private userInfoService: UserInfoService, + private _fb: FormBuilder, + private toastr: ToastrService, + private mywork: MyworkspaceService) { } + + ngOnInit(): void { + //addteam + this.teamForm = this._fb.group({ + name: [null, [Validators.required]], + }); + //add user + this.userForm = this._fb.group({ + email: [null, [Validators.required, Validators.pattern("[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$")]], + }); + //add guest + this.guestForm = this._fb.group({ + email: [null, [Validators.required, Validators.pattern("[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$")]], + access_duration: [null, [Validators.required]], + }) + this.getUserAccount(); + this.getUserRoles(); + this.getallmyworkspace(); + this.getalluser(); + this.getallguest(); + } + getUserAccount() { + this.userProfileService.getUserAccountDetails().subscribe(resp => { + this.sys_account = resp; + console.log("array", this.sys_account); + }, err => { console.log(err); } + ) + } + + + addUsers() { + this.modaluser = true; + //this.router.navigate(["../users"], { relativeTo: this.route }); + } + manage(id: any) { + this.router.navigate(["../manageteam/" + id], { relativeTo: this.route }); + } + goToResetPassword() { + this.router.navigate(["../passwordreset"], { relativeTo: this.route }); + } + + roles: string[] + role: string; + getUserRoles() { + const role = this.userInfoService.getRoles(); + console.log('roles = ', role); + + // if(role !== null) { + // this.roles = role.split(','); + // } + this.role = role; + console.log(this.role); + } + + isAdmin(): boolean { + const role: string = this.userInfoService.getRoles(); + if (role.includes('ADMIN')) { + return true; + } + return false; + } + addteam() { + this.modalteam = true; + } + addguest() { + this.modalguest = true; + } + getalluser() { + this.mywork.getalluser().subscribe((data) => { + this.alluser = data; + console.log(this.alluser); + }) + } + getallguest() { + this.mywork.getallguest().subscribe((data) => { + this.allguest = data; + console.log(this.allguest); + }) + } + getallmyworkspace() { + this.mywork.getall().subscribe((data) => { + this.allworkspacedata = data; + console.log(this.allworkspacedata); + }) + } + + onCreateuser() { + let email = this.userForm.value.email; + console.log(email); + this.mywork.adduser(this.userForm.value.email).subscribe((data) => { + this.mywork.storeEmail(email); + console.log(data); + if (data) { + this.toastr.success('Email Send successfully'); + } + this.getalluser(); + }, (error) => { + console.log(error); + if (error.status >= 200 && error.status <= 299) { + this.toastr.success(error.error.text); + } + if (error.status >= 400 && error.status <= 499) { + this.toastr.error(error.error.message); + } + if (error.status >= 500 && error.status <= 599) { + this.toastr.error("Server Error"); + } + }); + this.modaluser = false; + } + + onCreateguest() { + this.mywork.addguest(this.guestForm.value.email, this.guestForm.value.access_duration).subscribe((data) => { + console.log(data); + if (data) { + this.toastr.success('Email Send successfully'); + } + this.getallguest(); + }, (error) => { + console.log(error); + if (error.status >= 200 && error.status <= 299) { + this.toastr.success(error.error.text); + } + if (error.status >= 400 && error.status <= 499) { + this.toastr.error(error.error.message); + } + if (error.status >= 500 && error.status <= 599) { + this.toastr.error("Server Error"); + } + }) + this.modalguest = false; + } + oncreateteam() { + this.modalteam = false; + this.mywork.addteam(this.teamForm.value).subscribe((data) => { + console.log(data); + if (data) { + this.toastr.success('Team Added successfully'); + } + this.getallmyworkspace(); + }, (error) => { + console.log('Error in adding data...', error); + if (error) { + this.toastr.error('Not added Getting Some Error'); + } + }) + } + allworksapce() { + this.allworkmodal = true; + this.mywork.getallworkspace().subscribe((data) => { + this.allwdata = data; + console.log(data); + }) + } + + copyInputMessage(inputElement) { + inputElement.select(); + document.execCommand('copy'); + inputElement.setSelectionRange(0, 0); + + if (inputElement.setSelectionRange) { + this.toastr.success("Link Copy Succesfully"); + } + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/myworkspace/myworkspace.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/myworkspace/myworkspace.service.ts new file mode 100644 index 0000000..ae0913b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/myworkspace/myworkspace.service.ts @@ -0,0 +1,115 @@ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpParams } from '@angular/common/http'; + +import { Observable } from 'rxjs'; +import { ApiRequestService } from 'src/app/services/api/api-request.service'; +import baseUrl from 'src/app/services/api/helper'; + +@Injectable({ + providedIn: 'root' +}) +export class MyworkspaceService { + public localStorage: Storage = localStorage; + constructor(private _http: HttpClient,private apiRequest: ApiRequestService) { } + public add(r: any){ + return this._http.post(`${baseUrl}/api/menu-register`, r); + } + + public getall(){ + return this._http.get(`${baseUrl}/Workspace_team/SecTeam/AccountId`); + } + public getalluser(){ + return this._http.get(`${baseUrl}/User_workSpace/GetAllUser`); + } + public getallguest(){ + return this._http.get(`${baseUrl}/User_workSpace/GetAllGuest`); + } + public adduser(email:any){ + let params: HttpParams = new HttpParams(); + params = params.append("email", email); + return this._http.post(`${baseUrl}/api/userviaadmin`,params); + } + storeEmail(email: string) { + this.localStorage.setItem("registeredEmail", email); + } + //Store userinfo from session storage + + //Get email from session storage ( WILL REMOVE AFTER REGISTER) + getStoredEmail(): string | null { + try { + let email: string = this.localStorage.getItem( + "registeredEmail" + ); + if (email) { + return email; + } else { + return null; + } + } catch (e) { + return null; + } + } + adduserdetails(data:any,token:any):Observable{ + return this._http.post(`${baseUrl}/api/admin/adduser/${token}`,data); + } + + addguest(email:any,duration:any){ + let params: HttpParams = new HttpParams(); + params = params.append("email", email); + params=params.append("access_duration",duration) + return this._http.post(`${baseUrl}/api/guest_via_admin`,params); + } + + addguestdetails(data:any,token:any):Observable{ + return this._http.post(`${baseUrl}/api/admin/addguest/${token}`,data); + } + addteam(data:any){ + return this._http.post(`${baseUrl}/Workspace_team/SecTeam`,data); + } + public getallteammeme(id:any){ + return this._http.get(`${baseUrl}/User_workSpace/GetAllMember/${id}`); + } + getallusertosameaccid(){ + return this._http.get(`${baseUrl}/User_workSpace/GetAll/AccountId`); + } + addteammem(id:any,user_id:any,data:any){ + return this._http.post(`${baseUrl}/User_workSpace/add_team/${id}/${user_id}`,data); + } + getallworkspace(){ + return this._http.get(`${baseUrl}/Workspace_workspace/FindByaccount`); + } + addsecworkspaceuser(usrid:any,id:any,data:any,){ + return this._http.post(`${baseUrl}/workspace/secworkspaceuser/add_workspace/users/${usrid}/${id}`,data); + } + addsecworkteam(pid:any,tid:any,data:any){ + return this._http.post(`${baseUrl}/workspace/secworkspaceuser/addteam/${pid}/${tid}`,data); + } + getallsecworkspace(id:any):Observable{ + return this._http.get(`${baseUrl}/workspace/secworkspaceuser/get_by_projectid/${id}`); + } + // public getById(id: any){ + // return this._http.get(`${baseUrl}/api/menu-register/${id}`); + // } + + // public update(id:any, reg:any){ + // return this._http.put(`${baseUrl}/api/menu-register/${id}`, reg); + // } + + // public deleteById(id: any){ + // return this._http.delete(`${baseUrl}/api/menu-register/${id}`); + // } + + + +////////////////////project users + +addprojectuser(userId: any, projectId: any, duration: any, role: string):Observable { + const params = new HttpParams().set('role', role); + return this._http.post(`${baseUrl}/workspace/secworkspaceuser/add_workspace/users/${userId}/${projectId}/${duration}`, {}, { params }); +} + +///for team +public addprojectteam(projectId:any,teamId:any){ + return this._http.post(`${baseUrl}/workspace/secworkspaceuser/addteam/${projectId}/${teamId}`, {}); +} +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/password-reset/password-reset.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/password-reset/password-reset.component.html new file mode 100644 index 0000000..472d4bb --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/password-reset/password-reset.component.html @@ -0,0 +1,43 @@ +
    +
    +

    Please Reset Your Password

    +

    you're signed in as {{ email }}

    +
    + +
    +
    + + +
    +
    Password is required
    +
    +
    +
    + + +
    +
    password is required
    +
    Password must be Minimum 3 Characters
    +
    +
    +
    + + +
    +
    Password is required.
    +
    Password and Confirm Password must be match.
    +
    +
    + +
    +
    +
    +

    Wrong account? Log in instead.

    +
    +
    diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/password-reset/password-reset.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/password-reset/password-reset.component.scss new file mode 100644 index 0000000..3ee7d64 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/password-reset/password-reset.component.scss @@ -0,0 +1,83 @@ +//@import '../../../../../styles1.scss'; + + +//** variables +$background: #f5f6fa; +$text: #9c9c9c; +$input-bg-color: #fff; +$input-text-color: #a3a3a3; +$button-bg-color: #7f8ff4; +$button-text-color: #fff; +$google-button-bg-color: #7f8ff4; +$linkedin-button-bg-color: #4b76eb; + +//** root +:root { + background: $background; + color: $text; + font: 1rem "PT Sans", sans-serif; +} + +//** helper +.display_msg { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} + +.form { + /* margin-left: auto; + margin-right: auto; */ + &__field { + // width: 360px; + // //background: #fff; + // color: $input-text-color; + // font: inherit; + // //box-shadow: 0 6px 10px 0 rgba(0, 0, 0 , .1); + // border: 1 solid rgb(235, 230, 230); + // background-color:rgb(255, 255, 255); + // display: inline-block; + // border-radius: 4px; + // box-sizing: border-box; + // //outline: 0; + // padding: 6px 9px; + width: 360px; + padding: 9px 11px; + // margin: 3px 0; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; + } +} + +.btn { + display: inline-block; + background: transparent; + color: inherit; + font: inherit; + border: 0; + outline: 0; + padding: 0; + transition: all 200ms ease-in; + cursor: pointer; + + &--primary { + background: $button-bg-color; + color: $button-text-color; + box-shadow: 0 0 10px 2px rgba(0, 0, 0, .1); + border-radius: 2px; + width: 100%; + + &:hover { + background: darken($button-bg-color, 4%); + } + + &:active { + background: $button-bg-color; + box-shadow: inset 0 0 10px 2px rgba(0, 0, 0, .2); + } + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/password-reset/password-reset.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/password-reset/password-reset.component.spec.ts new file mode 100644 index 0000000..e6bd9ac --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/password-reset/password-reset.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PasswordResetComponent } from './password-reset.component'; + +describe('PasswordResetComponent', () => { + let component: PasswordResetComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ PasswordResetComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(PasswordResetComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/password-reset/password-reset.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/password-reset/password-reset.component.ts new file mode 100644 index 0000000..d17961f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/password-reset/password-reset.component.ts @@ -0,0 +1,109 @@ +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import { UserRegistrationService } from 'src/app/services/admin/user-registration.service'; +import { UserInfoService } from 'src/app/services/user-info.service'; + +export interface ResetPasswordRequest { + oldPassword: string; + newPassword: string; +} +@Component({ + selector: 'app-password-reset', + templateUrl: './password-reset.component.html', + styleUrls: ['./password-reset.component.scss'] +}) +export class PasswordResetComponent implements OnInit { + + emailErrMsg: string = "" + oldpHide: boolean = true; + oldIcon: string = "eye"; + oldShapeChanger() { + this.oldpHide = !this.oldpHide; + if(this.oldpHide){ + this.oldIcon = 'eye' + } else { + this.oldIcon = 'eye-hide' + } + } + newpHide: boolean = true; + newIcon: string = "eye"; + newShapeChanger() { + this.newpHide = !this.newpHide; + if(this.newpHide){ + this.newIcon = 'eye' + } else { + this.newIcon = 'eye-hide' + } + } + cpHide: boolean = true; + conIcon: string = "eye"; + comfShapeChanger() { + this.cpHide = !this.cpHide; + if(this.cpHide){ + this.conIcon = 'eye' + } else { + this.conIcon = 'eye-hide' + } + } + + constructor( private _fb: FormBuilder, + private router: Router, + private route: ActivatedRoute, + private userRegistrationService: UserRegistrationService, + private userInfoService: UserInfoService) { } + + email: string; + resetPasswordForm: FormGroup; +userid; + ngOnInit(): void { + this.email = this.userInfoService.getEmail(); + this.userid=this.userInfoService.getUserId(); + console.log(this.userid); + + this.resetPasswordForm = this._fb.group({ + userId:this.userid, + oldPassword: ['', Validators.required], + newPassword: ['', [Validators.required, Validators.minLength(3)]], + confirmPassword: ['', [Validators.required]] + }, { + validator: ConfirmedValidator('newPassword', 'confirmPassword') + }); + } + get f() { return this.resetPasswordForm.controls; } + + submitted = false; + onSubmit() { + console.log('this.resetPasswordForm.value : ', this.resetPasswordForm.value); + this.submitted = true; + if(this.resetPasswordForm.invalid){ + return; + } + this.resetPassword(); + } + + resetPassword() { + this.userRegistrationService.resetPassword(this.resetPasswordForm.value) + .subscribe((res) => { + console.log('success ', res); + this.router.navigate(["../user-account"], { relativeTo: this.route }); + },(err) => { + console.log('failure ', err); + }); + } +} + +export function ConfirmedValidator(controlName: string, matchingControlName: string){ + return (formGroup: FormGroup) => { + const control = formGroup.controls[controlName]; + const matchingControl = formGroup.controls[matchingControlName]; + if (matchingControl.errors && !matchingControl.errors.confirmedValidator) { + return; + } + if (control.value !== matchingControl.value) { + matchingControl.setErrors({ confirmedValidator: true }); + } else { + matchingControl.setErrors(null); + } + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/profile-setting/profile-setting.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/profile-setting/profile-setting.component.html new file mode 100644 index 0000000..37105ea --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/profile-setting/profile-setting.component.html @@ -0,0 +1,266 @@ + +
    + + + + + + +
    +

    My Profile Settings

    + +
    + Avatar +
    + + Avatar + +
    {{ message }}
    + + + + + + + +
    + +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    +
    + + +
    +
    + + +
    +
    +
    +
    + + + + +
    +
    + +
    + +
    +
    + +
    + +
    + + +
    + + + +
    Password: Change Password for your account Change password
    +
    +
    + + +
    + + +
    + + +
    Security: Logout of all sessions except this current browser Logout other + sessions
    +
    +
    + + +
    + + +
    + + +
    Deactivation: Remove access to all organizations and workspace in cloudnsure Deactivate account
    +
    + +
    + + + + + + + + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/profile-setting/profile-setting.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/profile-setting/profile-setting.component.scss new file mode 100644 index 0000000..ec6f039 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/profile-setting/profile-setting.component.scss @@ -0,0 +1,10 @@ +input[type=text],[type=date],textarea,[type=number] { + width: 100%; + padding: 15px 15px; + // margin: 8px 0; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/profile-setting/profile-setting.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/profile-setting/profile-setting.component.spec.ts new file mode 100644 index 0000000..c4570be --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/profile-setting/profile-setting.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ProfileSettingComponent } from './profile-setting.component'; + +describe('ProfileSettingComponent', () => { + let component: ProfileSettingComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ProfileSettingComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ProfileSettingComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/profile-setting/profile-setting.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/profile-setting/profile-setting.component.ts new file mode 100644 index 0000000..5483ddb --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/profile-setting/profile-setting.component.ts @@ -0,0 +1,223 @@ + +import { HttpClient, HttpEventType } from '@angular/common/http'; +import { Component, OnInit, ViewChild, ViewEncapsulation } from '@angular/core'; +import { ActivatedRoute, Router } from '@angular/router'; +import { UserProfile, UserProfileService } from '../../../../services/admin/user-profile.service'; +import { DomSanitizer } from '@angular/platform-browser'; +import { AlertService } from '../../../../services/alert.service'; +import { ToastrService } from 'ngx-toastr'; +import { Dimensions, ImageCroppedEvent, ImageTransform } from 'ngx-image-cropper'; +//import { ImageCroppedEvent } from '../image-cropper/interfaces/image-cropped-event.interface'; +//import { ImageCropperComponent } from '../image-cropper/component/image-cropper/image-cropper.component'; +@Component({ + selector: 'app-profile-setting', + templateUrl: './profile-setting.component.html', + styleUrls: ['./profile-setting.component.scss'] +}) +export class ProfileSettingComponent implements OnInit { + updated = false; + userProfile: UserProfile; + roles = ['user', 'admin', 'mis report', 'bi report']; + transform: ImageTransform = {}; + model=false; + constructor( + private router: Router, + private route: ActivatedRoute, + private userProfileService: UserProfileService, + private http: HttpClient, + private alertService: AlertService, + private _sanitizer: DomSanitizer, + private toastr: ToastrService, + ) { } + + ngOnInit(): void { + + this.getUserProfile(); + this.getProfilePic(); + } + getUserProfile() { + this.userProfileService.getUserProfile().subscribe(res => { + console.log(res); + this.userProfile = res; + }) + } + + update() { + this.userProfileService.updateUserProfile(this.userProfile).subscribe( + (resp) => { + console.log(resp); + //this.router.navigate(["../../all"], { relativeTo: this.route }); + }, + (error) => { + console.log(error); + } + ); + //this.picUpload(); + } + + public profilePic: File = null; + onSelectFile(event) { + let flag = 0; + const mimeType = event.target.files[0].type; + if(mimeType.match(/image\/*/) === null ){ + this.message = 'Only Image Type Is Supported'; + flag = flag + 1; + return; + } + const size = event.target.files[0].size; + if(size > 5000000) { + flag = flag + 1; + this.message = 'Plese Select image file under 2 MB'; + return; + } + console.log('flag value = ', flag); + if(flag === 0) { + this.profilePic = event.target.files[0]; + console.log(this.profilePic); + const reader = new FileReader(); + this.image = this.profilePic; + reader.readAsDataURL(this.profilePic); + reader.onload = (_event) => { + this.image = reader.result; + } + this.picUpload(); + } + + } + + message: string; + picUpload() { + this.userProfileService.uploadUserProfilePic(this.profilePic).subscribe(res => { + console.log(res); + if(res.type === HttpEventType.UploadProgress){ + console.log('Upload Progress : ', + Math.round(res.loaded / res.total * 100) + '%'); + } else if(res.type === HttpEventType.Response) { + if (res.status === 200) { + this.alertService.success('Image uploaded successfully'); + //this.message = 'Image uploaded successfully'; + } else { + this.message = 'Image not uploaded'; + } + } + }, err => {console.log(err); + }); + } + image: any; + getProfilePic() { + this.userProfileService.getProfilePic().subscribe(res => { + console.log(res); + this.image = this._sanitizer.bypassSecurityTrustResourceUrl(res.image); + }, err => {console.log(err);} + ); + } + + /*picUpload() { + const uploadImageData = new FormData(); + uploadImageData.append('imageFile', this.profilePic, this.profilePic.name); + this.http.post('http://localhost:9119/api/upload', uploadImageData, { observe: 'response' }) + .subscribe((res) => { + console.log(res); + if (res.status === 200) { + this.message = 'Image uploaded successfully'; + } else { + this.message = 'Image not uploaded successfully'; + } + } + ); + }*/ + + + onSubmit() { + this.updated = true; + this.update(); + } + imageChangedEvent: any = ''; + croppedImage: any = ''; + canvasRotation = 0; + rotation = 0; + scale = 1; + showCropper = false; + containWithinAspectRatio = false; + fileChangeEvent(event: any): void { + this.imageChangedEvent = event; + } + imageCropped(event: ImageCroppedEvent) { + this.croppedImage = event.base64; + this.profilePic=this.croppedImage; + + } + imageLoaded() { + this.showCropper = true; + console.log('Image loaded'); + } + + cropperReady(sourceImageDimensions: Dimensions) { + console.log('Cropper ready', sourceImageDimensions); + } + loadImageFailed() { + // show message + } + rotateLeft() { + this.canvasRotation--; + this.flipAfterRotate(); + } + + rotateRight() { + this.canvasRotation++; + this.flipAfterRotate(); + } + + private flipAfterRotate() { + const flippedH = this.transform.flipH; + const flippedV = this.transform.flipV; + this.transform = { + ...this.transform, + flipH: flippedV, + flipV: flippedH + }; + } + + + flipHorizontal() { + this.transform = { + ...this.transform, + flipH: !this.transform.flipH + }; + } + + flipVertical() { + this.transform = { + ...this.transform, + flipV: !this.transform.flipV + }; + } + zoomOut() { + this.scale -= .1; + this.transform = { + ...this.transform, + scale: this.scale + }; +} + +zoomIn() { + this.scale += .1; + this.transform = { + ...this.transform, + scale: this.scale + }; +} + +toggleContainWithinAspectRatio() { + this.containWithinAspectRatio = !this.containWithinAspectRatio; +} + +updateRotation() { + this.transform = { + ...this.transform, + rotate: this.rotation + }; +} +openmodal(){ + this.model=true; +} +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/sessionlogger/sessionlogger.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/sessionlogger/sessionlogger.component.html new file mode 100644 index 0000000..c287cb4 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/sessionlogger/sessionlogger.component.html @@ -0,0 +1,99 @@ + + + + +
    +
    +
    +

    Session Logger

    +
    +
    + + + +
    +
    + + + + + + + + + Loading ... +
    {{error}}
    + + + Client Ip + + + lastAccessDate + + + Log In Time + + + Log Out Time + + + Session Id + + + User Id + + + User Name + + + + + + + + {{user.clientIp}} + {{user.lastAccessDate}} + {{user.logintime}} + {{user.logouttime}} + {{user.sessionId}} + {{user.userId.userId}} + {{user.userId.username}} + + + + + + + + + + + + + Record per page + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} + of {{pagination.totalItems}} Records + + +
    +
    + + + + + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/sessionlogger/sessionlogger.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/sessionlogger/sessionlogger.component.scss new file mode 100644 index 0000000..76ab29b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/sessionlogger/sessionlogger.component.scss @@ -0,0 +1,4 @@ +.delete,.heading{ + text-align: center; + color: red; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/sessionlogger/sessionlogger.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/sessionlogger/sessionlogger.component.spec.ts new file mode 100644 index 0000000..149e2eb --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/sessionlogger/sessionlogger.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SessionloggerComponent } from './sessionlogger.component'; + +describe('SessionloggerComponent', () => { + let component: SessionloggerComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ SessionloggerComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(SessionloggerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/sessionlogger/sessionlogger.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/sessionlogger/sessionlogger.component.ts new file mode 100644 index 0000000..4ffab36 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/sessionlogger/sessionlogger.component.ts @@ -0,0 +1,69 @@ +import { Component, OnInit } from '@angular/core'; +import { SessionloggerService } from 'src/app/services/admin/sessionlogger.service'; +import * as moment from 'moment'; +import { ExcelService } from 'src/app/services/excel.service'; +import { ToastrService } from 'ngx-toastr'; +import { HttpErrorResponse } from '@angular/common/http'; +@Component({ + selector: 'app-sessionlogger', + templateUrl: './sessionlogger.component.html', + styleUrls: ['./sessionlogger.component.scss'] +}) +export class SessionloggerComponent implements OnInit { + loading = false; + error; + data; + modaldelete=false; + rowSelected :any= {}; + constructor(private sessionservice:SessionloggerService,private excel: ExcelService, + private toastr: ToastrService,) { } + + ngOnInit(): void { + this.getdata(); + } + getdata(){ + this.sessionservice.getAll().subscribe((data)=>{ + this.data=data; + console.log(this.data); + if(this.data.length==0){ + this.error="No data Available plz add if Required"; + console.log(this.error) + } + },(error) => { + console.log(error); + if(error){ + this.error="server Error"; + } + }); + + + } + onExport(){ + this.excel.exportAsExcelFile(this.data, 'user_', + moment().format('YYYYMMDD_HHmmss')) + } + modaldel(row){ + this.rowSelected = row; + this.modaldelete=true; + console.log(this.rowSelected); + } + delete(id) + { + console.log("in delete "+id); + this.sessionservice.delete(id).subscribe( + (data) => { + console.log(data); + //this.ngOnInit(); + },(error:HttpErrorResponse) => { + console.log(error); + if(error.status==200){ + this.toastr.success(error.error.text); + } + if(error.status==404){ + this.toastr.error(error.error); + } + + }); + this.modaldelete=false; + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/submenu/submenu.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/submenu/submenu.component.html new file mode 100644 index 0000000..a685d03 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/submenu/submenu.component.html @@ -0,0 +1,250 @@ + + + + + +
    +
    +

    Sub-Menu Maintenance

    + Sub Menu
    + +
    +
    + +
    +
    + + + + + Loading ... + + + NO. + + + Sub-Menu Item Name + + + ID + + + Sequence + + + Module Name + + + Menu Action Link + + + Status + + + + {{i+1}} + {{user.menuItemDesc}} + {{user.menuId}} + {{user.itemSeq}} + {{user.moduleName}} + {{user.main_menu_action_name}} + {{user.status}} + + + + + + + + + + + + +
    Menu Name: {{user.menuItemDesc}}
    +
    +
    + + + + Users per page + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} + of {{pagination.totalItems}} users + + +
    + + + + + + + + + + + + + + + + + + + + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/submenu/submenu.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/submenu/submenu.component.scss new file mode 100644 index 0000000..aad7811 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/submenu/submenu.component.scss @@ -0,0 +1,62 @@ +input[type=text],[type=date],[type=password],[type=number] { + width: 100%; + padding: 15px 20px; + // margin: 3px 0; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} + +.required-field{ + color: red; +font-size: 18px; + +} +.green{ + background-color: rgb(156, 231, 156); + color: black; +} +.blue{ + background-color: #57abcf;//rgb(82, 87, 161); + color: black; +} +.td-title { + text-align: center; + width: 150px; +color: white; + font-weight: bold; + background-color: rgba(63, 122, 231, 0.863); + //color: rgb(24, 13, 13); +} +th{ + //background-color:rgb(170, 169, 169); + font-weight: bold; +} +.td-content{ + text-align: left; +} +.delete,.heading{ + text-align: center; + color: red; +} +.section p { +background-color: rgb(206, 201, 201); + padding: 10px; + font-size: 18px; +} + +select{ + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; +} +input.ng-invalid.ng-touched { + border-color: red; +} + +.error_mess { + color: red; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/submenu/submenu.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/submenu/submenu.component.spec.ts new file mode 100644 index 0000000..6d85802 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/submenu/submenu.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SubmenuComponent } from './submenu.component'; + +describe('SubmenuComponent', () => { + let component: SubmenuComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ SubmenuComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(SubmenuComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/submenu/submenu.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/submenu/submenu.component.ts new file mode 100644 index 0000000..5489d80 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/submenu/submenu.component.ts @@ -0,0 +1,148 @@ +import { Component, OnInit } from '@angular/core'; +import { MenumaintanceService } from '../../../../services/admin/menumaintance.service'; +import { Rn_Main_Menu } from '../../../../models/builder/Rn_Main_Menu'; +import { ActivatedRoute, Router } from '@angular/router'; +import { AbstractControl, FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { ToastrService } from 'ngx-toastr'; + + +function numberValidator(control: AbstractControl): { [key: string]: any } | null { + const value = control.value; + return isNaN(value) ? { 'notANumber': { value } } : null; +} + +@Component({ + selector: 'app-submenu', + templateUrl: './submenu.component.html', + styleUrls: ['./submenu.component.scss'] +}) +export class SubmenuComponent implements OnInit { + loading = false; + modalAdd = false; + modaledit = false; + modaldelete = false; + selected: any[] = []; + rowSelected: any = {}; + givendata; + menus: Rn_Main_Menu[]; + sub; + id; + mainid; + submitted = false; + public entryForm: FormGroup; + constructor(private menuservice: MenumaintanceService, + private toastr: ToastrService, + private _fb: FormBuilder, + private route: ActivatedRoute, + private router: Router,) { } + + ngOnInit(): void { + this.id = this.route.snapshot.params["id"]; + console.log("project mainmenu with id = ", this.id); + this.getById(this.id); + this.mainid = this.id + this.entryForm = this._fb.group({ + // menuItemId:[null], + menuId: [this.mainid], + menuItemDesc: ['', [Validators.required]], + // itemSeq:['',[Validators.required]] , + // itemSeq: ['', [Validators.required, numberValidator]], + itemSeq: ['', [Validators.required, Validators.pattern('^[0-9]*$')]], + moduleName: ['', [Validators.required]], + status: ['', [Validators.required]], + main_menu_action_name: ['', [Validators.required]] + }); + + // this.getdata(); + } + getById(id: any) { + this.menuservice.getbyid(id).subscribe((data) => { + this.sub = data; + console.log(this.sub) + }) + } + getdata() { + this.menuservice.getByCurrentUserMenuGroupId1().subscribe(resp => { + this.menus = resp; + console.log('menus: ', this.menus); + }) + } + goToAdd() { + this.modalAdd = true; + } + onSubmit() { + this.submitted = true; + if (this.entryForm.invalid) { + return; + } + this.menuservice.create1(this.entryForm.value).subscribe((data) => { + console.log(data); + if (data) { + this.toastr.success('Added successfully'); + this.ngOnInit(); + } + }, + (error) => { + console.log('Error in adding data...', error); + if (error) { + this.toastr.error('Not added Data Getting Some Error'); + } + this.ngOnInit(); + + + }); + this.modalAdd = false; + } + + goToEdit(row) { + this.rowSelected = row; + console.log(row) + this.modaledit = true; + //this.router.navigate(["../edit/" + id], { relativeTo: this.route }); + } + onDelete(row) { + this.rowSelected = row; + this.modaldelete = true; + } + + delete(id) { + this.modaldelete = false; + console.log("in delete " + id); + this.menuservice.delete1(id).subscribe((data) => { + console.log(data); + if (data) { + this.toastr.success('Deleted successfully'); + } + this.ngOnInit(); + + }, + (error) => { + console.log('Error in adding data...', error); + if (error) { + this.toastr.error('Not Deleted Data Getting Some Error'); + } + this.ngOnInit(); + + }); + + } + onUpdate(id) { + this.modaledit = false; + this.menuservice.update1(id, this.rowSelected).subscribe((data) => { + console.log(data); + if (data) { + this.toastr.success('Updated successfully'); + this.ngOnInit(); + + } + }, + (error) => { + console.log('Error in adding data...', error); + if (error) { + this.toastr.error('Not updated Data Getting Some Error'); + } + this.ngOnInit(); + + }); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/systemparameters/systemparameters.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/systemparameters/systemparameters.component.html new file mode 100644 index 0000000..bd23988 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/systemparameters/systemparameters.component.html @@ -0,0 +1,665 @@ + + + + + + + + + + +

    {{ 'editMode' | translate }}

    +
    +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + + + +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    + + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    +
    + + +
    +
    +
    +
    + +
    +
    + +
    +
    + + + +
    +
    diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/systemparameters/systemparameters.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/systemparameters/systemparameters.component.scss new file mode 100644 index 0000000..5037b31 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/systemparameters/systemparameters.component.scss @@ -0,0 +1,86 @@ +.name{ + background-color:#c5c9b0; + color: white; + font-size: 15px; +} +// input[type=text],[type=date],[type=datetime-local],textarea { +// height: 30px; +// width: 100%; +// // padding: 15px 15px; +// // //margin: 2px 0; +// // display: inline-block; +// // border: 1px solid #ccc; +// // border-radius: 4px; +// // box-sizing: border-box; +// } +clr-icon{ + margin-left: 5px; +} +.one-line { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + width: 300px; +} +input[type=text], select, textarea { + width: 100%; + padding: 5px; + border: 1px solid #ccc; + border-radius: 4px; + resize: vertical; +} + +label { + padding: 12px 12px 12px 0; + display: inline-block; +} + +input[type=submit] { + // background-color: #04AA6D; + color: white; + padding: 12px 20px; + border: none; + border-radius: 4px; + cursor: pointer; + float: right; +} + +input[type=submit]:hover { + background-color: #45a049; +} + +.container { + border-radius: 5px; + //background-color: #f2f2f2; + padding: 20px; +} + +.col-25 { + float: left; + width: 25%; + margin-top: 5px; +} + +.col-75 { + float: left; + width: 75%; + margin-top: 5px; +} + +/* Clear floats after the columns */ +.row:after { + content: ""; + display: table; + clear: both; +} + +/* Responsive layout - when the screen is less than 600px wide, make the two columns stack on top of each other instead of next to each other */ +@media screen and (max-width: 600px) { + .col-25, .col-75, input[type=submit] { + width: 100%; + margin-top: 0; + } +} +.btn{ + float: right; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/systemparameters/systemparameters.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/systemparameters/systemparameters.component.spec.ts new file mode 100644 index 0000000..6eff4ca --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/systemparameters/systemparameters.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SystemparametersComponent } from './systemparameters.component'; + +describe('SystemparametersComponent', () => { + let component: SystemparametersComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ SystemparametersComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(SystemparametersComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/systemparameters/systemparameters.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/systemparameters/systemparameters.component.ts new file mode 100644 index 0000000..107b8ba --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/systemparameters/systemparameters.component.ts @@ -0,0 +1,114 @@ +import { HttpEventType } from '@angular/common/http'; +import { Component, OnInit } from '@angular/core'; +import { AlertService } from 'src/app/services/alert.service'; +import {SysparameterService} from 'src/app/services/admin/sysparameter.service'; +import { FormBuilder, FormGroup, NG_VALUE_ACCESSOR } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import {Systemparameter} from 'src/app/models/admin/systemparameter' +import { ToastrService } from 'ngx-toastr'; + +@Component({ + selector: 'app-systemparameters', + templateUrl: './systemparameters.component.html', + styleUrls: ['./systemparameters.component.scss'], + +}) +export class SystemparametersComponent implements OnInit { + public profilePic: File = null; + message: string; + image: any; + selectedFile: File[]=[]; + public entryForm: FormGroup; + project: Systemparameter; + id=1; + constructor(private alertService: AlertService, + private sysparaservice:SysparameterService, + private _fb: FormBuilder, + private router: Router, + private route: ActivatedRoute, + private toastr: ToastrService,) { } + + ngOnInit(): void { + this.project = new Systemparameter(); + this.getById(this.id); + + this.entryForm = this._fb.group({ + schedulerTime: [null], + leaseTaxCode: [null], + vesselConfProcessLimit: [null], + rowToDisplay: [null], + linkToDisplay: [null], + rowToAdd: [null], + lovRowToDisplay: [null], + lovLinkToDisplay: [null], + oidserverName: [null], + oidBase: [null], + oidAdminUser: [null], + oidServerPort: [null], + userDefaultGroup: [null], + defaultDepartment: [null], + defaultPosition: [null], + singleCharge: [null], + firstDayOftheWeek: [null], + hourPerShift: [null], + cnBillingFrequency: [null], + billingDepartmentCode: [null], + basePriceList: [null], + nonContainerServiceOrder: [null], + ediMaeSchedulerONOFF: [null], + ediSchedulerONOFF: [null], + upload_Logo:[null], + Company_Display_Name:[null] + }); + + } + public onFileChanged(event) { + for (var i = 0; i < event.target.files.length; i++) { + this.selectedFile.push(event.target.files[i]); + } + } + // onSubmit(){ + // this.userObj.status='P'; + // console.log(this.entryForm.value); + // this.mainService.createall(this.entryForm.value,this.selectedFile).subscribe(data => { + // console.log(data) + + // }, + // (error) => { + // console.log(error); + // } + + // ); + // } + adddata(){ + this.sysparaservice.create(this.entryForm.value).subscribe( + (data) => { + console.log(data); + // this.router.navigate(["../../project/all"], { relativeTo: this.route }); + }, + + ); + } + getById(id: number) { + this.sysparaservice.getById(id).subscribe((data) => { + this.project = data; + console.log("getbyiddata",this.project); + }, + (err) => { + console.log(err); + } + ); + } + updatedata(){ + this.sysparaservice.update(this.id, this.project,this.selectedFile).subscribe( + (data) => { + console.log(data); + //this.router.navigate(["../../../project/all"], { relativeTo: this.route }); + }, + + ); + if (this.id) { + this.toastr.success('Updated successfully'); + } + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/user-registration/user-registration.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/user-registration/user-registration.component.html new file mode 100644 index 0000000..d8c3c77 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/user-registration/user-registration.component.html @@ -0,0 +1,42 @@ + + + +
    +
    + CloudnSure +
    +
    +
    + + +
    + + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/user-registration/user-registration.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/user-registration/user-registration.component.scss new file mode 100644 index 0000000..dbaa7f7 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/user-registration/user-registration.component.scss @@ -0,0 +1,143 @@ +//@import "../../../assets/scss/var"; +/* :host { + display: flex; + flex-direction: row; + justify-content: center; +} */ + +/* .s-login-pg { + width:400px; + display:flex; + padding:0; + margin:48px 16px 16px 16px; + flex-direction: column; + align-items: center; + background-color: white; + border: 1px solid #ccc; + border-radius: 2px; + box-shadow: 0 1px 3px rgba(0,0,0,0.05), 0 1px 2px rgba(0,0,0,0.15); + .s-login-pg-head{ + width:100%; + height:220px; + display:flex; + flex-direction: column; + align-items: center; + background-color: #998; + padding:16px; + color:white; + } + .s-login-pg-form { + width:100%; + height:200px; + display:flex; + flex-direction: column; + align-items: center; + margin:24px 16px; + input{ + margin: 16px; + } + } + .s-login-pg-foot { + width:100%; + min-height:40px; + display:flex; + flex-direction: column; + align-items: center; + } + + +} */ + +//** variables +$background: #f5f6fa; +$text: #9c9c9c; +$input-bg-color: #fff; +$input-text-color: #a3a3a3; +$button-bg-color: #7f8ff4; +$button-text-color: #fff; + +//** root +:root { + background: $background; + color: $text; + font: 1rem "PT Sans", sans-serif; +} + +html, +body, +.container { + height: 100%; +} + +a { + color: inherit; + + &:hover { + color: $button-bg-color; + } +} + +//** helper +.email_check { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} + +.uppercase { + text-transform: uppercase; +} + +//** button +.btn { + display: inline-block; + background: transparent; + color: inherit; + font: inherit; + border: 0; + outline: 0; + padding: 0; + transition: all 200ms ease-in; + cursor: pointer; + + &--primary { + background: $button-bg-color; + color: $button-text-color; + box-shadow: 0 0 10px 2px rgba(0, 0, 0, .1); + border-radius: 2px; + //padding: 12px 36px; + //padding: 7px 158px; + width: 100%; + + &:hover { + background: darken($button-bg-color, 4%); + } + + &:active { + background: $button-bg-color; + box-shadow: inset 0 0 10px 2px rgba(0, 0, 0, .2); + } + } + + /* &--inside { + margin-left: -96px; + } */ +} + +//** form +.form { + /* margin-left: auto; + margin-right: auto; */ + &__field { + width: 360px; + //width: 450px; + background: #fff; + color: $input-text-color; + font: inherit; + box-shadow: 0 6px 10px 0 rgba(0, 0, 0 , .1); + border: 0; + outline: 0; + padding: 22px 18px; + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/user-registration/user-registration.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/user-registration/user-registration.component.spec.ts new file mode 100644 index 0000000..692a6ca --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/user-registration/user-registration.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { UserRegistrationComponent } from './user-registration.component'; + +describe('UserRegistrationComponent', () => { + let component: UserRegistrationComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ UserRegistrationComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(UserRegistrationComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/user-registration/user-registration.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/user-registration/user-registration.component.ts new file mode 100644 index 0000000..52e1126 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/user-registration/user-registration.component.ts @@ -0,0 +1,93 @@ + +import { HttpErrorResponse } from "@angular/common/http"; +import { Component, OnInit, ViewEncapsulation } from "@angular/core"; +import { FormArray, FormBuilder, FormGroup, Validators } from "@angular/forms"; +import { ActivatedRoute, Router } from "@angular/router"; + + +import { UserRegistrationService } from "src/app/services/admin/user-registration.service"; + + +export interface EmailRequest { + email: string; +} +@Component({ + selector: 'app-user-registration', + templateUrl: './user-registration.component.html', + styleUrls: ['./user-registration.component.scss'] +}) +export class UserRegistrationComponent implements OnInit { + + model: any = {}; + EmailRequest: EmailRequest; + emailErrMsg: string = "" + emailCheckForm: FormGroup; + constructor(private _fb: FormBuilder, + private router: Router, + private route: ActivatedRoute, + private userRegistrationService: UserRegistrationService) { } + + ngOnInit(): void { + this.userRegistrationService.removeSignedUpUserInfo(); + this.userRegistrationService.removeStoredEmail(); + this.emailCheckForm = this._fb.group({ + email: ['', Validators.email] + }); + } + emailExistCheck() { + console.log('input email: ', this.model.email); + this.userRegistrationService.emailCheck(this.model.email) + .subscribe((res) => { + console.log('email check Res : ', res); + /* if(res == 202) { + this.emailErrMsg = res.body; + // redirect to next page + //this.router.navigate([""]) + } else if(res.status == 409){ + this.emailErrMsg = res.body; + } */ + }, (err) => { + console.log(err); + }); + } + + + get f() { return this.emailCheckForm.controls; } + onSubmit() { + console.log('this.emailCheckForm.value : ', this.emailCheckForm.value); + /* let headers = new HttpHeaders().set("Content-Type", "application/json"); + this.httpService.post('http://localhost:9119/token/email-exists', + JSON.stringify(this.emailCheckForm.value), { headers: headers, responseType: 'text' }) + .subscribe(data => { + console.log('success ', data); + this.router.navigate(["/varify-account"]); + }, err => { + console.log('failure ', err); + //location.reload; + this.emailErrMsg = "Email is Already Exist"; + } + ); */ + this.userRegistrationService.emailCheck(this.emailCheckForm.value) + .subscribe((res) => { + console.log('success ', res); + let email: string = res.message; + email = email.substring(16); + console.log(email); + this.userRegistrationService.storeEmail(email); + this.router.navigate(["/varify-account"]); + },(err: HttpErrorResponse) => { + console.log(err); + console.log(err.error.message); + if(err.status === 409) { + this.emailErrMsg = 'Email Already Exists'; + } else { + this.emailErrMsg = 'Server error'; + } + }); + } + + onSignUp() { + this.router.navigate(["signup"]); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/user/user.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/user/user.component.html new file mode 100644 index 0000000..4d02174 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/user/user.component.html @@ -0,0 +1,606 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +

    User list

    +
    +
    + + +
    +
    + + user not found! + + + User Id + + + + + Name + + + + + Username + + + + + Role + + + + + email + + + + + {{user1.userId}} + {{user1.firstName}} {{user1.lastName}} + {{user1.username}} + {{user1.role}} + {{user1.email}} + + + + + ˝ + + + + + + + + + + + + + + + + + + + + +
    picture
    ID{{user1.userId}}
    Updated{{user1.updatedAt | date}}
    Register{{user1.createdAt | date}}
    +
    +
    + + + + Users per page + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} + of {{pagination.totalItems}} users + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/user/user.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/user/user.component.scss new file mode 100644 index 0000000..62edce4 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/user/user.component.scss @@ -0,0 +1,40 @@ +.td-title { + text-align: right; + width: 150px; + font-weight: bold; + background-color: rgba(63, 122, 231, 0.863); + color: white; +} + +.td-content { + text-align: left; +} + +img { + border: 2px solid #245; + border-radius: 5px; +} +.img-class{ + height: 100px; + width: 100px; +} + +input[type=text],[type=date],[type=password] { + width: 100%; + padding: 12px 20px; + margin: 8px 0; + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} + +.delete,.heading{ + text-align: center; + color: red; +} + +.add-pop,.heading{ + text-align: center; + color: green; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/user/user.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/user/user.component.spec.ts new file mode 100644 index 0000000..dd3b1d7 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/user/user.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { UserComponent } from './user.component'; + +describe('UserComponent', () => { + let component: UserComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ UserComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(UserComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/user/user.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/user/user.component.ts new file mode 100644 index 0000000..f7530c4 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/user/user.component.ts @@ -0,0 +1,369 @@ +import { Component, OnInit } from '@angular/core'; +import { AlertService } from '../../../../services/alert.service'; +import { ToastrService } from 'ngx-toastr'; +import { ExcelService } from './../../../../services/excel.service'; +import { MainService } from './../../../../services/main.service'; +import * as moment from 'moment'; +import { ActivatedRoute, Router } from '@angular/router'; +import { UserListService } from '../../../../services/admin/user-list.service'; +import { HttpClient } from '@angular/common/http'; +import { MenuGroupService } from '../../../../services/admin/menu-group.service'; +import { UserInfoService } from '../../../../services/user-info.service'; +import { User } from '../../../../models/admin/user'; + +@Component({ + selector: 'app-user', + templateUrl: './user.component.html', + styleUrls: ['./user.component.scss'] +}) +export class UserComponent implements OnInit { + users: any[] = []; + rowSelected: any = {}; + loading = false; + modalEdit = false; + allusers: any; + // allusers: user; + userst: User; + openAddUser = false; + modaldelete = false; + modalcreate = false; + modalup = false; + tempid: any; + assign = false; + + user = { + id: '', + user_id: '', + name: '', + gender: '', + dob: '', + email: '', + username: '', + password: '' + } + updateU = { + id: '', + user_id: '', + name: '', + gender: '', + dob: '', + email: '', + username: '', + password: '' + } + + updateU1 = { + userId: '', + email: '', + firstName: '', + lastName: '', + username: '', + password: '' + } + + // image related variables + selectedFile: File; + retrievedImage: any; + base64Data: any; + retrieveResonse: any; + message: string; + // imageName: any; + imageName = 'index.jpg'; + + groupData: any; + + userData = { + id: '', + user_id: '', + name: '', + gender: '', + dob: '', + email: '', + username: '', + password: '', + menu_group: '' + } + + constructor( + private _mg: MenuGroupService, + private mainService: MainService, + private alertService: AlertService, + private toastr: ToastrService, + private excel: ExcelService, + private router: Router, + private route: ActivatedRoute, + private _user: UserListService, + private httpClient: HttpClient, + private _ut: UserInfoService + ) { } + + ngOnInit() { + this.getUsersT(); + this.getUser(); + this.getUsers(); + + // this.getImage(); + + this._mg.getAll().subscribe( + (data: any) => { + this.groupData = data.items; + // console.log(this.groupData); + } + ); + } + + openAssignModal(id: any) { + // console.log(id); + this._user.getOne(id).subscribe( + (data: any) => { + this.userData = data; + } + ); + this.assign = true; + } + + saveAssign() { + // console.log(this.userData.menu_group); + this._user.update(this.userData).subscribe( + (data: any) => { + console.log('Assign Updated Successfully...'); + this.assign = false; + this.ngOnInit(); + } + ); + } + + async getUser() { + this.loading = true; + const result = await this.mainService.getUserTest(); + if (result.results) { + this.users = result.results; + } + this.loading = false; + } + + onEdit(row) { + + console.log(row); + this._user.getOne(row).subscribe( + (data: any) => { + this.updateU = data; + console.log(this.updateU); + + } + ); + this.modalEdit = true; + } + + del(id: any) { + this.tempid = id; + this.modaldelete = true; + } + + async onDelete() { + // const confirmed: any = await this.alertService.confirm('', 'Delete confirm?'); + // if (confirmed.value) { + // this.toastr.success('Deleted successfully'); + // // .... + // } + + this._user.deleteById(this.tempid).subscribe( + (data: any) => { + console.log('Success....'); + this.toastr.success('User deleted successfully...'); + this.modaldelete = false; + this.ngOnInit(); + + } + ); + } + + async onSave() { + const confirmed: any = await this.alertService.confirm('', 'Save confirm?'); + if (confirmed.value) { + this.toastr.success('Save successfully'); + // .... + this.modalEdit = false; + } + } + + onExport() { + this.excel.exportAsExcelFile(this.allusers, 'user_', + moment().format('YYYYMMDD_HHmmss')) + } + goToAdd() { + this.openAddUser = true; + } + + getUsers() { + this._user.getAll().subscribe( + (data: any) => { + this.allusers = data; + + this.allusers.forEach((i: any) => { + i['imgData'] = ''; + // this.getImage(i.id); + // i['imgData'] = this.retrievedImage; + + this.httpClient.get('http://localhost:9191/user_list/get/' + i.id) + .subscribe( + res => { + this.retrieveResonse = res; + this.base64Data = this.retrieveResonse.picByte; + this.retrievedImage = 'data:image/jpeg;base64,' + this.base64Data; + i['imgData'] = 'data:image/jpeg;base64,' + this.base64Data; + // console.log(this.retrievedImage); + } + ); + }); + + console.log(this.allusers); + }, + (error: any) => { + console.log('Error in loading users from server...'); + + } + ); + } + + createUserHere() { + console.log('add button clicked....'); + + this._user.add(this.user).subscribe( + (data: any) => { + this.onUpload(data.id); + console.log('added...'); + this.toastr.success('User added successfully...'); + + this.openAddUser = false; + this.ngOnInit(); + + }, + (error: any) => { + console.log(error); + + } + ); + } + + updateUser() { + console.log('button clicked: update'); + this._user.update(this.updateU).subscribe( + (data: any) => { + console.log('success...'); + this.toastr.success('User updated successfully...'); + this.modalEdit = false; + this.ngOnInit(); + }, + (error: any) => { + console.log(error); + + } + ); + } + + public onFileChanged(event) { + //Select File + this.selectedFile = event.target.files[0]; + } + + //Gets called when the user clicks on submit to upload the image + onUpload(user: any) { + console.log(this.selectedFile); + + //FormData API provides methods and properties to allow us easily prepare form data to be sent with POST HTTP requests. + const uploadImageData = new FormData(); + uploadImageData.append('imageFile', this.selectedFile, this.selectedFile.name); + uploadImageData.append('user_id', user); + + //Make a call to the Spring Boot Application to save the image + this.httpClient.post('http://localhost:9191/user_list/upload', uploadImageData, { observe: 'response' }) + .subscribe((response) => { + if (response.status === 200) { + this.message = 'Document uploaded successfully'; + } else { + this.message = 'Document not uploaded successfully'; + } + } + ); + + + } + + //Gets called when the user clicks on retieve image button to get the image from back end + getImage(id: any) { + //Make a call to Sprinf Boot to get the Image Bytes. + this.httpClient.get('http://localhost:9191/user_list/get/' + id) + .subscribe( + res => { + this.retrieveResonse = res; + this.base64Data = this.retrieveResonse.picByte; + this.retrievedImage = 'data:image/jpeg;base64,' + this.base64Data; + // console.log(this.retrievedImage); + } + ); + } + + onEditNew(id: any) { + console.log(id); + this.getOneUser(id); + this.modalEdit = true; + } + + delNew(id: any) { + this.tempid = id; + console.log(id); + + } + + openAssignModalNew(id: any) { + console.log(id); + + } + + getUsersT() { + + this.httpClient.get('http://localhost:9191/api/all-users').subscribe( + (data: any) => { + this.userst = data; + console.log(this.userst); + }, + (error: any) => { + console.log(error); + } + ); + } + + getOneUser(id: any) { + + this.httpClient.get('http://localhost:9191/api/org-users/' + id).subscribe( + (data: any) => { + this.updateU1 = data; + console.log(this.updateU1); + + }, + (er: any) => { + console.log(er); + + } + ); + } + + updateUserNew() { + this.httpClient.put('http://localhost:9191/api/org-users/' + this.updateU1.userId, this.updateU1).subscribe( + (data: any) => { + console.log('success...'); + this.toastr.success('User updated successfully...'); + this.modalEdit = false; + console.log(data); + this.ngOnInit(); + + }, + (error: any) => { + console.log(error); + + } + ); + } +} + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usergrpmaintenance/usergrpmaintenance.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usergrpmaintenance/usergrpmaintenance.component.html new file mode 100644 index 0000000..f0d36a5 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usergrpmaintenance/usergrpmaintenance.component.html @@ -0,0 +1,224 @@ + + + + +
    +
    +
    +

    {{'USER_GROUP_MAINTENANCE' | translate}}

    +
    +
    +
    + + +
    + + + +
    +
    + + + + + + + + + {{'LOADING' | translate}} ... +
    {{error}}
    + + + + {{'USERGROUP_NO' | translate}} + + + + + {{'GROUP_NAME' | translate}} + + + + + {{'GROUP_DESC' | translate}} + + + + + {{'GROUP_LEVEL' | translate}} + + + + + {{'STATUS' | translate}} + + + + + {{'UPDATED_DATE' | translate}} + + + + + {{user.usrGrp}} + {{user.groupName}} + {{user.groupDesc}} + {{user.groupLevel}} + {{user.status}} + + {{user.updateDateFormated}} + + + + + + + + + + + + + + + +
    username{{user.groupName}}
    +
    +
    + + + + Record per page + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} + of {{pagination.totalItems}} Records + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usergrpmaintenance/usergrpmaintenance.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usergrpmaintenance/usergrpmaintenance.component.scss new file mode 100644 index 0000000..c871274 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usergrpmaintenance/usergrpmaintenance.component.scss @@ -0,0 +1,8 @@ +@import '../../../../../styles1.scss'; +input.ng-invalid.ng-touched { + border-color: red; +} + +.error_mess { + color: red; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usergrpmaintenance/usergrpmaintenance.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usergrpmaintenance/usergrpmaintenance.component.spec.ts new file mode 100644 index 0000000..945eb38 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usergrpmaintenance/usergrpmaintenance.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { UsergrpmaintenanceComponent } from './usergrpmaintenance.component'; + +describe('UsergrpmaintenanceComponent', () => { + let component: UsergrpmaintenanceComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ UsergrpmaintenanceComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(UsergrpmaintenanceComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usergrpmaintenance/usergrpmaintenance.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usergrpmaintenance/usergrpmaintenance.component.ts new file mode 100644 index 0000000..d1f1934 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usergrpmaintenance/usergrpmaintenance.component.ts @@ -0,0 +1,203 @@ +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import { ExcelService } from '../../../../services/excel.service'; +import * as moment from 'moment'; +import { UsergrpmaintainceService } from '../../../../services/admin/usergrpmaintaince.service'; +import { ToastrService } from 'ngx-toastr'; +import { MenuGroupService } from 'src/app/services/admin/menu-group.service'; +import { CsvService } from 'src/app/services/csv.service'; +import { TranslateService } from '@ngx-translate/core'; +@Component({ + selector: 'app-usergrpmaintenance', + templateUrl: './usergrpmaintenance.component.html', + styleUrls: ['./usergrpmaintenance.component.scss'] +}) +export class UsergrpmaintenanceComponent implements OnInit { + loading = false; + public entryForm: FormGroup; + givendata; + orders; + error; + modalAdd= false; + modaledit=false; + modaldelete=false; + rowSelected :any= {}; + mcreate; + medit; + showdata; + submitted=false; + + constructor( + private excel: ExcelService, + private toastr:ToastrService, + private _fb: FormBuilder, + private router: Router, + private route: ActivatedRoute, + private menuGroupService: MenuGroupService, + private mainservice:UsergrpmaintainceService, + private csvService: CsvService, + private translate: TranslateService, + ) { } + switchLanguage(language: string) { + this.translate.use(language); + } + ngOnInit(): void { + this.showdata = this.menuGroupService.getdata(); + console.log(this.showdata); + this.mcreate=this.showdata.mcreate; + console.log(this.mcreate); + this.medit=this.showdata.medit + console.log(this.medit); + + this.mainservice.getAll().subscribe((data) => { + console.log(data); + this.givendata = data; + if(this.givendata.length==0){ + this.error="No data Available"; + console.log(this.error) + } + },(error) => { + console.log(error); + if(error){ + this.error="Server Error"; + } + }); + + this.entryForm = this._fb.group({ + groupName:['',[Validators.required]] , + groupDesc:['',[Validators.required]] , + groupLevel:['',[Validators.required]] , + status:['',[Validators.required]] , + + }); + } + onExport() { + this.excel.exportAsExcelFile(this.givendata, 'user_', + moment().format('YYYYMMDD_HHmmss')) + } + goToAdd() { + this.modalAdd=true; + //this.router.navigate(["../usermaintanceadd"],{relativeTo:this.route}); + } + goToEdit(row){ + this.rowSelected = row; + this.modaledit=true; + //this.router.navigate(["../usermaintanceedit/"+ id], { relativeTo: this.route }); + } + onUpdate(id) { + this.modaledit = false; + //console.log("in update"); + console.log("id "+id); + console.log( this.rowSelected ); + //console.log("out update"); + this.mainservice.update(this.rowSelected).subscribe( + (data) => { + console.log(data); + if (data) { + this.toastr.success('Updated successfully'); + } + }, (error) => { + console.log(error); + if(error){ + this.toastr.error('Not Updated Data Getting Some Error'); + } + } + ); + } + onSubmit() { + console.log(this.entryForm.value); + this.submitted=true; + if (this.entryForm.invalid) { + return; + } + this.onCreate(); + } + onCreate() { + this.modalAdd=false; + this.mainservice.create(this.entryForm.value).subscribe(data => { + console.log(data) + this.ngOnInit(); + if (data) { + this.toastr.success('Added successfully'); + } + }, + (error) => { + console.log(error); + if(error){ + this.toastr.error('Not Added Data Getting Some Error'); + } + } + ); + // if (this.entryForm.value) { + // this.toastr.success('Added successfully'); + + // } + } + onDelete(row) { + this.rowSelected = row; + this.modaldelete=true; + } + + delete(id) + { + this.modaldelete = false; + console.log("in delete "+id); + this.mainservice.deleteusr(id).subscribe( + (data) => { + console.log(data); + this.ngOnInit(); + if (data) { + this.toastr.success('Deleted successfully'); + } + }, + (error) => { + console.log('Error in adding data...',+error); + if(error){ + this.toastr.error('Not Deleted Data Getting Some Error'); + } + } + ); + + + } + + + + // csv + + modalCsv = false; + selectedFiles: File; + fileList; + ttype = 'usergroupmaintenance'; + + + // Import CSV + public selectFile(event) { + this.selectedFiles = event.target.files[0]; + // this.saveCsv(); + } + + csvImport() { + console.log("import CSV"); + this.modalCsv = true; + } + saveCsv() { + this.csvService.importCsv(this.selectedFiles, this.ttype).subscribe(data => { + console.log(data); + this.fileList = data; + this.modalCsv = false; + }, + (error) => { + console.log(error); + if (error.status == 202) { + this.toastr.success(error.error.text) + } + }); + } + + downloadFiles() { + this.csvService.downloadCsvs(this.ttype); + + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintance/usermaintance.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintance/usermaintance.component.html new file mode 100644 index 0000000..fd24638 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintance/usermaintance.component.html @@ -0,0 +1,124 @@ + + + + +
    +
    +
    +

    {{'USER_MAINTENANCE'| translate}}

    +
    +
    +
    + + +
    + + + +
    +
    + + + + + + + + + + Loading ... +
    {{error}}
    +
    + + + + User Id + + + + Full Name + + + Email + + + User Group Name + + + + + + + {{user.userId}} + + {{user.fullName}} + {{user.email}} + {{user.usrGrpName}} + + + + + + + + + + + + + + + + + +
    username{{user.username}}
    +
    +
    + + + + Record per page + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} + of {{pagination.totalItems}} Records + + +
    +
    + + + + + + + + + + + + + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintance/usermaintance.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintance/usermaintance.component.scss new file mode 100644 index 0000000..76ab29b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintance/usermaintance.component.scss @@ -0,0 +1,4 @@ +.delete,.heading{ + text-align: center; + color: red; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintance/usermaintance.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintance/usermaintance.component.spec.ts new file mode 100644 index 0000000..881f48f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintance/usermaintance.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { UsermaintanceComponent } from './usermaintance.component'; + +describe('UsermaintanceComponent', () => { + let component: UsermaintanceComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ UsermaintanceComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(UsermaintanceComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintance/usermaintance.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintance/usermaintance.component.ts new file mode 100644 index 0000000..84197e8 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintance/usermaintance.component.ts @@ -0,0 +1,158 @@ +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import { ExcelService } from '../../../../services/excel.service'; +import * as moment from 'moment'; +import { UsermaintanceService } from '../../../../services/admin/usermaintance.service'; +import { MenuGroupService } from 'src/app/services/admin/menu-group.service'; +import { ToastrService } from 'ngx-toastr'; +import { CsvService } from 'src/app/services/csv.service'; +import { TranslateService } from '@ngx-translate/core'; +@Component({ + selector: 'app-usermaintance', + templateUrl: './usermaintance.component.html', + styleUrls: ['./usermaintance.component.scss'] +}) +export class UsermaintanceComponent implements OnInit { + loading = false; + loading1=false; + public entryForm: FormGroup; + givendata; + orders; + modalAdd= false; + modaledit=false; +mcreate; +medit; +mdelete; +showdata; +error; +modaldelete=false; +rowSelected :any= {}; + constructor(private excel: ExcelService, + private _fb: FormBuilder, + private router: Router, private toastr:ToastrService, + private route: ActivatedRoute, + private menuGroupService: MenuGroupService, + private mainservice:UsermaintanceService, + private csvService: CsvService, + private translate: TranslateService, + ) {this.loading1 = true; + setTimeout(() => { + this.loading1 = false; + }, 1000); } + switchLanguage(language: string) { + this.translate.use(language); + } + ngOnInit(): void { + this.showdata = this.menuGroupService.getdata(); + console.log(this.showdata); + this.mcreate=this.showdata.mcreate; + console.log(this.mcreate); + this.mdelete=this.showdata.mdelete + console.log(this.mdelete); + this.medit=this.showdata.medit + console.log(this.medit); + this.getData(); + + } + getData(){ + this.mainservice.getAll().subscribe((data) => { + console.log(data); + this.givendata = data; + if(this.givendata.length==0){ + this.error="No data Available"; + console.log(this.error) + } + // for(let i =0;i { + console.log(error); + if(error){ + this.error="Server Error"; + } + }); + } + + + // csv + + modalCsv = false; + selectedFiles: File; + fileList; + ttype = 'usermaintenance'; + + + // Import CSV + public selectFile(event) { + this.selectedFiles = event.target.files[0]; + // this.saveCsv(); + } + + csvImport() { + console.log("import CSV"); + this.modalCsv = true; + } + saveCsv() { + this.csvService.importCsv(this.selectedFiles, this.ttype).subscribe(data => { + console.log(data); + this.fileList = data; + this.modalCsv = false; + }, + (error) => { + console.log(error); + if (error.status == 202) { + this.toastr.success(error.error.text) + } + }); + } + + downloadFiles() { + this.csvService.downloadCsvs(this.ttype); + + } + + + onExport() { + this.excel.exportAsExcelFile(this.givendata, 'user_', + moment().format('YYYYMMDD_HHmmss')) + } + goToAdd() { + this.router.navigate(["../usermaintanceadd"],{relativeTo:this.route}); + } + goToEdit(id: number){ + this.router.navigate(["../usermaintancedit/"+ id], { relativeTo: this.route }); + } + onDelete(row) { + this.rowSelected = row; + this.modaldelete=true; + } + + delete(id) + { + this.modaldelete = false; + console.log("in delete "+id); + this.mainservice.deleteusr(id).subscribe( + (data) => { + console.log(data); + this.ngOnInit(); + if (data) { + this.toastr.success('Deleted successfully'); + } + }, + (error) => { + console.log('Error in adding data...',+error); + if(error){ + this.toastr.error('Not Deleted Data Getting Some Error'); + } + } + ); + + + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintanceadd/usermaintanceadd.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintanceadd/usermaintanceadd.component.html new file mode 100644 index 0000000..3f73f06 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintanceadd/usermaintanceadd.component.html @@ -0,0 +1,319 @@ + +

    User Maintenance

    + Add Mode
    +
    +
    +
    + +
    +
    + + +
    +
    *This field is Required
    +
    +
    +
    + + +
    +
    *This field is Required
    +
    +
    +
    + + +
    +
    *This field is Required
    +
    * Please Follow your pattern,+91 Enter 10 digit Mobile Number. +
    + +
    +
    +
    + + +
    +
    *Password is required
    +
    * Password must be at least 6 characters
    + +
    +
    +
    + + +
    +
    * Confirm Password is required
    +
    * Password and Confirm Password must be match.
    + +
    +
    + + + +
    + + +
    +
    *This field is Required
    +
    +
    + + +
    + + +
    +
    *This field is Required
    + +
    *Email must be a valid email address
    + +
    +
    +
    + + +
    +
    *This field is Required
    +
    +
    + + +
    + +
    + + +
    + + + + + + + + + + + + + + + + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintanceadd/usermaintanceadd.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintanceadd/usermaintanceadd.component.scss new file mode 100644 index 0000000..c871274 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintanceadd/usermaintanceadd.component.scss @@ -0,0 +1,8 @@ +@import '../../../../../styles1.scss'; +input.ng-invalid.ng-touched { + border-color: red; +} + +.error_mess { + color: red; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintanceadd/usermaintanceadd.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintanceadd/usermaintanceadd.component.spec.ts new file mode 100644 index 0000000..3a520a3 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintanceadd/usermaintanceadd.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { UsermaintanceaddComponent } from './usermaintanceadd.component'; + +describe('UsermaintanceaddComponent', () => { + let component: UsermaintanceaddComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ UsermaintanceaddComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(UsermaintanceaddComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintanceadd/usermaintanceadd.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintanceadd/usermaintanceadd.component.ts new file mode 100644 index 0000000..a7522e4 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintanceadd/usermaintanceadd.component.ts @@ -0,0 +1,198 @@ +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import { AccesstypeService } from 'src/app/services/admin/accesstype.service'; +import { UsergrpmaintainceService } from 'src/app/services/admin/usergrpmaintaince.service'; +import { UsermaintanceService } from '../../../../services/admin/usermaintance.service'; + +@Component({ + selector: 'app-usermaintanceadd', + templateUrl: './usermaintanceadd.component.html', + styleUrls: ['./usermaintanceadd.component.scss'] +}) +export class UsermaintanceaddComponent implements OnInit { + public entryForm: FormGroup; + customer:boolean=false; + department:boolean=false; + position:boolean=false; + custdata: any; + loading = false; + clickedID:number; + custiddata: any; + userobjcust={ + customerName:'', + customerCode:'', + } + departmentdata: any; + positiondata: any; + deptiddata: any; + userobjdept={ + departmentCode:'', + } + userobjpos={ + positionCode:'', + } + posiddata: any; + usergrpdata; + accessdata; + error; + submitted=false; + + constructor( private _fb: FormBuilder, + private mainservice:UsermaintanceService, + private router: Router,private accesstype:AccesstypeService, + private route: ActivatedRoute, + private usergrpservice: UsergrpmaintainceService + ) { } + + ngOnInit(): void { + this.entryForm = this._fb.group({ + first_name :['',[Validators.required]], + last_name:['',[Validators.required]], + email:['',[Validators.required,Validators.email]], + mob_no:['',[Validators.required]], + new_password:['',[Validators.required,Validators.minLength(6)]], + confirm_password:['',[Validators.required]], + usrGrpId:['',[Validators.required]], + account_id:1, + accesstype:['',[Validators.required]], + // status:[null], + // username:[null] , + // userPassw:[null] , + // confirmPassword:[null], + // title:[null], + // shortName:[null], + // fullName:[null], + // status:[null], + // positionCodeString:[null], + // departmentCodeString:[null], + // usrGrpId:[null], + // customerId:[null], + // email:[null], + // notification:[null], + + //departmentCode: this._fb.array([this.department()]), + // positionCode: this._fb.array([this.position()]), + //usrGrp: this._fb.array([this.user()]), + + }, { + validator: ConfirmedValidator('new_password', 'confirm_password') + }); + this.usergrp(); + this.getdata(); + } + getdata(){ + this.accesstype.getAll().subscribe(resp => { + this.accessdata = resp; + console.log('accessdata: ', this.accessdata); + if(this.accessdata.length==0){ + this.error="No data Available"; + console.log(this.error) + } + },(error) => { + console.log(error); + if(error){ + this.error="Server Error"; + } + }) + } + usergrp(){ + this.usergrpservice.getAll().subscribe((data) => { + console.log(data); + this.usergrpdata = data; + }); + } + // department(){ + // return this._fb.group({ + // departmentCode:[null] , + + // }); + // } + // position(){ + // return this._fb.group({ + // positionCode:[null] , + + // }); + // } + // user(){ + // return this._fb.group({ + // usrGrp:[null] , + + // }); + //} + onSubmit(){ + this.submitted=true + if (this.entryForm.invalid) { + return; + } + console.log(this.entryForm.value); + this.mainservice.create(this.entryForm.value).subscribe(data => { + console.log(data) + }, + (error) => { + console.log(error); + } + ); + this.router.navigate(["../usermaintance"], { relativeTo: this.route }); + } + +goback(){ + this.router.navigate(["../usermaintance"], { relativeTo: this.route }); +} + gotodepartmet(){ + this.department=!this.department; + this.mainservice.getalldepartment().subscribe((data)=>{ + console.log(data); + this.departmentdata=data; + }); + } + getdepid(id:number){ + this.clickedID=id; + console.log("clicked by id"+ id); + this.mainservice.getbydepartmentid(id).subscribe((data) => { + console.log(data); + this.deptiddata= data; + // this.userObj= this.custiddata; + this.userobjdept =this.deptiddata; + + + }); + this.department=false; + } + gotoposition(){ + this.position=!this.position; + this.mainservice.getallposition().subscribe((data)=>{ + console.log(data); + this.positiondata=data; + }) + } + getposid(id:number){ + this.clickedID=id; + console.log("clicked by id"+ id); + this.mainservice.getbypositionid(id).subscribe((data) => { + console.log(data); + this.posiddata= data; + // this.userObj= this.custiddata; + this.userobjpos =this.posiddata; + + + }); + this.position=false; + } + + +} +export function ConfirmedValidator(controlName: string, matchingControlName: string){ + return (formGroup: FormGroup) => { + const control = formGroup.controls[controlName]; + const matchingControl = formGroup.controls[matchingControlName]; + if (matchingControl.errors && !matchingControl.errors.confirmedValidator) { + return; + } + if (control.value !== matchingControl.value) { + matchingControl.setErrors({ confirmedValidator: true }); + } else { + matchingControl.setErrors(null); + } + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintanceedit/usermaintanceedit.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintanceedit/usermaintanceedit.component.html new file mode 100644 index 0000000..64d92fe --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintanceedit/usermaintanceedit.component.html @@ -0,0 +1,348 @@ + +

    User Maintenance

    + Edit Mode
    +
    +
    +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    + + + + +
    + + +
    + + +
    + + +
    +
    + + +
    + + +
    + +
    + + +
    + + + + + + + + + + + + + + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintanceedit/usermaintanceedit.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintanceedit/usermaintanceedit.component.scss new file mode 100644 index 0000000..36abb8c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintanceedit/usermaintanceedit.component.scss @@ -0,0 +1 @@ +@import '../../../../../styles1.scss'; diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintanceedit/usermaintanceedit.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintanceedit/usermaintanceedit.component.spec.ts new file mode 100644 index 0000000..4173d29 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintanceedit/usermaintanceedit.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { UsermaintanceeditComponent } from './usermaintanceedit.component'; + +describe('UsermaintanceeditComponent', () => { + let component: UsermaintanceeditComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ UsermaintanceeditComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(UsermaintanceeditComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintanceedit/usermaintanceedit.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintanceedit/usermaintanceedit.component.ts new file mode 100644 index 0000000..2f33378 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/admin/usermaintanceedit/usermaintanceedit.component.ts @@ -0,0 +1,133 @@ +import { Component, OnInit } from '@angular/core'; +import { ActivatedRoute, Router } from '@angular/router'; +import { AccesstypeService } from 'src/app/services/admin/accesstype.service'; +import { UsergrpmaintainceService } from 'src/app/services/admin/usergrpmaintaince.service'; +import { UsermaintanceService } from '../../../../services/admin/usermaintance.service'; +//import { Usermain } from 'src/app/models/usermaintaince'; + +@Component({ + selector: 'app-usermaintanceedit', + templateUrl: './usermaintanceedit.component.html', + styleUrls: ['./usermaintanceedit.component.scss'] +}) +export class UsermaintanceeditComponent implements OnInit { + id:number; + data1:any={}; + customer:boolean=false; + custdata: any; + clickedID:number; + custiddata: any; + loading = false; + userobjcust={ + customerName:'', + customerCode:'', + } + accessdata; + department:boolean=false; + departmentdata: any; + positiondata: any; + deptiddata: any; + userobjdept={ + departmentCode:'', + } + userobjpos={ + positionCode:'', + } + posiddata: any; + position:boolean=false; + usergrpdata; + error; + constructor(private route:ActivatedRoute, + private mainservice:UsermaintanceService, + private router: Router,private accesstype:AccesstypeService, + private usergrpservice: UsergrpmaintainceService + + ) { } + + ngOnInit(): void { + this.id = this.route.snapshot.params["id"]; + console.log("update with id = ", this.id); + this.getById(this.id); + // + this.usergrp(); + this.getdata(); + } + getdata(){ + this.accesstype.getAll().subscribe(resp => { + this.accessdata = resp; + console.log('accessdata: ', this.accessdata); + if(this.accessdata.length==0){ + this.error="No data Available"; + console.log(this.error) + } + },(error) => { + console.log(error); + if(error){ + this.error="Server Error"; + } + }) + } + usergrp(){ + this.usergrpservice.getAll().subscribe((data) => { + console.log(data); + this.usergrpdata = data; + }); + } +getById(id:number){ +this.mainservice.getbyid(id).subscribe((data)=>{ + this.data1=data; + // this.data1=this.data3; + console.log(this.data1); +}); +} +update(){ + console.log(this.data1); + this.mainservice.updatenew(this.id,this.data1).subscribe((data)=>{ +console.log(data); + }); + +} +goback(){ + this.router.navigate(["../../usermaintance"], { relativeTo: this.route }); +} + gotodepartmet(){ + this.department=!this.department; + this.mainservice.getalldepartment().subscribe((data)=>{ + console.log(data); + this.departmentdata=data; + }); + } + getdepid(id:number){ + this.clickedID=id; + console.log("clicked by id"+ id); + this.mainservice.getbydepartmentid(id).subscribe((data) => { + console.log(data); + this.deptiddata= data; + // this.userObj= this.custiddata; + this.userobjdept =this.deptiddata; + + + }); + this.department=false; + } + gotoposition(){ + this.position=!this.position; + this.mainservice.getallposition().subscribe((data)=>{ + console.log(data); + this.positiondata=data; + }) + } + getposid(id:number){ + this.clickedID=id; + console.log("clicked by id"+ id); + this.mainservice.getbypositionid(id).subscribe((data) => { + console.log(data); + this.posiddata= data; + // this.userObj= this.custiddata; + this.userobjpos =this.posiddata; + + + }); + this.position=false; + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/addnewdash/addnewdash.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/addnewdash/addnewdash.component.html new file mode 100644 index 0000000..3a4976e --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/addnewdash/addnewdash.component.html @@ -0,0 +1,40 @@ + +

    {{'define_dashboard'| translate}}

    + {{'add_mode'| translate}} +

    + +
    + + + + + + +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    + +
    + + +
    + +
    +
    diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/addnewdash/addnewdash.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/addnewdash/addnewdash.component.scss new file mode 100644 index 0000000..4a7ff75 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/addnewdash/addnewdash.component.scss @@ -0,0 +1,81 @@ +//@import "../../../../assets/scss/var"; +.s-info-bar { + display: flex; + flex-direction: row; + justify-content: space-between; + button { + outline: none; + } + } + + .entry-pg { + width: 750px; + } + + .button1::after { + content: none; + } + .button1:hover::after { + content: "ADD ROWS"; + } + + $bg-color: #dddddd; + + .section { + background-color: $bg-color; + height: 40px; + } + + .section p { + //color: white; + font-weight: bold; + padding: 10px; + font-size: 18px; + } + + .clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; + } + + .clr-file { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + //padding: 0.6rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; + } + + .center { + text-align: center; + } + input[type=text],[type=date],textarea { + width: 100%; + padding: 15px 15px; + margin-top: 3px; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; + } + + .required-field{ + color: red; + + } + select{ + width: 100%; + margin-top: 3px; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; + } + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/addnewdash/addnewdash.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/addnewdash/addnewdash.component.spec.ts new file mode 100644 index 0000000..d4993fe --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/addnewdash/addnewdash.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AddnewdashComponent } from './addnewdash.component'; + +describe('AddnewdashComponent', () => { + let component: AddnewdashComponent; + let fixture: ComponentFixture; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [AddnewdashComponent] + }); + fixture = TestBed.createComponent(AddnewdashComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/addnewdash/addnewdash.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/addnewdash/addnewdash.component.ts new file mode 100644 index 0000000..4ab52f6 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/addnewdash/addnewdash.component.ts @@ -0,0 +1,125 @@ +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import { ToastrService } from 'ngx-toastr'; +import { DashboardService } from 'src/app/services/builder/dashboard.service'; + +@Component({ + selector: 'app-addnewdash', + templateUrl: './addnewdash.component.html', + styleUrls: ['./addnewdash.component.scss'] +}) +export class AddnewdashComponent implements OnInit { + public entryForm: FormGroup; + addToDashboard: boolean = false; + submitted = false; + moduleId:any; + tech_stacks=[]; + object_types = ["form", "bi", "report", "api"]; + sub_object_types = [ + "only header", + "only line", + "header line", + "header multiline", + "wrokflow", + "setup", + "std report", + "bi report", + "rest api", + ]; + jsonString:any; + + fieldModels= + { + + "dashboard": [ + { + "cols": 4, + "rows": 5, + "x": 0, + "y": 0, + "name": "Radar Chart", + "component": "Radar Chart" + + } + ] + } + + wfline = { + model: 'this.fieldModels' + } + dashboard: any; + constructor( private _fb:FormBuilder, + private router: Router, + private route: ActivatedRoute, + private dashboardService : DashboardService, + private toastr : ToastrService, + + ) { } + + ngOnInit(): void { + // this.moduleId = this.wireframeService.getModuleId(); + console.log(this.moduleId); + + this.entryForm = this._fb.group({ + dashboard_name : [null], + description: [null], + secuirity_profile : [null], + module_id:[null], + tech_Stack:[null], + object_type:[null], + sub_object_type:[null], + testing:[null], + build:[null], + add_to_home:[true], + + dashbord1_Line: this._fb.array([this.initLinesForm()]), + // dashbord1_Line: this.fieldModels + }); + + + } + initLinesForm() { + return this._fb.group({ + + model:JSON.stringify(this.fieldModels) + }); + } + + onSubmit() { + console.log("In onSubmit method"); + console.log(this.entryForm.value); + if(this.entryForm.invalid) + { + return; + } + this.onCreate() + + } + onBack(){ + this.router.navigate(["../all"],{relativeTo:this.route}); + } + + onCreate() + { + console.log("in oncreate method"); + this.entryForm.value.module_id=this.moduleId; + + console.log(typeof this.fieldModels) + + this.dashboardService.create(this.entryForm.value).subscribe((data)=>{ + console.log(data); + this.router.navigate(["../all"],{relativeTo:this.route}); + }, + (error) => { + console.log(error); + } + ); + if(this.entryForm.value) + { + this.toastr.success('Added successfully'); + } + } + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/allnewdash/allnewdash.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/allnewdash/allnewdash.component.html new file mode 100644 index 0000000..b50c51f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/allnewdash/allnewdash.component.html @@ -0,0 +1,145 @@ + + +
    + +
    +
    +
    +

    {{ 'Dashboard_builder' | translate }}

    +
    +
    + + + +
    +
    + + + {{ 'Loading' | translate }} ...... +
    {{error}}
    + + + + {{ 'Go_to' | translate }} + + + + + {{ 'Dashboard_Name' | translate }} + + + + + {{ 'Description' | translate }} + + + + + {{ 'Security_Profile' | translate }} + + + + + {{ 'Add_to_home' | translate }} + + + + + {{ 'Action' | translate }} + + + + {{ 'SET_UP' | translate }} + {{user.dashboard_name}} + {{user.description}} + {{user.secuirity_profile}} + {{user.add_to_home}} + + + + + + + {{ 'Delete' | translate }} + + + + + +
    {{ 'Who_Column' | translate }}
    +
    {{ 'Account_ID' | translate }}: {{ user.accountId }}
    +
    {{ 'Created_At' | translate }}: {{ user.createdAt | date }}
    +
    {{ 'Created_By' | translate }}: {{ user.createdBy }}
    +
    {{ 'Updated_At' | translate }}: {{ user.updatedAt | date }}
    +
    {{ 'Updated_By' | translate }}: {{ user.updatedBy }}
    +
    +
    + +
    + + + + +
    + + + + {{ 'Users_per_page' | translate }} + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} + {{ 'of' | translate }} {{pagination.totalItems}} {{ 'users' | translate }} + + +
    +
    + + + + + + + + + + + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/allnewdash/allnewdash.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/allnewdash/allnewdash.component.scss new file mode 100644 index 0000000..140a8d4 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/allnewdash/allnewdash.component.scss @@ -0,0 +1,83 @@ +.td-title { + text-align: right; + width: 150px; + font-weight: bold; + background-color: rgba(63, 122, 231, 0.863); + color: white; + } + .td-content{ + text-align: left; + } + .delete,.heading{ + text-align: center; + color: red; + } + input[type='radio']{ + width: 14px !important; + height: 14px !important; + margin: 5px; + -webkit-appearance: none; + -moz-appearance: none; + -o-appearance: none; + appearance: none; + outline: 1px solid gray; + box-shadow: none; + font-size: 0.8em; + text-align: center; + line-height: 1em; + background: red; + } + .dots + { + width: 100px; + height:100px; + border: 1px solid; + border-radius: 50%; + //background-color: #f00; + } + h4{margin-top: 16px;} + .s-order-dash-pg { + margin: 0px; + display:flex; + flex-wrap:wrap; + flex-direction:row; + justify-content:center; + .chart-box{ + margin:16px; + padding:0 16px; + background-color: #fff; + border:1px solid #ccc; + border-radius: 2px; + } + } + #word1{ + width: 190px; + height: 180px; + + } + .center{ + text-align: center; + margin-top: 5px; + } + + .clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; + } + .heading{ + text-align: center; + color: red; + } + + select{ + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; + } + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/allnewdash/allnewdash.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/allnewdash/allnewdash.component.spec.ts new file mode 100644 index 0000000..9e5246b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/allnewdash/allnewdash.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AllnewdashComponent } from './allnewdash.component'; + +describe('AllnewdashComponent', () => { + let component: AllnewdashComponent; + let fixture: ComponentFixture; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [AllnewdashComponent] + }); + fixture = TestBed.createComponent(AllnewdashComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/allnewdash/allnewdash.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/allnewdash/allnewdash.component.ts new file mode 100644 index 0000000..b907dae --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/allnewdash/allnewdash.component.ts @@ -0,0 +1,124 @@ +import { Component, OnInit } from '@angular/core'; +import { ActivatedRoute, Router } from '@angular/router'; +import { ToastrService } from 'ngx-toastr'; +// import { WireframeService } from 'src/app/services/builder/wireframe.service'; +import { ExcelService } from 'src/app/services/excel.service'; +import * as moment from 'moment'; +import { ModulesetupService } from 'src/app/services/builder/modulesetup.service'; +import { DashboardService } from 'src/app/services/builder/dashboard.service'; +@Component({ + selector: 'app-allnewdash', + templateUrl: './allnewdash.component.html', + styleUrls: ['./allnewdash.component.scss'] +}) +export class AllnewdashComponent implements OnInit { + addModall:boolean = false; + selected:any[] = []; + loading = false; + data:any; + id:any; + moduleId:any; + modalDelete = false; + rowSelected :any= {}; + rows: any[]; + projectname; + projectId; + error; + constructor( + private router : Router, + private route: ActivatedRoute,private dashboardService : DashboardService, + // private wireframeservice : WireframeService, + private excel: ExcelService,private mainService: ModulesetupService, + private toastr: ToastrService,) { } + + ngOnInit(): void { + // this.projectId=this.wireframeservice.getProjectId(); + console.log(this.projectId); + this.id = this.route.snapshot.params["id"]; // fb_header_id + // this.moduleId = this.wireframeservice.getModuleId(); // get from session storage + console.log(this.moduleId); + + this.getdashboard(); + // this.getprojectName(this.projectId); + } + + getprojectName(id){ + this.mainService.getProjectModules(id).subscribe((data) => { + console.log(data); + this.projectname=data.items[0]['projectName']; + console.log(this.projectname); + }); + } + + + getdashboard() + { + this.dashboardService.getAllDash().subscribe((data) =>{ + this.data = data; + this.rows = this.data; + console.log(data); + this.error="No data Available"; + console.log(this.error); + }); + } + + openModal() + { + this.addModall = true; + } + gotoadd() + { + this.router.navigate(['../adddata'],{relativeTo:this.route}); + } + goToEdit(id:number) + { + this.router.navigate(['../editdashn/'+id],{relativeTo:this.route}); + } + + goToEditData(id: number){ + this.router.navigate(['../editdata/'+id],{relativeTo:this.route}); + } + + onExport() { + this.excel.exportAsExcelFile(this.rows, 'user_', + moment().format('YYYYMMDD_HHmmss')) + } + + gotoAction(){ + this.router.navigate(["../../actions"], { relativeTo: this.route, queryParams: { m_id: this.moduleId,pname:this.projectname } }); + } + gotoRepo(){ + this.router.navigate(["../../modulecard"], { relativeTo: this.route, queryParams: { p_id: this.projectId } }); + } + + onDelete(row){ + this.rowSelected = row; + console.log(this.rowSelected); + this.modalDelete = true; + } + delete(id) + { + this.modalDelete = false; + console.log("in delete "+id); + this.dashboardService.deleteField(id).subscribe((data)=>{ + console.log(data); + this.ngOnInit(); + }); + if (id) { + this.toastr.success('Deleted successfully'); + } + } + // openModal() + // { + // this.addModall = true; + // } + gotorunner() + { + this.router.navigate(['../../dashboardrunner'],{relativeTo:this.route}); + } + // goToEdit() + // { + // this.router.navigate(['../editdashn'],{relativeTo:this.route}); + // } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/dashboardnew.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/dashboardnew.component.html new file mode 100644 index 0000000..90c6b64 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/dashboardnew.component.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/dashboardnew.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/dashboardnew.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/dashboardnew.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/dashboardnew.component.spec.ts new file mode 100644 index 0000000..c7c3d2e --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/dashboardnew.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DashboardnewComponent } from './dashboardnew.component'; + +describe('DashboardnewComponent', () => { + let component: DashboardnewComponent; + let fixture: ComponentFixture; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [DashboardnewComponent] + }); + fixture = TestBed.createComponent(DashboardnewComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/dashboardnew.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/dashboardnew.component.ts new file mode 100644 index 0000000..3078dd2 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/dashboardnew.component.ts @@ -0,0 +1,10 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-dashboardnew', + templateUrl: './dashboardnew.component.html', + styleUrls: ['./dashboardnew.component.scss'] +}) +export class DashboardnewComponent { + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/editformnewdash/editformnewdash.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/editformnewdash/editformnewdash.component.html new file mode 100644 index 0000000..530e940 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/editformnewdash/editformnewdash.component.html @@ -0,0 +1,54 @@ +

    Dashboard

    +Edit Mode +

    + +
    + + + + + + +
    +
    +
    + + +
    +
    + + +
    + + +
    + + +
    +
    + + +
    +
    +
    + +
    + + +
    + +
    +
    diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/editformnewdash/editformnewdash.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/editformnewdash/editformnewdash.component.scss new file mode 100644 index 0000000..4a7ff75 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/editformnewdash/editformnewdash.component.scss @@ -0,0 +1,81 @@ +//@import "../../../../assets/scss/var"; +.s-info-bar { + display: flex; + flex-direction: row; + justify-content: space-between; + button { + outline: none; + } + } + + .entry-pg { + width: 750px; + } + + .button1::after { + content: none; + } + .button1:hover::after { + content: "ADD ROWS"; + } + + $bg-color: #dddddd; + + .section { + background-color: $bg-color; + height: 40px; + } + + .section p { + //color: white; + font-weight: bold; + padding: 10px; + font-size: 18px; + } + + .clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; + } + + .clr-file { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + //padding: 0.6rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; + } + + .center { + text-align: center; + } + input[type=text],[type=date],textarea { + width: 100%; + padding: 15px 15px; + margin-top: 3px; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; + } + + .required-field{ + color: red; + + } + select{ + width: 100%; + margin-top: 3px; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; + } + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/editformnewdash/editformnewdash.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/editformnewdash/editformnewdash.component.spec.ts new file mode 100644 index 0000000..9872c96 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/editformnewdash/editformnewdash.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EditformnewdashComponent } from './editformnewdash.component'; + +describe('EditformnewdashComponent', () => { + let component: EditformnewdashComponent; + let fixture: ComponentFixture; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [EditformnewdashComponent] + }); + fixture = TestBed.createComponent(EditformnewdashComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/editformnewdash/editformnewdash.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/editformnewdash/editformnewdash.component.ts new file mode 100644 index 0000000..6e46676 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/editformnewdash/editformnewdash.component.ts @@ -0,0 +1,93 @@ +import { Component, OnInit } from '@angular/core'; +import { ActivatedRoute, Router } from '@angular/router'; +import { ToastrService } from 'ngx-toastr'; +import { DashboardService } from 'src/app/services/builder/dashboard.service'; +// import { TechnologyStackService } from 'src/app/services/builder/technology-stack.service'; +// import { WireframeService } from 'src/app/services/builder/wireframe.service'; + +@Component({ + selector: 'app-editformnewdash', + templateUrl: './editformnewdash.component.html', + styleUrls: ['./editformnewdash.component.scss'] +}) +export class EditformnewdashComponent implements OnInit { + updated = false; + Header; + id: number; + moduleId; + tech_stacks=[]; + object_types = ["form", "bi", "report", "api"]; + sub_object_types = [ + "only header", + "only line", + "header line", + "header multiline", + "wrokflow", + "setup", + "std report", + "bi report", + "rest api", + ]; + constructor(private router: Router, + private route: ActivatedRoute, private dashboardService : DashboardService, + // private technologyStackService:TechnologyStackService, + private toastr: ToastrService, + // private wireframeService :WireframeService, + ) { } + + ngOnInit(): void { + // this.moduleId = this.wireframeService.getModuleId(); + this.id = this.route.snapshot.params["id"]; + console.log("update with id = ", this.id); + this.getById(this.id); + // this.technologyStackService.getAll().subscribe((data)=>{ + // console.log(data) + // this.tech_stacks=data; + // }); + } + + getById(id: number) { + this.dashboardService.getById(id).subscribe( + (data) => { + console.log(data); + this.Header = data; + }, + (err) => { + console.log(err); + } + ); + } + update() { + this.dashboardService.updateDash(this.Header).subscribe( + (data) => { + console.log(data); + if (data) { + this.toastr.success('Update successfully'); + } + this.router.navigate(["../../all"], { relativeTo: this.route }); + //this.router.navigate(["../../all"],{ relativeTo: this.route, queryParams: { p_id: this.projectId } }); + }, + (error) => { + // console.log(error); + // const objectArray = Object.entries(error.error.fieldErrors); + // objectArray.forEach(([k, v]) => { + // console.log(k); + // console.log(v); + // this.fieldErors.push({ field: k, message: v }); + // }); + console.log(error); // this will come from backend + } + ); + // this.lineBuilder_Header = new Rn_Cff_ActionBuilder_Header(); + } + + onSubmit() { + this.updated = true; + this.update(); + } + + onBack() { + this.router.navigate(["../../all"], { relativeTo: this.route }); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/editnewdash/editnewdash.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/editnewdash/editnewdash.component.html new file mode 100644 index 0000000..02dce20 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/editnewdash/editnewdash.component.html @@ -0,0 +1,198 @@ + + +
    + +
    + {{dashboardName}} +
    +
    + +
    + +
    + +
    + +
    + + + + + + + + + + + +

    {{item.name}}

    + + +
    +
    +
    +
    +
    + + +
    + + + + + + + + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/editnewdash/editnewdash.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/editnewdash/editnewdash.component.scss new file mode 100644 index 0000000..2c08e48 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/editnewdash/editnewdash.component.scss @@ -0,0 +1,51 @@ +.componentbtn{ + color: white; + background-color: #03AC13; + border: none; + } + .content-container { + min-height: 100vh; + height: initial; + } + a:hover { + text-decoration: none; + cursor: pointer; + } + .clr-checkbox{ + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + // padding: 0.75rem 0.75rem; + // margin-top: 3px; + width: 100%; + margin-left: 20px; + margin-bottom: 18px; + } + .clr-input, .clr-dropdown { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; + } + + select{ + width: 100%; + padding: 5px 5px; + margin-top: 3px; + border: 1px solid #ccc; + border-radius: 4px; + } + + input[type=text],[type=date],textarea { + width: 100%; + padding: 15px 15px; + // margin: 8px 0; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; + } \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/editnewdash/editnewdash.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/editnewdash/editnewdash.component.spec.ts new file mode 100644 index 0000000..82dc288 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/editnewdash/editnewdash.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EditnewdashComponent } from './editnewdash.component'; + +describe('EditnewdashComponent', () => { + let component: EditnewdashComponent; + let fixture: ComponentFixture; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [EditnewdashComponent] + }); + fixture = TestBed.createComponent(EditnewdashComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/editnewdash/editnewdash.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/editnewdash/editnewdash.component.ts new file mode 100644 index 0000000..5104759 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/editnewdash/editnewdash.component.ts @@ -0,0 +1,617 @@ +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import { GridsterConfig } from 'angular-gridster2'; +import { ToastrService } from 'ngx-toastr'; +import { DashboardContentModel, DashboardModel, WidgetModel } from '../../../../../models/builder/dashboard'; +import { Dashboard3Service } from '../../../../../services/builder/dashboard3.service'; +import { BarChartComponent } from '../gadgets/bar-chart/bar-chart.component'; +import { BubbleChartComponent } from '../gadgets/bubble-chart/bubble-chart.component'; +import { DoughnutChartComponent } from '../gadgets/doughnut-chart/doughnut-chart.component'; +import { DynamicChartComponent } from '../gadgets/dynamic-chart/dynamic-chart.component'; +import { FinancialChartComponent } from '../gadgets/financial-chart/financial-chart.component'; +import { LineChartComponent } from '../gadgets/line-chart/line-chart.component'; +import { PieChartComponent } from '../gadgets/pie-chart/pie-chart.component'; +import { PolarChartComponent } from '../gadgets/polar-chart/polar-chart.component'; +import { RadarChartComponent } from '../gadgets/radar-chart/radar-chart.component'; +import { ScatterChartComponent } from '../gadgets/scatter-chart/scatter-chart.component'; +import { ToDoChartComponent } from '../gadgets/to-do-chart/to-do-chart.component'; +import { GridViewComponent } from '../gadgets/grid-view/grid-view.component'; +import { DatastoreService } from 'src/app/services/fnd/datastore.service'; +import { AlertsService } from 'src/app/services/fnd/alerts.service'; +import { isArray } from 'highcharts'; +// import { ChartItem } from '../chartitem'; + +function isNullArray(arr) { + return !Array.isArray(arr) || arr.length === 0; +} + +@Component({ + selector: 'app-editnewdash', + templateUrl: './editnewdash.component.html', + styleUrls: ['./editnewdash.component.scss'] +}) + + + +export class EditnewdashComponent implements OnInit { + + editId:number; + toggle:boolean; + modeledit:boolean = false; + public entryForm: FormGroup; + + WidgetsMock: WidgetModel[] = [ + { + name: 'Radar Chart', + identifier: 'radar_chart' + }, + { + name: 'Doughnut Chart', + identifier: 'doughnut_chart' + }, + { + name: 'Line Chart', + identifier: 'line_chart' + }, + { + name: 'Bar Chart', + identifier: 'bar_chart' + }, + { + name: 'Pie Chart', + identifier: 'pie_chart' + }, + { + name: 'Polar Area Chart', + identifier: 'polar_area_chart' + }, + { + name: 'Bubble Chart', + identifier: 'bubble_chart' + }, + { + name: 'Scatter Chart', + identifier: 'scatter_chart' + }, + // { + // name: 'Dynamic Chart', + // identifier: 'dynamic_chart' + // }, + // { + // name: 'Financial Chart', + // identifier: 'financial_chart' + // }, + { + name: 'To Do', + identifier: 'to_do_chart' + }, + { + name: 'Grid View', + identifier: 'grid_view' + } +] + + public options: GridsterConfig; + protected dashboardId: number; + protected dashboardCollection: DashboardModel; + //dashboardCollection:any; + protected dashboardCollection1: DashboardModel[]; + public dashboardArray: DashboardContentModel[]; + public dashArr:[]; + + protected componentCollection = [ + { name: "Line Chart", componentInstance: LineChartComponent }, + { name: "Doughnut Chart", componentInstance: DoughnutChartComponent }, + { name: "Radar Chart", componentInstance: RadarChartComponent }, + { name: "Bar Chart", componentInstance: BarChartComponent }, + { name: "Pie Chart", componentInstance: PieChartComponent }, + { name: "Polar Area Chart", componentInstance: PolarChartComponent }, + { name: "Bubble Chart", componentInstance: BubbleChartComponent }, + { name: "Scatter Chart", componentInstance: ScatterChartComponent }, + { name: "Dynamic Chart", componentInstance: DynamicChartComponent }, + { name: "Financial Chart", componentInstance: FinancialChartComponent }, + { name: "To Do Chart", componentInstance: ToDoChartComponent }, + { name: "Grid View", componentInstance: GridViewComponent }, + ]; + model:any; + linesdata:any; + id:any; + gadgetsEditdata = { + donut : '', + chartlegend: '', + showlabel : '', + charturl: '', + chartparameter : '', + datastore : '', + table:'', + datasource : '', + charttitle:'', + id:'', + fieldName:'', + chartcolor:'', + slices:'', + yAxis:'', + xAxis:'' + +}; + constructor(private route: ActivatedRoute, + private router : Router, + private dashboardService: Dashboard3Service, + private toastr:ToastrService, + private _fb: FormBuilder, + private datastoreService: DatastoreService, + private alertService:AlertsService,) { } + + ngOnInit(): void { + + // Grid options + this.options = { + gridType: "fit", + enableEmptyCellDrop: true, + emptyCellDropCallback: this.onDrop, + pushItems: true, + swap: true, + pushDirections: { north: true, east: true, south: true, west: true }, + resizable: { enabled: true }, + itemChangeCallback: this.itemChange.bind(this), + draggable: { + enabled: true, + ignoreContent: true, + dropOverItems: true, + dragHandleClass: "drag-handler", + ignoreContentClass: "no-drag", + }, + displayGrid: "always", + minCols: 10, + minRows: 10 + }; + this.getData(); + + this.editId = this.route.snapshot.params.id; + console.log(this.editId); + this.dashboardService.getById(this.editId).subscribe((data)=>{ + console.log("ngOnInit",data); + this.linesdata = data; + this.id = data.dashbord1_Line[0].id; + console.log("this.id ",this.id); + }, + (error: any)=>{ + + } + ); + + this.entryForm = this._fb.group({ + donut : [null], + chartlegend: [null], + showlabel : [null], + charturl: [null], + chartparameter : [null], + datastore:[null], + table:[null], + fieldName: [null], + datasource : [null], + charttitle:[null], + id:[null], + chartcolor:[null], + slices:[null], + yAxis:[null], + xAxis: [null], + }); + } + + toggleMenu() { + this.toggle = !this.toggle; + } + + onDrag(event, identifier) { + console.log("on drag",identifier); + console.log("on drag ",event); + event.dataTransfer.setData('widgetIdentifier', identifier); + } + datagadgets:any; + dashboardLine:any; + dashboardName:any; + getData() { + // We get the id in get current router dashboard/:id + this.route.params.subscribe(params => { + // + is used to cast string to int + this.dashboardId = +params["id"]; + // We make a get request with the dashboard id + this.dashboardService.getById(this.dashboardId).subscribe(dashboard => { + // We fill our dashboardCollection with returned Observable + this.dashboardName = dashboard.dashboard_name; + this.datagadgets = dashboard; + this.dashboardLine = dashboard.dashbord1_Line; + //this.dashboardCollection = dashboard.dashbord1_Line.model; + console.log("this.datagadgets",this.datagadgets); + console.log("this.dashboardLine",this.dashboardLine); + this.dashboardCollection =JSON.parse(this.dashboardLine[0].model) ; + //this.dashboardCollection =this.dashboardLine[0].model ; + console.log("this.dasboard ",this.dashboardCollection ); + console.log(this.dashboardCollection); + // We parse serialized Json to generate components on the fly + this.parseJson(this.dashboardCollection); + // We copy array without reference + this.dashboardArray = this.dashboardCollection.dashboard.slice(); + console.log("this.dashboardArray",this.dashboardArray); + }); + }); + + + } + + // Super TOKENIZER 2.0 POWERED BY NATCHOIN + parseJson(dashboardCollection: DashboardModel) { + // We loop on our dashboardCollection + dashboardCollection.dashboard.forEach(dashboard => { + // We loop on our componentCollection + this.componentCollection.forEach(component => { + // We check if component key in our dashboardCollection + // is equal to our component name key in our componentCollection + if (dashboard.component === component.name) { + // If it is, we replace our serialized key by our component instance + dashboard.component = component.componentInstance; + } + }); + }); + } + + serialize(dashboardCollection) { + // We loop on our dashboardCollection + dashboardCollection.forEach(dashboard => { + // We loop on our componentCollection + this.componentCollection.forEach(component => { + // We check if component key in our dashboardCollection + // is equal to our component name key in our componentCollection + if (dashboard.name === component.name) { + dashboard.component = component.name; + } + }); + }); + } + + itemChange() { + this.dashboardCollection.dashboard = this.dashboardArray; + console.log("itemChange this.dashboardCollection.dashboard ",this.dashboardCollection.dashboard); + console.log("itemChange this.dashboardCollection ",this.dashboardCollection); + console.log("itemChange this.dashboardCollection type",typeof this.dashboardCollection); + console.log("itemChange this.dashboardArray ",this.dashboardArray); + let tmp = JSON.stringify(this.dashboardCollection); + console.log("temp data",tmp); + let parsed: DashboardModel = JSON.parse(tmp); + console.log("parsed data",parsed); + console.log("let parsed ",typeof parsed); + this.serialize(parsed.dashboard); + console.log("item chnage function ", typeof this.dashboardArray); + //this._ds.updateDashboard(this.dashboardId, parsed).subscribe(); + } + + onDrop(ev) { + const componentType = ev.dataTransfer.getData("widgetIdentifier"); + let maxChartId = this.dashboardArray?.reduce((maxId, item) => Math.max(maxId, item.chartid), 0); + switch (componentType) { + case "radar_chart": + return this.dashboardArray.push({ + cols: 5, + rows: 6, + x: 0, + y: 0, + chartid:maxChartId + 1, + component: RadarChartComponent, + name: "Radar Chart" + }); + case "line_chart": + return this.dashboardArray.push({ + cols: 5, + rows: 7, + x: 0, + y: 0, + chartid:maxChartId + 1, + component: LineChartComponent, + name: "Line Chart" + }); + case "doughnut_chart": + return this.dashboardArray.push({ + cols: 5, + rows: 6, + x: 0, + y: 0, + chartid:maxChartId + 1, + component: DoughnutChartComponent, + name: "Doughnut Chart" + }); + case "bar_chart": + return this.dashboardArray.push({ + cols: 5, + rows: 6, + x: 0, + y: 0, + chartid:maxChartId + 1, + component: BarChartComponent, + name: "Bar Chart" + }); + case "pie_chart": + return this.dashboardArray.push({ + cols: 5, + rows: 6, + x: 0, + y: 0, + chartid:maxChartId + 1, + component: PieChartComponent, + name: "Pie Chart" + }); + case "polar_area_chart": + return this.dashboardArray.push({ + cols: 5, + rows: 6, + x: 0, + y: 0, + chartid:maxChartId + 1, + component: PolarChartComponent, + name: "Polar Area Chart" + }); + case "bubble_chart": + return this.dashboardArray.push({ + cols: 5, + rows: 6, + x: 0, + y: 0, + chartid:maxChartId + 1, + component: BubbleChartComponent, + name: "Bubble Chart" + }); + case "scatter_chart": + return this.dashboardArray.push({ + cols: 5, + rows: 6, + x: 0, + y: 0, + chartid:maxChartId + 1, + component: ScatterChartComponent, + name: "Scatter Chart" + }); + case "dynamic_chart": + return this.dashboardArray.push({ + cols: 5, + rows: 6, + x: 0, + y: 0, + chartid:maxChartId + 1, + component: DynamicChartComponent, + name: "Dynamic Chart" + }); + case "financial_chart": + return this.dashboardArray.push({ + cols: 5, + rows: 6, + x: 0, + y: 0, + chartid:maxChartId + 1, + component: FinancialChartComponent, + name: "Financial Chart" + }); + case "to_do_chart": + return this.dashboardArray.push({ + cols: 5, + rows: 5, + x: 0, + y: 0, + chartid:maxChartId + 1, + component: ToDoChartComponent, + name: "To Do Chart" + }); + case "grid_view": + return this.dashboardArray.push({ + cols: 5, + rows: 5, + x: 0, + y: 0, + chartid:maxChartId + 1, + component: GridViewComponent, + name: "Grid View" + }); + } + } + removeItem(item) { + this.dashboardArray.splice( + this.dashboardArray.indexOf(item), + 1 + ); + this.itemChange(); + } + + changedOptions() { + this.options.api.optionsChanged(); + } + + modelid:number ; + editGadget(item) + { + this.modeledit = true; + this.modelid = item.chartid; + console.log(this.modelid); + this.gadgetsEditdata = item; + this.gadgetsEditdata.fieldName = item.name; + if(item.showlabel === undefined){ item.showlabel = true; } + if(item.chartcolor === undefined ){ item.chartcolor = true;} + if(item.chartlegend === undefined){ item.chartlegend = true; } + this.getStores(); + if(item.datastore !== undefined || '' || null){ + const datastore = item.datastore; + this.getTables(datastore); + const table = item.table; + this.getColumns(datastore,table); + console.log(item.yAxis); + if(isArray(item.yAxis)){ + this.selectedyAxis = item.yAxis; + console.log( this.selectedyAxis); + } + }else{ + this.selectedyAxis = []; + } + console.log(item); + } + + dashbord1_Line = { + //model:JSON.stringify(this.da), + model:'' + } + + + UpdateLine() + { + console.log('Add button clicked.......'); + console.log(this.dashboardArray); + console.log(this.dashboardCollection); + console.log(typeof this.dashboardCollection); + console.log(this.id); + //this.dashbord1_Line.model = JSON.stringify(this.dashboardCollection); + + //https://www.w3schools.com/js/tryit.asp?filename=tryjson_stringify_function_tostring + +let cmp=this.dashboardCollection.dashboard.forEach(dashboard=>{ + this.componentCollection.forEach(component=>{ + if (dashboard.name === component.name) { + dashboard.component = component.name; + } }) +}) +console.log(cmp); + + let tmp = JSON.stringify(this.dashboardCollection); + // var merged = this.dashboardArray.reduce((current, value, index) => { + // if(index > 0) + // current += ','; + + // return current + value.component; + // }, ''); + + //console.log(merged); + console.log("temp data",typeof tmp); + console.log(tmp); + let parsed= JSON.parse(tmp); + this.serialize(parsed.dashboard); + this.dashbord1_Line.model = tmp; + + // let obj = this.dashboardCollection; + // obj[1].component = obj[1].component.toString(); + // let myJSON = JSON.stringify(obj); + // this.dashbord1_Line.model = myJSON; + + console.log("line data in addgadget ",this.dashbord1_Line); + console.log("line data in addgadget type ",typeof this.dashbord1_Line); + console.log("line model data ",this.dashbord1_Line.model); + console.log("line model data type",typeof this.dashbord1_Line.model); + this.dashboardService.UpdateLineData(this.id,this.dashbord1_Line).subscribe( + (data: any)=>{ + console.log('Updation Successful...'); + this.ngOnInit(); + console.log(data); + this.router.navigate(["../../all"], { relativeTo: this.route }) + } + ); + // if (data) { + // this.toastr.success('Updated successfully'); + // } + } + + onSubmit(id) + { + console.log(id); + if (!isNullArray(this.selectedyAxis)) { + console.log("get y-axis array", this.selectedyAxis); + this.entryForm.patchValue({ yAxis: this.selectedyAxis }); + } + let formdata = this.entryForm.value; + let num = id; + console.log(this.entryForm.value); + this.dashboardCollection.dashboard = this.dashboardCollection.dashboard.map(item => { + if(item.chartid == num) + { + //item["product_id"] = "thisistest"; + const xyz = {...item,...formdata} + console.log(xyz); + return xyz; + } + return item + }); + console.log(this.dashboardCollection.dashboard); + this.modeledit = false; + + // this.entryForm.reset(); + + } + goBack(){ + this.router.navigate(["../../all"], { relativeTo: this.route }) + } + + onSchedule(){ + this.router.navigate(['../../schedule/'+ this.editId],{relativeTo:this.route}); + } + + + /////// + storedata; + getStores(){ + this.datastoreService.getAll().subscribe((data) => { + console.log(data); + this.storedata = data; + },(error) => { + console.log(error); + }); + } + + selectedStoreId; + storename(val){ + console.log(val); + this.selectedStoreId = val; + this.getTables(this.selectedStoreId); + } + + TableData; + getTables(id){ + this.alertService.getTablefromstore(id).subscribe(gateway =>{ + console.log(gateway); + this.TableData = gateway; + },(error)=>{ + console.log(error); + }); + } + + tablename(val){ + console.log(val); + this.getColumns(this.selectedStoreId,val); + } + selectedyAxis; + columnData; + getColumns(id,table){ + this.alertService.getColumnfromurl(table).subscribe(data =>{ + console.log(data); + this.columnData = data; + },(error)=>{ + console.log(error); + }); + } + + + // toggleAddToDashboard(item) { + // item.addToDashboard = item.addToDashboard; + // } + + // getChartDataForToggleSwitchTrue() { + // for (let i = 0; i < this.dashArr.length; i++) { + // if (this.dashArr[i].addToDashboard) { + // this.dashboardService.getChartData( + // this.dashArr[i].charturl, // Assuming charturl is the correct property to pass as a string + // true // Pass true to indicate fetching charts with toggle switch set to true + // ).subscribe(tData => { + // console.log(tData); + // // this.dashArr[i].featchData = tData; + // }); + // } + // } + // } + + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bar-chart/bar-chart.component.css b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bar-chart/bar-chart.component.css new file mode 100644 index 0000000..dc9ed07 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bar-chart/bar-chart.component.css @@ -0,0 +1 @@ +/*# sourceMappingURL=bar-chart.component.css.map */ \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bar-chart/bar-chart.component.css.map b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bar-chart/bar-chart.component.css.map new file mode 100644 index 0000000..e0b82da --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bar-chart/bar-chart.component.css.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":"","file":"bar-chart.component.css"} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bar-chart/bar-chart.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bar-chart/bar-chart.component.html new file mode 100644 index 0000000..0fa4df5 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bar-chart/bar-chart.component.html @@ -0,0 +1,9 @@ +
    + + +
    diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bar-chart/bar-chart.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bar-chart/bar-chart.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bar-chart/bar-chart.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bar-chart/bar-chart.component.spec.ts new file mode 100644 index 0000000..0fd6253 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bar-chart/bar-chart.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BarChartComponent } from './bar-chart.component'; + +describe('BarChartComponent', () => { + let component: BarChartComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ BarChartComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(BarChartComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bar-chart/bar-chart.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bar-chart/bar-chart.component.ts new file mode 100644 index 0000000..1d2c277 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bar-chart/bar-chart.component.ts @@ -0,0 +1,33 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-bar-chart', + templateUrl: './bar-chart.component.html', + styleUrls: ['./bar-chart.component.scss'] +}) +export class BarChartComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + barChartLabels: string[] = ['Apple', 'Banana', 'Kiwifruit', 'Blueberry', 'Orange', 'Grapes']; + barChartType: string = 'bar'; + // barChartLegend = true; + barChartPlugins = []; + barChartData: any[] = [ + { data: [45, 37, 60, 70, 46, 33], label: 'Best Fruits' } + ]; + + + + // events + public chartClicked(e: any): void { + console.log(e); + } + + public chartHovered(e: any): void { + console.log(e); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bubble-chart/bubble-chart.component.css b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bubble-chart/bubble-chart.component.css new file mode 100644 index 0000000..68bf163 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bubble-chart/bubble-chart.component.css @@ -0,0 +1 @@ +/*# sourceMappingURL=bubble-chart.component.css.map */ \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bubble-chart/bubble-chart.component.css.map b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bubble-chart/bubble-chart.component.css.map new file mode 100644 index 0000000..ca59a26 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bubble-chart/bubble-chart.component.css.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":"","file":"bubble-chart.component.css"} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bubble-chart/bubble-chart.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bubble-chart/bubble-chart.component.html new file mode 100644 index 0000000..5f6157d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bubble-chart/bubble-chart.component.html @@ -0,0 +1,9 @@ +
    + + +
    diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bubble-chart/bubble-chart.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bubble-chart/bubble-chart.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bubble-chart/bubble-chart.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bubble-chart/bubble-chart.component.spec.ts new file mode 100644 index 0000000..6f37403 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bubble-chart/bubble-chart.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BubbleChartComponent } from './bubble-chart.component'; + +describe('BubbleChartComponent', () => { + let component: BubbleChartComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ BubbleChartComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(BubbleChartComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bubble-chart/bubble-chart.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bubble-chart/bubble-chart.component.ts new file mode 100644 index 0000000..b01a8b0 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/bubble-chart/bubble-chart.component.ts @@ -0,0 +1,98 @@ +import { Component, OnInit } from '@angular/core'; +import { ChartConfiguration, ChartDataset, ChartOptions } from 'chart.js'; +@Component({ + selector: 'app-bubble-chart', + templateUrl: './bubble-chart.component.html', + styleUrls: ['./bubble-chart.component.scss'] +}) +export class BubbleChartComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + public bubbleChartOptions: ChartConfiguration['options'] = { + // scales: { + // x: { + // min: 0, + // max: 30, + // ticks: {} + // }, + // y: { + // min: 0, + // max: 30, + // ticks: {} + // }, + // plugins: { + // title: { + // display: true, + // text: 'Bubble Chart' + // } + // } + // } + }; + + public bubbleChartType: string = 'bubble'; + // public bubbleChartLegend = true; + public bubbleChartData: ChartDataset[] = [ + { + data: [ + { x: 10, y: 10, r: 10 }, + { x: 15, y: 5, r: 15 }, + { x: 26, y: 12, r: 23 }, + { x: 7, y: 8, r: 8 }, + ], + label: 'Investment Equities', + backgroundColor: 'rgba(255, 0, 0, 0.6)', // Red + borderColor: 'blue', + hoverBackgroundColor: 'purple', + hoverBorderColor: 'red', + }, + { + data: [ + { x: 5, y: 15, r: 12 }, + { x: 20, y: 7, r: 8 }, + { x: 12, y: 18, r: 15 }, + { x: 8, y: 6, r: 10 }, + ], + label: 'Investment Bonds', + backgroundColor: 'rgba(0, 255, 0, 0.6)', // Green + borderColor: 'green', + hoverBackgroundColor: 'yellow', + hoverBorderColor: 'blue', + }, + // { + // data: [ + // { x: 10, y: 10, r: 10 }, + // { x: 15, y: 5, r: 15 }, + // { x: 26, y: 12, r: 23 }, + // { x: 7, y: 8, r: 8 }, + // ], + // label: 'Investment Equities', + // backgroundColor: [ + // 'red', + // 'green', + // 'blue', + // 'purple', + // 'yellow', + // 'brown', + // 'magenta', + // 'cyan', + // 'orange', + // 'pink' + // ], + // borderColor: 'blue', + // hoverBackgroundColor: 'purple', + // hoverBorderColor: 'red', + // }, + ]; + + // events + public chartClicked(e: any): void { + console.log(e); + } + + public chartHovered(e: any): void { + console.log(e); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/doughnut-chart/doughnut-chart.component.css b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/doughnut-chart/doughnut-chart.component.css new file mode 100644 index 0000000..f7a6815 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/doughnut-chart/doughnut-chart.component.css @@ -0,0 +1 @@ +/*# sourceMappingURL=doughnut-chart.component.css.map */ \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/doughnut-chart/doughnut-chart.component.css.map b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/doughnut-chart/doughnut-chart.component.css.map new file mode 100644 index 0000000..b06f027 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/doughnut-chart/doughnut-chart.component.css.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":"","file":"doughnut-chart.component.css"} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/doughnut-chart/doughnut-chart.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/doughnut-chart/doughnut-chart.component.html new file mode 100644 index 0000000..cab5b29 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/doughnut-chart/doughnut-chart.component.html @@ -0,0 +1,8 @@ +
    + +
    diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/doughnut-chart/doughnut-chart.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/doughnut-chart/doughnut-chart.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/doughnut-chart/doughnut-chart.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/doughnut-chart/doughnut-chart.component.spec.ts new file mode 100644 index 0000000..6730967 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/doughnut-chart/doughnut-chart.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DoughnutChartComponent } from './doughnut-chart.component'; + +describe('DoughnutChartComponent', () => { + let component: DoughnutChartComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ DoughnutChartComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(DoughnutChartComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/doughnut-chart/doughnut-chart.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/doughnut-chart/doughnut-chart.component.ts new file mode 100644 index 0000000..137455b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/doughnut-chart/doughnut-chart.component.ts @@ -0,0 +1,30 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-doughnut-chart', + templateUrl: './doughnut-chart.component.html', + styleUrls: ['./doughnut-chart.component.scss'] +}) +export class DoughnutChartComponent implements OnInit { + public doughnutChartLabels: string[] = [ + "Download Sales", + "In-Store Sales", + "Mail-Order Sales" + ]; + public doughnutChartData: number[] = [350, 450, 100]; + public doughnutChartType: string = "doughnut"; + + // events + public chartClicked(e: any): void { + console.log(e); + } + + public chartHovered(e: any): void { + console.log(e); + } + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/dynamic-chart/dynamic-chart.component.css b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/dynamic-chart/dynamic-chart.component.css new file mode 100644 index 0000000..c95881a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/dynamic-chart/dynamic-chart.component.css @@ -0,0 +1 @@ +/*# sourceMappingURL=dynamic-chart.component.css.map */ \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/dynamic-chart/dynamic-chart.component.css.map b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/dynamic-chart/dynamic-chart.component.css.map new file mode 100644 index 0000000..0d29454 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/dynamic-chart/dynamic-chart.component.css.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":"","file":"dynamic-chart.component.css"} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/dynamic-chart/dynamic-chart.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/dynamic-chart/dynamic-chart.component.html new file mode 100644 index 0000000..e00b379 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/dynamic-chart/dynamic-chart.component.html @@ -0,0 +1,10 @@ +
    + + +
    + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/dynamic-chart/dynamic-chart.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/dynamic-chart/dynamic-chart.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/dynamic-chart/dynamic-chart.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/dynamic-chart/dynamic-chart.component.spec.ts new file mode 100644 index 0000000..fc47783 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/dynamic-chart/dynamic-chart.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DynamicChartComponent } from './dynamic-chart.component'; + +describe('DynamicChartComponent', () => { + let component: DynamicChartComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ DynamicChartComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(DynamicChartComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/dynamic-chart/dynamic-chart.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/dynamic-chart/dynamic-chart.component.ts new file mode 100644 index 0000000..2173924 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/dynamic-chart/dynamic-chart.component.ts @@ -0,0 +1,70 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; +import { ChartConfiguration, ChartData, } from 'chart.js'; +import { BaseChartDirective } from 'ng2-charts'; +@Component({ + selector: 'app-dynamic-chart', + templateUrl: './dynamic-chart.component.html', + styleUrls: ['./dynamic-chart.component.scss'] +}) +export class DynamicChartComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + @ViewChild(BaseChartDirective) chart: BaseChartDirective | undefined; + + public barChartOptions: ChartConfiguration['options'] = { + elements: { + line: { + tension: 0.4 + } + }, + // We use these empty structures as placeholders for dynamic theming. + // scales: { + // x: {}, + // y: { + // min: 10 + // } + // }, + plugins: { + legend: { display: true }, + } + }; + public dynamicChartLabels: string[] = [ '2006', '2007', '2008', '2009', '2010', '2011', '2012' ]; + public barChartType: string = 'bar'; + + // public barChartData: ChartData<'bar'> = { + // labels: this.barChartLabels, + // datasets: [ + // { data: [ 65, 59, 80, 81, 56, 55, 40 ], label: 'Series A' }, + // { data: [ 28, 48, 40, 19, 86, 27, 90 ], label: 'Series B' } + // ] + // }; + + + public dynamicChartData: any = [ + { data: [65, 59, 90, 81, 56, 55, 40], label: "Series A" }, + { data: [28, 48, 40, 19, 96, 27, 100], label: "Series B" } + ]; + + // events + public chartClicked(e: any): void { + console.log(e); + } + + public chartHovered(e: any): void { + console.log(e); + } + // public chartClicked({ event, active }: { event?: ChartEvent, active?: {}[] }): void { + // console.log(event, active); + // } + + // public chartHovered({ event, active }: { event?: ChartEvent, active?: {}[] }): void { + // console.log(event, active); + // } + + public randomize(): void { + this.barChartType = this.barChartType === 'bar' ? 'line' : 'bar'; + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/financial-chart/financial-chart.component.css b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/financial-chart/financial-chart.component.css new file mode 100644 index 0000000..ac86a4e --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/financial-chart/financial-chart.component.css @@ -0,0 +1 @@ +/*# sourceMappingURL=financial-chart.component.css.map */ \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/financial-chart/financial-chart.component.css.map b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/financial-chart/financial-chart.component.css.map new file mode 100644 index 0000000..b2642ea --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/financial-chart/financial-chart.component.css.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":"","file":"financial-chart.component.css"} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/financial-chart/financial-chart.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/financial-chart/financial-chart.component.html new file mode 100644 index 0000000..56547d5 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/financial-chart/financial-chart.component.html @@ -0,0 +1 @@ +

    financial-chart works!

    diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/financial-chart/financial-chart.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/financial-chart/financial-chart.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/financial-chart/financial-chart.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/financial-chart/financial-chart.component.spec.ts new file mode 100644 index 0000000..8b12e17 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/financial-chart/financial-chart.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { FinancialChartComponent } from './financial-chart.component'; + +describe('FinancialChartComponent', () => { + let component: FinancialChartComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ FinancialChartComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(FinancialChartComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/financial-chart/financial-chart.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/financial-chart/financial-chart.component.ts new file mode 100644 index 0000000..664e7cd --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/financial-chart/financial-chart.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-financial-chart', + templateUrl: './financial-chart.component.html', + styleUrls: ['./financial-chart.component.scss'] +}) +export class FinancialChartComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/grid-view/grid-view.component.css b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/grid-view/grid-view.component.css new file mode 100644 index 0000000..62b150c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/grid-view/grid-view.component.css @@ -0,0 +1,72 @@ +input[type=text], [type=date], [type=password] { + width: 100%; + padding: 15px 20px; + background-color: rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} + +.required-field { + color: red; + font-size: 18px; +} + +.green { + background-color: rgb(156, 231, 156); + color: black; +} + +.blue { + background-color: #57abcf; + color: black; +} + +.td-title { + text-align: center; + width: 150px; + color: white; + font-weight: bold; + background-color: rgba(63, 122, 231, 0.863); +} + +th { + background-color: rgb(170, 169, 169); + font-weight: bold; +} + +.td-content { + text-align: left; +} + +.delete, .heading { + text-align: center; + color: red; +} + +.section p { + background-color: rgb(206, 201, 201); + padding: 10px; + font-size: 18px; +} + +select { + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; +} + +input.ng-invalid.ng-touched { + border-color: red; +} + +.error_mess { + color: red; +} + +clr-datagrid { + height: 400px; /* Adjust the height as needed */ + overflow-y: auto; +}/*# sourceMappingURL=grid-view.component.css.map */ \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/grid-view/grid-view.component.css.map b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/grid-view/grid-view.component.css.map new file mode 100644 index 0000000..b6dcdc3 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/grid-view/grid-view.component.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../../../../../styles1.scss","grid-view.component.css","grid-view.component.scss"],"names":[],"mappings":"AAAA;EACE,WAAA;EACA,kBAAA;EAED,oCAAA;EACC,qBAAA;EACA,sBAAA;EACA,kBAAA;EACA,sBAAA;ACAF;;ADEA;EACE,UAAA;EACF,eAAA;ACCA;;ADEA;EACE,oCAAA;EACA,YAAA;ACCF;;ADCA;EACE,yBAAA;EACA,YAAA;ACEF;;ADAA;EACE,kBAAA;EACA,YAAA;EACF,YAAA;EACE,iBAAA;EACA,2CAAA;ACGF;;ADAA;EACE,oCAAA;EACA,iBAAA;ACGF;;ADDA;EACE,gBAAA;ACIF;;ADFA;EACE,kBAAA;EACA,UAAA;ACKF;;ADHA;EACA,oCAAA;EACE,aAAA;EACA,eAAA;ACMF;;ADHA;EACE,WAAA;EACA,gBAAA;EACA,sBAAA;EACA,kBAAA;ACMF;;ACzDA;EACE,iBAAA;AD4DF;;ACzDA;EACE,UAAA;AD4DF;;AC1DA;EACI,aAAA,EAAA,gCAAA;EACF,gBAAA;AD6DF","file":"grid-view.component.css"} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/grid-view/grid-view.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/grid-view/grid-view.component.html new file mode 100644 index 0000000..94c1edc --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/grid-view/grid-view.component.html @@ -0,0 +1,69 @@ +
    +
    +
    +
    +

    User Group Maintenance

    +
    +
    + + Loading ... +
    {{error}}
    + + + User Group No + + + Group Name + + + Description + + + Group Level + + + Status + + + + Updated Date + + + + + {{user.usrGrp}} + {{user.groupName}} + {{user.groupDesc}} + {{user.groupLevel}} + {{user.status}} + + {{user.updateDateFormated}} + + + + + + + + + Record per page + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} + of {{pagination.totalItems}} Records + + +
    +
    +
    \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/grid-view/grid-view.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/grid-view/grid-view.component.scss new file mode 100644 index 0000000..99c5f44 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/grid-view/grid-view.component.scss @@ -0,0 +1,12 @@ +@import '../../../../../../../styles1.scss'; +input.ng-invalid.ng-touched { + border-color: red; +} + +.error_mess { + color: red; +} +clr-datagrid{ + height: 400px; /* Adjust the height as needed */ + overflow-y: auto; +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/grid-view/grid-view.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/grid-view/grid-view.component.spec.ts new file mode 100644 index 0000000..0353984 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/grid-view/grid-view.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { GridViewComponent } from './grid-view.component'; + +describe('GridViewComponent', () => { + let component: GridViewComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ GridViewComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(GridViewComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/grid-view/grid-view.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/grid-view/grid-view.component.ts new file mode 100644 index 0000000..dfb2de1 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/grid-view/grid-view.component.ts @@ -0,0 +1,54 @@ +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import { ExcelService } from 'src/app/services/excel.service'; +import * as moment from 'moment'; +import { UsergrpmaintainceService } from 'src/app/services/admin/usergrpmaintaince.service'; +import { ToastrService } from 'ngx-toastr'; +import { MenuGroupService } from 'src/app/services/admin/menu-group.service'; +@Component({ + selector: 'app-grid-view', + templateUrl: './grid-view.component.html', + styleUrls: ['./grid-view.component.scss'] +}) +export class GridViewComponent implements OnInit { + loading = false; + public entryForm: FormGroup; + givendata; + orders; + error; + modalAdd= false; + modaledit=false; + modaldelete=false; + rowSelected :any= {}; + mcreate; + medit; + showdata; + submitted=false; + + constructor( + private excel: ExcelService, + private toastr:ToastrService, + private _fb: FormBuilder, + private router: Router, + private route: ActivatedRoute, + private menuGroupService: MenuGroupService, + private mainservice:UsergrpmaintainceService, + ) { } + + ngOnInit(): void { + this.mainservice.getAll().subscribe((data) => { + console.log(data); + this.givendata = data; + if(this.givendata.length==0){ + this.error="No data Available"; + console.log(this.error) + } + },(error) => { + console.log(error); + if(error){ + this.error="Server Error"; + } + }); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/line-chart/line-chart.component.css b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/line-chart/line-chart.component.css new file mode 100644 index 0000000..630d4cd --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/line-chart/line-chart.component.css @@ -0,0 +1 @@ +/*# sourceMappingURL=line-chart.component.css.map */ \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/line-chart/line-chart.component.css.map b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/line-chart/line-chart.component.css.map new file mode 100644 index 0000000..36b4be5 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/line-chart/line-chart.component.css.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":"","file":"line-chart.component.css"} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/line-chart/line-chart.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/line-chart/line-chart.component.html new file mode 100644 index 0000000..18c620d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/line-chart/line-chart.component.html @@ -0,0 +1,12 @@ +
    + +
    + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/line-chart/line-chart.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/line-chart/line-chart.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/line-chart/line-chart.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/line-chart/line-chart.component.spec.ts new file mode 100644 index 0000000..0c5e7ef --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/line-chart/line-chart.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { LineChartComponent } from './line-chart.component'; + +describe('LineChartComponent', () => { + let component: LineChartComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ LineChartComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(LineChartComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/line-chart/line-chart.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/line-chart/line-chart.component.ts new file mode 100644 index 0000000..3eaad81 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/line-chart/line-chart.component.ts @@ -0,0 +1,71 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-line-chart', + templateUrl: './line-chart.component.html', + styleUrls: ['./line-chart.component.scss'] +}) +export class LineChartComponent implements OnInit { + public lineChartData:Array = [ + {data: [65, 59, 80, 81, 56, 55, 40], label: 'Series A'}, + {data: [28, 48, 40, 19, 86, 27, 90], label: 'Series B'}, + {data: [18, 48, 77, 9, 100, 27, 40], label: 'Series C'} + ]; + public lineChartLabels:Array = ['January', 'February', 'March', 'April', 'May', 'June', 'July']; + public lineChartOptions:any = { + responsive: true + }; + public lineChartColors:Array = [ + { // grey + backgroundColor: 'rgba(148,159,177,0.2)', + borderColor: 'rgba(148,159,177,1)', + pointBackgroundColor: 'rgba(148,159,177,1)', + pointBorderColor: '#fff', + pointHoverBackgroundColor: '#fff', + pointHoverBorderColor: 'rgba(148,159,177,0.8)' + }, + { // dark grey + backgroundColor: 'rgba(77,83,96,0.2)', + borderColor: 'rgba(77,83,96,1)', + pointBackgroundColor: 'rgba(77,83,96,1)', + pointBorderColor: '#fff', + pointHoverBackgroundColor: '#fff', + pointHoverBorderColor: 'rgba(77,83,96,1)' + }, + { // grey + backgroundColor: 'rgba(148,159,177,0.2)', + borderColor: 'rgba(148,159,177,1)', + pointBackgroundColor: 'rgba(148,159,177,1)', + pointBorderColor: '#fff', + pointHoverBackgroundColor: '#fff', + pointHoverBorderColor: 'rgba(148,159,177,0.8)' + } + ]; + public lineChartLegend:boolean = true; + public lineChartType:string = 'line'; + + public randomize():void { + let _lineChartData:Array = new Array(this.lineChartData.length); + for (let i = 0; i < this.lineChartData.length; i++) { + _lineChartData[i] = {data: new Array(this.lineChartData[i].data.length), label: this.lineChartData[i].label}; + for (let j = 0; j < this.lineChartData[i].data.length; j++) { + _lineChartData[i].data[j] = Math.floor((Math.random() * 100) + 1); + } + } + this.lineChartData = _lineChartData; + } + + // events + public chartClicked(e:any):void { + console.log(e); + } + + public chartHovered(e:any):void { + console.log(e); + } + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/pie-chart/pie-chart.component.css b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/pie-chart/pie-chart.component.css new file mode 100644 index 0000000..973bd02 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/pie-chart/pie-chart.component.css @@ -0,0 +1 @@ +/*# sourceMappingURL=pie-chart.component.css.map */ \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/pie-chart/pie-chart.component.css.map b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/pie-chart/pie-chart.component.css.map new file mode 100644 index 0000000..a06051f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/pie-chart/pie-chart.component.css.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":"","file":"pie-chart.component.css"} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/pie-chart/pie-chart.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/pie-chart/pie-chart.component.html new file mode 100644 index 0000000..ef42eed --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/pie-chart/pie-chart.component.html @@ -0,0 +1,9 @@ +
    + + +
    diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/pie-chart/pie-chart.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/pie-chart/pie-chart.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/pie-chart/pie-chart.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/pie-chart/pie-chart.component.spec.ts new file mode 100644 index 0000000..64f36b7 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/pie-chart/pie-chart.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PieChartComponent } from './pie-chart.component'; + +describe('PieChartComponent', () => { + let component: PieChartComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ PieChartComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(PieChartComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/pie-chart/pie-chart.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/pie-chart/pie-chart.component.ts new file mode 100644 index 0000000..a6647a6 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/pie-chart/pie-chart.component.ts @@ -0,0 +1,27 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-pie-chart', + templateUrl: './pie-chart.component.html', + styleUrls: ['./pie-chart.component.scss'] +}) +export class PieChartComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + public pieChartLabels: string[] = ['SciFi', 'Drama', 'Comedy']; + public pieChartData: number[] = [30, 50, 20]; + public pieChartType: string = 'pie'; + + // events + public chartClicked(e: any): void { + console.log(e); + } + + public chartHovered(e: any): void { + console.log(e); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/polar-chart/polar-chart.component.css b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/polar-chart/polar-chart.component.css new file mode 100644 index 0000000..1e3f682 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/polar-chart/polar-chart.component.css @@ -0,0 +1 @@ +/*# sourceMappingURL=polar-chart.component.css.map */ \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/polar-chart/polar-chart.component.css.map b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/polar-chart/polar-chart.component.css.map new file mode 100644 index 0000000..7c2253e --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/polar-chart/polar-chart.component.css.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":"","file":"polar-chart.component.css"} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/polar-chart/polar-chart.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/polar-chart/polar-chart.component.html new file mode 100644 index 0000000..421e078 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/polar-chart/polar-chart.component.html @@ -0,0 +1,10 @@ + +
    + + +
    diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/polar-chart/polar-chart.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/polar-chart/polar-chart.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/polar-chart/polar-chart.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/polar-chart/polar-chart.component.spec.ts new file mode 100644 index 0000000..8501fbc --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/polar-chart/polar-chart.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PolarChartComponent } from './polar-chart.component'; + +describe('PolarChartComponent', () => { + let component: PolarChartComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ PolarChartComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(PolarChartComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/polar-chart/polar-chart.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/polar-chart/polar-chart.component.ts new file mode 100644 index 0000000..56652fe --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/polar-chart/polar-chart.component.ts @@ -0,0 +1,37 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-polar-chart', + templateUrl: './polar-chart.component.html', + styleUrls: ['./polar-chart.component.scss'] +}) +export class PolarChartComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + public polarAreaChartLabels: string[] = [ 'Download Sales', 'In-Store Sales', 'Mail Sales', 'Telesales', 'Corporate Sales' ]; + public polarAreaChartData: any = [ + { data: [ 300, 500, 100, 40, 120 ], label: 'Series 1'} + ]; + + public polarAreaChartType: string = 'polarArea'; + + + + // public radarChartData: any = [ + // { data: [65, 59, 90, 81, 56, 55, 40], label: "Series A" }, + // { data: [28, 48, 40, 19, 96, 27, 100], label: "Series B" } + // ]; + + // events + public chartClicked(e: any): void { + console.log(e); + } + + public chartHovered(e: any): void { + console.log(e); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/radar-chart/radar-chart.component.css b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/radar-chart/radar-chart.component.css new file mode 100644 index 0000000..b255a4d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/radar-chart/radar-chart.component.css @@ -0,0 +1 @@ +/*# sourceMappingURL=radar-chart.component.css.map */ \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/radar-chart/radar-chart.component.css.map b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/radar-chart/radar-chart.component.css.map new file mode 100644 index 0000000..0e85db2 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/radar-chart/radar-chart.component.css.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":"","file":"radar-chart.component.css"} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/radar-chart/radar-chart.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/radar-chart/radar-chart.component.html new file mode 100644 index 0000000..3b26b0a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/radar-chart/radar-chart.component.html @@ -0,0 +1,8 @@ +
    + +
    diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/radar-chart/radar-chart.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/radar-chart/radar-chart.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/radar-chart/radar-chart.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/radar-chart/radar-chart.component.spec.ts new file mode 100644 index 0000000..a5d9784 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/radar-chart/radar-chart.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { RadarChartComponent } from './radar-chart.component'; + +describe('RadarChartComponent', () => { + let component: RadarChartComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ RadarChartComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(RadarChartComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/radar-chart/radar-chart.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/radar-chart/radar-chart.component.ts new file mode 100644 index 0000000..3c23092 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/radar-chart/radar-chart.component.ts @@ -0,0 +1,39 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-radar-chart', + templateUrl: './radar-chart.component.html', + styleUrls: ['./radar-chart.component.scss'] +}) +export class RadarChartComponent implements OnInit { +// Radar +public radarChartLabels: string[] = [ + "Eating", + "Drinking", + "Sleeping", + "Designing", + "Coding", + "Cycling", + "Running" +]; + +public radarChartData: any = [ + { data: [65, 59, 90, 81, 56, 55, 40], label: "Series A" }, + { data: [28, 48, 40, 19, 96, 27, 100], label: "Series B" } +]; +public radarChartType: string = "radar"; + +// events +public chartClicked(e: any): void { + console.log(e); +} + +public chartHovered(e: any): void { + console.log(e); +} + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/scatter-chart/scatter-chart.component.css b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/scatter-chart/scatter-chart.component.css new file mode 100644 index 0000000..2b5057d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/scatter-chart/scatter-chart.component.css @@ -0,0 +1 @@ +/*# sourceMappingURL=scatter-chart.component.css.map */ \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/scatter-chart/scatter-chart.component.css.map b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/scatter-chart/scatter-chart.component.css.map new file mode 100644 index 0000000..4007ce6 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/scatter-chart/scatter-chart.component.css.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":"","file":"scatter-chart.component.css"} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/scatter-chart/scatter-chart.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/scatter-chart/scatter-chart.component.html new file mode 100644 index 0000000..e0b67e3 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/scatter-chart/scatter-chart.component.html @@ -0,0 +1,8 @@ +
    + + +
    diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/scatter-chart/scatter-chart.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/scatter-chart/scatter-chart.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/scatter-chart/scatter-chart.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/scatter-chart/scatter-chart.component.spec.ts new file mode 100644 index 0000000..70c8481 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/scatter-chart/scatter-chart.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ScatterChartComponent } from './scatter-chart.component'; + +describe('ScatterChartComponent', () => { + let component: ScatterChartComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ScatterChartComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ScatterChartComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/scatter-chart/scatter-chart.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/scatter-chart/scatter-chart.component.ts new file mode 100644 index 0000000..1af87bc --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/scatter-chart/scatter-chart.component.ts @@ -0,0 +1,77 @@ +import { Component, OnInit } from '@angular/core'; +import { ChartData,ChartDataset } from 'chart.js'; + +@Component({ + selector: 'app-scatter-chart', + templateUrl: './scatter-chart.component.html', + styleUrls: ['./scatter-chart.component.scss'] +}) +export class ScatterChartComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + public scatterChartLabels: string[] = [ 'Eating', 'Drinking', 'Sleeping', 'Designing', 'Coding', 'Cycling', 'Running' ]; + + public scatterChartData: ChartDataset[] = [ + // { + // data: [ + // { x: 1, y: 1 }, + // { x: 2, y: 3 }, + // { x: 3, y: -2 }, + // { x: 4, y: 4 }, + // { x: 5, y: -3, r: 20 }, + // ], + // label: 'Series A', + // pointRadius: 10, + // backgroundColor: 'red', + // }, + // { + // data: [ + // { x: 2, y: 2 }, + // { x: 3, y: 1 }, + // { x: 4, y: 3 }, + // { x: 5, y: 2 }, + // { x: 6, y: 4, r: 15 }, + // ], + // label: 'Series B', + // pointRadius: 8, + // backgroundColor: 'green', + // }, + { + data: [ + { x: 1, y: 1 }, + { x: 2, y: 3 }, + { x: 3, y: -2 }, + { x: 4, y: 4 }, + { x: 5, y: -3, r: 20 }, + ], + label: 'Series A', + pointRadius: 10, + backgroundColor: [ + 'red', + 'green', + 'blue', + 'purple', + 'yellow', + 'brown', + 'magenta', + 'cyan', + 'orange', + 'pink' + ], + }, + ]; + public scatterChartType: string = 'scatter'; + + + // events + public chartClicked(e: any): void { + console.log(e); + } + + public chartHovered(e: any): void { + console.log(e); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/to-do-chart/to-do-chart.component.css b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/to-do-chart/to-do-chart.component.css new file mode 100644 index 0000000..1a0ea87 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/to-do-chart/to-do-chart.component.css @@ -0,0 +1 @@ +/*# sourceMappingURL=to-do-chart.component.css.map */ \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/to-do-chart/to-do-chart.component.css.map b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/to-do-chart/to-do-chart.component.css.map new file mode 100644 index 0000000..5fe3143 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/to-do-chart/to-do-chart.component.css.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":"","file":"to-do-chart.component.css"} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/to-do-chart/to-do-chart.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/to-do-chart/to-do-chart.component.html new file mode 100644 index 0000000..c9e47d0 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/to-do-chart/to-do-chart.component.html @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + +
    #Item
    {{i + 1}}{{todo}} + + + +
    + + + + + +
    diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/to-do-chart/to-do-chart.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/to-do-chart/to-do-chart.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/to-do-chart/to-do-chart.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/to-do-chart/to-do-chart.component.spec.ts new file mode 100644 index 0000000..a489ab6 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/to-do-chart/to-do-chart.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ToDoChartComponent } from './to-do-chart.component'; + +describe('ToDoChartComponent', () => { + let component: ToDoChartComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ToDoChartComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ToDoChartComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/to-do-chart/to-do-chart.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/to-do-chart/to-do-chart.component.ts new file mode 100644 index 0000000..481fcca --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/gadgets/to-do-chart/to-do-chart.component.ts @@ -0,0 +1,27 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-to-do-chart', + templateUrl: './to-do-chart.component.html', + styleUrls: ['./to-do-chart.component.scss'] +}) +export class ToDoChartComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + data: any; + todo: string; + todoList = ['todo 1']; + + public addTodo(todo: string) { + this.todoList.push(todo); +} + +public removeTodo(todoIx: number) { + if (this.todoList.length) { + this.todoList.splice(todoIx, 1); + } +} +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/schedule/schedule.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/schedule/schedule.component.html new file mode 100644 index 0000000..0b4b913 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/schedule/schedule.component.html @@ -0,0 +1 @@ +

    schedule works!

    diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/schedule/schedule.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/schedule/schedule.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/schedule/schedule.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/schedule/schedule.component.spec.ts new file mode 100644 index 0000000..74a139d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/schedule/schedule.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ScheduleComponent } from './schedule.component'; + +describe('ScheduleComponent', () => { + let component: ScheduleComponent; + let fixture: ComponentFixture; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [ScheduleComponent] + }); + fixture = TestBed.createComponent(ScheduleComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/schedule/schedule.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/schedule/schedule.component.ts new file mode 100644 index 0000000..5848b8b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardnew/schedule/schedule.component.ts @@ -0,0 +1,10 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-schedule', + templateUrl: './schedule.component.html', + styleUrls: ['./schedule.component.scss'] +}) +export class ScheduleComponent { + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashboardrunner.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashboardrunner.component.html new file mode 100644 index 0000000..90c6b64 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashboardrunner.component.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashboardrunner.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashboardrunner.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashboardrunner.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashboardrunner.component.spec.ts new file mode 100644 index 0000000..f034e08 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashboardrunner.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DashboardrunnerComponent } from './dashboardrunner.component'; + +describe('DashboardrunnerComponent', () => { + let component: DashboardrunnerComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ DashboardrunnerComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(DashboardrunnerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashboardrunner.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashboardrunner.component.ts new file mode 100644 index 0000000..f18f267 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashboardrunner.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-dashboardrunner', + templateUrl: './dashboardrunner.component.html', + styleUrls: ['./dashboardrunner.component.scss'] +}) +export class DashboardrunnerComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerall/dashrunnerall.component.css b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerall/dashrunnerall.component.css new file mode 100644 index 0000000..802d40f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerall/dashrunnerall.component.css @@ -0,0 +1,90 @@ +.td-title { + text-align: right; + width: 150px; + font-weight: bold; + background-color: rgba(63, 122, 231, 0.863); + color: white; +} + +.td-content { + text-align: left; +} + +.delete, .heading { + text-align: center; + color: red; +} + +input[type=radio] { + width: 14px !important; + height: 14px !important; + margin: 5px; + -webkit-appearance: none; + -moz-appearance: none; + -o-appearance: none; + appearance: none; + outline: 1px solid gray; + box-shadow: none; + font-size: 0.8em; + text-align: center; + line-height: 1em; + background: red; +} + +.dots { + width: 100px; + height: 100px; + bordeR: 1px solid; + border-radius: 50%; +} + +h4 { + margin-top: 16px; +} + +.s-order-dash-pg { + margin: 0px; + display: flex; + flex-wrap: wrap; + flex-direction: row; + justify-content: center; +} +.s-order-dash-pg .chart-box { + margin: 16px; + padding: 0 16px; + background-color: #fff; + border: 1px solid #ccc; + border-radius: 2px; +} + +#word1 { + width: 190px; + height: 180px; +} + +.center { + text-align: center; + margin-top: 5px; +} + +.clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; +} + +.heading { + text-align: center; + color: red; +} + +select { + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; +}/*# sourceMappingURL=dashrunnerall.component.css.map */ \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerall/dashrunnerall.component.css.map b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerall/dashrunnerall.component.css.map new file mode 100644 index 0000000..d4abb49 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerall/dashrunnerall.component.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["dashrunnerall.component.scss","dashrunnerall.component.css"],"names":[],"mappings":"AAAA;EACI,iBAAA;EACA,YAAA;EACA,iBAAA;EACA,2CAAA;EACA,YAAA;ACCJ;;ADCE;EACE,gBAAA;ACEJ;;ADAE;EACE,kBAAA;EACA,UAAA;ACGJ;;ADDE;EACE,sBAAA;EACA,uBAAA;EACA,WAAA;EACA,wBAAA;EACA,qBAAA;EACA,mBAAA;EACA,gBAAA;EACA,uBAAA;EACA,gBAAA;EACA,gBAAA;EACA,kBAAA;EACA,gBAAA;EACA,eAAA;ACIJ;;ADFE;EAEE,YAAA;EACA,aAAA;EACA,iBAAA;EACA,kBAAA;ACIJ;;ADDI;EAAG,gBAAA;ACKP;;ADJI;EACE,WAAA;EACA,aAAA;EACA,eAAA;EACA,mBAAA;EACA,uBAAA;ACON;ADNM;EACE,YAAA;EACA,eAAA;EACA,sBAAA;EACA,sBAAA;EACA,kBAAA;ACQR;;ADLI;EACC,YAAA;EACC,aAAA;ACQN;;ADLI;EACE,kBAAA;EACA,eAAA;ACQN;;ADLI;EACE,cAAA;EACA,yBAAA;EACA,sBAAA;EACA,wBAAA;EACA,eAAA;EACA,WAAA;EACA,mBAAA;ACQN;;ADNM;EACE,kBAAA;EACA,UAAA;ACSR;;ADNM;EACE,WAAA;EACA,gBAAA;EACA,sBAAA;EACA,kBAAA;ACSR","file":"dashrunnerall.component.css"} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerall/dashrunnerall.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerall/dashrunnerall.component.html new file mode 100644 index 0000000..74d44e3 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerall/dashrunnerall.component.html @@ -0,0 +1,117 @@ + + +
    + +
    +
    +
    +

    {{ 'all_dashboard' | translate }}

    +
    +
    + +
    +
    + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    + {{app.dashboard_name}} +
    +
    + +
    +
    + {{app.description}} +
    +
    +
    + + +
    + + + + +
    +
    +
    +
    +
    + + + + + + + + + + + + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerall/dashrunnerall.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerall/dashrunnerall.component.scss new file mode 100644 index 0000000..48905e0 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerall/dashrunnerall.component.scss @@ -0,0 +1,93 @@ +.td-title { + text-align: right; + width: 150px; + font-weight: bold; + background-color: rgba(63, 122, 231, 0.863); + color: white; + } + .td-content{ + text-align: left; + } + .delete,.heading{ + text-align: center; + color: red; + } + input[type='radio']{ + width: 14px !important; + height: 14px !important; + margin: 5px; + -webkit-appearance: none; + -moz-appearance: none; + -o-appearance: none; + appearance: none; + outline: 1px solid gray; + box-shadow: none; + font-size: 0.8em; + text-align: center; + line-height: 1em; + background: red; + } + .dots + { + width: 100px; + height:100px; + border: 1px solid; + border-radius: 50%; + //background-color: #f00; + } + h4{margin-top: 16px;} + .s-order-dash-pg { + margin: 0px; + display:flex; + flex-wrap:wrap; + flex-direction:row; + justify-content:center; + .chart-box{ + margin:16px; + padding:0 16px; + background-color: #fff; + border:1px solid #ccc; + border-radius: 2px; + } + } + #word1{ + width: 190px; + height: 180px; + + } + .center{ + text-align: center; + margin-top: 5px; + } + + .clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; + } + .heading{ + text-align: center; + color: red; + } + + select{ + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; + } + + + #word { + display: inline-block; + width: 320px; + white-space: nowrap; + overflow: hidden !important; + text-overflow: ellipsis; + font-weight: bold; + + } \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerall/dashrunnerall.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerall/dashrunnerall.component.spec.ts new file mode 100644 index 0000000..0b6bc3a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerall/dashrunnerall.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DashrunnerallComponent } from './dashrunnerall.component'; + +describe('DashrunnerallComponent', () => { + let component: DashrunnerallComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ DashrunnerallComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(DashrunnerallComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerall/dashrunnerall.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerall/dashrunnerall.component.ts new file mode 100644 index 0000000..ba27793 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerall/dashrunnerall.component.ts @@ -0,0 +1,125 @@ +import { Component, OnInit } from '@angular/core'; +import { ActivatedRoute, Router } from '@angular/router'; +import { ToastrService } from 'ngx-toastr'; +// import { WireframeService } from 'src/app/services/builder/wireframe.service'; +import { ExcelService } from 'src/app/services/excel.service'; +import { Dashboard3Service } from '../../../../../services/builder/dashboard3.service'; +import * as moment from 'moment'; +import { ModulesetupService } from 'src/app/services/builder/modulesetup.service'; +@Component({ + selector: 'app-dashrunnerall', + templateUrl: './dashrunnerall.component.html', + styleUrls: ['./dashrunnerall.component.scss'] +}) +export class DashrunnerallComponent implements OnInit { + addModall:boolean = false; + selected:any[] = []; + loading = false; + data:any; + id:any; + moduleId:any; + modalDelete = false; + rowSelected :any= {}; + rows: any[]; + projectname; + projectId; + error; + constructor( + private router : Router, + private route: ActivatedRoute,private dashboardService : Dashboard3Service, + // private wireframeservice : WireframeService, + private excel: ExcelService,private mainService: ModulesetupService, + private toastr: ToastrService,) { } + + ngOnInit(): void { + // this.projectId=this.wireframeservice.getProjectId(); + console.log(this.projectId); + this.id = this.route.snapshot.params["id"]; // fb_header_id + // this.moduleId = this.wireframeservice.getModuleId(); // get from session storage + console.log(this.moduleId); + + this.getdashboard(); + // this.getprojectName(this.projectId); + } + + getprojectName(id){ + this.mainService.getProjectModules(id).subscribe((data) => { + console.log(data); + this.projectname=data.items[0]['projectName']; + console.log(this.projectname); + }); + } + + + getdashboard() + { + this.dashboardService.getAllDash().subscribe((data) =>{ + this.data = data; + this.rows = this.data; + console.log(data); + this.error="No data Available"; + console.log(this.error); + }); + } + + openModal() + { + this.addModall = true; + } + gotoadd() + { + this.router.navigate(['../../dashboardbuilder'],{relativeTo:this.route}); + } + goToEdit(id:number) + { + this.router.navigate(['../dashrunner/'+id],{relativeTo:this.route}); + } + + goToEditData(id: number){ + this.router.navigate(['../editdata/'+id],{relativeTo:this.route}); + } + + onExport() { + this.excel.exportAsExcelFile(this.rows, 'user_', + moment().format('YYYYMMDD_HHmmss')) + } + + gotoAction(){ + this.router.navigate(["../../actions"], { relativeTo: this.route, queryParams: { m_id: this.moduleId,pname:this.projectname } }); + } + gotoRepo(){ + this.router.navigate(["../../modulecard"], { relativeTo: this.route, queryParams: { p_id: this.projectId } }); + } + + onDelete(row){ + this.rowSelected = row; + console.log(this.rowSelected); + this.modalDelete = true; + } + delete(id) + { + this.modalDelete = false; + console.log("in delete "+id); + this.dashboardService.deleteField(id).subscribe((data)=>{ + console.log(data); + this.ngOnInit(); + }); + if (id) { + this.toastr.success('Deleted successfully'); + } + } + // openModal() + // { + // this.addModall = true; + // } + // gotoadd() + // { + // this.router.navigate(['../adddata'],{relativeTo:this.route}); + // } + // goToEdit() + // { + // this.router.navigate(['../editdashn'],{relativeTo:this.route}); + // } + +} + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/bar-runner/bar-runner.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/bar-runner/bar-runner.component.html new file mode 100644 index 0000000..1e6cc60 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/bar-runner/bar-runner.component.html @@ -0,0 +1,38 @@ +
    +
    + + + +
    + + + + + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/bar-runner/bar-runner.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/bar-runner/bar-runner.component.scss new file mode 100644 index 0000000..3b78b91 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/bar-runner/bar-runner.component.scss @@ -0,0 +1,102 @@ +//@import '../../../assets/scss/var'; + + +//common +h4{margin-top: 16px;} +.s-order-Dashtest-pg { + margin: 0px; + display:flex; + flex-wrap:wrap; + flex-direction:row; + justify-content:center; + overflow: auto; +// overflow-x: hidden; + .chart-box{ + margin:16px; + padding:0 16px; + background-color: #fff; + border:1px solid #ccc; + border-radius: 2px; + max-width: 400px auto; + overflow: auto; + max-height: 300px auto; + + + } +} +#word{ + // width: 270px; + width:500px; +} +.center{ + text-align: center; + font-weight: 500; +} +.s{ + color: blue; +} + +li{ + list-style-type: none; +} +.progress-bar{ + margin-bottom: 5px; + height: 15px; +} + + +.chart-container { + position: relative; + width: 400px; /* Adjust width as needed */ + height: 300px; /* Adjust height as needed */ +} + +.chart-canvas { + width: 100%; + height: 100%; +} +.clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + background-color:rgb(255, 255, 255); + margin-top: 3px; + width: 100%; + margin-bottom: 10px; +} +select{ + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; +} +.center { + text-align: center; +} + + +// .progress-bar { +// margin-bottom: 5px; +// height: 15px; +// border: 1px solid #ccc; /* Optional: Add a border to the progress bar */ +// } + +// .progress-meter { +// height: 100%; +// background-color: #007bff; /* Set the background color of the progress bar */ +// color: #fff; /* Set the text color of the percentage */ +// text-align: center; +// line-height: 15px; +// } + +// .progress-text { +// position: absolute; +// top: 0; +// left: 0; +// width: 100%; +// height: 100%; +// display: flex; +// align-items: center; +// justify-content: center; +// } \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/bar-runner/bar-runner.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/bar-runner/bar-runner.component.spec.ts new file mode 100644 index 0000000..4bf541a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/bar-runner/bar-runner.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BarRunnerComponent } from './bar-runner.component'; + +describe('BarRunnerComponent', () => { + let component: BarRunnerComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ BarRunnerComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(BarRunnerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/bar-runner/bar-runner.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/bar-runner/bar-runner.component.ts new file mode 100644 index 0000000..2781144 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/bar-runner/bar-runner.component.ts @@ -0,0 +1,101 @@ +import { Component, ElementRef, EventEmitter, OnInit, Output, ViewChild } from '@angular/core'; +import { DashrunnerService } from '../dashrunner.service'; +import { ActivatedRoute, Router } from '@angular/router'; +import { Dashboard3Service } from 'src/app/services/builder/dashboard3.service'; +import { DashboardContentModel } from 'src/app/models/builder/dashboard'; + +@Component({ + selector: 'app-bar-runner', + templateUrl: './bar-runner.component.html', + styleUrls: ['./bar-runner.component.scss'] +}) +export class BarRunnerComponent implements OnInit { + @ViewChild('contentContainer') contentContainerRef!: ElementRef; + @Output() buttonClicked = new EventEmitter(); + editId; + public DashtestboardArray: DashboardContentModel[] = [ + ]; + workflowLine; + TableName; + XAxis; + YAxis; + showlabel; + lineChartNoLabels:any[] = []; + JsonData; + + barData; + constructor(private Dashtestservive:DashrunnerService,private route: ActivatedRoute,private dashboardService: Dashboard3Service, + private router : Router,) { } + + barChartLabels: any[] = []; + barChartType: string = 'bar'; + barChartLegend = false; + barChartPlugins = []; + barChartData: any[] = []; + + CharData = { + "barChartData": [ + { data: [45, 37, 60, 70, 46, 33], label: 'Best Fruits' }, + ], + "barChartLabels":['Apple', 'Banana', 'Kiwifruit', 'Blueberry', 'Orange', 'Grapes'] + } + + ngOnInit(): void { + this.barChartData = this.CharData.barChartData; + this.barChartLabels = this.CharData.barChartLabels; + + this.editId = this.route.snapshot.params.id; + console.log(this.editId); + + + this.dashboardService.getById(this.editId).subscribe((data)=>{ + console.log(data); + this.workflowLine = data.dashbord1_Line[0].model; + const dash = JSON.parse(this.workflowLine) ; + // this.DashtestboardArray = dash.dashboard; + // console.log(this.DashtestboardArray); + + const ChartObject = dash.dashboard.filter(obj => obj.name === "Bar Chart"); + console.log(ChartObject); + for (let i = 0; i < ChartObject.length; i++) { + const ids = this.Dashtestservive.getbarchart(); + // console.log(ids); + if (ids.includes(ChartObject[i].chartid)) { + // If the chartid is already in the ids array, continue to the next iteration + continue; + } + this.Dashtestservive.setbarchart(ChartObject[i].chartid); + const id = ids[i]; + console.log(id); + + if (ChartObject[i].chartid === id) { + this.TableName = ChartObject[i].table; + this.XAxis = ChartObject[i].xAxis; + this.YAxis = ChartObject[i].yAxis; + this.showlabel = ChartObject[i].showlabel; + this.barChartLegend = ChartObject[i].chartlegend; + console.log(this.TableName); + this.Dashtestservive.getChartData(this.TableName,"Bar Chart",this.XAxis,this.YAxis).subscribe((Ldata) => { + console.log(Ldata); + this.JsonData = Ldata; + this.barChartData = this.JsonData.barChartData; + this.barChartLabels = this.JsonData.barChartLabels; + + },(error) => { + console.log(error); + }); + break; // No need to continue the loop once the correct placeholder is found + } + } + }); + } + + generatePDFFile(){ + this.buttonClicked.emit(); + const content = this.contentContainerRef.nativeElement; + const filename = 'barchart.pdf'; // You can provide any desired filename here + + this.Dashtestservive.generatePDF(content, filename); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/bubble-runner/bubble-runner.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/bubble-runner/bubble-runner.component.html new file mode 100644 index 0000000..c5682e6 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/bubble-runner/bubble-runner.component.html @@ -0,0 +1,11 @@ +
    +
    + + +
    + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/bubble-runner/bubble-runner.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/bubble-runner/bubble-runner.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/bubble-runner/bubble-runner.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/bubble-runner/bubble-runner.component.spec.ts new file mode 100644 index 0000000..fdd5925 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/bubble-runner/bubble-runner.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BubbleRunnerComponent } from './bubble-runner.component'; + +describe('BubbleRunnerComponent', () => { + let component: BubbleRunnerComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ BubbleRunnerComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(BubbleRunnerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/bubble-runner/bubble-runner.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/bubble-runner/bubble-runner.component.ts new file mode 100644 index 0000000..5bb9632 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/bubble-runner/bubble-runner.component.ts @@ -0,0 +1,140 @@ +import { Component, ElementRef, EventEmitter, OnInit, Output, ViewChild } from '@angular/core'; +import { ActivatedRoute, Router } from '@angular/router'; +import { ChartConfiguration, ChartDataset, ChartOptions } from 'chart.js'; +// import { Label } from 'ng2-charts'; +import { DashboardContentModel } from 'src/app/models/builder/dashboard'; +import { DashrunnerService } from '../dashrunner.service'; +import { Dashboard3Service } from 'src/app/services/builder/dashboard3.service'; + +@Component({ + selector: 'app-bubble-runner', + templateUrl: './bubble-runner.component.html', + styleUrls: ['./bubble-runner.component.scss'] +}) +export class BubbleRunnerComponent implements OnInit { + @ViewChild('contentContainer') contentContainerRef!: ElementRef; + @Output() buttonClicked = new EventEmitter(); + editId; + public DashtestboardArray: DashboardContentModel[] = [ + ]; + workflowLine; + TableName; + XAxis; + YAxis; + showlabel; + JsonData; + lineChartNoLabels: [] = []; + ChartLegend = false; + + constructor(private Dashtestservive:DashrunnerService,private route: ActivatedRoute,private dashboardService: Dashboard3Service, + private router : Router,) { } + + public bubbleChartOptions: ChartConfiguration['options'] = { + // scales: { + // x: { + // min: 0, + // max: 30, + // ticks: {} + // }, + // y: { + // min: 0, + // max: 30, + // ticks: {} + // }, + // plugins: { + // title: { + // display: true, + // text: 'Bubble Chart' + // } + // } + // } + }; + + public bubbleChartType: string = 'bubble'; + // public bubbleChartLegend = true; + public bubbleChartData: ChartDataset[] = [ + { + data: [ + { x: 10, y: 10, r: 10 }, + { x: 15, y: 5, r: 15 }, + { x: 26, y: 12, r: 23 }, + { x: 7, y: 8, r: 8 }, + ], + label: 'Investment Equities', + backgroundColor: 'rgba(255, 0, 0, 0.6)', // Red + borderColor: 'blue', + hoverBackgroundColor: 'purple', + hoverBorderColor: 'red', + }, + { + data: [ + { x: 5, y: 15, r: 12 }, + { x: 20, y: 7, r: 8 }, + { x: 12, y: 18, r: 15 }, + { x: 8, y: 6, r: 10 }, + ], + label: 'Investment Bonds', + backgroundColor: 'rgba(0, 255, 0, 0.6)', // Green + borderColor: 'green', + hoverBackgroundColor: 'yellow', + hoverBorderColor: 'blue', + }, + ]; + ngOnInit(): void { + // this.pieChartData = this.CharData.pieChartData; + // this.pieChartLabels = this.CharData.pieChartLabels; + + this.editId = this.route.snapshot.params.id; + console.log(this.editId); + + + this.dashboardService.getById(this.editId).subscribe((data)=>{ + console.log(data); + this.workflowLine = data.dashbord1_Line[0].model; + const dash = JSON.parse(this.workflowLine) ; + + const ChartObject = dash.dashboard.filter(obj => obj.name === "Bubble Chart"); + console.log(ChartObject); + for (let i = 0; i < ChartObject.length; i++) { + const ids = this.Dashtestservive.getbubblechart(); + // console.log(ids); + if (ids.includes(ChartObject[i].chartid)) { + // If the chartid is already in the ids array, continue to the next iteration + continue; + } + this.Dashtestservive.setbubblechart(ChartObject[i].chartid); + const id = ids[i]; + console.log(id); + + if (ChartObject[i].chartid === id) { + this.TableName = ChartObject[i].table; + this.XAxis = ChartObject[i].xAxis; + this.YAxis = ChartObject[i].yAxis; + this.showlabel = ChartObject[i].showlabel; + this.ChartLegend = ChartObject[i].chartlegend; + console.log(this.TableName); + this.Dashtestservive.getChartData(this.TableName,"Bubble Chart",this.XAxis,this.YAxis).subscribe((Ldata) => { + console.log(Ldata); + this.JsonData = Ldata; + this.bubbleChartData = this.JsonData.bubbleChartData; + // this.radarChartLabels = this.JsonData.radarChartLabels; + + },(error) => { + console.log(error); + }); + break; // No need to continue the loop once the correct placeholder is found + } + } + }); + } + + generatePDFFile(){ + this.buttonClicked.emit(); + const content = this.contentContainerRef.nativeElement; + const filename = 'bubblechart.pdf'; // You can provide any desired filename here + + this.Dashtestservive.generatePDF(content, filename); + } + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/dashrunner.service.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/dashrunner.service.spec.ts new file mode 100644 index 0000000..596cd13 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/dashrunner.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { DashrunnerService } from './dashrunner.service'; + +describe('DashrunnerService', () => { + let service: DashrunnerService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(DashrunnerService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/dashrunner.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/dashrunner.service.ts new file mode 100644 index 0000000..5c814f6 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/dashrunner.service.ts @@ -0,0 +1,212 @@ +import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { ApiRequestService } from 'src/app/services/api/api-request.service'; +import baseUrl from 'src/app/services/api/helper'; +import { jsPDF } from 'jspdf'; +import domtoimage from 'dom-to-image'; +import { saveAs } from 'file-saver'; + +@Injectable({ + providedIn: 'root' +}) +export class DashrunnerService { + constructor(private apirequest:ApiRequestService,private _http: HttpClient) { } + + + + + getJsonData(api: string, jobType: string): Observable { + const url = `${baseUrl}/fnd/dashboardbuilder/getdashjson/${jobType}`; + let params: HttpParams = new HttpParams(); + params =params.append("api",api); + return this._http.get(url, { params }); + } + + updateDashboardLine(dashName: any, dashboardLine: any): Observable { + return this._http.put(`${baseUrl}/fnd/dashboardbuilder/update_Dashbord_json/${dashName}`, dashboardLine); + } + + getDashboardByName(dashname: any, json: any): Observable { + const params = new HttpParams() + .set('dashname', dashname) + .set('json', json); + + return this._http.get(`${baseUrl}/fnd/dashboardbuilder/get_dashboard`, { params }); + } + + getAxisDetails(): Observable { + return this._http.get(`${baseUrl}/token/Dashboardaxis`); + } + + ////////// + + resetConditions() { + this.lineChartIds = []; // Reset the ids array to an empty array + this.barChartIds = []; + this.doughnutChartIds = []; + this.pieChartIds = []; + this.polarareaChartIds = []; + this.radarChartIds = []; + this.scatterChartIds = []; + this.bubbleChartIds = []; + this.gridviewIds = []; + this.todoIds = []; +} + ////////// Line Chart +lineChartIds: any[] = []; +setlinechart(id: any) { + this.lineChartIds.push(id); +} + +getlinechart(): any[] { + return this.lineChartIds; +} + + ////////// Bar Chart + barChartIds: any[] = []; + setbarchart(id: any) { + this.barChartIds.push(id); + } + + getbarchart(): any[] { + return this.barChartIds; + } + + ////////// Doughnut Chart + doughnutChartIds: any[] = []; + setdoughnutchart(id: any) { + this.doughnutChartIds.push(id); + } + + getdoughnutchart(): any[] { + return this.doughnutChartIds; + } + + ////////// Pie Chart + pieChartIds: any[] = []; + setpiechart(id: any) { + this.pieChartIds.push(id); + } + + getpiechart(): any[] { + return this.pieChartIds; + } + + ////////// Poral Area Chart + polarareaChartIds: any[] = []; + setpolarareachart(id: any) { + this.polarareaChartIds.push(id); + } + + getpolarareachart(): any[] { + return this.polarareaChartIds; + } + + ////////// Radar Chart + radarChartIds: any[] = []; + setradarchart(id: any) { + this.radarChartIds.push(id); + } + + getradarchart(): any[] { + return this.radarChartIds; + } + + ////////// Scatter Chart + scatterChartIds: any[] = []; + setscatterchart(id: any) { + this.scatterChartIds.push(id); + } + + getscatterchart(): any[] { + return this.scatterChartIds; + } + + ////////// Bubble Chart + bubbleChartIds: any[] = []; + setbubblechart(id: any) { + this.bubbleChartIds.push(id); + } + + getbubblechart(): any[] { + return this.bubbleChartIds; + } + ////////// Grid View + gridviewIds: any[] = []; + setgridview(id: any) { + this.gridviewIds.push(id); + } + + getgridview(): any[] { + return this.gridviewIds; + } + ////////// To do + todoIds: any[] = []; + settodo(id: any) { + this.todoIds.push(id); + } + + gettodo(): any[] { + return this.todoIds; + } + + + + //////////////////////////////////////////////////////////////// + + public getChartData(tableName: string, jobType: string, xAxis:any,yAxes:any ): Observable { + const url = `${baseUrl}/chart/getdashjson/${jobType}?tableName=${tableName}&xAxis=${xAxis}&yAxes=${yAxes}`; + return this._http.get(url); + } + + + + ////////////////////////////////////////////// + + async generatePDF(content: HTMLElement, filename: string) { + // Wait for the charts to render (adjust the delay as needed) + await new Promise((resolve) => setTimeout(resolve, 1000)); + + try { + // Convert the content to a data URL + const dataUrl = await domtoimage.toPng(content); + + // Convert data URL to image + const img = new Image(); + img.src = dataUrl; + + img.onload = () => { + const pdf = new jsPDF(); + const imgWidth = 210; // A4 size (width in mm) + const imgHeight = (img.height * imgWidth) / img.width; + + // Add the image to the PDF + pdf.addImage(img, 'PNG', 0, 0, imgWidth, imgHeight); + + // Save the PDF with the custom filename + pdf.save(filename); + }; + } catch (error) { + console.error('Error generating PDF:', error); + } + } + + // async generatePDF(content: HTMLElement, filename: string) { + // await new Promise((resolve) => setTimeout(resolve, 1000)); + + // try { + // // Convert the content to a data URL + // const dataUrl = await domtoimage.toPng(content); + + // // Send a request to the server to generate the PDF + // const pdfData = await this._http.post('/api/generate-pdf', { dataUrl, filename }).toPromise(); + + // // Save the PDF on the client-side + // saveAs(pdfData, filename); + // } catch (error) { + // console.error('Error generating PDF:', error); + // } + // } + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/dashrunnerline.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/dashrunnerline.component.html new file mode 100644 index 0000000..4a68f73 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/dashrunnerline.component.html @@ -0,0 +1,40 @@ +
    + + +
    +
    +
    + + + + + + + + +

    {{ item.charttitle }}

    +
    + + + + +
    +
    +
    +
    + +
    + + +
    \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/dashrunnerline.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/dashrunnerline.component.scss new file mode 100644 index 0000000..66f63a6 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/dashrunnerline.component.scss @@ -0,0 +1,49 @@ +.componentbtn{ + color: white; + background-color: #03AC13; + border: none; +} +.content-container { + min-height: 100vh; + height: initial; +} +a:hover { +text-decoration: none; +cursor: pointer; +} +.clr-checkbox{ +color: #212529; +border: 1px solid #ced4da; +border-radius: 0.25rem; +// padding: 0.75rem 0.75rem; +// margin-top: 3px; +width: 100%; +margin-left: 20px; +margin-bottom: 18px; +} +.clr-input, .clr-dropdown { +color: #212529; +border: 1px solid #ced4da; +border-radius: 0.25rem; +padding: 0.75rem 0.75rem; +margin-top: 3px; +width: 100%; +margin-bottom: 10px; +} + +.circle { + width: 25px; + height: 25px; + border: 0.5px solid black; + border-radius: 25px; + // background-color: #235255; + display: flex; + align-items: center; + justify-content: center; + opacity: 0.4; +} +.circle b, clr-icon { + // color: #fff; + font-size: 15px; + //opacity: 0.5; +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/dashrunnerline.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/dashrunnerline.component.spec.ts new file mode 100644 index 0000000..dc29447 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/dashrunnerline.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DashrunnerlineComponent } from './dashrunnerline.component'; + +describe('DashrunnerlineComponent', () => { + let component: DashrunnerlineComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ DashrunnerlineComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(DashrunnerlineComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/dashrunnerline.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/dashrunnerline.component.ts new file mode 100644 index 0000000..61f9a3c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/dashrunnerline.component.ts @@ -0,0 +1,291 @@ +import { Component, OnInit, ViewChild, ElementRef } from '@angular/core'; +import { ChartDataset, ChartType } from 'chart.js'; +import { DashrunnerService } from './dashrunner.service'; +import { GridsterConfig, GridsterItem, GridsterItemComponentInterface } from 'angular-gridster2'; +import { DoughnutRunnerComponent } from './doughnut-runner/doughnut-runner.component'; +import { LineRunnerComponent } from './line-runner/line-runner.component'; +import { BarRunnerComponent } from './bar-runner/bar-runner.component'; +import { DashboardContentModel } from 'src/app/models/builder/dashboard'; +import { GridRunnerComponent } from './grid-runner/grid-runner.component'; +import { Dashboard3Service } from 'src/app/services/builder/dashboard3.service'; +import { ActivatedRoute, NavigationEnd, Router } from '@angular/router'; +import { TodoRunnerComponent } from './todo-runner/todo-runner.component'; +import { jsPDF } from 'jspdf'; +import domtoimage from 'dom-to-image'; +import { PieRunnerComponent } from './pie-runner/pie-runner.component'; +import { BubbleRunnerComponent } from './bubble-runner/bubble-runner.component'; +import { ScatterRunnerComponent } from './scatter-runner/scatter-runner.component'; +import { PolarRunnerComponent } from './polar-runner/polar-runner.component'; +import { RadarRunnerComponent } from './radar-runner/radar-runner.component'; + +@Component({ + selector: 'app-dashrunnerline', + templateUrl: './dashrunnerline.component.html', + styleUrls: ['./dashrunnerline.component.scss'] +}) +export class DashrunnerlineComponent implements OnInit { + @ViewChild('contentContainer') contentContainerRef!: ElementRef; + // @ViewChild('contentContainer', {static:false}) el!: ElementRef; + public options: GridsterConfig; + workflowLine:any; + editId; + public DashtestboardArray: DashboardContentModel[] = [ + + + ]; + componentCollection = [ + { name: "Line Chart", componentInstance: LineRunnerComponent }, + { name: "Doughnut Chart", componentInstance: DoughnutRunnerComponent }, + { name: "Bar Chart", componentInstance: BarRunnerComponent }, + { name: "Pie Chart", componentInstance: PieRunnerComponent }, + { name: "Bubble Chart", componentInstance: BubbleRunnerComponent }, + { name: "Scatter Chart", componentInstance: ScatterRunnerComponent }, + { name: "Polar Area Chart", componentInstance: PolarRunnerComponent }, + { name: "Radar Chart", componentInstance: RadarRunnerComponent }, + { name: "Grid View", componentInstance: GridRunnerComponent }, + { name: "To Do Chart", componentInstance: TodoRunnerComponent }, +]; + + constructor(private Dashtestservive:DashrunnerService, private dashboardService: Dashboard3Service,private route: ActivatedRoute, + private router : Router,) { } + + ngOnInit(): void { + + + this.router.events.subscribe((event) => { + if (event instanceof NavigationEnd) { + // Reset conditions when navigation changes + this.Dashtestservive.resetConditions(); + } + }); + + this.options = { + gridType: 'fit', + enableEmptyCellDrop: true, + pushItems: true, + swap: true, + pushDirections: { north: true, east: true, south: true, west: true }, + resizable: { enabled: true }, + draggable: { + enabled: true, + ignoreContent: true, + dropOverItems: true, + dragHandleClass: 'drag-handler', + ignoreContentClass: 'no-drag', + }, + displayGrid: 'onDrag&Resize', //always + minCols: 10, + minRows: 10, + }; + this.editId = this.route.snapshot.params.id; + console.log(this.editId); + this.getbyId(this.editId); + } +//getbyname +dashboard_name = "Dashtest"; + getbyId(id){ + this.dashboardService.getById(id).subscribe((data)=>{ + console.log(data); + this.workflowLine = data.dashbord1_Line[0].model; + this.dashboard_name = data.dashboard_name; + if(this.workflowLine == "" || this.workflowLine == null){ + console.log("default json"); + const defaultJson = [ + { + cols: 3, + rows: 5, + x: 0, + y: 0, + chartid: 3, + name: 'Doughnut Chart', + component: 'Doughnut Chart', + }, + { + cols: 3, + rows: 5, + x: 0, + y: 0, + chartid: 3, + name: 'Line Chart', + component: 'Line Chart', + }, + { + cols: 3, + rows: 5, + x: 0, + y: 0, + chartid: 3, + name: 'Bar Chart', + component: 'Bar Chart', + }, + { + cols: 3, + rows: 5, + x: 0, + y: 0, + chartid: 3, + name: 'Grid View', + component: 'Grid View', + }, + { + cols: 3, + rows: 5, + x: 0, + y: 0, + chartid: 3, + name: 'To Do Chart', + component: 'To Do Chart', + } + ] + this.workflowLine = JSON.stringify(defaultJson); + } + console.log(this.workflowLine); + if(this.workflowLine) + { + console.log(this.workflowLine); + const dash = JSON.parse(this.workflowLine) ; + this.DashtestboardArray = dash.dashboard; + console.log(this.DashtestboardArray); + this.parseJson(this.DashtestboardArray); + } + + },(error)=>{ + console.log(error); + }); + } + + parseJson(DashtestboardArray: any) { + DashtestboardArray.forEach(dashboard => { + this.componentCollection.forEach(component => { + if (dashboard.component === component.name) { + dashboard.component = component.componentInstance; + } + }); + }); + } + + + dashbord1_Line = { + model:'' + } + + update(){ + console.log(this.DashtestboardArray); + + let cmp=this.DashtestboardArray.forEach(dashboard=>{ + this.componentCollection.forEach(component=>{ + if (dashboard.name === component.name) { + dashboard.component = component.name; + } }) + }) + + console.log(cmp); + + let tmp = JSON.stringify(this.DashtestboardArray); + this.dashbord1_Line.model = tmp; + + this.Dashtestservive.updateDashboardLine(this.dashboard_name, this.dashbord1_Line).subscribe((data)=>{ + console.log(data); + }); + + window.location.reload(); + // this.parseJson(this.DashtestboardArray); + } + + + //Resizabel and drag + resizable: boolean = false; + toggleResizable() { + this.resizable = !this.resizable; + if (this.resizable == true) { + this.options = { + resizable: { enabled: false }, + }; + } else { + this.options = { + resizable: { enabled: true }, + }; + } + } + + // generatePDF(){ + // let pdf = new jsPDF('p','pt','a4'); + // pdf.html(this.el.nativeElement,{ + // callback: (pdf)=>{ + // pdf.save("demo.pdf"); + // } + // }) + // } + + + // async generatePDF() { + // const content = this.contentContainerRef.nativeElement; + + // // Wait for the charts to render (adjust the delay as needed) + // await new Promise((resolve) => setTimeout(resolve, 1000)); + + // try { + // // Convert the content to canvas (using html2canvas) + // const canvas = await html2canvas(content); + + // const pdf = new html2pdf.default(); + // const options = { + // margin: 10, + // filename: 'dashboard.pdf', + // image: { type: 'jpeg', quality: 0.98 }, + // jsPDF: { unit: 'mm', format: 'a4', orientation: 'portrait' } + // }; + + // // Convert the canvas to PDF and save + // await pdf.from(canvas).set(options).outputPdf().then((pdfOutput: any) => { + // // Convert the PDF output to a Blob + // const pdfBlob = new Blob([pdfOutput], { type: 'application/pdf' }); + + // // Save the Blob as a file using FileSaver.js + // saveAs(pdfBlob, 'dashboard.pdf'); + // }); + // } catch (error) { + // console.error('Error generating PDF:', error); + // } + // } + + async generatePDF() { + const content = this.contentContainerRef.nativeElement; + + // Wait for the charts to render (adjust the delay as needed) + await new Promise((resolve) => setTimeout(resolve, 1000)); + + try { + // Convert the content to a data URL (using dom-to-image) + const dataUrl = await domtoimage.toPng(content); + + // Convert data URL to image + const img = new Image(); + img.src = dataUrl; + + img.onload = () => { + const pdf = new jsPDF(); + const imgWidth = 210; // A4 size (width in mm) + const imgHeight = (img.height * imgWidth) / img.width; + + // Add the image to the PDF + pdf.addImage(img, 'PNG', 0, 0, imgWidth, imgHeight); + // pdf.save('dashboard.pdf'); + const pdfName = this.dashboard_name + '.pdf' + pdf.save(pdfName) + }; + } catch (error) { + console.error('Error generating PDF:', error); + } + } + + // Export(name){ + // console.log(name); + // this.dashboardService.setName(name); + // } + + onButtonClicked(): void { + console.log('Button clicked in SomeComponent'); + // Add your custom logic here when the button is clicked in SomeComponent + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/doughnut-runner/doughnut-runner.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/doughnut-runner/doughnut-runner.component.html new file mode 100644 index 0000000..5dd1f44 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/doughnut-runner/doughnut-runner.component.html @@ -0,0 +1,10 @@ +
    +
    + + +
    \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/doughnut-runner/doughnut-runner.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/doughnut-runner/doughnut-runner.component.scss new file mode 100644 index 0000000..ac9ae54 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/doughnut-runner/doughnut-runner.component.scss @@ -0,0 +1,76 @@ +//@import '../../../assets/scss/var'; + + +//common +h4{margin-top: 16px;} +.s-order-Dashtest-pg { + margin: 0px; + display:flex; + flex-wrap:wrap; + flex-direction:row; + justify-content:center; + overflow: auto; +// overflow-x: hidden; + .chart-box{ + margin:16px; + padding:0 16px; + background-color: #fff; + border:1px solid #ccc; + border-radius: 2px; + max-width: 400px auto; + overflow: auto; + max-height: 300px auto; + + + } +} +#word{ + // width: 270px; + width:500px; +} +.center{ + text-align: center; + font-weight: 500; +} +.s{ + color: blue; +} + +li{ + list-style-type: none; +} +.progress-bar{ + margin-bottom: 5px; + height: 15px; +} + + +.chart-container { + position: relative; + width: 400px; /* Adjust width as needed */ + height: 300px; /* Adjust height as needed */ +} + +.chart-canvas { + width: 100%; + height: 100%; +} +.clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + background-color:rgb(255, 255, 255); + margin-top: 3px; + width: 100%; + margin-bottom: 10px; +} +select{ + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; +} +.center { + text-align: center; +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/doughnut-runner/doughnut-runner.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/doughnut-runner/doughnut-runner.component.spec.ts new file mode 100644 index 0000000..46fa1b6 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/doughnut-runner/doughnut-runner.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DoughnutRunnerComponent } from './doughnut-runner.component'; + +describe('DoughnutRunnerComponent', () => { + let component: DoughnutRunnerComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ DoughnutRunnerComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(DoughnutRunnerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/doughnut-runner/doughnut-runner.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/doughnut-runner/doughnut-runner.component.ts new file mode 100644 index 0000000..f92400c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/doughnut-runner/doughnut-runner.component.ts @@ -0,0 +1,99 @@ +import { Component, ElementRef, OnInit, ViewChild } from '@angular/core'; +import { DashrunnerService } from '../dashrunner.service'; +import {baseColors } from 'ng2-charts'; +import { ChartDataset, ChartType, } from 'chart.js'; +import { ActivatedRoute, Router } from '@angular/router'; +import { Dashboard3Service } from 'src/app/services/builder/dashboard3.service'; +import { DashboardContentModel } from 'src/app/models/builder/dashboard'; + +@Component({ + selector: 'app-doughnut-runner', + templateUrl: './doughnut-runner.component.html', + styleUrls: ['./doughnut-runner.component.scss'] +}) +export class DoughnutRunnerComponent implements OnInit { + @ViewChild('contentContainer') contentContainerRef!: ElementRef; + editId; + public DashtestboardArray: DashboardContentModel[] = [ + ]; + workflowLine; + TableName; + XAxis; + YAxis; + showlabel; + lineChartNoLabels:any[] = []; + JsonData; + + doughnutD; + doughnutChartData:any = []; + doughnutChartLabels: any[] = []; + doughnutChartLegend = false; + doughnutData ={ + "chartData": [[55, 25, 20]], + "chartLabels": ["Project", "Repository", "Wireframe"] + } + doughnutChartType: ChartType = 'doughnut'; + + + constructor(private Dashtestservive:DashrunnerService,private route: ActivatedRoute,private dashboardService: Dashboard3Service, + private router : Router,) { } + ngOnInit(): void { + this.doughnutChartData = this.doughnutData.chartData; + this.doughnutChartLabels = this.doughnutData.chartLabels; + + this.editId = this.route.snapshot.params.id; + console.log(this.editId); + + this.dashboardService.getById(this.editId).subscribe((data)=>{ + console.log(data); + this.workflowLine = data.dashbord1_Line[0].model; + const dash = JSON.parse(this.workflowLine) ; + // this.DashtestboardArray = dash.dashboard; + // console.log(this.DashtestboardArray); + + const ChartObject = dash.dashboard.filter(obj => obj.name === "Doughnut Chart"); + console.log(ChartObject); + for (let i = 0; i < ChartObject.length; i++) { + const ids = this.Dashtestservive.getdoughnutchart(); + // console.log(ids); + if (ids.includes(ChartObject[i].chartid)) { + // If the chartid is already in the ids array, continue to the next iteration + continue; + } + this.Dashtestservive.setdoughnutchart(ChartObject[i].chartid); + const id = ids[i]; + console.log(id); + + if (ChartObject[i].chartid === id) { + this.TableName = ChartObject[i].table; + this.XAxis = ChartObject[i].xAxis; + this.YAxis = ChartObject[i].yAxis; + this.showlabel = ChartObject[i].showlabel; + this.doughnutChartLegend = ChartObject[i].chartlegend; + console.log(this.TableName); + this.Dashtestservive.getChartData(this.TableName,"Doughnut Chart",this.XAxis,this.YAxis).subscribe((Ldata) => { + console.log(Ldata); + this.JsonData = Ldata; + this.doughnutChartData = this.JsonData.chartData; + this.doughnutChartLabels = this.JsonData.chartLabels; + + },(error) => { + console.log(error); + }); + break; // No need to continue the loop once the correct placeholder is found + } + } + }); + } + + generatePDFFile(){ + // this.buttonClicked.emit(); + const content = this.contentContainerRef.nativeElement; + const filename = 'doughnut.pdf'; // You can provide any desired filename here + + this.Dashtestservive.generatePDF(content, filename); + } + + + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/grid-runner/grid-runner.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/grid-runner/grid-runner.component.html new file mode 100644 index 0000000..4761acc --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/grid-runner/grid-runner.component.html @@ -0,0 +1,54 @@ + +
    +
    + + + + + + + + + + + +
    {{co}}
    {{item[key]}}
    +
    \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/grid-runner/grid-runner.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/grid-runner/grid-runner.component.scss new file mode 100644 index 0000000..bbed2c9 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/grid-runner/grid-runner.component.scss @@ -0,0 +1,12 @@ +input.ng-invalid.ng-touched { + border-color: red; + } + + .error_mess { + color: red; + } + clr-datagrid{ + height: 400px; /* Adjust the height as needed */ + overflow-y: auto; + + } \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/grid-runner/grid-runner.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/grid-runner/grid-runner.component.spec.ts new file mode 100644 index 0000000..57bca9f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/grid-runner/grid-runner.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { GridRunnerComponent } from './grid-runner.component'; + +describe('GridRunnerComponent', () => { + let component: GridRunnerComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ GridRunnerComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(GridRunnerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/grid-runner/grid-runner.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/grid-runner/grid-runner.component.ts new file mode 100644 index 0000000..9e1f6ac --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/grid-runner/grid-runner.component.ts @@ -0,0 +1,111 @@ +import { Component, ElementRef, EventEmitter, OnInit, Output, ViewChild } from '@angular/core'; +import { DashrunnerService } from '../dashrunner.service'; +import { DashboardContentModel } from 'src/app/models/builder/dashboard'; +import { ActivatedRoute, Router } from '@angular/router'; +import { Dashboard3Service } from 'src/app/services/builder/dashboard3.service'; + +@Component({ + selector: 'app-grid-runner', + templateUrl: './grid-runner.component.html', + styleUrls: ['./grid-runner.component.scss'] +}) +export class GridRunnerComponent implements OnInit { + @ViewChild('contentContainer') contentContainerRef!: ElementRef; + @Output() buttonClicked = new EventEmitter(); + loading = false; + givendata; + error; + XAxis; + YAxis; + + rows:any[]; + columns: any[]; + rowdata; + + editId; + public DashtestboardArray: DashboardContentModel[] = []; + workflowLine; + TableName; + + constructor( + private Dashtestservive:DashrunnerService,private route: ActivatedRoute,private dashboardService: Dashboard3Service, + private router : Router + ) { } + + ngOnInit(): void { + + this.editId = this.route.snapshot.params.id; + console.log(this.editId); + // this.getbyId(); + + this.dashboardService.getById(this.editId).subscribe((data)=>{ + console.log(data); + this.workflowLine = data.dashbord1_Line[0].model; + const dash = JSON.parse(this.workflowLine) ; + // this.DashtestboardArray = dash.dashboard; + // console.log(this.DashtestboardArray); + + const ChartObject = dash.dashboard.filter(obj => obj.name === "Grid View"); + console.log(ChartObject); + for (let i = 0; i < ChartObject.length; i++) { + const ids = this.Dashtestservive.getgridview(); + // console.log(ids); + if (ids.includes(ChartObject[i].chartid)) { + // If the chartid is already in the ids array, continue to the next iteration + continue; + } + this.Dashtestservive.setgridview(ChartObject[i].chartid); + const id = ids[i]; + console.log(id); + + if (ChartObject[i].chartid === id) { + this.TableName = ChartObject[i].table; + this.XAxis = ChartObject[i].xAxis; + this.YAxis = ChartObject[i].yAxis; + console.log(this.TableName); + this.Dashtestservive.getChartData(this.TableName,"Grid View",this.XAxis,this.YAxis).subscribe((Ldata) => { + console.log(Ldata); + this.rows = Ldata; + this.rowdata = this.rows + + },(error) => { + console.log(error); + }); + break; // No need to continue the loop once the correct placeholder is found + } + } + }); + } + + + +//dynamic table + + +getTableData(id){ +} +getHeaders() { +let headers: string[] = []; +if(this.rows) { + this.rows.forEach((value) => { + Object.keys(value).forEach((key) => { + if(!headers.find((header) => header == key)){ + headers.push(key) + } + + }) + + }) +} +return headers; +} + +generatePDFFile(){ + this.buttonClicked.emit(); + const content = this.contentContainerRef.nativeElement; + const filename = 'gridview.pdf'; // You can provide any desired filename here + + this.Dashtestservive.generatePDF(content, filename); +} +} + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/line-runner/line-runner.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/line-runner/line-runner.component.html new file mode 100644 index 0000000..5f5da80 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/line-runner/line-runner.component.html @@ -0,0 +1,14 @@ +
    +
    + + + +
    \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/line-runner/line-runner.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/line-runner/line-runner.component.scss new file mode 100644 index 0000000..ac9ae54 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/line-runner/line-runner.component.scss @@ -0,0 +1,76 @@ +//@import '../../../assets/scss/var'; + + +//common +h4{margin-top: 16px;} +.s-order-Dashtest-pg { + margin: 0px; + display:flex; + flex-wrap:wrap; + flex-direction:row; + justify-content:center; + overflow: auto; +// overflow-x: hidden; + .chart-box{ + margin:16px; + padding:0 16px; + background-color: #fff; + border:1px solid #ccc; + border-radius: 2px; + max-width: 400px auto; + overflow: auto; + max-height: 300px auto; + + + } +} +#word{ + // width: 270px; + width:500px; +} +.center{ + text-align: center; + font-weight: 500; +} +.s{ + color: blue; +} + +li{ + list-style-type: none; +} +.progress-bar{ + margin-bottom: 5px; + height: 15px; +} + + +.chart-container { + position: relative; + width: 400px; /* Adjust width as needed */ + height: 300px; /* Adjust height as needed */ +} + +.chart-canvas { + width: 100%; + height: 100%; +} +.clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + background-color:rgb(255, 255, 255); + margin-top: 3px; + width: 100%; + margin-bottom: 10px; +} +select{ + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; +} +.center { + text-align: center; +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/line-runner/line-runner.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/line-runner/line-runner.component.spec.ts new file mode 100644 index 0000000..7785dba --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/line-runner/line-runner.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { LineRunnerComponent } from './line-runner.component'; + +describe('LineRunnerComponent', () => { + let component: LineRunnerComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ LineRunnerComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(LineRunnerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/line-runner/line-runner.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/line-runner/line-runner.component.ts new file mode 100644 index 0000000..93d621b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/line-runner/line-runner.component.ts @@ -0,0 +1,169 @@ +import { Component, ElementRef, EventEmitter, OnInit, Output, ViewChild } from '@angular/core'; +import { baseColors } from 'ng2-charts'; +import { ChartDataset, ChartType } from 'chart.js'; +import { DashrunnerService } from '../dashrunner.service'; +import { ActivatedRoute, Router } from '@angular/router'; +import { Dashboard3Service } from 'src/app/services/builder/dashboard3.service'; +import { DashboardContentModel } from 'src/app/models/builder/dashboard'; +import { jsPDF } from 'jspdf'; +import domtoimage from 'dom-to-image'; +@Component({ + selector: 'app-line-runner', + templateUrl: './line-runner.component.html', + styleUrls: ['./line-runner.component.scss'] +}) +export class LineRunnerComponent implements OnInit { + @ViewChild('contentContainer') contentContainerRef!: ElementRef; + @Output() buttonClicked = new EventEmitter(); + editId; + public DashtestboardArray: DashboardContentModel[] = [ + ]; + workflowLine; + TableName; + XAxis; + YAxis; + showlabel; + + JsonData; + lineChartData: ChartDataset[] = []; + lineChartLabels:any[] = []; + lineChartNoLabels: any[] = []; + lineCharData = + { + "chartData": [ + { "data": [85, 72, 78, 75, 77, 75, 43,85, 72, 78, 75, 77, 75, 43], "label": "Test Projects" } + ], + "chartLabels": ["Jan", "Feb", "March", "April", "May", "June","july","Jan", "Feb", "March", "April", "May", "June","july"] + } + + lineChartOptions = { + // plugins: { + // colors: { + // forceOverride: true + // } + // }, + responsive: true, + }; + lineChartColors:any[] = [ + { + borderColor: 'black', + backgroundColor: 'rgba(255,255,0,0.28)', + }, + ]; + + lineChartLegend = false; + lineChartPlugins = []; + lineChartType = 'line'; + constructor(private Dashtestservive:DashrunnerService,private route: ActivatedRoute,private dashboardService: Dashboard3Service, + private router : Router,) { } + + ngOnInit(): void { + + this.lineChartData = this.lineCharData.chartData; + this.lineChartLabels = this.lineCharData.chartLabels; + + this.editId = this.route.snapshot.params.id; + console.log(this.editId); + + + this.dashboardService.getById(this.editId).subscribe((data)=>{ + console.log(data); + this.workflowLine = data.dashbord1_Line[0].model; + const dash = JSON.parse(this.workflowLine) ; + // this.DashtestboardArray = dash.dashboard; + // console.log(this.DashtestboardArray); + + const ChartObject = dash.dashboard.filter(obj => obj.name === "Line Chart"); + console.log(ChartObject); + for (let i = 0; i < ChartObject.length; i++) { + const ids = this.Dashtestservive.getlinechart(); + // console.log(ids); + if (ids.includes(ChartObject[i].chartid)) { + // If the chartid is already in the ids array, continue to the next iteration + continue; + } + this.Dashtestservive.setlinechart(ChartObject[i].chartid); + const id = ids[i]; + console.log(id); + + if (ChartObject[i].chartid === id) { + this.TableName = ChartObject[i].table; + this.XAxis = ChartObject[i].xAxis; + this.YAxis = ChartObject[i].yAxis; + this.showlabel = ChartObject[i].showlabel; + this.lineChartLegend = ChartObject[i].chartlegend; + console.log(this.TableName); + this.Dashtestservive.getChartData(this.TableName,"Line Chart",this.XAxis,this.YAxis).subscribe((Ldata) => { + console.log(Ldata); + this.JsonData = Ldata; + this.lineChartData = this.JsonData.chartData; + this.lineChartLabels = this.JsonData.chartLabels; + + },(error) => { + console.log(error); + }); + break; // No need to continue the loop once the correct placeholder is found + } + } + }); + + // setTimeout(() => { + // // this.Dashtestservive.getJsonData("http://localhost:9292/token/Dashboardaxis/7","Line Chart").subscribe(Ldata => { + // this.Dashtestservive.getChartData(this.TableName,"Line Chart",this.XAxis,this.YAxis).subscribe((Ldata) => { + // console.log(Ldata); + // this.JsonData = Ldata; + // this.lineChartData = this.JsonData.chartData; + // this.lineChartLabels = this.JsonData.chartLabels; + + // },(error) => { + // console.log(error); + // }); + + // }, 500); + + // const name = this.dashboardService.getName() + // // Here, you can execute the method based on the received name + // if (name === 'Line Chart') { + // this.generatePDF(); + // } + } + + generatePDFFile(){ + this.buttonClicked.emit(); + const content = this.contentContainerRef.nativeElement; + const filename = 'linechart.pdf'; // You can provide any desired filename here + + this.Dashtestservive.generatePDF(content, filename); + } + + // async generatePDF() { + // const content = this.contentContainerRef.nativeElement; + + // // Wait for the charts to render (adjust the delay as needed) + // await new Promise((resolve) => setTimeout(resolve, 1000)); + + // try { + // // Convert the content to a data URL (using dom-to-image) + // const dataUrl = await domtoimage.toPng(content); + + // // Convert data URL to image + // const img = new Image(); + // img.src = dataUrl; + + // img.onload = () => { + // const pdf = new jsPDF(); + // const imgWidth = 210; // A4 size (width in mm) + // const imgHeight = (img.height * imgWidth) / img.width; + + // // Add the image to the PDF + // pdf.addImage(img, 'PNG', 0, 0, imgWidth, imgHeight); + // pdf.save('linechart.pdf'); + // // const pdfName = this.dashboard_name + '.pdf' + // // pdf.save(pdfName) + // }; + // } catch (error) { + // console.error('Error generating PDF:', error); + // } + // } + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/pie-runner/pie-runner.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/pie-runner/pie-runner.component.html new file mode 100644 index 0000000..59cb87b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/pie-runner/pie-runner.component.html @@ -0,0 +1,11 @@ +
    +
    + + + +
    \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/pie-runner/pie-runner.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/pie-runner/pie-runner.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/pie-runner/pie-runner.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/pie-runner/pie-runner.component.spec.ts new file mode 100644 index 0000000..8384566 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/pie-runner/pie-runner.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PieRunnerComponent } from './pie-runner.component'; + +describe('PieRunnerComponent', () => { + let component: PieRunnerComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ PieRunnerComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(PieRunnerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/pie-runner/pie-runner.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/pie-runner/pie-runner.component.ts new file mode 100644 index 0000000..c1a64d1 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/pie-runner/pie-runner.component.ts @@ -0,0 +1,92 @@ +import { Component, ElementRef, EventEmitter, OnInit, Output, ViewChild } from '@angular/core'; +import { DashrunnerService } from '../dashrunner.service'; +import { ActivatedRoute, Router } from '@angular/router'; +import { Dashboard3Service } from 'src/app/services/builder/dashboard3.service'; +import { DashboardContentModel } from 'src/app/models/builder/dashboard'; + + +@Component({ + selector: 'app-pie-runner', + templateUrl: './pie-runner.component.html', + styleUrls: ['./pie-runner.component.scss'] +}) +export class PieRunnerComponent implements OnInit { + @ViewChild('contentContainer') contentContainerRef!: ElementRef; + @Output() buttonClicked = new EventEmitter(); + editId; + public DashtestboardArray: DashboardContentModel[] = [ + ]; + workflowLine; + TableName; + XAxis; + YAxis; + showlabel; + JsonData; + lineChartNoLabels: any[] = []; + + constructor(private Dashtestservive:DashrunnerService,private route: ActivatedRoute,private dashboardService: Dashboard3Service, + private router : Router,) { } + + public pieChartLabels: string[] = ['SciFi', 'Drama', 'Comedy']; + public pieChartData: number[] = [30, 50, 20]; + public pieChartType: string = 'pie'; + ChartLegend = false; + + ngOnInit(): void { + // this.pieChartData = this.CharData.pieChartData; + // this.pieChartLabels = this.CharData.pieChartLabels; + + this.editId = this.route.snapshot.params.id; + console.log(this.editId); + + + this.dashboardService.getById(this.editId).subscribe((data)=>{ + console.log(data); + this.workflowLine = data.dashbord1_Line[0].model; + const dash = JSON.parse(this.workflowLine) ; + // this.DashtestboardArray = dash.dashboard; + // console.log(this.DashtestboardArray); + + const ChartObject = dash.dashboard.filter(obj => obj.name === "Pie Chart"); + console.log(ChartObject); + for (let i = 0; i < ChartObject.length; i++) { + const ids = this.Dashtestservive.getpiechart(); + // console.log(ids); + if (ids.includes(ChartObject[i].chartid)) { + // If the chartid is already in the ids array, continue to the next iteration + continue; + } + this.Dashtestservive.setpiechart(ChartObject[i].chartid); + const id = ids[i]; + console.log(id); + + if (ChartObject[i].chartid === id) { + this.TableName = ChartObject[i].table; + this.XAxis = ChartObject[i].xAxis; + this.YAxis = ChartObject[i].yAxis; + this.showlabel = ChartObject[i].showlabel; + this.ChartLegend = ChartObject[i].chartlegend; + console.log(this.TableName); + this.Dashtestservive.getChartData(this.TableName,"Pie Chart",this.XAxis,this.YAxis).subscribe((Ldata) => { + console.log(Ldata); + this.JsonData = Ldata; + this.pieChartData = this.JsonData.pieChartData; + this.pieChartLabels = this.JsonData.pieChartLabels; + + },(error) => { + console.log(error); + }); + break; // No need to continue the loop once the correct placeholder is found + } + } + }); + } + + generatePDFFile(){ + this.buttonClicked.emit(); + const content = this.contentContainerRef.nativeElement; + const filename = 'piechart.pdf'; // You can provide any desired filename here + + this.Dashtestservive.generatePDF(content, filename); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/polar-runner/polar-runner.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/polar-runner/polar-runner.component.html new file mode 100644 index 0000000..34754a6 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/polar-runner/polar-runner.component.html @@ -0,0 +1,10 @@ +
    +
    + + +
    \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/polar-runner/polar-runner.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/polar-runner/polar-runner.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/polar-runner/polar-runner.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/polar-runner/polar-runner.component.spec.ts new file mode 100644 index 0000000..5f95ce3 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/polar-runner/polar-runner.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PolarRunnerComponent } from './polar-runner.component'; + +describe('PolarRunnerComponent', () => { + let component: PolarRunnerComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ PolarRunnerComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(PolarRunnerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/polar-runner/polar-runner.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/polar-runner/polar-runner.component.ts new file mode 100644 index 0000000..fdbe17a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/polar-runner/polar-runner.component.ts @@ -0,0 +1,93 @@ +import { Component, ElementRef, EventEmitter, OnInit, Output, ViewChild } from '@angular/core'; +import { DashrunnerService } from '../dashrunner.service'; +import { ActivatedRoute, Router } from '@angular/router'; +import { Dashboard3Service } from 'src/app/services/builder/dashboard3.service'; +import { DashboardContentModel } from 'src/app/models/builder/dashboard'; +// import { Label } from 'ng2-charts'; + +@Component({ + selector: 'app-polar-runner', + templateUrl: './polar-runner.component.html', + styleUrls: ['./polar-runner.component.scss'] +}) +export class PolarRunnerComponent implements OnInit { + @ViewChild('contentContainer') contentContainerRef!: ElementRef; + @Output() buttonClicked = new EventEmitter(); + editId; + public DashtestboardArray: DashboardContentModel[] = [ + ]; + workflowLine; + TableName; + XAxis; + YAxis; + showlabel; + JsonData; + lineChartNoLabels: any[] = []; + + constructor(private Dashtestservive:DashrunnerService,private route: ActivatedRoute,private dashboardService: Dashboard3Service, + private router : Router,) { } + + public polarAreaChartLabels: string[] = [ 'Download Sales', 'In-Store Sales', 'Mail Sales', 'Telesales', 'Corporate Sales' ]; + public polarAreaChartData: any = [ + { data: [ 300, 500, 100, 40, 120 ], label: 'Series 1'} + ]; + + public polarAreaChartType: string = 'polarArea'; + ChartLegend = false; + ngOnInit(): void { + // this.pieChartData = this.CharData.pieChartData; + // this.pieChartLabels = this.CharData.pieChartLabels; + + this.editId = this.route.snapshot.params.id; + console.log(this.editId); + + + this.dashboardService.getById(this.editId).subscribe((data)=>{ + console.log(data); + this.workflowLine = data.dashbord1_Line[0].model; + const dash = JSON.parse(this.workflowLine) ; + + const ChartObject = dash.dashboard.filter(obj => obj.name === "Polar Area Chart"); + console.log(ChartObject); + for (let i = 0; i < ChartObject.length; i++) { + const ids = this.Dashtestservive.getpolarareachart(); + // console.log(ids); + if (ids.includes(ChartObject[i].chartid)) { + // If the chartid is already in the ids array, continue to the next iteration + continue; + } + this.Dashtestservive.setpolarareachart(ChartObject[i].chartid); + const id = ids[i]; + console.log(id); + + if (ChartObject[i].chartid === id) { + this.TableName = ChartObject[i].table; + this.XAxis = ChartObject[i].xAxis; + this.YAxis = ChartObject[i].yAxis; + this.showlabel = ChartObject[i].showlabel; + this.ChartLegend = ChartObject[i].chartlegend; + console.log(this.TableName); + this.Dashtestservive.getChartData(this.TableName,"PolarArea Chart",this.XAxis,this.YAxis).subscribe((Ldata) => { + console.log(Ldata); + this.JsonData = Ldata; + this.polarAreaChartData = this.JsonData.polarAreaChartData; + this.polarAreaChartLabels = this.JsonData.polarAreaChartLabels; + + },(error) => { + console.log(error); + }); + break; // No need to continue the loop once the correct placeholder is found + } + } + }); + } + + generatePDFFile(){ + this.buttonClicked.emit(); + const content = this.contentContainerRef.nativeElement; + const filename = 'polarareachart.pdf'; // You can provide any desired filename here + + this.Dashtestservive.generatePDF(content, filename); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/radar-runner/radar-runner.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/radar-runner/radar-runner.component.html new file mode 100644 index 0000000..009d6b5 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/radar-runner/radar-runner.component.html @@ -0,0 +1,10 @@ +
    +
    + + +
    diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/radar-runner/radar-runner.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/radar-runner/radar-runner.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/radar-runner/radar-runner.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/radar-runner/radar-runner.component.spec.ts new file mode 100644 index 0000000..d461a81 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/radar-runner/radar-runner.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { RadarRunnerComponent } from './radar-runner.component'; + +describe('RadarRunnerComponent', () => { + let component: RadarRunnerComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ RadarRunnerComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(RadarRunnerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/radar-runner/radar-runner.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/radar-runner/radar-runner.component.ts new file mode 100644 index 0000000..e1a901e --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/radar-runner/radar-runner.component.ts @@ -0,0 +1,102 @@ +import { Component, ElementRef, EventEmitter, OnInit, Output, ViewChild } from '@angular/core'; +import { DashrunnerService } from '../dashrunner.service'; +import { ActivatedRoute, Router } from '@angular/router'; +import { Dashboard3Service } from 'src/app/services/builder/dashboard3.service'; +import { DashboardContentModel } from 'src/app/models/builder/dashboard'; +// import { Label } from 'ng2-charts'; + +@Component({ + selector: 'app-radar-runner', + templateUrl: './radar-runner.component.html', + styleUrls: ['./radar-runner.component.scss'] +}) +export class RadarRunnerComponent implements OnInit { + @ViewChild('contentContainer') contentContainerRef!: ElementRef; + @Output() buttonClicked = new EventEmitter(); + editId; + public DashtestboardArray: DashboardContentModel[] = [ + ]; + workflowLine; + TableName; + XAxis; + YAxis; + showlabel; + JsonData; + lineChartNoLabels: any[] = []; + ChartLegend = false; + + constructor(private Dashtestservive:DashrunnerService,private route: ActivatedRoute,private dashboardService: Dashboard3Service, + private router : Router,) { } + + public radarChartLabels: string[] = [ + "Eating", + "Drinking", + "Sleeping", + "Designing", + "Coding", + "Cycling", + "Running" + ]; + + public radarChartData: any = [ + { data: [65, 59, 90, 81, 56, 55, 40], label: "Series A" }, + { data: [28, 48, 40, 19, 96, 27, 100], label: "Series B" } + ]; + public radarChartType: string = "radar"; + ngOnInit(): void { + // this.pieChartData = this.CharData.pieChartData; + // this.pieChartLabels = this.CharData.pieChartLabels; + + this.editId = this.route.snapshot.params.id; + console.log(this.editId); + + + this.dashboardService.getById(this.editId).subscribe((data)=>{ + console.log(data); + this.workflowLine = data.dashbord1_Line[0].model; + const dash = JSON.parse(this.workflowLine) ; + + const ChartObject = dash.dashboard.filter(obj => obj.name === "Radar Chart"); + console.log(ChartObject); + for (let i = 0; i < ChartObject.length; i++) { + const ids = this.Dashtestservive.getradarchart(); + // console.log(ids); + if (ids.includes(ChartObject[i].chartid)) { + // If the chartid is already in the ids array, continue to the next iteration + continue; + } + this.Dashtestservive.setradarchart(ChartObject[i].chartid); + const id = ids[i]; + console.log(id); + + if (ChartObject[i].chartid === id) { + this.TableName = ChartObject[i].table; + this.XAxis = ChartObject[i].xAxis; + this.YAxis = ChartObject[i].yAxis; + this.showlabel = ChartObject[i].showlabel; + this.ChartLegend = ChartObject[i].chartlegend; + console.log(this.TableName); + this.Dashtestservive.getChartData(this.TableName,"Radar Chart",this.XAxis,this.YAxis).subscribe((Ldata) => { + console.log(Ldata); + this.JsonData = Ldata; + this.radarChartData = this.JsonData.radarChartData; + this.radarChartLabels = this.JsonData.radarChartLabels; + + },(error) => { + console.log(error); + }); + break; // No need to continue the loop once the correct placeholder is found + } + } + }); + } + + generatePDFFile(){ + this.buttonClicked.emit(); + const content = this.contentContainerRef.nativeElement; + const filename = 'radarchart.pdf'; // You can provide any desired filename here + + this.Dashtestservive.generatePDF(content, filename); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/scatter-runner/scatter-runner.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/scatter-runner/scatter-runner.component.html new file mode 100644 index 0000000..5229e6b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/scatter-runner/scatter-runner.component.html @@ -0,0 +1,12 @@ +
    +
    + + +
    + + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/scatter-runner/scatter-runner.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/scatter-runner/scatter-runner.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/scatter-runner/scatter-runner.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/scatter-runner/scatter-runner.component.spec.ts new file mode 100644 index 0000000..67dde75 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/scatter-runner/scatter-runner.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ScatterRunnerComponent } from './scatter-runner.component'; + +describe('ScatterRunnerComponent', () => { + let component: ScatterRunnerComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ScatterRunnerComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ScatterRunnerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/scatter-runner/scatter-runner.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/scatter-runner/scatter-runner.component.ts new file mode 100644 index 0000000..2f36596 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/scatter-runner/scatter-runner.component.ts @@ -0,0 +1,121 @@ +import { Component, ElementRef, EventEmitter, OnInit, Output, ViewChild } from '@angular/core'; +import { DashrunnerService } from '../dashrunner.service'; +import { ActivatedRoute, Router } from '@angular/router'; +import { Dashboard3Service } from 'src/app/services/builder/dashboard3.service'; +import { DashboardContentModel } from 'src/app/models/builder/dashboard'; +// import { Label } from 'ng2-charts'; +import { ChartDataset } from 'chart.js'; + +@Component({ + selector: 'app-scatter-runner', + templateUrl: './scatter-runner.component.html', + styleUrls: ['./scatter-runner.component.scss'] +}) +export class ScatterRunnerComponent implements OnInit { + @ViewChild('contentContainer') contentContainerRef!: ElementRef; + @Output() buttonClicked = new EventEmitter(); + editId; + public DashtestboardArray: DashboardContentModel[] = [ + ]; + workflowLine; + TableName; + XAxis; + YAxis; + showlabel; + JsonData; + lineChartNoLabels: any[] = []; + ChartLegend = false; + + constructor(private Dashtestservive:DashrunnerService,private route: ActivatedRoute,private dashboardService: Dashboard3Service, + private router : Router,) { } + + public scatterChartLabels: string[] = [ 'Eating', 'Drinking', 'Sleeping', 'Designing', 'Coding', 'Cycling', 'Running' ]; + + public scatterChartData: ChartDataset[] = [ + { + data: [ + { x: 1, y: 1 }, + { x: 2, y: 3 }, + { x: 3, y: -2 }, + { x: 4, y: 4 }, + { x: 5, y: -3, r: 20 }, + ], + label: 'Series A', // This label will be displayed on hover + pointRadius: 10, + backgroundColor: 'red', + }, + { + data: [ + { x: 2, y: 2 }, + { x: 3, y: 4 }, + { x: 4, y: -1 }, + { x: 5, y: 5 }, + { x: 6, y: -2, r: 20 }, + ], + label: 'Series B', // This label will be displayed on hover + pointRadius: 10, + backgroundColor: 'blue', + }, + ]; + public scatterChartType: string = 'scatter'; + ChartOptions = { + aspectRatio:2.5, + responsive: true, + }; + ngOnInit(): void { + // this.pieChartData = this.CharData.pieChartData; + // this.pieChartLabels = this.CharData.pieChartLabels; + + this.editId = this.route.snapshot.params.id; + console.log(this.editId); + + + this.dashboardService.getById(this.editId).subscribe((data)=>{ + console.log(data); + this.workflowLine = data.dashbord1_Line[0].model; + const dash = JSON.parse(this.workflowLine) ; + + const ChartObject = dash.dashboard.filter(obj => obj.name === "Scatter Chart"); + console.log(ChartObject); + for (let i = 0; i < ChartObject.length; i++) { + const ids = this.Dashtestservive.getscatterchart(); + // console.log(ids); + if (ids.includes(ChartObject[i].chartid)) { + // If the chartid is already in the ids array, continue to the next iteration + continue; + } + this.Dashtestservive.setscatterchart(ChartObject[i].chartid); + const id = ids[i]; + console.log(id); + + if (ChartObject[i].chartid === id) { + this.TableName = ChartObject[i].table; + this.XAxis = ChartObject[i].xAxis; + this.YAxis = ChartObject[i].yAxis; + this.showlabel = ChartObject[i].showlabel; + this.ChartLegend = ChartObject[i].chartlegend; + console.log(this.TableName); + this.Dashtestservive.getChartData(this.TableName,"Scatter Chart",this.XAxis,this.YAxis).subscribe((Ldata) => { + console.log(Ldata); + this.JsonData = Ldata; + this.scatterChartData = this.JsonData.scatterChartData; + this.scatterChartLabels = this.JsonData.scatterChartLabels; + + },(error) => { + console.log(error); + }); + break; // No need to continue the loop once the correct placeholder is found + } + } + }); + } + + generatePDFFile(){ + this.buttonClicked.emit(); + const content = this.contentContainerRef.nativeElement; + const filename = 'scatterchart.pdf'; // You can provide any desired filename here + + this.Dashtestservive.generatePDF(content, filename); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/todo-runner/todo-runner.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/todo-runner/todo-runner.component.html new file mode 100644 index 0000000..139a1d5 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/todo-runner/todo-runner.component.html @@ -0,0 +1,30 @@ +
    +
    + + + + + + + + + + + + + + + + +
    #{{todoList.listName}}
    {{i + 1}}{{todo}} + + + +
    + + + + + +
    +
    \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/todo-runner/todo-runner.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/todo-runner/todo-runner.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/todo-runner/todo-runner.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/todo-runner/todo-runner.component.spec.ts new file mode 100644 index 0000000..3ac8ed3 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/todo-runner/todo-runner.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { TodoRunnerComponent } from './todo-runner.component'; + +describe('TodoRunnerComponent', () => { + let component: TodoRunnerComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ TodoRunnerComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(TodoRunnerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/todo-runner/todo-runner.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/todo-runner/todo-runner.component.ts new file mode 100644 index 0000000..cb264cb --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/dashboardrunner/dashrunnerline/todo-runner/todo-runner.component.ts @@ -0,0 +1,103 @@ +import { Component, ElementRef, EventEmitter, OnInit, Output, ViewChild } from '@angular/core'; +import { DashrunnerService } from '../dashrunner.service'; +import { DashboardContentModel } from 'src/app/models/builder/dashboard'; +import { ActivatedRoute, Router } from '@angular/router'; +import { Dashboard3Service } from 'src/app/services/builder/dashboard3.service'; + +@Component({ + selector: 'app-todo-runner', + templateUrl: './todo-runner.component.html', + styleUrls: ['./todo-runner.component.scss'] +}) +export class TodoRunnerComponent implements OnInit { + @ViewChild('contentContainer') contentContainerRef!: ElementRef; + @Output() buttonClicked = new EventEmitter(); + constructor( private Dashtestservive:DashrunnerService,private route: ActivatedRoute,private dashboardService: Dashboard3Service, + private router : Router) { } + + loading = false; + givendata; + error; + XAxis; + YAxis; + + editId; + public DashtestboardArray: DashboardContentModel[] = []; + workflowLine; + TableName; + + list; + data: any; + todo: string = ''; + // todoList = ['todo 1']; + todoList = { + listName: "title123", + List:['todo 1','todo 2'], + } + ngOnInit(): void { + this.editId = this.route.snapshot.params.id; + console.log(this.editId); + // this.getbyId(); + + this.dashboardService.getById(this.editId).subscribe((data)=>{ + console.log(data); + this.workflowLine = data.dashbord1_Line[0].model; + const dash = JSON.parse(this.workflowLine) ; + // this.DashtestboardArray = dash.dashboard; + // console.log(this.DashtestboardArray); + + const ChartObject = dash.dashboard.filter(obj => obj.name === "To Do Chart"); + console.log(ChartObject); + for (let i = 0; i < ChartObject.length; i++) { + const ids = this.Dashtestservive.gettodo(); + // console.log(ids); + if (ids.includes(ChartObject[i].chartid)) { + // If the chartid is already in the ids array, continue to the next iteration + continue; + } + this.Dashtestservive.settodo(ChartObject[i].chartid); + const id = ids[i]; + console.log(id); + + if (ChartObject[i].chartid === id) { + this.TableName = ChartObject[i].table; + this.XAxis = ChartObject[i].xAxis; + this.YAxis = ChartObject[i].yAxis; + console.log(this.TableName); + this.Dashtestservive.getChartData(this.TableName,"Todo List",this.XAxis,this.YAxis).subscribe((Ldata) => { + console.log(Ldata); + this.todoList.listName = Ldata.listName; + this.todoList.List = Ldata.List; + + },(error) => { + console.log(error); + }); + break; // No need to continue the loop once the correct placeholder is found + } + } + }); + } + + + + + + public addTodo(todo: string) { + this.todoList.List.push(todo); + this.todo = ''; // Clear the input field after adding a todo +} + +public removeTodo(todoIx: number) { + if (this.todoList.List.length) { + this.todoList.List.splice(todoIx, 1); + } +} + +generatePDFFile(){ + this.buttonClicked.emit(); + const content = this.contentContainerRef.nativeElement; + const filename = 'Todolist.pdf'; // You can provide any desired filename here + + this.Dashtestservive.generatePDF(content, filename); +} +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/fileUpload/FileUploadList.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/fileUpload/FileUploadList.component.ts new file mode 100644 index 0000000..c2c2a45 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/fileUpload/FileUploadList.component.ts @@ -0,0 +1,23 @@ +// import { Component, Input, Output, EventEmitter } from '@angular/core'; + +// @Component({ +// selector: 'app-file-upload-list', +// templateUrl: './file-upload-list.component.html', +// }) +// export class FileUploadListComponent { +// @Input() fileData: any[] = []; +// @Input() type: 'image' | 'audio' | 'video' | 'document' = 'image'; +// @Output() fileChanged = new EventEmitter<{ event: any, index: number }>(); +// @Output() deleteRow = new EventEmitter(); +// @Output() addRow = new EventEmitter(); + +// get acceptType() { +// switch (this.type) { +// case 'image': return 'image/*'; +// case 'audio': return 'audio/*'; +// case 'video': return 'video/*'; +// case 'document': return 'application/pdf,.csv,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel'; +// default: return '*/*'; +// } +// } +// } diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/fileUpload/file-upload-list.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/fileUpload/file-upload-list.component.html new file mode 100644 index 0000000..2fe6e1b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/fileUpload/file-upload-list.component.html @@ -0,0 +1,46 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/report-build.component.css b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/report-build.component.css new file mode 100644 index 0000000..a3722b6 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/report-build.component.css @@ -0,0 +1 @@ +/*# sourceMappingURL=report-build.component.css.map */ \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/report-build.component.css.map b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/report-build.component.css.map new file mode 100644 index 0000000..c4b7c9a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/report-build.component.css.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":"","file":"report-build.component.css"} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/report-build.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/report-build.component.html new file mode 100644 index 0000000..90c6b64 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/report-build.component.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/report-build.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/report-build.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/report-build.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/report-build.component.spec.ts new file mode 100644 index 0000000..da80cc9 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/report-build.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ReportBuildComponent } from './report-build.component'; + +describe('ReportBuildComponent', () => { + let component: ReportBuildComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ReportBuildComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ReportBuildComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/report-build.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/report-build.component.ts new file mode 100644 index 0000000..0583dca --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/report-build.component.ts @@ -0,0 +1,14 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-report-build', + templateUrl: './report-build.component.html', + styleUrls: ['./report-build.component.scss'] +}) +export class ReportBuildComponent implements OnInit { + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildadd/reportbuildadd.component.css b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildadd/reportbuildadd.component.css new file mode 100644 index 0000000..5a8298a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildadd/reportbuildadd.component.css @@ -0,0 +1,75 @@ +.s-info-bar { + display: flex; + flex-direction: row; + justify-content: space-between; +} +.s-info-bar button { + outline: none; +} + +.entry-pg { + width: 750px; +} + +.button1::after { + content: none; +} + +.button1:hover::after { + content: "ADD ROWS"; +} + +.section { + background-color: #dddddd; + height: 40px; +} + +.section p { + font-weight: bold; + padding: 10px; + font-size: 18px; +} + +.clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; +} + +.clr-file { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; +} + +.center { + text-align: center; +} + +input[type=text], [type=date], textarea { + width: 100%; + padding: 15px 15px; + background-color: rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} + +.required-field { + color: red; +} + +select { + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; +}/*# sourceMappingURL=reportbuildadd.component.css.map */ \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildadd/reportbuildadd.component.css.map b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildadd/reportbuildadd.component.css.map new file mode 100644 index 0000000..002810c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildadd/reportbuildadd.component.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["reportbuildadd.component.scss","reportbuildadd.component.css"],"names":[],"mappings":"AACA;EACI,aAAA;EACA,mBAAA;EACA,8BAAA;ACAJ;ADCI;EACE,aAAA;ACCN;;ADGE;EACE,YAAA;ACAJ;;ADGE;EACE,aAAA;ACAJ;;ADEE;EACE,mBAAA;ACCJ;;ADIE;EACE,yBAHS;EAIT,YAAA;ACDJ;;ADIE;EAEE,iBAAA;EACA,aAAA;EACA,eAAA;ACFJ;;ADKE;EACE,cAAA;EACA,yBAAA;EACA,sBAAA;EACA,wBAAA;EACA,eAAA;EACA,WAAA;EACA,mBAAA;ACFJ;;ADKE;EACE,cAAA;EACA,yBAAA;EACA,sBAAA;EAEA,eAAA;EACA,WAAA;EACA,mBAAA;ACHJ;;ADME;EACE,kBAAA;ACHJ;;ADKE;EACE,WAAA;EACA,kBAAA;EAED,oCAAA;EACC,qBAAA;EACA,sBAAA;EACA,kBAAA;EACA,sBAAA;ACHJ;;ADME;EACE,UAAA;ACHJ;;ADME;EACE,WAAA;EACA,gBAAA;EACA,sBAAA;EACA,kBAAA;ACHJ","file":"reportbuildadd.component.css"} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildadd/reportbuildadd.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildadd/reportbuildadd.component.html new file mode 100644 index 0000000..60df2d0 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildadd/reportbuildadd.component.html @@ -0,0 +1,48 @@ +

    {{ 'CREATE_NEW_REPORT' | translate }}

    + {{ 'ADD_MODE' | translate }}
    +
    + + + + + + + + +
    + + + + + +
    + +
    +
    + + + +
    +
    + + +
    +
    + + +
    +
    + + + +
    +
    +
    + + +
    +
    + +
    +
    +
    diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildadd/reportbuildadd.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildadd/reportbuildadd.component.scss new file mode 100644 index 0000000..39de1cb --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildadd/reportbuildadd.component.scss @@ -0,0 +1,80 @@ +//@import "../../../../assets/scss/var"; +.s-info-bar { + display: flex; + flex-direction: row; + justify-content: space-between; + button { + outline: none; + } + } + + .entry-pg { + width: 750px; + } + + .button1::after { + content: none; + } + .button1:hover::after { + content: "ADD ROWS"; + } + + $bg-color: #dddddd; + + .section { + background-color: $bg-color; + height: 40px; + } + + .section p { + //color: white; + font-weight: bold; + padding: 10px; + font-size: 18px; + } + + .clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; + } + + .clr-file { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + //padding: 0.6rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; + } + + .center { + text-align: center; + } + input[type=text],[type=date],textarea { + width: 100%; + padding: 15px 15px; + // margin: 8px 0; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; + } + + .required-field{ + color: red; + + } + select{ + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; + } + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildadd/reportbuildadd.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildadd/reportbuildadd.component.spec.ts new file mode 100644 index 0000000..e94fb3b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildadd/reportbuildadd.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ReportbuildaddComponent } from './reportbuildadd.component'; + +describe('ReportbuildaddComponent', () => { + let component: ReportbuildaddComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ReportbuildaddComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ReportbuildaddComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildadd/reportbuildadd.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildadd/reportbuildadd.component.ts new file mode 100644 index 0000000..39929f2 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildadd/reportbuildadd.component.ts @@ -0,0 +1,60 @@ +import { HttpErrorResponse, HttpHeaderResponse } from '@angular/common/http'; +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import { ToastrService } from 'ngx-toastr'; +import { ReportBuilderService } from 'src/app/services/api/report-builder.service'; + +@Component({ + selector: 'app-reportbuildadd', + templateUrl: './reportbuildadd.component.html', + styleUrls: ['./reportbuildadd.component.scss'] +}) +export class ReportbuildaddComponent implements OnInit { + + public entryForm: FormGroup; + constructor(private _fb: FormBuilder, private router: Router,private toastr: ToastrService, + private route: ActivatedRoute,private reportBuilderService: ReportBuilderService) { } + + ngOnInit(): void { + this.entryForm = this._fb.group({ + reportName: [null], + description:[null], + active:[null], + isSql:[true], + Rpt_builder2_lines: this._fb.array([this.initLinesFormReport()]), + }); + + } + + initLinesFormReport() { + return this._fb.group({ + model: '' + }); + } + + toastrShown: boolean = false; + onSubmit(){ + console.log(this.entryForm.value); + this.reportBuilderService.saverbData(this.entryForm.value).subscribe((data)=>{ + console.log(data); + if (data || data.status >= 200 && data.status <= 209) { + this.toastr.success('Report save successfully'); + } + },(error:HttpErrorResponse) => { + console.log(error); + if(error.status==404){ + this.toastr.error(error.error); + } + if(error.status==200){ this.toastr.success('Report save successfully'); } + if(error.status==400){ this.toastr.error('Report Save Unsuccessful'); } + }); + setTimeout(()=>{ + this.router.navigate(["../all"], { relativeTo: this.route }); + },500); + } + goback(){ + this.router.navigate(["../all"], { relativeTo: this.route }); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildall/reportbuildall.component.css b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildall/reportbuildall.component.css new file mode 100644 index 0000000..720f9da --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildall/reportbuildall.component.css @@ -0,0 +1,90 @@ +.td-title { + text-align: right; + width: 150px; + font-weight: bold; + background-color: rgba(63, 122, 231, 0.863); + color: white; +} + +.td-content { + text-align: left; +} + +.delete, .heading { + text-align: center; + color: red; +} + +input[type=radio] { + width: 14px !important; + height: 14px !important; + margin: 5px; + -webkit-appearance: none; + -moz-appearance: none; + -o-appearance: none; + appearance: none; + outline: 1px solid gray; + box-shadow: none; + font-size: 0.8em; + text-align: center; + line-height: 1em; + background: red; +} + +.dots { + width: 100px; + height: 100px; + bordeR: 1px solid; + border-radius: 50%; +} + +h4 { + margin-top: 16px; +} + +.s-order-dash-pg { + margin: 0px; + display: flex; + flex-wrap: wrap; + flex-direction: row; + justify-content: center; +} +.s-order-dash-pg .chart-box { + margin: 16px; + padding: 0 16px; + background-color: #fff; + border: 1px solid #ccc; + border-radius: 2px; +} + +#word1 { + width: 190px; + height: 180px; +} + +.center { + text-align: center; + margin-top: 5px; +} + +.clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; +} + +.heading { + text-align: center; + color: red; +} + +select { + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; +}/*# sourceMappingURL=reportbuildall.component.css.map */ \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildall/reportbuildall.component.css.map b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildall/reportbuildall.component.css.map new file mode 100644 index 0000000..3cc1526 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildall/reportbuildall.component.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["reportbuildall.component.scss","reportbuildall.component.css"],"names":[],"mappings":"AAAA;EACI,iBAAA;EACA,YAAA;EACA,iBAAA;EACA,2CAAA;EACA,YAAA;ACCJ;;ADCE;EACE,gBAAA;ACEJ;;ADAE;EACE,kBAAA;EACA,UAAA;ACGJ;;ADDE;EACE,sBAAA;EACA,uBAAA;EACA,WAAA;EACA,wBAAA;EACA,qBAAA;EACA,mBAAA;EACA,gBAAA;EACA,uBAAA;EACA,gBAAA;EACA,gBAAA;EACA,kBAAA;EACA,gBAAA;EACA,eAAA;ACIJ;;ADFE;EAEE,YAAA;EACA,aAAA;EACA,iBAAA;EACA,kBAAA;ACIJ;;ADDI;EAAG,gBAAA;ACKP;;ADJI;EACE,WAAA;EACA,aAAA;EACA,eAAA;EACA,mBAAA;EACA,uBAAA;ACON;ADNM;EACE,YAAA;EACA,eAAA;EACA,sBAAA;EACA,sBAAA;EACA,kBAAA;ACQR;;ADLI;EACC,YAAA;EACC,aAAA;ACQN;;ADLI;EACE,kBAAA;EACA,eAAA;ACQN;;ADLI;EACE,cAAA;EACA,yBAAA;EACA,sBAAA;EACA,wBAAA;EACA,eAAA;EACA,WAAA;EACA,mBAAA;ACQN;;ADNM;EACE,kBAAA;EACA,UAAA;ACSR;;ADNM;EACE,WAAA;EACA,gBAAA;EACA,sBAAA;EACA,kBAAA;ACSR","file":"reportbuildall.component.css"} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildall/reportbuildall.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildall/reportbuildall.component.html new file mode 100644 index 0000000..cfcd34e --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildall/reportbuildall.component.html @@ -0,0 +1,112 @@ + +
    + + +
    +
    +
    +

    {{ 'REPORT' | translate }}

    +
    +
    + + +
    +
    + + + + + + + + + Loading ... +
    {{error}}
    + + + + {{'GO_TO' | translate}} + + + {{ 'REPORT_RUNNER' | translate }} + + + {{ 'REPORT_DESCRIPTION' | translate }} + + + {{ 'ACTIVE' | translate }} + + + {{ 'FOLDER_NAME' | translate }} + + + {{ 'ACTION' | translate }} + + + + {{ 'SET_UP' | translate }} + {{user.reportName}} + {{user.description}} + {{user.active}} + {{user.folderName}} + + + + {{ 'DELETE' | translate }} + + + + +
    Who Column
    +
    Account ID: {{user.accountId}}
    +
    Created At: {{user.createdAt| date}}
    +
    Created By: {{user.createdBy}}
    +
    Updated At: {{user.updatedAt | date}}
    +
    Updated By: {{user.updatedBy}}
    +
    +
    + + +
    + + + + + +
    + + + + Users per page + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} + of {{pagination.totalItems}} users + + +
    +
    + + + + + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildall/reportbuildall.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildall/reportbuildall.component.scss new file mode 100644 index 0000000..aec3e9d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildall/reportbuildall.component.scss @@ -0,0 +1,83 @@ +.td-title { + text-align: right; + width: 150px; + font-weight: bold; + background-color: rgba(63, 122, 231, 0.863); + color: white; + } + .td-content{ + text-align: left; + } + .delete,.heading{ + text-align: center; + color: red; + } + input[type='radio']{ + width: 14px !important; + height: 14px !important; + margin: 5px; + -webkit-appearance: none; + -moz-appearance: none; + -o-appearance: none; + appearance: none; + outline: 1px solid gray; + box-shadow: none; + font-size: 0.8em; + text-align: center; + line-height: 1em; + background: red; + } + .dots + { + width: 100px; + height:100px; + border: 1px solid; + border-radius: 50%; + //background-color: #f00; + } + h4{margin-top: 16px;} + .s-order-dash-pg { + margin: 0px; + display:flex; + flex-wrap:wrap; + flex-direction:row; + justify-content:center; + .chart-box{ + margin:16px; + padding:0 16px; + background-color: #fff; + border:1px solid #ccc; + border-radius: 2px; + } + } + #word1{ + width: 190px; + height: 180px; + + } + .center{ + text-align: center; + margin-top: 5px; + } + + .clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; + } + .heading{ + text-align: center; + color: red; + } + + select{ + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; + } + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildall/reportbuildall.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildall/reportbuildall.component.spec.ts new file mode 100644 index 0000000..fce8821 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildall/reportbuildall.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ReportbuildallComponent } from './reportbuildall.component'; + +describe('ReportbuildallComponent', () => { + let component: ReportbuildallComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ReportbuildallComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ReportbuildallComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildall/reportbuildall.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildall/reportbuildall.component.ts new file mode 100644 index 0000000..25c291b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildall/reportbuildall.component.ts @@ -0,0 +1,92 @@ +import { Component, OnInit } from '@angular/core'; +import { ActivatedRoute, Router } from '@angular/router'; +import { ReportBuilderService } from 'src/app/services/api/report-builder.service'; +import { ToastrService } from 'ngx-toastr'; + +@Component({ + selector: 'app-reportbuildall', + templateUrl: './reportbuildall.component.html', + styleUrls: ['./reportbuildall.component.scss'] +}) +export class ReportbuildallComponent implements OnInit { + gridData; + loading = false; + error; + selected: any[] = []; + rowSelected :any= {}; + modaldelete=false; + isLoading: boolean = false; + projectId; + moduleId; + projectname; + constructor(private router: Router, + private route: ActivatedRoute,private reportBuilderService: ReportBuilderService, + private toastr:ToastrService, ) { } + + ngOnInit(): void { + + this.getAll(); + } + + + getAll() { + this.isLoading = true; + this.reportBuilderService.getrbDetails().subscribe((data) => { + this.isLoading = false; + console.log(data); + + const filteredData = data.filter(item => item.isSql === true); + this.gridData = filteredData; + if(this.gridData.length == 0){ + this.error="No data Available"; + console.log(this.error); + } + }); + } + + gotorunner() + { + this.router.navigate(['../../rerunner'],{relativeTo:this.route}); + } + + + goToAdd() { + this.router.navigate(["../add"], { relativeTo: this.route, }); + } + + goToEdit(id: number) { + this.router.navigate(["../edit/" + id], { relativeTo: this.route }); + } + enid; + modelData:any[]=[]; + goToLines(val) { + console.log(val); +this.enid=val.id; +// this.modelData = val.Rpt_builder2_lines[0].model; + + if(val.Rpt_builder2_lines[0].model !== '' ){ + this.router.navigate(["../edit/" + this.enid], { relativeTo: this.route }); + } + else{ + this.router.navigate(["../reportQuery/" + this.enid], { relativeTo: this.route, }); + } + } + onDelete(row) { + this.rowSelected = row; + this.modaldelete=true; + } + delete(id){ + this.modaldelete = false; + this.reportBuilderService.deletrbById(id).subscribe((data) => { + console.log(data); + if(data || data == null || data.status >= 200 && data.status <= 209){ + this.toastr.success("Deleted successfully"); + } + this.ngOnInit(); + },(error) => { + console.log(error); + this.toastr.error("getting error in deleting data"); + }) + } + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildedit/reportbuildedit.component.css b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildedit/reportbuildedit.component.css new file mode 100644 index 0000000..e938509 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildedit/reportbuildedit.component.css @@ -0,0 +1,56 @@ +.s-info-bar { + display: flex; + flex-direction: row; + justify-content: space-between; +} +.s-info-bar button { + outline: none; +} + +.edit-pg { + width: 750px; +} + +select { + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; +} + +#lines table, +#lines th, +#lines td { + border: 0.5px solid #f1f0f0; + border-collapse: collapse; +} +#lines input, +#lines input :focus { + outline: none; + border-width: 0px; + border: none; +} + +.clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; +} + +.center { + text-align: center; +} + +textarea { + width: 100%; + padding: 15px 15px; + background-color: rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +}/*# sourceMappingURL=reportbuildedit.component.css.map */ \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildedit/reportbuildedit.component.css.map b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildedit/reportbuildedit.component.css.map new file mode 100644 index 0000000..576b0f3 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildedit/reportbuildedit.component.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["reportbuildedit.component.scss","reportbuildedit.component.css"],"names":[],"mappings":"AACA;EACI,aAAA;EACA,mBAAA;EACA,8BAAA;ACAJ;ADCI;EACE,aAAA;ACCN;;ADGE;EACE,YAAA;ACAJ;;ADEE;EACE,WAAA;EACA,gBAAA;EACA,sBAAA;EACA,kBAAA;ACCJ;;ADEI;;;EAGE,2BAAA;EACA,yBAAA;ACCN;ADCI;;EAGE,aAAA;EACA,iBAAA;EACA,YAAA;ACAN;;ADIE;EACE,cAAA;EACA,yBAAA;EACA,sBAAA;EACA,wBAAA;EACA,eAAA;EACA,WAAA;EACA,mBAAA;ACDJ;;ADIE;EACE,kBAAA;ACDJ;;ADGE;EACE,WAAA;EACA,kBAAA;EAEA,oCAAA;EACA,qBAAA;EACA,sBAAA;EACA,kBAAA;EACA,sBAAA;ACDJ","file":"reportbuildedit.component.css"} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildedit/reportbuildedit.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildedit/reportbuildedit.component.html new file mode 100644 index 0000000..f05be3b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildedit/reportbuildedit.component.html @@ -0,0 +1,66 @@ +
    +

    REPORT SET UP - Project Details Report ({{ReportData.id}})

    + Edit Mode +
    +
    +
    +
    +
    +
    +
    +
    + + +

    +
    + + +
    +
    +
    +
    + + +
    +
    +
    +
    + + +
    +
    +
    +
    +
    +
    +
    +
    +
    + + +
    + +
    + + +
    +
    +
    +
    + + +
    +
    +
    + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildedit/reportbuildedit.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildedit/reportbuildedit.component.scss new file mode 100644 index 0000000..9893e7c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildedit/reportbuildedit.component.scss @@ -0,0 +1,58 @@ +// @import "../../../../../../../assets/scss/var"; +.s-info-bar { + display: flex; + flex-direction: row; + justify-content: space-between; + button { + outline: none; + } + } + + .edit-pg { + width: 750px; + } + select{ + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; + } + #lines { + table, + th, + td { + border: 0.5px solid #f1f0f0; + border-collapse: collapse; + } + input, + input :focus { + //-webkit-appearance: none; + outline: none; + border-width: 0px; + border: none; + } + } + + .clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; + } + + .center { + text-align: center; + } + textarea { + width: 100%; + padding: 15px 15px; + // margin: 8px 0; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; + } \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildedit/reportbuildedit.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildedit/reportbuildedit.component.spec.ts new file mode 100644 index 0000000..011630a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildedit/reportbuildedit.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ReportbuildeditComponent } from './reportbuildedit.component'; + +describe('ReportbuildeditComponent', () => { + let component: ReportbuildeditComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ReportbuildeditComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ReportbuildeditComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildedit/reportbuildedit.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildedit/reportbuildedit.component.ts new file mode 100644 index 0000000..8bd117c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildedit/reportbuildedit.component.ts @@ -0,0 +1,144 @@ +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import { ToastrService } from 'ngx-toastr'; +import { ReportBuilderService } from 'src/app/services/api/report-builder.service'; + + + +@Component({ + selector: 'app-reportbuildedit', + templateUrl: './reportbuildedit.component.html', + styleUrls: ['./reportbuildedit.component.scss'] +}) +export class ReportbuildeditComponent implements OnInit { + public entryForm: FormGroup; + updated = false; + ReportData:any = {}; + id: number; + nodeEditProperties = { + std_param_html:'', + adhoc_param_html:'', + column_str:'', + conn_name:'', + date_param_req:'', + // folderName:'', + sql_str:'', + +}; + constructor(private router: Router, + private route: ActivatedRoute,private reportBuilderService: ReportBuilderService, + private toastr: ToastrService, private _fb: FormBuilder) { } + + ngOnInit(): void { + this.id = this.route.snapshot.params["id"]; + console.log("update with id = ", this.id); + + this.entryForm = this._fb.group({ + std_param_html : [null], + adhoc_param_html:[null], + column_str:[null], + conn_name:[null], + date_param_req:[null], + // folderName:[null], + sql_str:[null], + }); + + this.getById(this.id); + this.listoddatabase(); + } + databaselist; + listoddatabase(){ + this.reportBuilderService.getdatabse().subscribe((data)=>{ + this.databaselist=data; + console.log(this.databaselist) + },(error) => { + console.log(error); + if(error){ + } + }); + + } + builderLine; + lineId; + builderLineData; + getById(id: number) { + this.reportBuilderService.getrbDetailsById(id).subscribe( + (data) => { + console.log(data); + this.ReportData = data; + + + this.builderLine = this.ReportData.rpt_builder2_lines; + this.lineId = this.builderLine[0].id + console.log("line data ",this.lineId, this.builderLine); + if(this.builderLine[0].model != '') + { + this.builderLineData = JSON.parse(this.builderLine[0].model) ; + console.log(this.builderLineData); + + this.nodeEditProperties.std_param_html = this.builderLineData.std_param_html; + this.nodeEditProperties.adhoc_param_html = this.builderLineData.adhoc_param_html; + this.nodeEditProperties.column_str = this.builderLineData.column_str; + this.nodeEditProperties.conn_name = this.builderLineData.conn_name; + this.nodeEditProperties.date_param_req = this.builderLineData.date_param_req; + this.nodeEditProperties.sql_str = this.builderLineData.sql_str; + } + }, + (err) => { + console.log(err); + } + ); + } + + listBuilder_Lines = { + model:{} + } + update() { + + this.builderLineData.std_param_html = this.nodeEditProperties.std_param_html; + this.builderLineData.adhoc_param_html = this.nodeEditProperties.adhoc_param_html; + this.builderLineData.column_str = this.nodeEditProperties.column_str; + this.builderLineData.conn_name = this.nodeEditProperties.conn_name ; + this.builderLineData.date_param_req = this.nodeEditProperties.date_param_req; + this.builderLineData.sql_str = this.nodeEditProperties.sql_str; + console.log(this.builderLineData); + // this.builderLineData.splice(1); + console.log(this.builderLineData); + let tmp = JSON.stringify(this.builderLineData); //.replace(/\\/g, '') + this.listBuilder_Lines.model = tmp; +console.log(this.listBuilder_Lines); + + this.reportBuilderService.updaterbLineData(this.listBuilder_Lines, this.lineId).subscribe( + (data) => { + console.log(data); + if (data) { + this.toastr.success('Update successfully'); + } + this.router.navigate(["../../all"], { relativeTo: this.route }); + //this.router.navigate(["../../all"],{ relativeTo: this.route, queryParams: { p_id: this.projectId } }); + }, + (error) => { + // console.log(error); + // const objectArray = Object.entries(error.error.fieldErrors); + // objectArray.forEach(([k, v]) => { + // console.log(k); + // console.log(v); + // this.fieldErors.push({ field: k, message: v }); + // }); + console.log(error); // this will come from backend + } + ); + // this.lineBuilder_Header = new Rn_Cff_ActionBuilder_Header(); + } + + onSubmit() { + this.updated = true; + this.update(); + } + + back() { + this.router.navigate(["../../all"], { relativeTo: this.route }); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildquery/reportbuildquery.component.css b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildquery/reportbuildquery.component.css new file mode 100644 index 0000000..f328a84 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildquery/reportbuildquery.component.css @@ -0,0 +1,146 @@ +@import '@swimlane/ngx-datatable/index.css'; +@import '@swimlane/ngx-datatable/themes/bootstrap.css'; +@import '@swimlane/ngx-datatable/assets/icons.css'; +.button1::after { + content: none; +} + +.button1:hover::after { + content: "ADD ROWS"; +} + +.delete, .heading { + text-align: center; + color: red; +} + +.bold { + font-weight: bold; +} + +.section p { + padding: 10px; + font-size: 18px; +} + +.clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; +} + +.required-field { + color: red; + font-size: 18px; +} + +input[type=text], textarea { + width: 100%; + padding: 15px 15px; + background-color: rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} + +html { + /* make sure we use up the whole viewport */ + width: 100%; + min-height: 100vh; +} + +body { + width: 100%; + background-color: gray; +} + +ngx-datatable { + font-family: Metropolis, Avenir Next, Helvetica Neue, Arial, sans-serif; + font-size: 13px; + border: 1px solid #ccc; + border-radius: 2px; + padding: 0; + background-color: #fff; +} +ngx-datatable .datatable-header, ngx-datatable .datatable-footer { + font-size: 11px; + line-height: 18px; + font-weight: bold; + background-color: #fafafa; +} +ngx-datatable .datatable-header { + box-shadow: 0 2px 4px 0px #ccc; +} +ngx-datatable .datatable-header .datatable-header-cell { + line-height: 22px; + padding-left: 10px; + height: 22px; +} +ngx-datatable .datatable-header .datatable-header-cell:not(:first-child) { + border-left: 1px solid #ccc; +} +ngx-datatable .datatable-footer { + border-top: 1px solid #ccc; +} +ngx-datatable .datatable-footer .page-count { + margin: 10px; +} +ngx-datatable .datatable-footer .pages a { + padding: 8px; + color: inherit; +} +ngx-datatable .datatable-footer .pages.active a { + padding: 8px; + color: #007cbb; + background-color: rgb(221, 221, 221); + text-align: center; +} +ngx-datatable .datatable-header-inner { + padding: 12px; +} +ngx-datatable .datatable-body-cell { + padding: 8px 0 10px 20px; + border-top: 1px solid #ddd; +} +ngx-datatable .pager i { + font-size: 18px; + vertical-align: middle; +} + +.postColumn { + border: 1px solid #ccc; + width: 78%; + margin-left: 15px; +} + +.colName { + text-align: center; + padding: 5px; +} + +.colfields { + border: 1px solid black; + margin: 17px; + text-align: center; + padding: 3px; +} + +.fieldWrapper { + margin-top: 20px; +} + +.center { + text-align: center; +} + +select { + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; +}/*# sourceMappingURL=reportbuildquery.component.css.map */ \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildquery/reportbuildquery.component.css.map b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildquery/reportbuildquery.component.css.map new file mode 100644 index 0000000..ec63f0f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildquery/reportbuildquery.component.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["reportbuildquery.component.scss","reportbuildquery.component.css"],"names":[],"mappings":"AA8JQ,2CAAA;AACA,sDAAA;AACC,kDAAA;AA9JT;EACE,aAAA;ACEF;;ADAA;EACE,mBAAA;ACGF;;ADAA;EACE,kBAAA;EACA,UAAA;ACGF;;ADAA;EACE,iBAAA;ACGF;;ADCA;EAEE,aAAA;EACA,eAAA;ACCF;;ADEA;EACE,cAAA;EACA,yBAAA;EACA,sBAAA;EACA,wBAAA;EACA,eAAA;EACA,WAAA;EACA,mBAAA;ACCF;;ADWA;EACE,UAAA;EACF,eAAA;ACRA;;ADYA;EACE,WAAA;EACA,kBAAA;EAED,oCAAA;EACC,qBAAA;EACA,sBAAA;EACA,kBAAA;EACA,sBAAA;ACVF;;ADcA;EACI,2CAAA;EACA,WAAA;EACA,iBAAA;ACXJ;;ADaA;EACI,WAAA;EACA,sBAAA;ACVJ;;ADeA;EACE,uEAAA;EACA,eAAA;EACA,sBAAA;EACA,kBAAA;EACA,UAAA;EACA,sBAAA;ACZF;ADaE;EACE,eAAA;EACA,iBAAA;EACA,iBAAA;EACA,yBAAA;ACXJ;ADaE;EAEE,8BAAA;ACZJ;ADaI;EACE,iBAAA;EACA,kBAAA;EACA,YAAA;ACXN;ADcE;EACI,2BAAA;ACZN;ADeE;EACE,0BAAA;ACbJ;ADcI;EACE,YAAA;ACZN;ADcI;EACE,YAAA;EACA,cAAA;ACZN;ADcI;EACE,YAAA;EACA,cAAA;EACA,oCAAA;EACA,kBAAA;ACZN;ADgBE;EACE,aAAA;ACdJ;ADgBE;EACE,wBAAA;EACA,0BAAA;ACdJ;ADgBE;EACE,eAAA;EACA,sBAAA;ACdJ;;ADkBA;EACE,sBAAA;EACA,UAAA;EACA,iBAAA;ACfF;;ADiBA;EACE,kBAAA;EACA,YAAA;ACdF;;ADgBA;EACE,uBAAA;EACA,YAAA;EACA,kBAAA;EACA,YAAA;ACbF;;ADeA;EACE,gBAAA;ACZF;;ADcA;EACE,kBAAA;ACXF;;ADcA;EACE,WAAA;EACA,gBAAA;EACA,sBAAA;EACA,kBAAA;ACXF","file":"reportbuildquery.component.css"} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildquery/reportbuildquery.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildquery/reportbuildquery.component.html new file mode 100644 index 0000000..723cd1c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildquery/reportbuildquery.component.html @@ -0,0 +1,670 @@ + + +
    + + +
    +
    +

    SQL Worksheet- + connection name + {{databaseName}} + switch + Add New +

    + +
    + +
    + + +
    +
    + + + + + + +
    +
    + +
    +
    + + + + + + + + + {{selected}} {{ getAliasedColumn(selected) }} + + + + {{state}} + + + + +
    +

    + +
    +
    +
    + + + + + + + + + {{ selected.substr(0, selected.indexOf('.')) }}{{ selected.substr(selected.indexOf('.')) }} + + + {{selected}} + + + + + {{state}} + + + + +
    +

    +

    {{msg}}

    +
    +
    +
    + + + + + + {{data.andor}}  + + {{ selected.substr(0, selected.indexOf('.')) }}{{ selected.substr(selected.indexOf('.')) }} + + + {{selected}} + + + {{data.condition}} {{data.value}} + + + + + {{state}} + + + + +
    +

    +

    {{msg}}

    +
    + +
    +
    + + + + + + + + + {{ selected.substr(0, selected.indexOf('.')) }}{{ selected.substr(selected.indexOf('.')) }} + + + {{selected}} + + + + + {{state}} + + + + +
    +

    +

    {{msg}}

    +
    + +
    +
    + + +
    +
    + + +
    +
    +
    + +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +

    Response

    +
    +
    +
    +
    +
    +

    +
    +
    +
    +
    + + + + + + + + + + + + + +
    {{co}}
    {{item[key]}}
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildquery/reportbuildquery.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildquery/reportbuildquery.component.scss new file mode 100644 index 0000000..3ee5c25 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildquery/reportbuildquery.component.scss @@ -0,0 +1,161 @@ +$bg-color: #dddddd; + +.button1::after { + content: none; +} +.button1:hover::after { + content: "ADD ROWS"; +} + +.delete,.heading{ + text-align: center; + color: red; +} + +.bold{ + font-weight: bold; +} + + +.section p { + //color: white; + padding: 10px; + font-size: 18px; +} + +.clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; +} +// input[type=text],[type=date],textarea { +// width: 60%; +// padding: 15px 15px; +// // margin: 8px 0; +// background-color:rgb(255, 255, 255); +// display: inline-block; +// border: 1px solid #ccc; +// border-radius: 4px; +// box-sizing: border-box; +// } +.required-field{ + color: red; +font-size: 18px; + +} + +input[type=text],textarea { + width: 100%; + padding: 15px 15px; + // margin: 8px 0; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} + + +html { + /* make sure we use up the whole viewport */ + width: 100%; + min-height: 100vh; +} +body { + width: 100%; + background-color: gray; + //min-height: 100vh; /* this helps with the sticky footer */ +} + +//Import classes from swimlane datatable +ngx-datatable { + font-family: Metropolis,Avenir Next,Helvetica Neue,Arial,sans-serif; + font-size:13px; + border:1px solid #ccc; + border-radius: 2px; + padding:0; + background-color: #fff; + .datatable-header, .datatable-footer { + font-size:11px; + line-height:18px; + font-weight:bold; + background-color:#fafafa; + } + .datatable-header{ + //border-bottom: 2px solid #ccc; + box-shadow: 0 2px 4px 0px #ccc; + .datatable-header-cell{ + line-height:22px; + padding-left:10px; + height:22px; + } + } + .datatable-header .datatable-header-cell:not(:first-child) { + border-left:1px solid #ccc; + } + + .datatable-footer{ + border-top: 1px solid #ccc; + .page-count{ + margin: 10px; + } + .pages a{ + padding:8px; + color:inherit; + } + .pages.active a{ + padding:8px; + color:#007cbb; + background-color:rgb(221, 221, 221); + text-align: center; + } + } + + .datatable-header-inner{ + padding:12px; + } + .datatable-body-cell{ + padding:8px 0 10px 20px; + border-top: 1px solid #ddd; + } + .pager i { + font-size:18px; + vertical-align: middle; + } +} + +.postColumn{ + border: 1px solid #ccc; + width: 78%; + margin-left: 15px; +} +.colName{ + text-align: center; + padding: 5px; +} +.colfields{ + border: 1px solid black; + margin: 17px; + text-align: center; + padding: 3px; +} +.fieldWrapper{ + margin-top: 20px; +} +.center { + text-align: center; +} + +select{ + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; +} +// @import '@swimlane/ngx-datatable/index.css'; +// @import '@swimlane/ngx-datatable/themes/bootstrap.css'; +// @import '@swimlane/ngx-datatable/assets/icons.css'; diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildquery/reportbuildquery.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildquery/reportbuildquery.component.spec.ts new file mode 100644 index 0000000..96b95f4 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildquery/reportbuildquery.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ReportbuildqueryComponent } from './reportbuildquery.component'; + +describe('ReportbuildqueryComponent', () => { + let component: ReportbuildqueryComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ReportbuildqueryComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ReportbuildqueryComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildquery/reportbuildquery.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildquery/reportbuildquery.component.ts new file mode 100644 index 0000000..3c23b53 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildquery/reportbuildquery.component.ts @@ -0,0 +1,660 @@ +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormControl, FormGroup } from '@angular/forms'; +import { ReportBuilderService } from 'src/app/services/api/report-builder.service'; +import { TableList } from '../../../../../models/fnd/table-setup'; +import { HttpClient, HttpErrorResponse } from '@angular/common/http'; +import { ToastrService } from 'ngx-toastr'; +import { ActivatedRoute, Router } from '@angular/router'; + +@Component({ + selector: 'app-reportbuildquery', + templateUrl: './reportbuildquery.component.html', + styleUrls: ['./reportbuildquery.component.scss'] +}) +export class ReportbuildqueryComponent implements OnInit { + searchtable: any; + searchcol: any; + columns: any[]; + table: boolean = false; + database: boolean = false; + query: boolean = false; + public entryForm: FormGroup; + public addForm: FormGroup; + public saveReportForm: FormGroup; + addmodal: boolean = false; + query2: string; + rows: any[]; + loading = false; + tableList: TableList[]; + databaselist = []; + collist; + search: any; + selectedtable: any[]; + selectedcol: any[]; + selectedcol1: any[]; + selectedParamter: any[]; + selectedtablequery; + selectcolquery; + selectedquery; + backQuery = true; + searchquery; + col: boolean = false; + col1: boolean = false; + searchdatabase; + selecteddatabase; + msg; + id; + querydata; + errorco; + errortb; + errorcl; + loadingIndicator = true; reorderable = true; + columnModal = false; + reportModal = false; + filterModel = false; + conditionData = []; + stdParamters = []; + columnData = []; + andor = ['AND', 'OR', 'NOT']; + fieldname = ['name1', 'name2']; + condition = ['=', '!=', '<', '>', '<=', '>=', 'LIKE', 'BETWEEN', 'IN']; + alias = ['a', 'b', 'c', 'd', 'e', 'f']; + tabs = ['Tab', 'Tab',]; + selected = new FormControl(0); + constructor(private _fb: FormBuilder, private router: Router, + private route: ActivatedRoute, + private reportBuilderService: ReportBuilderService, private toastr: ToastrService,) { } + + ngOnInit(): void { + this.id = this.route.snapshot.params["id"]; + console.log("update with id = ", this.id); + this.entryForm = this._fb.group({ + sql_query: [null], + }); + this.addForm = this._fb.group({ + conn_string: [null], + username: [null], + password: [null], + driver_class_name: [null], + }) + + this.saveReportForm = this._fb.group({ + conn_name: [null], + // reportName: [null], + folderName: [null], + // description:[null], + // active:[null], + sql_str: [null], + date_param_req: [null], + column_str: [null], + adhoc_param_html: [null], + std_param_html: [null], + }); + // this.listofTables(); + this.getById(this.id); + + } + ReportBuilder_Header; + ReportBuilder_Line; + lineId; + getById(id: number) { + this.reportBuilderService.getrbDetailsById(id).subscribe( + (data) => { + console.log(data); + this.ReportBuilder_Header = data; + console.log(data.Rpt_builder2_lines[0].model); + this.ReportBuilder_Line = data.Rpt_builder2_lines + this.lineId = data.Rpt_builder2_lines[0].id; + }, + (err) => { + console.log(err); + } + ); + } + + + listoddatabase() { + this.reportBuilderService.getdatabse().subscribe((data) => { + this.databaselist = data; + console.log('database list ', this.databaselist) + + if (this.databaselist.length == 0) { + this.errorco = "No data Available"; + + } + }, (error) => { + console.log(error); + if (error) { + this.errorco = "No data Available"; + } + }); + + } + listofTables(val) { + this.reportBuilderService.getTableListn(val).subscribe(data => { + // console.log("table list "+data); + this.tableList = data; + console.log(this.tableList); + }, (error) => { + console.log(error); + if (error) { + this.errortb = "No data Available"; + } + }) + } + msg1; + finalColList: any[] = []; + listofcol(val) { + console.log(this.selectedtable); + console.log(this.selectedcol); + console.log(this.selectedcol1); + const tableString = JSON.stringify(val); + console.log(tableString); + const array = Array.of(val); // Using the Array constructor + console.log(array); + console.log(val); + // this.reportBuilderService.getcolListn(this.name[1],val).subscribe((data)=>{ + // this.reportBuilderService.getColumnList(this.name[1],array).subscribe((data)=>{ + this.reportBuilderService.getAllColumnsFromAllTables(array).subscribe((data) => { + console.log(data); + this.collist = data; + // this.finalColList.push(data); + // this.finalColList.push(this.collist) + if (this.selectedtable == null) { + this.msg = 'Plz First Select Table' + } else { + this.msg = ""; + } + + //console.log(this.collist); + }, (error) => { + console.log(error); + if (error) { + this.errorcl = "No data Available"; + } + }) + } + listofquery() { + this.reportBuilderService.getall().subscribe((data) => { + this.querydata = data; + console.log(this.querydata) + }) + } + rowdata; + onSubmit() { + // this.backQuery = false; + + this.query2 = this.entryForm.value.sql_query; + console.log(this.query2); + this.reportBuilderService.getMasterData(this.query2).subscribe((data) => { + this.rows = data; + console.log(this.rows); + this.rowdata = [this.rows]; + console.log(typeof this.rows); + if (data) { + this.toastr.success("Run Successfully") + } + var j; + var cart = []; + + for (var i = 0; i < data.length; i++) { + var columnsIn = data[i]; + if (i == 1) { + for (var key in columnsIn) { + j = { prop: key, name: key }; + cart.push(j) + + } + } + } + this.columns = cart; + + }); + } + getHeaders() { + let headers: string[] = []; + if (this.rows) { + this.rows.forEach((value) => { + Object.keys(value).forEach((key) => { + if (!headers.find((header) => header == key)) { + headers.push(key) + } + + }) + + }) + } + return headers; + } + savequery() { + //this.query2=this.entryForm.value.sql_query; + console.log(this.entryForm.value); + this.reportBuilderService.saveq(this.entryForm.value).subscribe((data) => { + console.log(data); + }) + + } + + //tab + addTab(selectAfterAdding: boolean) { + this.tabs.push('Tab'); + + if (selectAfterAdding) { + this.selected.setValue(this.tabs.length - 1); + } + } + + removeTab(index: number) { + this.tabs.splice(index, 1); + } + opendatabsemo() { + this.database = true; + this.listoddatabase(); + } + name; + databaseName; + databasename(val) { + console.log(val); + this.databaseName = val.name; + this.selecteddatabase = val.conn_string; + console.log(this.selecteddatabase); + // this.selecteddatabase.substring(0,this.selecteddatabase.indexOf(':3306/')) + // console.log(this.selecteddatabase); + this.name = this.selecteddatabase.split(":3306/"); + console.log(this.name[1]); + this.database = false; + this.listofTables(this.name[1]) + } + opentablemod() { + this.table = true; + // this.listofTables(); + } + tablename(value) { + console.log(value); + this.selectedtable = value; + this.table = false; + } + tableModal = false; + TableData; + opentcolmod() { + // this.col=true; + + if (this.selectedtable == null) { + this.msg = 'Plz First Select Table' + } else { + this.msg = ""; + // this.tableModal = true; + } + this.listofcol(this.selectedtable) + + if (Array.isArray(this.selectedtable) || this.selectedtable === undefined) { + const selectedTables = this.selectedtable.map((table, index) => { + const alias = String.fromCharCode(97 + (index % 26)); // Generate aliases starting from 'a' + console.log(alias, table); + return `${table} ${alias}`; + }).join(','); + console.log(selectedTables); + // const selectedTables = this.TableData.map(({ alias, tables }) => `${tables} ${alias}`).join(','); + // console.log(selectedTables); + + this.selectedtablequery = `SELECT * FROM ${selectedTables} WHERE 1=1`; + console.log(this.selectedtablequery); + // You can perform further actions with the generated SQL query + } else { + this.selectedtablequery = ''; + console.log(this.selectedtablequery); + // You can perform further actions with the generated SQL query + } + + this.selectedquery = this.selectedtablequery; + + // const defaultObject = { + // alias: "", + // } + // const objectArray = this.selectedtable.map(value => ({ + // ...defaultObject, + // tables: value, + // })); + // console.log(objectArray); + // const data = JSON.stringify(objectArray); + // try { + // this.TableData = JSON.parse(data); + // console.log('Received data:', this.TableData ); + // } catch (e) { console.error('Invalid JSON:', data);} + } + opentcolmod1() { + // this.col1=true; + this.listofcol(this.selectedtable) + + + } + colname() { + + this.columnModal = true; + + //column filter + const defaultObject = { + alias: "", + } + const valuesOnly = this.selectedcol.map(item => item.split('.').pop()); + const objectArray = this.selectedcol.map((value, index) => ({ + // ...defaultObject, + alias: valuesOnly[index], + columns: value, + })); + console.log(objectArray); + const data = JSON.stringify(objectArray); + try { + this.columnData = JSON.parse(data); + console.log('Received data:', this.columnData); + } catch (e) { console.error('Invalid JSON:', data); } + } + onAddColLines() { + this.columnData.push({ + columns: "", + alias: "", + }); + } + deleteColRow(index) { + this.columnData.splice(index, 1); + } + // console.log(col); + // this.selectedcol=col; + + onColSelected() { + // console.log(col); + // this.selectedcol=col; + this.col = false; + this.columnModal = false; + if (Array.isArray(this.columnData)) { + // const selectedColumns = this.columnData.join(','); + //for column + const selectedColumns = this.columnData.map(({ alias, columns }) => `${columns} as ${alias}`).join(','); + console.log(selectedColumns); + //for table + const selectedTables = this.selectedtable.map((table, index) => { + const alias = String.fromCharCode(97 + (index % 26)); // Generate aliases starting from 'a' + console.log(alias, table); + return `${table} ${alias}`; + }).join(','); + console.log(selectedTables); + + // const selectedTables = this.TableData.map(({ alias, tables }) => `${tables} ${alias}`).join(','); + // console.log(selectedTables); + + this.selectcolquery = `SELECT ${selectedColumns} FROM ${selectedTables} WHERE 1=1`; + console.log(this.selectcolquery); + // You can perform further actions with the generated SQL query + } else if (Array.isArray(this.selectedtable)) { + //for table + const selectedTables = this.selectedtable.map((table, index) => { + const alias = String.fromCharCode(97 + (index % 26)); // Generate aliases starting from 'a' + console.log(alias, table); + return `${table} ${alias}`; + }).join(','); + console.log(selectedTables); + this.selectcolquery = `SELECT * FROM ${selectedTables} WHERE 1=1`; + console.log(this.selectcolquery); + // You can perform further actions with the generated SQL query + } else { + // if(this.selectedtable==null){ + // this.msg1='Plz First Select Table' + // }else{ + // this.msg1=""; + // } + } + this.selectedquery = this.selectcolquery; + } + + // onColSelected(){ + // this.col=false; + // this.columnModal = false; + // console.log(this.selectedcol); + // if (Array.isArray(this.selectedcol)) { + // const selectedColumns = this.selectedcol.join(','); + // this.selectcolquery = `SELECT ${selectedColumns} FROM ${this.selectedtable} WHERE 1=1`; + // console.log(this.selectcolquery); + // // You can perform further actions with the generated SQL query + // } else { + // this.selectcolquery = `SELECT * FROM ${this.selectedtable} WHERE 1=1`; + // console.log(this.selectcolquery); + // // You can perform further actions with the generated SQL query + // } + // this.selectedquery = this.selectcolquery; + + // //std pramameter + // const defaultObject = { + // label: "", + // dataType: "", + // list: "", + // } + // const objectArray = this.selectedcol.map(value => ({ + // ...defaultObject, + // column: value, + // })); + // console.log(objectArray); + // const data = JSON.stringify(objectArray); + // try { + // this.stdParamters = JSON.parse(data); + // console.log('Received data:', this.stdParamters ); + // } catch (e) { console.error('Invalid JSON:', data);} + // } + onAddstdLines() { + this.stdParamters.push({ + column: "", + label: "", + dataType: "", + list: "" + }); + } + deletestdRow(index) { + this.stdParamters.splice(index, 1); + } + colname1() { + // console.log(col); + // this.selectedcol1=col; + // this.col1=false; + // this.listofquery(); + } + openquerymod() { + this.query = true; + this.listofquery(); + } + selectquery(val) { + console.log(val); + this.selectedquery = val; + this.query = false; + } + opencopym() { + // this.router.navigate(['cns-portal', 'reportbuild','reportQuery', this.id, 'queryadd']); + this.router.navigate(['queryadd'], { relativeTo: this.route }); + } + + onCreate() { + console.log(this.addForm.value); + this.reportBuilderService.createdb(this.addForm.value).subscribe((data) => { + console.log(data); + }) + } + + // onSelectedChanged(selected){ + // this.selectedTableData = this.tableList.filter(item => item.selected); + // } + conditionVal; + filter(val) { + + this.filterModel = true; + this.conditionVal = val; + + const defaultObject = { + andor: "AND", + // alias: "", + condition: "=", + value: "", + } + const objectArray = this.conditionVal.map(value => ({ + ...defaultObject, + fields_name: value, + })); + console.log(objectArray); + const data = JSON.stringify(objectArray); + try { + this.conditionData = JSON.parse(data); + console.log('Received data:', this.conditionData); + } catch (e) { console.error('Invalid JSON:', data); } + } + + onAddLines() { + this.conditionData.push({ + andor: "AND", + fields_name: "", + condition: "=", + value: "" + }); + } + deleteRow(index) { + this.conditionData.splice(index, 1); + } + filteredConditionData; + filterAndor; + filtercondlvalue; + onSelected() { + this.filterModel = false; + console.log(this.conditionData); + let formattedString = ''; + for (const condition of this.conditionData) { + const { andor, fields_name, condition: cond, value } = condition; + formattedString += `${andor} ${fields_name} ${cond} '${value}'`; + this.filterAndor = andor; + this.filtercondlvalue = cond + ' ' + value; + } + // this.getConditionBeforeColumn(this.selectedcol1) + // this.getConditionAfterColumn(this.selectedcol1); + console.log(formattedString); + this.filteredConditionData = formattedString + if (this.selectcolquery !== undefined) { + const mQuery = this.selectcolquery + ' ' + formattedString; + console.log(mQuery); + this.selectedquery = mQuery; + } else { + const mQuery = this.selectedtablequery + ' ' + formattedString; + console.log(mQuery); + this.selectedquery = mQuery; + } + } + + // getConditionBeforeColumn(selected: any){ + + // return this.filterAndor; + + + // } + // getConditionAfterColumn(selected: any){ + // return this.filtercondlvalue + + + // } + onBack() { + // this.backQuery = true; + } + + getAliasedColumn(selected: string) { + const index = this.selectedtable.findIndex(item => item === selected); + const alphabet = 'abcdefghijklmnopqrstuvwxyz'; + const aliasIndex = index % alphabet.length; // Calculate the index based on the remainder + const repeatedAlias = alphabet.charAt(aliasIndex); + return repeatedAlias; + } + + goToEdit(id) { + this.router.navigate(["../queryedit/" + id], { relativeTo: this.route }); + } + + rowSelected: any = {}; + modaldelete = false; + onDelete(row) { + this.rowSelected = row; + this.modaldelete = true; + } + + delete(id) { + this.modaldelete = false; + console.log("in delete " + id); + this.reportBuilderService.deleteSqlModel(id).subscribe( + (data) => { + console.log(data); + this.listoddatabase(); + if (data) { + this.toastr.success('Deleted successfully'); + } + }, + (error) => { + console.log('Error in adding data...', +error); + if (isNaN(error)) { + this.toastr.success('Deleted successfully'); + } else { + this.toastr.error('Not Deleted Data Getting Some Error'); + } + this.listoddatabase(); + } + ); + } + + + workflow_Lines = { + model: {} + } + foldername; + dataParameter; + + saveReport() { + // this.reportModal = true; + this.rpt_builder(); + } + + rpt_builder() { + + + + + + this.onSaveBuidler(); + } + onSaveBuidler() { + this.reportModal = false; + this.saveReportForm.value.sql_str = this.selectedquery; + this.saveReportForm.value.date_param_req = this.dataParameter; + this.saveReportForm.value.folderName = this.foldername; + this.saveReportForm.value.conn_name = this.databaseName; + const col_str = JSON.stringify(this.selectedcol); + this.saveReportForm.value.column_str = col_str; + const colList = JSON.stringify(this.collist); + this.saveReportForm.value.adhoc_param_html = colList; + const table_str = JSON.stringify(this.selectedtable); + // this.saveReportForm.value.std_param_html = table_str; + this.saveReportForm.value.std_param_html = col_str; + + console.log(this.saveReportForm.value); + let tmp = JSON.stringify(this.saveReportForm.value); //.replace(/\\/g, '') + this.workflow_Lines.model = tmp; + // this.ReportBuilder_Header.Rpt_builder2_lines[0].model = tmp + console.log(this.workflow_Lines); + + this.reportBuilderService.updaterbLineData(this.workflow_Lines, this.lineId).subscribe((data) => { + console.log(data); + if (data || data.status >= 200 && data.status <= 209) { + this.toastr.success('Report save successfully'); + this.router.navigate(["../../all"], { relativeTo: this.route }); + } + }, (error: HttpErrorResponse) => { + console.log(error); + if (error.status == 404) { + this.toastr.error(error.error); + } + if (error.status == 200) { this.toastr.success('Report save successfully'); } + if (error.status == 400) { this.toastr.error('Report Save Unsuccessful'); } + }); + // this.router.navigate(["../../all"], { relativeTo: this.route }); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2.component.html new file mode 100644 index 0000000..90c6b64 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2.component.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2.component.spec.ts new file mode 100644 index 0000000..1b0545d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ReportBuild2Component } from './report-build2.component'; + +describe('ReportBuild2Component', () => { + let component: ReportBuild2Component; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ReportBuild2Component ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ReportBuild2Component); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2.component.ts new file mode 100644 index 0000000..e29256b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-report-build2', + templateUrl: './report-build2.component.html', + styleUrls: ['./report-build2.component.scss'] +}) +export class ReportBuild2Component implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2add/report-build2add.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2add/report-build2add.component.html new file mode 100644 index 0000000..587e702 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2add/report-build2add.component.html @@ -0,0 +1,79 @@ +

    {{'CREATE_NEW_REPORT'|translate}}

    +{{'add_mode'|translate}}
    +
    +
    + + + + + +
    + +
    +
    + + + +
    +
    + + +
    +
    + + +
    + +
    + + + +
    +
    +
    + + +
    +
    + +
    +
    +
    diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2add/report-build2add.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2add/report-build2add.component.scss new file mode 100644 index 0000000..39de1cb --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2add/report-build2add.component.scss @@ -0,0 +1,80 @@ +//@import "../../../../assets/scss/var"; +.s-info-bar { + display: flex; + flex-direction: row; + justify-content: space-between; + button { + outline: none; + } + } + + .entry-pg { + width: 750px; + } + + .button1::after { + content: none; + } + .button1:hover::after { + content: "ADD ROWS"; + } + + $bg-color: #dddddd; + + .section { + background-color: $bg-color; + height: 40px; + } + + .section p { + //color: white; + font-weight: bold; + padding: 10px; + font-size: 18px; + } + + .clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; + } + + .clr-file { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + //padding: 0.6rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; + } + + .center { + text-align: center; + } + input[type=text],[type=date],textarea { + width: 100%; + padding: 15px 15px; + // margin: 8px 0; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; + } + + .required-field{ + color: red; + + } + select{ + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; + } + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2add/report-build2add.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2add/report-build2add.component.spec.ts new file mode 100644 index 0000000..ae3b340 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2add/report-build2add.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ReportBuild2addComponent } from './report-build2add.component'; + +describe('ReportBuild2addComponent', () => { + let component: ReportBuild2addComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ReportBuild2addComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ReportBuild2addComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2add/report-build2add.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2add/report-build2add.component.ts new file mode 100644 index 0000000..5007d44 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2add/report-build2add.component.ts @@ -0,0 +1,71 @@ +import { HttpErrorResponse, HttpHeaderResponse } from '@angular/common/http'; +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import { ToastrService } from 'ngx-toastr'; +import { ReportBuilderService } from 'src/app/services/api/report-builder.service'; +@Component({ + selector: 'app-report-build2add', + templateUrl: './report-build2add.component.html', + styleUrls: ['./report-build2add.component.scss'] +}) +export class ReportBuild2addComponent implements OnInit { + public entryForm: FormGroup; + constructor(private _fb: FormBuilder, private router: Router,private toastr: ToastrService, + private route: ActivatedRoute,private reportBuilderService: ReportBuilderService) { } + + ngOnInit(): void { + this.entryForm = this._fb.group({ + reportName: [null], + description:[null], + active:[null], + isSql:[false], + Rpt_builder2_lines: this._fb.array([this.initLinesFormReport()]), + }); + + } + + initLinesFormReport() { + return this._fb.group({ + model: '' + }); + } + stdparams; + keysfromurl; + getkeys(){ + if(this.entryForm.value.url !== null){ + this.reportBuilderService.getcolumnDetailsByurl(this.entryForm.value.url).subscribe(data =>{ + console.log(data); + this.keysfromurl = data; + }) + }else{ + this.toastr.error("URL is required"); + } + } + + + toastrShown: boolean = false; + onSubmit(){ + console.log(this.entryForm.value); + this.reportBuilderService.saverbData(this.entryForm.value).subscribe((data)=>{ + console.log(data); + if (data || data.status >= 200 && data.status <= 209) { + this.toastr.success('Report save successfully'); + } + },(error:HttpErrorResponse) => { + console.log(error); + if(error.status==404){ + this.toastr.error(error.error); + } + if(error.status==200){ this.toastr.success('Report save successfully'); } + if(error.status==400){ this.toastr.error('Report Save Unsuccessful'); } + }); + setTimeout(()=>{ + this.router.navigate(["../all"], { relativeTo: this.route }); + },500); + } + goback(){ + this.router.navigate(["../all"], { relativeTo: this.route }); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2all/report-build2all.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2all/report-build2all.component.html new file mode 100644 index 0000000..b9660ed --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2all/report-build2all.component.html @@ -0,0 +1,102 @@ + +
    + +
    +
    +
    +

    {{'REPORT_BUILDER_2' | translate}}

    +
    +
    + + + +
    +
    + + + {{'LOADING' | translate}} +
    {{error}}
    + + + + {{'GO_TO' | translate}} + + + {{'REPORT_NAME' | translate}} + + + {{'REPORT_DESCRIPTION' | translate}} + + + {{'ACTIVE' | translate}} + + + {{'ACTION' | translate}} + + + + {{'SET_UP' | translate}} + {{user.reportName}} + {{user.description}} + {{user.active}} + + + + {{'DELETE' | translate}} + + + + +
    {{'WHO_COLUMN' | translate}}
    +
    {{'ACCOUNT_ID' | translate}}: {{user.accountId}}
    +
    {{'CREATED_AT' | translate}}: {{user.createdAt | date}}
    +
    {{'CREATED_BY' | translate}}: {{user.createdBy}}
    +
    {{'UPDATED_AT' | translate}}: {{user.updatedAt | date}}
    +
    {{'UPDATED_BY' | translate}}: {{user.updatedBy}}
    +
    +
    + + +
    + + + + + +
    + + + + {{'USERS_PER_PAGE' | translate}} + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} + of {{pagination.totalItems}} users + + +
    +
    + + + + + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2all/report-build2all.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2all/report-build2all.component.scss new file mode 100644 index 0000000..aec3e9d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2all/report-build2all.component.scss @@ -0,0 +1,83 @@ +.td-title { + text-align: right; + width: 150px; + font-weight: bold; + background-color: rgba(63, 122, 231, 0.863); + color: white; + } + .td-content{ + text-align: left; + } + .delete,.heading{ + text-align: center; + color: red; + } + input[type='radio']{ + width: 14px !important; + height: 14px !important; + margin: 5px; + -webkit-appearance: none; + -moz-appearance: none; + -o-appearance: none; + appearance: none; + outline: 1px solid gray; + box-shadow: none; + font-size: 0.8em; + text-align: center; + line-height: 1em; + background: red; + } + .dots + { + width: 100px; + height:100px; + border: 1px solid; + border-radius: 50%; + //background-color: #f00; + } + h4{margin-top: 16px;} + .s-order-dash-pg { + margin: 0px; + display:flex; + flex-wrap:wrap; + flex-direction:row; + justify-content:center; + .chart-box{ + margin:16px; + padding:0 16px; + background-color: #fff; + border:1px solid #ccc; + border-radius: 2px; + } + } + #word1{ + width: 190px; + height: 180px; + + } + .center{ + text-align: center; + margin-top: 5px; + } + + .clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; + } + .heading{ + text-align: center; + color: red; + } + + select{ + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; + } + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2all/report-build2all.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2all/report-build2all.component.spec.ts new file mode 100644 index 0000000..5ee51ec --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2all/report-build2all.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ReportBuild2allComponent } from './report-build2all.component'; + +describe('ReportBuild2allComponent', () => { + let component: ReportBuild2allComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ReportBuild2allComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ReportBuild2allComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2all/report-build2all.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2all/report-build2all.component.ts new file mode 100644 index 0000000..9371ab2 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2all/report-build2all.component.ts @@ -0,0 +1,91 @@ +import { Component, OnInit } from '@angular/core'; +import { ActivatedRoute, Router } from '@angular/router'; +import { ReportBuilderService } from 'src/app/services/api/report-builder.service'; +import { ToastrService } from 'ngx-toastr'; + +@Component({ + selector: 'app-report-build2all', + templateUrl: './report-build2all.component.html', + styleUrls: ['./report-build2all.component.scss'] +}) +export class ReportBuild2allComponent implements OnInit { + + gridData; + loading = false; + error; + selected: any[] = []; + rowSelected :any= {}; + modaldelete=false; + isLoading: boolean = false; + projectId; + moduleId; + projectname; + constructor(private router: Router, + private route: ActivatedRoute,private reportBuilderService: ReportBuilderService, + private toastr:ToastrService, ) { } + + ngOnInit(): void { + + this.getAll(); + } + + + getAll() { + this.isLoading = true; + this.reportBuilderService.getrbDetails().subscribe((data) => { + this.isLoading = false; + console.log(data); + const filteredData = data.filter(item => item.isSql === false); + this.gridData = filteredData; + if(this.gridData.length == 0){ + this.error="No data Available"; + console.log(this.error); + } + }); + } + + gotorunner() + { + this.router.navigate(['../../rerunner'],{relativeTo:this.route}); + } + + goToAdd() { + this.router.navigate(["../add"], { relativeTo: this.route, }); + } + + goToEdit(id: number) { + this.router.navigate(["../edit/" + id], { relativeTo: this.route }); + } + enid; + modelData:any[]=[]; + goToLines(val) { + console.log(val); +this.enid=val.id; +// this.modelData = val.Rpt_builder2_lines[0].model; + + // if(val.Rpt_builder2_lines[0].model !== '' ){ + this.router.navigate(["../edit/" + this.enid], { relativeTo: this.route }); + // } + // else{ + // this.router.navigate(["../reportQuery/" + this.enid], { relativeTo: this.route, }); + // } + } + onDelete(row) { + this.rowSelected = row; + this.modaldelete=true; + } + delete(id){ + this.modaldelete = false; + this.reportBuilderService.deletrbById(id).subscribe((data) => { + console.log(data); + if(data || data == null || data.status >= 200 && data.status <= 209){ + this.toastr.success("Deleted successfully"); + } + this.ngOnInit(); + },(error) => { + console.log(error); + this.toastr.error("getting error in deleting data"); + }) + } + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2edit/report-build2edit.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2edit/report-build2edit.component.html new file mode 100644 index 0000000..ea3a267 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2edit/report-build2edit.component.html @@ -0,0 +1,95 @@ +
    +

    REPORT SET UP - Project Details Report ({{ReportData.id}})

    + Edit Mode +
    +
    +
    +
    +
    +
    + +
    + +
     
    +
    +
    + + +
    +
    + + + + + + {{selected}} + + + + {{state}} + + + + + +
    +
    + + + +
    + +
    +
    +
    +
    +
    + +
    +
    + + +
    +
    +
    + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2edit/report-build2edit.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2edit/report-build2edit.component.scss new file mode 100644 index 0000000..9893e7c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2edit/report-build2edit.component.scss @@ -0,0 +1,58 @@ +// @import "../../../../../../../assets/scss/var"; +.s-info-bar { + display: flex; + flex-direction: row; + justify-content: space-between; + button { + outline: none; + } + } + + .edit-pg { + width: 750px; + } + select{ + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; + } + #lines { + table, + th, + td { + border: 0.5px solid #f1f0f0; + border-collapse: collapse; + } + input, + input :focus { + //-webkit-appearance: none; + outline: none; + border-width: 0px; + border: none; + } + } + + .clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; + } + + .center { + text-align: center; + } + textarea { + width: 100%; + padding: 15px 15px; + // margin: 8px 0; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; + } \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2edit/report-build2edit.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2edit/report-build2edit.component.spec.ts new file mode 100644 index 0000000..104e81a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2edit/report-build2edit.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ReportBuild2editComponent } from './report-build2edit.component'; + +describe('ReportBuild2editComponent', () => { + let component: ReportBuild2editComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ReportBuild2editComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ReportBuild2editComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2edit/report-build2edit.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2edit/report-build2edit.component.ts new file mode 100644 index 0000000..7fe97f8 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-build2/report-build2edit/report-build2edit.component.ts @@ -0,0 +1,159 @@ +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import { ToastrService } from 'ngx-toastr'; +import { ReportBuilderService } from 'src/app/services/api/report-builder.service'; + + +@Component({ + selector: 'app-report-build2edit', + templateUrl: './report-build2edit.component.html', + styleUrls: ['./report-build2edit.component.scss'] +}) +export class ReportBuild2editComponent implements OnInit { + public entryForm: FormGroup; + updated = false; + ReportData:any = {}; + id: number; + nodeEditProperties = { + std_param_html:'', + adhoc_param_html:'', + // column_str:'', + // conn_name:'', + date_param_req:'', + // folderName:'', + url:'', + +}; + constructor(private router: Router, + private route: ActivatedRoute,private reportBuilderService: ReportBuilderService, + private toastr: ToastrService, private _fb: FormBuilder) { } + + ngOnInit(): void { + this.id = this.route.snapshot.params["id"]; + console.log("update with id = ", this.id); + + this.entryForm = this._fb.group({ + std_param_html : [null], + adhoc_param_html:[null], + // column_str:[null], + // conn_name:[null], + date_param_req:[null], + // folderName:[null], + url:[null], + }); + + this.getById(this.id); + this.listoddatabase(); + } + databaselist; + listoddatabase(){ + this.reportBuilderService.getdatabse().subscribe((data)=>{ + this.databaselist=data; + console.log(this.databaselist) + },(error) => { + console.log(error); + if(error){ + } + }); + + } + builderLine; + lineId; + builderLineData:any[] = []; + getById(id: number) { + this.reportBuilderService.getrbDetailsById(id).subscribe( + (data) => { + console.log(data); + this.ReportData = data; + + + this.builderLine = this.ReportData.rpt_builder2_lines; + this.lineId = this.builderLine[0].id + console.log("line data ",this.lineId, this.builderLine); + if(this.builderLine[0].model != '') + { + this.builderLineData = JSON.parse(this.builderLine[0].model) ; + console.log(this.builderLineData); + + this.nodeEditProperties.std_param_html = this.builderLineData[0].std_param_html; + this.nodeEditProperties.adhoc_param_html = this.builderLineData[0].adhoc_param_html; + // this.nodeEditProperties.column_str = this.builderLineData.column_str; + // this.nodeEditProperties.conn_name = this.builderLineData.conn_name; + this.nodeEditProperties.date_param_req = this.builderLineData[0].date_param_req; + this.nodeEditProperties.url = this.builderLineData[0].url; + } + }, + (err) => { + console.log(err); + } + ); + } + + stdparams; + keysfromurl; + getkeys(){ + if(this.nodeEditProperties.url !== null){ + this.reportBuilderService.getcolumnDetailsByurl(this.nodeEditProperties.url).subscribe(data =>{ + console.log(data); + this.keysfromurl = data; + this.nodeEditProperties.adhoc_param_html = this.keysfromurl; + }) + }else{ + this.toastr.error("URL is required"); + } + } + + + listBuilder_Lines = { + model:{} + } + update() { + + + this.builderLineData[0] = { + std_param_html: this.nodeEditProperties.std_param_html, + adhoc_param_html: this.nodeEditProperties.adhoc_param_html, + date_param_req: this.nodeEditProperties.date_param_req, + url: this.nodeEditProperties.url, + }; + + this.builderLineData[0].std_param_html = this.nodeEditProperties.std_param_html; + this.builderLineData[0].adhoc_param_html = this.nodeEditProperties.adhoc_param_html; + // this.builderLineData.column_str = this.nodeEditProperties.column_str; + // this.builderLineData.conn_name = this.nodeEditProperties.conn_name ; + this.builderLineData[0].date_param_req = this.nodeEditProperties.date_param_req; + this.builderLineData[0].url = this.nodeEditProperties.url; + console.log(this.builderLineData); + // this.builderLineData.splice(1); + console.log(this.builderLineData); + let tmp = JSON.stringify(this.builderLineData); //.replace(/\\/g, '') + this.listBuilder_Lines.model = tmp; +console.log(this.listBuilder_Lines); + + this.reportBuilderService.updaterbLineData(this.listBuilder_Lines, this.lineId).subscribe( + (data) => { + console.log(data); + if (data) { + this.toastr.success('Update successfully'); + } + this.router.navigate(["../../all"], { relativeTo: this.route }); + //this.router.navigate(["../../all"],{ relativeTo: this.route, queryParams: { p_id: this.projectId } }); + }, + (error) => { + console.log(error); // this will come from backend + } + ); + // this.lineBuilder_Header = new Rn_Cff_ActionBuilder_Header(); + } + + onSubmit() { + this.updated = true; + this.update(); + } + + back() { + this.router.navigate(["../../all"], { relativeTo: this.route }); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/report-runner.component.css b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/report-runner.component.css new file mode 100644 index 0000000..b844a72 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/report-runner.component.css @@ -0,0 +1 @@ +/*# sourceMappingURL=report-runner.component.css.map */ \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/report-runner.component.css.map b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/report-runner.component.css.map new file mode 100644 index 0000000..756b30e --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/report-runner.component.css.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":"","file":"report-runner.component.css"} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/report-runner.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/report-runner.component.html new file mode 100644 index 0000000..90c6b64 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/report-runner.component.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/report-runner.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/report-runner.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/report-runner.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/report-runner.component.spec.ts new file mode 100644 index 0000000..3f7c7ea --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/report-runner.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ReportRunnerComponent } from './report-runner.component'; + +describe('ReportRunnerComponent', () => { + let component: ReportRunnerComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ReportRunnerComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ReportRunnerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/report-runner.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/report-runner.component.ts new file mode 100644 index 0000000..1256607 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/report-runner.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-report-runner', + templateUrl: './report-runner.component.html', + styleUrls: ['./report-runner.component.scss'] +}) +export class ReportRunnerComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunnerall/reportrunnerall.component.css b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunnerall/reportrunnerall.component.css new file mode 100644 index 0000000..5c4087a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunnerall/reportrunnerall.component.css @@ -0,0 +1,90 @@ +.td-title { + text-align: right; + width: 150px; + font-weight: bold; + background-color: rgba(63, 122, 231, 0.863); + color: white; +} + +.td-content { + text-align: left; +} + +.delete, .heading { + text-align: center; + color: red; +} + +input[type=radio] { + width: 14px !important; + height: 14px !important; + margin: 5px; + -webkit-appearance: none; + -moz-appearance: none; + -o-appearance: none; + appearance: none; + outline: 1px solid gray; + box-shadow: none; + font-size: 0.8em; + text-align: center; + line-height: 1em; + background: red; +} + +.dots { + width: 100px; + height: 100px; + bordeR: 1px solid; + border-radius: 50%; +} + +h4 { + margin-top: 16px; +} + +.s-order-dash-pg { + margin: 0px; + display: flex; + flex-wrap: wrap; + flex-direction: row; + justify-content: center; +} +.s-order-dash-pg .chart-box { + margin: 16px; + padding: 0 16px; + background-color: #fff; + border: 1px solid #ccc; + border-radius: 2px; +} + +#word1 { + width: 190px; + height: 180px; +} + +.center { + text-align: center; + margin-top: 5px; +} + +.clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; +} + +.heading { + text-align: center; + color: red; +} + +select { + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; +}/*# sourceMappingURL=reportrunnerall.component.css.map */ \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunnerall/reportrunnerall.component.css.map b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunnerall/reportrunnerall.component.css.map new file mode 100644 index 0000000..b30f804 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunnerall/reportrunnerall.component.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["reportrunnerall.component.scss","reportrunnerall.component.css"],"names":[],"mappings":"AAAA;EACI,iBAAA;EACA,YAAA;EACA,iBAAA;EACA,2CAAA;EACA,YAAA;ACCJ;;ADCE;EACE,gBAAA;ACEJ;;ADAE;EACE,kBAAA;EACA,UAAA;ACGJ;;ADDE;EACE,sBAAA;EACA,uBAAA;EACA,WAAA;EACA,wBAAA;EACA,qBAAA;EACA,mBAAA;EACA,gBAAA;EACA,uBAAA;EACA,gBAAA;EACA,gBAAA;EACA,kBAAA;EACA,gBAAA;EACA,eAAA;ACIJ;;ADFE;EAEE,YAAA;EACA,aAAA;EACA,iBAAA;EACA,kBAAA;ACIJ;;ADDI;EAAG,gBAAA;ACKP;;ADJI;EACE,WAAA;EACA,aAAA;EACA,eAAA;EACA,mBAAA;EACA,uBAAA;ACON;ADNM;EACE,YAAA;EACA,eAAA;EACA,sBAAA;EACA,sBAAA;EACA,kBAAA;ACQR;;ADLI;EACC,YAAA;EACC,aAAA;ACQN;;ADLI;EACE,kBAAA;EACA,eAAA;ACQN;;ADLI;EACE,cAAA;EACA,yBAAA;EACA,sBAAA;EACA,wBAAA;EACA,eAAA;EACA,WAAA;EACA,mBAAA;ACQN;;ADNM;EACE,kBAAA;EACA,UAAA;ACSR;;ADNM;EACE,WAAA;EACA,gBAAA;EACA,sBAAA;EACA,kBAAA;ACSR","file":"reportrunnerall.component.css"} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunnerall/reportrunnerall.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunnerall/reportrunnerall.component.html new file mode 100644 index 0000000..8b8f5ff --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunnerall/reportrunnerall.component.html @@ -0,0 +1,109 @@ + +
    + + +
    +
    +
    +

    {{ 'ALL_REPORT' | translate }}

    +
    +
    + + +
    +
    + + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    + + {{ 'SQL' | translate }}items in a light blue badge + {{ 'URL' | translate }}items in an orange badge +
    +
    + +
    +
    +
    +
    + {{app.reportName}} +
    +
    + +
    +
    + {{app.description}} +
    +
    +
    + + +
    + + + + +
    +
    +
    +
    +
    + + + + +
    + + + + + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunnerall/reportrunnerall.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunnerall/reportrunnerall.component.scss new file mode 100644 index 0000000..48905e0 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunnerall/reportrunnerall.component.scss @@ -0,0 +1,93 @@ +.td-title { + text-align: right; + width: 150px; + font-weight: bold; + background-color: rgba(63, 122, 231, 0.863); + color: white; + } + .td-content{ + text-align: left; + } + .delete,.heading{ + text-align: center; + color: red; + } + input[type='radio']{ + width: 14px !important; + height: 14px !important; + margin: 5px; + -webkit-appearance: none; + -moz-appearance: none; + -o-appearance: none; + appearance: none; + outline: 1px solid gray; + box-shadow: none; + font-size: 0.8em; + text-align: center; + line-height: 1em; + background: red; + } + .dots + { + width: 100px; + height:100px; + border: 1px solid; + border-radius: 50%; + //background-color: #f00; + } + h4{margin-top: 16px;} + .s-order-dash-pg { + margin: 0px; + display:flex; + flex-wrap:wrap; + flex-direction:row; + justify-content:center; + .chart-box{ + margin:16px; + padding:0 16px; + background-color: #fff; + border:1px solid #ccc; + border-radius: 2px; + } + } + #word1{ + width: 190px; + height: 180px; + + } + .center{ + text-align: center; + margin-top: 5px; + } + + .clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; + } + .heading{ + text-align: center; + color: red; + } + + select{ + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; + } + + + #word { + display: inline-block; + width: 320px; + white-space: nowrap; + overflow: hidden !important; + text-overflow: ellipsis; + font-weight: bold; + + } \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunnerall/reportrunnerall.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunnerall/reportrunnerall.component.spec.ts new file mode 100644 index 0000000..3887e78 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunnerall/reportrunnerall.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ReportrunnerallComponent } from './reportrunnerall.component'; + +describe('ReportrunnerallComponent', () => { + let component: ReportrunnerallComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ReportrunnerallComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ReportrunnerallComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunnerall/reportrunnerall.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunnerall/reportrunnerall.component.ts new file mode 100644 index 0000000..c4bfbb1 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunnerall/reportrunnerall.component.ts @@ -0,0 +1,90 @@ +import { Component, OnInit } from '@angular/core'; +import { ActivatedRoute, Router } from '@angular/router'; +import { ReportBuilderService } from 'src/app/services/api/report-builder.service'; +import { ToastrService } from 'ngx-toastr'; + +@Component({ + selector: 'app-reportrunnerall', + templateUrl: './reportrunnerall.component.html', + styleUrls: ['./reportrunnerall.component.scss'] +}) +export class ReportrunnerallComponent implements OnInit { + gridData; + loading = false; + error; + selected: any[] = []; + rowSelected :any= {}; + modaldelete=false; + isLoading: boolean = false; + projectId; + moduleId; + projectname; + constructor(private router: Router, + private route: ActivatedRoute,private reportBuilderService: ReportBuilderService, + private toastr:ToastrService, ) { } + + ngOnInit(): void { + + this.getAll(); + } + + + getAll() { + this.isLoading = true; + this.reportBuilderService.getrbDetails().subscribe((data) => { + this.isLoading = false; + console.log(data); + this.gridData = data; + if(this.gridData.length == 0){ + this.error="No data Available"; + console.log(this.error); + } + }); + } + + goToAdd2() { + this.router.navigate(["../../reportbuild2/"], { relativeTo: this.route, }); + } + + goToAdd() { + this.router.navigate(["../../reportbuild/"], { relativeTo: this.route, }); + } + + goToEdit(id: number) { + this.router.navigate(["../edit/" + id], { relativeTo: this.route }); + } + goToRunner(user) { + const id = user.id; + const isSql = user.isSql; + if(isSql == true) { + this.router.navigate(["../runner/" + id], { relativeTo: this.route, }); + }else if(isSql == false){ + this.router.navigate(["../runner2/" + id], { relativeTo: this.route, }); + } + + } + onDelete(row) { + this.rowSelected = row; + this.modaldelete=true; + } + delete(id){ + this.modaldelete = false; + this.reportBuilderService.deletrbById(id).subscribe((data) => { + console.log(data); + if(data || data == null || data.status >= 200 && data.status <= 209){ + this.toastr.success("Deleted successfully"); + } + this.ngOnInit(); + },(error) => { + console.log(error); + this.toastr.error("getting error in deleting data"); + }) + } + + gotoAction(){ + this.router.navigate(["../../actions"], { relativeTo: this.route, queryParams: { m_id: this.moduleId,pname:this.projectname } }); + } + gotoRepo(){ + this.router.navigate(["../../modulecard"], { relativeTo: this.route, queryParams: { p_id: this.projectId } }); + } +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunneredit/reportrunneredit.component.css b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunneredit/reportrunneredit.component.css new file mode 100644 index 0000000..dae91f0 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunneredit/reportrunneredit.component.css @@ -0,0 +1,76 @@ +input[type=text], [type=date], [type=password] { + width: 100%; + padding: 15px 20px; + background-color: rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} + +.section { + background-color: #dddddd; + height: 40px; +} + +.section p { + padding: 10px; + font-size: 18px; +} + +select { + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; +} + +.clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.35rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; +} + +input[type=text], textarea { + width: 100%; + padding: 15px 15px; + background-color: rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} + +.required-field { + color: red; +} + +.postColumn { + border: 1px solid #ccc; + width: 78%; + margin-left: 15px; +} + +.colName { + text-align: center; + padding: 5px; +} + +.colfields { + border: 1px solid black; + margin: 17px; + text-align: center; + padding: 3px; +} + +.fieldWrapper { + margin-top: 20px; +} + +.center { + text-align: center; +}/*# sourceMappingURL=reportrunneredit.component.css.map */ \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunneredit/reportrunneredit.component.css.map b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunneredit/reportrunneredit.component.css.map new file mode 100644 index 0000000..4d6ee07 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunneredit/reportrunneredit.component.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["reportrunneredit.component.scss","reportrunneredit.component.css"],"names":[],"mappings":"AAAA;EACI,WAAA;EACA,kBAAA;EAED,oCAAA;EACC,qBAAA;EACA,sBAAA;EACA,kBAAA;EACA,sBAAA;ACAJ;;ADEE;EACE,yBAAA;EACA,YAAA;ACCJ;;ADCE;EAEE,aAAA;EACA,eAAA;ACCJ;;ADCE;EACE,WAAA;EACA,gBAAA;EACA,sBAAA;EACA,kBAAA;ACEJ;;ADCE;EACE,cAAA;EACA,yBAAA;EACA,sBAAA;EACA,wBAAA;EACA,eAAA;EACA,WAAA;EACA,mBAAA;ACEJ;;ADAE;EACE,WAAA;EACA,kBAAA;EAED,oCAAA;EACC,qBAAA;EACA,sBAAA;EACA,kBAAA;EACA,sBAAA;ACEJ;;ADAE;EACE,UAAA;ACGJ;;ADAE;EACE,sBAAA;EACA,UAAA;EACA,iBAAA;ACGJ;;ADDE;EACE,kBAAA;EACA,YAAA;ACIJ;;ADFE;EACE,uBAAA;EACA,YAAA;EACA,kBAAA;EACA,YAAA;ACKJ;;ADHE;EACE,gBAAA;ACMJ;;ADJE;EACE,kBAAA;ACOJ","file":"reportrunneredit.component.css"} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunneredit/reportrunneredit.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunneredit/reportrunneredit.component.html new file mode 100644 index 0000000..8d778b1 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunneredit/reportrunneredit.component.html @@ -0,0 +1,266 @@ + +

    Report Name - {{reportName}}

    +
    +
    +
    +
    +
    Date Range
    +
    +
    + + +
    +
    +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    Standard Parameters
    + +
    +
    +
    + + + + + +
    +
    +
    + +
    +
    +
    +
    +
    +
    Adhoc Parameters
    +
    +
    +
    +
    + + + + + + + + + + + + + +
    + + + + + + + + + + +
    +
    +
    +
    +
    + + +
    +
    +

    Report Output

    +
    +
    + + + + + + + + + + +
    +
    +
    +
    + + + + + + + + + + + + +
    {{co}}
    + + + {{ formatDate(item[key]) }} + + + {{ item[key] }} + +
    +
    + + + + + + + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunneredit/reportrunneredit.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunneredit/reportrunneredit.component.scss new file mode 100644 index 0000000..2075896 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunneredit/reportrunneredit.component.scss @@ -0,0 +1,80 @@ +//@import "../../../../assets/scss/var"; +.s-info-bar { + display: flex; + flex-direction: row; + justify-content: space-between; + button { + outline: none; + } +} + +.entry-pg { + width: 750px; +} + +.button1::after { + content: none; +} +.button1:hover::after { + content: "ADD ROWS"; +} + +$bg-color: #dddddd; + +.section { + background-color: $bg-color; + height: 40px; +} + +.section p { + //color: white; + font-weight: bold; + padding: 10px; + font-size: 18px; +} + +.clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; +} + +.clr-file { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + //padding: 0.6rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; +} + +.center { + text-align: center; +} +input[type=text],[type=password],[type=date],textarea { + width: 100%; + padding: 15px 15px; + // margin: 8px 0; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} + +.required-field{ + color: red; + +} +select{ + width: 100%; + margin-top: 3px; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunneredit/reportrunneredit.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunneredit/reportrunneredit.component.spec.ts new file mode 100644 index 0000000..6563a07 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunneredit/reportrunneredit.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ReportrunnereditComponent } from './reportrunneredit.component'; + +describe('ReportrunnereditComponent', () => { + let component: ReportrunnereditComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ReportrunnereditComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ReportrunnereditComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunneredit/reportrunneredit.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunneredit/reportrunneredit.component.ts new file mode 100644 index 0000000..ac51541 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunneredit/reportrunneredit.component.ts @@ -0,0 +1,611 @@ +import { Component, OnInit, ViewEncapsulation } from '@angular/core'; +import { FormBuilder, FormGroup } from '@angular/forms'; +import { DomSanitizer } from '@angular/platform-browser'; +import { ActivatedRoute, Router } from '@angular/router'; +import * as moment from 'moment'; +import { ToastrService } from 'ngx-toastr'; +import { ReportBuilderService } from 'src/app/services/api/report-builder.service'; +import { ExcelService } from 'src/app/services/excel.service'; +import { saveAs } from 'file-saver'; +@Component({ + selector: 'app-reportrunneredit', + templateUrl: './reportrunneredit.component.html', + styleUrls: ['./reportrunneredit.component.scss'], + encapsulation: ViewEncapsulation.None +}) +export class ReportrunnereditComponent implements OnInit { + dynamicForm: FormGroup; + modalselect:boolean=false; + serverData = [{"andor": "AND", + "fields_name": "", + "condition": "=", + "value": ""}]; + andor = ['AND', 'OR','NOT']; + fieldname = ['name1', 'name2']; + condition = ['=','!=','<','>','<=','>=','LIKE','BETWEEN','IN']; + header_id; + public array=[ + { + "id": 1, + "name": "Jack", + "fromDate": "19-05-2023", + "toDate": "03-06-2023" + }, + { + "id": 2, + "name": "Allen", + "fromDate": "18-05-2023", + "toDate": "12-08-2023" + }, + { + "id": 3, + "name": "Annie", + "fromDate": "11-05-2023",//2023-11-05 + "toDate": "19-05-2023" + }, + { + "id": 4, + "name": "ashok", + "fromDate": "08-05-2023", + "toDate": "02-02-2023" + }, + { + "id": 5, + "name": "Anu", + "fromDate": "29-11-2020", + "toDate": "01-06-2021" + }, + { + "id": 6, + "name": "thrymr", + "fromDate": "04-04-2023", + "toDate": "15-05-2023" + }, + { + "id": 7, + "name": "Ab", + "fromDate": "29-11-2022", + "toDate": "01-06-2023" + }, + { + "id": 8, + "name": "thakur", + "fromDate": "04-04-2022", + "toDate": "15-05-2022" + } + ] + selectedfrom; + selectedto; + constructor(private router: Router, + private route: ActivatedRoute,private _fb: FormBuilder, + private reportBuilderService: ReportBuilderService,private toastr:ToastrService,private sanitizer: DomSanitizer,private excel: ExcelService) + { + this.dynamicForm = this._fb.group({ + }); + } +todayDate; + ngOnInit(): void { + this.todayDate = new Date().toISOString().slice(0, 10); + this.header_id = this.route.snapshot.params["id"]; + console.log(" id = ", this.header_id); + // this.duplicateArray=this.array; + this.getById(this.header_id); + + this.select('Today') + setTimeout(() => { + this.runtheQuery(); + }, 2000); + + + } + reportName; + builderLine; + builderLineData; + lineId; + adhocList; + SQLQuery; + stdParamfields; + date_param_req; + getById(id: number) { + this.reportBuilderService.getrbDetailsById(id).subscribe( + (data) => { + console.log(data); + this.reportName = data.reportName; + this.builderLine = data.rpt_builder2_lines; + this.lineId = this.builderLine[0].id + this.builderLineData = JSON.parse(this.builderLine[0].model) ; + console.log(this.lineId,this.builderLineData); + const adhocList = this.builderLineData.adhoc_param_html; + this.adhocList = JSON.parse(adhocList); + console.log(this.adhocList) + this.date_param_req = this.builderLineData.date_param_req; + this.SQLQuery = this.builderLineData.sql_str; + this.getStdParam(this.header_id); + }); + + } + + dynamicHtml:any = []; + dynamicHtmlFlag = false; + stdParmas; + stdParamFlag = false; + getStdParam(id: any){ + console.log(this.builderLineData.std_param_html); + this.dynamicHtml = JSON.parse(this.builderLineData.std_param_html); + // this.dynamicHtml = ['a.abc','b.abcde'] + if (this.dynamicHtml) { + for (const field of this.dynamicHtml) { + if (!this.dynamicForm.get(field)) { + this.dynamicForm.addControl(field, this._fb.control(null)); + } + } + console.log(this.dynamicForm.value); + } + if(this.dynamicHtml == undefined || this.dynamicHtml == ''){ + this.dynamicHtmlFlag = false; + }else{ + this.dynamicHtmlFlag = true; + } + + // this.reportBuilderService.getStdParamById(id).subscribe(data => { + // console.log(data); + // this.stdParmas = data; + // },(error)=>{ + // console.log(error.error.text) + // this.stdParmas = this.sanitizer.bypassSecurityTrustHtml(error.error.text); + + // if(this.stdParmas == undefined || this.stdParmas == ''){ + // this.stdParamFlag = false; + // }else{ + // this.stdParamFlag = true; + // } + // }); + } + modo2(val){ + console.log(val); + this.selectedfrom=val; + } + modo3(val){ + console.log(val); +this.selectedto=val; + } + duplicateArray=[]; + myDateValue: Date; + toDate:Date; + reverseAndTimeStamp(dateString) { + const reverse = new Date(dateString.split("-").reverse().join("-")); + return reverse.getTime(); + } + filterDate() { + let fromdate=moment(this.myDateValue).format('DD-MM-YYYY'); +console.log(fromdate) +let todate=moment(this.toDate).format('DD-MM-YYYY'); +if(this.myDateValue && this.toDate){ +const selectedMembers = this.array.filter(m => { + return this.reverseAndTimeStamp(m.fromDate) >= this.reverseAndTimeStamp(fromdate) && this.reverseAndTimeStamp(m.fromDate) <= this.reverseAndTimeStamp(todate) + } + ); + this.duplicateArray=selectedMembers +}else{ +this.duplicateArray=this.array +} + console.log(this.duplicateArray); // the result objects + this.modalselect=false; +} + + dateParameter: string; + from_date: Date; + to_date: Date; + + calculateThisWeek(): void { + // Calculate the current date + const currentDate = new Date(); + console.log(currentDate) + // Get the day of the week (0-6, where 0 is Sunday) + const currentDayOfWeek = currentDate.getDay(); + + // Calculate the number of days to subtract to get to Monday + const daysToMonday = currentDayOfWeek === 0 ? 6 : currentDayOfWeek - 1; + + // Calculate the date of Monday of the current week + this.from_date = new Date(currentDate); + this.from_date.setDate(currentDate.getDate() - daysToMonday); + + // Calculate the date of Sunday of the current week + this.to_date = new Date(this.from_date); + this.to_date.setDate(this.from_date.getDate() + 6); + console.log(this.from_date); + this.myDateValue=this.from_date; + console.log(this.to_date); + console.log(this.myDateValue); + this.toDate=this.to_date; + + this.FromDatequery = this.from_date.toISOString().substring(0, 10); + this.ToDatequery = this.to_date.toISOString().substring(0, 10); + // this.filterDate(); + } + calculateLastWeek(): void { + // Calculate the current date + const currentDate = new Date(); + + // Get the day of the week (0-6, where 0 is Sunday) + const currentDayOfWeek = currentDate.getDay(); + + // Calculate the number of days to subtract to get to Monday + const daysToMonday = currentDayOfWeek === 0 ? 6 : currentDayOfWeek - 1; + + // Calculate the date of Monday of the previous week + this.from_date = new Date(currentDate); + this.from_date.setDate(currentDate.getDate() - daysToMonday - 7); + + // Calculate the date of Sunday of the previous week + this.to_date = new Date(this.from_date); + this.to_date.setDate(this.from_date.getDate() + 6); + this.myDateValue=this.from_date; + console.log(this.to_date); + console.log(this.myDateValue); + this.toDate=this.to_date; + + this.FromDatequery = this.from_date.toISOString().substring(0, 10); + this.ToDatequery = this.to_date.toISOString().substring(0, 10); + // this.filterDate(); + } + calculateThisMonth(): void { + // Calculate the current date + const currentDate = new Date(); + + // Calculate the date of the first day of the current month + this.from_date = new Date(currentDate.getFullYear(), currentDate.getMonth(), 1); + + // Calculate the date of the last day of the current month + this.to_date = new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 0); + + this.to_date.setDate(this.from_date.getDate() + 6); + this.myDateValue=this.from_date; + console.log(this.to_date); + console.log(this.myDateValue); + this.toDate=currentDate; + + this.FromDatequery = this.from_date.toISOString().substring(0, 10); + this.ToDatequery = this.to_date.toISOString().substring(0, 10); + // this.filterDate(); + } + + calculateLastMonth(): void { + // Calculate the current date + const currentDate = new Date(); + + // Calculate the date of the first day of the previous month + this.from_date = new Date(currentDate.getFullYear(), currentDate.getMonth() - 1, 1); + + // Calculate the date of the last day of the previous month + this.to_date = new Date(currentDate.getFullYear(), currentDate.getMonth(), 0); + + this.to_date.setDate(this.from_date.getDate() + 6); + this.myDateValue=this.from_date; + console.log(this.to_date); + console.log(this.myDateValue); + this.toDate=this.to_date; + + this.FromDatequery = this.from_date.toISOString().substring(0, 10); + this.ToDatequery = this.to_date.toISOString().substring(0, 10); + // this.filterDate(); + } + calculateThisYear(): void { + // Calculate the current date + const currentDate = new Date(); + + // Calculate the date of the first day of the current year + this.from_date = new Date(currentDate.getFullYear(), 0, 1); + + // Calculate the date of the last day of the current year + this.to_date = new Date(currentDate.getFullYear(), 11, 31); + + this.myDateValue=this.from_date; + console.log(this.to_date); + console.log(this.myDateValue); + this.toDate=this.to_date; + + this.FromDatequery = this.from_date.toISOString().substring(0, 10); + this.ToDatequery = this.to_date.toISOString().substring(0, 10); + // this.filterDate(); + } + + calculateLastYear(): void { + // Calculate the current date + const currentDate = new Date(); + + // Calculate the date of the first day of the previous year + this.from_date = new Date(currentDate.getFullYear() - 1, 0, 1); + + // Calculate the date of the last day of the previous year + this.to_date = new Date(currentDate.getFullYear() - 1, 11, 31); + + this.myDateValue=this.from_date; + console.log(this.to_date); + console.log(this.myDateValue); + this.toDate=this.to_date; + + this.FromDatequery = this.from_date.toISOString().substring(0, 10); + this.ToDatequery = this.to_date.toISOString().substring(0, 10); + // this.filterDate(); + } + SelectdateType; + select(val:any){ + console.log(val); + this.SelectdateType = val; + if(val === 'This Week'){ + this.calculateThisWeek() + }else if(val === 'Last Week'){ + this.calculateLastWeek() + }else if(val === 'This Month'){ + this.calculateThisMonth() + }else if(val === 'Last Month'){ + this.calculateLastMonth() + // }else if(val === 'To Specific FromDate To To Date'){ + // this.openmodel() + } + else if(val === 'This Year'){ + this.calculateThisYear() + }else if(val === 'Last Year'){ + this.calculateLastYear() + } + else if(val === 'Today'){ + this.FromDatequery = null; + this.ToDatequery = null; + this.myDateValue = this.todayDate; + this.toDate = this.todayDate; + + this.FromDatequery = this.myDateValue; + this.ToDatequery = this.toDate; + } + else if(val === ''){ + this.myDateValue = null; + this.toDate = null; + this.FromDatequery = null; + this.ToDatequery = null; + } + + + } + openmodel(){ + this.modalselect=true; + } + + onExport() { + const reportNameWithUnderscore = this.reportName + '_'; + this.excel.exportAsExcelFile(this.rows, reportNameWithUnderscore, + moment().format('YYYYMMDD_HHmmss')) + } + + downloadFile(format: string) { + const date = moment().format('YYYYMMDD_HHmmss') + const reportNameWithUnderscore = this.reportName + '_' + date; + this.reportBuilderService.downloadFile(format, this.rows,reportNameWithUnderscore) + // this.reportBuilderService.downloadFile(format, this.rows).subscribe( + // (data) => { + // // Handle the file data received from the service + // const blob = new Blob([data], { type: 'application/octet-stream' }); + // const reportNameWithUnderscore = this.reportName + '_'; + // saveAs(blob, `${reportNameWithUnderscore}.${format}`); // Save the file using file-saver library + // }, + // (error) => { + // console.error('File download failed:', error); + // const date = moment().format('YYYYMMDD_HHmmss') + // const reportNameWithUnderscore = this.reportName + '_' + date; + // if (format === 'csv') { + // const blob = new Blob([error.error.text], { type: 'text/csv' }); + // saveAs(blob, `${reportNameWithUnderscore}.csv`); + // } else if (format === 'pdf') { + // const blob = new Blob([error.error.text], { type: 'application/pdf' }); + // saveAs(blob,`${reportNameWithUnderscore}.pdf`); + // // const pdf = new jsPDF(); + // // pdf.text(error.error.text, 10, 10); // Assuming 'data' is the PDF content, adjust as needed + + // // pdf.save(`${reportNameWithUnderscore}.pdf`); + // } + // }); + } + back(){ + this.router.navigate(["../../all"], { relativeTo: this.route }); + } +FormattedAdhocparameters; +adocdata; +// showPlusIconRow: number | null = 0; + onAddLines(){ + console.log(this.serverData); + const lastRow = this.serverData[this.serverData.length - 1]; + if (lastRow && lastRow.fields_name !== '') { + let formattedString = ''; + for (const condition of this.serverData) { + const { andor, fields_name, condition: cond, value } = condition; + formattedString += ` ${andor} ${fields_name} ${cond} '${value}' `; + // console.log(formattedString); + this.FormattedAdhocparameters = formattedString + } + this.serverData.push({ + andor: "AND", + fields_name: "", + condition: "=", + value: "" + }); + } + // this.showPlusIconRow = this.serverData.length - 1; + + } + deleteRow(index) { + // this.serverData.splice(index, 1); + // if (index === this.showPlusIconRow) { + // this.showPlusIconRow = null; + // } + if (this.serverData.length > 1) { + this.serverData.splice(index, 1); + } + } + + + rows:any[]; + columns: any[]; + rowdata; + FromDatequery; + ToDatequery; + + newfrom; + newto; + + dateKey; +runtheQuery(){ + console.log(this.dynamicForm.value); + console.log(this.myDateValue , this.toDate); + console.log(this.SQLQuery); + let query = this.SQLQuery; +// let query + if(this.dynamicForm.value){ + // for(let i = 0; i < this.dynamicForm.value.length; i++){ + // // const query = this.SQLQuery + " AND " + this.dynamicForm.controls[i] + " = " + this.dynamicForm.value[i] + + // } + + + // Iterate over the keys in dynamicForm.value + Object.keys(this.dynamicForm.value).forEach((key) => { + // Append the condition for each key to the query + if (this.dynamicForm.value[key] !== null && this.dynamicForm.value[key] !== '') { + query += ` AND ${key} = '${this.dynamicForm.value[key]}'`; + } + // const regex = /FROM/i; + // const match = query.match(regex); + // if (this.dynamicForm.value[key] !== null && this.dynamicForm.value[key] !== '') { + // // query += ` AND ${key} = '${this.dynamicForm.value[key]}'`; + // const columnName = key.split('.').pop(); + // let coalesceExpression = `, COALESCE(${key}, '${this.dynamicForm.value[key]}') as ${columnName}`; + // if (match) { + // // Insert the COALESCE expression before the FROM keyword + // query = query.slice(0, match.index) + coalesceExpression +' '+ query.slice(match.index); + // } + // } + }); + if(this.date_param_req == 'Yes'){ + this.dateKey = 'createdat'; + this.adhocList.forEach(key => { + if (key.includes("a.created_at")) { + this.dateKey ="created_at" ; + } + }); + this.adhocList.forEach(key => { + if (key.includes("a.createdAt")) { + this.dateKey ="createdAt" ; + } +}); +// if (this.adhocList.includes('created_at')) { +// dateKey = 'created_at'; +// } + + if(this.FromDatequery && this.ToDatequery){ + query += ` AND ${this.dateKey} BETWEEN '${this.FromDatequery}' AND '${this.ToDatequery}'`; + + }else if(this.myDateValue && this.toDate){ + if(this.myDateValue){ + const inputDate = new Date(this.myDateValue); + const year = inputDate.getFullYear(); + const month = String(inputDate.getMonth() + 1).padStart(2, "0"); // Months are zero-based, so add 1 + const day = String(inputDate.getDate()).padStart(2, "0"); + this.newfrom = `${year}-${month}-${day}`; + } + if(this.toDate){ + const inputDate = new Date(this.toDate); + const year = inputDate.getFullYear(); + const month = String(inputDate.getMonth() + 1).padStart(2, "0"); // Months are zero-based, so add 1 + const day = String(inputDate.getDate()).padStart(2, "0"); + this.newto = `${year}-${month}-${day}`; + + } + query += ` AND ${this.dateKey} BETWEEN '${this.newfrom}' AND '${this.newto}'`; + +} + } + // `SELECT * FROM abc where cretaedat BETWEEN '2023-04-04' AND '2023-05-19';` + `COALESCE(b.description, 'checking') as description` + // if(this.myDateValue && this.toDate){ + // query += ` AND from_date = NVL(${this.myDateValue}from_date, 'from_date') AND to_date = NVL(${this.toDate}to_date, 'to_date')`; + // } + console.log(query); + } + if(this.FormattedAdhocparameters){ + query += this.FormattedAdhocparameters + } +// query = `SELECT a.name AS name, b.dob AS dob FROM abc a, abcde b WHERE a.name = 'gaurav' AND a.abc = NVL(b.abc, 'name') AND a.abcde = NVL(b.abcde, 'test');` + console.log(query); + this.reportBuilderService.getMasterData(query).subscribe((data) => { + this.rows = data; + console.log(this.rows); +this.rowdata= [this.rows]; + console.log(typeof this.rows); + if(data){ + this.toastr.success("Run Successfully") + } + var j; + var cart = []; + + for(var i = 0; i < data.length; i++) + { + var columnsIn = data[i]; + if(i==1) + { + for(var key in columnsIn) + { + j={prop:key , name: key}; + cart.push(j) + + } + } + } + this.columns = cart; + +}); +// if(this.FromDatequery && this.ToDatequery){ +// this.FromDatequery = null; +// this.ToDatequery = null; +// }else if(this.myDateValue && this.toDate){ +// this.newfrom = null; +// this.toDate = null; +// } +} +getHeaders() { +let headers: string[] = []; +if(this.rows) { + this.rows.forEach((value) => { + Object.keys(value).forEach((key) => { + if(!headers.find((header) => header == key)){ + headers.push(key) + } + + }) + + }) +} +return headers; +} + +formatDate(dateObj: any): string { + // Extract individual date properties + const { year, monthValue, dayOfMonth, hour, minute, second } = dateObj; + + // Create a JavaScript Date object using the extracted properties + const formattedDate = new Date(year, monthValue - 1, dayOfMonth, hour, minute, second); + + // Format the date as needed (e.g., using built-in JavaScript date formatting) + return formattedDate.toLocaleString(); // Or any other desired formatting +} + +isDate(value: any): boolean { + return ( + value instanceof Date || + (value && + value.year !== undefined && + value.monthValue !== undefined && + value.dayOfMonth !== undefined) + ); +} + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunneredit2/reportrunneredit2.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunneredit2/reportrunneredit2.component.html new file mode 100644 index 0000000..3fc204b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunneredit2/reportrunneredit2.component.html @@ -0,0 +1,305 @@ + +

    Report Name - {{reportName}}

    +
    +
    +
    +
    +
    Date Range
    +
    +
    + + +
    +
    +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    Standard Parameters
    + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    +
    +
    +
    +
    Adhoc Parameters
    +
    +
    +
    +
    + + + + + + + + + + + + + +
    + + + + + + + + + + +
    +
    +
    +
    +
    + + +
    +
    +

    Report Output

    +
    +
    + + + + + + + + + + + + +
    +
    +
    +
    + + + + + + + + + + + +
    {{co}}
    + + + {{ item[key] }} + + + + {{ item[key] | date:'medium' }} + +
    +
    +
    + + + + + + + + + + + +
    {{co}}
    + + + {{ item[key] }} + + + + {{ item[key] | date:'medium' }} + + + + +
    +
    + + + + + + + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunneredit2/reportrunneredit2.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunneredit2/reportrunneredit2.component.scss new file mode 100644 index 0000000..008d21a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunneredit2/reportrunneredit2.component.scss @@ -0,0 +1,81 @@ +//@import "../../../../assets/scss/var"; +.s-info-bar { + display: flex; + flex-direction: row; + justify-content: space-between; + button { + outline: none; + } + } + + .entry-pg { + width: 750px; + } + + .button1::after { + content: none; + } + .button1:hover::after { + content: "ADD ROWS"; + } + + $bg-color: #dddddd; + + .section { + background-color: $bg-color; + height: 40px; + } + + .section p { + //color: white; + font-weight: bold; + padding: 10px; + font-size: 18px; + } + + .clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; + } + + .clr-file { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + //padding: 0.6rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; + } + + .center { + text-align: center; + } + input[type=text],[type=password],[type=date],textarea { + width: 100%; + padding: 15px 15px; + // margin: 8px 0; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; + } + + .required-field{ + color: red; + + } + select{ + width: 100%; + margin-top: 3px; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; + } + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunneredit2/reportrunneredit2.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunneredit2/reportrunneredit2.component.spec.ts new file mode 100644 index 0000000..e22611d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunneredit2/reportrunneredit2.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { Reportrunneredit2Component } from './reportrunneredit2.component'; + +describe('Reportrunneredit2Component', () => { + let component: Reportrunneredit2Component; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ Reportrunneredit2Component ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(Reportrunneredit2Component); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunneredit2/reportrunneredit2.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunneredit2/reportrunneredit2.component.ts new file mode 100644 index 0000000..1f78b64 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/report-runner/reportrunneredit2/reportrunneredit2.component.ts @@ -0,0 +1,831 @@ +import { Component, OnInit, ViewEncapsulation } from '@angular/core'; +import { FormBuilder, FormGroup } from '@angular/forms'; +import { DomSanitizer } from '@angular/platform-browser'; +import { ActivatedRoute, Router } from '@angular/router'; +import * as moment from 'moment'; +import { ToastrService } from 'ngx-toastr'; +import { ReportBuilderService } from 'src/app/services/api/report-builder.service'; +import { ExcelService } from 'src/app/services/excel.service'; + +@Component({ + selector: 'app-reportrunneredit2', + templateUrl: './reportrunneredit2.component.html', + styleUrls: ['./reportrunneredit2.component.scss'] +}) +export class Reportrunneredit2Component implements OnInit { + dynamicForm: FormGroup; + modalselect:boolean=false; + serverData = [{"andor": "AND", + "fields_name": "", + "condition": "=", + "value": ""}]; + andor = ['AND', 'OR','NOT']; + fieldname = ['name1', 'name2']; + condition = ['=','!=','<','>','<=','>=','LIKE','BETWEEN','IN']; + header_id; + public array=[ + { + "id": 1, + "name": "Jack", + "fromDate": "19-05-2023", + "toDate": "03-06-2023" + }, + { + "id": 2, + "name": "Allen", + "fromDate": "18-05-2023", + "toDate": "12-08-2023" + }, + { + "id": 3, + "name": "Annie", + "fromDate": "11-05-2023",//2023-11-05 + "toDate": "19-05-2023" + }, + { + "id": 4, + "name": "ashok", + "fromDate": "08-05-2023", + "toDate": "02-02-2023" + }, + { + "id": 5, + "name": "Anu", + "fromDate": "29-11-2020", + "toDate": "01-06-2021" + }, + { + "id": 6, + "name": "thrymr", + "fromDate": "04-04-2023", + "toDate": "15-05-2023" + }, + { + "id": 7, + "name": "Ab", + "fromDate": "29-11-2022", + "toDate": "01-06-2023" + }, + { + "id": 8, + "name": "thakur", + "fromDate": "04-04-2022", + "toDate": "15-05-2022" + } + ] + selectedfrom; + selectedto; + constructor(private router: Router, + private route: ActivatedRoute,private _fb: FormBuilder, + private reportBuilderService: ReportBuilderService,private toastr:ToastrService,private sanitizer: DomSanitizer,private excel: ExcelService) + { + this.dynamicForm = this._fb.group({ + }); + } +todayDate; + ngOnInit(): void { + this.todayDate = new Date().toISOString().slice(0, 10); + this.header_id = this.route.snapshot.params["id"]; + console.log(" id = ", this.header_id); + // this.duplicateArray=this.array; + this.getById(this.header_id); + + this.select('Today') + setTimeout(() => { + this.runtheQuery(); + }, 2000); + + + } + reportName; + builderLine; + builderLineData; + lineId; + adhocList:any[]; + SQLQuery; + getUrl; + stdParamfields; + DateParam; + getById(id: number) { + this.reportBuilderService.getrbDetailsById(id).subscribe( + (data) => { + console.log(data); + this.reportName = data.reportName; + this.builderLine = data.rpt_builder2_lines; + this.lineId = this.builderLine[0].id + this.builderLineData = JSON.parse(this.builderLine[0].model) ; + console.log(this.lineId,this.builderLineData); + this.builderLineData = this.builderLineData[0]; + this.adhocList = this.builderLineData.adhoc_param_html; + // this.adhocList = JSON.parse(adhocList); + this.DateParam = this.builderLineData.date_param_req; + this.getUrl = this.builderLineData.url; + console.log(this.adhocList,this.DateParam,this.getUrl) + this.getStdParam(this.header_id); + this.featchData(); + }); + + } + + featchData(){ + this.reportBuilderService.getAllDetailsByurl(this.getUrl).subscribe(data =>{ + console.log(data); + if(data.body){ + console.log(JSON.parse(data.body)); + this.rows = JSON.parse(data.body); + this.filterRows = JSON.parse(data.body); + } + }); + } + + dynamicHtml:any = []; + dynamicHtmlFlag = false; + stdParmas; + stdParamFlag = false; + getStdParam(id: any){ + console.log(this.builderLineData.std_param_html); + this.dynamicHtml = this.builderLineData.std_param_html; + // this.dynamicHtml = ['a.abc','b.abcde'] + if (this.dynamicHtml) { + for (const field of this.dynamicHtml) { + if (!this.dynamicForm.get(field)) { + this.dynamicForm.addControl(field, this._fb.control(null)); + } + } + console.log(this.dynamicForm.value); + } + if(this.dynamicHtml == undefined || this.dynamicHtml == ''){ + this.dynamicHtmlFlag = false; + }else{ + this.dynamicHtmlFlag = true; + } + + // this.reportBuilderService.getStdParamById(id).subscribe(data => { + // console.log(data); + // this.stdParmas = data; + // },(error)=>{ + // console.log(error.error.text) + // this.stdParmas = this.sanitizer.bypassSecurityTrustHtml(error.error.text); + + // if(this.stdParmas == undefined || this.stdParmas == ''){ + // this.stdParamFlag = false; + // }else{ + // this.stdParamFlag = true; + // } + // }); + } + modo2(val){ + console.log(val); + this.selectedfrom=val; + } + modo3(val){ + console.log(val); +this.selectedto=val; + } + duplicateArray=[]; + myDateValue: Date; + toDate:Date; + reverseAndTimeStamp(dateString) { + const reverse = new Date(dateString.split("-").reverse().join("-")); + return reverse.getTime(); + } + filterDate() { + let fromdate=moment(this.myDateValue).format('DD-MM-YYYY'); +console.log(fromdate) +let todate=moment(this.toDate).format('DD-MM-YYYY'); +if(this.myDateValue && this.toDate){ +const selectedMembers = this.array.filter(m => { + return this.reverseAndTimeStamp(m.fromDate) >= this.reverseAndTimeStamp(fromdate) && this.reverseAndTimeStamp(m.fromDate) <= this.reverseAndTimeStamp(todate) + } + ); + this.duplicateArray=selectedMembers +}else{ +this.duplicateArray=this.array +} + console.log(this.duplicateArray); // the result objects + this.modalselect=false; +} + + dateParameter: string; + from_date: Date; + to_date: Date; + + calculateThisWeek(): void { + // Calculate the current date + const currentDate = new Date(); + console.log(currentDate) + // Get the day of the week (0-6, where 0 is Sunday) + const currentDayOfWeek = currentDate.getDay(); + + // Calculate the number of days to subtract to get to Monday + const daysToMonday = currentDayOfWeek === 0 ? 6 : currentDayOfWeek - 1; + + // Calculate the date of Monday of the current week + this.from_date = new Date(currentDate); + this.from_date.setDate(currentDate.getDate() - daysToMonday); + + // Calculate the date of Sunday of the current week + this.to_date = new Date(this.from_date); + this.to_date.setDate(this.from_date.getDate() + 6); + console.log(this.from_date); + this.myDateValue=this.from_date; + console.log(this.to_date); + console.log(this.myDateValue); + this.toDate=this.to_date; + + this.FromDatequery = this.from_date.toISOString().substring(0, 10); + this.ToDatequery = this.to_date.toISOString().substring(0, 10); + // this.filterDate(); + } + calculateLastWeek(): void { + // Calculate the current date + const currentDate = new Date(); + + // Get the day of the week (0-6, where 0 is Sunday) + const currentDayOfWeek = currentDate.getDay(); + + // Calculate the number of days to subtract to get to Monday + const daysToMonday = currentDayOfWeek === 0 ? 6 : currentDayOfWeek - 1; + + // Calculate the date of Monday of the previous week + this.from_date = new Date(currentDate); + this.from_date.setDate(currentDate.getDate() - daysToMonday - 7); + + // Calculate the date of Sunday of the previous week + this.to_date = new Date(this.from_date); + this.to_date.setDate(this.from_date.getDate() + 6); + this.myDateValue=this.from_date; + console.log(this.to_date); + console.log(this.myDateValue); + this.toDate=this.to_date; + + + this.FromDatequery = this.from_date.toISOString().substring(0, 10); + this.ToDatequery = this.to_date.toISOString().substring(0, 10); + // this.filterDate(); + } + calculateThisMonth(): void { + // Calculate the current date + const currentDate = new Date(); + + // Calculate the date of the first day of the current month + this.from_date = new Date(currentDate.getFullYear(), currentDate.getMonth(), 1); + + // Calculate the date of the last day of the current month + this.to_date = new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 0); + + // Set the 'to_date' to the last day of the current month at the end of the day + this.to_date.setHours(23, 59, 59, 999); + + // Optionally, you can set 'myDateValue' to 'from_date' if needed + this.myDateValue = this.from_date; + + // Optionally, you can set 'toDate' to 'to_date' if needed + this.toDate = this.to_date; + + console.log(this.from_date); + console.log(this.to_date); + + + this.FromDatequery = this.from_date.toISOString().substring(0, 10); + this.ToDatequery = this.to_date.toISOString().substring(0, 10); + } + + + calculateLastMonth(): void { + // Calculate the current date + const currentDate = new Date(); + + // Calculate the date of the first day of the previous month + this.from_date = new Date(currentDate.getFullYear(), currentDate.getMonth() - 1, 1); + + // Calculate the date of the last day of the previous month + this.to_date = new Date(currentDate.getFullYear(), currentDate.getMonth(), 0); + + // Set the 'to_date' to the last day of the previous month at the end of the day + this.to_date.setHours(23, 59, 59, 999); + + // Optionally, you can set 'myDateValue' to 'from_date' if needed + this.myDateValue = this.from_date; + + // Optionally, you can set 'toDate' to 'to_date' if needed + this.toDate = this.to_date; + + console.log(this.from_date); + console.log(this.to_date); + + this.FromDatequery = this.from_date.toISOString().substring(0, 10); + this.ToDatequery = this.to_date.toISOString().substring(0, 10); + } + + calculateThisYear(): void { + // Calculate the current date + const currentDate = new Date(); + + // Calculate the date of the first day of the current year + this.from_date = new Date(currentDate.getFullYear(), 0, 1); + + // Calculate the date of the last day of the current year + this.to_date = new Date(currentDate.getFullYear(), 11, 31); + + this.myDateValue=this.from_date; + console.log(this.to_date); + console.log(this.myDateValue); + this.toDate=this.to_date; + + + this.FromDatequery = this.from_date.toISOString().substring(0, 10); + this.ToDatequery = this.to_date.toISOString().substring(0, 10); + // this.filterDate(); + } + + calculateLastYear(): void { + // Calculate the current date + const currentDate = new Date(); + + // Calculate the date of the first day of the previous year + this.from_date = new Date(currentDate.getFullYear() - 1, 0, 1); + + // Calculate the date of the last day of the previous year + this.to_date = new Date(currentDate.getFullYear() - 1, 11, 31); + + this.myDateValue=this.from_date; + console.log(this.to_date); + console.log(this.myDateValue); + this.toDate=this.to_date; + + this.FromDatequery = this.from_date.toISOString().substring(0, 10); + this.ToDatequery = this.to_date.toISOString().substring(0, 10); + // this.filterDate(); + } + SelectdateType; + select(val:any){ + console.log(val); + this.SelectdateType = val; + if(val === 'This Week'){ + this.FromDatequery = null; + this.ToDatequery = null; + this.calculateThisWeek() + }else if(val === 'Last Week'){ + this.FromDatequery = null; + this.ToDatequery = null; + this.calculateLastWeek() + }else if(val === 'This Month'){ + this.FromDatequery = null; + this.ToDatequery = null; + this.calculateThisMonth() + }else if(val === 'Last Month'){ + this.FromDatequery = null; + this.ToDatequery = null; + this.calculateLastMonth() + // }else if(val === 'To Specific FromDate To To Date'){ + // this.openmodel() + } + else if(val === 'This Year'){ + this.FromDatequery = null; + this.ToDatequery = null; + this.calculateThisYear() + }else if(val === 'Last Year'){ + this.FromDatequery = null; + this.ToDatequery = null; + this.calculateLastYear() + } + else if(val === 'Today'){ + this.FromDatequery = null; + this.ToDatequery = null; + this.myDateValue = this.todayDate; + this.toDate = this.todayDate; + + this.FromDatequery = this.myDateValue; + this.ToDatequery = this.toDate; + } + else if(val === '--Select Particular--'){ + this.FromDatequery = null; + this.ToDatequery = null; + this.newfrom = null; + this.newto = null; + this.myDateValue = null; + this.toDate = null; + } + + + } + openmodel(){ + this.modalselect=true; + } + + onExport() { + const reportNameWithUnderscore = this.reportName + '_'; + this.excel.exportAsExcelFile(this.rows, reportNameWithUnderscore, + moment().format('YYYYMMDD_HHmmss')) + } + + downloadFile(format: string) { + const date = moment().format('YYYYMMDD_HHmmss') + const reportNameWithUnderscore = this.reportName + '_' + date; + this.reportBuilderService.downloadFile(format, this.filterRows,reportNameWithUnderscore) + } + back(){ + this.router.navigate(["../../all"], { relativeTo: this.route }); + } +FormattedAdhocparameters; +adocdata; +// showPlusIconRow: number | null = 0; + onAddLines(){ + console.log(this.serverData); + const lastRow = this.serverData[this.serverData.length - 1]; + if (lastRow && lastRow.fields_name !== '') { + let formattedString = ''; + for (const condition of this.serverData) { + const { andor, fields_name, condition: cond, value } = condition; + formattedString += ` ${andor} ${fields_name} ${cond} '${value}' `; + console.log(formattedString); + this.FormattedAdhocparameters = formattedString + // this.selectcolumn(this.serverData); + } + this.serverData.push({ + andor: "AND", + fields_name: "", + condition: "=", + value: "" + }); + } + // this.showPlusIconRow = this.serverData.length - 1; + + } + deleteRow(index) { + // this.serverData.splice(index, 1); + // if (index === this.showPlusIconRow) { + // this.showPlusIconRow = null; + // } + if (this.serverData.length > 1) { + // Get the item to be deleted + const deletedItem = this.serverData[index]; + + // Remove the item from the serverData array + this.serverData.splice(index, 1); + + // Remove the corresponding entries from selectedValues + if (Array.isArray(deletedItem)) { + for (const item of deletedItem) { + const columnName = item.fields_name; + if (this.selectedValues[columnName]) { + const value = item.value; + const indexInArray = this.selectedValues[columnName].indexOf(value); + if (indexInArray !== -1) { + this.selectedValues[columnName].splice(indexInArray, 1); + } + } + } + } else if (typeof deletedItem === 'object') { + const columnName = deletedItem.fields_name; + if (this.selectedValues[columnName]) { + const value = deletedItem.value; + const indexInArray = this.selectedValues[columnName].indexOf(value); + if (indexInArray !== -1) { + this.selectedValues[columnName].splice(indexInArray, 1); + } + } + } + } + + console.log(this.selectedValues); + this.filterRowsBySelectedValues(); + } + + + rows:any[]; + filterRows:any[]; + columns: any[]; + rowdata; + FromDatequery; + ToDatequery; + + newfrom; + newto; + + dateKey; +runtheQuery(){ + console.log(this.myDateValue , this.toDate); + let query = this.SQLQuery; +// let query + if(this.dynamicForm.value){ + // for(let i = 0; i < this.dynamicForm.value.length; i++){ + // // const query = this.SQLQuery + " AND " + this.dynamicForm.controls[i] + " = " + this.dynamicForm.value[i] + + // } + + + // Iterate over the keys in dynamicForm.value + Object.keys(this.dynamicForm.value).forEach((key) => { + // Append the condition for each key to the query + if (this.dynamicForm.value[key] !== null ) { + this.selectcolumn(this.dynamicForm.value); + // query += ` AND ${key} = '${this.dynamicForm.value[key]}'`; + } + // const regex = /FROM/i; + // const match = query.match(regex); + // if (this.dynamicForm.value[key] !== null && this.dynamicForm.value[key] !== '') { + // // query += ` AND ${key} = '${this.dynamicForm.value[key]}'`; + // const columnName = key.split('.').pop(); + // let coalesceExpression = `, COALESCE(${key}, '${this.dynamicForm.value[key]}') as ${columnName}`; + // if (match) { + // // Insert the COALESCE expression before the FROM keyword + // query = query.slice(0, match.index) + coalesceExpression +' '+ query.slice(match.index); + // } + // } + }); + // if(this.FromDatequery && this.ToDatequery){ + // query += ` AND cretaedat BETWEEN '${this.FromDatequery}' AND '${this.ToDatequery}'`; + + // }else + if(this.DateParam == true){ + this.dateKey = 'createdat'; + this.adhocList.forEach(key => { + if (key.includes("created_at")) { + this.dateKey ="created_at" ; + } + }); + this.adhocList.forEach(key => { + if (key.includes("createdAt")) { + this.dateKey ="createdAt" ; + } +}); + if(this.myDateValue && this.toDate){ + if(this.myDateValue){ + this.newfrom = new Date(this.myDateValue); + // const year = inputDate.getFullYear(); + // const month = String(inputDate.getMonth() + 1).padStart(2, "0"); // Months are zero-based, so add 1 + // const day = String(inputDate.getDate()).padStart(2, "0"); + // this.newfrom = `${year}-${month}-${day}`; + } + if(this.toDate){ + this.newto = new Date(this.toDate); + // const year = inputDate.getFullYear(); + // const month = String(inputDate.getMonth() + 1).padStart(2, "0"); // Months are zero-based, so add 1 + // const day = String(inputDate.getDate()).padStart(2, "0"); + // this.newto = `${year}-${month}-${day}`; + + } + query += ` AND ${this.dateKey} BETWEEN '${this.newfrom}' AND '${this.newto}'`; + +} + } + // if(this.myDateValue && this.toDate){ + // query += ` AND from_date = NVL(${this.myDateValue}from_date, 'from_date') AND to_date = NVL(${this.toDate}to_date, 'to_date')`; + // } + console.log(query); + } +// if(this.FormattedAdhocparameters){ +// query += this.FormattedAdhocparameters +// } + + this.selectcolumn(this.serverData); +// query = `SELECT a.name AS name, b.dob AS dob FROM abc a, abcde b WHERE a.name = 'gaurav' AND a.abc = NVL(b.abc, 'name') AND a.abcde = NVL(b.abcde, 'test');` + console.log(query); + this.reportBuilderService.getMasterData(query).subscribe((data) => { + // this.rows = data; + + console.log(this.rows); +this.rowdata= [this.rows]; + console.log(typeof this.rows); + if(data){ + this.toastr.success("Run Successfully") + } + var j; + var cart = []; + + for(var i = 0; i < data.length; i++) + { + var columnsIn = data[i]; + if(i==1) + { + for(var key in columnsIn) + { + j={prop:key , name: key}; + cart.push(j) + + } + } + } + this.columns = cart; + +}); +} +getHeaders() { +let headers: string[] = []; +if(this.rows) { + this.rows.forEach((value) => { + Object.keys(value).forEach((key) => { + if(!headers.find((header) => header == key)){ + headers.push(key) + } + + }) + + }) +} +return headers; +} + +getFilterHeaders() { + let headers: string[] = []; + if(this.filterRows) { + this.filterRows.forEach((value) => { + Object.keys(value).forEach((key) => { + if(!headers.find((header) => header == key)){ + headers.push(key) + } + }) + }) + } + return headers; + } + + + +selectedValues: { [key: string]: any[] } = {}; +selectcolumn(data: any) { + if (Array.isArray(data)) { + for (const item of data) { + const columnName = item.fields_name; + const value = item.value; + + // Check if fields_name is not empty and value is not null or empty string + if (columnName.trim() !== '') { + if (!this.selectedValues[columnName]) { + this.selectedValues[columnName] = []; + } + + if (value !== null && value.trim() !== '') { + // Only add the value if it's not null and not an empty string + if (!this.selectedValues[columnName].includes(value)) { + this.selectedValues[columnName].push(value); + } + } else { + // Remove the property if the value is null or empty string + delete this.selectedValues[columnName]; + } + } + } + } else if (typeof data === 'object') { + // Handle the first JSON structure (object) + console.log(data); + for (const key in data) { + if (data.hasOwnProperty(key)) { + const columnName = key; + const value = data[key]; + + if (!this.selectedValues[columnName]) { + this.selectedValues[columnName] = []; + } + + if (value !== null && value.trim() !== '') { + // Only add the value if it's not null and not an empty string + if (!this.selectedValues[columnName].includes(value)) { + this.selectedValues[columnName].push(value); + } + } else { + // Remove the property if the value is null or empty string + delete this.selectedValues[columnName]; + } + } + } + } + + console.log(this.selectedValues); + this.filterRowsBySelectedValues(); +} + + + + +filtered = false; +filterRowsBySelectedValues() { + // Create a filteredRows array to store the filtered data + const filteredRows = []; + + // Iterate through each row in the rows array + for (const row of this.rows) { + let isMatch = true; + + // Iterate through each column in the selectedValues object + for (const columnName in this.selectedValues) { + if (this.selectedValues.hasOwnProperty(columnName) && row.hasOwnProperty(columnName)) { + // Get the selected values for the current column + const selectedValuesForColumn = this.selectedValues[columnName]; + + // Get the type of the row's value for the current column + const rowValue = row[columnName]; + const rowValueType = typeof rowValue; + + if (rowValueType === 'boolean') { + // Handle boolean values + if (selectedValuesForColumn.length === 0) { + // If no specific value selected for boolean, include the row + continue; + } + + const selectedBooleanValue = selectedValuesForColumn[0] === 'true'; // Convert to boolean + if (selectedBooleanValue !== rowValue) { + isMatch = false; + break; // No need to check other columns if it's not a match + } + } else { + // Handle other data types, including numbers and strings + // Convert selected values to the appropriate type + const convertedValues = selectedValuesForColumn.map((value) => { + if (rowValueType === 'number') { + return parseFloat(value); // Convert to number + } else { + return value; // Keep the original value (string, etc.) + } + }); + + // Check if the row's value for the current column matches any selected value + if (!convertedValues.includes(rowValue)) { + isMatch = false; + break; // No need to check other columns if it's not a match + } + } + } + } + if(this.FromDatequery !== null && this.ToDatequery !== null){ + this.newfrom = this.FromDatequery + this.newto = this.ToDatequery + } + + if (this.newfrom !== null && this.newto !== null) { + // Extract the year, month, and day from newfrom and newto + const from = new Date(this.newfrom); + const to = new Date(this.newto); + const newfromYear = from.getFullYear(); + const newfromMonth = from.getMonth(); + const newfromDay = from.getDate(); + const newtoYear = to.getFullYear(); + const newtoMonth = to.getMonth(); + const newtoDay = to.getDate(); + + // Extract the year, month, and day from createdAtDate + const dateKey = this.dateKey; + const createdAtDate = new Date(row[dateKey]); + const createdAtYear = createdAtDate.getFullYear(); + const createdAtMonth = createdAtDate.getMonth(); + const createdAtDay = createdAtDate.getDate(); + + // Create new Date objects using the extracted year, month, and day + const newfromDate = new Date(newfromYear, newfromMonth, newfromDay); + const newtoDate = new Date(newtoYear, newtoMonth, newtoDay); + const createdAtDateOnly = new Date(createdAtYear, createdAtMonth, createdAtDay); + + // Check if the createdAtDateOnly is within the specified date range + if (createdAtDateOnly < newfromDate || createdAtDateOnly > newtoDate) { + isMatch = false; + } + } + + + // If the row matches all selected values, add it to the filteredRows array + if (isMatch) { + filteredRows.push(row); + } + } + + // Assign the filtered data to the rows + console.log(filteredRows); + this.filterRows = filteredRows; + + // Check if all arrays in selectedValues are empty + const allArraysEmpty = Object.values(this.selectedValues).every(arr => arr.length === 0); + + // Check if the date range is not selected + const dateRangeNotSelected = !this.newfrom || !this.newto; + + // Set this.filtered based on allArraysEmpty and dateRangeNotSelected + this.filtered = !allArraysEmpty || !dateRangeNotSelected; +} + + + +formatDate(dateObj: any): string { + // Extract individual date properties + const { year, monthValue, dayOfMonth, hour, minute, second } = dateObj; + + // Create a JavaScript Date object using the extracted properties + const formattedDate = new Date(year, monthValue - 1, dayOfMonth, hour, minute, second); + + // Format the date as needed (e.g., using built-in JavaScript date formatting) + return formattedDate.toLocaleString(); // Or any other desired formatting +} + +isDate(value: any): boolean { + return ( + value instanceof Date || + (value && + value.year !== undefined && + value.monthValue !== undefined && + value.dayOfMonth !== undefined) + ); +} + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/setupicon/setupicon.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/setupicon/setupicon.component.html new file mode 100644 index 0000000..972d75d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/setupicon/setupicon.component.html @@ -0,0 +1,148 @@ + + +
    + +
    +
    +
    + +
    +
    + + +
    +

    {{ 'SETUP_TOOLS' | translate }}

    +
    + +
    + +
    +
    + + +
    +
    +
    + +
    +
    + +
    +

    +
    +
    + {{item.menuItemDesc}} +
    +
    + +
    +
    +
    + {{item.menuItemDesc}} +
    +
    +
    +
    +
    +
    + + +
    +
    + +
    +
    +
    + +
    +

    +
    +
    + {{ 'REPORTS' | translate }} +
    +
    + +
    +
    +
    + {{ 'REPORTS_DESCRIPTION' | translate }} +
    +
    +
    +
    +
    +
    + + + + +
    +
    + +
    +
    +
    + +
    +

    +
    +
    + {{ 'API_REGISTERY' | translate + }} +
    +
    + +
    +
    +
    + {{ 'API_REGISTERY_DESCRIPTION' | translate }} +
    +
    +
    +
    +
    +
    + + + + +
    +
    + +
    +
    +
    + +
    +

    +
    +
    + {{ 'TOKEN_REGISTERY' | + translate + }} +
    +
    + +
    +
    +
    + {{ 'TOKEN_REGISTERY_DESCRIPTION' | translate + }} +
    +
    +
    +
    +
    +
    + + + +
    \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/setupicon/setupicon.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/setupicon/setupicon.component.scss new file mode 100644 index 0000000..126a257 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/setupicon/setupicon.component.scss @@ -0,0 +1,47 @@ +// .card-body{ +// justify-content: center; +// margin: 50px auto 50px 80px; +// padding: 10px; +// } + +.card { + position: relative; + display: block; + background-color: #fff; + background-color: var(--clr-card-bg-color, white); + width: 100%; + // margin-top: 1.2rem; + height: 135px; + + margin: 10px; + +} + +.clr-col-sm-2{ + margin:20px 40px 20px 40px; +} + + +input[type='radio']{ + width: 14px !important; + height: 14px !important; + margin: 5px; + -webkit-appearance: none; + -moz-appearance: none; + -o-appearance: none; + appearance: none; + outline: 1px solid gray; + box-shadow: none; + font-size: 0.8em; + text-align: center; + line-height: 1em; + background: red; + } + .dots + { + width: 100px; + height:100px; + border: 1px solid; + border-radius: 50%; + //background-color: #f00; + } \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/setupicon/setupicon.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/setupicon/setupicon.component.spec.ts new file mode 100644 index 0000000..2a94930 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/setupicon/setupicon.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SetupiconComponent } from './setupicon.component'; + +describe('SetupiconComponent', () => { + let component: SetupiconComponent; + let fixture: ComponentFixture; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [SetupiconComponent] + }); + fixture = TestBed.createComponent(SetupiconComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/setupicon/setupicon.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/setupicon/setupicon.component.ts new file mode 100644 index 0000000..4e62715 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/builder/setupicon/setupicon.component.ts @@ -0,0 +1,97 @@ +import { Component, OnInit } from '@angular/core'; +import { ActivatedRoute, Router } from '@angular/router'; +import { MenuGroupService } from 'src/app/services/admin/menu-group.service'; +import { MenumaintanceService } from 'src/app/services/admin/menumaintance.service'; +import { TranslateService } from '@ngx-translate/core'; +@Component({ + selector: 'app-setupicon', + templateUrl: './setupicon.component.html', + styleUrls: ['./setupicon.component.scss'] +}) +export class SetupiconComponent implements OnInit { + + sub; + constructor(private router: Router, private route: ActivatedRoute, private menuservice: MenumaintanceService, private menuGroupService: MenuGroupService, + private translate: TranslateService + ) { } + + + ngOnInit(): void { + this.getById(1116) + } + switchLanguage(language: string) { + this.translate.use(language); + } + getById(id: any) { + this.menuservice.getbyid(id).subscribe((data) => { + this.sub = data; + console.log(this.sub) + }) + } + mc; + me; + md; + mv; + goToUserMaintenance(val) { + console.log(val); + this.menuGroupService.storeaddeditvalues(val); + this.mc = val.mcreate; + this.me = val.medit; + this.md = val.mdelete; + this.mv = val.mvisible; + if (this.mv == 'false') { + this.router.navigate(['/**']) + } + this.router.navigate(['../' + val.main_menu_action_name], { relativeTo: this.route }); + } + + goToUsergrpMaintenance() { + this.router.navigate(['/cns-portal/usergrpmaintance'], { relativeTo: this.route }); + } + + goToMenumaintance() { + this.router.navigate(['/cns-portal/menumaintance'], { relativeTo: this.route }); + } + + goToMenuaccess() { + this.router.navigate(['/cns-portal/menuaccess'], { relativeTo: this.route }); + } + + goToSystemparameters() { + this.router.navigate(['/cns-portal/systemparameters'], { relativeTo: this.route }); + } + + goToAccesstype() { + this.router.navigate(['/cns-portal/accesstype'], { relativeTo: this.route }); + } + + goToreport() { + this.router.navigate(['/cns-portal/reportbuild'], { relativeTo: this.route }); + } + + goTodash() { + this.router.navigate(['/cns-portal/dashboardbuilder'], { relativeTo: this.route }); + } + + goToApiRegistery() { + this.router.navigate(['/cns-portal/apiregistery'], { relativeTo: this.route }); + } + + goTokenRegistery() { + this.router.navigate(['/cns-portal/tokenregistery'], { relativeTo: this.route }); + } + + + // mc; + // me; + // md; + // mv; + // send(val){ + // console.log(val); + // this.menuGroupService.storeaddeditvalues(val); + // this.mc=val.mcreate; + // this.me=val.medit; + // this.md=val.mdelete; + // this.mv=val.mvisible; + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimport.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimport.component.html new file mode 100644 index 0000000..90c6b64 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimport.component.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimport.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimport.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimport.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimport.component.spec.ts new file mode 100644 index 0000000..7981adb --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimport.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BulkimportComponent } from './bulkimport.component'; + +describe('BulkimportComponent', () => { + let component: BulkimportComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ BulkimportComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(BulkimportComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimport.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimport.component.ts new file mode 100644 index 0000000..d00d0dc --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimport.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-bulkimport', + templateUrl: './bulkimport.component.html', + styleUrls: ['./bulkimport.component.scss'] +}) +export class BulkimportComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportadd/bulkimportadd.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportadd/bulkimportadd.component.html new file mode 100644 index 0000000..e2ad5c2 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportadd/bulkimportadd.component.html @@ -0,0 +1,183 @@ +

    Validation Rule

    +Add Mode
    +Validation Rules are proccessed while importing bulk records for respective entity +
    + + + + + + + + +
    + + + + + +
    +
    +
    + + +
    +
    + + +
    + +
    + + + +
    +
    + + +
    +
    Add Rule
    + +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Rule NameFrom SheetFrom Columnvalidation TableCheck ColumnReplacement Column (Id)Use Column (Id)Error MessageAction
    + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    +
    + + +
    +
    + +
    +
    +
    + + + + + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportadd/bulkimportadd.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportadd/bulkimportadd.component.scss new file mode 100644 index 0000000..b05187f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportadd/bulkimportadd.component.scss @@ -0,0 +1,81 @@ +//@import "../../../../assets/scss/var"; +.s-info-bar { + display: flex; + flex-direction: row; + justify-content: space-between; + button { + outline: none; + } + } + + .entry-pg { + width: 750px; + } + + .button1::after { + content: none; + } + .button1:hover::after { + content: "ADD ROWS"; + } + + $bg-color: #dddddd; + + .section { + background-color: $bg-color; + height: 40px; + } + + .section p { + //color: white; + font-weight: bold; + padding: 10px; + font-size: 18px; + } + + .clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; + } + + .clr-file { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + //padding: 0.6rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; + } + + .center { + text-align: center; + } + input[type=text],[type=date],[type=number],textarea { + width: 100%; + padding: 15px 15px; + margin-top: 3px; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; + } + + .required-field{ + color: red; + + } + select{ + width: 100%; + margin-top: 3px; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; + } + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportadd/bulkimportadd.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportadd/bulkimportadd.component.spec.ts new file mode 100644 index 0000000..187619d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportadd/bulkimportadd.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BulkimportaddComponent } from './bulkimportadd.component'; + +describe('BulkimportaddComponent', () => { + let component: BulkimportaddComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ BulkimportaddComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(BulkimportaddComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportadd/bulkimportadd.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportadd/bulkimportadd.component.ts new file mode 100644 index 0000000..6e52222 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportadd/bulkimportadd.component.ts @@ -0,0 +1,236 @@ +import { HttpErrorResponse, HttpHeaderResponse } from '@angular/common/http'; +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import { ToastrService } from 'ngx-toastr'; +import { BulkimportService } from 'src/app/services/fnd/bulkimport.service'; +@Component({ + selector: 'app-bulkimportadd', + templateUrl: './bulkimportadd.component.html', + styleUrls: ['./bulkimportadd.component.scss'] +}) +export class BulkimportaddComponent implements OnInit { + public entryForm: FormGroup; + selectedFile: File[]=[]; + + datajson; + transform:boolean = false; + checkTransform:boolean = true; + mapperdata; + + entityname; + description; + constructor(private _fb: FormBuilder, private router: Router,private toastr: ToastrService, + private route: ActivatedRoute,private dataservice:BulkimportService) { } + + ngOnInit(): void { + this.entryForm = this._fb.group({ + entity_name:[null], + rule_line:[null], + description: [null], + active: [true], + }); + + this.route.queryParams.subscribe(params => { + const data = params['data']; + this.entityname = params['name']; + this.description = params['description']; + + + if (data) { + try { + this.datajson = JSON.parse(data); + console.log('Received data:', this.datajson); + } catch (e) { console.error('Invalid JSON:', data);} + } + + + }); + + const condition = this.dataservice.getCondition(); + if(condition === 'mapper'){ + this.transform = true; + this.checkTransform = false; + if(this.datajson!== undefined){ + // if(this.entryForm.value.rule_line == 'undefined'){ this.entryForm.value.rule_line= '';} + const currentText = this.entryForm.value.rule_line = ''; + this.mapperdata = currentText + this.datajson; + // this.entryForm.value.rule_line = this.mapperdata; + // this.Updating(); + this.dataservice.setCondition(''); + } + } + + + console.log(this.entryForm.value); + + this.entryForm.patchValue({ + entity_name: this.entityname, + description: this.description, + }); + + console.log(this.entryForm.value); + } + + serverData = [ + { + "rulename": "", + "fromsheet": "", + "fromColumn": "", + "validationTable": "", + "checkColumn": "", + "replacementcolumn": "", + "useColumn": "", + "errormsg": "" + }]; + onAddLines(){ + this.serverData.push({ + rulename: "", + fromsheet:"", + fromColumn: "", + validationTable: "", + checkColumn: "", + replacementcolumn:"", + useColumn:"", + errormsg:"" + }); + console.log(this.serverData); + } + deleteRow(index) { + this.serverData.splice(index, 1); + } + + toastrShown: boolean = false; + onSubmit(){ + this.entryForm.value.rule_line = JSON.stringify(this.serverData); + console.log(this.entryForm.value); + this.dataservice.saveData(this.entryForm.value).subscribe((data)=>{ + console.log(data); + if (data) { + if (!this.toastrShown) { + this.toastrShown = true; // Set the flag to indicate that the toastr message has been shown + this.toastr.success("Added Successfully"); + setTimeout(() => { + this.router.navigate(["../all"], { relativeTo: this.route }); + }, 500); + } + } + }, (error: HttpHeaderResponse)=>{ + console.log(error); + if(error.status===202){ + this.toastr.success("Added Succesfully"); + } + if(error.status===404){ + this.toastr.error("Not Added"); + } + if(error.status===400){ + this.toastr.error("Not Added"); + } + }); + setTimeout(() => { + this.router.navigate(["../all"], { relativeTo: this.route }); + },500); + } + goback(){ + this.router.navigate(["../all"], { relativeTo: this.route }); + } + + + ///rules + checkTrans(){ + + console.log("rule line open") + this.dataservice.setCondition('mapper'); + + this.router.navigate(["../ruleline/"], { relativeTo: this.route, queryParams: {data:this.entryForm.value.rule_line, entityname:this.entryForm.value.entity_name, description:this.entryForm.value.description}, skipLocationChange: true}); + console.log(this.entryForm.value.entity_name); + + } + + mappperclick = false; + goFromMapper(){ + //this.mappperclick = true; + this.dataservice.setCondition('mapper'); + this.router.navigate(["../ruleline/"], { relativeTo: this.route, queryParams: {data:this.entryForm.value.rule_line, entityname:this.entryForm.value.entity_name, description:this.entryForm.value.description}, skipLocationChange: true}); + console.log(this.entryForm.value.entity_name); + } + + transReset(){ + this.entryForm.value.rule_line = undefined; + this.transform = false; + this.checkTransform = true; + } + + + headerData; + getColumns(table){ + console.log(table); + // console.log(this.getbyiddata.entityName); + this.dataservice.getColumnNames(table).subscribe((data) => { + console.log(data); + this.headerData = data; + }); +} + + checkTransformMapper = true; + transformMapper = false; + mapperText; + getHeaderData; + JsonHeader = []; + selectedSheetName: string | null = null; + columnJson =[]; + sheetNames:any; + checkTransMapper(){ + + console.log("Mapper open") + // console.log(this.storeData); + if(this.getHeaderData){ + this.checkTransformMapper = false; + this.transformMapper = true; + console.log(this.getHeaderData); + if(this.mapperText === "undefined"){ this.mapperText= '';} + const currentText = this.mapperText; + let trnsfData = currentText + '' +this.getHeaderData; + this.mapperText = trnsfData; + }else { + this.checkTransformMapper = true; + this.transformMapper = false; + } + + } + mappperModal = false; + goFromMapperField(){ + this.mappperModal = true; + this.selectedSheetName = this.sheetNames[0]; + const tablename = this.columnJson[0].TableName; + this.getColumns(tablename) + if(this.mapperText){ + try { + this.JsonHeader = JSON.parse(this.mapperText); + console.log('Received data:', this.JsonHeader ); + } catch (e) { console.error('Invalid JSON:', this.mapperText);} + }else + if (this.getHeaderData) { + // try { + // this.serverData = data.replace(/\[|\]|"/g, '').split(','); //(/\[|\]|'/g, '') //(/[\[\]"]/g, '') + // console.log('Received data:', this.serverData ); + // } catch (e) { console.error('Invalid JSON:', data);} + try { + this.JsonHeader = JSON.parse(this.getHeaderData); + console.log('Received data:', this.JsonHeader ); + } catch (e) { console.error('Invalid JSON:', this.getHeaderData);} + + } + } + + transResetMapper(){ + this.mapperText = ''; + this.transformMapper = false; + this.checkTransformMapper = true; + } + + onUpdate(){ + this.mappperModal = false; + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportall/bulkimportall.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportall/bulkimportall.component.html new file mode 100644 index 0000000..7a33825 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportall/bulkimportall.component.html @@ -0,0 +1,81 @@ + + +
    + +
    +
    +
    +

    Validation Rule

    +
    +
    + + + +
    +
    + + + Loading ... +
    {{error}}
    + + + Entity Name + + + Description + + + Active + + + Action + + + {{user.entity_name}} + {{user.description}} + {{user.active}} + + + + Delete + + + + + + + + + + + + Users per page + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} + of {{pagination.totalItems}} users + + +
    +
    + + + + + + + + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportall/bulkimportall.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportall/bulkimportall.component.scss new file mode 100644 index 0000000..c05b1dc --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportall/bulkimportall.component.scss @@ -0,0 +1,4 @@ +.delete,.heading{ + text-align: center; + color: red; + } \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportall/bulkimportall.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportall/bulkimportall.component.spec.ts new file mode 100644 index 0000000..4627941 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportall/bulkimportall.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BulkimportallComponent } from './bulkimportall.component'; + +describe('BulkimportallComponent', () => { + let component: BulkimportallComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ BulkimportallComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(BulkimportallComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportall/bulkimportall.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportall/bulkimportall.component.ts new file mode 100644 index 0000000..008c056 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportall/bulkimportall.component.ts @@ -0,0 +1,87 @@ +import { Component, OnInit } from '@angular/core'; +import { ActivatedRoute, Router } from '@angular/router'; +import { ToastrService } from 'ngx-toastr'; +import { ExcelService } from 'src/app/services/excel.service'; +import * as moment from 'moment'; +import { BulkimportService } from 'src/app/services/fnd/bulkimport.service'; + +@Component({ + selector: 'app-bulkimportall', + templateUrl: './bulkimportall.component.html', + styleUrls: ['./bulkimportall.component.scss'] +}) +export class BulkimportallComponent implements OnInit { + + loading = false; + error; + selected: any[] = []; + rowSelected :any= {}; + modaldelete=false; + data; + constructor(private router: Router, private toastr: ToastrService, + private route: ActivatedRoute,private excel: ExcelService,private bulkimportService:BulkimportService,) { } + + ngOnInit(): void { + this.getall(); + } + getall(){ + this.bulkimportService.getDetails().subscribe((data)=>{ + console.log(data); + this.data=data; + if(this.data.length == 0){ + this.error="No data Available"; + console.log(this.error); + } + + },(error) => { + console.log(error); + if(error){ + this.error="No data Available OR server Error"; + } + }); + + } + goToAdd(){ + this.router.navigate(["../add"], { relativeTo: this.route }); + + } + onExport() { + this.excel.exportAsExcelFile(this.data, 'user_', + moment().format('YYYYMMDD_HHmmss')) + } + goToEdit(id) { + this.router.navigate(["../edit/" + id], { relativeTo: this.route }); + } + onDelete(row) { + this.rowSelected = row; + this.modaldelete=true; + } + + delete(id){ + this.modaldelete = false; + console.log("in delete "+id); + this.bulkimportService.deleteById(id).subscribe( + (data) => { + console.log(data); + this.ngOnInit(); + if (data == null || data) { + this.toastr.success('Deleted successfully'); + } + }, + (error) => { + console.log('Error in adding data...',+error); + if(isNaN(error)){ + this.toastr.success('Deleted successfully'); + }else{ + this.toastr.error('Not Deleted Data Getting Some Error'); + } + } + ); +} + +activeTab: number = 1; + +showTab(tabNumber: number) { + this.activeTab = tabNumber; +} +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportedit/bulkimportedit.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportedit/bulkimportedit.component.html new file mode 100644 index 0000000..ed86b6a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportedit/bulkimportedit.component.html @@ -0,0 +1,116 @@ +

    Validation Rule

    +Edit Mode
    +Validation Rules are proccessed while importing bulk records for respective entity +
    +
    +
    +
    +
    + + +
    +
    + + +
    + +
    + + + +
    +
    + + +
    +
    Select open to add rules, select reset to delete existing rules
    +
    +
    +
    +
    Add Rule
    + +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Rule NameFrom SheetFrom Columnvalidation TableCheck ColumnReplacement Column (Id)Use Column (Id)Error MessageAction
    + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +
    +
    + + +
    +
    + +
    +
    +
    \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportedit/bulkimportedit.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportedit/bulkimportedit.component.scss new file mode 100644 index 0000000..b05187f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportedit/bulkimportedit.component.scss @@ -0,0 +1,81 @@ +//@import "../../../../assets/scss/var"; +.s-info-bar { + display: flex; + flex-direction: row; + justify-content: space-between; + button { + outline: none; + } + } + + .entry-pg { + width: 750px; + } + + .button1::after { + content: none; + } + .button1:hover::after { + content: "ADD ROWS"; + } + + $bg-color: #dddddd; + + .section { + background-color: $bg-color; + height: 40px; + } + + .section p { + //color: white; + font-weight: bold; + padding: 10px; + font-size: 18px; + } + + .clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; + } + + .clr-file { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + //padding: 0.6rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; + } + + .center { + text-align: center; + } + input[type=text],[type=date],[type=number],textarea { + width: 100%; + padding: 15px 15px; + margin-top: 3px; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; + } + + .required-field{ + color: red; + + } + select{ + width: 100%; + margin-top: 3px; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; + } + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportedit/bulkimportedit.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportedit/bulkimportedit.component.spec.ts new file mode 100644 index 0000000..766987b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportedit/bulkimportedit.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BulkimporteditComponent } from './bulkimportedit.component'; + +describe('BulkimporteditComponent', () => { + let component: BulkimporteditComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ BulkimporteditComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(BulkimporteditComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportedit/bulkimportedit.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportedit/bulkimportedit.component.ts new file mode 100644 index 0000000..34cdd86 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportedit/bulkimportedit.component.ts @@ -0,0 +1,200 @@ +import { HttpErrorResponse, HttpHeaderResponse } from '@angular/common/http'; +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import { ToastrService } from 'ngx-toastr'; +import { BulkimportService } from 'src/app/services/fnd/bulkimport.service'; + +@Component({ + selector: 'app-bulkimportedit', + templateUrl: './bulkimportedit.component.html', + styleUrls: ['./bulkimportedit.component.scss'] +}) +export class BulkimporteditComponent implements OnInit { + public entryForm: FormGroup; + selectedFile: File[]=[]; + id; + datajson; + transform:boolean = false; + checkTransform:boolean = true; + mapperdata; + tdata: any = {}; + entityname; + description; + constructor(private _fb: FormBuilder, private router: Router,private toastr: ToastrService, + private route: ActivatedRoute,private dataservice:BulkimportService) { } + + ngOnInit(): void { + this.id = this.route.snapshot.params["id"]; + console.log("update with id = ", this.id); + + // this.entryForm = this._fb.group({ + // entity_name:[null], + // rule_line:[null], + // description: [null], + // active: [true], + // }); + + + this.dataservice.getDetailsById(this.id).subscribe(data => { + this.tdata = data; + this.serverData = JSON.parse(data.rule_line); + console.log(this.tdata); + }, + (err) => { + console.log(err); + }); + + + setTimeout(() => { + + + this.route.queryParams.subscribe(params => { + const data = params['data']; + this.entityname = params['name']; + this.description = params['description']; + + + if (data) { + try { + this.datajson = JSON.parse(data); + console.log('Received data:', this.datajson); + } catch (e) { console.error('Invalid JSON:', data);} + } + + + }); + + if(this.tdata.rule_line !== '' && this.tdata.rule_line !== null && this.tdata.rule_line !== undefined) { + console.log(this.tdata.rule_line) + this.checkTransform = false; + this.transform = true; + }else{ + console.log(this.tdata.rule_line) + this.checkTransform = true; + this.transform = false; + this.checkTransform = true; + } + + const condition = this.dataservice.getCondition(); + if(condition === 'mapper'){ + console.log("datagetting"); + this.transform = true; + this.checkTransform = false; + if(this.datajson!== undefined){ + // if(this.entryForm.value.rule_line == 'undefined'){ this.entryForm.value.rule_line= '';} + const currentText = this.tdata.rule_line = ''; + this.mapperdata = currentText + this.datajson; + this.tdata.rule_line = this.mapperdata; + // this.Updating(); + this.dataservice.setCondition(''); + } + } +}, 1000); + + console.log(this.tdata); + // this.entryForm.patchValue({ + // entity_name: this.entityname, + // description: this.description, + // }); + // console.log(this.entryForm.value); + } + + getById(id: number) { + + } + + serverData = []; + onAddLines(){ + this.serverData.push({ + rulename: "", + fromsheet:"", + fromColumn: "", + validationTable: "", + checkColumn: "", + replacementcolumn:"", + useColumn:"", + errormsg:"" + }); + console.log(this.serverData); + } + deleteRow(index) { + this.serverData.splice(index, 1); + } + + toastrShown: boolean = false; + onSubmit(){ + this.tdata.rule_line = JSON.stringify(this.serverData); + console.log(this.tdata); + this.dataservice.updateData(this.tdata, this.id).subscribe((data)=>{ + console.log(data); + if (data.operationStatus) { + this.toastr.warning(data.operationMessage); + }else{ + if (!this.toastrShown) { + this.toastrShown = true; // Set the flag to indicate that the toastr message has been shown + this.toastr.success("Update Successfully"); + setTimeout(() => { + this.router.navigate(["../../all"], { relativeTo: this.route }); + }, 500); + } + } + }, (error: HttpHeaderResponse)=>{ + console.log(error); + if(error.status===202){ + this.toastr.success("Update Succesfully"); + } + if(error.status===404){ + this.toastr.error("Not Update"); + } + if(error.status===400){ + this.toastr.error("Not Update"); + } + }); + setTimeout(() => { + this.router.navigate(["../../all"], { relativeTo: this.route }); + },500); + } + + Updating(){ + console.log(this.tdata); + this.dataservice.updateData(this.tdata, this.id).subscribe(data=>{ + console.log(data); + // this.ngOnInit(); + }, (error: HttpHeaderResponse)=>{ + console.log(error); + }); + } + + goback(){ + this.router.navigate(["../../all"], { relativeTo: this.route }); + } + + + + ///rules + checkTrans(){ + + console.log("rule line open") + this.dataservice.setCondition('mapper'); + + this.router.navigate(["../../rulelineedit/"], { relativeTo: this.route, queryParams: {id:this.id, data:this.tdata.rule_line, entityname:this.tdata.entity_name, description:this.tdata.description}, skipLocationChange: true}); + console.log(this.tdata.rule_line); + + } + + mappperclick = false; + goFromMapper(){ + //this.mappperclick = true; + this.dataservice.setCondition('mapper'); + this.router.navigate(["../../rulelineedit/"], { relativeTo: this.route, queryParams: {id:this.id, data:this.tdata.rule_line, entityname:this.tdata.entity_name, description:this.tdata.description}, skipLocationChange: true}); + console.log(this.tdata.rule_line); + } + + transReset(){ + this.tdata.rule_line = undefined; + this.transform = false; + this.checkTransform = true; + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimporteditline/bulkimporteditline.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimporteditline/bulkimporteditline.component.html new file mode 100644 index 0000000..5efccb0 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimporteditline/bulkimporteditline.component.html @@ -0,0 +1,73 @@ +

    Add Rule Lines

    +
    +
    +
    + +
    + +
    + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Rule NameFrom SheetFrom Columnvalidation TableCheck ColumnReplacement Column (Id)Use Column (Id)Error MessageAction
    + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + + +
    +
    +
    \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimporteditline/bulkimporteditline.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimporteditline/bulkimporteditline.component.scss new file mode 100644 index 0000000..c1113c0 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimporteditline/bulkimporteditline.component.scss @@ -0,0 +1,51 @@ +.clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.35rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; + } + input[type=text],textarea { + width: 100%; + padding: 15px 15px; + // margin: 8px 0; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; + } + .required-field{ + color: red; + + } + .postColumn{ + border: 1px solid #ccc; + width: 78%; + margin-left: 15px; + } + .colName{ + text-align: center; + padding: 5px; + } + .colfields{ + border: 1px solid black; + margin: 17px; + text-align: center; + padding: 3px; + } + .fieldWrapper{ + margin-top: 20px; + } + .center { + text-align: center; + } + + select{ + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; + } \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimporteditline/bulkimporteditline.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimporteditline/bulkimporteditline.component.spec.ts new file mode 100644 index 0000000..cd66c14 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimporteditline/bulkimporteditline.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BulkimporteditlineComponent } from './bulkimporteditline.component'; + +describe('BulkimporteditlineComponent', () => { + let component: BulkimporteditlineComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ BulkimporteditlineComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(BulkimporteditlineComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimporteditline/bulkimporteditline.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimporteditline/bulkimporteditline.component.ts new file mode 100644 index 0000000..bfee4cf --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimporteditline/bulkimporteditline.component.ts @@ -0,0 +1,172 @@ +import { Component, OnInit } from '@angular/core'; +import { FormGroup, FormBuilder, FormArray } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import { DataflowService } from 'src/app/services/fnd/dataflow.service'; +// import { NewwebhookService } from 'src/app/services/fnd/newwebhook.service'; +// import { SftplocationService } from 'src/app/services/fnd/sftplocation.service'; +// import { Webhookservicesui1Service } from 'src/app/services/fnd/webhookservicesui1.service'; + +@Component({ + selector: 'app-bulkimporteditline', + templateUrl: './bulkimporteditline.component.html', + styleUrls: ['./bulkimporteditline.component.scss'] +}) +export class BulkimporteditlineComponent implements OnInit { + serverData = []; + id; + title + sourceTable; + sourceFData; + Mid:any; + flowType; + remoteD; + sftpDId; + emailDId; + key; + webhookDId; + + name; + description; + // data = ['email', 'password'] + constructor( private router : Router, + private route: ActivatedRoute, + private dataservice:DataflowService, + // private sftpService:SftplocationService, + // private emaildbService:Webhookservicesui1Service, + // private webhookService:NewwebhookService, + private _fb:FormBuilder) { } + + public entryForm: FormGroup; + + ngOnInit(): void { + // this.entryForm = this._fb.group({ + // connector_json: this._fb.array([]) + // }); + + this.route.queryParams.subscribe(params => { + this.id = params['id']; + // this.Mid = params['mid']; + const data = params['data']; + this.name = params['entityname']; + this.description = params['description']; + if (data) { + // try { + // this.serverData = data.replace(/\[|\]|"/g, '').split(','); //(/\[|\]|'/g, '') //(/[\[\]"]/g, '') + // console.log('Received data:', this.serverData ); + // } catch (e) { console.error('Invalid JSON:', data);} + try { + this.serverData = JSON.parse(data); + console.log('Received data:', this.serverData ); + } catch (e) { console.error('Invalid JSON:', data);} + } + // this.serverData.map(d => + // this.person.push(this._fb.group({ andor: '', fields_name:'',condition:'',value: d ,})) + // ); + + }); + + const condition = this.dataservice.getCondition(); + if(condition === 'mapper'){ + console.log("mapper") + }else if(condition === 'filter'){ + console.log("filter"); + } + console.log(this.name,this.description); + + + + + } + + columnList(){ + + this.dataservice.getColumnListFromSourceTable(this.id,this.title).subscribe((data)=>{ + console.log(data); + this.sourceTable = data; + }); + } + + // sftpHeader(){ + // this.sftpService.getExcelHeaders(this.title,this.remoteD).subscribe((headers) => { + // console.log("sftp Data",headers); + // this.sourceTable = headers; + // }); + // } + + // emailHeader(){ + // this.emaildbService.getHeadersFromExcelMail(this.emailDId,this.title,this.key).subscribe((headers)=>{ + // console.log("email Data",headers); + // this.sourceTable = headers; + // }); + // } + + // webhookHeader(){ + // this.webhookService.getHeadersFromWBExcelMail(this.webhookDId,this.title,this.key).subscribe((headers)=>{ + // console.log("webhook Data",headers); + // this.sourceTable = headers; + // }); + // } + + + FilDemo(){ + let data = [""]; + const defaultObject = { + andor: "AND", + fields_name: "", + condition: "=", +} + const objectArray = data.map(value => ({ + ...defaultObject, + value: value, + })); + console.log(objectArray); + this.sourceFData = JSON.stringify(objectArray); + + try { + this.serverData = JSON.parse(this.sourceFData); + console.log('Received data:', this.serverData ); + } catch (e) { console.error('Invalid JSON:', this.sourceFData);} + + + + } + // get person() { + // return this.entryForm.get("connector_json") as FormArray; + // } + + onUpdate(){ + console.log(this.serverData); + let serverData = JSON.stringify(this.serverData); + console.log(serverData); + let product = JSON.stringify(serverData); + console.log(product); + console.log(this.Mid); + this.router.navigate(['../edit/'+ this.id],{relativeTo:this.route, queryParams: { data: product, name:this.name, description:this.description }, skipLocationChange: true}); + } + back(){ + this.router.navigate(['../edit/'+ this.id], { relativeTo: this.route }); + this.dataservice.setCondition(''); + } + + onAddLines(){ + this.serverData.push({ + rulename: "", + fromsheet:"", + fromColumn: "", + validationTable: "", + checkColumn: "", + replacementcolumn:"", + useColumn:"", + errormsg:"" + }); + } + deleteRow(index) { + this.serverData.splice(index, 1); + } + + // postApi(){ + // this.data.map(d => + // this.person.push(this._fb.group({ fieldname: d , checkboxval:'',sample_format:'',mapped_fields:'',dest_format:''})) + // ); + // } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportline/bulkimportline.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportline/bulkimportline.component.html new file mode 100644 index 0000000..5efccb0 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportline/bulkimportline.component.html @@ -0,0 +1,73 @@ +

    Add Rule Lines

    +
    +
    +
    + +
    + +
    + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Rule NameFrom SheetFrom Columnvalidation TableCheck ColumnReplacement Column (Id)Use Column (Id)Error MessageAction
    + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + + +
    +
    +
    \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportline/bulkimportline.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportline/bulkimportline.component.scss new file mode 100644 index 0000000..c1113c0 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportline/bulkimportline.component.scss @@ -0,0 +1,51 @@ +.clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.35rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; + } + input[type=text],textarea { + width: 100%; + padding: 15px 15px; + // margin: 8px 0; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; + } + .required-field{ + color: red; + + } + .postColumn{ + border: 1px solid #ccc; + width: 78%; + margin-left: 15px; + } + .colName{ + text-align: center; + padding: 5px; + } + .colfields{ + border: 1px solid black; + margin: 17px; + text-align: center; + padding: 3px; + } + .fieldWrapper{ + margin-top: 20px; + } + .center { + text-align: center; + } + + select{ + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; + } \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportline/bulkimportline.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportline/bulkimportline.component.spec.ts new file mode 100644 index 0000000..2e7b108 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportline/bulkimportline.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BulkimportlineComponent } from './bulkimportline.component'; + +describe('BulkimportlineComponent', () => { + let component: BulkimportlineComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ BulkimportlineComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(BulkimportlineComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportline/bulkimportline.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportline/bulkimportline.component.ts new file mode 100644 index 0000000..0bc92f2 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/bulkimport/bulkimportline/bulkimportline.component.ts @@ -0,0 +1,175 @@ +import { Component, OnInit } from '@angular/core'; +import { FormGroup, FormBuilder, FormArray } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import { DataflowService } from 'src/app/services/fnd/dataflow.service'; +// import { NewwebhookService } from 'src/app/services/fnd/newwebhook.service'; +// import { SftplocationService } from 'src/app/services/fnd/sftplocation.service'; +// import { Webhookservicesui1Service } from 'src/app/services/fnd/webhookservicesui1.service'; + +@Component({ + selector: 'app-bulkimportline', + templateUrl: './bulkimportline.component.html', + styleUrls: ['./bulkimportline.component.scss'] +}) +export class BulkimportlineComponent implements OnInit { + serverData = []; + andor = ['AND', 'OR','NOT']; + fieldname = ['name1', 'name2']; + condition = ['=','!=','<','>','<=','>=','LIKE','BETWEEN','IN']; + id; + title + sourceTable; + sourceFData; + Mid:any; + flowType; + remoteD; + sftpDId; + emailDId; + key; + webhookDId; + + name; + description; + // data = ['email', 'password'] + constructor( private router : Router, + private route: ActivatedRoute, + private dataservice:DataflowService, + // private sftpService:SftplocationService, + // private emaildbService:Webhookservicesui1Service, + // private webhookService:NewwebhookService, + private _fb:FormBuilder) { } + + public entryForm: FormGroup; + + ngOnInit(): void { + // this.entryForm = this._fb.group({ + // connector_json: this._fb.array([]) + // }); + + this.route.queryParams.subscribe(params => { + // this.id = params['id']; + // this.Mid = params['mid']; + const data = params['data']; + this.name = params['entityname']; + this.description = params['description']; + if (data) { + // try { + // this.serverData = data.replace(/\[|\]|"/g, '').split(','); //(/\[|\]|'/g, '') //(/[\[\]"]/g, '') + // console.log('Received data:', this.serverData ); + // } catch (e) { console.error('Invalid JSON:', data);} + try { + this.serverData = JSON.parse(data); + console.log('Received data:', this.serverData ); + } catch (e) { console.error('Invalid JSON:', data);} + } + // this.serverData.map(d => + // this.person.push(this._fb.group({ andor: '', fields_name:'',condition:'',value: d ,})) + // ); + + }); + + const condition = this.dataservice.getCondition(); + if(condition === 'mapper'){ + console.log("mapper") + }else if(condition === 'filter'){ + console.log("filter"); + } + console.log(this.name,this.description); + + + + + } + + columnList(){ + + this.dataservice.getColumnListFromSourceTable(this.id,this.title).subscribe((data)=>{ + console.log(data); + this.sourceTable = data; + }); + } + + // sftpHeader(){ + // this.sftpService.getExcelHeaders(this.title,this.remoteD).subscribe((headers) => { + // console.log("sftp Data",headers); + // this.sourceTable = headers; + // }); + // } + + // emailHeader(){ + // this.emaildbService.getHeadersFromExcelMail(this.emailDId,this.title,this.key).subscribe((headers)=>{ + // console.log("email Data",headers); + // this.sourceTable = headers; + // }); + // } + + // webhookHeader(){ + // this.webhookService.getHeadersFromWBExcelMail(this.webhookDId,this.title,this.key).subscribe((headers)=>{ + // console.log("webhook Data",headers); + // this.sourceTable = headers; + // }); + // } + + + FilDemo(){ + let data = [""]; + const defaultObject = { + andor: "AND", + fields_name: "", + condition: "=", +} + const objectArray = data.map(value => ({ + ...defaultObject, + value: value, + })); + console.log(objectArray); + this.sourceFData = JSON.stringify(objectArray); + + try { + this.serverData = JSON.parse(this.sourceFData); + console.log('Received data:', this.serverData ); + } catch (e) { console.error('Invalid JSON:', this.sourceFData);} + + + + } + // get person() { + // return this.entryForm.get("connector_json") as FormArray; + // } + + onUpdate(){ + console.log(this.serverData); + let serverData = JSON.stringify(this.serverData); + console.log(serverData); + let product = JSON.stringify(serverData); + console.log(product); + console.log(this.Mid); + this.router.navigate(['../add'],{relativeTo:this.route, queryParams: { data: product, name:this.name, description:this.description }, skipLocationChange: true}); + } + back(){ + this.router.navigate(["../add"], { relativeTo: this.route }); + this.dataservice.setCondition(''); + } + + onAddLines(){ + this.serverData.push({ + rulename: "", + fromsheet:"", + fromColumn: "", + validationTable: "", + checkColumn: "", + replacementcolumn:"", + useColumn:"", + errormsg:"" + }); + } + deleteRow(index) { + this.serverData.splice(index, 1); + } + + // postApi(){ + // this.data.map(d => + // this.person.push(this._fb.group({ fieldname: d , checkboxval:'',sample_format:'',mapped_fields:'',dest_format:''})) + // ); + // } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/datamanagement/datamanagement.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/datamanagement/datamanagement.component.html new file mode 100644 index 0000000..b45ed70 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/datamanagement/datamanagement.component.html @@ -0,0 +1,176 @@ + + +
    +
    +
    +

    Data Management

    +
    +
    + + + + +
    +
    + + Loading ... +
    {{error}}
    +
    + + + Go To + + + + + Entity Name + + + + File Name + + + Action + + + Workflow + {{user.entity_name}} + {{user.file_name}} + + + + Delete + + + + + + + + + + + + Users per page + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} + of {{pagination.totalItems}} users + + +
    +
    + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/datamanagement/datamanagement.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/datamanagement/datamanagement.component.scss new file mode 100644 index 0000000..c6c7e70 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/datamanagement/datamanagement.component.scss @@ -0,0 +1,84 @@ +//@import "../../../../assets/scss/var"; +.s-info-bar { + display: flex; + flex-direction: row; + justify-content: space-between; + button { + outline: none; + } +} + +.entry-pg { + width: 750px; +} + +.button1::after { + content: none; +} +.button1:hover::after { + content: "ADD ROWS"; +} + +$bg-color: #dddddd; + +.section { + background-color: $bg-color; + height: 40px; +} + +.section p { + //color: white; + font-weight: bold; + padding: 10px; + font-size: 18px; +} + +.clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; +} + +.clr-file { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + //padding: 0.6rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; +} + +.center { + text-align: center; +} +input[type=text],[type=date],[type=number],textarea { + width: 100%; + padding: 15px 15px; + margin-top: 3px; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} + +.required-field{ + color: red; + +} +select{ + width: 100%; + margin-top: 3px; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; +} +.delete,.heading{ + text-align: center; + color: red; +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/datamanagement/datamanagement.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/datamanagement/datamanagement.component.spec.ts new file mode 100644 index 0000000..19d47ed --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/datamanagement/datamanagement.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DatamanagementComponent } from './datamanagement.component'; + +describe('DatamanagementComponent', () => { + let component: DatamanagementComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ DatamanagementComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(DatamanagementComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/datamanagement/datamanagement.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/datamanagement/datamanagement.component.ts new file mode 100644 index 0000000..802a5e6 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/datamanagement/datamanagement.component.ts @@ -0,0 +1,188 @@ +import { HttpErrorResponse, HttpHeaderResponse } from '@angular/common/http'; +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import * as moment from 'moment'; +import { ToastrService } from 'ngx-toastr'; +import { DatamanagementService } from 'src/app/services/fnd/datamanagement.service'; +import { UsermaintanceService } from 'src/app/services/admin/usermaintance.service'; +import { ExcelService } from 'src/app/services/excel.service'; +import { BulkimportService } from 'src/app/services/fnd/bulkimport.service'; +@Component({ + selector: 'app-datamanagement', + templateUrl: './datamanagement.component.html', + styleUrls: ['./datamanagement.component.scss'] +}) +export class DatamanagementComponent implements OnInit { + rowSelected: any = {}; + modaldelete = false; + modalEdit = false; + modalAdd = false; + public entryForm: FormGroup; + selected: any[] = []; + error; + loading = false; + data; + udata; + selectedFile: File[] = []; + entitydata; + // tableList =['priority','impact','urgency','category','state','contact_type','customer','handler']; + tableList; + constructor(private excel: ExcelService, private datamservice: DatamanagementService, private toastr: ToastrService, + private _fb: FormBuilder, private userservice: UsermaintanceService, private router: Router, private bulkimportService: BulkimportService, + private route: ActivatedRoute,) { } + + ngOnInit(): void { + this.getall(); + // this.getuserall(); + this.allentity(); + this.entitygetall(); + this.entryForm = this._fb.group({ + user_id: [null], + file_name: [null], + entityName: [null], + // entity_name:[null], + file_type: [null], + + }); + // this.datamservice.getjson().subscribe((data)=>{ + // console.log(data); + // }) + } + getall() { + this.datamservice.getall().subscribe((data) => { + console.log('data managemnt ', data); + this.data = data; + if (this.data.length == 0) { + this.error = "No data Available"; + console.log(this.error); + } + + }, (error) => { + console.log(error); + if (error) { + this.error = "No data Available OR server Error"; + } + }); + } + + entitygetall() { + this.bulkimportService.getDetails().subscribe((data) => { + console.log(data); + this.tableList = data; + }, (error) => { + console.log(error); + }); + } + + + getuserall() { + this.userservice.getAll().subscribe((data) => { + console.log(data); + this.udata = data; + }) + } + allentity() { + // this.datamservice.getallentity().subscribe((data)=>{ + // console.log(data); + // this.entitydata=data; + // }, (error: HttpHeaderResponse)=>{ + // console.log(error); + // }) + } + onExport() { + this.excel.exportAsExcelFile(this.data, 'user_', + moment().format('YYYYMMDD_HHmmss')) + } + public onFileChanged(event) { + //Select File + console.log(event); + this.selectedFile = event.target.files[0]; + + } + goToAdd() { + this.modalAdd = true; + } + onSubmit() { + console.log(this.entryForm.value); + this.datamservice.create(this.selectedFile, this.entryForm.value.entityName).subscribe((data) => { + console.log(data); + if (data.status === 202) { + this.toastr.success("Added Succesfully"); + } + setTimeout(() => { + this.getall(); + }, 1000); + this.getall(); + }, (error: HttpErrorResponse) => { + console.log(error); + if (error.status >= 200 && error.status <= 299) { + this.toastr.success("Added Succesfully"); + setTimeout(() => { + this.getall(); + }, 1000); + } + if (error.status === 404) { + this.toastr.error("Not Added"); + } + this.ngOnInit(); + }); + this.modalAdd = false; + } + onEdit(row) { + this.rowSelected = row; + this.modalEdit = true; + } + + onDelete(row) { + this.rowSelected = row; + this.modaldelete = true; + } + + delete(id) { + this.modaldelete = false; + console.log("in delete " + id); + this.datamservice.delete(id).subscribe( + (data) => { + console.log(data); + + this.ngOnInit(); + + if (data.status >= 200 && data.status <= 299 || data == null) { + this.toastr.success("Delete Succesfully"); + } + }, (error: HttpHeaderResponse) => { + console.log(error); + if (error.status >= 200 && error.status <= 299) { + this.toastr.success("Delete Succesfully"); + } + if (error.status >= 400 && error.status <= 499) { + this.toastr.error("Not Delete"); + } + if (error.status >= 500 && error.status <= 599) { + this.toastr.error("Server Error"); + } + }); + this.ngOnInit(); + } + onUpdate(id) { + this.modalEdit = false; + this.datamservice.update(id, this.rowSelected, this.selectedFile).subscribe( + (data) => { + console.log(data); + if (data.status === 202) { + this.toastr.success("Updated Succesfully"); + } + + }, + (error: HttpErrorResponse) => { + console.log(error.message); + } + ); + this.ngOnInit(); + } + work(id: any) { + console.log(id); + this.router.navigate(["../dataworkflow/" + id], { relativeTo: this.route }); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/datamananementworkflow/datamananementworkflow.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/datamananementworkflow/datamananementworkflow.component.html new file mode 100644 index 0000000..1268fb9 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/datamananementworkflow/datamananementworkflow.component.html @@ -0,0 +1,497 @@ + + + + + + +
    + + + + + + + +
    + +
    +
    +
    +
    +
    +
    +

    Data Import

    +
    +
    + +
    +
    + +
    + + + + Step 0 + Review + + + + Step 1 + Table Mapping + + + + Step 2 + Data Mapping + + + + Step 3 + Import + + + + Step 4 + Download Excel + + + + Step 5 + Finish + + + +
    +
    +
    +
    +
    + + +
    +
    +

    {{tableName}} Table

    +

    Update {{college.studentname}}

    +
    + +
    + + +
    +
    + + + +
    +

    {{ sheetName }}

    +
    + + + + + + + + + + + +
    {{ co }}
    {{ item[key] }}
    +
    +
    +
    +
    + + + + + +
    + +
    +
    +
    +
    + +
    + +
    +
    + +
    +
    +

    Table Mapping

    + +
    + +
    +
    +
    + + + + + + + + + + + + + +
    Sheet NameTable Name
    + + + + +
    +
    +
    + + + + + + + +
    +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + + +
    +
    +

    Data Mapping

    + +
    + +
    +
    +
    +
    + Enable TransFormation + + +
    +
    + + +
    +
    + +
    +
    +
    Add Rule line
    + + +
    +
    + + +
    +
    +
    + + + + + + + +
    +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + + +
    +
    +

    Importing Data

    + +
    +
    +
    +
    + + +
    +

    {{ sheetName }}

    +
    + + + + + + + + + + + +
    {{ co }}
    {{ item[key] }}
    +
    +
    +
    + + + + + + +
    +
    +
    +
    +
    + + +
    +
    +

    Download Excel

    +
    +
    +
    + + + + +
    +
    +
    + +
    +
    +

    File is Downloaded

    +
    + + + +
    +
    +
    + + +
    + + + + + + + + + + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/datamananementworkflow/datamananementworkflow.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/datamananementworkflow/datamananementworkflow.component.scss new file mode 100644 index 0000000..a96c883 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/datamananementworkflow/datamananementworkflow.component.scss @@ -0,0 +1,110 @@ +.horizontal{ + width: 25%; + padding: 5px; +} +.horizontal1{ + width: 50%; + padding: 10px; +} +.middle{ + width: 33%; + padding: 10px; +} +.middle1{ + width: 75%; + padding: 10px; +} + +.full{ + width: 100%; + padding: 10px; +} + +// input[type=text],[type=date] { +// width: 100%; +// padding: 12px 20px; +// margin: 8px 0; +// display: inline-block; +// border: 1px solid #ccc; +// border-radius: 4px; +// box-sizing: border-box; +// } +// textarea +// { +// width: 100%; +// padding: 15px 15px; +// display: inline-block; +// border: 1px solid #ccc; +// border-radius: 4px; +// box-sizing: border-box; +// } + +.center{ + color: blue; +} +@media (max-width: 600px){ +.horizontal,.middle,.horizontal1,.middle1 { +width: 100%; +}} + + + .postColumn{ + border: 1px solid #ccc; + width: 78%; + margin-left: 15px; + } + .colName{ + text-align: center; + padding: 5px; + } + .fieldWrapper{ + margin-top: 20px; + } + + + .clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.35rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; + } + input[type=text],textarea { + width: 100%; + padding: 15px 15px; + // margin: 8px 0; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; + } + .required-field{ + color: red; + + } + .postColumn{ + border: 1px solid #ccc; + width: 78%; + margin-left: 15px; + } + .colName{ + text-align: center; + padding: 5px; + } + .colfields{ + border: 1px solid black; + margin: 17px; + text-align: center; + padding: 3px; + } + + select{ + width: 100%; + margin-top: 3px; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; + } \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/datamananementworkflow/datamananementworkflow.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/datamananementworkflow/datamananementworkflow.component.spec.ts new file mode 100644 index 0000000..5e4af86 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/datamananementworkflow/datamananementworkflow.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DatamananementworkflowComponent } from './datamananementworkflow.component'; + +describe('DatamananementworkflowComponent', () => { + let component: DatamananementworkflowComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ DatamananementworkflowComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(DatamananementworkflowComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/datamananementworkflow/datamananementworkflow.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/datamananementworkflow/datamananementworkflow.component.ts new file mode 100644 index 0000000..d1777ac --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/datamananementworkflow/datamananementworkflow.component.ts @@ -0,0 +1,555 @@ +import { HttpErrorResponse } from '@angular/common/http'; +import { Component, OnInit } from '@angular/core'; +import { ActivatedRoute, Router } from '@angular/router'; +import { ToastrService } from 'ngx-toastr'; +import { DatamanagementService } from 'src/app/services/fnd/datamanagement.service'; +import { ExcelService } from 'src/app/services/excel.service'; +import { BulkimportService } from 'src/app/services/fnd/bulkimport.service'; + +@Component({ + selector: 'app-datamananementworkflow', + templateUrl: './datamananementworkflow.component.html', + styleUrls: ['./datamananementworkflow.component.scss'] +}) +export class DatamananementworkflowComponent implements OnInit { + data; + getbyiddata; + id; + columns: any[]; + rows: any[]; + bodyrow: any[] = []; + getHeaderData; + JsonHeader = []; + rowdata; + transform: boolean = false; + checkTransform: boolean = true; + mapperText: string = ''; + changeKeyJson: any[]; + tableName; + + + + // Layout direction changing + + layout = { + direction: "horizontal", + block1: "clr-col-lg-12 clr-col-12 height container", + block2: "clr-col-lg-12 clr-col-12 container", + } + timelineStyle = { + step0: { state: "current", open: true, failed: false }, + step1: { state: "not-started", open: false, failed: false }, + step2: { state: "not-started", open: false, failed: false }, + step3: { state: "not-started", open: false, failed: false }, + step4: { state: "not-started", open: false, failed: false }, + step5: { state: "not-started", open: false, failed: false }, + }; + + json: string = ""; + luisApp = + { + name: '', + created: 1, + trained: 1, + tested: 1, + updated: 1, + published: 1, + + }; + constructor(private excel: ExcelService, private datamservice: DatamanagementService, private toastr: ToastrService, private router: Router, + private route: ActivatedRoute, public bulkUpload: BulkimportService) { } + + ngOnInit(): void { + this.id = this.route.snapshot.params["id"]; + console.log("update with id = ", this.id); + this.getall(); + this.getSheetName(this.id); + this.getById(this.id); + + this.getTableData(this.id); + // this.getColumns(this.tableName); + // this.getHeadersById(this.id); + + } + + getall() { + this.datamservice.getall().subscribe((data) => { + console.log(data); + this.data = data; + }) + } + + + getById(id) { + this.datamservice.getTemplateById(id).subscribe((data) => { + console.log(data); + this.getbyiddata = data; + this.tableName = data.entityName; + }); + } + headerData; + getColumns(table) { + console.log(table); + // console.log(this.getbyiddata.entityName); + this.bulkUpload.getColumnNames(table).subscribe((data) => { + console.log(data); + this.headerData = data; + }); + } + getHeadersById(id) { + console.log(this.columnJson); + this.bulkUpload.getHeader(id).subscribe((data) => { + console.log(data); + this.getHeaderData = JSON.stringify(data); + + // const objectArray = data.map(key => ({ + // headerName: key, + // value: "", + // })); + // // console.log(objectArray); + // this.getHeaderData = JSON.stringify(objectArray); + // console.log(this.getHeaderData); + + // const json = `{"Customer":[{"headerName":"balance","value":""},{"headerName":"c_status","value":""},{"headerName":"city","value":""},{"headerName":"country","value":""},{"headerName":"currency_code","value":""},{"headerName":"customer_id","value":""},{"headerName":"date_of_birth","value":""},{"headerName":"defaultsite_id","value":""}], + // "Site":[{"headerName":"balance","value":""},{"headerName":"city","value":""},{"headerName":"country","value":""},{"headerName":"credit_profile","value":""},{"headerName":"currency_code","value":""},{"headerName":"date_of_birth","value":""},{"headerName":"default_order_type","value":""},{"headerName":"dsa","value":""}]}` + // this.getHeaderData = json; + + }, (error) => { + console.log(error); + }); + + } + + selectedSheetName: string | null = null; + getHeaderbybutton(id, sheetName) { + // this.bulkUpload.getHeader(id,sheetName).subscribe((data) => { + // console.log(data); + // this.getHeaderData = data; + + // const objectArray = data.map(key => ({ + // headerName: key, + // value: "", + // })); + // // console.log(objectArray); + // this.getHeaderData = JSON.stringify(objectArray); + // console.log(this.getHeaderData); + + + + // },(error) => { + // console.log(error); + // }); + this.selectedSheetName = sheetName; + const columnEntry = this.columnJson.find(entry => entry.sheetName === sheetName); + if (columnEntry) { + const tablename = columnEntry.TableName; + this.getColumns(tablename); + } + } + + + checkData() { + console.log(this.JsonHeader); + console.log(this.mapperText); + } + + getkeychangesJson() { + + const jsonString = JSON.stringify(this.rows); + console.log("body", jsonString); + // const datajson = JSON.parse(this.datajson); + // this.datajson = [datajson]; + // console.log(this.datajson); + + this.bulkUpload.changeKeysOfJson(this.datajson, jsonString).subscribe((data) => { + console.log(data); + this.changeKeyJson = data.body; + }, (error: HttpErrorResponse) => { + console.log(error.error); + }); + } + // getHeaderskeychange() { + // let headers: string[] = []; + // if(this.changeKeyJson) { + // this.changeKeyJson.forEach((value) => { + // Object.keys(value).forEach((key) => { + // if(!headers.find((header) => header == key)){ + // headers.push(key) + // } + + // }) + + // }) + // } + // return headers; + // } + getHeaderskeychange(sheetName: string) { + if (this.changeKeyJson && this.changeKeyJson.length > 0 && this.changeKeyJson[0][sheetName]) { + // Assuming the first item in the array contains the keys. + return Object.keys(this.changeKeyJson[0][sheetName][0]); + } + return []; + } + + getkeychangeData(sheetName: string) { + if (this.changeKeyJson && this.changeKeyJson.length > 0 && this.changeKeyJson[0][sheetName]) { + // Returning the array of data. + return this.changeKeyJson[0][sheetName]; + } + return []; + } + // Change to Horizontal Layout + changeToHorizonTal() { + this.layout = { + direction: "horizontal", + block1: "clr-col-lg-12 clr-col-12 height container", + block2: "clr-col-lg-12 clr-col-12 container", + } + } + // Change to Vertical Layout + changeToVertical() { + this.layout = { + direction: "vertical", + block1: "clr-col-lg-3 clr-col-12 ", + block2: "clr-col-lg-9 clr-col-12 ", + } + } + reset() { + this.json = ""; + this.luisApp = + { + name: '', + trained: 1, + tested: 1, + updated: 1, + published: 1, + + + created: 1, + + }; + + this.timelineStyle = { + step0: { state: "current", open: true, failed: false }, + step1: { state: "not-started", open: false, failed: false }, + step2: { state: "not-started", open: false, failed: false }, + step3: { state: "not-started", open: false, failed: false }, + step4: { state: "not-started", open: false, failed: false }, + step5: { state: "not-started", open: false, failed: false }, + }; + } + + + //dynamic table + sheetNames: any; + getSheetName(id) { + this.bulkUpload.getSheetName(id).subscribe(data => { + console.log(data); + this.sheetNames = data; + }); + } + + getTableData(id) { + // console.log(this.getbyiddata.file_name); + this.bulkUpload.convertFileToJson(id).subscribe((data) => { + this.rows = data; + // this.bodyrow = data; + console.log(this.rows); + this.rowdata = [this.rows]; + this.rows = [this.rows] + console.log(typeof this.rows); + if (data) { + // this.toastr.success("Run Successfully") + } + var j; + var cart = []; + + for (var i = 0; i < data.length; i++) { + var columnsIn = data[i]; + if (i == 1) { + for (var key in columnsIn) { + j = { prop: key, name: key }; + cart.push(j) + + } + } + } + this.columns = cart; + + }); + } + // sheetNames = ['Customer', 'Site']; + getHeaders(sheetName: string) { + if (this.rows && this.rows.length > 0 && this.rows[0][sheetName]) { + // Assuming the first item in the array contains the keys. + return Object.keys(this.rows[0][sheetName][0]); + } + return []; + } + + getData(sheetName: string) { + if (this.rows && this.rows.length > 0 && this.rows[0][sheetName]) { + // Returning the array of data. + return this.rows[0][sheetName]; + } + return []; + } + + // getHeaders() { + // let headers: string[] = []; + // this.rows= [] + // if(this.rows) { + // this.rows.forEach((value) => { + // Object.keys(value).forEach((key) => { + // if(!headers.find((header) => header == key)){ + // headers.push(key) + // } + + // }) + + // }) + // } + // return headers; + // } + + //data mapping + checkTrans() { + + console.log("transform open") + // console.log(this.storeData); + if (this.getHeaderData) { + this.checkTransform = false; + this.transform = true; + console.log(this.getHeaderData); + if (this.mapperText === "undefined") { this.mapperText = ''; } + const currentText = this.mapperText; + let trnsfData = currentText + '' + this.getHeaderData; + this.mapperText = trnsfData; + } else { + this.checkTransform = true; + this.transform = false; + } + + } + mappperModal = false; + goFromMapper() { + this.mappperModal = true; + this.selectedSheetName = this.sheetNames[0]; + const tablename = this.columnJson[0].TableName; + this.getColumns(tablename) + if (this.mapperText) { + try { + this.JsonHeader = JSON.parse(this.mapperText); + console.log('Received data:', this.JsonHeader); + } catch (e) { console.error('Invalid JSON:', this.mapperText); } + } else + if (this.getHeaderData) { + // try { + // this.serverData = data.replace(/\[|\]|"/g, '').split(','); //(/\[|\]|'/g, '') //(/[\[\]"]/g, '') + // console.log('Received data:', this.serverData ); + // } catch (e) { console.error('Invalid JSON:', data);} + try { + this.JsonHeader = JSON.parse(this.getHeaderData); + console.log('Received data:', this.JsonHeader); + } catch (e) { console.error('Invalid JSON:', this.getHeaderData); } + + } + //this.mappperclick = true; + // this.router.navigate(["../../mapperTable/"], { relativeTo: this.route, queryParams: { id: this.updateId, data: this.nodeEditProperties.mappers, title:this.nodeEditProperties.title }, skipLocationChange: true}); + // console.log("gofrommapper",this.updateId,this.nodeEditProperties.mappers) + // if(this.mappperclick = true && this.datajson!= null){ + // this.nodeEditProperties.mappers = this.datajson; + // } + } + + transReset() { + this.mapperText = ''; + this.transform = false; + this.checkTransform = true; + } + + Rule: boolean = false; + checkRule: boolean = true; + RuleData: string = ''; + ruleModal = false; + RuleHeader = []; + + checkRules() { + console.log("rule line open") + this.ruleModal = true; + + + } + + rulechecking() { + if (this.RuleData) { + console.log(this.RuleData); + this.checkRule = false; + this.Rule = true; + } else { + this.Rule = false; + this.checkRule = true; + } + } + + mappperclick = false; + goFromRule() { + this.ruleModal = true; + if (this.RuleData) { + try { + this.RuleHeader = JSON.parse(this.RuleData); + console.log('Received data:', this.RuleHeader); + } catch (e) { console.error('Invalid JSON:', this.RuleData); } + } + console.log(this.RuleHeader); + } + + resetRule() { + this.RuleData = undefined; + this.RuleHeader = []; + this.Rule = false; + this.checkRule = true; + } + + onAddLines() { + this.RuleHeader.push({ + rulename: "", + fromsheet: "", + fromColumn: "", + validationTable: "", + checkColumn: "", + useColumn: "", + replacementTable: "", + replacementcolumn: "", + errormsg: "" + }); + } + deleteRow(index) { + this.RuleHeader.splice(index, 1); + } + + onRuleUpdate() { + this.ruleModal = false; + console.log("rule", this.RuleHeader); + let serverData = JSON.stringify(this.RuleHeader); + // console.log(serverData); + let product = JSON.stringify(serverData); + // console.log(product); + + try { + this.RuleData = JSON.parse(product); + console.log('Received rulejson data:', this.RuleData); + } catch (e) { console.error('Invalid JSON:', product); } + this.rulechecking() + } + + + datajson; + keychangeTable = false; + onUpdate() { + this.mappperModal = false; + console.log(this.JsonHeader); + let serverData = JSON.stringify(this.JsonHeader); + // console.log(serverData); + let product = JSON.stringify(serverData); + // console.log(product); + + try { + this.datajson = JSON.parse(product); + console.log('Received Newjson data:', this.datajson); + } catch (e) { console.error('Invalid JSON:', product); } + + this.mapperText = this.datajson; + + // const output = this.datajson.reduce((result, item) => { + // result[item.headerName] = item.value; + // return result; + // }, {}); + + // console.log(output); + + this.getkeychangesJson(); + this.keychangeTable = true; + } + + //download excel file + + selectedTable; + selectTable(val) { + this.selectedTable = val; + // this.downloadExcel(val); + } + + downloadExcel(id) { + console.log(this.changeKeyJson); + const jsonDataWithoutBrackets = this.changeKeyJson[0]; + console.log(jsonDataWithoutBrackets); + console.log(this.RuleHeader); + this.bulkUpload.downloadExcel(id, jsonDataWithoutBrackets, this.RuleHeader).subscribe( + (response: Blob) => { + // Process the downloaded Excel file + console.log(response); + // const file = new Blob([response], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }); + // const fileUrl = URL.createObjectURL(file); + // const link = document.createElement('a'); + // link.href = fileUrl; + // link.download = 'data.xlsx'; // Set the desired file name + // link.click(); + + // this.timelineStyle = { + // step0: { state: "success", open: false, failed: false }, + // step1: { state: "success", open: false, failed: false }, + // step2: { state: "success", open: false, failed: false }, + // step3: { state: "success", open: false, failed: false }, + // step4: { state: "current", open: true, failed: false }, + // }; + }, + (error) => { + // Handle error + console.log(error); + // this.timelineStyle = { + // step0: { state: "success", open: false, failed: false }, + // step1: { state: "success", open: false, failed: false }, + // step2: { state: "success", open: false, failed: false }, + // step3: { state: "current", open: true, failed: false }, + // step4: { state: "not-started", open: false, failed: false }, + // step5: { state: "not-started", open: false, failed: false }, + // }; + + } + ); + } + + getSheet(id) { + this.bulkUpload.getSheet(id).subscribe( + (response: Blob) => { + // Process the downloaded Excel file + console.log(response); + const file = new Blob([response], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }); + const fileUrl = URL.createObjectURL(file); + const link = document.createElement('a'); + link.href = fileUrl; + link.download = 'data.xlsx'; // Set the desired file name + link.click(); + + }); + } + + back() { + this.router.navigate(["../../datamanagement"], { relativeTo: this.route }); + } + + ////step 1 - mapping name + columnJson = [] + getColumnforstep1() { + + const objectArray = this.sheetNames.map(key => ({ + sheetName: key, + TableName: "", + })); + // console.log(objectArray); + this.columnJson = objectArray; + + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingrule.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingrule.component.html new file mode 100644 index 0000000..90c6b64 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingrule.component.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingrule.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingrule.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingrule.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingrule.component.spec.ts new file mode 100644 index 0000000..d63f2fa --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingrule.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MappingruleComponent } from './mappingrule.component'; + +describe('MappingruleComponent', () => { + let component: MappingruleComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ MappingruleComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(MappingruleComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingrule.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingrule.component.ts new file mode 100644 index 0000000..f384d1f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingrule.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-mappingrule', + templateUrl: './mappingrule.component.html', + styleUrls: ['./mappingrule.component.scss'] +}) +export class MappingruleComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleadd/mappingruleadd.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleadd/mappingruleadd.component.html new file mode 100644 index 0000000..753e663 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleadd/mappingruleadd.component.html @@ -0,0 +1,149 @@ +

    Mapping Rule

    +Add Mode
    +Mapping Rules are proccessed while importing bulk records for respective entity +
    + + + + + + + + +
    + + + + + +
    +
    +
    + + + +
    +
    + + +
    +
    +
    + +
    +
    + + +
    + +
    + + + +
    +
    + + +
    +
    Mapping Fields
    + +
    +
    +
    + + +
    +
    +
    + + + + + + + + + + + + + +
    Header FieldsValue
    + + + +
    +
    + + +
    + +
    +
    +
    + + +
    +
    + +
    +
    +
    + + + + + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleadd/mappingruleadd.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleadd/mappingruleadd.component.scss new file mode 100644 index 0000000..b05187f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleadd/mappingruleadd.component.scss @@ -0,0 +1,81 @@ +//@import "../../../../assets/scss/var"; +.s-info-bar { + display: flex; + flex-direction: row; + justify-content: space-between; + button { + outline: none; + } + } + + .entry-pg { + width: 750px; + } + + .button1::after { + content: none; + } + .button1:hover::after { + content: "ADD ROWS"; + } + + $bg-color: #dddddd; + + .section { + background-color: $bg-color; + height: 40px; + } + + .section p { + //color: white; + font-weight: bold; + padding: 10px; + font-size: 18px; + } + + .clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; + } + + .clr-file { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + //padding: 0.6rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; + } + + .center { + text-align: center; + } + input[type=text],[type=date],[type=number],textarea { + width: 100%; + padding: 15px 15px; + margin-top: 3px; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; + } + + .required-field{ + color: red; + + } + select{ + width: 100%; + margin-top: 3px; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; + } + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleadd/mappingruleadd.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleadd/mappingruleadd.component.spec.ts new file mode 100644 index 0000000..8d28df0 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleadd/mappingruleadd.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MappingruleaddComponent } from './mappingruleadd.component'; + +describe('MappingruleaddComponent', () => { + let component: MappingruleaddComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ MappingruleaddComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(MappingruleaddComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleadd/mappingruleadd.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleadd/mappingruleadd.component.ts new file mode 100644 index 0000000..cca1959 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleadd/mappingruleadd.component.ts @@ -0,0 +1,249 @@ +import { HttpErrorResponse, HttpHeaderResponse } from '@angular/common/http'; +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import { ToastrService } from 'ngx-toastr'; +import { BulkimportService } from 'src/app/services/fnd/bulkimport.service'; + +@Component({ + selector: 'app-mappingruleadd', + templateUrl: './mappingruleadd.component.html', + styleUrls: ['./mappingruleadd.component.scss'] +}) +export class MappingruleaddComponent implements OnInit { + public entryForm: FormGroup; + selectedFile: File[]=[]; + + datajson; + transform:boolean = false; + checkTransform:boolean = true; + mapperdata; + + entityname; + description; + constructor(private _fb: FormBuilder, private router: Router,private toastr: ToastrService, + private route: ActivatedRoute,private dataservice:BulkimportService) { } + + ngOnInit(): void { + this.entryForm = this._fb.group({ + entity_name:[null], + mapping_rule:[null], + description: [null], + active: [true], + fileType: [null], + }); + + this.route.queryParams.subscribe(params => { + const data = params['data']; + this.entityname = params['name']; + this.description = params['description']; + + + if (data) { + try { + this.datajson = JSON.parse(data); + console.log('Received data:', this.datajson); + } catch (e) { console.error('Invalid JSON:', data);} + } + + + }); + + const condition = this.dataservice.getCondition(); + if(condition === 'mapper'){ + this.transform = true; + this.checkTransform = false; + if(this.datajson!== undefined){ + // if(this.entryForm.value.rule_line == 'undefined'){ this.entryForm.value.rule_line= '';} + const currentText = this.entryForm.value.rule_line = ''; + this.mapperdata = currentText + this.datajson; + // this.entryForm.value.rule_line = this.mapperdata; + // this.Updating(); + this.dataservice.setCondition(''); + } + } + + + console.log(this.entryForm.value); + + this.entryForm.patchValue({ + entity_name: this.entityname, + description: this.description, + }); + + console.log(this.entryForm.value); + } + + serverData = [ + { + }]; + onAddLines(){ + this.serverData.push({ + rulename: "", + fromsheet:"", + fromColumn: "", + validationTable: "", + checkColumn: "", + replacementcolumn:"", + useColumn:"", + errormsg:"" + }); + console.log(this.serverData); + } + deleteRow(index) { + this.serverData.splice(index, 1); + } + + toastrShown: boolean = false; + onSubmit(){ + this.entryForm.value.mapping_rule = JSON.stringify(this.serverData); + console.log(this.entryForm.value); + this.dataservice.saveMappingData(this.entryForm.value).subscribe((data)=>{ + console.log(data); + if (data) { + if (!this.toastrShown) { + this.toastrShown = true; // Set the flag to indicate that the toastr message has been shown + this.toastr.success("Added Successfully"); + setTimeout(() => { + this.router.navigate(["../all"], { relativeTo: this.route }); + }, 500); + } + } + }, (error: HttpHeaderResponse)=>{ + console.log(error); + if(error.status===202){ + this.toastr.success("Added Succesfully"); + } + if(error.status===404){ + this.toastr.error("Not Added"); + } + if(error.status===400){ + this.toastr.error("Not Added"); + } + }); + setTimeout(() => { + this.router.navigate(["../all"], { relativeTo: this.route }); + },500); + } + goback(){ + this.router.navigate(["../all"], { relativeTo: this.route }); + } + + + + headerData; + getColumns(table){ + console.log(table); + // console.log(this.getbyiddata.entityName); + this.dataservice.getColumnNames(table).subscribe((data) => { + console.log(data); + this.headerData = data; + }); +} + + checkTransformMapper = true; + transformMapper = false; + mapperText; + getHeaderData; + JsonHeader = []; + selectedSheetName: string | null = null; + columnJson =[]; + sheetNames:any; + checkTransMapper(){ + + console.log("Mapper open") + // console.log(this.storeData); + if(this.getHeaderData){ + this.checkTransformMapper = false; + this.transformMapper = true; + console.log(this.getHeaderData); + if(this.mapperText === "undefined"){ this.mapperText= '';} + const currentText = this.mapperText; + let trnsfData = currentText + '' +this.getHeaderData; + this.mapperText = trnsfData; + }else { + this.checkTransformMapper = true; + this.transformMapper = false; + } + + } + mappperModal = false; + goFromMapperField(){ + this.mappperModal = true; + this.selectedSheetName = this.sheetNames[0]; + const tablename = this.columnJson[0].TableName; + this.getColumns(tablename) + if(this.mapperText){ + try { + this.JsonHeader = JSON.parse(this.mapperText); + console.log('Received data:', this.JsonHeader ); + } catch (e) { console.error('Invalid JSON:', this.mapperText);} + }else + if (this.getHeaderData) { + // try { + // this.serverData = data.replace(/\[|\]|"/g, '').split(','); //(/\[|\]|'/g, '') //(/[\[\]"]/g, '') + // console.log('Received data:', this.serverData ); + // } catch (e) { console.error('Invalid JSON:', data);} + try { + this.JsonHeader = JSON.parse(this.getHeaderData); + console.log('Received data:', this.JsonHeader ); + } catch (e) { console.error('Invalid JSON:', this.getHeaderData);} + + } + } + + transResetMapper(){ + this.mapperText = ''; + this.transformMapper = false; + this.checkTransformMapper = true; + } + + onUpdate(){ + this.mappperModal = false; + } + + + getHeaderFieldData(){ + if(this.entryForm.value.entity_name){ + this.dataservice.getColumnNames(this.entryForm.value.entity_name).subscribe(data =>{ + console.log(data); + const objectArray = data.map(fieldname => ({ + headerName: fieldname, + value: "", + })); + // console.log(objectArray); + const headerdata= JSON.stringify(objectArray); + this.serverData = JSON.parse(headerdata); + }) + }else{ + this.toastr.warning("Entity Name is Required") + } + } + + chooseFile(event){ + console.log(event); + this.selectedFile = event.target.files[0]; + } + + valueofField; + getDDFieldData(){ + if(this.entryForm.value.fileType && this.selectedFile){ + this.dataservice.getDDforMappingRule(this.selectedFile,this.entryForm.value.fileType).subscribe(data =>{ + console.log(data); + this.valueofField = data.body; + },(error)=>{ + if(error.status === 404){ + this.toastr.error("Sheet not found") + } + if(error.status >= 500 && error.status <= 599){ + this.toastr.error("Server Error") + } + }) + }else{ + this.toastr.warning("Sheet name and file is required") + + } +} + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleall/mappingruleall.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleall/mappingruleall.component.html new file mode 100644 index 0000000..8ee34a9 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleall/mappingruleall.component.html @@ -0,0 +1,85 @@ + + +
    + +
    +
    +
    +

    Mapping Rule

    +
    +
    + + + +
    +
    + + + Loading ... +
    {{error}}
    + + + Entity Name + + + Description + + + Active + + + File Type + + + Action + + + {{user.entity_name}} + {{user.description}} + {{user.active}} + {{user.fileType}} + + + + Delete + + + + + + + + + + + + Users per page + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} + of {{pagination.totalItems}} users + + +
    +
    + + + + + + + + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleall/mappingruleall.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleall/mappingruleall.component.scss new file mode 100644 index 0000000..c05b1dc --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleall/mappingruleall.component.scss @@ -0,0 +1,4 @@ +.delete,.heading{ + text-align: center; + color: red; + } \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleall/mappingruleall.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleall/mappingruleall.component.spec.ts new file mode 100644 index 0000000..bf59474 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleall/mappingruleall.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MappingruleallComponent } from './mappingruleall.component'; + +describe('MappingruleallComponent', () => { + let component: MappingruleallComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ MappingruleallComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(MappingruleallComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleall/mappingruleall.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleall/mappingruleall.component.ts new file mode 100644 index 0000000..a204f3b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleall/mappingruleall.component.ts @@ -0,0 +1,85 @@ +import { Component, OnInit } from '@angular/core'; +import { ActivatedRoute, Router } from '@angular/router'; +import { ToastrService } from 'ngx-toastr'; +import { ExcelService } from 'src/app/services/excel.service'; +import * as moment from 'moment'; +import { BulkimportService } from 'src/app/services/fnd/bulkimport.service'; +@Component({ + selector: 'app-mappingruleall', + templateUrl: './mappingruleall.component.html', + styleUrls: ['./mappingruleall.component.scss'] +}) +export class MappingruleallComponent implements OnInit { + loading = false; + error; + selected: any[] = []; + rowSelected :any= {}; + modaldelete=false; + data; + constructor(private router: Router, private toastr: ToastrService, + private route: ActivatedRoute,private excel: ExcelService,private bulkimportService:BulkimportService,) { } + + ngOnInit(): void { + this.getall(); + } + getall(){ + this.bulkimportService.getMappingDetails().subscribe((data)=>{ + console.log(data); + this.data=data; + if(this.data.length == 0){ + this.error="No data Available"; + console.log(this.error); + } + + },(error) => { + console.log(error); + if(error){ + this.error="No data Available OR server Error"; + } + }); + + } + goToAdd(){ + this.router.navigate(["../add"], { relativeTo: this.route }); + + } + onExport() { + this.excel.exportAsExcelFile(this.data, 'user_', + moment().format('YYYYMMDD_HHmmss')) + } + goToEdit(id) { + this.router.navigate(["../edit/" + id], { relativeTo: this.route }); + } + onDelete(row) { + this.rowSelected = row; + this.modaldelete=true; + } + + delete(id){ + this.modaldelete = false; + console.log("in delete "+id); + this.bulkimportService.deleteMappingById(id).subscribe( + (data) => { + console.log(data); + this.ngOnInit(); + if (data == null || data) { + this.toastr.success('Deleted successfully'); + } + }, + (error) => { + console.log('Error in adding data...',+error); + if(isNaN(error)){ + this.toastr.success('Deleted successfully'); + }else{ + this.toastr.error('Not Deleted Data Getting Some Error'); + } + } + ); +} + +activeTab: number = 1; + +showTab(tabNumber: number) { + this.activeTab = tabNumber; +} +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleedit/mappingruleedit.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleedit/mappingruleedit.component.html new file mode 100644 index 0000000..6bdbd5a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleedit/mappingruleedit.component.html @@ -0,0 +1,100 @@ +

    Mapping Rule

    +Edit Mode
    +Mapping Rules are proccessed while importing bulk records for respective entity +
    +
    +
    +
    +
    + + +
    +
    + + +
    +
    +
    + +
    +
    + + +
    + +
    + + + +
    +
    + + +
    +
    Mapping Fields
    + +
    +
    +
    + + +
    +
    +
    + + + + + + + + + + + + + +
    Header FieldsValue
    + + + + + +
    +
    +
    + + +
    +
    +
    + + +
    +
    + +
    +
    +
    \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleedit/mappingruleedit.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleedit/mappingruleedit.component.scss new file mode 100644 index 0000000..b05187f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleedit/mappingruleedit.component.scss @@ -0,0 +1,81 @@ +//@import "../../../../assets/scss/var"; +.s-info-bar { + display: flex; + flex-direction: row; + justify-content: space-between; + button { + outline: none; + } + } + + .entry-pg { + width: 750px; + } + + .button1::after { + content: none; + } + .button1:hover::after { + content: "ADD ROWS"; + } + + $bg-color: #dddddd; + + .section { + background-color: $bg-color; + height: 40px; + } + + .section p { + //color: white; + font-weight: bold; + padding: 10px; + font-size: 18px; + } + + .clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; + } + + .clr-file { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + //padding: 0.6rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; + } + + .center { + text-align: center; + } + input[type=text],[type=date],[type=number],textarea { + width: 100%; + padding: 15px 15px; + margin-top: 3px; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; + } + + .required-field{ + color: red; + + } + select{ + width: 100%; + margin-top: 3px; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; + } + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleedit/mappingruleedit.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleedit/mappingruleedit.component.spec.ts new file mode 100644 index 0000000..2e79fd9 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleedit/mappingruleedit.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MappingruleeditComponent } from './mappingruleedit.component'; + +describe('MappingruleeditComponent', () => { + let component: MappingruleeditComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ MappingruleeditComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(MappingruleeditComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleedit/mappingruleedit.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleedit/mappingruleedit.component.ts new file mode 100644 index 0000000..3239322 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/datamanagement/mappingrule/mappingruleedit/mappingruleedit.component.ts @@ -0,0 +1,161 @@ +import { HttpErrorResponse, HttpHeaderResponse } from '@angular/common/http'; +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import { ToastrService } from 'ngx-toastr'; +import { BulkimportService } from 'src/app/services/fnd/bulkimport.service'; + +@Component({ + selector: 'app-mappingruleedit', + templateUrl: './mappingruleedit.component.html', + styleUrls: ['./mappingruleedit.component.scss'] +}) +export class MappingruleeditComponent implements OnInit { + public entryForm: FormGroup; + selectedFile: File[]=[]; + id; + datajson; + transform:boolean = false; + checkTransform:boolean = true; + mapperdata; + tdata: any = {}; + entityname; + description; + constructor(private _fb: FormBuilder, private router: Router,private toastr: ToastrService, + private route: ActivatedRoute,private dataservice:BulkimportService) { } + + ngOnInit(): void { + this.id = this.route.snapshot.params["id"]; + console.log("update with id = ", this.id); + + + this.dataservice.getMappingDetailsById(this.id).subscribe(data => { + this.tdata = data; + this.serverData = JSON.parse(data.mapping_rule); + console.log(this.tdata); + }, + (err) => { + console.log(err); + }); + + console.log(this.tdata); + // this.entryForm.patchValue({ + // entity_name: this.entityname, + // description: this.description, + // }); + // console.log(this.entryForm.value); + } + + getById(id: number) { + + } + + serverData = []; + + toastrShown: boolean = false; + onSubmit(){ + this.tdata.mapping_rule = JSON.stringify(this.serverData); + console.log(this.tdata); + this.dataservice.updateMappingData(this.tdata, this.id).subscribe((data)=>{ + console.log(data); + if (data.operationStatus) { + this.toastr.warning(data.operationMessage); + }else{ + if (!this.toastrShown) { + this.toastrShown = true; // Set the flag to indicate that the toastr message has been shown + this.toastr.success("Update Successfully"); + setTimeout(() => { + this.router.navigate(["../../all"], { relativeTo: this.route }); + }, 500); + } + } + }, (error: HttpHeaderResponse)=>{ + console.log(error); + if(error.status===202){ + this.toastr.success("Update Succesfully"); + } + if(error.status===404){ + this.toastr.error("Not Update"); + } + if(error.status===400){ + this.toastr.error("Not Update"); + } + }); + setTimeout(() => { + this.router.navigate(["../../all"], { relativeTo: this.route }); + },500); + } + + Updating(){ + console.log(this.tdata); + this.dataservice.updateData(this.tdata, this.id).subscribe(data=>{ + console.log(data); + // this.ngOnInit(); + }, (error: HttpHeaderResponse)=>{ + console.log(error); + }); + } + + goback(){ + this.router.navigate(["../../all"], { relativeTo: this.route }); + } + + + + headerData; + getColumns(table){ + console.log(table); + // console.log(this.getbyiddata.entityName); + this.dataservice.getColumnNames(table).subscribe((data) => { + console.log(data); + this.headerData = data; + }); +} + + + + getHeaderFieldData(){ + if(this.tdata.entity_name){ + this.dataservice.getColumnNames(this.tdata.entity_name).subscribe(data =>{ + console.log(data); + const objectArray = data.map(fieldname => ({ + headerName: fieldname, + value: "", + })); + // console.log(objectArray); + const headerdata= JSON.stringify(objectArray); + this.serverData = JSON.parse(headerdata); + }) + }else{ + this.toastr.warning("Entity Name is Required") + } + } + + showdropdown = false; + chooseFile(event){ + console.log(event); + this.selectedFile = event.target.files[0]; + if(event){ this.showdropdown = true;} + + } + + valueofField; + getDDFieldData(){ + if(this.tdata.fileType && this.selectedFile){ + this.dataservice.getDDforMappingRule(this.selectedFile,this.tdata.fileType).subscribe(data =>{ + console.log(data); + this.valueofField = data.body; + },(error)=>{ + if(error.status === 404){ + this.toastr.error("Sheet not found") + } + if(error.status >= 500 && error.status <= 599){ + this.toastr.error("Server Error") + } + }) + }else{ + this.toastr.warning("Sheet name and file is required") + } +} + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/Token_registery/Token_registery.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/Token_registery/Token_registery.component.html new file mode 100644 index 0000000..b29b64e --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/Token_registery/Token_registery.component.html @@ -0,0 +1,354 @@ + +
    +
    +
    +

    Token registery

    +
    +
    + + + +
    +
    + + + + Loading ... + +
    {{error}}
    +
    + + token name + + + + token + + + + + + Action + + + + + + {{user.token_name }} + + + + + + + + + + +
    Who Column
    +
    Account ID: {{user.accountId}}
    +
    Created At: {{user.createdAt| date}}
    +
    Created By: {{user.createdBy}}
    +
    Updated At: {{user.updatedAt | date}}
    +
    Updated By: {{user.updatedBy}}
    +
    +
    +
    + + + + + + + +
    + + + Users per page + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} + of {{pagination.totalItems}} users + + +
    + + + +
    +
    +
    +
    +
    +
    + +
    +
    + {{beforeText(item.fieldtext)}} + {{ app[transform(item.fieldtext) ] }} + {{afterText(item.fieldtext)}} +
    + +
    + {{beforeText(item.fieldtext)}} + {{ app[transform(item.fieldtext) ] | date}} + {{afterText(item.fieldtext)}} +
    +
    + {{beforeText(item.fieldtext)}} + {{ app[transform(item.fieldtext) ]}} + {{afterText(item.fieldtext)}} +
    + +
    +
    +
    + + +
    + +
    + +
    + File Preview +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/Token_registery/Token_registery.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/Token_registery/Token_registery.component.scss new file mode 100644 index 0000000..12f7fc8 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/Token_registery/Token_registery.component.scss @@ -0,0 +1,85 @@ +//@import "../../../../assets/scss/var"; +.s-info-bar { + display: flex; + flex-direction: row; + justify-content: space-between; + button { + outline: none; + } +} +.delete,.heading{ + text-align: center; + color: red; +} +.entry-pg { + width: 750px; +} + +.button1::after { + content: none; +} +.button1:hover::after { + content: "ADD ROWS"; +} + +.section { + background-color: #dddddd; + height: 40px; +} + +.section p { + //color: white; + padding: 10px; + font-size: 18px; +} + +.clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; +} + +.clr-file { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + //padding: 0.6rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; +} + +.center { + text-align: center; +} +select{ + width: 100%; + margin-top: 3px; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; +} +input[type=text],[type=date],[type=number],textarea { + width: 100%; + padding: 15px 15px; + background-color:rgb(255, 255, 255); + // margin: 8px 0; + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} +.error_mess { + color: red; +} +.universal-section-header { + margin: 24px 0 10px 0; + font-weight: 600; + color: #1a237e; + letter-spacing: 0.5px; + font-size: 1.25rem; +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/Token_registery/Token_registery.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/Token_registery/Token_registery.component.ts new file mode 100644 index 0000000..9d0ecaf --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/Token_registery/Token_registery.component.ts @@ -0,0 +1,251 @@ +import { Component, OnInit } from '@angular/core'; +import { ToastrService } from 'ngx-toastr'; +import { AlertService } from 'src/app/services/alert.service'; +import { Token_registeryservice } from './Token_registery.service'; +import { AbstractControl, FormArray, FormBuilder, FormGroup, Validators, ValidationErrors } from '@angular/forms'; +import { ExtensionService } from 'src/app/services/fnd/extension.service'; +import { DashboardContentModel2 } from 'src/app/models/builder/dashboard'; +import { Token_registerycardvariable } from './Token_registery_cardvariable'; +import { UserInfoService } from 'src/app/services/user-info.service'; +declare var JsBarcode: any; +@Component({ + selector: 'app-Token_registery', + templateUrl: './Token_registery.component.html', + styleUrls: ['./Token_registery.component.scss'] +}) +export class Token_registeryComponent implements OnInit { + cardButton = Token_registerycardvariable.cardButton; + cardmodeldata = Token_registerycardvariable.cardmodeldata; + public dashboardArray: DashboardContentModel2[]; + isCardview = Token_registerycardvariable.cardButton; + cardmodal; changeView() { + this.isCardview = !this.isCardview; + } + beforeText(fieldtext: string): string { // Extract the text before the first '<' + const index = fieldtext.indexOf('<'); + return index !== -1 ? fieldtext.substring(0, index) : fieldtext; + } + afterText(fieldtext: string): string { // Extract the text after the last '>' + const index = fieldtext.lastIndexOf('>'); + return index !== -1 ? fieldtext.substring(index + 1) : ''; + } + transform(fieldtext: string): string { + const match = fieldtext.match(/<([^>]*)>/); + return match ? match[1] : ''; // Extract the text between '<' and '>' + } + userrole; + rowSelected: any = {}; + modaldelete = false; + modalEdit = false; + modalAdd = false; + public entryForm: FormGroup; + loading = false; + product; + modalOpenedforNewLine = false; + newLine: any; + additionalFieldsFromBackend: any[] = []; + formcode = 'Token_registery_formCode' + tableName = 'Token_registery'; checkFormCode; selected: any[] = []; constructor( + private extensionService: ExtensionService, + private userInfoService: UserInfoService, + private mainService: Token_registeryservice, + private alertService: AlertService, + private toastr: ToastrService, + private _fb: FormBuilder, + ) { } + private editInterval: any; + // component button + ngOnInit(): void { + if (this.cardmodeldata !== '') { + this.cardmodal = JSON.parse(this.cardmodeldata); + this.dashboardArray = this.cardmodal.dashboard.slice(); + console.log(this.dashboardArray) + } + this.userrole = this.userInfoService.getRoles(); + this.getData(); + this.entryForm = this._fb.group({ + token_name: [null], + + token: [null], + + + + + + + }); // component_button200 + // form code start + this.extensionService.getJsonObjectsByFormCodeList(this.formcode).subscribe(data => { + console.log(data); + const jsonArray = data.map((str) => JSON.parse(str)); + this.additionalFieldsFromBackend = jsonArray; + this.checkFormCode = this.additionalFieldsFromBackend.some(field => field.formCode === "Token_registery_formCode"); + console.log(this.checkFormCode); + console.log(this.additionalFieldsFromBackend); + if (this.additionalFieldsFromBackend && this.additionalFieldsFromBackend.length > 0) { + this.additionalFieldsFromBackend.forEach(field => { + if (field.formCode === this.formcode) { + if (!this.entryForm.contains(field.extValue)) { + // Add the control only if it doesn't exist in the form + this.entryForm.addControl(field.extValue, this._fb.control(field.fieldValue)); + } + } + }); + } + }); + console.log(this.entryForm.value); + // form code end + + + + + + } + ngOnDestroy(): void { + if (this.editInterval) { + clearInterval(this.editInterval); + } + } + + + + error; + getData() { + this.mainService.getAll().subscribe((data) => { + console.log(data); + this.product = data; + this.product = [...this.product].reverse(); if (this.product.length == 0) { + this.error = "No Data Available" + } + }, (error) => { + console.log(error); + if (error) { + this.error = "Server Error"; + } + }); + } + onEdit(row) { + this.rowSelected = row; + + + + + + this.modalEdit = true; + } + onDelete(row) { + this.rowSelected = row; + this.modaldelete = true; + } + delete(id) { + this.modaldelete = false; + console.log("in delete " + id); + this.mainService.delete(id).subscribe( + (data) => { + console.log(data); + this.ngOnInit(); + if (data) { this.toastr.success('Deleted successfully'); } + }); + } + onUpdate(id) { + this.modalEdit = false; + + + + + //console.log("in update"); + console.log("id " + id); + console.log(this.rowSelected); + //console.log("out update"); + this.mainService.update(id, this.rowSelected).subscribe( + (data) => { + console.log(data); + if (data || data.status >= 200 && data.status <= 299) { + this.toastr.success("Update Successfully"); + } + setTimeout(() => { + this.ngOnInit(); + }, 500); + + + + + }, (error) => { + console.log(error); + if (error.status >= 200 && error.status <= 299) { + // this.toastr.success("update Succesfully"); + } + if (error.status >= 400 && error.status <= 499) { + this.toastr.error("Not Updated"); + } + if (error.status >= 500 && error.status <= 599) { + this.toastr.error("Not Updated"); + } + }); + setTimeout(() => { + this.ngOnInit(); + }, 500); + } + onCreate() { + this.modalAdd = false; + + + + + this.mainService.create(this.entryForm.value).subscribe( + (data) => { + console.log(data); + if (data || data.status >= 200 && data.status <= 299) { + this.toastr.success("Added Successfully"); + } + setTimeout(() => { + this.ngOnInit(); + }, 500); + + + + + }, (error) => { + console.log(error); + if (error.status >= 200 && error.status <= 299) { + // this.toastr.success("Added Succesfully"); + } + if (error.status >= 400 && error.status <= 499) { + this.toastr.error("Not Added"); + } + if (error.status >= 500 && error.status <= 599) { + this.toastr.error("Not Added"); + } + }); + setTimeout(() => { + this.ngOnInit(); + }, 500); + } + goToAdd(row) { + this.modalAdd = true; this.submitted = false; + + + + + } + submitted = false; + onSubmit() { + console.log(this.entryForm.value); + this.submitted = true; + if (this.entryForm.invalid) { + return; + } this.onCreate(); + + } + + + rsModaltoken = false; + goToReplaceStringtoken(row) { + this.rowSelected = row; this.rsModaltoken = true; + } + + // updateaction +} + + + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/Token_registery/Token_registery.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/Token_registery/Token_registery.service.ts new file mode 100644 index 0000000..6fdf18c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/Token_registery/Token_registery.service.ts @@ -0,0 +1,38 @@ +import { Injectable } from '@angular/core'; +import { Observable } from "rxjs"; +import { HttpClient, HttpHeaders, HttpParams, } from "@angular/common/http"; +import { ApiRequestService } from "src/app/services/api/api-request.service"; +@Injectable({ + providedIn: 'root' +}) +export class Token_registeryservice { + private baseURL = "apiregistery"; + + constructor( + + private apiRequest: ApiRequestService, + ) { } + getAll(page?: number, size?: number): Observable { + return this.apiRequest.get(this.baseURL + "/getall"); + } + getById(id: number): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.get(_http); + } + create(data: any): Observable { + return this.apiRequest.post(this.baseURL + "/generateToken", data); + } + update(id: number, data: any): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.put(_http, data); + } + delete(id: number): Observable { + const _http = this.baseURL + "/delete/" + id; + return this.apiRequest.delete(_http); + } + + + + + // updateaction +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/Token_registery/Token_registery_cardvariable.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/Token_registery/Token_registery_cardvariable.ts new file mode 100644 index 0000000..3062363 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/Token_registery/Token_registery_cardvariable.ts @@ -0,0 +1,4 @@ +export const Token_registerycardvariable = { + "cardButton": false, + "cardmodeldata": `` +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/ApiRegistery.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/ApiRegistery.service.ts new file mode 100644 index 0000000..21f04cb --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/ApiRegistery.service.ts @@ -0,0 +1,46 @@ +import { Injectable } from '@angular/core'; +import { Observable } from "rxjs"; +import { HttpClient, HttpHeaders, HttpParams, } from "@angular/common/http"; +import { ApiRequestService } from "src/app/services/api/api-request.service"; +@Injectable({ + providedIn: 'root' +}) +export class ApiRegisteryservice { + private baseURL = "Api_registery_header/Api_registery_header"; constructor( + private http: HttpClient, + private apiRequest: ApiRequestService, + ) { } + getAll(page?: number, size?: number): Observable { + return this.apiRequest.get(this.baseURL); + } + getById(id: number): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.get(_http); + } + create(data: any): Observable { + return this.apiRequest.post(this.baseURL, data); + } + update(id: number, data: any): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.put(_http, data); + } + delete(id: number): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.delete(_http); + } + + + + + + + + + + + + + + + // updateaction +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/Apiregisteryline/Apiregisteryline.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/Apiregisteryline/Apiregisteryline.component.html new file mode 100644 index 0000000..e7e1514 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/Apiregisteryline/Apiregisteryline.component.html @@ -0,0 +1,382 @@ + +
    +
    +
    +

    ApiRegisteryLine

    +
    +
    + + + +
    +
    + + + + Loading ... + +
    {{error}}
    +
    + + url + + + + method + + + + + + + + Action + + + + + + {{user.url }} + + + {{user.method }} + + + + + + + + + +
    Who Column
    +
    Account ID: {{user.accountId}}
    +
    Created At: {{user.createdAt| date}}
    +
    Created By: {{user.createdBy}}
    +
    Updated At: {{user.updatedAt | date}}
    +
    Updated By: {{user.updatedBy}}
    +
    +
    +
    + + + + + + + +
    + + + Users per page + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} + of {{pagination.totalItems}} users + + +
    + + + +
    +
    +
    +
    +
    +
    + +
    +
    + {{beforeText(item.fieldtext)}} + {{ app[transform(item.fieldtext) ] }} + {{afterText(item.fieldtext)}} +
    + +
    + {{beforeText(item.fieldtext)}} + {{ app[transform(item.fieldtext) ] | date}} + {{afterText(item.fieldtext)}} +
    +
    + {{beforeText(item.fieldtext)}} + {{ app[transform(item.fieldtext) ]}} + {{afterText(item.fieldtext)}} +
    + +
    +
    +
    + + +
    + +
    + +
    + File Preview +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/Apiregisteryline/Apiregisteryline.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/Apiregisteryline/Apiregisteryline.component.scss new file mode 100644 index 0000000..c47b921 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/Apiregisteryline/Apiregisteryline.component.scss @@ -0,0 +1,78 @@ +//@import "../../../../assets/scss/var"; +.s-info-bar { + display: flex; + flex-direction: row; + justify-content: space-between; + button { + outline: none; + } +} +.delete,.heading{ + text-align: center; + color: red; +} +.entry-pg { + width: 750px; +} + +.button1::after { + content: none; +} +.button1:hover::after { + content: "ADD ROWS"; +} + +.section { + background-color: #dddddd; + height: 40px; +} + +.section p { + //color: white; + padding: 10px; + font-size: 18px; +} + +.clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; +} + +.clr-file { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + //padding: 0.6rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; +} + +.center { + text-align: center; +} +select{ + width: 100%; + margin-top: 3px; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; +} +input[type=text],[type=date],[type=number],textarea { + width: 100%; + padding: 15px 15px; + background-color:rgb(255, 255, 255); + // margin: 8px 0; + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} +.error_mess { + color: red; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/Apiregisteryline/Apiregisteryline.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/Apiregisteryline/Apiregisteryline.component.ts new file mode 100644 index 0000000..5b060a1 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/Apiregisteryline/Apiregisteryline.component.ts @@ -0,0 +1,230 @@ +import { Component, OnInit } from '@angular/core'; +import { ToastrService } from 'ngx-toastr'; +import { AlertService } from 'src/app/services/alert.service'; +import { Apiregisterylineservice } from './Apiregisteryline.service'; +import { AbstractControl, FormArray, FormBuilder, FormGroup, Validators, ValidationErrors } from '@angular/forms'; +import { ExtensionService } from 'src/app/services/fnd/extension.service'; +import { DashboardContentModel2 } from 'src/app/models/builder/dashboard'; +import { Apiregisterylinecardvariable } from './Apiregisteryline_cardvariable'; +import { UserInfoService } from 'src/app/services/user-info.service'; +import { ActivatedRoute } from '@angular/router'; +declare var JsBarcode: any; +@Component({ + selector: 'app-Apiregisteryline', + templateUrl: './Apiregisteryline.component.html', + styleUrls: ['./Apiregisteryline.component.scss'] +}) +export class ApiregisterylineComponent implements OnInit { + cardButton = Apiregisterylinecardvariable.cardButton; + cardmodeldata = Apiregisterylinecardvariable.cardmodeldata; + public dashboardArray: DashboardContentModel2[]; + isCardview = Apiregisterylinecardvariable.cardButton; + cardmodal; changeView() { + this.isCardview = !this.isCardview; + } + beforeText(fieldtext: string): string { // Extract the text before the first '<' + const index = fieldtext.indexOf('<'); + return index !== -1 ? fieldtext.substring(0, index) : fieldtext; + } + afterText(fieldtext: string): string { // Extract the text after the last '>' + const index = fieldtext.lastIndexOf('>'); + return index !== -1 ? fieldtext.substring(index + 1) : ''; + } + transform(fieldtext: string): string { + const match = fieldtext.match(/<([^>]*)>/); + return match ? match[1] : ''; // Extract the text between '<' and '>' + } + userrole; + rowSelected: any = {}; + modaldelete = false; + modalEdit = false; + modalAdd = false; + public entryForm: FormGroup; + loading = false; + product; + modalOpenedforNewLine = false; + newLine: any; + additionalFieldsFromBackend: any[] = []; + formcode = 'Apiregisteryline_formCode'; + headerId; + tableName = 'Apiregisteryline'; checkFormCode; selected: any[] = []; constructor( + private extensionService: ExtensionService, + private userInfoService: UserInfoService, + private mainService: Apiregisterylineservice, + private alertService: AlertService, + private toastr: ToastrService, + private _fb: FormBuilder, + private route: ActivatedRoute, + ) { } + private editInterval: any; + // component button + ngOnInit(): void { + + this.headerId = this.route.snapshot.params["id"]; + console.log("headerId = ", this.headerId); + + if (this.cardmodeldata !== '') { + this.cardmodal = JSON.parse(this.cardmodeldata); + this.dashboardArray = this.cardmodal.dashboard.slice(); + console.log(this.dashboardArray) + } + this.userrole = this.userInfoService.getRoles(); + this.getData(); + this.entryForm = this._fb.group({ + url: [null], + + method: [null], + + + + }); // component_button200 + // form code start + this.extensionService.getJsonObjectsByFormCodeList(this.formcode).subscribe(data => { + console.log(data); + const jsonArray = data.map((str) => JSON.parse(str)); + this.additionalFieldsFromBackend = jsonArray; + this.checkFormCode = this.additionalFieldsFromBackend.some(field => field.formCode === "Apiregisteryline_formCode"); + console.log(this.checkFormCode); + console.log(this.additionalFieldsFromBackend); + if (this.additionalFieldsFromBackend && this.additionalFieldsFromBackend.length > 0) { + this.additionalFieldsFromBackend.forEach(field => { + if (field.formCode === this.formcode) { + if (!this.entryForm.contains(field.extValue)) { + // Add the control only if it doesn't exist in the form + this.entryForm.addControl(field.extValue, this._fb.control(field.fieldValue)); + } + } + }); + } + }); + console.log(this.entryForm.value); + // form code end + + + + + + + + } + ngOnDestroy(): void { + if (this.editInterval) { + clearInterval(this.editInterval); + } + } + + error; + getData() { + this.mainService.getAll(this.headerId).subscribe((data) => { + console.log(data); + this.product = data; + this.product = [...this.product].reverse(); if (this.product.length == 0) { + this.error = "No Data Available" + } + }, (error) => { + console.log(error); + if (error) { + this.error = "Server Error"; + } + }); + } + onEdit(row) { + this.rowSelected = row; + this.modalEdit = true; + } + onDelete(row) { + this.rowSelected = row; + this.modaldelete = true; + } + delete(id) { + this.modaldelete = false; + console.log("in delete " + id); + this.mainService.delete(id).subscribe( + (data) => { + console.log(data); + this.ngOnInit(); + if (data) { this.toastr.success('Deleted successfully'); } + }); + } + onUpdate(id) { + this.modalEdit = false; + //console.log("in update"); + console.log("id " + id); + console.log(this.rowSelected); + //console.log("out update"); + this.mainService.update(id, this.rowSelected).subscribe( + (data) => { + console.log(data); + if (data || data.status >= 200 && data.status <= 299) { + this.toastr.success("Update Successfully"); + } + setTimeout(() => { + this.ngOnInit(); + }, 500); + + + }, (error) => { + console.log(error); + if (error.status >= 200 && error.status <= 299) { + // this.toastr.success("update Succesfully"); + } + if (error.status >= 400 && error.status <= 499) { + this.toastr.error("Not Updated"); + } + if (error.status >= 500 && error.status <= 599) { + this.toastr.error("Not Updated"); + } + }); + setTimeout(() => { + this.ngOnInit(); + }, 500); + } + onCreate() { + this.modalAdd = false; + this.entryForm.value.header_id = this.headerId; + this.mainService.create(this.entryForm.value).subscribe( + (data) => { + console.log(data); + if (data || data.status >= 200 && data.status <= 299) { + this.toastr.success("Added Successfully"); + } + setTimeout(() => { + this.ngOnInit(); + }, 500); + }, (error) => { + console.log(error); + if (error.status >= 200 && error.status <= 299) { + // this.toastr.success("Added Succesfully"); + } + if (error.status >= 400 && error.status <= 499) { + this.toastr.error("Not Added"); + } + if (error.status >= 500 && error.status <= 599) { + this.toastr.error("Not Added"); + } + }); + setTimeout(() => { + this.ngOnInit(); + }, 500); + } + goToAdd(row) { + this.modalAdd = true; this.submitted = false; + + } + submitted = false; + onSubmit() { + console.log(this.entryForm.value); + this.submitted = true; + if (this.entryForm.invalid) { + return; + } this.onCreate(); + + } + + // updateaction +} + + + + + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/Apiregisteryline/Apiregisteryline.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/Apiregisteryline/Apiregisteryline.service.ts new file mode 100644 index 0000000..d0d929c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/Apiregisteryline/Apiregisteryline.service.ts @@ -0,0 +1,38 @@ +import { Injectable } from '@angular/core'; +import { Observable } from "rxjs"; +import { HttpClient, HttpHeaders, HttpParams, } from "@angular/common/http"; +import { ApiRequestService } from "src/app/services/api/api-request.service"; +@Injectable({ + providedIn: 'root' +}) +export class Apiregisterylineservice { + private baseURL = "Api_registery_line/Api_registery_line"; constructor( + private http: HttpClient, + private apiRequest: ApiRequestService, + ) { } + getAll(headerId: number, page?: number, size?: number): Observable { + return this.apiRequest.get(this.baseURL + "/header/" + headerId); + } + getById(id: number): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.get(_http); + } + create(data: any): Observable { + return this.apiRequest.post(this.baseURL, data); + } + update(id: number, data: any): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.put(_http, data); + } + delete(id: number): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.delete(_http); + } + + + + + + + // updateaction +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/Apiregisteryline/Apiregisteryline_cardvariable.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/Apiregisteryline/Apiregisteryline_cardvariable.ts new file mode 100644 index 0000000..d7b2860 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/Apiregisteryline/Apiregisteryline_cardvariable.ts @@ -0,0 +1,4 @@ +export const Apiregisterylinecardvariable = { + "cardButton": false, + "cardmodeldata": `` +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/addapiregistery/addapiregistery.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/addapiregistery/addapiregistery.component.html new file mode 100644 index 0000000..3c293d8 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/addapiregistery/addapiregistery.component.html @@ -0,0 +1 @@ +

    addapiregistery works!

    diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/addapiregistery/addapiregistery.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/addapiregistery/addapiregistery.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/addapiregistery/addapiregistery.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/addapiregistery/addapiregistery.component.spec.ts new file mode 100644 index 0000000..a06237c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/addapiregistery/addapiregistery.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AddapiregisteryComponent } from './addapiregistery.component'; + +describe('AddapiregisteryComponent', () => { + let component: AddapiregisteryComponent; + let fixture: ComponentFixture; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [AddapiregisteryComponent] + }); + fixture = TestBed.createComponent(AddapiregisteryComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/addapiregistery/addapiregistery.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/addapiregistery/addapiregistery.component.ts new file mode 100644 index 0000000..f4cd146 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/addapiregistery/addapiregistery.component.ts @@ -0,0 +1,10 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-addapiregistery', + templateUrl: './addapiregistery.component.html', + styleUrls: ['./addapiregistery.component.scss'] +}) +export class AddapiregisteryComponent { + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/allapiregistery/allapiregistery.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/allapiregistery/allapiregistery.component.html new file mode 100644 index 0000000..114e7d5 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/allapiregistery/allapiregistery.component.html @@ -0,0 +1,172 @@ + + +
    +
    +
    +

    API-Registery - {{getFormCode}}

    +
    +
    + + + +
    +
    + + + Loading ... +
    {{error}}
    +
    + + + + + Table Name + + + + Action + + + + + + + + + {{user.table_name}} + + + + + + +
    Who Column
    +
    Account ID: {{user.accountId}}
    +
    Created At: {{user.createdAt| date}}
    +
    Created By: {{user.createdBy}}
    +
    Updated At: {{user.updatedAt | date}}
    +
    Updated By: {{user.updatedBy}}
    +
    +
    + + + +
    + + + + + + + + + +
    Field Name: {{user.field_name}}
    +
    +
    + + + Users per page + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} + of {{pagination.totalItems}} users + + +
    +
    + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/allapiregistery/allapiregistery.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/allapiregistery/allapiregistery.component.scss new file mode 100644 index 0000000..8d27434 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/allapiregistery/allapiregistery.component.scss @@ -0,0 +1,5 @@ +@import '../../../../../../styles1.scss'; +.delete,.heading{ + text-align: center; + color: red; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/allapiregistery/allapiregistery.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/allapiregistery/allapiregistery.component.spec.ts new file mode 100644 index 0000000..1188923 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/allapiregistery/allapiregistery.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AllapiregisteryComponent } from './allapiregistery.component'; + +describe('AllapiregisteryComponent', () => { + let component: AllapiregisteryComponent; + let fixture: ComponentFixture; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [AllapiregisteryComponent] + }); + fixture = TestBed.createComponent(AllapiregisteryComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/allapiregistery/allapiregistery.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/allapiregistery/allapiregistery.component.ts new file mode 100644 index 0000000..70425b0 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/allapiregistery/allapiregistery.component.ts @@ -0,0 +1,299 @@ + +import { Component, OnInit, TemplateRef, ViewChild, ViewEncapsulation, } from '@angular/core'; +import { ActivatedRoute, Router } from "@angular/router"; + +import { ToastrService } from 'ngx-toastr'; +import { ExtensionField } from "src/app/models/fnd/ExtensionField"; +import { ExtensionService } from 'src/app/services/fnd/extension.service'; + +//import { Teacher } from "src/app/pages/university/teacher/Teacher"; +import { UserInfoService } from "src/app/services/user-info.service"; +import { ApiRegisteryservice } from '../ApiRegistery.service'; +import { FormBuilder, FormGroup } from '@angular/forms'; + +interface Rows { + + id: number; + url: string; + method: string; + header_id: number; +} +@Component({ + selector: 'app-allapiregistery', + templateUrl: './allapiregistery.component.html', + styleUrls: ['./allapiregistery.component.scss'] +}) +export class AllapiregisteryComponent implements OnInit { + @ViewChild("extById") extensionById: TemplateRef; + @ViewChild("showInGrid") txId: TemplateRef; + + //@ViewChild("filter") filter: ElementRef; + basic: boolean = false; + // whoColumns: Teacher; // who columns data + alldata: any; + userrole; + columns: any[]; + rows: Rows[]; + temp = []; + rowSelected: any = {}; + modaldelete = false; + modalEdit = false; + modalAdd = false; + public entryForm: FormGroup; + loading = false; + error; + selected: any[] = []; + filterData: string; + isLoading: boolean = false; + extensionField: ExtensionField[] = []; + constructor(private router: Router, + private route: ActivatedRoute, + private toastr: ToastrService, + private extensionService: ExtensionService, + private apiregistery: ApiRegisteryservice, + private userInfoService: UserInfoService, + private _fb: FormBuilder, + ) { } + + private account_id: any; + // private formCode: any; + formCode: string; + getFormCode; + public key: string = "formCode"; + public storage: Storage = sessionStorage; + ngOnInit(): void { + this.route.queryParams.subscribe(params => { + this.getFormCode = params['formCode']; + console.log("formCode ", this.getFormCode); + this.storage.setItem("formCode", this.getFormCode); // Store the value in sessionStorage using the key + }); + + + this.account_id = this.userInfoService.getUserId(); + this.formCode = this.storage.getItem(this.key); + console.log("[ngOnInit] acc_id: " + this.account_id + " formCode: " + this.formCode); + this.getData(); + // this.columns = [ + // /* { prop: "id", name: "Actions", width: 65, cellTemplate: this.extensionById }, */ + // { prop: "field_name", name: "Field Name", width: 120 }, + // { prop: "mapping", name: "Mapping", width: 150 }, + // { prop: "data_type", name: "Data Type", width: 190 }, + // /* { prop: "id", name: "Show In Grid", width: 90, cellTemplate: this.txId } */ + // ]; + + this.entryForm = this._fb.group({ + table_name: [null], + }); + + this.userrole = this.userInfoService.getRoles(); + + } + getData() { + this.apiregistery.getAll().subscribe((data) => { + this.alldata = data + console.log(' get all ', this.alldata); + if (this.alldata.length == 0) { + this.error = "No data Available"; + console.log(this.error) + } + }, (error) => { + console.log(error); + if (error) { + this.error = "Server Error"; + } + }) + } + + alertType: string; + alertMessage: string = ""; + alert = [ + { type: "success", message: "Build Successfully" }, + { type: "danger", message: "Some error Happens" }, + ]; + + // buildExtension(id, accountID) { + // console.log("buildExtension() Account id = " + this.account_id + " Form Code = ", + // this.formCode); + // if (this.account_id === null && this.formCode === null) { + // this.alertType = this.alert[1].type; + // this.alertMessage = "form_code is null"; + // return; + // } + // this.extensionService + // .buildExtension(id, accountID, this.formCode) + // .subscribe( + // (data) => { + // console.log("build successfully ", data); + // this.alert.forEach((e) => { + // if (e.type === "success") { + // this.alertType = e.type; + // this.alertMessage = e.message; + // } //data.type === true : e.message ? e.message + + // }); + // // go to parent entry form... + // //this.router.navigate(['../../'], { relativeTo: this.route.parent }); + + // if (data) { + // this.toastr.success("Build successfully"); + // } + + + // }, + // (err) => { + + // if (err) { + // this.toastr.error("Build Not Successful"); + // } + // console.log("build failed ", err); + // this.alertType = this.alert[1].type; + // this.alertMessage = this.alert[1].message; + // } + // ); + // } + + // isChecked(id: number) { + // return ( + // this.extensionField.find(c => { + // if (c.id === id) return c.isActive; + // }) !== undefined + // ); + // } + + // chk(checked) { + // console.log(checked); + // return !checked; + // } + + // extField: ExtensionField; + // checked: boolean; + // toggle(id: number) { + // console.log(id); + // this.extensionService.getById(id).subscribe(ext => { + // this.extField = ext; + // this.checked = ext.isActive; + // console.log('extField ', this.extField); + // console.log('checked ', this.checked); + // }); + // console.log(this.extField.isActive); + // //this.extensionService.update(id,this.extField).subscribe(); + // } + + goToEdit(row) { + this.rowSelected = row; + + this.modalEdit = true; + } + + onUpdate(id) { + this.modalEdit = false; + //console.log("in update"); + console.log("id " + id); + console.log(this.rowSelected); + //console.log("out update"); + this.apiregistery.update(id, this.rowSelected).subscribe( + (data) => { + console.log(data); + if (data || data.status >= 200 && data.status <= 299) { + this.toastr.success("Update Successfully"); + } + setTimeout(() => { + this.ngOnInit(); + }, 500); + + }, (error) => { + console.log(error); + if (error.status >= 200 && error.status <= 299) { + // this.toastr.success("update Succesfully"); + } + if (error.status >= 400 && error.status <= 499) { + this.toastr.error("Not Updated"); + } + if (error.status >= 500 && error.status <= 599) { + this.toastr.error("Not Updated"); + } + }); + setTimeout(() => { + this.ngOnInit(); + }, 500); + } + onCreate() { + this.modalAdd = false; + this.apiregistery.create(this.entryForm.value).subscribe( + (data) => { + console.log('after add ', data); + if (data || data.status >= 200 && data.status <= 299) { + this.toastr.success("Added Successfully"); + } + setTimeout(() => { + this.ngOnInit(); + }, 500); + + }, (error) => { + console.log(error); + if (error.status >= 200 && error.status <= 299) { + // this.toastr.success("Added Succesfully"); + } + if (error.status >= 400 && error.status <= 499) { + this.toastr.error("Not Added"); + } + if (error.status >= 500 && error.status <= 599) { + this.toastr.error("Not Added"); + } + }); + setTimeout(() => { + this.ngOnInit(); + }, 500); + } + goToAdd(row) { + this.modalAdd = true; + this.submitted = false; + + } + submitted = false; + onSubmit() { + console.log(this.entryForm.value); + this.submitted = true; + if (this.entryForm.invalid) { + return; + } this.onCreate(); + + } + + + // goToAdd() { + // this.router.navigate(["../add"], { relativeTo: this.route }); + // } + // goToEdit(id: number) { + // this.router.navigate(["../edit/" + id], { relativeTo: this.route }); + // } + + goToWhoColumns(id: number) { + this.basic = !this.basic; + } + onDelete(row) { + this.rowSelected = row; + this.modaldelete = true; + } + delete(id) { + this.modaldelete = false; + console.log("in delete " + id); + this.extensionService.delete(id).subscribe((data) => { + console.log(data); + this.ngOnInit(); + if (data.body) { + this.toastr.success('Deleted successfully'); + } + }, (error) => { + console.log('Error in adding data...', +error); + if (error) { + this.toastr.error('Not Deleted Data Getting Some Error'); + } + }); + } + + + gotoline(id: any) { + this.router.navigate(["../line/" + id], { relativeTo: this.route }) + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/apiregistery.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/apiregistery.component.html new file mode 100644 index 0000000..0680b43 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/apiregistery.component.html @@ -0,0 +1 @@ + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/apiregistery.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/apiregistery.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/apiregistery.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/apiregistery.component.spec.ts new file mode 100644 index 0000000..56bfcc0 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/apiregistery.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ApiregisteryComponent } from './apiregistery.component'; + +describe('ApiregisteryComponent', () => { + let component: ApiregisteryComponent; + let fixture: ComponentFixture; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [ApiregisteryComponent] + }); + fixture = TestBed.createComponent(ApiregisteryComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/apiregistery.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/apiregistery.component.ts new file mode 100644 index 0000000..3abcf3c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/apiregistery.component.ts @@ -0,0 +1,214 @@ +// import { Component } from '@angular/core'; + +// @Component({ +// selector: 'app-apiregistery', +// templateUrl: './apiregistery.component.html', +// styleUrls: ['./apiregistery.component.scss'] +// }) +// export class ApiregisteryComponent { + +// } +import { Component, OnInit, TemplateRef, ViewChild, ViewEncapsulation, } from '@angular/core'; +import { ActivatedRoute, Router } from "@angular/router"; + +import { ToastrService } from 'ngx-toastr'; +import { ExtensionField } from "src/app/models/fnd/ExtensionField"; +import { ExtensionService } from 'src/app/services/fnd/extension.service'; +//import { Teacher } from "src/app/pages/university/teacher/Teacher"; +import { UserInfoService } from "src/app/services/user-info.service"; + +interface Rows { + id: number; + field_name: any; + mapping: any; + data_type: any; + isActive: any; +} +@Component({ + selector: 'app-apiregistery', + templateUrl: './apiregistery.component.html', + styleUrls: ['./apiregistery.component.scss'] +}) +export class ApiregisteryComponent implements OnInit { + @ViewChild("extById") extensionById: TemplateRef; + @ViewChild("showInGrid") txId: TemplateRef; + + //@ViewChild("filter") filter: ElementRef; + basic: boolean = false; + // whoColumns: Teacher; // who columns data + columns: any[]; + rows: Rows[]; + temp = []; + rowSelected: any = {}; + modaldelete = false; + loading = false; + error; + selected: any[] = []; + filterData: string; + isLoading: boolean = false; + extensionField: ExtensionField[] = []; + constructor(private router: Router, + private route: ActivatedRoute, + private toastr: ToastrService, + private extensionService: ExtensionService, + private userInfoService: UserInfoService) { } + + private account_id: any; + // private formCode: any; + formCode: string; + getFormCode; + public key: string = "formCode"; + public storage: Storage = sessionStorage; + ngOnInit(): void { + this.route.queryParams.subscribe(params => { + this.getFormCode = params['formCode']; + console.log("formCode ", this.getFormCode); + this.storage.setItem("formCode", this.getFormCode); // Store the value in sessionStorage using the key + }); + + + this.account_id = this.userInfoService.getUserId(); + this.formCode = this.storage.getItem(this.key); + console.log("[ngOnInit] acc_id: " + this.account_id + " formCode: " + this.formCode); + this.getData(); + this.columns = [ + /* { prop: "id", name: "Actions", width: 65, cellTemplate: this.extensionById }, */ + { prop: "field_name", name: "Field Name", width: 120 }, + { prop: "mapping", name: "Mapping", width: 150 }, + { prop: "data_type", name: "Data Type", width: 190 }, + /* { prop: "id", name: "Show In Grid", width: 90, cellTemplate: this.txId } */ + ]; + } + getData() { + this.isLoading = true; + //this.extensionField = new ExtensionField(); + this.extensionService.getAll().subscribe((data) => { + this.isLoading = false; + console.log(data); + // this.extensionField = data; + if (this.formCode === 'undefined' || this.formCode === undefined || this.formCode === null) { + this.extensionField = data; + } else { + this.extensionField = data.filter(item => item.form_code === this.formCode); + console.log(this.extensionField); + } + this.rows = this.extensionField; + if (this.extensionField.length == 0) { + this.error = "No data Available"; + console.log(this.error) + } + //this.temp = [...this.extensionField]; + }, (error) => { + console.log(error); + if (error) { + this.error = "No data Available OR server Error"; + } + }); + } + + alertType: string; + alertMessage: string = ""; + alert = [ + { type: "success", message: "Build Successfully" }, + { type: "danger", message: "Some error Happens" }, + ]; + + buildExtension(id, accountID) { + console.log("buildExtension() Account id = " + this.account_id + " Form Code = ", + this.formCode); + if (this.account_id === null && this.formCode === null) { + this.alertType = this.alert[1].type; + this.alertMessage = "form_code is null"; + return; + } + this.extensionService + .buildExtension(id, accountID, this.formCode) + .subscribe( + (data) => { + console.log("build successfully ", data); + this.alert.forEach((e) => { + if (e.type === "success") { + this.alertType = e.type; + this.alertMessage = e.message; + } //data.type === true : e.message ? e.message + + }); + // go to parent entry form... + //this.router.navigate(['../../'], { relativeTo: this.route.parent }); + + if (data) { + this.toastr.success("Build successfully"); + } + + + }, + (err) => { + + if (err) { + this.toastr.error("Build Not Successful"); + } + console.log("build failed ", err); + this.alertType = this.alert[1].type; + this.alertMessage = this.alert[1].message; + } + ); + } + + isChecked(id: number) { + return ( + this.extensionField.find(c => { + if (c.id === id) return c.isActive; + }) !== undefined + ); + } + + chk(checked) { + console.log(checked); + return !checked; + } + + extField: ExtensionField; + checked: boolean; + toggle(id: number) { + console.log(id); + this.extensionService.getById(id).subscribe(ext => { + this.extField = ext; + this.checked = ext.isActive; + console.log('extField ', this.extField); + console.log('checked ', this.checked); + }); + console.log(this.extField.isActive); + //this.extensionService.update(id,this.extField).subscribe(); + } + + goToAdd() { + this.router.navigate(["../add"], { relativeTo: this.route }); + } + goToEdit(id: number) { + this.router.navigate(["../edit/" + id], { relativeTo: this.route }); + } + + goToWhoColumns(id: number) { + this.basic = !this.basic; + } + onDelete(row) { + this.rowSelected = row; + this.modaldelete = true; + } + delete(id) { + this.modaldelete = false; + console.log("in delete " + id); + this.extensionService.delete(id).subscribe((data) => { + console.log(data); + this.ngOnInit(); + if (data.body) { + this.toastr.success('Deleted successfully'); + } + }, (error) => { + console.log('Error in adding data...', +error); + if (error) { + this.toastr.error('Not Deleted Data Getting Some Error'); + } + }); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/editapiregistery/editapiregistery.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/editapiregistery/editapiregistery.component.html new file mode 100644 index 0000000..e0fb3d3 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/editapiregistery/editapiregistery.component.html @@ -0,0 +1 @@ +

    editapiregistery works!

    diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/editapiregistery/editapiregistery.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/editapiregistery/editapiregistery.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/editapiregistery/editapiregistery.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/editapiregistery/editapiregistery.component.spec.ts new file mode 100644 index 0000000..8eece98 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/editapiregistery/editapiregistery.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EditapiregisteryComponent } from './editapiregistery.component'; + +describe('EditapiregisteryComponent', () => { + let component: EditapiregisteryComponent; + let fixture: ComponentFixture; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [EditapiregisteryComponent] + }); + fixture = TestBed.createComponent(EditapiregisteryComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/editapiregistery/editapiregistery.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/editapiregistery/editapiregistery.component.ts new file mode 100644 index 0000000..3ea304c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/apiregistery/editapiregistery/editapiregistery.component.ts @@ -0,0 +1,10 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-editapiregistery', + templateUrl: './editapiregistery.component.html', + styleUrls: ['./editapiregistery.component.scss'] +}) +export class EditapiregisteryComponent { + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/dashboard/dashboard.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/dashboard/dashboard.component.html new file mode 100644 index 0000000..e643f0a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/dashboard/dashboard.component.html @@ -0,0 +1,375 @@ + +
    + + +
    +
    +

    {{ item?.charttitle }}

    +

    + + 0 +

    +
    +
    +
    + + + + +
    + + + +
    +
    +

    {{item?.charttitle}}

    + + +
    +
    +
    + +
    +
    +

    {{item?.charttitle}}

    + + +
    +
    +
    + +
    +
    +

    {{item?.charttitle}}

    + + +
    +
    +
    + +
    +
    +

    {{item?.charttitle}}

    + + +
    +
    +
    + +
    +
    +

    {{item?.charttitle}}

    + + +
    +
    +
    + +
    +
    +

    {{item?.charttitle}}

    + + +
    +
    +
    + +
    +
    +

    {{item?.charttitle}}

    + + +
    +
    +
    + +
    +
    +

    {{item?.charttitle}}

    + + +
    +
    +
    + +
    +
    +

    {{item?.charttitle}}

    + + +
    +
    +
    +
    +
    + + + + + +
    + + + + +
    + + +
    +
    + + Avatar + + + + + {{not.notification}} + + {{ not.time | timePipe }} +
    +
    +
    +
    +
    + + + +
    + + + +
    +
    +
    +
    +
    +
    +
    + {{app.owner}} {{app.accessibility ? 'private' : 'public'}} +
    +
    + +
    +
    +
    + {{app.projectName}} +
    +
    +
    + {{app.description ? app.description : 'project description'}} +
    +
    + + +
    +
    +
    +
    + + {{tech}} + +
    + +
    +
    +
    + + +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + +
    +
    \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/dashboard/dashboard.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/dashboard/dashboard.component.scss new file mode 100644 index 0000000..5d88af5 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/dashboard/dashboard.component.scss @@ -0,0 +1,73 @@ +//@import '../../../assets/scss/var'; + +h4{margin-top: 16px;} +.s-order-dash-pg { + margin: 0px; + display:flex; + flex-wrap:wrap; + flex-direction:row; + justify-content:center; + overflow: auto; + overflow-x: hidden; + .chart-box{ + margin:16px; + padding:0 16px; + background-color: #fff; + border:1px solid #ccc; + border-radius: 2px; + max-height: 200px; + + } +} + +.chart-box{ + margin:16px; + padding:0 16px; + background-color: #fff; + border:1px solid #ccc; + border-radius: 2px; + max-width: 400px auto; + overflow: auto; + max-height: 300px auto; + + +} +#word{ + // width: 270px; + width:260px +} +.center{ + text-align: center; + font-weight: 500; +} +.s{ + color: blue; +} + +li{ + list-style-type: none; +} +.progress-bar{ + margin-bottom: 5px; + height: 15px; +} +.tag-input { + width: 100%; + padding: 0px 15px; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; + } + + clr-combobox-container{ + padding-top: 0px !important; + padding-bottom:0px !important; + } + clr-combobox{ + width: 100%; + padding: 5px 5px; + // border: 1px solid #ccc; + border-radius: 4px; + } \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/dashboard/dashboard.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/dashboard/dashboard.component.spec.ts new file mode 100644 index 0000000..5ec4ff8 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/dashboard/dashboard.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DashboardComponent } from './dashboard.component'; + +describe('DashboardComponent', () => { + let component: DashboardComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ DashboardComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(DashboardComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/dashboard/dashboard.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/dashboard/dashboard.component.ts new file mode 100644 index 0000000..653ea4b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/dashboard/dashboard.component.ts @@ -0,0 +1,106 @@ +import { Component, OnInit } from '@angular/core'; +import { ToastrService } from 'ngx-toastr'; +import { DashboardService } from 'src/app/services/builder/dashboard.service'; +import { Dashboard3Service } from 'src/app/services/builder/dashboard3.service'; + +@Component({ + selector: 'app-dashboard', + templateUrl: './dashboard.component.html', + styleUrls: ['./dashboard.component.scss'] +}) +export class DashboardComponent implements OnInit { + + data: any; + rows: any[]; + error; + chartData: any; + + constructor(private dashboard3Service: Dashboard3Service, + private dashboardService: DashboardService,) { } + + ngOnInit(): void { + this.getAllDash(); + this.getdashboard(); + } + dashboardModel; + dashboard_name; + getAllDash(){ + this.dashboard3Service.getDynamicDashDetails().subscribe(data => { + console.log(data); + const dash = data[0].model; + this.dashboardModel= JSON.parse(dash) ; + this.dashboard_name = data.dashboard_name; + + for (let i = 0; i < this.dashboardModel.length; i++) { + if(this.dashboardModel[i]?.charturl){ + this.dashboard3Service.getChartData(this.dashboardModel[i].charturl,this.dashboardModel[i].name).subscribe(tData => { + console.log(tData); + this.dashboardModel[i].featchData = tData; + }); + } + } + console.log(this.dashboardModel); + }); + } + + lineChartData: any[] = []; + radarChartData: any[] = []; + bubbleChartData: any[] = []; + dashboardChartData; + + getdashboard() { + this.chartData = []; + this.radarChartData = []; + this.bubbleChartData = []; + this.lineChartData = []; + this.dashboardService.getAllDash().subscribe( + (data) => { + this.data = data; + const filteredData = this.data.filter(item => item.add_to_home); + + this.rows = filteredData; + + if (filteredData.length === 0) { + this.error = "No data available with add_to_home set to true."; + } else { + this.error = ""; + } + + this.rows.forEach(item => { + if (item['dashbord1_Line'] && Array.isArray(item['dashbord1_Line']) && item['dashbord1_Line'].length > 0) { + item['dashbord1_Line'].forEach(dashboardLineItem => { + if (dashboardLineItem.model) { + const parsedModel = JSON.parse(dashboardLineItem.model); + this.chartData.push(parsedModel); + + this.dashboardChartData = this.chartData[0]?.dashboard; // Add a check here + + // if (this.dashboardChartData) { + for (let i = 0; i < this.dashboardChartData.length; i++) { + console.log(this.dashboardChartData[i]?.charturl); + if (this.dashboardChartData[i]?.charturl) { + this.dashboard3Service.getUrlChartData(this.dashboardChartData[i].table, this.dashboardChartData[i].name, this.dashboardChartData[i].xAxis,this.dashboardChartData[i].yAxis, this.dashboardChartData[i].datastore, this.dashboardChartData[i].charturl + ).subscribe(tData => { + console.log(tData); + this.dashboardChartData[i].featchData = tData; + }); + } + // } + + console.log(this.dashboardChartData); + + // this.lineChartData.push({ data: parsedModel.data, label: dashboardLineItem.name }); + console.log(dashboardLineItem.model); + } + } + }); + } + }); + }, + (error) => { + console.error('Error fetching dashboard data:', error); + }); + + console.log("Chart Data:", this.chartData); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/addextension/addextension.component.css b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/addextension/addextension.component.css new file mode 100644 index 0000000..eb2be77 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/addextension/addextension.component.css @@ -0,0 +1,39 @@ +.button1::after { + content: none; +} + +.button1:hover::after { + content: "ADD ROWS"; +} + +.section { + background-color: #dddddd; + height: 40px; +} + +.section p { + padding: 10px; + font-size: 18px; +} + +.clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + background-color: rgb(255, 255, 255); + margin-top: 3px; + width: 100%; + margin-bottom: 10px; +} + +select { + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; +} + +.center { + text-align: center; +}/*# sourceMappingURL=addextension.component.css.map */ \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/addextension/addextension.component.css.map b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/addextension/addextension.component.css.map new file mode 100644 index 0000000..922569c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/addextension/addextension.component.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["addextension.component.scss","addextension.component.css"],"names":[],"mappings":"AAEA;EACE,aAAA;ACDF;;ADGA;EACE,mBAAA;ACAF;;ADGA;EACE,yBAVS;EAWT,YAAA;ACAF;;ADGA;EAEE,aAAA;EACA,eAAA;ACDF;;ADIA;EACE,cAAA;EACA,yBAAA;EACA,sBAAA;EACA,wBAAA;EACA,oCAAA;EACA,eAAA;EACA,WAAA;EACA,mBAAA;ACDF;;ADGA;EACE,WAAA;EACA,gBAAA;EACA,sBAAA;EACA,kBAAA;ACAF;;ADEA;EACE,kBAAA;ACCF","file":"addextension.component.css"} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/addextension/addextension.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/addextension/addextension.component.html new file mode 100644 index 0000000..263ceaf --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/addextension/addextension.component.html @@ -0,0 +1,52 @@ +

    Extension Field

    +Add Mode
    +
    + +
    + + +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    + +
    + + +
    + +
    +
    +
    + + + + + + + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/addextension/addextension.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/addextension/addextension.component.scss new file mode 100644 index 0000000..1a7e044 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/addextension/addextension.component.scss @@ -0,0 +1,39 @@ +$bg-color: #dddddd; + +.button1::after { + content: none; +} +.button1:hover::after { + content: "ADD ROWS"; +} + +.section { + background-color: $bg-color; + height: 40px; +} + +.section p { + //color: white; + padding: 10px; + font-size: 18px; +} + +.clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + background-color:rgb(255, 255, 255); + margin-top: 3px; + width: 100%; + margin-bottom: 10px; +} +select{ + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; +} +.center { + text-align: center; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/addextension/addextension.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/addextension/addextension.component.spec.ts new file mode 100644 index 0000000..9ab8763 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/addextension/addextension.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AddextensionComponent } from './addextension.component'; + +describe('AddextensionComponent', () => { + let component: AddextensionComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ AddextensionComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(AddextensionComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/addextension/addextension.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/addextension/addextension.component.ts new file mode 100644 index 0000000..874fb4a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/addextension/addextension.component.ts @@ -0,0 +1,94 @@ +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import { ExtensionService } from 'src/app/services/fnd/extension.service'; +@Component({ + selector: 'app-addextension', + templateUrl: './addextension.component.html', + styleUrls: ['./addextension.component.scss'] +}) +export class AddextensionComponent implements OnInit { + public extFieldForm: FormGroup; + submitted = false; + basic:boolean = true; + + isActive: boolean = true; + + formCode: string; + // GET FORM_CODE FROM SESSION + public key:string="formCode"; + public storage:Storage = sessionStorage; + + types:string[] = ['header', 'line']; + lookup_values: string[] = []; // come from server + lookups: string[] =[ + 'extn1', 'extn2', 'extn3', 'extn4', 'extn5', + 'extn6', 'extn7', 'extn8', 'extn9', 'extn10', + 'extn11', 'extn12', 'extn13', 'extn14', 'extn15' + ]; + datatype_values: string[] = []; // come from server + datatypes: string[] = ['textfield', 'longtext', 'date', 'checkbox', 'radiobutton', 'autocomplete']; + constructor( private _fb: FormBuilder, + private router: Router, + private route: ActivatedRoute, + private extensionService: ExtensionService,) { } + + ngOnInit(): void { + this.formCode = this.storage.getItem(this.key); + console.log('form_code in ext : ', this.formCode); + + this.extFieldForm = this._fb.group({ + type: [null, [Validators.required]], // HO + field_name: [null, [Validators.required]], // label name + mapping: [null, [Validators.required]], // ext1 + data_type: [null, [Validators.required]], // txt, datw + form_code: [this.formCode], // should come from session + // isActive: [true] + active: [true] + }); + } + getLookupValues() { + this.extensionService.getLookupValues().subscribe(data => { + console.log('Lookup: ',data); + this.lookup_values = data; + }); + } + + getDataTypeValues() { + this.extensionService.getDataTypeValues().subscribe(data => { + console.log('data_type: ', data); + this.datatype_values = data; + }); + } + + onSubmit() { + console.log(this.extFieldForm.value); + this.basic = !this.basic; + this.submitted = true; + if (this.extFieldForm.invalid) { + return; + } + this.onCreate(); + //this.router.navigate(["../all"], { relativeTo: this.route }); + } + + onCreate() { + this.extensionService.create(this.extFieldForm.value).subscribe( + (data) => { + console.log('data save successfully', data); + this.router.navigate(["../all"], { relativeTo: this.route, queryParams: { formCode: this.formCode }}); + //this.router.navigate(['all'], { relativeTo: this.route.parent }); + }, + (error) => { + console.log(error); + this.router.navigate(["../all"], { relativeTo: this.route, queryParams: { formCode: this.formCode }}); + } + ); + } + + close() { + this.basic = !this.basic; + this.router.navigate(["../all"], { relativeTo: this.route }); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/allextension/allextension.component.css b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/allextension/allextension.component.css new file mode 100644 index 0000000..03b630f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/allextension/allextension.component.css @@ -0,0 +1,64 @@ +input[type=text], [type=date], [type=password] { + width: 100%; + padding: 15px 20px; + background-color: rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} + +.required-field { + color: red; + font-size: 18px; +} + +.green { + background-color: rgb(156, 231, 156); + color: black; +} + +.blue { + background-color: #57abcf; + color: black; +} + +.td-title { + text-align: center; + width: 150px; + color: white; + font-weight: bold; + background-color: rgba(63, 122, 231, 0.863); +} + +th { + background-color: rgb(170, 169, 169); + font-weight: bold; +} + +.td-content { + text-align: left; +} + +.delete, .heading { + text-align: center; + color: red; +} + +.section p { + background-color: rgb(206, 201, 201); + padding: 10px; + font-size: 18px; +} + +select { + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; +} + +.delete, .heading { + text-align: center; + color: red; +}/*# sourceMappingURL=allextension.component.css.map */ \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/allextension/allextension.component.css.map b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/allextension/allextension.component.css.map new file mode 100644 index 0000000..7b2d262 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/allextension/allextension.component.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../../../../styles1.scss","allextension.component.css","allextension.component.scss"],"names":[],"mappings":"AAAA;EACE,WAAA;EACA,kBAAA;EAED,oCAAA;EACC,qBAAA;EACA,sBAAA;EACA,kBAAA;EACA,sBAAA;ACAF;;ADEA;EACE,UAAA;EACF,eAAA;ACCA;;ADEA;EACE,oCAAA;EACA,YAAA;ACCF;;ADCA;EACE,yBAAA;EACA,YAAA;ACEF;;ADAA;EACE,kBAAA;EACA,YAAA;EACF,YAAA;EACE,iBAAA;EACA,2CAAA;ACGF;;ADAA;EACE,oCAAA;EACA,iBAAA;ACGF;;ADDA;EACE,gBAAA;ACIF;;ADFA;EACE,kBAAA;EACA,UAAA;ACKF;;ADHA;EACA,oCAAA;EACE,aAAA;EACA,eAAA;ACMF;;ADHA;EACE,WAAA;EACA,gBAAA;EACA,sBAAA;EACA,kBAAA;ACMF;;ACzDA;EACE,kBAAA;EACA,UAAA;AD4DF","file":"allextension.component.css"} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/allextension/allextension.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/allextension/allextension.component.html new file mode 100644 index 0000000..52701f7 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/allextension/allextension.component.html @@ -0,0 +1,101 @@ + + +
    +
    +
    +

    Form-Extension - {{getFormCode}}

    +
    +
    + + + +
    +
    + + + Loading ... +
    {{error}}
    + + + + + + Go To + + + Field Name + + + Mapping + + + Data Type + + + Action + + + + + + + Build + + {{user.field_name}} + {{user.mapping}} + {{user.data_type}} + + + + + +
    Who Column
    +
    Account ID: {{user.accountId}}
    +
    Created At: {{user.createdAt| date}}
    +
    Created By: {{user.createdBy}}
    +
    Updated At: {{user.updatedAt | date}}
    +
    Updated By: {{user.updatedBy}}
    +
    +
    +
    + + + + + + + +
    Field Name: {{user.field_name}}
    +
    +
    + + + Users per page + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} + of {{pagination.totalItems}} users + + +
    +
    + + + + + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/allextension/allextension.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/allextension/allextension.component.scss new file mode 100644 index 0000000..8d27434 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/allextension/allextension.component.scss @@ -0,0 +1,5 @@ +@import '../../../../../../styles1.scss'; +.delete,.heading{ + text-align: center; + color: red; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/allextension/allextension.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/allextension/allextension.component.spec.ts new file mode 100644 index 0000000..342426c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/allextension/allextension.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AllextensionComponent } from './allextension.component'; + +describe('AllextensionComponent', () => { + let component: AllextensionComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ AllextensionComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(AllextensionComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/allextension/allextension.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/allextension/allextension.component.ts new file mode 100644 index 0000000..7dfdd6f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/allextension/allextension.component.ts @@ -0,0 +1,204 @@ +import { Component, OnInit, TemplateRef, ViewChild, ViewEncapsulation, } from '@angular/core'; +import { ActivatedRoute, Router } from "@angular/router"; + +import { ToastrService } from 'ngx-toastr'; +import { ExtensionField } from "src/app/models/fnd/ExtensionField"; +import { ExtensionService } from 'src/app/services/fnd/extension.service'; +//import { Teacher } from "src/app/pages/university/teacher/Teacher"; +import { UserInfoService } from "src/app/services/user-info.service"; + +interface Rows { + id: number; + field_name: any; + mapping: any; + data_type: any; + isActive: any; +} +@Component({ + selector: 'app-allextension', + templateUrl: './allextension.component.html', + styleUrls: ['./allextension.component.scss'] +}) +export class AllextensionComponent implements OnInit { + @ViewChild("extById") extensionById: TemplateRef; + @ViewChild("showInGrid") txId: TemplateRef; + + //@ViewChild("filter") filter: ElementRef; + basic: boolean = false; + // whoColumns: Teacher; // who columns data + columns: any[]; + rows: Rows[]; + temp = []; + rowSelected: any = {}; + modaldelete = false; + loading = false; + error; + selected: any[] = []; + filterData: string; + isLoading: boolean = false; + extensionField: ExtensionField[] = []; + constructor(private router: Router, + private route: ActivatedRoute, + private toastr: ToastrService, + private extensionService: ExtensionService, + private userInfoService: UserInfoService) { } + + private account_id: any; + // private formCode: any; + formCode: string; + getFormCode; + public key: string = "formCode"; + public storage: Storage = sessionStorage; + ngOnInit(): void { + this.route.queryParams.subscribe(params => { + this.getFormCode = params['formCode']; + console.log("formCode ", this.getFormCode); + this.storage.setItem("formCode", this.getFormCode); // Store the value in sessionStorage using the key + }); + + + this.account_id = this.userInfoService.getUserId(); + this.formCode = this.storage.getItem(this.key); + console.log("[ngOnInit] acc_id: " + this.account_id + " formCode: " + this.formCode); + this.getData(); + this.columns = [ + /* { prop: "id", name: "Actions", width: 65, cellTemplate: this.extensionById }, */ + { prop: "field_name", name: "Field Name", width: 120 }, + { prop: "mapping", name: "Mapping", width: 150 }, + { prop: "data_type", name: "Data Type", width: 190 }, + /* { prop: "id", name: "Show In Grid", width: 90, cellTemplate: this.txId } */ + ]; + } + getData() { + this.isLoading = true; + //this.extensionField = new ExtensionField(); + this.extensionService.getAll().subscribe((data) => { + this.isLoading = false; + console.log(data); + // this.extensionField = data; + if (this.formCode === 'undefined' || this.formCode === undefined || this.formCode === null) { + this.extensionField = data; + } else { + this.extensionField = data.filter(item => item.form_code === this.formCode); + console.log(this.extensionField); + } + this.rows = this.extensionField; + if (this.extensionField.length == 0) { + this.error = "No data Available"; + console.log(this.error) + } + //this.temp = [...this.extensionField]; + }, (error) => { + console.log(error); + if (error) { + this.error = "No data Available OR server Error"; + } + }); + } + + alertType: string; + alertMessage: string = ""; + alert = [ + { type: "success", message: "Build Successfully" }, + { type: "danger", message: "Some error Happens" }, + ]; + + buildExtension(id, accountID) { + console.log("buildExtension() Account id = " + this.account_id + " Form Code = ", + this.formCode); + if (this.account_id === null && this.formCode === null) { + this.alertType = this.alert[1].type; + this.alertMessage = "form_code is null"; + return; + } + this.extensionService + .buildExtension(id, accountID, this.formCode) + .subscribe( + (data) => { + console.log("build successfully ", data); + this.alert.forEach((e) => { + if (e.type === "success") { + this.alertType = e.type; + this.alertMessage = e.message; + } //data.type === true : e.message ? e.message + + }); + // go to parent entry form... + //this.router.navigate(['../../'], { relativeTo: this.route.parent }); + + if (data) { + this.toastr.success("Build successfully"); + } + + + }, + (err) => { + + if (err) { + this.toastr.error("Build Not Successful"); + } + console.log("build failed ", err); + this.alertType = this.alert[1].type; + this.alertMessage = this.alert[1].message; + } + ); + } + + isChecked(id: number) { + return ( + this.extensionField.find(c => { + if (c.id === id) return c.isActive; + }) !== undefined + ); + } + + chk(checked) { + console.log(checked); + return !checked; + } + + extField: ExtensionField; + checked: boolean; + toggle(id: number) { + console.log(id); + this.extensionService.getById(id).subscribe(ext => { + this.extField = ext; + this.checked = ext.isActive; + console.log('extField ', this.extField); + console.log('checked ', this.checked); + }); + console.log(this.extField.isActive); + //this.extensionService.update(id,this.extField).subscribe(); + } + + goToAdd() { + this.router.navigate(["../add"], { relativeTo: this.route }); + } + goToEdit(id: number) { + this.router.navigate(["../edit/" + id], { relativeTo: this.route }); + } + + goToWhoColumns(id: number) { + this.basic = !this.basic; + } + onDelete(row) { + this.rowSelected = row; + this.modaldelete = true; + } + delete(id) { + this.modaldelete = false; + console.log("in delete " + id); + this.extensionService.delete(id).subscribe((data) => { + console.log(data); + this.ngOnInit(); + if (data.body) { + this.toastr.success('Deleted successfully'); + } + }, (error) => { + console.log('Error in adding data...', +error); + if (error) { + this.toastr.error('Not Deleted Data Getting Some Error'); + } + }); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/editextension/editextension.component.css b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/editextension/editextension.component.css new file mode 100644 index 0000000..08a78e8 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/editextension/editextension.component.css @@ -0,0 +1,39 @@ +.button1::after { + content: none; +} + +.button1:hover::after { + content: "ADD ROWS"; +} + +.section { + background-color: #dddddd; + height: 40px; +} + +.section p { + padding: 10px; + font-size: 18px; +} + +.clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + background-color: rgb(255, 255, 255); + margin-top: 3px; + width: 100%; + margin-bottom: 10px; +} + +select { + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; +} + +.center { + text-align: center; +}/*# sourceMappingURL=editextension.component.css.map */ \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/editextension/editextension.component.css.map b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/editextension/editextension.component.css.map new file mode 100644 index 0000000..c952ee2 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/editextension/editextension.component.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["editextension.component.scss","editextension.component.css"],"names":[],"mappings":"AAEA;EACE,aAAA;ACDF;;ADGA;EACE,mBAAA;ACAF;;ADGA;EACE,yBAVS;EAWT,YAAA;ACAF;;ADGA;EAEE,aAAA;EACA,eAAA;ACDF;;ADIA;EACE,cAAA;EACA,yBAAA;EACA,sBAAA;EACA,wBAAA;EACA,oCAAA;EACA,eAAA;EACA,WAAA;EACA,mBAAA;ACDF;;ADGA;EACE,WAAA;EACA,gBAAA;EACA,sBAAA;EACA,kBAAA;ACAF;;ADEA;EACE,kBAAA;ACCF","file":"editextension.component.css"} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/editextension/editextension.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/editextension/editextension.component.html new file mode 100644 index 0000000..cbb8bda --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/editextension/editextension.component.html @@ -0,0 +1,40 @@ +

    FORM EXTENSION

    +Edit Mode
    +
    + + +
    +
    +
    +
    + + +
    + +
    + + +
    + +
    + + +
    + +
    + + +
    +
    +
    +
    + +
    +
    +
    diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/editextension/editextension.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/editextension/editextension.component.scss new file mode 100644 index 0000000..1a7e044 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/editextension/editextension.component.scss @@ -0,0 +1,39 @@ +$bg-color: #dddddd; + +.button1::after { + content: none; +} +.button1:hover::after { + content: "ADD ROWS"; +} + +.section { + background-color: $bg-color; + height: 40px; +} + +.section p { + //color: white; + padding: 10px; + font-size: 18px; +} + +.clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + background-color:rgb(255, 255, 255); + margin-top: 3px; + width: 100%; + margin-bottom: 10px; +} +select{ + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; +} +.center { + text-align: center; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/editextension/editextension.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/editextension/editextension.component.spec.ts new file mode 100644 index 0000000..a8dd592 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/editextension/editextension.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EditextensionComponent } from './editextension.component'; + +describe('EditextensionComponent', () => { + let component: EditextensionComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ EditextensionComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(EditextensionComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/editextension/editextension.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/editextension/editextension.component.ts new file mode 100644 index 0000000..015a153 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/editextension/editextension.component.ts @@ -0,0 +1,71 @@ +import { HttpErrorResponse } from '@angular/common/http'; +import { Component, OnInit } from '@angular/core'; +import { ActivatedRoute, Router } from '@angular/router'; +import { ExtensionField } from 'src/app/models/fnd/ExtensionField'; +import { ExtensionService } from 'src/app/services/fnd/extension.service'; + +interface Rows { + id: number; + firstName: string; + lastName: string; + email: string; + createdAt: Date; + updatedAt: Date; +} +@Component({ + selector: 'app-editextension', + templateUrl: './editextension.component.html', + styleUrls: ['./editextension.component.scss'] +}) +export class EditextensionComponent implements OnInit { + types:string[] = ['header', 'line']; + lookup_values: string[] = []; // come from server + lookups: string[] =[ + 'extn1', 'extn2', 'extn3', 'extn4', 'extn5', + 'extn6', 'extn7', 'extn8', 'extn9', 'extn10', + 'extn11', 'extn12', 'extn13', 'extn14', 'extn15' + ]; + datatype_values: string[] = []; // come from server + datatypes: string[] = ['textfield', 'longtext', 'date', 'checkbox', 'radiobutton', 'autocomplete']; + + + updated = false; + extensionField: ExtensionField; + id: number; + constructor(private router: Router, + private route: ActivatedRoute, + private extensionService: ExtensionService) { } + + ngOnInit(): void { + this.extensionField = new ExtensionField(); + this.id = this.route.snapshot.params["id"]; + console.log("update with id = ", this.id); + this.getById(this.id); + } + getById(id: number) { + this.extensionService.getById(id).subscribe((data) => { + console.log(data); + this.extensionField = data; + }); + } + update() { + this.extensionService.update(this.id, this.extensionField).subscribe( + (data) => { + console.log(data); + this.router.navigate(["../../all"], { relativeTo: this.route, queryParams: { formCode: this.extensionField.form_code }}); + }, + (error: HttpErrorResponse) => { + console.log(error.message); + } + ); + } + + onSubmit() { + this.updated = true; + this.update(); + } + + back() { + this.router.navigate(["../../all"], { relativeTo: this.route, queryParams: { formCode: this.extensionField.form_code } }); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/extension.component.css b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/extension.component.css new file mode 100644 index 0000000..87d9fed --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/extension.component.css @@ -0,0 +1 @@ +/*# sourceMappingURL=extension.component.css.map */ \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/extension.component.css.map b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/extension.component.css.map new file mode 100644 index 0000000..1113c5f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/extension.component.css.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":"","file":"extension.component.css"} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/extension.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/extension.component.html new file mode 100644 index 0000000..6c46b1d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/extension.component.html @@ -0,0 +1 @@ + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/extension.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/extension.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/extension.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/extension.component.spec.ts new file mode 100644 index 0000000..56890ae --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/extension.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ExtensionComponent } from './extension.component'; + +describe('ExtensionComponent', () => { + let component: ExtensionComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ExtensionComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ExtensionComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/extension.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/extension.component.ts new file mode 100644 index 0000000..483aedf --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/extension/extension.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-extension', + templateUrl: './extension.component.html', + styleUrls: ['./extension.component.scss'] +}) +export class ExtensionComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/main-page/main-page.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/main-page/main-page.component.html new file mode 100644 index 0000000..873f882 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/main-page/main-page.component.html @@ -0,0 +1,3 @@ + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/main-page/main-page.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/main-page/main-page.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/main-page/main-page.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/main-page/main-page.component.spec.ts new file mode 100644 index 0000000..39261a3 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/main-page/main-page.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MainPageComponent } from './main-page.component'; + +describe('MainPageComponent', () => { + let component: MainPageComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ MainPageComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(MainPageComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/main-page/main-page.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/main-page/main-page.component.ts new file mode 100644 index 0000000..9873121 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/main-page/main-page.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-main-page', + templateUrl: './main-page.component.html', + styleUrls: ['./main-page.component.scss'] +}) +export class MainPageComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/sequencegenarator/sequencegenarator.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/sequencegenarator/sequencegenarator.component.html new file mode 100644 index 0000000..30fdb9f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/sequencegenarator/sequencegenarator.component.html @@ -0,0 +1,243 @@ + + +
    +
    +
    +

    {{ 'SEQ_GENERATOR' | translate }}

    +
    + +
    + + +
    +
    + + + + + Loading ... + +
    {{error}}
    +
    + + + {{ 'CURRENT_NO' | translate }} + + + + + {{ 'NAME' | translate }} + + + + + {{ 'PREFIX' | translate }} + + + + + + {{ 'SEPARATOR' | translate }} + + + + + + {{ 'SEQUENCE_SIZE' | translate }} + + + + + {{user.current_no}} + {{user.sequence_name}} + {{user.prefix}} + {{user.seperator}} + {{user.sequence_size}} + + + + + + + + + + + + {{ 'USERS_PER_PAGE' | translate + }} + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} of {{pagination.totalItems}} users + + +
    +
    + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/sequencegenarator/sequencegenarator.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/sequencegenarator/sequencegenarator.component.scss new file mode 100644 index 0000000..52f40a2 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/sequencegenarator/sequencegenarator.component.scss @@ -0,0 +1,72 @@ +input[type=text],[type=number], +[type=date], +[type=password] { + width: 100%; + padding: 15px 20px; + // margin: 3px 0; + background-color: rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} + +.required-field { + color: red; + font-size: 18px; +} + +.green { + background-color: rgb(156, 231, 156); + color: black; +} + +.blue { + background-color: #57abcf; //rgb(82, 87, 161); + color: black; +} + +.td-title { + text-align: center; + width: 150px; + color: white; + font-weight: bold; + background-color: rgba(63, 122, 231, 0.863); + //color: rgb(24, 13, 13); +} + +th { + //background-color:rgb(170, 169, 169); + font-weight: bold; +} + +.td-content { + text-align: left; +} + +.delete, +.heading { + text-align: center; + color: red; +} + +.section p { + background-color: rgb(206, 201, 201); + padding: 10px; + font-size: 18px; +} + +select { + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; +} + +input.ng-invalid.ng-touched { + border-color: red; +} + +.error_mess { + color: red; +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/sequencegenarator/sequencegenarator.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/sequencegenarator/sequencegenarator.component.spec.ts new file mode 100644 index 0000000..5981aa5 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/sequencegenarator/sequencegenarator.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SequencegenaratorComponent } from './sequencegenarator.component'; + +describe('SequencegenaratorComponent', () => { + let component: SequencegenaratorComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ SequencegenaratorComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(SequencegenaratorComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/sequencegenarator/sequencegenarator.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/sequencegenarator/sequencegenarator.component.ts new file mode 100644 index 0000000..a9dea2a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/fnd/sequencegenarator/sequencegenarator.component.ts @@ -0,0 +1,190 @@ +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import { ToastrService } from 'ngx-toastr'; +import { SequenceService } from 'src/app/services/api/sequence.service'; +import { ExcelService } from 'src/app/services/excel.service'; +import * as moment from 'moment'; +import { HttpErrorResponse } from '@angular/common/http'; +@Component({ + selector: 'app-sequencegenarator', + templateUrl: './sequencegenarator.component.html', + styleUrls: ['./sequencegenarator.component.scss'] +}) +export class SequencegenaratorComponent implements OnInit { + loading = false; + selected: any[] = []; + workflow_data; + rowSelected: any = {}; + modaldelete = false; + error; + alldata = []; + modaladd = false; + modaledit = false; + submitted = false; + + public entryForm: FormGroup; + constructor(private seqservice: SequenceService, private router: Router, private toastr: ToastrService, private _fb: FormBuilder, + private route: ActivatedRoute, private excel: ExcelService) { } + + ngOnInit(): void { + this.getall(); + this.entryForm = this._fb.group({ + prefix: [null], + sequence_size: [null], + suffix: [null], + starting_no: [null], + seperator: [null], + + sequence_name: [null], + sequence_code: [null], + demonstration: [null], + + current_no: [null] + }); + } + getall() { + this.seqservice.getAll().subscribe((data) => { + console.log(data); + this.alldata = data; + + if (this.alldata.length == 0) { + console.log('zero data '); + this.error = "No data Available!" + } + }, (error) => { + console.log(error); + if (error) { + this.error = "No data Available OR server Error"; + } + + }) + } + // onSubmit(){ + // console.log(this.entryForm.value); + // this.seqservice.create(this.entryForm.value).subscribe((data)=>{ + // console.log(data); + // if (data) { + // this.toastr.success('Added successfully'); + // } + // }, + // (error) => { + // console.log('Error in adding data...',+error); + // if(error){ + // this.toastr.error('Not added Data'); + // } + + // }); + // this.modaladd=false; + // } + + + onSubmit() { + console.log(this.entryForm.value); + this.submitted = true + if (this.entryForm.invalid) { + return + } + this.onCreate(); + + } + + + onCreate() { + this.modaladd = false; + this.seqservice.create(this.entryForm.value).subscribe( + (data) => { + console.log(data); + if (data || data.status >= 200 && data.status <= 299) { + this.toastr.success("Added Succesfully"); + this.ngOnInit(); + } + }, (error) => { + if (error.status >= 200 && error.status <= 299) { + this.toastr.success("Added Succesfully"); + this.ngOnInit(); + } + if (error.status >= 400 && error.status <= 499) { + this.toastr.error("Not Added"); + this.ngOnInit(); + } + if (error.status >= 500 && error.status <= 599) { + this.toastr.error("Server Error"); + this.ngOnInit(); + } + }); + } + + + goToAdd() { + this.modaladd = true; + + } + + onExport() { + this.excel.exportAsExcelFile(this.alldata, 'user_', + moment().format('YYYYMMDD_HHmmss')) + } + + goToEdit(row) { + this.rowSelected = row; + console.log(row) + this.modaledit = true; + } + onDelete(row) { + this.rowSelected = row; + this.modaldelete = true; + } + + delete(id) { + this.modaldelete = false; + console.log("in delete " + id); + this.seqservice.delete(id).subscribe((data) => { + console.log(data); + if (data == null || data.status >= 200 && data.status <= 299) { + this.toastr.success('Deleted successfully'); + this.ngOnInit(); + } + }, + (error) => { + console.log(error); + if (error.status >= 200 && error.status <= 299) { + this.toastr.success('Deleted successfully'); + this.ngOnInit(); + } + if (error.status >= 400 && error.status <= 499) { + this.toastr.error('Not Deleted Data Getting Some Error'); + this.ngOnInit(); + } + if (error.status >= 500 && error.status <= 599) { + this.toastr.error('Server Error'); + this.ngOnInit(); + } + }); + + } + onUpdate(id) { + this.modaledit = false; + this.seqservice.update(id, this.rowSelected).subscribe((data) => { + console.log(data); + if (data || data.status >= 200 && data.status <= 299) { + this.toastr.success("Update Succesfully"); + this.ngOnInit(); + } + }, (error: HttpErrorResponse) => { + console.log(error?.message); + if (error.status >= 200 && error.status <= 299) { + this.toastr.success("Update Succesfully"); + this.ngOnInit(); + } + if (error.status >= 400 && error.status <= 499) { + this.toastr.error("Not Update"); + this.ngOnInit(); + } + if (error.status >= 500 && error.status <= 599) { + this.toastr.error("Server Error"); + this.ngOnInit(); + } + }); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/layout/layout.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/layout/layout.component.html new file mode 100644 index 0000000..8883c9d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/layout/layout.component.html @@ -0,0 +1,232 @@ + + +
    + + +
    + +
    + + {{ sysparameter?.company_Display_Name }} + + + CloudnSure + + +
    + + + + + + + + + + +
    + + + + + About + Profile Settings + + + + + + + + English + + + Hindi + + + Tamil + + + Punjabi + + + Malayalam + + + + + Change Password + Log out + + + +
    +
    + +
    +
    + +
    + + + + +
    + + +
    + + + + + {{ menu.menuItemDesc }} + + + + + {{ subnav.menuItemDesc }} + + + + + + + + + + {{ menu.menuItemDesc }} + + +
    + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + +
    + + + + + + + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/layout/layout.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/layout/layout.component.scss new file mode 100644 index 0000000..77f629a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/layout/layout.component.scss @@ -0,0 +1,104 @@ +input[type=text],[type=date], select,textarea { + width: 100%; + padding: 12px 20px; + margin: 8px 0; + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} +.center-content { + //width: 100%; + // max-width: 800px; + margin: auto; + // padding: 0 15px; + // display: flex; + // flex-direction: row; + // align-items: center; + // justify-content: center; + // flex-wrap: wrap; + // text-align: center; +} +/* Adjust the language button to be white and center its content vertically */ +.lang-btn { + padding: 12px 15px; + background-color: #007bff; /* Blue background */ + color: white; /* White text color */ + border: none; + border-radius: 5px; + display: flex; + align-items: center; + justify-content: space-between; + font-size: 16px; + font-weight: 500; + cursor: pointer; + transition: all 0.3s ease; +} + +.lang-btn:hover { + background-color: #0056b3; /* Darker blue on hover */ +} + +.lang-btn .language-icon, +.lang-btn .caret-icon { + color: white; /* White color for icons */ +} + +/* Make sure the label inside the button is also white */ +.lang-btn .language-label { + color: white; /* White color for the text */ + margin-right: 8px; +} + +/* Center the dropdown menu */ +.lang-dropdown-menu { + background-color: #f8f9fa; + border-radius: 5px; + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); + max-width: 200px; + font-size: 14px; +} + +/* Style for each item in the dropdown */ +.lang-item { + padding: 10px; + display: flex; + align-items: center; + color: #333; /* Default text color for dropdown items */ + text-decoration: none; + transition: background-color 0.3s ease; +} + +.lang-item:hover { + background-color: #016692; /* Blue on hover */ + color: white; /* White text on hover */ +} + +/* Icon style inside each dropdown item */ +.lang-icon { + margin-right: 10px; + color: #007bff; /* Blue color for icons in dropdown */ +} + +/* Change text and icon to white when the dropdown is active */ +.lang-item .lang-icon { + color: white; +} + +/* Add some padding for top center positioning */ +.clr-dropdown button { + padding-top: 10px; /* Adjust top padding as needed */ + padding-bottom: 10px; /* Ensure button is evenly spaced */ +} + +/* Optional: Add a separator between the dropdown items */ +.lang-item:not(:last-child) { + border-bottom: 1px solid #ddd; +} + +/* Ensure proper alignment of the dropdown icon and label */ +.clr-dropdown button .language-label, +.clr-dropdown button .language-icon { + display: inline-block; + vertical-align: middle; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/layout/layout.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/layout/layout.component.spec.ts new file mode 100644 index 0000000..c4d6365 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/layout/layout.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { LayoutComponent } from './layout.component'; + +describe('LayoutComponent', () => { + let component: LayoutComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ LayoutComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(LayoutComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/layout/layout.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/layout/layout.component.ts new file mode 100644 index 0000000..7747324 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/layout/layout.component.ts @@ -0,0 +1,309 @@ + +import { Component,ViewEncapsulation, OnInit, Input } from '@angular/core'; +import { Router,ActivatedRoute } from '@angular/router'; +import { LoginService } from '../../../services/api/login.service'; +import { UserInfoService} from '../../../services/user-info.service'; +import { RealnetMenuService } from '../../../services/api/realnet-menu.service'; +import { Rn_Main_Menu } from '../../../models/builder/Rn_Main_Menu'; +import { MenuGroupService } from '../../../services/admin/menu-group.service'; +// import { GuidedTour, Orientation} from '../ngx-guided-tour/src/lib/guided-tour.constants'; +// import { GuidedTourService } from '../ngx-guided-tour/src/lib/guided-tour.service'; +// import { TourService } from '../ngx-guided-tour/src/lib/tour.service'; +import { ToastrService } from 'ngx-toastr'; +import { environment } from 'src/environments/environment'; +import { SysparameterService } from 'src/app/services/admin/sysparameter.service'; +import { ReportBuilderService } from 'src/app/services/api/report-builder.service'; +import { map } from 'rxjs'; + +import { RouterModule } from '@angular/router'; +import { ProjectSetup } from 'src/app/models/builder/Project_setup'; +import { Dashboard3Service } from 'src/app/services/builder/dashboard3.service'; + +import { TranslateService } from '@ngx-translate/core'; + +@Component({ + selector: 'app-layout', + templateUrl: './layout.component.html', + styleUrls: ['./layout.component.scss'] +}) +export class LayoutComponent implements OnInit { + // baseUrl= environment.chaturl; + @Input() data:any; + + loading = false; + apps: Array = []; + projectsetup; + + collapsed = true; + public showAppAlert:boolean = false; +modalteam=false; + public userName: string=""; + + private formCode: string ='teacher_form'; + public key:string="formCode"; + public storage:Storage = sessionStorage; + + constructor( + private router: Router, + private route: ActivatedRoute, + private userInfoService:UserInfoService, + private realnetMenuService: RealnetMenuService, + private menuGroupService: MenuGroupService, + private sysparaservice:SysparameterService, + private reportBuilderService: ReportBuilderService, + private dashboardService : Dashboard3Service, + private translate: TranslateService, + // private guidedTourService: GuidedTourService, + // private tourservice: TourService, + private toastr: ToastrService, + ) { + this.translate.setDefaultLang('en'); + this.userName = this.userInfoService.getUserName(); + this.reportBuilderService.getrbDetails().subscribe((data) => { + this.gridData = data; + }); + } + + + + switchLanguage(language: string): void { + this.translate.use(language); // Switch to the selected language + } + user_name : any; + userrole:any; + menus: Rn_Main_Menu[]; + menu:any; + tourdata; + steps; + error; + ngOnInit() { + this.storage.setItem(this.key, this.formCode); + this.user_name = this.userInfoService.getUserName(); + console.log('user name: ' + this.user_name); + this.userrole=this.userInfoService.getRoles(); + console.log('user_role',this.userrole); + this.udata=this.userInfoService.getUserId(); + console.log('user id',this.udata); + this.loadMenuByAccountId(); + this.loadMenuByMenuGroup(); + this.getById(1); +// this.tourservice.getall().subscribe((data)=>{ +// this.tourdata=data[1]; +// //console.log("tour data",data); +// console.log(this.tourdata); +// //console.log(this.tourdata.tourId); +// //console.log(this.tourdata.useOrb); +// //this.steps=JSON.stringify(this.tourdata.steps); +// // console.log(this.tourdata.steps); +// //this.dashboardTour.tourId=this.tourdata.tourId; +// //console.log(this.dashboardTour.tourId); +// //this.dashboardTour.useOrb=this.tourdata.useOrb; +// // this.dashboardTour.steps=this.tourdata.steps; +// }); +} + + + + +showFolderNames: boolean = false; // Variable to control the report names display +reportNames: any[] = []; // Store the report names + +// getName() { +// this.reportBuilderService.getrbDetails().pipe( +// map((data) => data.map((item) => item.folderName)) +// ).subscribe((reportName) => { +// this.reportNames = reportName; +// // this.showReportNames = true; // Toggle on +// console.log('Report Names:', this.reportNames); +// }); + +// } + + +getName() { + if (this.showFolderNames) { + // If in report mode, switch to default mode + this.showFolderNames = false; + } else { + // If in default mode, switch to report mode + this.reportBuilderService.getrbDetails().pipe( + map((data) => data.map((item) => item.folderName)) + ).subscribe( + (folderName) => { + this.reportNames = folderName; + console.log('Report Names:', this.reportNames); + this.showFolderNames = true; + },); + } +} + +filteredGridData: any[] = []; +gridData: any[] = []; +// Function to filter the data based on the selected folder +filterGridDataByFolder(folderName: string) { + this.filteredGridData = this.gridData.filter(item => item.folderName === folderName); +} + +showDashNames: boolean = false; +dashNames: any[] = []; +getDashName() { + if (this.showDashNames) { + // If in report mode, switch to default mode + this.showDashNames = false; + } else { + // If in default mode, switch to report mode + this.dashboardService.getAllDash().pipe( + map((data) => data.map((item) => item.dashboard_name)) + ).subscribe( + (dashboard_name) => { + this.dashNames = dashboard_name; + console.log('Dashboard Names:', this.dashNames); + // this.showFolderNames = true; + this.showDashNames = true; + },); + } +} + + + + + + + +showSetupMenus: boolean = false; +toggleSetupMenus() { + this.showSetupMenus = !this.showSetupMenus; + +} + + + + + + + + +// side nav menu-sub_menu +loadMenuByAccountId() { + this.realnetMenuService.getByAccountId().subscribe(resp => { + this.menus = resp; + console.log('menu: ', this.menus); + }); +} + +loadMenuByMenuGroup() { + this.menuGroupService.getByCurrentUserMenuGroupId2().subscribe(resp => { + this.menus = resp; + console.log('menus: ', this.menus); + },(error) => { + console.log(error); + if(error){ + this.error="No data Available OR server Error"; + } + if (error.status === 401) { + // auto logout if 401 response returned from api + // this.authenticationService.logout(); + this.toastr.error("Your Token Is Expire Plz login Again") + //location.reload(true); +} + }) +} +sysparameter; +getById(id: number) { + this.sysparaservice.getById(id).subscribe((data) => { + this.sysparameter = data; + console.log("getbyiddata",this.sysparameter); + }, + (err) => { + console.log(err); + } + ); +} + + +/* menuGroup: Rn_Menu_Group_Header[]; +menu_id: number; +loadMenuGroupData() { + this.menuGroupService.getAll().subscribe(resp => { + this.menuGroup = resp; + this.menu_id = this.menuGroup + }); +} */ + + + + + +navbarSelectionChange(val){ + // console.log(val); +} + +closeAppAlert(){ + this.showAppAlert=false; +} + +isDisabled(input: string): boolean{ + if(input === null) { + return true; + } else false; +} + + + onLogout() { + this.userInfoService.logout().subscribe((data)=>{ + console.log(data); + }); + sessionStorage.clear(); + this.router.navigate(['login']); + } + menuFlag = true; + menuFlag1 = false; + udata; + uid; + message(){ + //this.menuFlag = false; + // this.menuFlag1 = true; +// this.menuGroupService.getuser(this.udata).subscribe((data)=>{ +// console.log(data); +// }) +// window.open(`${this.baseUrl}`) + //window.location.href = `${this.baseUrl}`; + //this.udata=this.userInfoService.getUserInfo(); + //console.log(this.udata); + + this.menuGroupService.save(this.udata); + + this.uid=this.udata.userid; + localStorage.setItem("id", JSON.stringify(this.udata)); + //localStorage.setItem('id', this.uid); + //window.location.href = (`${this.baseUrl}/` + this.udata), true + //this.router.navigate([`${this.baseUrl}`], { relativeTo: this.route ,queryParams: { id: this.udata }}); + + //this.router.navigate(["../sureboard"],{relativeTo: this.route, queryParams: { userid: this.udata }}); + //this.router.navigate([`${this.baseUrl}`],{relativeTo: this.route, queryParams: { userid: this.udata }}); + //this.udata = this.userInfoService.getUserInfo(); + //this.userInfoService.storeUserInfo(JSON.stringify(this.udata.user)); + }// + + modaladd(){ + //this.modalteam=true; + this.router.navigate(['/cns-portal/myworkspace']); + } + mc; + me; + md; + mv; + send(val){ + console.log(val); + this.menuGroupService.storeaddeditvalues(val); +this.mc=val.mcreate; +this.me=val.medit; +this.md=val.mdelete; +this.mv=val.mvisible; +if(this.mv == 'false'){ + this.router.navigate(['/**']) +} + this.router.navigate(['./'+ val.main_menu_action_name] , { relativeTo: this.route}); + } + //skipLocationChange: true, value pass params->,queryParams:{mc:this.mc,me:this.me,md:this.md} +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/main-page/main-page.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/main-page/main-page.component.html new file mode 100644 index 0000000..873f882 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/main-page/main-page.component.html @@ -0,0 +1,3 @@ + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/main-page/main-page.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/main-page/main-page.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/main-page/main-page.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/main-page/main-page.component.spec.ts new file mode 100644 index 0000000..39261a3 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/main-page/main-page.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MainPageComponent } from './main-page.component'; + +describe('MainPageComponent', () => { + let component: MainPageComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ MainPageComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(MainPageComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/main-page/main-page.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/main-page/main-page.component.ts new file mode 100644 index 0000000..9873121 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/main-page/main-page.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-main-page', + templateUrl: './main-page.component.html', + styleUrls: ['./main-page.component.scss'] +}) +export class MainPageComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/main-routing.module.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/main-routing.module.ts new file mode 100644 index 0000000..5b6b3b6 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/main-routing.module.ts @@ -0,0 +1,287 @@ + +import { SequencegenaratorComponent } from './fnd/sequencegenarator/sequencegenarator.component'; +import { Component, NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; +import { MainPageComponent } from '../main/fnd/main-page/main-page.component'; +import { PageNotFoundComponent } from './page-not-found/page-not-found.component'; +import { AboutComponent } from '../main/admin/about/about.component'; +import { LayoutComponent } from './layout/layout.component'; +import { UserComponent } from '../main/admin/user/user.component'; + +import { PasswordResetComponent } from '../main/admin/password-reset/password-reset.component'; +import { DashboardComponent } from '../main/fnd/dashboard/dashboard.component'; +import { AllMenuGroupComponent } from '../main/admin/menu-group/all/all-menu-group.component'; +import { EditMenuGroupComponent } from '../main/admin/menu-group/edit/edit-menu-group.component'; +import { MenuGroupComponent } from '../main/admin/menu-group/menu-group.component'; +import { ReadOnlyMenuGroupComponent } from '../main/admin/menu-group/read-only/readonly-menu-group.component'; +import { MenuRegisterComponent } from '../main/admin/menu-register/menu-register.component'; +import { AllMenurComponent } from '../main/admin/menu-register/all-menur/all-menur.component'; +import { AddMenurComponent } from '../main/admin/menu-register/add-menur/add-menur.component'; +import { EditMenurComponent } from '../main/admin/menu-register/edit-menur/edit-menur.component'; +import { ReadonlyMenurComponent } from '../main/admin/menu-register/readonly-menur/readonly-menur.component'; +import { ProfileSettingComponent } from '../main/admin/profile-setting/profile-setting.component'; +import { UsermaintanceComponent } from '../main/admin/usermaintance/usermaintance.component'; +import { UsermaintanceaddComponent } from '../main/admin/usermaintanceadd/usermaintanceadd.component'; +import { UsermaintanceeditComponent } from '../main/admin/usermaintanceedit/usermaintanceedit.component'; +import { UsergrpmaintenanceComponent } from '../main/admin/usergrpmaintenance/usergrpmaintenance.component'; +import { MenuaccesscontrolComponent } from '../main/admin/menuaccesscontrol/menuaccesscontrol.component'; +import { AuthGuard } from '../../services/auth_guard.service'; + +import { SystemparametersComponent } from '../main/admin/systemparameters/systemparameters.component'; +import { MenumaintanceComponent } from '../main/admin/menumaintance/menumaintance.component'; + +import { SubmenuComponent } from './admin/submenu/submenu.component'; + +import { Role } from '../../models/admin/role'; +import { AccesstypeComponent } from './admin/accesstype/accesstype.component'; +import { ModulesComponent } from './admin/modules/modules.component'; + +import { SessionloggerComponent } from './admin/sessionlogger/sessionlogger.component'; +import { ReportRunnerComponent } from './builder/report-runner/report-runner.component'; +import { ReportrunnerallComponent } from './builder/report-runner/reportrunnerall/reportrunnerall.component'; +import { Reportrunneredit2Component } from './builder/report-runner/reportrunneredit2/reportrunneredit2.component'; +import { ReportrunnereditComponent } from './builder/report-runner/reportrunneredit/reportrunneredit.component'; +import { ReportBuildComponent } from './builder/report-build/report-build.component'; +import { ReportbuildallComponent } from './builder/report-build/reportbuildall/reportbuildall.component'; +import { ReportbuildaddComponent } from './builder/report-build/reportbuildadd/reportbuildadd.component'; +import { ReportbuildeditComponent } from './builder/report-build/reportbuildedit/reportbuildedit.component'; +import { ReportbuildqueryComponent } from './builder/report-build/reportbuildquery/reportbuildquery.component'; +import { ReportBuild2Component } from './builder/report-build2/report-build2.component'; +import { ReportBuild2allComponent } from './builder/report-build2/report-build2all/report-build2all.component'; +import { ReportBuild2addComponent } from './builder/report-build2/report-build2add/report-build2add.component'; +import { ReportBuild2editComponent } from './builder/report-build2/report-build2edit/report-build2edit.component'; + + +import { DashboardnewComponent } from './builder/dashboardnew/dashboardnew.component'; +import { AllnewdashComponent } from './builder/dashboardnew/allnewdash/allnewdash.component'; +import { AddnewdashComponent } from './builder/dashboardnew/addnewdash/addnewdash.component'; +import { EditformnewdashComponent } from './builder/dashboardnew/editformnewdash/editformnewdash.component'; +import { EditnewdashComponent } from './builder/dashboardnew/editnewdash/editnewdash.component'; +import { ScheduleComponent } from './builder/dashboardnew/schedule/schedule.component'; +import { SetupiconComponent } from './builder/setupicon/setupicon.component'; +import { ExtensionComponent } from './fnd/extension/extension.component'; +import { AllextensionComponent } from './fnd/extension/allextension/allextension.component'; +import { AddextensionComponent } from './fnd/extension/addextension/addextension.component'; +import { EditextensionComponent } from './fnd/extension/editextension/editextension.component'; +import { DashboardrunnerComponent } from './builder/dashboardrunner/dashboardrunner.component'; +import { DashrunnerallComponent } from './builder/dashboardrunner/dashrunnerall/dashrunnerall.component'; +import { DashrunnerlineComponent } from './builder/dashboardrunner/dashrunnerline/dashrunnerline.component'; + +import { ApiregisteryComponent } from './fnd/apiregistery/apiregistery.component'; + +import { DatamanagementComponent } from './datamanagement/datamanagement/datamanagement.component'; +import { DatamananementworkflowComponent } from './datamanagement/datamananementworkflow/datamananementworkflow.component'; +import { BulkimportComponent } from './datamanagement/bulkimport/bulkimport.component'; +import { BulkimportallComponent } from './datamanagement/bulkimport/bulkimportall/bulkimportall.component'; +import { BulkimportaddComponent } from './datamanagement/bulkimport/bulkimportadd/bulkimportadd.component'; +import { BulkimporteditComponent } from './datamanagement/bulkimport/bulkimportedit/bulkimportedit.component'; +import { BulkimportlineComponent } from './datamanagement/bulkimport/bulkimportline/bulkimportline.component'; +import { BulkimporteditlineComponent } from './datamanagement/bulkimport/bulkimporteditline/bulkimporteditline.component'; +import { MappingruleComponent } from './datamanagement/mappingrule/mappingrule.component'; +import { MappingruleallComponent } from './datamanagement/mappingrule/mappingruleall/mappingruleall.component'; +import { MappingruleaddComponent } from './datamanagement/mappingrule/mappingruleadd/mappingruleadd.component'; +import { MappingruleeditComponent } from './datamanagement/mappingrule/mappingruleedit/mappingruleedit.component'; +import { Stepper_workflowComponent } from './BuilderComponents/stepperworkflow/Stepper_workflow/Stepper_workflow.component'; +import { Token_registeryComponent } from './fnd/Token_registery/Token_registery.component'; +import { MyworkspaceComponent } from './admin/myworkspace/myworkspace.component'; + +// import { QueryComponent } from './superadmin/query/query.component'; +// import { QueryaddComponent } from './superadmin/queryadd/queryadd.component'; +// import { QueryeditComponent } from './superadmin/queryedit/queryedit.component'; + + + + +const routes: Routes = [ + //Important: The sequence of path is important as the router go over then in sequential manner + { path: '', redirectTo: '/cns-portal/dashboard', pathMatch: 'full' }, + { + path: 'cns-portal', + component: LayoutComponent, + canActivate: [AuthGuard], + children: [ + { path: '', redirectTo: 'user', pathMatch: 'full' }, + { path: 'main', component: MainPageComponent }, + { path: 'user', component: UserComponent }, + + + + + { path: 'usermaintance', component: UsermaintanceComponent }, + { path: 'usermaintanceadd', component: UsermaintanceaddComponent }, + { path: 'usermaintancedit/:id', component: UsermaintanceeditComponent }, + { path: 'usergrpmaintance', component: UsergrpmaintenanceComponent }, + { path: 'menuaccess', component: MenuaccesscontrolComponent }, + { path: 'systemparameters', component: SystemparametersComponent }, + { path: 'menumaintance', component: MenumaintanceComponent }, + { path: 'submenu/:id', component: SubmenuComponent }, + + { path: 'passwordreset', component: PasswordResetComponent }, + { path: 'profile-settings', component: ProfileSettingComponent }, + { path: 'about', component: AboutComponent }, + { path: 'setupicon', component: SetupiconComponent }, + { path: 'myworkspace', component: MyworkspaceComponent }, + + + { + path: 'reportbuild', component: ReportBuildComponent, + children: [ + { path: '', redirectTo: 'all', pathMatch: 'full' }, + { path: 'all', component: ReportbuildallComponent }, + { path: 'add', component: ReportbuildaddComponent }, + { path: 'edit/:id', component: ReportbuildeditComponent }, + { path: 'reportQuery/:id', component: ReportbuildqueryComponent }, + + + //SUPER ADMIN + // { path: 'query', component: QueryComponent, canActivate: [AuthGuard], data: { roles: [Role.Admin] } }, + // { path: 'reportQuery/:id/queryadd', component: QueryaddComponent, canActivate: [AuthGuard], data: { roles: [Role.Admin] } }, + // { path: 'reportQuery/queryedit/:id', component: QueryeditComponent, canActivate: [AuthGuard], data: { roles: [Role.Admin] } }, + + + + ] + }, + + // {path:'rerunner',component:DatefunctionComponent}, + + { + path: 'reportbuild2', component: ReportBuild2Component, + children: [ + { path: '', redirectTo: 'all', pathMatch: 'full' }, + { path: 'all', component: ReportBuild2allComponent }, + { path: 'add', component: ReportBuild2addComponent }, + { path: 'edit/:id', component: ReportBuild2editComponent }, + ] + }, + + //report runner + { + path: 'rerunner', component: ReportRunnerComponent, + children: [ + { path: '', redirectTo: 'all', pathMatch: 'full' }, + { path: 'all', component: ReportrunnerallComponent }, + { path: 'runner2/:id', component: Reportrunneredit2Component }, + { path: 'runner/:id', component: ReportrunnereditComponent }, + ] + }, + + // dashboardbuilder + { + path: 'dashboardbuilder', component: DashboardnewComponent, + children: [ + + { path: '', redirectTo: 'all', pathMatch: 'full' }, + { path: 'all', component: AllnewdashComponent }, + { path: 'adddata', component: AddnewdashComponent }, + { path: 'editdata/:id', component: EditformnewdashComponent }, + { path: 'editdashn/:id', component: EditnewdashComponent }, + { path: 'schedule/:id', component: ScheduleComponent }, + ] + }, + + { + path: 'dashboardrunner', component: DashboardrunnerComponent, + children: [ + + { path: '', redirectTo: 'all', pathMatch: 'full' }, + { path: 'all', component: DashrunnerallComponent }, + { path: 'dashrunner/:id', component: DashrunnerlineComponent }, + ] + }, + + + { path: 'accesstype', component: AccesstypeComponent }, + { path: 'acmodules', component: ModulesComponent }, + { path: 'sessionlogger', component: SessionloggerComponent }, + { path: 'dashboard', component: DashboardComponent, }, + + { + path: 'menu-group', component: MenuGroupComponent, + children: [ + { path: '', redirectTo: 'all-menu', pathMatch: 'full' }, + { path: 'all-menu', component: AllMenuGroupComponent }, + { path: 'edit-menu', component: EditMenuGroupComponent }, + { path: 'read-only', component: ReadOnlyMenuGroupComponent } + ], + }, + + { + path: 'menu-r', component: MenuRegisterComponent, + children: [ + { path: '', redirectTo: 'all-r', pathMatch: 'full' }, + { path: 'all-r', component: AllMenurComponent }, + { path: 'add-r', component: AddMenurComponent }, + { path: 'edit-r', component: EditMenurComponent }, + { path: 'readonly-r', component: ReadonlyMenurComponent } + ], + }, + + { + path: 'extension', component: ExtensionComponent, + children: [ + { path: '', redirectTo: 'all', pathMatch: 'full' }, + { path: 'all', component: AllextensionComponent }, + { path: 'add', component: AddextensionComponent }, + { path: 'edit/:id', component: EditextensionComponent }, + ], + }, + { path: 'SequenceGenerator', component: SequencegenaratorComponent }, + { path: 'apiregistery', component: ApiregisteryComponent }, + + + // DATA MANAGEMENT + + { path: 'datamanagement', component: DatamanagementComponent }, + { path: 'dataworkflow/:id', component: DatamananementworkflowComponent }, + + //bulk Import Rule + { + path: 'validationrule', component: BulkimportComponent, + children: [ + { path: '', redirectTo: 'all', pathMatch: 'full' }, + { path: 'all', component: BulkimportallComponent }, + { path: 'add', component: BulkimportaddComponent }, + { path: 'edit/:id', component: BulkimporteditComponent }, + { path: 'ruleline', component: BulkimportlineComponent }, + { path: 'rulelineedit', component: BulkimporteditlineComponent }, + ], + }, + //bulk Import Rule mapping + { + path: 'mappingrule', component: MappingruleComponent, + children: [ + { path: '', redirectTo: 'all', pathMatch: 'full' }, + { path: 'all', component: MappingruleallComponent }, + { path: 'add', component: MappingruleaddComponent }, + { path: 'edit/:id', component: MappingruleeditComponent }, + ], + }, + + + // buildercomponents + + { path: 'tokenregistery', component: Token_registeryComponent }, + + { path: 'Stepper_workflow', component: Stepper_workflowComponent }, + + + + + + + + + + { path: '**', component: PageNotFoundComponent }, + + ] + }, + +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class MainRoutingModule { } \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/main.module.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/main.module.ts new file mode 100644 index 0000000..0914655 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/main.module.ts @@ -0,0 +1,211 @@ + + +import { CommonModule } from '@angular/common'; +import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { ClarityModule } from '@clr/angular'; + +import { MainPageComponent } from '../main/fnd/main-page/main-page.component'; +import { MainRoutingModule } from './main-routing.module'; +import { PageNotFoundComponent } from './page-not-found/page-not-found.component'; +// import { AboutComponent } from '../main/admin/about/about.component'; +// import { LayoutComponent } from './layout/layout.component'; +import { HelperModule } from 'src/app/pipes/helpers.module'; +import { PasswordResetComponent } from '../main/admin/password-reset/password-reset.component'; +import { UserComponent } from '../main/admin/user/user.component'; + + +import { AllMenuGroupComponent } from '../main/admin/menu-group/all/all-menu-group.component'; +import { EditMenuGroupComponent } from '../main/admin/menu-group/edit/edit-menu-group.component'; +import { MenuGroupComponent } from '../main/admin/menu-group/menu-group.component'; +import { ReadOnlyMenuGroupComponent } from '../main/admin/menu-group/read-only/readonly-menu-group.component'; +import { AddMenurComponent } from '../main/admin/menu-register/add-menur/add-menur.component'; +import { AllMenurComponent } from '../main/admin/menu-register/all-menur/all-menur.component'; +import { EditMenurComponent } from '../main/admin/menu-register/edit-menur/edit-menur.component'; +import { MenuRegisterComponent } from '../main/admin/menu-register/menu-register.component'; +import { ReadonlyMenurComponent } from '../main/admin/menu-register/readonly-menur/readonly-menur.component'; +import { ProfileSettingComponent } from '../main/admin/profile-setting/profile-setting.component'; +import { UsermaintanceaddComponent } from '../main/admin/usermaintanceadd/usermaintanceadd.component'; +import { UsermaintanceeditComponent } from '../main/admin/usermaintanceedit/usermaintanceedit.component'; + +import { DragDropModule } from '@angular/cdk/drag-drop'; +import { HttpClientModule } from '@angular/common/http'; +import { CodemirrorModule } from "@ctrl/ngx-codemirror"; +import { NgxChartsModule } from '@swimlane/ngx-charts'; +import { GridsterModule } from 'angular-gridster2'; +import { DynamicModule } from 'ng-dynamic-component'; +import { NgChartsModule } from 'ng2-charts'; +import { CKEditorModule } from 'ng2-ckeditor'; + +import { UserRegistrationComponent } from '../main/admin/user-registration/user-registration.component'; + +import { QRCodeModule } from 'angularx-qrcode'; +import { TagInputModule } from 'ngx-chips'; +import { CookieService } from 'ngx-cookie-service'; +import { ImageCropperModule } from 'ngx-image-cropper'; +import { ModulesComponent } from './admin/modules/modules.component'; +import { SessionloggerComponent } from './admin/sessionlogger/sessionlogger.component'; +import { SubmenuComponent } from './admin/submenu/submenu.component'; + +import { WireframeService } from 'src/app/services/builder/wireframe.service'; +import { ReportBuildComponent } from './builder/report-build/report-build.component'; +import { ReportbuildeditComponent } from './builder/report-build/reportbuildedit/reportbuildedit.component'; +import { ReportbuildqueryComponent } from './builder/report-build/reportbuildquery/reportbuildquery.component'; +import { ReportBuild2Component } from './builder/report-build2/report-build2.component'; +import { ReportBuild2editComponent } from './builder/report-build2/report-build2edit/report-build2edit.component'; +import { ReportRunnerComponent } from './builder/report-runner/report-runner.component'; +import { ReportrunnereditComponent } from './builder/report-runner/reportrunneredit/reportrunneredit.component'; +import { Reportrunneredit2Component } from './builder/report-runner/reportrunneredit2/reportrunneredit2.component'; + + +import { DashboardnewComponent } from './builder/dashboardnew/dashboardnew.component'; +import { EditformnewdashComponent } from './builder/dashboardnew/editformnewdash/editformnewdash.component'; +import { EditnewdashComponent } from './builder/dashboardnew/editnewdash/editnewdash.component'; +import { BarChartComponent } from './builder/dashboardnew/gadgets/bar-chart/bar-chart.component'; +import { BubbleChartComponent } from './builder/dashboardnew/gadgets/bubble-chart/bubble-chart.component'; +import { DoughnutChartComponent } from './builder/dashboardnew/gadgets/doughnut-chart/doughnut-chart.component'; +import { DynamicChartComponent } from './builder/dashboardnew/gadgets/dynamic-chart/dynamic-chart.component'; +import { FinancialChartComponent } from './builder/dashboardnew/gadgets/financial-chart/financial-chart.component'; +import { GridViewComponent } from './builder/dashboardnew/gadgets/grid-view/grid-view.component'; +import { LineChartComponent } from './builder/dashboardnew/gadgets/line-chart/line-chart.component'; +import { PieChartComponent } from './builder/dashboardnew/gadgets/pie-chart/pie-chart.component'; +import { PolarChartComponent } from './builder/dashboardnew/gadgets/polar-chart/polar-chart.component'; +import { RadarChartComponent } from './builder/dashboardnew/gadgets/radar-chart/radar-chart.component'; +import { ScatterChartComponent } from './builder/dashboardnew/gadgets/scatter-chart/scatter-chart.component'; +import { ToDoChartComponent } from './builder/dashboardnew/gadgets/to-do-chart/to-do-chart.component'; +import { ScheduleComponent } from './builder/dashboardnew/schedule/schedule.component'; +import { AddextensionComponent } from './fnd/extension/addextension/addextension.component'; +import { AllextensionComponent } from './fnd/extension/allextension/allextension.component'; +import { EditextensionComponent } from './fnd/extension/editextension/editextension.component'; +import { ExtensionComponent } from './fnd/extension/extension.component'; + +import { BarRunnerComponent } from './builder/dashboardrunner/dashrunnerline/bar-runner/bar-runner.component'; +import { BubbleRunnerComponent } from './builder/dashboardrunner/dashrunnerline/bubble-runner/bubble-runner.component'; +import { DashrunnerlineComponent } from './builder/dashboardrunner/dashrunnerline/dashrunnerline.component'; +import { DoughnutRunnerComponent } from './builder/dashboardrunner/dashrunnerline/doughnut-runner/doughnut-runner.component'; +import { GridRunnerComponent } from './builder/dashboardrunner/dashrunnerline/grid-runner/grid-runner.component'; +import { LineRunnerComponent } from './builder/dashboardrunner/dashrunnerline/line-runner/line-runner.component'; +import { PieRunnerComponent } from './builder/dashboardrunner/dashrunnerline/pie-runner/pie-runner.component'; +import { PolarRunnerComponent } from './builder/dashboardrunner/dashrunnerline/polar-runner/polar-runner.component'; +import { RadarRunnerComponent } from './builder/dashboardrunner/dashrunnerline/radar-runner/radar-runner.component'; +import { ScatterRunnerComponent } from './builder/dashboardrunner/dashrunnerline/scatter-runner/scatter-runner.component'; +import { TodoRunnerComponent } from './builder/dashboardrunner/dashrunnerline/todo-runner/todo-runner.component'; + +import { ApiregisteryComponent } from './fnd/apiregistery/apiregistery.component'; + +import { BulkimportComponent } from './datamanagement/bulkimport/bulkimport.component'; +import { BulkimportaddComponent } from './datamanagement/bulkimport/bulkimportadd/bulkimportadd.component'; +import { BulkimportallComponent } from './datamanagement/bulkimport/bulkimportall/bulkimportall.component'; +import { BulkimporteditComponent } from './datamanagement/bulkimport/bulkimportedit/bulkimportedit.component'; +import { BulkimporteditlineComponent } from './datamanagement/bulkimport/bulkimporteditline/bulkimporteditline.component'; +import { BulkimportlineComponent } from './datamanagement/bulkimport/bulkimportline/bulkimportline.component'; +import { DatamanagementComponent } from './datamanagement/datamanagement/datamanagement.component'; +import { DatamananementworkflowComponent } from './datamanagement/datamananementworkflow/datamananementworkflow.component'; +import { MappingruleComponent } from './datamanagement/mappingrule/mappingrule.component'; +import { MappingruleaddComponent } from './datamanagement/mappingrule/mappingruleadd/mappingruleadd.component'; +import { MappingruleallComponent } from './datamanagement/mappingrule/mappingruleall/mappingruleall.component'; +import { MappingruleeditComponent } from './datamanagement/mappingrule/mappingruleedit/mappingruleedit.component'; +import { Stepper_workflowComponent } from './BuilderComponents/stepperworkflow/Stepper_workflow/Stepper_workflow.component'; +import { Token_registeryComponent } from './fnd/Token_registery/Token_registery.component'; +import { MyworkspaceComponent } from './admin/myworkspace/myworkspace.component'; + +// import { QueryComponent } from './superadmin/query/query.component'; +// import { QueryaddComponent } from './superadmin/queryadd/queryadd.component'; +// import { QueryeditComponent } from './superadmin/queryedit/queryedit.component'; + +@NgModule({ + declarations: [ + MainPageComponent, PageNotFoundComponent, UserComponent, PasswordResetComponent, + MyworkspaceComponent, + ReportRunnerComponent, ReportrunnereditComponent, Reportrunneredit2Component, MenuGroupComponent, AllMenuGroupComponent, EditMenuGroupComponent, ReadOnlyMenuGroupComponent, UserRegistrationComponent, + MenuRegisterComponent, AddMenurComponent, EditMenurComponent, AllMenurComponent, ReadonlyMenurComponent, ProfileSettingComponent, + UsermaintanceaddComponent, UsermaintanceeditComponent, + SubmenuComponent, ModulesComponent, SessionloggerComponent, + DashboardnewComponent, EditformnewdashComponent, EditnewdashComponent, ScheduleComponent, + DoughnutChartComponent, LineChartComponent, RadarChartComponent, BarChartComponent, BubbleChartComponent, DynamicChartComponent, ScatterChartComponent, PolarChartComponent, PieChartComponent, FinancialChartComponent, ToDoChartComponent, GridViewComponent, + DashrunnerlineComponent, BarRunnerComponent, LineRunnerComponent, DoughnutRunnerComponent, GridRunnerComponent, PieRunnerComponent, PolarRunnerComponent, RadarRunnerComponent, ScatterRunnerComponent, TodoRunnerComponent, BubbleRunnerComponent, + ReportBuildComponent, ReportbuildeditComponent, ReportbuildqueryComponent, ReportBuild2Component, ReportBuild2editComponent, + // QueryComponent, QueryaddComponent, QueryeditComponent, + ExtensionComponent, + AllextensionComponent, + AddextensionComponent, EditextensionComponent, ApiregisteryComponent, + DatamanagementComponent, DatamananementworkflowComponent, BulkimportComponent, BulkimportallComponent, BulkimportaddComponent, BulkimporteditComponent, BulkimportlineComponent, BulkimporteditlineComponent, MappingruleComponent, MappingruleallComponent, MappingruleaddComponent, MappingruleeditComponent, + + + // buildercomponents + + + + Token_registeryComponent, + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Stepper_workflowComponent, + + + + + + ], + imports: [ + QRCodeModule, + CommonModule, + FormsModule, + ReactiveFormsModule, + ClarityModule, + HelperModule, + MainRoutingModule, + DragDropModule, + HttpClientModule, + ImageCropperModule, + TagInputModule, + CodemirrorModule, + CKEditorModule, + GridsterModule, + NgChartsModule, + NgxChartsModule, + DynamicModule, + ], + providers: [ + CookieService, + WireframeService, + + + ], + schemas: [CUSTOM_ELEMENTS_SCHEMA] +}) +export class MainModule { } \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/page-not-found/page-not-found.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/page-not-found/page-not-found.component.html new file mode 100644 index 0000000..d5c848c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/page-not-found/page-not-found.component.html @@ -0,0 +1,5 @@ +
    + +

    error 404

    + Not found your page requested. +
    diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/page-not-found/page-not-found.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/page-not-found/page-not-found.component.scss new file mode 100644 index 0000000..f1d5656 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/page-not-found/page-not-found.component.scss @@ -0,0 +1,11 @@ +clr-icon { + margin-top: 8%; + opacity: 0.3; + filter: alpha(opacity=30); /* For IE8 and earlier */ +} + +clr-icon:hover { + margin-top: 8%; + opacity: 8.0; + filter: alpha(opacity=80); /* For IE8 and earlier */ +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/page-not-found/page-not-found.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/page-not-found/page-not-found.component.spec.ts new file mode 100644 index 0000000..697a946 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/page-not-found/page-not-found.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PageNotFoundComponent } from './page-not-found.component'; + +describe('PageNotFoundComponent', () => { + let component: PageNotFoundComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ PageNotFoundComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(PageNotFoundComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/page-not-found/page-not-found.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/page-not-found/page-not-found.component.ts new file mode 100644 index 0000000..31ae4d8 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/page-not-found/page-not-found.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-page-not-found', + templateUrl: './page-not-found.component.html', + styleUrls: ['./page-not-found.component.scss'] +}) +export class PageNotFoundComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin.zip b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin.zip new file mode 100644 index 0000000000000000000000000000000000000000..06627f665445ab07e21a5cb5e3a94170a2bbc328 GIT binary patch literal 32277 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

    >>ozm@id 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 K(bb^A|NaLDuDPE8 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.css b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.css new file mode 100644 index 0000000..7964200 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.css @@ -0,0 +1,146 @@ +@import '@swimlane/ngx-datatable/index.css'; +@import '@swimlane/ngx-datatable/themes/bootstrap.css'; +@import '@swimlane/ngx-datatable/assets/icons.css'; +.button1::after { + content: none; +} + +.button1:hover::after { + content: "ADD ROWS"; +} + +.delete, .heading { + text-align: center; + color: red; +} + +.bold { + font-weight: bold; +} + +.section p { + padding: 10px; + font-size: 18px; +} + +.clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; +} + +.required-field { + color: red; + font-size: 18px; +} + +input[type=text], textarea { + width: 100%; + padding: 15px 15px; + background-color: rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} + +html { + /* make sure we use up the whole viewport */ + width: 100%; + min-height: 100vh; +} + +body { + width: 100%; + background-color: gray; +} + +ngx-datatable { + font-family: Metropolis, Avenir Next, Helvetica Neue, Arial, sans-serif; + font-size: 13px; + border: 1px solid #ccc; + border-radius: 2px; + padding: 0; + background-color: #fff; +} +ngx-datatable .datatable-header, ngx-datatable .datatable-footer { + font-size: 11px; + line-height: 18px; + font-weight: bold; + background-color: #fafafa; +} +ngx-datatable .datatable-header { + box-shadow: 0 2px 4px 0px #ccc; +} +ngx-datatable .datatable-header .datatable-header-cell { + line-height: 22px; + padding-left: 10px; + height: 22px; +} +ngx-datatable .datatable-header .datatable-header-cell:not(:first-child) { + border-left: 1px solid #ccc; +} +ngx-datatable .datatable-footer { + border-top: 1px solid #ccc; +} +ngx-datatable .datatable-footer .page-count { + margin: 10px; +} +ngx-datatable .datatable-footer .pages a { + padding: 8px; + color: inherit; +} +ngx-datatable .datatable-footer .pages.active a { + padding: 8px; + color: #007cbb; + background-color: rgb(221, 221, 221); + text-align: center; +} +ngx-datatable .datatable-header-inner { + padding: 12px; +} +ngx-datatable .datatable-body-cell { + padding: 8px 0 10px 20px; + border-top: 1px solid #ddd; +} +ngx-datatable .pager i { + font-size: 18px; + vertical-align: middle; +} + +.postColumn { + border: 1px solid #ccc; + width: 78%; + margin-left: 15px; +} + +.colName { + text-align: center; + padding: 5px; +} + +.colfields { + border: 1px solid black; + margin: 17px; + text-align: center; + padding: 3px; +} + +.fieldWrapper { + margin-top: 20px; +} + +.center { + text-align: center; +} + +select { + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; +}/*# sourceMappingURL=query.component.css.map */ \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.css.map b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.css.map new file mode 100644 index 0000000..6fa4424 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["query.component.scss","query.component.css"],"names":[],"mappings":"AA8JQ,2CAAA;AACA,sDAAA;AACC,kDAAA;AA9JT;EACE,aAAA;ACEF;;ADAA;EACE,mBAAA;ACGF;;ADAA;EACE,kBAAA;EACA,UAAA;ACGF;;ADAA;EACE,iBAAA;ACGF;;ADCA;EAEE,aAAA;EACA,eAAA;ACCF;;ADEA;EACE,cAAA;EACA,yBAAA;EACA,sBAAA;EACA,wBAAA;EACA,eAAA;EACA,WAAA;EACA,mBAAA;ACCF;;ADWA;EACE,UAAA;EACF,eAAA;ACRA;;ADYA;EACE,WAAA;EACA,kBAAA;EAED,oCAAA;EACC,qBAAA;EACA,sBAAA;EACA,kBAAA;EACA,sBAAA;ACVF;;ADcA;EACI,2CAAA;EACA,WAAA;EACA,iBAAA;ACXJ;;ADaA;EACI,WAAA;EACA,sBAAA;ACVJ;;ADeA;EACE,uEAAA;EACA,eAAA;EACA,sBAAA;EACA,kBAAA;EACA,UAAA;EACA,sBAAA;ACZF;ADaE;EACE,eAAA;EACA,iBAAA;EACA,iBAAA;EACA,yBAAA;ACXJ;ADaE;EAEE,8BAAA;ACZJ;ADaI;EACE,iBAAA;EACA,kBAAA;EACA,YAAA;ACXN;ADcE;EACI,2BAAA;ACZN;ADeE;EACE,0BAAA;ACbJ;ADcI;EACE,YAAA;ACZN;ADcI;EACE,YAAA;EACA,cAAA;ACZN;ADcI;EACE,YAAA;EACA,cAAA;EACA,oCAAA;EACA,kBAAA;ACZN;ADgBE;EACE,aAAA;ACdJ;ADgBE;EACE,wBAAA;EACA,0BAAA;ACdJ;ADgBE;EACE,eAAA;EACA,sBAAA;ACdJ;;ADkBA;EACE,sBAAA;EACA,UAAA;EACA,iBAAA;ACfF;;ADiBA;EACE,kBAAA;EACA,YAAA;ACdF;;ADgBA;EACE,uBAAA;EACA,YAAA;EACA,kBAAA;EACA,YAAA;ACbF;;ADeA;EACE,gBAAA;ACZF;;ADcA;EACE,kBAAA;ACXF;;ADcA;EACE,WAAA;EACA,gBAAA;EACA,sBAAA;EACA,kBAAA;ACXF","file":"query.component.css"} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.html new file mode 100644 index 0000000..ac98d15 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.html @@ -0,0 +1,637 @@ +

    + + +
    + + +
    +
    +

    SQL Worksheet- + connection name + {{databaseName}} + switch + Add New +

    + +
    + +
    + + +
    +
    + + + + + + +
    +
    + +
    +
    + + + + + + + + + {{selected}} {{ getAliasedColumn(selected) }} + + + + + + {{state}} + + + + + + +
    +

    +

    {{msg}}

    + +
    +
    +
    + + + + + + + + + {{ selected.substr(0, selected.indexOf('.')) }}{{ selected.substr(selected.indexOf('.')) }} + + + {{selected}} + + + + + {{state}} + + + + + + +
    +

    +

    {{msg1}}

    +
    +
    +
    + + + + + + + + + {{data.andor}}  + + {{ selected.substr(0, selected.indexOf('.')) }}{{ selected.substr(selected.indexOf('.')) }} + + + {{selected}} + + + {{data.condition}} {{data.value}} + + + + + {{state}} + + + + + + +
    +

    + +
    +
    + +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + + +
    +
    +
    + + + +
    +
    +

    Response

    +
    +
    +
    + + +
    +
    +

    +
    +
    +
    +
    + +
    + + + + + + + + + + + +
    {{co}}
    {{item[key]}}
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.scss new file mode 100644 index 0000000..3ee5c25 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.scss @@ -0,0 +1,161 @@ +$bg-color: #dddddd; + +.button1::after { + content: none; +} +.button1:hover::after { + content: "ADD ROWS"; +} + +.delete,.heading{ + text-align: center; + color: red; +} + +.bold{ + font-weight: bold; +} + + +.section p { + //color: white; + padding: 10px; + font-size: 18px; +} + +.clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; +} +// input[type=text],[type=date],textarea { +// width: 60%; +// padding: 15px 15px; +// // margin: 8px 0; +// background-color:rgb(255, 255, 255); +// display: inline-block; +// border: 1px solid #ccc; +// border-radius: 4px; +// box-sizing: border-box; +// } +.required-field{ + color: red; +font-size: 18px; + +} + +input[type=text],textarea { + width: 100%; + padding: 15px 15px; + // margin: 8px 0; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} + + +html { + /* make sure we use up the whole viewport */ + width: 100%; + min-height: 100vh; +} +body { + width: 100%; + background-color: gray; + //min-height: 100vh; /* this helps with the sticky footer */ +} + +//Import classes from swimlane datatable +ngx-datatable { + font-family: Metropolis,Avenir Next,Helvetica Neue,Arial,sans-serif; + font-size:13px; + border:1px solid #ccc; + border-radius: 2px; + padding:0; + background-color: #fff; + .datatable-header, .datatable-footer { + font-size:11px; + line-height:18px; + font-weight:bold; + background-color:#fafafa; + } + .datatable-header{ + //border-bottom: 2px solid #ccc; + box-shadow: 0 2px 4px 0px #ccc; + .datatable-header-cell{ + line-height:22px; + padding-left:10px; + height:22px; + } + } + .datatable-header .datatable-header-cell:not(:first-child) { + border-left:1px solid #ccc; + } + + .datatable-footer{ + border-top: 1px solid #ccc; + .page-count{ + margin: 10px; + } + .pages a{ + padding:8px; + color:inherit; + } + .pages.active a{ + padding:8px; + color:#007cbb; + background-color:rgb(221, 221, 221); + text-align: center; + } + } + + .datatable-header-inner{ + padding:12px; + } + .datatable-body-cell{ + padding:8px 0 10px 20px; + border-top: 1px solid #ddd; + } + .pager i { + font-size:18px; + vertical-align: middle; + } +} + +.postColumn{ + border: 1px solid #ccc; + width: 78%; + margin-left: 15px; +} +.colName{ + text-align: center; + padding: 5px; +} +.colfields{ + border: 1px solid black; + margin: 17px; + text-align: center; + padding: 3px; +} +.fieldWrapper{ + margin-top: 20px; +} +.center { + text-align: center; +} + +select{ + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; +} +// @import '@swimlane/ngx-datatable/index.css'; +// @import '@swimlane/ngx-datatable/themes/bootstrap.css'; +// @import '@swimlane/ngx-datatable/assets/icons.css'; diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.spec.ts new file mode 100644 index 0000000..fd0cf11 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { QueryComponent } from './query.component'; + +describe('QueryComponent', () => { + let component: QueryComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ QueryComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(QueryComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.ts new file mode 100644 index 0000000..a898324 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.ts @@ -0,0 +1,536 @@ +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormControl, FormGroup } from '@angular/forms'; +import { ReportBuilderService } from 'src/app/services/api/report-builder.service'; +import { TableList } from '../../../../models/fnd/table-setup'; +import { HttpClient } from '@angular/common/http'; +import { ToastrService } from 'ngx-toastr'; +import { ActivatedRoute, Router } from '@angular/router'; +@Component({ + selector: 'app-query', + templateUrl: './query.component.html', + styleUrls: ['./query.component.scss'] +}) +export class QueryComponent implements OnInit { + searchtable: any; + searchcol: any; + columns: any[]; + table: boolean = false; + database: boolean = false; + query: boolean = false; + public entryForm: FormGroup; + public addForm: FormGroup; + addmodal: boolean = false; + query2: string; + rows: any[]; + loading = false; + tableList: TableList[]; + databaselist = []; + collist; + search: any; + selectedtable: any[]; + selectedcol: any[]; + selectedcol1: any[]; + selectedtablequery; + selectcolquery; + selectedquery; + backQuery = true; + searchquery; + col: boolean = false; + col1: boolean = false; + searchdatabase; + selecteddatabase; + msg; + querydata; + errorco; + errortb; + errorcl; + loadingIndicator = true; reorderable = true; + filterModel = false; + conditionData = []; + andor = ['AND', 'OR', 'NOT']; + fieldname = ['name1', 'name2']; + condition = ['=', '!=', '<', '>', '<=', '>=', 'LIKE', 'BETWEEN', 'IN']; + alias = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']; + tabs = ['Tab', 'Tab',]; + selected = new FormControl(0); + constructor(private _fb: FormBuilder, private router: Router, + private route: ActivatedRoute, + private reportBuilderService: ReportBuilderService, private toastr: ToastrService,) { } + + ngOnInit(): void { + this.entryForm = this._fb.group({ + sql_query: [null], + }); + this.addForm = this._fb.group({ + conn_string: [null], + username: [null], + password: [null], + driver_class_name: [null], + }) + // this.listofTables(); + + } + + + listoddatabase() { + this.reportBuilderService.getdatabse().subscribe((data) => { + this.databaselist = data; + console.log('databse list ', this.databaselist) + if (this.databaselist.length == 0) { + this.errorco = "No data Available"; + + } + }, (error) => { + console.log(error); + if (error) { + this.errorco = "No data Available"; + } + }); + + } + listofTables(val) { + this.reportBuilderService.getTableListn(val).subscribe(data => { + // console.log("table list "+data); + this.tableList = data; + console.log('table list ', this.tableList); + }, (error) => { + console.log(error); + if (error) { + this.errortb = "No data Available"; + } + }) + } + msg1; + finalColList: any[] = []; + listofcol(val) { + console.log(this.selectedtable); + console.log(this.selectedcol); + console.log(this.selectedcol1); + const tableString = JSON.stringify(val); + console.log(tableString); + const array = Array.of(val); // Using the Array constructor + console.log(array); + console.log(val); + // this.reportBuilderService.getcolListn(this.name[1],val).subscribe((data)=>{ + // this.reportBuilderService.getColumnList(this.name[1],array).subscribe((data)=>{ + this.reportBuilderService.getAllColumnsFromAllTables(array).subscribe((data) => { + console.log(data); + this.collist = data; + // this.finalColList.push(data); + // this.finalColList.push(this.collist) + if (this.selectedtable == null) { + this.msg = 'Plz First Select Table' + } else { + this.msg = ""; + } + + //console.log(this.collist); + }, (error) => { + console.log(error); + if (error) { + this.errorcl = "No data Available"; + } + }) + } + listofquery() { + this.reportBuilderService.getall().subscribe((data) => { + this.querydata = data; + console.log(this.querydata) + }) + } + rowdata; + onSubmit() { + this.backQuery = false; + + this.query2 = this.entryForm.value.sql_query; + console.log(this.query2); + this.reportBuilderService.getMasterData(this.query2).subscribe((data) => { + this.rows = data; + console.log(this.rows); + this.rowdata = [this.rows]; + console.log(typeof this.rows); + if (data) { + this.toastr.success("Run Successfully") + } + var j; + var cart = []; + + for (var i = 0; i < data.length; i++) { + var columnsIn = data[i]; + if (i == 1) { + for (var key in columnsIn) { + j = { prop: key, name: key }; + cart.push(j) + + } + } + } + this.columns = cart; + + }); + } + getHeaders() { + let headers: string[] = []; + if (this.rows) { + this.rows.forEach((value) => { + Object.keys(value).forEach((key) => { + if (!headers.find((header) => header == key)) { + headers.push(key) + } + + }) + + }) + } + return headers; + } + savequery() { + //this.query2=this.entryForm.value.sql_query; + console.log(this.entryForm.value); + this.reportBuilderService.saveq(this.entryForm.value).subscribe((data) => { + console.log(data); + }) + + } + + //tab + addTab(selectAfterAdding: boolean) { + this.tabs.push('Tab'); + + if (selectAfterAdding) { + this.selected.setValue(this.tabs.length - 1); + } + } + + removeTab(index: number) { + this.tabs.splice(index, 1); + } + opendatabsemo() { + this.database = true; + this.listoddatabase(); + } + name; + databaseName; + databasename(val) { + console.log(val); + this.databaseName = val.name; + this.selecteddatabase = val.conn_string; + console.log('selected databse ', this.selecteddatabase); + // this.selecteddatabase.substring(0,this.selecteddatabase.indexOf(':3306/')) + // console.log(this.selecteddatabase); + this.name = this.selecteddatabase.split(":3306/"); + console.log(this.name[1]); + this.database = false; + this.listofTables(this.name[1]) + } + opentablemod() { + this.table = true; + // this.listofTables(); + } + tablename(value) { + console.log(value); + this.selectedtable = value; + this.table = false; + } + tableModal = false; + TableData; + opentcolmod() { + // this.col=true; + + if (this.selectedtable == null) { + this.msg = 'Plz First Select Table' + } else { + this.msg = ""; + // this.tableModal = true; + } + this.listofcol(this.selectedtable) + + if (Array.isArray(this.selectedtable) || this.selectedtable === undefined) { + const selectedTables = this.selectedtable.map((table, index) => { + const alias = String.fromCharCode(97 + (index % 26)); // Generate aliases starting from 'a' + console.log(alias, table); + return `${table} ${alias}`; + }).join(','); + console.log(selectedTables); + // const selectedTables = this.TableData.map(({ alias, tables }) => `${tables} ${alias}`).join(','); + // console.log(selectedTables); + + this.selectedtablequery = `SELECT * FROM ${selectedTables} WHERE 1=1`; + console.log(this.selectedtablequery); + // You can perform further actions with the generated SQL query + } else { + this.selectedtablequery = ''; + console.log(this.selectedtablequery); + // You can perform further actions with the generated SQL query + } + + this.selectedquery = this.selectedtablequery; + + // const defaultObject = { + // alias: "", + // } + // const objectArray = this.selectedtable.map(value => ({ + // ...defaultObject, + // tables: value, + // })); + // console.log(objectArray); + // const data = JSON.stringify(objectArray); + // try { + // this.TableData = JSON.parse(data); + // console.log('Received data:', this.TableData ); + // } catch (e) { console.error('Invalid JSON:', data);} + } + + onAddTableLines() { + this.TableData.push({ + tables: "", + alias: "", + }); + } + deleteTableRow(index) { + this.TableData.splice(index, 1); + } + + + + opentcolmod1() { + // this.col1=true; + this.listofcol(this.selectedtable) + + + } + columnModal = false; + columnData; + colname() { + + this.columnModal = true; + + //column filter + const defaultObject = { + alias: "", + } + const objectArray = this.selectedcol.map(value => ({ + ...defaultObject, + columns: value, + })); + console.log(objectArray); + const data = JSON.stringify(objectArray); + try { + this.columnData = JSON.parse(data); + console.log('Received data:', this.columnData); + } catch (e) { console.error('Invalid JSON:', data); } + } + + onAddColLines() { + this.columnData.push({ + columns: "", + alias: "", + }); + } + deleteColRow(index) { + this.columnData.splice(index, 1); + } + + onColSelected() { + // console.log(col); + // this.selectedcol=col; + this.col = false; + this.columnModal = false; + if (Array.isArray(this.columnData)) { + // const selectedColumns = this.columnData.join(','); + //for column + const selectedColumns = this.columnData.map(({ alias, columns }) => `${columns} as ${alias}`).join(','); + console.log(selectedColumns); + //for table + const selectedTables = this.selectedtable.map((table, index) => { + const alias = String.fromCharCode(97 + (index % 26)); // Generate aliases starting from 'a' + console.log(alias, table); + return `${table} ${alias}`; + }).join(','); + console.log(selectedTables); + + // const selectedTables = this.TableData.map(({ alias, tables }) => `${tables} ${alias}`).join(','); + // console.log(selectedTables); + + this.selectcolquery = `SELECT ${selectedColumns} FROM ${selectedTables} WHERE 1=1`; + console.log(this.selectcolquery); + // You can perform further actions with the generated SQL query + } else if (Array.isArray(this.selectedtable)) { + //for table + const selectedTables = this.selectedtable.map((table, index) => { + const alias = String.fromCharCode(97 + (index % 26)); // Generate aliases starting from 'a' + console.log(alias, table); + return `${table} ${alias}`; + }).join(','); + console.log(selectedTables); + this.selectcolquery = `SELECT * FROM ${selectedTables} WHERE 1=1`; + console.log(this.selectcolquery); + // You can perform further actions with the generated SQL query + } else { + // if(this.selectedtable==null){ + // this.msg1='Plz First Select Table' + // }else{ + // this.msg1=""; + // } + } + this.selectedquery = this.selectcolquery; + } + colname1() { + // console.log(col); + // this.selectedcol1=col; + // this.col1=false; + // this.listofquery(); + } + openquerymod() { + this.query = true; + this.listofquery(); + } + selectquery(val) { + console.log(val); + this.selectedquery = val; + this.query = false; + } + opencopym() { + this.router.navigate(["../queryadd"], { relativeTo: this.route }); + // this.addmodal=true; + } + onCreate() { + console.log(this.addForm.value); + this.reportBuilderService.createdb(this.addForm.value).subscribe((data) => { + console.log(data); + }) + } + + // onSelectedChanged(selected){ + // this.selectedTableData = this.tableList.filter(item => item.selected); + // } + conditionVal; + filter(val) { + + this.filterModel = true; + this.conditionVal = val; + + const defaultObject = { + andor: "AND", + // alias: "", + condition: "=", + value: "", + } + const objectArray = this.conditionVal.map(value => ({ + ...defaultObject, + fields_name: value, + })); + console.log(objectArray); + const data = JSON.stringify(objectArray); + try { + this.conditionData = JSON.parse(data); + console.log('Received data:', this.conditionData); + } catch (e) { console.error('Invalid JSON:', data); } + } + + onAddLines() { + this.conditionData.push({ + andor: "AND", + fields_name: "", + condition: "=", + value: "" + }); + } + deleteRow(index) { + this.conditionData.splice(index, 1); + } + filteredConditionData; + filterAndor; + filtercondlvalue; + onSelected() { + this.filterModel = false; + console.log(this.conditionData); + let formattedString = ''; + for (const condition of this.conditionData) { + const { andor, fields_name, condition: cond, value } = condition; + formattedString += `${andor} ${fields_name} ${cond} '${value}'`; + this.filterAndor = andor; + this.filtercondlvalue = cond + ' ' + value; + } + // this.getConditionBeforeColumn(this.selectedcol1) + // this.getConditionAfterColumn(this.selectedcol1); + console.log(formattedString); + this.filteredConditionData = formattedString + if (this.selectcolquery !== undefined) { + const mQuery = this.selectcolquery + ' ' + formattedString; + console.log(mQuery); + this.selectedquery = mQuery; + } else { + const mQuery = this.selectedtablequery + ' ' + formattedString; + console.log(mQuery); + this.selectedquery = mQuery; + } + + + + } + + // getConditionBeforeColumn(selected: any){ + + // return this.filterAndor; + + + // } + // getConditionAfterColumn(selected: any){ + // return this.filtercondlvalue + + + // } + onBack() { + // this.backQuery = true; + } + + getAliasedColumn(selected: string) { + const index = this.selectedtable.findIndex(item => item === selected); + const alphabet = 'abcdefghijklmnopqrstuvwxyz'; + const aliasIndex = index % alphabet.length; // Calculate the index based on the remainder + const repeatedAlias = alphabet.charAt(aliasIndex); + return repeatedAlias; + + // const index = this.selectedtable.findIndex(item => item === selected); + // return this.alias[index]; + } + + + // + + goToEdit(id) { + this.router.navigate(["../queryedit/" + id], { relativeTo: this.route }); + } + + rowSelected: any = {}; + modaldelete = false; + onDelete(row) { + this.rowSelected = row; + this.modaldelete = true; + } + + delete(id) { + this.modaldelete = false; + console.log("in delete " + id); + this.reportBuilderService.deleteSqlModel(id).subscribe( + (data) => { + console.log(data); + this.listoddatabase(); + if (data) { + this.toastr.success('Deleted successfully'); + } + }, + (error) => { + console.log('Error in adding data...', +error); + if (isNaN(error)) { + this.toastr.success('Deleted successfully'); + } else { + this.toastr.error('Not Deleted Data Getting Some Error'); + } + this.listoddatabase(); + } + ); + } + +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.css b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.css new file mode 100644 index 0000000..49864a0 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.css @@ -0,0 +1,75 @@ +.s-info-bar { + display: flex; + flex-direction: row; + justify-content: space-between; +} +.s-info-bar button { + outline: none; +} + +.entry-pg { + width: 750px; +} + +.button1::after { + content: none; +} + +.button1:hover::after { + content: "ADD ROWS"; +} + +.section { + background-color: #dddddd; + height: 40px; +} + +.section p { + font-weight: bold; + padding: 10px; + font-size: 18px; +} + +.clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; +} + +.clr-file { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; +} + +.center { + text-align: center; +} + +input[type=text], [type=date], textarea { + width: 100%; + padding: 15px 15px; + background-color: rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} + +.required-field { + color: red; +} + +select { + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; +}/*# sourceMappingURL=queryadd.component.css.map */ \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.css.map b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.css.map new file mode 100644 index 0000000..355aae7 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["queryadd.component.scss","queryadd.component.css"],"names":[],"mappings":"AACA;EACI,aAAA;EACA,mBAAA;EACA,8BAAA;ACAJ;ADCI;EACE,aAAA;ACCN;;ADGE;EACE,YAAA;ACAJ;;ADGE;EACE,aAAA;ACAJ;;ADEE;EACE,mBAAA;ACCJ;;ADIE;EACE,yBAHS;EAIT,YAAA;ACDJ;;ADIE;EAEE,iBAAA;EACA,aAAA;EACA,eAAA;ACFJ;;ADKE;EACE,cAAA;EACA,yBAAA;EACA,sBAAA;EACA,wBAAA;EACA,eAAA;EACA,WAAA;EACA,mBAAA;ACFJ;;ADKE;EACE,cAAA;EACA,yBAAA;EACA,sBAAA;EAEA,eAAA;EACA,WAAA;EACA,mBAAA;ACHJ;;ADME;EACE,kBAAA;ACHJ;;ADKE;EACE,WAAA;EACA,kBAAA;EAED,oCAAA;EACC,qBAAA;EACA,sBAAA;EACA,kBAAA;EACA,sBAAA;ACHJ;;ADME;EACE,UAAA;ACHJ;;ADME;EACE,WAAA;EACA,gBAAA;EACA,sBAAA;EACA,kBAAA;ACHJ","file":"queryadd.component.css"} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.html new file mode 100644 index 0000000..428e92c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.html @@ -0,0 +1,130 @@ +

    Add Database

    +Add Mode
    +
    + + + + + + + + +
    + + + + + +
    +
    +
    + + +
    +
    + + +
    +
    + +
    +
    + + +
    +
    + + + +
    +
    + +
    +

    Configurations

    +
    + +
    + +
    + +
    + + + +
    +
    + + + +
    + +
    + + + +
    + +
    + + + +
    + +
    + + + +
    +
    +
    + + +
    + +
    + +
    +
    +
    diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.scss new file mode 100644 index 0000000..39de1cb --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.scss @@ -0,0 +1,80 @@ +//@import "../../../../assets/scss/var"; +.s-info-bar { + display: flex; + flex-direction: row; + justify-content: space-between; + button { + outline: none; + } + } + + .entry-pg { + width: 750px; + } + + .button1::after { + content: none; + } + .button1:hover::after { + content: "ADD ROWS"; + } + + $bg-color: #dddddd; + + .section { + background-color: $bg-color; + height: 40px; + } + + .section p { + //color: white; + font-weight: bold; + padding: 10px; + font-size: 18px; + } + + .clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; + } + + .clr-file { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + //padding: 0.6rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; + } + + .center { + text-align: center; + } + input[type=text],[type=date],textarea { + width: 100%; + padding: 15px 15px; + // margin: 8px 0; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; + } + + .required-field{ + color: red; + + } + select{ + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; + } + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.spec.ts new file mode 100644 index 0000000..1af6a32 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { QueryaddComponent } from './queryadd.component'; + +describe('QueryaddComponent', () => { + let component: QueryaddComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ QueryaddComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(QueryaddComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.ts new file mode 100644 index 0000000..70680c8 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.ts @@ -0,0 +1,92 @@ +import { HttpErrorResponse, HttpHeaderResponse } from '@angular/common/http'; +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import { ToastrService } from 'ngx-toastr'; +import { ReportBuilderService } from 'src/app/services/api/report-builder.service'; + +@Component({ + selector: 'app-queryadd', + templateUrl: './queryadd.component.html', + styleUrls: ['./queryadd.component.scss'] +}) +export class QueryaddComponent implements OnInit { + public entryForm: FormGroup; + selectedFile: File[] = []; + type = ["MYSQL", "postgresql", "mysqllite", "oracle", "Snowflake", "BigQuery", "RedShift", "microsoft sql server", "redis", "maria_db", "MongoDB", "firebase", "dynamodb", "ibm DB2", "couchbase", "ElasticSearch", "Casandra", "OrientDB", "Neo4j", "FireBird"]; + constructor(private _fb: FormBuilder, private router: Router, private toastr: ToastrService, + private route: ActivatedRoute, private reportBuilderService: ReportBuilderService,) { } + + ngOnInit(): void { + this.entryForm = this._fb.group({ + name: [null], + type: [null], + description: [null], + active: [null], + driver_class_name: [null], + conn_string: [null], + username: [null], + password: [null], + }); + } + public onFileChanged(event) { + //Select File + console.log(event); + this.selectedFile = event.target.files[0]; + //for (var i = 0; i < event.target.files.length; i++) { + // var name = event.target.files[i].name; + // var type = event.target.files[i].type; + // var size = event.target.files[i].size; + // var modifiedDate = event.target.files[i].lastModifiedDate; + // this.selectedFile.push(event.target.files[i]); + //} + } + toastrShown: boolean = false; + onSubmit() { + console.log(this.entryForm.value); + this.reportBuilderService.createdb(this.entryForm.value).subscribe((data) => { + console.log(data); + if (data) { + if (!this.toastrShown) { + this.toastrShown = true; // Set the flag to indicate that the toastr message has been shown + this.toastr.success("Added Successfully"); + setTimeout(() => { + // this.router.navigate(["../query"], { relativeTo: this.route }); + this.router.navigate([".."], { relativeTo: this.route }); + + }, 500); + } + } + }, (error: HttpErrorResponse) => { + console.log(error); + if (error.status === 202) { + this.toastr.success("Added Succesfully"); + } + if (error.status === 404) { + this.toastr.error("Not Added"); + } + if (error.status === 400) { + this.toastr.error("Not Added"); + } + }); + setTimeout(() => { + // this.router.navigate(["../query"], { relativeTo: this.route }); + this.router.navigate([".."], { relativeTo: this.route }); + + }, 500); + } + goback() { + this.router.navigate(["../query"], { relativeTo: this.route }); + } + + // testConnection(){ + // this.dataservice.testConnection(this.entryForm.value.data_source_type, this.entryForm.value.user_name, this.entryForm.value.password, this.entryForm.value.portnumber, this.entryForm.value.db_host_name).subscribe((data)=> { + // console.log(data); + // this.toastr.success('Test Connection successfully'); + // },(err) => { + // console.log(err); + // this.toastr.error('Test Connection Failed'); + // }); + // } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.css b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.css new file mode 100644 index 0000000..ef2c1a7 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.css @@ -0,0 +1,75 @@ +.s-info-bar { + display: flex; + flex-direction: row; + justify-content: space-between; +} +.s-info-bar button { + outline: none; +} + +.entry-pg { + width: 750px; +} + +.button1::after { + content: none; +} + +.button1:hover::after { + content: "ADD ROWS"; +} + +.section { + background-color: #dddddd; + height: 40px; +} + +.section p { + font-weight: bold; + padding: 10px; + font-size: 18px; +} + +.clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; +} + +.clr-file { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; +} + +.center { + text-align: center; +} + +input[type=text], [type=date], textarea { + width: 100%; + padding: 15px 15px; + background-color: rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} + +.required-field { + color: red; +} + +select { + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; +}/*# sourceMappingURL=queryedit.component.css.map */ \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.css.map b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.css.map new file mode 100644 index 0000000..c9f1360 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["queryedit.component.scss","queryedit.component.css"],"names":[],"mappings":"AACA;EACI,aAAA;EACA,mBAAA;EACA,8BAAA;ACAJ;ADCI;EACE,aAAA;ACCN;;ADGE;EACE,YAAA;ACAJ;;ADGE;EACE,aAAA;ACAJ;;ADEE;EACE,mBAAA;ACCJ;;ADIE;EACE,yBAHS;EAIT,YAAA;ACDJ;;ADIE;EAEE,iBAAA;EACA,aAAA;EACA,eAAA;ACFJ;;ADKE;EACE,cAAA;EACA,yBAAA;EACA,sBAAA;EACA,wBAAA;EACA,eAAA;EACA,WAAA;EACA,mBAAA;ACFJ;;ADKE;EACE,cAAA;EACA,yBAAA;EACA,sBAAA;EAEA,eAAA;EACA,WAAA;EACA,mBAAA;ACHJ;;ADME;EACE,kBAAA;ACHJ;;ADKE;EACE,WAAA;EACA,kBAAA;EAED,oCAAA;EACC,qBAAA;EACA,sBAAA;EACA,kBAAA;EACA,sBAAA;ACHJ;;ADME;EACE,UAAA;ACHJ;;ADME;EACE,WAAA;EACA,gBAAA;EACA,sBAAA;EACA,kBAAA;ACHJ","file":"queryedit.component.css"} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.html b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.html new file mode 100644 index 0000000..56856c4 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.html @@ -0,0 +1,127 @@ +

    Database

    +Edit Mode
    +
    + + + + + + + + +
    + + + + + +
    +
    +
    + + +
    +
    + + +
    +
    + +
    +
    + + +
    +
    + + + +
    +
    + +
    +

    Configurations

    +
    + +
    + +
    + +
    + + + +
    +
    + + + +
    + +
    + + + +
    + +
    + + + +
    + +
    + + + +
    +
    +
    + + +
    +
    + + +
    +
    + +
    +
    +
    diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.scss new file mode 100644 index 0000000..39de1cb --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.scss @@ -0,0 +1,80 @@ +//@import "../../../../assets/scss/var"; +.s-info-bar { + display: flex; + flex-direction: row; + justify-content: space-between; + button { + outline: none; + } + } + + .entry-pg { + width: 750px; + } + + .button1::after { + content: none; + } + .button1:hover::after { + content: "ADD ROWS"; + } + + $bg-color: #dddddd; + + .section { + background-color: $bg-color; + height: 40px; + } + + .section p { + //color: white; + font-weight: bold; + padding: 10px; + font-size: 18px; + } + + .clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; + } + + .clr-file { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + //padding: 0.6rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; + } + + .center { + text-align: center; + } + input[type=text],[type=date],textarea { + width: 100%; + padding: 15px 15px; + // margin: 8px 0; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; + } + + .required-field{ + color: red; + + } + select{ + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; + } + \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.spec.ts new file mode 100644 index 0000000..9568943 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { QueryeditComponent } from './queryedit.component'; + +describe('QueryeditComponent', () => { + let component: QueryeditComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ QueryeditComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(QueryeditComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.ts new file mode 100644 index 0000000..e82ee75 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.ts @@ -0,0 +1,67 @@ +import { HttpHeaderResponse } from '@angular/common/http'; +import { Component, OnInit } from '@angular/core'; +import { FormBuilder } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import { ToastrService } from 'ngx-toastr'; +import { ReportBuilderService } from 'src/app/services/api/report-builder.service'; +@Component({ + selector: 'app-queryedit', + templateUrl: './queryedit.component.html', + styleUrls: ['./queryedit.component.scss'] +}) +export class QueryeditComponent implements OnInit { + id:any; + tdata:any={}; + selectedFile: File[]=[]; + type = ["MYSQL","postgresql","mysqllite","oracle","Snowflake","BigQuery","RedShift","microsoft sql server","redis","maria_db","MongoDB","firebase","dynamodb","ibm DB2","couchbase","ElasticSearch","Casandra","OrientDB","Neo4j","FireBird"]; + constructor(private _fb: FormBuilder, private router: Router, + private toastr: ToastrService,private route: ActivatedRoute, private reportBuilderService: ReportBuilderService,) { } + + ngOnInit(): void { + this.id = this.route.snapshot.params["id"]; + console.log("update with id = ", this.id); + this.getById(this.id); + } + getById(id: number) { + this.reportBuilderService.getSqlModelById(id).subscribe((data) => { + this.tdata = data; + console.log(this.tdata) + + }, + (err) => { + console.log(err); + } + ); + } + public onFileChanged(event) { + //Select File + console.log(event); + this.selectedFile = event.target.files[0]; + + } + onSubmit(){ + this.reportBuilderService.updateSqlModel(this.id,this.tdata).subscribe((data)=>{ + console.log(data); + if(data.status===202){ + this.toastr.success("Updated Succesfully"); + } + },(error: HttpHeaderResponse)=>{ + console.log(error); + if(error.status===202){ + this.toastr.success("Updated Successfully"); + } + if(error.status===404){ + this.toastr.error(" NotUpdated Successfully"); + } + if(error.status===400){ + this.toastr.error(" NotUpdated Successfully"); + } + }); + this.router.navigate(["../../query"], { relativeTo: this.route }); + + } + goback(){ + this.router.navigate(["../../query"], { relativeTo: this.route }); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/pipes/helpers.module.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/pipes/helpers.module.ts new file mode 100644 index 0000000..8020056 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/pipes/helpers.module.ts @@ -0,0 +1,31 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { ThaiDateAbbrPipe } from './thai-date-abbr.pipe'; +import { ThaiDateFullPipe } from './thai-date-full.pipe'; +import { ThaiDatePipe } from './thai-date.pipe'; +import {TimePipePipe} from './time-pipe.pipe'; +import { SearchFilterPipe } from './search-filter.pipe'; +import { RemoveCommasPipe } from './remove-commas.pipe'; + +@NgModule({ + imports: [ + CommonModule + ], + declarations: [ + ThaiDatePipe, + ThaiDateAbbrPipe, + ThaiDateFullPipe, + TimePipePipe, + SearchFilterPipe, + RemoveCommasPipe, + ], + exports: [ + ThaiDatePipe, + ThaiDateAbbrPipe, + ThaiDateFullPipe, + TimePipePipe, + SearchFilterPipe, + RemoveCommasPipe, + ] +}) +export class HelperModule { } diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/pipes/remove-commas.pipe.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/pipes/remove-commas.pipe.ts new file mode 100644 index 0000000..f5919ff --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/pipes/remove-commas.pipe.ts @@ -0,0 +1,8 @@ +import { Pipe, PipeTransform } from '@angular/core'; + +@Pipe({ name: 'removeCommas' }) +export class RemoveCommasPipe implements PipeTransform { + transform(value: any): any { + return value?.replace(/,/g, ''); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/pipes/sanitize.pipe.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/pipes/sanitize.pipe.ts new file mode 100644 index 0000000..fb2f439 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/pipes/sanitize.pipe.ts @@ -0,0 +1,10 @@ +import { Pipe, PipeTransform } from '@angular/core'; + +@Pipe({ + name: 'sanitize' +}) +export class SanitizePipe implements PipeTransform { + transform(value: string): string { + return value.replace(/<|>/g, ''); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/pipes/search-filter.pipe.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/pipes/search-filter.pipe.ts new file mode 100644 index 0000000..b8a781a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/pipes/search-filter.pipe.ts @@ -0,0 +1,58 @@ +import { Pipe, PipeTransform, Injectable } from "@angular/core"; + +@Pipe({ + name: 'filter', + pure: false +}) +@Injectable() +export class SearchFilterPipe implements PipeTransform { + + /** + * @param items object from array + * @param term term's search + * @param excludes array of strings which will ignored during search + */ + transform(items: any, term: string, excludes: any = []): any { + if (!term || !items) return items; + + return SearchFilterPipe.filter(items, term, excludes); + } + + /** + * + * @param items List of items to filter + * @param term a string term to compare with every property of the list + * @param excludes List of keys which will be ignored during search + * + */ + static filter(items: Array<{ [key: string]: any }>, term: string, excludes: any): Array<{ [key: string]: any }> { + + const toCompare = term.toLowerCase(); + + function checkInside(item: any, term: string) { + + if (typeof item === "string" && item.toString().toLowerCase().includes(toCompare)) { + return true; + } + + for (let property in item) { + if (item[property] === null || item[property] == undefined || excludes.includes(property)) { + continue; + } + if (typeof item[property] === 'object') { + if (checkInside(item[property], term)) { + return true; + } + } + else if (item[property].toString().toLowerCase().includes(toCompare)) { + return true; + } + } + return false; + } + + return items.filter(function (item) { + return checkInside(item, term); + }); + } +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/pipes/thai-date-abbr.pipe.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/pipes/thai-date-abbr.pipe.ts new file mode 100644 index 0000000..c46d2c8 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/pipes/thai-date-abbr.pipe.ts @@ -0,0 +1,20 @@ +import { Pipe, PipeTransform } from '@angular/core'; +import * as moment from 'moment'; + +@Pipe({ + name: 'thaiDateAbbr' +}) +export class ThaiDateAbbrPipe implements PipeTransform { + thMonthAbbr = ['ม.ค.', 'ก.พ.', 'มี.ค.', 'เม.ย.', 'พ.ค.', 'มิ.ย.', + 'ก.ค.', 'ส.ค.', 'ก.ย.', 'ต.ค.', 'พ.ย.', 'ธ.ค.']; + + transform(value: any, args?: any): any { + if (moment(value, 'YYYY-MM-DD').isValid()) { + const thaiDate = `${moment(value).get('date')} ${this.thMonthAbbr[moment(value).get('month')]} ${moment(value).get('year') + 543}`; + return thaiDate; + } else { + return '-'; + } + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/pipes/thai-date-full.pipe.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/pipes/thai-date-full.pipe.ts new file mode 100644 index 0000000..962b135 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/pipes/thai-date-full.pipe.ts @@ -0,0 +1,20 @@ +import { Pipe, PipeTransform } from '@angular/core'; +import * as moment from 'moment'; + +@Pipe({ + name: 'thaiDateFull' +}) +export class ThaiDateFullPipe implements PipeTransform { + thMonth = ['มกราคม', 'กุมภาพันธ์', 'มีนาคม', 'เมษายน', 'พฤษภาคม', 'มิถุนายน', + 'กรกฎาคม', 'สิงหาคม', 'กันยายน', 'ตุลาคม', 'พฤศจิกายน', 'ธันวาคม']; + + transform(value: any, args?: any): any { + if (moment(value, 'YYYY-MM-DD').isValid()) { + const thaiDate = `${moment(value).get('date')} ${this.thMonth[moment(value).get('month')]} ${moment(value).get('year') + 543}`; + return thaiDate; + } else { + return '-'; + } + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/pipes/thai-date.pipe.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/pipes/thai-date.pipe.ts new file mode 100644 index 0000000..52d3a29 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/pipes/thai-date.pipe.ts @@ -0,0 +1,17 @@ +import { Pipe, PipeTransform } from '@angular/core'; +import * as moment from 'moment'; + +@Pipe({ + name: 'thaiDate' +}) +export class ThaiDatePipe implements PipeTransform { + transform(value: any, args?: any): any { + if (moment(value, 'YYYY-MM-DD').isValid()) { + const thaiDate = `${moment(value).get('date')}/${moment(value).get('month') + 1}/${moment(value).get('year') + 543}`; + return thaiDate; + } else { + return '-'; + } + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/pipes/time-pipe.pipe.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/pipes/time-pipe.pipe.ts new file mode 100644 index 0000000..daa03b8 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/pipes/time-pipe.pipe.ts @@ -0,0 +1,36 @@ +import { Pipe, PipeTransform } from '@angular/core'; + +@Pipe({ + name: 'timePipe', + pure: true +}) +export class TimePipePipe implements PipeTransform { + + transform(value: any, args?: any): any { + if (value) { + const seconds = Math.floor((+new Date() - +new Date(value)) / 1000); + if (seconds < 29) // less than 30 seconds ago will show as 'Just now' + return 'Just now'; + const intervals: { [key: string]: number } = { + 'year': 31536000, + 'month': 2592000, + 'week': 604800, + 'day': 86400, + 'hour': 3600, + 'minute': 60, + 'second': 1 + }; + let counter; + for (const i in intervals) { + counter = Math.floor(seconds / intervals[i]); + if (counter > 0) + if (counter === 1) { + return counter + ' ' + i + ' ago'; // singular (1 day ago) + } else { + return counter + ' ' + i + 's ago'; // plural (2 days ago) + } + } + } + return value; +} +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/accesstype.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/accesstype.service.ts new file mode 100644 index 0000000..4c3029d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/accesstype.service.ts @@ -0,0 +1,64 @@ +import { HttpClient, HttpParams } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { ApiRequestService } from '../api/api-request.service'; +import baseUrl from 'src/app/services/api/helper'; +@Injectable({ + providedIn: 'root' +}) +export class AccesstypeService { + private AllURL = 'access_type/Accesstype'; +private moduleurl='_back/Modules_t' + constructor( private apiRequest: ApiRequestService,private _http: HttpClient,) { } + getAll(page?: number, size?: number): Observable { + // create Request URL params + let me = this; + let params: HttpParams = new HttpParams(); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + return this.apiRequest.get(this.AllURL, params); + } + + create(data:any): Observable { + return this.apiRequest.post(this.AllURL, data); + } + + delete(id: number): Observable { + const _http = this.AllURL + "/" + id; + return this.apiRequest.delete(_http); + } + + update(id: number, data: any): Observable { + const _http = this.AllURL + "/" + id; + return this.apiRequest.put(_http, data); + } + getAll1(page?: number, size?: number): Observable { + // create Request URL params + let me = this; + let params: HttpParams = new HttpParams(); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + return this.apiRequest.get(this.moduleurl, params); + } + + create1(data:any): Observable { + return this.apiRequest.post(this.moduleurl, data); + } + + delete1(id: number): Observable { + const _http = this.moduleurl + "/" + id; + return this.apiRequest.delete(_http); + } + + update1(id: number, data: any): Observable { + const _http = this.moduleurl + "/" + id; + return this.apiRequest.put(_http, data); + } + public getById(id: any){ + return this._http.get(`${baseUrl}/access_type/accessmenu/Accessmenu/${id}`); + } + public addById(id:any,data:any){ + return this._http.post(`${baseUrl}/access_type/accessmenu/Accessmenu/${id}`,data); + + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/auditreport.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/auditreport.service.ts new file mode 100644 index 0000000..ea0066b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/auditreport.service.ts @@ -0,0 +1,38 @@ +import { HttpClient, HttpParams } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import baseUrl from 'src/app/services/api/helper'; +import { ApiRequestService } from '../api/api-request.service'; +@Injectable({ + providedIn: 'root' +}) +export class AuditreportService { +private dateurl="audit/betweendate"; + constructor(private _http: HttpClient,private apiRequest: ApiRequestService,) { } + public getAll() { + return this._http.get(`${baseUrl}/audit/auditall`); + } + public getbyid(id:any) { + return this._http.get(`${baseUrl}/audit/auditall/${id}`); + } + public getbyuser(val:any){ + return this._http.get(`${baseUrl}/audit/listusername/${val}`); + } + public getbyentity(val:any){ + return this._http.get(`${baseUrl}/audit/listentityname/${val}`); + } + public onlydate(from:any,to:any){ + let params: HttpParams = new HttpParams(); + params =params.append("startDate",from); + params =params.append("endDate",to); + return this.apiRequest.get(this.dateurl,params); + } + public apply(from:any,to:any,user:any,entity:any){ + let params: HttpParams = new HttpParams(); + params =params.append("startDate",from); + params =params.append("endDate",to); + params =params.append("user",user); + params =params.append("entity_name",entity) + return this.apiRequest.get(`audit/betweendate_byuser`,params); + //return this._http.get(`${baseUrl}/audit/betweendate_byuser/${from}`); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/connector-mapping.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/connector-mapping.service.ts new file mode 100644 index 0000000..4a8b75a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/connector-mapping.service.ts @@ -0,0 +1,37 @@ +import { Injectable } from '@angular/core'; +import baseUrl from 'src/app/services/api/helper'; +import { HttpClient, HttpParams } from '@angular/common/http'; +import { ApiRequestService } from '../api/api-request.service'; +@Injectable({ + providedIn: 'root' +}) +export class ConnectorMappingService { + private getAllData = 'connector/Connectorjson'; + private baseURL = 'Connectorjson'; + + constructor(private _http: HttpClient,) { } + public getAll() { + return this._http.get(`${baseUrl}/connector/Connectorjson`); + } + public create(data: any){ + return this._http.post(`${baseUrl}/connector/Connectorjson`, data); + } + public getById(id: any){ + return this._http.get(`${baseUrl}/connector/Connectorjson/${id}`); + } + public delete(id:any){ + return this._http.delete(`${baseUrl}/connector/Connectorjson/${id}`); + } + public getkeys(data:any) { + return this._http.post(`${baseUrl}/token/connector/mapping/mapping`,data); + } + public getValues(data:any) { + return this._http.post(`${baseUrl}/token/connector/mapping/mapping1`,data); + } + public getValues1(data:any) { + return this._http.post(`${baseUrl}/token/connector/mapping/mapping2`,data); + } + public update(id:any,data:any){ + return this._http.put(`${baseUrl}/connector/Connectorjson/${id}`, data); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/deploymentprofile.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/deploymentprofile.service.ts new file mode 100644 index 0000000..44f776b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/deploymentprofile.service.ts @@ -0,0 +1,47 @@ +import { Injectable } from '@angular/core'; +import { ApiRequestService } from '../api/api-request.service'; +import { HttpClient, HttpHeaders, HttpParams } from "@angular/common/http"; +import { Observable } from 'rxjs'; + +@Injectable({ + providedIn: 'root' +}) +export class DeploymentprofileService { + + private getAllURL = 'deployment/deplomentprofile'; + addDataURl = 'deployment/deplomentprofile'; + private baseURL = "deployment/deplomentprofile"; + private getallline="deployment/deplomentprofile_line"; + constructor( + private _http: HttpClient, + private apiRequest: ApiRequestService + ) { } + + getAll(page?: number, size?: number): Observable { + // create Request URL params + let me = this; + let params: HttpParams = new HttpParams(); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + return this.apiRequest.get(this.getAllURL, params); + } +getalllines(page?: number, size?: number){ + let params: HttpParams = new HttpParams(); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + return this.apiRequest.get(this.getallline,params); +} + create(data:any): Observable { + return this.apiRequest.post(this.addDataURl, data); + } + + delete(id: number): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.delete(_http); + } + + update(id: number, data: any): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.put(_http, data); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/health-checkup.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/health-checkup.service.ts new file mode 100644 index 0000000..6ceb797 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/health-checkup.service.ts @@ -0,0 +1,74 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import{environment} from 'src/environments/environment'; +import { ApiRequestService } from '../api/api-request.service'; +import { HealthCheckup } from 'src/app/models/fnd/health_checkup'; +import { Observable } from 'rxjs'; + +@Injectable({ + providedIn: 'root' +}) +export class HealthCheckupService { + + baseUrl = 'HealthCheckup' + constructor(private _http: HttpClient, + private apiRequest: ApiRequestService) { } + + getHealthCheckups(): Observable { + return this.apiRequest.get(`${this.baseUrl}/HealthCheckup`); + } + + getHealthCheckupById(id: number): Observable { + return this.apiRequest.get(`${this.baseUrl}/HealthCheckup/${id}`); + } + + saveHealthCheckup(data: string, files: File[]): Observable { + const formData: FormData = new FormData(); + formData.append('data', JSON.stringify(data)); + + if (files && files.length > 0) { + // console.log("if Condition",files); + // for (const file of files) { + // console.log("if Condition",file); + // formData.append('files', file, file.name); + // } + for (let i = 0; i < files.length; i++) { + formData.append('files', files[i]); + console.log("if Condition",files[i]); + } + } + + return this.apiRequest.postFormData(`${this.baseUrl}/HealthCheckup`, formData); + } + + updateHealthCheckup(id: number, data: HealthCheckup): Observable { + return this.apiRequest.put(`${this.baseUrl}/HealthCheckup/${id}`, data); + } + + deleteHealthCheckup(id: number): Observable { + return this.apiRequest.delete(`${this.baseUrl}/HealthCheckup/${id}`); + } + + //redeploy + public getFileContent(healthId: number): Observable { + console.log(healthId) + const url = `HealthCheckupfile/readeploy/${healthId}`; + return this.apiRequest.get(url); + } + + //files + + getAllHealthCheckupFiles(healthId: number): Observable { + return this.apiRequest.get(`HealthCheckupfile/HealthCheckupfile/${healthId}`); + } + + readFile(fileId: number): Observable { + return this.apiRequest.get(`HealthCheckupfile/readfile/${fileId}`); + } + +//checkup + getHealthCheckup(jobtype: string): Observable { + const url = `${this.baseUrl}/healthcheckup?jobtype=${jobtype}`; + return this.apiRequest.get(url); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/logconfig.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/logconfig.service.ts new file mode 100644 index 0000000..0fa8786 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/logconfig.service.ts @@ -0,0 +1,28 @@ +import { Injectable } from '@angular/core'; +import baseUrl from 'src/app/services/api/helper'; +import { HttpClient } from '@angular/common/http'; +@Injectable({ + providedIn: 'root' +}) +export class LogconfigService { + + constructor(private _http: HttpClient,) { } + public getAll() { + return this._http.get(`${baseUrl}/log/getAll`); + } + public getbyid(Id: any){ + return this._http.get(`${baseUrl}/log/getOne/${Id}`); + } + public create(username:any,mode:any){ + return this._http.get(`${baseUrl}/log/startLogging/${username}/${mode}`); + } + public delete(username:any){ + return this._http.get(`${baseUrl}/log/stopLogging/${username}`); + } + public downloadfile(filename:any){ + return this._http.get(`${baseUrl}/log/downloadLog/${filename}`); + } + public readfile(id:any){ + return this._http.get(`${baseUrl}/log2/fileread/${id}`); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/menu-group.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/menu-group.service.ts new file mode 100644 index 0000000..e1e1865 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/menu-group.service.ts @@ -0,0 +1,76 @@ +import { HttpClient } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import baseUrl from '../../services/api/helper'; +import { ApiRequestService } from '../api/api-request.service'; +import { Rn_Main_Menu } from '../../models/builder/Rn_Main_Menu'; +import { Observable } from 'rxjs'; +import { CookieService } from 'ngx-cookie-service'; +@Injectable({ + providedIn: 'root' +}) +export class MenuGroupService { + public key: string ='key-for-data-in-cookies'; + private storage: Storage = sessionStorage; + constructor( + private _http: HttpClient,private readonly _cookieService: CookieService, + private apiRequest: ApiRequestService, + ) { } + + public getAll(){ + return this._http.get(`${baseUrl}/api/menu-group`); + } + + public addToDb(header: any){ + return this._http.post(`${baseUrl}/api/menu-group`, header); + } + + public addLineToDb(line: any){ + return this._http.post(`${baseUrl}/lines_m/create`, line); + } + + public getOneById(id: any){ + return this._http.get(`${baseUrl}/api/menu-group/${id}`); + } + + public updateGroupHeader(id: any, data: any){ + return this._http.put(`${baseUrl}/api/menu-group/${id}`, data); + } + + public updateLineById(id: any){ + return this._http.put(`${baseUrl}/lines_m/update`, id); + } + + public deleteById(id: any){ + return this._http.delete(`${baseUrl}/api/menu-group/${id}`); + } + getByCurrentUserMenuGroupId(): Observable { + const _http1 = "api1/getByUserId" + return this.apiRequest.get(_http1); +} +getByCurrentUserMenuGroupId1(): Observable { + const _http1 = "api1/submenu1" + return this.apiRequest.get(_http1); +} +getByCurrentUserMenuGroupId2(): Observable { + const _http1 = "fndMenu/menuloadbyuser"//9292/fndMenu/menuloadbyuser + return this.apiRequest.get(_http1); +} +private data: string = "data"; +public storeaddeditvalues(data:any,) { + this.storage.setItem(this.data,JSON.stringify (data)); + console.log(this.data); +} +getdata(): any { + //console.log(this.data); + var data = JSON.parse(this.storage.getItem(this.data)); + //let data = this.storage.getItem(this.data); + return data; +} +getuser(id:any){ + const http="chat/getuser"; + return this.apiRequest.post(http,id); +} +public save(text:string):void{ + return this._cookieService.set(this.key,text); +} +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/menu-register.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/menu-register.service.ts new file mode 100644 index 0000000..82ed7d1 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/menu-register.service.ts @@ -0,0 +1,33 @@ +import { HttpClient } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import baseUrl from '../../services/api/helper'; + +@Injectable({ + providedIn: 'root' +}) +export class MenuRegisterService { + + constructor( + private _http: HttpClient + ) { } + + public add(r: any){ + return this._http.post(`${baseUrl}/api/menu-register`, r); + } + + public getd(){ + return this._http.get(`${baseUrl}/api/menu-register`); + } + + public getById(id: any){ + return this._http.get(`${baseUrl}/api/menu-register/${id}`); + } + + public update(id:any, reg:any){ + return this._http.put(`${baseUrl}/api/menu-register/${id}`, reg); + } + + public deleteById(id: any){ + return this._http.delete(`${baseUrl}/api/menu-register/${id}`); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/menumaintance.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/menumaintance.service.ts new file mode 100644 index 0000000..c407dce --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/menumaintance.service.ts @@ -0,0 +1,69 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import baseUrl from '../../services/api/helper'; +import { Observable } from "rxjs"; +import { Rn_Main_Menu } from "../../models/builder/Rn_Main_Menu"; +import { ApiRequestService } from '../api/api-request.service'; +@Injectable({ + providedIn: 'root' +}) +export class MenumaintanceService { + + constructor(private _http: HttpClient, + private apiRequest: ApiRequestService,) { } + // create + public create(data: any){ + return this._http.post(`${baseUrl}/Menu_maintain`, data); + } + + // update + public update(id:number,data:any): Observable{ + //const _http = this.baseURL + "/" + id; + //return this.apiRequest.put(_http, data); + return this._http.put(`${baseUrl}/Menu_maintain/${id}`, data); + } + // get all + public getAll(){ + return this._http.get(`${baseUrl}/Menu_maintain`); + } + getByCurrentUserMenuGroupId1(): Observable { + const _http1 = "api1/submenu1" + return this.apiRequest.get(_http1); + } + // add submenudet table + // create + public create1(data: any){ + return this._http.post(`${baseUrl}/api1/Sec_menuDet`, data); + } + public create2(data:any){ + return this._http.post(`${baseUrl}/api1/addgrpwithsubmenu`, data) + } + // sink + public sink(id:any,data:any){ + return this._http.put(`${baseUrl}/fndMenu/sink/${id}`,data); + } + //get by menuid->submenu + public getbyid(id:any){ + return this._http.get(`${baseUrl}/api1/submenu1/${id}`); + } + //update update by menu_item_id + public update1(id:number,data:any): Observable{ + return this._http.put(`${baseUrl}/api1/submenu1/${id}`, data); + } + public update2(id:number,usrgrp:any,data:any): Observable{ + return this._http.put(`${baseUrl}/api1/update/${id}/${usrgrp}`, data); +} + //delete + public delete1(id: any){ + return this._http.delete(`${baseUrl}/api1/menu/${id}`); + } + // get one + public getOne(Id: any){ + return this._http.get(`${baseUrl}/Menu_maintain/${Id}`); + } + + // delete + public delete(id: any){ + return this._http.delete(`${baseUrl}/Menu_maintain/${id}`); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/myworkspace.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/myworkspace.service.ts new file mode 100644 index 0000000..02f6a8b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/myworkspace.service.ts @@ -0,0 +1,98 @@ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpParams } from '@angular/common/http'; +import baseUrl from '../../services/api/helper'; + +@Injectable({ + providedIn: 'root' +}) +export class MyworkspaceService { + public localStorage: Storage = localStorage; + constructor(private _http: HttpClient) { } + public add(r: any){ + return this._http.post(`${baseUrl}/api/menu-register`, r); + } + + public getall(){ + return this._http.get(`${baseUrl}/Workspace_team/SecTeam`); + } + public getalluser(){ + return this._http.get(`${baseUrl}/User_workSpace/GetAllUser`); + } + public getallguest(){ + return this._http.get(`${baseUrl}/User_workSpace/GetAllGuest`); + } + public adduser(email:any){ + let params: HttpParams = new HttpParams(); + params = params.append("email", email); + return this._http.post(`${baseUrl}/api/userviaadmin`,params); + } + storeEmail(email: string) { + this.localStorage.setItem("registeredEmail", email); + } + //Store userinfo from session storage + + //Get email from session storage ( WILL REMOVE AFTER REGISTER) + getStoredEmail(): string | null { + try { + let email: string = this.localStorage.getItem( + "registeredEmail" + ); + if (email) { + return email; + } else { + return null; + } + } catch (e) { + return null; + } + } + adduserdetails(data:any,token:any){ + return this._http.post(`${baseUrl}/api/admin/adduser/${token}`,data); + } + + addguest(email:any,duration:any){ + let params: HttpParams = new HttpParams(); + params = params.append("email", email); + params=params.append("access_duration",duration) + return this._http.post(`${baseUrl}/api/guest_via_admin`,params); + } + + addguestdetails(data:any,token:any){ + return this._http.post(`${baseUrl}/api/admin/addguest/${token}`,data); + } + addteam(data:any){ + return this._http.post(`${baseUrl}/Workspace_team/SecTeam`,data); + } + public getallteammeme(id:any){ + return this._http.get(`${baseUrl}/User_workSpace/GetAllMember/${id}`); + } + getallusertosameaccid(){ + return this._http.get(`${baseUrl}/User_workSpace/GetAll`); + } + addteammem(id:any,user_id:any,data:any){ + return this._http.post(`${baseUrl}/User_workSpace/add_team/${id}/${user_id}`,data); + } + getallworkspace(){ + return this._http.get(`${baseUrl}/Workspace_workspace/FindByaccount`); + } + addsecworkspaceuser(usrid:any,id:any,data:any,){ + return this._http.post(`${baseUrl}/workspace/secworkspaceuser/add_workspace/users/${usrid}/${id}`,data); + } + addsecworkteam(pid:any,tid:any,data:any){ + return this._http.post(`${baseUrl}/workspace/secworkspaceuser/addteam/${pid}/${tid}`,data); + } + getallsecworkspace(id:any){ + return this._http.get(`${baseUrl}/workspace/secworkspaceuser/get_by_projectid/${id}`); + } + // public getById(id: any){ + // return this._http.get(`${baseUrl}/api/menu-register/${id}`); + // } + + // public update(id:any, reg:any){ + // return this._http.put(`${baseUrl}/api/menu-register/${id}`, reg); + // } + + // public deleteById(id: any){ + // return this._http.delete(`${baseUrl}/api/menu-register/${id}`); + // } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/outgoingwebhook.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/outgoingwebhook.service.ts new file mode 100644 index 0000000..16d441f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/outgoingwebhook.service.ts @@ -0,0 +1,51 @@ +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { ApiRequestService } from '../api/api-request.service'; + +@Injectable({ + providedIn: 'root' +}) +export class OutgoingwebhookService { + + constructor(private apiRequest: ApiRequestService) { } + getall(){ + let _http = `api/outgoing/getall`; + return this.apiRequest.get(_http); + } + getallentity(){ + let _http = `api/outgoing/getentity`; + return this.apiRequest.get(_http); + } + wall(){ + let _http = `api/webhookdata/getall`; + return this.apiRequest.get(_http); + } + post(data:any){ + let _http=`api/outgoing/save`; + return this.apiRequest.post(_http,data); + } + getById(id: number) { + const _http =`api/outgoing/getById/${id}`; + return this.apiRequest.get(_http); + } + update(id: number, data:any): Observable { + const _http =`api/outgoing/update/${id}`; + return this.apiRequest.put(_http,data); + } + update1(id: number, data:any): Observable { + const _http =`api/outgoing_lines/update/${id}`; + return this.apiRequest.put(_http,data); + } + delete(id:any){ + let _http=`api/outgoing/delete/${id}`; + return this.apiRequest.delete(_http,); + } + getallworkflow(){ + let _http = `token/webhook/Workflow/getall`; + return this.apiRequest.get(_http); + } + getbyidworkflow(id:any){ + let _http = `token/webhook/Workflow/get/${id}`; + return this.apiRequest.get(_http); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/sessionlogger.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/sessionlogger.service.ts new file mode 100644 index 0000000..f48fc28 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/sessionlogger.service.ts @@ -0,0 +1,17 @@ +import { HttpClient } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import baseUrl from 'src/app/services/api/helper'; +@Injectable({ + providedIn: 'root' +}) +export class SessionloggerService { + + constructor(private _http: HttpClient) { } + public getAll() { + return this._http.get(`${baseUrl}/user1/session/getAll`); + } + + public delete(id:any){ + return this._http.delete(`${baseUrl}/user1/session/delete/${id}`); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/sure-connector.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/sure-connector.service.ts new file mode 100644 index 0000000..87a3c74 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/sure-connector.service.ts @@ -0,0 +1,25 @@ +import { HttpClient } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +//import baseUrl from 'src/app/services/api/helper'; +import { environment } from 'src/environments/environment'; +@Injectable({ + providedIn: 'root' +}) +export class SureConnectorService { + baseurl = environment.jobmgurl; + constructor(private _http: HttpClient,) { } + public getAll() { + return this._http.get(`${this.baseurl}/jobpro/get_rn_sureconnetor`); + } + public create(data: any){ + return this._http.post(`${this.baseurl}/jobpro/Savern_sureconnetor`, data); + } + + public delete(id:any){ + return this._http.delete(`${this.baseurl}/jobpro/delete_by_rn_sureconnetor_id/${id}`); + } + + public update(id:any,data:any){ + return this._http.put(`${this.baseurl}/jobpro/update_rn_sureconnetor/${id}`, data); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/sure-opsscriptmaster.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/sure-opsscriptmaster.service.ts new file mode 100644 index 0000000..d0cd824 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/sure-opsscriptmaster.service.ts @@ -0,0 +1,86 @@ +import { HttpClient, HttpParams } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { ApiRequestService } from '../api/api-request.service'; + +@Injectable({ + providedIn: 'root' +}) +export class SureOpsscriptmasterService { + private URL = 'Sureops_script_api/Sureops_script_apis'; + private url='Sureops_script_api/Sureops_script_line' + private masterurl='Sureops_script_master/sureops_scriptmaster1' + constructor(private _http: HttpClient,private apiRequest: ApiRequestService) { } + getAll(page?: number, size?: number): Observable { + // create Request URL params + let me = this; + let params: HttpParams = new HttpParams(); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + // params = params.append("module_id", module_id.toString()); + // get all + return this.apiRequest.get(this.URL, params); + } + + create(data:any): Observable{ + return this.apiRequest.post(this.URL, data); + } + + delete(id:number){ + let _http = this.URL + "/" + id; + return this.apiRequest.delete(_http); + } + + getById(id:number) + { + let _http = this.URL + "/"+id; + return this.apiRequest.get(_http); + } + + updateLineById(id:number,data:any) + { + let _http = this.url + "/"+id; + return this.apiRequest.put(_http,data); + } + + update(id:number,data:any) + { + let _http = this.URL + "/"+id; + return this.apiRequest.put(_http,data); + } + + getall(page?: number, size?: number): Observable { + // create Request URL params + let me = this; + let params: HttpParams = new HttpParams(); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + // params = params.append("module_id", module_id.toString()); + // get all + return this.apiRequest.get(this.masterurl, params); + } + + create1(data:any): Observable{ + return this.apiRequest.post(this.masterurl, data); + } + + delete1(id:number){ + let _http = this.masterurl + "/" + id; + return this.apiRequest.delete(_http); + } + + getById1(id:number) + { + let _http = this.masterurl + "/"+id; + return this.apiRequest.get(_http); + } + + + + update1(id:number,data:any) + { + let _http = this.masterurl + "/"+id; + return this.apiRequest.put(_http,data); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/sureapi.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/sureapi.service.ts new file mode 100644 index 0000000..9426ec5 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/sureapi.service.ts @@ -0,0 +1,23 @@ +import { HttpClient, HttpParams } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import baseUrl from 'src/app/services/api/helper'; +import { ApiRequestService } from '../api/api-request.service'; +@Injectable({ + providedIn: 'root' +}) +export class SureapiService { +url='sure_connect/sure_postman/call_api' + constructor(private http:HttpClient,private apiRequest: ApiRequestService,) { } + createpostman(api_url:any,json_body:any,method: any,token:any){ + console.log(api_url,json_body,method,token) + let params: HttpParams = new HttpParams(); + params =params.append("api_url",api_url); + // params =params.append("json_body",json_body); + params =params.append("method",method); + params =params.append("token",token) + return this.http.post(`${baseUrl}/sure_connect/sure_postman/call_api`,json_body,{params:params}); + //return this.apiRequest.post(this.url,{ search:params }); + + + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/sureconnect.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/sureconnect.service.ts new file mode 100644 index 0000000..e8b6086 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/sureconnect.service.ts @@ -0,0 +1,35 @@ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpParams } from '@angular/common/http'; +import baseUrl from 'src/app/services/api/helper'; +import { ApiRequestService } from '../api/api-request.service'; +@Injectable({ + providedIn: 'root' +}) +export class SureconnectService { + + constructor(private _http: HttpClient, + private apiRequest: ApiRequestService,) { } + public create(data: any){ + return this._http.post(`${baseUrl}/Sure_Connect`, data); + } + + // create card + public update(data: any,id:any){ + return this._http.put(`${baseUrl}/Sure_Connect/${id}`, data); + } + + // get all cards + public getAll(){ + return this._http.get(`${baseUrl}/Sure_Connect`); + } + + // get one card + public getOne(id: any){ + return this._http.get(`${baseUrl}/Sure_Connect/${id}`); + } + + // delete card + public delete(id: any){ + return this._http.delete(`${baseUrl}/Sure_Connect/${id}`); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/sysparameter.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/sysparameter.service.ts new file mode 100644 index 0000000..b55858a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/sysparameter.service.ts @@ -0,0 +1,33 @@ +import { Injectable } from '@angular/core'; +import { Observable } from "rxjs"; +import { ApiRequestService } from "../api/api-request.service"; +import { HttpParams } from "@angular/common/http"; +import { HttpClient } from '@angular/common/http'; +@Injectable({ + providedIn: 'root' +}) +export class SysparameterService { + private addsysurl = 'sysparam/addSysParams '; + private updatesysurl = 'sysparam/updateSysParams'; + private getbyidurl = 'sysparam/getSysParams'; + constructor(private apiRequest: ApiRequestService,) { } + + + create(data: any): Observable { + return this.apiRequest.post(this.addsysurl, data); + } + + update(id: number, data: any, file: any): Observable { + const s = JSON.stringify(data); + const formData: FormData = new FormData(); + formData.append("o1", s); + formData.append(file.name, file); + + const _http = this.updatesysurl + "/" + id; + return this.apiRequest.put(_http, data); + } + getById(id: number): Observable { + const _http = this.getbyidurl + "/" + id; + return this.apiRequest.get(_http); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/university.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/university.service.ts new file mode 100644 index 0000000..1364856 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/university.service.ts @@ -0,0 +1,44 @@ +import { Injectable } from '@angular/core'; +import { HttpParams } from "@angular/common/http"; +import { university } from "../../models/fnd/university"; +import { Observable } from "rxjs"; +import { ApiRequestService } from "../api/api-request.service"; +import { UserInfoService } from "../user-info.service"; + +@Injectable({ + providedIn: 'root' +}) +export class UniversityService { + + private baseURL = "api/author"; + constructor( + private apiRequest: ApiRequestService, + private userInfoService: UserInfoService + ) { } + getAll(page?: number, size?: number): Observable { + //Create Request URL params + let params: HttpParams = new HttpParams(); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + //const _http = this.baseURL + '/all'; + console.log(this.userInfoService.getUserInfo().userId); + let id = this.userInfoService.getUserInfo().userId; + return this.apiRequest.get(this.baseURL, params); + } + getById(id: number): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.get(_http); + } + create(college: university): Observable { + return this.apiRequest.post(this.baseURL, college); + } + + update(id: number, projectSetup: university): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.put(_http, projectSetup); + } + delete(id: number): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.delete(_http); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/user-list.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/user-list.service.ts new file mode 100644 index 0000000..aa48719 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/user-list.service.ts @@ -0,0 +1,33 @@ +import { HttpClient } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import baseUrl from '../../services/api/helper'; + +@Injectable({ + providedIn: 'root' +}) +export class UserListService { + + constructor( + private _http: HttpClient + ) { } + + public add(user: any){ + return this._http.post(`${baseUrl}/user_list/create`, user); + } + + public update(user: any){ + return this._http.put(`${baseUrl}/user_list/update`, user); + } + + public getOne(user: any){ + return this._http.get(`${baseUrl}/user_list/get-one/${user}`); + } + + public getAll(){ + return this._http.get(`${baseUrl}/user_list/get-all`); + } + + public deleteById(id: any){ + return this._http.delete(`${baseUrl}/user_list/delete/${id}`); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/user-profile.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/user-profile.service.ts new file mode 100644 index 0000000..13160da --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/user-profile.service.ts @@ -0,0 +1,120 @@ +import { HttpClient, HttpParams } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { AppConfig } from '../../app-config'; +import { Observable } from 'rxjs'; +import { UserInfoService } from '../user-info.service'; +import { ApiRequestService } from '../api/api-request.service'; +import { TranslateService } from '../api/translate.service'; +import { environment } from 'src/environments/environment'; + +export interface UserProfile { + email: string; + firstName: string; + lastName: string; + fullName: string; + pronouns?: string; + photos?: string; + status?: string; + role?: string; + roles?: Role[]; + department?: string; + about?: string; + createdAt?: Date; + updatedAt?: Date; + accountId?: number; + createdBy?: number; + updatedBy: number; + +} +export interface Role { + id: number; + name: string; + description: string; +} +@Injectable() +export class UserProfileService { + + private userProfileURL = 'api/user-profile'; + private postUserProfilePicURL = 'api/upload'; + private getUserProfilePicURL = 'api/retrieve-image'; + private userAcountURL = 'api/user-account'; + private aboutWork = 'token/aboutwork'; + + private getids = 'token/userid'; + + private actionBuilderURL="token/aboutwork" + + + constructor( + private apiRequest: ApiRequestService, + private translate: TranslateService, + private userInfoService: UserInfoService, + private http: HttpClient, + private appConfig: AppConfig, + ) { } + + /* getAll(page?:number, size?:number): Observable { + //Create Request URL params + let me = this; + let params: HttpParams = new HttpParams(); + params = params.append('page', typeof page === "number"? page.toString():"0"); + params = params.append('size', typeof size === "number"? size.toString():"1000"); + // get all + // return this.apiRequest.get('api/instructors'); + // paginated data + return this.apiRequest.get(this.baseURL, params); + + } */ + + getUserProfile(): Observable { + const _http = this.userProfileURL; + return this.apiRequest.get(_http); + + } + updateUserProfile(user: UserProfile): Observable { + const _http = this.userProfileURL; + return this.apiRequest.put(_http, user); + } + + uploadUserProfilePic(fileToUpload: File): Observable { + const formData: FormData = new FormData(); + formData.append('imageFile', fileToUpload, fileToUpload?.name); + return this.http.post(this.appConfig.baseApiPath + this.postUserProfilePicURL, formData, { reportProgress: true, observe: 'events' }); + } + + getProfilePic(): Observable { + return this.apiRequest.get(this.getUserProfilePicURL); + } + + + getUserAccountDetails() { + return this.apiRequest.get(this.userAcountURL); + } + + saveUser(data): Observable { + return this.apiRequest.post(this.aboutWork, data); + } + + updateUser(id,data): Observable { + const _http = this.actionBuilderURL + "/" + id; + return this.apiRequest.put(_http, data); + } + + getUser(id: number, checknumber: number): Observable { + return this.apiRequest.get(this.getids + "/" + id + "/" + checknumber); + // return this.apiRequest.get(this.getids, data); + + } + private url = environment.backendUrl +"/token/"; + /////////////// + addUserinSignUP(data:any): Observable { + return this.http.post(`${this.url}users/sysaccount/savesysaccount`, data); + } + + adduserData(data:any): Observable { + return this.http.post(`${this.url}addOneAppUser`, data); + } + + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/user-registration.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/user-registration.service.ts new file mode 100644 index 0000000..7fe4799 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/user-registration.service.ts @@ -0,0 +1,290 @@ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpHeaders, HttpParams, HttpResponse } from "@angular/common/http"; +import { PasswordResetComponent } from "src/app/modules/main/admin/password-reset/password-reset.component"; + +import { UserRegistrationComponent } from "src/app/modules/main/admin/user-registration/user-registration.component"; +import { Observable } from "rxjs"; +import { UserInfoService } from "../user-info.service"; +import { ApiRequestService } from "../api/api-request.service"; +import { environment } from 'src/environments/environment'; + +export interface User { + firstName: string; + lastName: string; + password: string; + email: string; +} + +export interface Sys_Account { + userEmail: string; + companyName: string; + workspace: string; + gstNumber: string; +} + +export interface SignedUpUser { + userId: string; + email: string; + fullName: string; + firstName: string; +} +export interface signUpInfo { + success?: boolean; + message?: string; + landingPage?: string; + user?: SignedUpUser; +} + + +@Injectable({ + providedIn: 'root' +}) +export class UserRegistrationService { + + private baseURL = "api/user-registration"; // still not in use + private emailExistURL = "token/email-exists"; // email exist check + private userRegURL = "token/user-registration"; + private companyRegURL = "token/company-registration"; + private resetPasswordURL = "api/reset_password"; + + public registeredEmailKey: string = "registeredEmail"; + public localStorage: Storage = localStorage; + public sessionStorage: Storage = sessionStorage; + + private url = environment.backendUrl +"/token/"; + + + constructor(private apiRequest: ApiRequestService,private http:HttpClient, + private userInfoService: UserInfoService) { } + + /* takenUsernames: any[] = []; + checkIfUsernameExists(username: string): Observable { + return of(this.takenUsernames.includes(username)) + .pipe(delay(1000)); + } + usernameValidator(): AsyncValidatorFn { + return (control: AbstractControl): Observable => { + return this.checkIfUsernameExists(control.value).pipe( + map(res => { + // if res is true, username exists, return true + return res ? { usernameExists: true } : null; + // NB: Return null if there is no error + }) + ); + }; + } */ + + //Store userinfo from session storage + storeEmail(userInfoString: string) { + this.localStorage.setItem(this.registeredEmailKey, userInfoString); + } + + //Remove userinfo from session storage + removeStoredEmail() { + this.localStorage.removeItem(this.registeredEmailKey); + } + + //Get email from session storage ( WILL REMOVE AFTER REGISTER) + getStoredEmail(): string | null { + try { + let userInfoString: string = this.localStorage.getItem( + this.registeredEmailKey + ); + if (userInfoString) { + return userInfoString; + } else { + return null; + } + } catch (e) { + return null; + } + } + + /* === store signed up user info in storage === */ + public registeredUserKey: string = "registeredUser"; + storeSignedUpUserInfo(userInfoString: string) { + this.sessionStorage.setItem(this.registeredUserKey, userInfoString); + } + removeSignedUpUserInfo() { + this.sessionStorage.removeItem(this.registeredUserKey); + } + + //Get userinfo from session storage + getSignedUpUserInfo(): SignedUpUser | null { + try { + let userInfoString: string = this.sessionStorage.getItem( + this.registeredUserKey + ); + if (userInfoString) { + let userObj: SignedUpUser = JSON.parse( + this.sessionStorage.getItem(this.registeredUserKey) + ); + return userObj; + } else { + return null; + } + } catch (e) { + return null; + } + } + // Get Full Name from session storage + getFirstName(): string { + let userObj: SignedUpUser = this.getSignedUpUserInfo(); + if (userObj !== null) { + //console.log('getFirstName() : ', userObj.firstName); + return userObj.firstName; + } + return "no-user"; + } + // Get User Email from session storage + getEmail(): string { + let userObj: SignedUpUser = this.getSignedUpUserInfo(); + if (userObj !== null) { + //console.log('getEmail() : ', userObj.email); + return userObj.email; + } + return "no-user"; + } + // Get User Id from session storage + getUserId(): string { + let userObj: SignedUpUser = this.getSignedUpUserInfo(); + if (userObj !== null) { + return userObj.userId; + } + return "no-user"; + } + + /* === store signed up user info in storage END === */ + + /* === check if email is aailable or not === */ + emailCheck(email: UserRegistrationComponent): Observable { + return this.apiRequest.post(this.emailExistURL, email); + } + /* === signed up user (admin) === */ + + /* public landingPage:string = "/account-setup"; + saveUser(user: User): Observable { + let signupDataSubject: BehaviorSubject = new BehaviorSubject([]); + let signupInfoReturn: signUpInfo; + this.apiRequest.post(this.userRegURL, user).subscribe( + (res) => { + if ( + res !== undefined && + res !== null && + res.operationStatus === "SUCCESS" + ) { + signupInfoReturn = { + success: true, + message: res.operationMessage, + landingPage: this.landingPage, + user: { + userId: res.item.userId, + email: res.item.email, + fullName: res.item.fullname, + firstName: res.item.firstName, + }, + }; + console.log('signupInfoReturn : ', signupInfoReturn); + // store signed up user info in session storage for further case + this.storeSignedUpUserInfo(JSON.stringify(signupInfoReturn.user)); + } else { + //Create a faliure object that we want to send back to login page + signupInfoReturn = { + success: false, + message: res.operationMessage, + landingPage: "/create-account", + }; + } + signupDataSubject.next(signupInfoReturn); + }, + (err) => { + console.log("signup error ", err); + signupInfoReturn = { + success: false, + message: err.url + " >>> " + err.statusText + "[" + err.status + "]", + landingPage: "/create-account", + }; + } + ); + console.log('signupDataSubject : ', signupDataSubject); + + return signupDataSubject; + //return this.apiRequest.post(this.userRegURL, user); + } */ + + saveUser(user: User): Observable { + return this.apiRequest.post(this.userRegURL, user); + } + + /* company registration form */ + saveCompany(company: Sys_Account): Observable { + return this.apiRequest.post(this.companyRegURL, company); + } + + resetPassword(passwordResetRequest: PasswordResetComponent): Observable { + return this.apiRequest.post(this.resetPasswordURL, passwordResetRequest); + } + + /*==== CRUD APIS =====*/ + getAll(page?: number, size?: number): Observable { + //Create Request URL params + let params: HttpParams = new HttpParams(); + params = params.append( + "page", + typeof page === "number" ? page.toString() : "0" + ); + params = params.append( + "size", + typeof size === "number" ? size.toString() : "1000" + ); + //const _http = this.baseURL + '/all'; + return this.apiRequest.get(this.baseURL, params); + } + + getById(id: number): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.get(_http); + } + + getByAccountId(): Observable { + const _http = this.baseURL + "/user-menu"; + return this.apiRequest.get(_http); + } + + create(any: any): Observable { + return this.apiRequest.post(this.baseURL, any); + } + + update(id: number, any: any): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.put(_http, any); + } + + + /////// + + getStoredName() { + return this.localStorage.getItem("FullName"); + } + + removeStoredName() { + this.localStorage.removeItem("FullName"); + } + + sendEmail( email: any): Observable { + // const body = { account_id: accountId, email }; + const newbody = email; + const headers = new HttpHeaders({ 'Content-Type': 'application/json' }); + console.log(newbody); + return this.http.post(`${this.url}user/send_email`, newbody); + } + + sendOTP(email: string): Observable { + return this.http.post(`${this.url}user/resend_otp?email=${email}`, {}); + } + + // Method to verify OTP + verifyOTP(email: string, otp: string): Observable { + return this.http.post(`${this.url}user/otp_verification?email=${email}&otp=${otp}`, null); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/usergrpmaintaince.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/usergrpmaintaince.service.ts new file mode 100644 index 0000000..f8954be --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/usergrpmaintaince.service.ts @@ -0,0 +1,46 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import baseUrl from '../api/helper'; +import { Observable } from 'rxjs'; +import { ApiRequestService } from '../api/api-request.service'; +import { Usergrpmain } from '../../models/admin/usergrpma'; +@Injectable({ + providedIn: 'root' +}) +export class UsergrpmaintainceService { + private baseURL = "api/updateOneUsrGrp"; + constructor(private _http: HttpClient,private apiRequest: ApiRequestService,) { } + + public getAll() { + return this._http.get(`${baseUrl}/api/getAllUsrGrp`); + } + public getbyid(Id: any){ + return this._http.get(`${baseUrl}/api/getOneAppUser/${Id}`); + } + public getbyusergrpid(id:any){ + return this._http.get(`${baseUrl}/api1/getusracces1/${id}`); + } + public create(data: any){ + return this._http.post(`${baseUrl}/api/addOneUsrGrp`, data); + } +// update +public update(data: any){ + return this._http.post(`${baseUrl}/api/updateOneUsrGrp`, data); +} +updatei(id: number, projectSetup: Usergrpmain): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.put(_http, projectSetup); +} +public getall(){ + return this._http.get(`${baseUrl}/api1/getAllData`); +} +public deleteusr(id:any){ + return this._http.delete(`${baseUrl}/api/delete_usrgrp/${id}`); +} +public delete(id:any,usrgrp:any){ +return this._http.delete(`${baseUrl}/api1/deleteGrpMenuAcces/${id}/${usrgrp}`); +} +public deletemain(id:any,usrgrp:any){ + return this._http.delete(`${baseUrl}/fndMenu/DelMenu_WithSub1/${id}/${usrgrp}`); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/usermaintance.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/usermaintance.service.ts new file mode 100644 index 0000000..5c321e0 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/admin/usermaintance.service.ts @@ -0,0 +1,42 @@ +import { HttpClient } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import baseUrl from 'src/app/services/api/helper'; +@Injectable({ + providedIn: 'root' +}) +export class UsermaintanceService { + + constructor(private _http: HttpClient,) { } + public getAll() { + return this._http.get(`${baseUrl}/api/getAllAppUser`); + } + public getbyid(Id: any){ + return this._http.get(`${baseUrl}/api/getOneAppUser/${Id}`); + } + public create(data: any){ + return this._http.post(`${baseUrl}/api/addOneAppUser`, data); + } + // update + public update(data: any){ + return this._http.put(`${baseUrl}/api/updateAppUser`, data); + } + //newupdate + public updatenew(id:any,data: any){ + return this._http.put(`${baseUrl}/api/updateAppUserDto/${id}`, data); + } + public getallposition(){ + return this._http.get(`${baseUrl}/api/getAllPositions`); + } + public getbypositionid(Id:any){ + return this._http.get(`${baseUrl}/api/getPosition/${Id}`); + } + public getalldepartment(){ + return this._http.get(`${baseUrl}/api/getAllDepartments`); + } + public getbydepartmentid(Id:any){ + return this._http.get(`${baseUrl}/api/getDepartment/${Id}`); + } + public deleteusr(id:any){ + return this._http.delete(`${baseUrl}/api/delete_usr/${id}`); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/alert.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/alert.service.ts new file mode 100644 index 0000000..c19d894 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/alert.service.ts @@ -0,0 +1,70 @@ +import { Injectable } from '@angular/core'; +import { default as swal, SweetAlertOptions } from 'sweetalert2'; + +@Injectable({ + providedIn: 'root' +}) +export class AlertService { + constructor() { } + + error(text = 'เกิดข้อผิดพลาด', title = '') { + const option: SweetAlertOptions = { + title: title, + text: this.convertToText(text), + icon: 'error', + confirmButtonText: 'ตกลง' + }; + return swal.fire(option); + + } + + success(text = '', title = 'Success') { + const option: SweetAlertOptions = { + title: title, + text: this.convertToText(text), + icon: 'success', + confirmButtonText: 'Ok' + }; + return swal.fire(option); + + } + + serverError(text = 'เกิดข้อผิดพลาดในการเชื่อมต่อกับเซิร์ฟเวอร์', title = 'เกิดข้อผิดพลาด') { + const option: SweetAlertOptions = { + title: title, + text: this.convertToText(text), + icon: 'error', + confirmButtonText: 'ตกลง' + }; + return swal.fire(option); + + } + + confirm(text = 'คุณต้องการดำเนินการนี้ ใช่หรือไม่?', title = 'Are you sure?') { + const option: SweetAlertOptions = { + title: title, + text: this.convertToText(text), + icon: 'question', + showCancelButton: true, + confirmButtonColor: '#3085d6', + cancelButtonColor: '#d33', + confirmButtonText: 'Yes', + cancelButtonText: 'No' + }; + return swal.fire(option); + } + + convertToText(text) { + if (text && text.message) { + return text.message + } else if (text && text.error) { + return text.error + } else if (text && text.code) { + return text.code + } else { + return text ? JSON.stringify(text) : ''; + } + } + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/alerts.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/alerts.service.ts new file mode 100644 index 0000000..4617822 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/alerts.service.ts @@ -0,0 +1,39 @@ +import { Injectable } from "@angular/core"; +import { NavigationStart, Router } from "@angular/router"; +import { Observable, Subject } from "rxjs"; + +@Injectable() +export class AlertService { + private subject = new Subject(); + + private keepAfterNavigationChange = false; + + constructor(private router: Router) { + // clear alert message on route change + router.events.subscribe((event) => { + if (event instanceof NavigationStart) { + if (this.keepAfterNavigationChange) { + // only keep for a single location change + this.keepAfterNavigationChange = false; + } else { + // clear alert + this.subject.next(); + } + } + }); + } + + success(message: string, keepAfterNavigationChange = false) { + this.keepAfterNavigationChange = keepAfterNavigationChange; + this.subject.next({ type: "success", text: message }); + } + + error(message: string, keepAfterNavigationChange = false) { + this.keepAfterNavigationChange = keepAfterNavigationChange; + this.subject.next({ type: "error", text: message }); + } + + getMessage(): Observable { + return this.subject.asObservable(); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/addemails.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/addemails.service.ts new file mode 100644 index 0000000..e98291a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/addemails.service.ts @@ -0,0 +1,26 @@ +import { Injectable } from '@angular/core'; +//import { id } from '@swimlane/ngx-datatable/release/utils'; +import { Observable } from 'rxjs'; +import { ApiRequestService } from './api-request.service'; + +@Injectable({ + providedIn: 'root' +}) +export class AddemailsService { + + + private addemailUrl = 'token/addemails'; + + + + constructor( + private apirequest: ApiRequestService + + ) { } + + saveUser(data, id: number): Observable { + return this.apirequest.post(this.addemailUrl + "/" + id, data); + + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/api-request.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/api-request.service.ts new file mode 100644 index 0000000..3c24cd5 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/api-request.service.ts @@ -0,0 +1,172 @@ +import { Injectable } from "@angular/core"; +import { + HttpClient, + HttpHeaders, + HttpParams, + HttpErrorResponse, +} from "@angular/common/http"; +import { Router } from "@angular/router"; +import { Observable, throwError } from "rxjs"; +import { UserInfoService } from "../user-info.service"; +import { AppConfig } from "../../app-config"; +import { catchError } from "rxjs/operators"; + +@Injectable() +export class ApiRequestService { + constructor( + private appConfig: AppConfig, + private http: HttpClient, + private router: Router, + private userInfoService: UserInfoService + ) {} + + /** + * This is a Global place to add all the request headers for every REST calls + */ + /*{let headers = new HttpHeaders({ + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Access-Control-Allow-Origin': '*', + 'Access-Control-Allow-Methods': 'POST, GET, DELETE, OPTIONS, PUT', + 'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept, Accept-Encoding, Accept-Language, Host, Referer, Connection, User-Agent, authorization, sw-useragent, sw-version' + });*/ + getHeaders(): HttpHeaders { + let headers = new HttpHeaders(); + //let token = this.userInfoService.getStoredToken(); + //console.log('Token from session storage: ', token); + headers = headers.append("Content-Type", "application/json"); + /* if (token !== null) { + headers = headers.append("Authorization", token); + } */ + return headers; + } + + getMultipartHeader(): HttpHeaders { + let headers = new HttpHeaders(); + headers = headers.append("Content-Type", "multipart/form-data"); + return headers; + + } + + errMsg: string = ''; + + handleError(error: HttpErrorResponse) { + let me = this; + console.log("handleError ", error.message); + switch(error.status) { + case 401: + this.errMsg = 'Forbidden'; + break; + case 404: + this.errMsg = 'Service not found'; + case 408: + this.errMsg = 'Request Timedout'; + case 500: + this.errMsg = 'Internal Server Error'; + default: + this.errMsg = 'Server Error'; + } + return throwError(error.message); + //return Observable.throw(error.message); + } + + get(url: string, urlParams?: HttpParams): Observable { + let me = this; + return this.http + .get(this.appConfig.baseApiPath + url, { + headers: this.getHeaders(), + params: urlParams, + }).pipe( + catchError((error) => { + return throwError(error || "Server error"); + }) + ) + } + + loginAuthentication(url: string, body: Object): Observable { + let me = this; + return this.http + .post(this.appConfig.baseApiPath + url, JSON.stringify(body), { + headers: this.getHeaders() + }).pipe( + catchError((error) => { + return throwError(error || "Server error"); + }) + ) + } + + // modified params + post(url: string, body: any, urlParams?: HttpParams): Observable { + let me = this; + let bodyTest = body instanceof Object ? JSON.stringify(body) : body; + //console.log('Post method String Vs. Object', bodyTest); + return this.http + .post(this.appConfig.baseApiPath + url, JSON.stringify(body), { + headers: this.getHeaders(), + params: urlParams, + }).pipe( + catchError((error) => { + return throwError(error || "Server error"); + }) + ) + } + + // [Multipart file Support] + postFormData(url: string, body: any, urlParams?: HttpParams): Observable { + //let me = this; + //headers: this.getMultipartHeader(), + return this.http + .post(this.appConfig.baseApiPath + url, body, { + params: urlParams, + reportProgress: true, + observe: 'events' + }).pipe( + catchError((error) => { + return throwError(error || "Server error"); + }) + ) + } + + // modified params + put(url: string, body: Object, urlParams?: HttpParams): Observable { + let me = this; + return this.http + .put(this.appConfig.baseApiPath + url, JSON.stringify(body), { + headers: this.getHeaders(), + params: urlParams, + }).pipe( + catchError((error) => { + return throwError(error || "Server error"); + }) + ) + } + + delete(url: string): Observable { + let me = this; + return this.http + .delete(this.appConfig.baseApiPath + url, { headers: this.getHeaders() }) + .pipe( + catchError((error) => { + return throwError(error || "Server error"); + }) + ) + } + + downloadFile(url: string, data: any[]): Observable { + return this.http.post(url, data, { responseType: 'blob' }).pipe( + catchError((error) => { + return throwError(error || 'Server error'); + }) + ); + } + + // For File Download + getFile(url: string, options: any): Observable { + return this.http.post(this.appConfig.baseApiPath + url, { ...options, responseType: 'blob' }).pipe( + catchError((error) => { + return throwError(error || 'Server error'); + }) + ); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/audittrail.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/audittrail.service.ts new file mode 100644 index 0000000..c08d8ad --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/audittrail.service.ts @@ -0,0 +1,30 @@ +import { Injectable } from '@angular/core'; +import baseUrl from './helper'; +import { HttpClient } from '@angular/common/http'; +import { ApiRequestService } from './api-request.service'; +@Injectable({ + providedIn: 'root' +}) +export class AudittrailService { +apiurl="master/AuditItemReport"; +apiurl1="master/AuditItemReportCustom" + constructor(private _http: HttpClient, + private apiRequest: ApiRequestService,) { } + public getAll() { + return this._http.get(`${baseUrl}/master/AuditItemReport`); + + } + public gettable(tname:any){ + const formData:FormData = new FormData(); + formData.set("table",tname); + return this.apiRequest.postFormData(this.apiurl,formData); + } + public getdate(d1:any,d2:any,tname:any){ + const formData:FormData = new FormData(); + formData.set("id",null); + formData.set("d1",d1); + formData.set("d2",d2); + formData.set("table",tname); + return this.apiRequest.postFormData(this.apiurl1,formData); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/billingdemo.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/billingdemo.service.ts new file mode 100644 index 0000000..9a69cf8 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/billingdemo.service.ts @@ -0,0 +1,17 @@ +import { Injectable } from '@angular/core'; +import baseUrl from './helper'; +import { HttpClient } from '@angular/common/http'; +@Injectable({ + providedIn: 'root' +}) +export class BillingdemoService { + + constructor(private _http: HttpClient) { } + + public getAll() { + return this._http.get(`${baseUrl}/ncso_b/get-all`); + } + public getbyid(Id: any){ + return this._http.get(`${baseUrl}/ncso_b/get-one/${Id}`); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/department.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/department.service.ts new file mode 100644 index 0000000..9b891ac --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/department.service.ts @@ -0,0 +1,48 @@ +import { Injectable } from '@angular/core'; +import { Department } from '../../models/fnd/department'; +import { JwtHelperService } from '@auth0/angular-jwt'; +import { HttpClient, HttpParams,HttpResponse } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { ApiRequestService } from './api-request.service'; +import { UserInfoService } from '../user-info.service'; +@Injectable({ + providedIn: 'root' +}) +export class DepartmentService { + jwtHelper: JwtHelperService = new JwtHelperService(); + + private baseURL = "api/getdepartment"; + constructor(private http: HttpClient, + private apiRequest: ApiRequestService, + private userInfoService: UserInfoService) { } + + getAll(page?: number, size?: number): Observable { + //Create Request URL params + let params: HttpParams = new HttpParams(); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + //const _http = this.baseURL + '/all'; + //console.log(this.userInfoService.getUserInfo().userId); + let id = this.userInfoService.getUserInfo().userId; + return this.apiRequest.get(this.baseURL, params); + } + + update(id: number, department: Department): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.put(_http, department); + } + getById(id: number): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.get(_http); + } + delete(id: number): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.delete(_http); + } + + create(depart:Department): Observable { + return this.apiRequest.post(this.baseURL, depart); + } + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/diputesemo.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/diputesemo.service.ts new file mode 100644 index 0000000..972128d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/diputesemo.service.ts @@ -0,0 +1,17 @@ +import { Injectable } from '@angular/core'; +import baseUrl from './helper'; +import { HttpClient } from '@angular/common/http'; +@Injectable({ + providedIn: 'root' +}) +export class DiputesemoService { + + constructor(private _http: HttpClient) { } + + public getAll() { + return this._http.get(`${baseUrl}/ncso_q/get-all`); + } + public getbyid(Id: any){ + return this._http.get(`${baseUrl}/ncso_q/get-one/${Id}`); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/forgotpass.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/forgotpass.service.ts new file mode 100644 index 0000000..8176718 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/forgotpass.service.ts @@ -0,0 +1,44 @@ +import { HttpClient, HttpParams } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import baseUrl from '../api/helper'; +@Injectable({ + providedIn: 'root' +}) +export class ForgotpassService { + private url = "api/forgot"; + public localStorage: Storage = localStorage; + constructor(private http: HttpClient,) { } + + checkMailExists(email: string) { + return this.http.post(this.url+ "check-email", {"email": email}); + } + storeEmail(userInfoString: string) { + this.localStorage.setItem("registeredEmail", userInfoString); + } + //Store userinfo from session storage + + //Get email from session storage ( WILL REMOVE AFTER REGISTER) + getStoredEmail(): string | null { + try { + let userInfoString: string = this.localStorage.getItem( + "registeredEmail" + ); + if (userInfoString) { + return userInfoString; + } else { + return null; + } + } catch (e) { + return null; + } + } + sendemail(email:string){ + const params = new HttpParams() + .set('email',email) + console.log(email); + return this.http.post(`${baseUrl}/api/resources/forgotpassword`,params) + } + resetpass(data:any,id:any){ + return this.http.post(`${baseUrl}/api/resources/savePassword/${id}`,data); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/helper.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/helper.ts new file mode 100644 index 0000000..7f1e8f1 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/helper.ts @@ -0,0 +1,5 @@ +import{environment} from 'src/environments/environment'; + +let baseUrl = environment.backendUrl; +//let baseUrl= `http://cns-portal-backend:30166`; +export default baseUrl; diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/itemdemo.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/itemdemo.service.ts new file mode 100644 index 0000000..7cf0b14 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/itemdemo.service.ts @@ -0,0 +1,16 @@ +import { Injectable } from '@angular/core'; +import baseUrl from './helper'; +import { HttpClient } from '@angular/common/http'; +@Injectable({ + providedIn: 'root' +}) +export class ItemdemoService { + + constructor(private _http: HttpClient) { } + public getAll() { + return this._http.get(`${baseUrl}/ncso_i/get-all`); + } + public getbyid(Id: any){ + return this._http.get(`${baseUrl}/ncso_i/get-one/${Id}`); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/login.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/login.service.ts new file mode 100644 index 0000000..4b7bc44 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/login.service.ts @@ -0,0 +1,113 @@ +import { Injectable } from '@angular/core'; +import { Router } from '@angular/router'; + +import { Observable, BehaviorSubject } from 'rxjs'; +import { UserInfoService, LoginInfoInStorage} from '../user-info.service'; +import { ApiRequestService } from './api-request.service'; +import { HttpClient } from '@angular/common/http'; +import { ToastrService } from 'ngx-toastr'; + +export interface LoginRequestParam{ + //username:string; + email:string; + password:string; +} + +@Injectable() +export class LoginService { + private storage: Storage = sessionStorage; + public landingPage:string = "/cns-portal/dashboard"; + constructor( + private router:Router, + private userInfoService: UserInfoService, + private apiRequest: ApiRequestService, + private httpRequest: HttpClient, + private toastr: ToastrService, + ) {} + + + + getToken(email:string, password:string): Observable { + let bodyData: LoginRequestParam = { + //"username": username, + "email": email, + "password": password, + } + /* + Using BehaviorSubject instead of Subject + In Angular services are initialized before the components, if any component is + subscribing, it will only receive events which are executed after subscription. + therefore if you put a syncronize next() in the service, the component wont get it. + + A BehaviourSubject will always provide the values wheather the subscription happened after or before event + + */ + + let loginDataSubject:BehaviorSubject = new BehaviorSubject([]); // Will use this BehaviorSubject to emit data that we want after ajax login attempt + let loginInfoReturn:LoginInfoInStorage; // Object that we want to send back to Login Page + + this.apiRequest.loginAuthentication('token/session', bodyData) + .subscribe(jsonResp => { + console.log('login response: ', jsonResp); + if (jsonResp.operationMessage=='Login Failed') { + this.toastr.warning('Not Login Getting Error check your Username and password'); + } + if (jsonResp !== undefined && jsonResp !== null && jsonResp.operationStatus === "SUCCESS"){ + //Create a success object that we want to send back to login page + ////"displayName": jsonResp.item.fullname, + //"username" : jsonResp.item.username, + loginInfoReturn = { + "success" : true, + "message" : jsonResp.operationMessage, + "landingPage": this.landingPage, + "user" : { + "userId" : jsonResp.item.userId, + "email" : jsonResp.item.email, + "displayName": jsonResp.item.firstName, + "username" : jsonResp.item.username, + "roles" : jsonResp.item.roles, + "token" : jsonResp.item.token, + + }, + }; + console.log(loginInfoReturn.user); + if(jsonResp !== undefined && jsonResp !== null && jsonResp.operationStatus === "SUCCESS"){ + this.toastr.success(`Welcome To home Page!! your Role is ${jsonResp.item.roles}`); + } + // store username and jwt token in session storage to keep user logged in between page refreshes + this.userInfoService.storeUserInfo(JSON.stringify(loginInfoReturn.user)); + } + else { + //Create a faliure object that we want to send back to login page + loginInfoReturn = { + "success":false, + "message":jsonResp.msgDesc, + "landingPage":"/login" + }; + } + loginDataSubject.next(loginInfoReturn); + }, + err => { + console.log('login error ', err); + loginInfoReturn = { + "success": false, + "message": err.url + " >>> " + err.statusText + "[" + err.status +"]", + "landingPage": "/login" + }; + if (err) { + this.toastr.error('Getting Server Error'); + } + }); + + return loginDataSubject; + } + + logout(navigatetoLogout=true): void { + // clear token remove user from local storage to log user out + this.userInfoService.removeUserInfo(); + if(navigatetoLogout){ + this.router.navigate(["logout"]); + } + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/query-runner.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/query-runner.service.ts new file mode 100644 index 0000000..bcfe7dd --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/query-runner.service.ts @@ -0,0 +1,20 @@ +import { Injectable } from '@angular/core'; +import { HttpParams } from '@angular/common/http'; +import { ApiRequestService } from './api-request.service'; +import { Observable } from 'rxjs'; +@Injectable({ + providedIn: 'root' +}) +export class QueryRunnerService { + private baseURL = "api/report-data"; + constructor(private apiRequest: ApiRequestService) { } + getById(report_id:number, page?: number, size?: number): Observable { + //Create Request URL params + let params: HttpParams = new HttpParams(); + params = params.append("report_id", report_id.toString()); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + //const _http = this.baseURL + '/all'; + return this.apiRequest.get(this.baseURL, params); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/realnet-menu.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/realnet-menu.service.ts new file mode 100644 index 0000000..4ece66b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/realnet-menu.service.ts @@ -0,0 +1,43 @@ +import { HttpParams } from "@angular/common/http"; +import { Injectable } from "@angular/core"; +import { Rn_Main_Menu } from "../../models/builder/Rn_Main_Menu"; +import { Observable } from "rxjs"; +import { UserInfoService } from "../user-info.service"; +import { ApiRequestService } from "./api-request.service"; + +@Injectable() +export class RealnetMenuService { + private baseURL = "api/realnet-menu"; + constructor( + private apiRequest: ApiRequestService, + private userInfoService: UserInfoService + ) {} + + getAll(page?: number, size?: number): Observable { + //Create Request URL params + let params: HttpParams = new HttpParams(); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + //const _http = this.baseURL + '/all'; + return this.apiRequest.get(this.baseURL, params); + } + + getById(id: number): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.get(_http); + } + + getByAccountId(): Observable { + const _http = this.baseURL + "/user-menu"; + return this.apiRequest.get(_http); + } + + create(rn_Main_Menu: Rn_Main_Menu): Observable { + return this.apiRequest.post(this.baseURL, rn_Main_Menu); + } + + update(id: number, rn_Main_Menu: Rn_Main_Menu): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.put(_http, rn_Main_Menu); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/report-builder.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/report-builder.service.ts new file mode 100644 index 0000000..22a0a1f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/report-builder.service.ts @@ -0,0 +1,287 @@ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpParams } from '@angular/common/http'; +import { ApiRequestService } from './api-request.service'; +import { Observable } from 'rxjs'; +import { ReportBuilder } from '../../models/builder/ReportBuilder'; +import { ReportBuilderQuery } from '../../models/builder/ReportBuilderQuery'; +import { TableList } from '../../models/fnd/TableList'; +import { RptBuilder } from 'src/app/models/builder/rptBuilder'; +import baseUrl from '../api/helper'; +import { saveAs } from 'file-saver'; + +@Injectable({ + providedIn: 'root' +}) +export class ReportBuilderService { + private reportBaseURL ='api/report-builder-by-id'; + private reportBaseURLSubmit ='api/report-builder'; + private masterQueryUrl ='api/add-master-query'; + private storage: Storage = sessionStorage; + private moduleIdKey: string = "moduleId"; + private baseURLMasterQuery="api/master-query"; + private baseURL="api/edit-report"; + private reportbuild2url="api/add-report"; + private servicereportsave="api/report-builder_service"; + private updatereportservice="api/updatereport"; + + private databaselisturl='Table_list' + private colurl='fndMenu/loadcolumn'; + private saveurl='FndQuery/query'; + constructor(private apiRequest: ApiRequestService, private _http:HttpClient) { } + getById(id: number): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.get(_http); + } + + buildReport(id: number) { + let params: HttpParams = new HttpParams(); + params = params.append("id", id.toString()); + return this.apiRequest.get("api/build_report", params); + } + + getModuleId(): number { + let modId = +this.storage.getItem(this.moduleIdKey); + return modId; + } + + getAll(moduleId: number, page?: number, size?: number): Observable { + // create Request URL params + let me = this; + let params: HttpParams = new HttpParams(); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + params = params.append("moduleId", moduleId.toString()); + // get all + return this.apiRequest.get(this.reportBaseURL, params); + } + + //save report + create(fbHeader: ReportBuilder, moduleId: number): Observable { + //`${this.baseURL}` + let params: HttpParams = new HttpParams(); + params = params.append("moduleId", moduleId.toString()); + // params = params.append("formType", formType); + return this.apiRequest.post(this.reportBaseURLSubmit, fbHeader, params); + } + + //save report service + createservicereport(fbHeader: ReportBuilder, moduleId: number): Observable { + //`${this.baseURL}` + let params: HttpParams = new HttpParams(); + params = params.append("moduleId", moduleId.toString()); + // params = params.append("formType", formType); + return this.apiRequest.post(this.servicereportsave, fbHeader, params); + } + + //save report + createQuery(reportId: number): Observable { + //`${this.baseURL}` + let params: HttpParams = new HttpParams(); + params = params.append("reportId", reportId.toString()); + // params = params.append("formType", formType); + return this.apiRequest.post(this.masterQueryUrl,params); + } + + // update(reportId: number, functionRegister: ReportBuilder): Observable { + // let params: HttpParams = new HttpParams(); + // params = params.append("reportId", reportId.toString()); + // return this.apiRequest.put(this.masterQueryUrl/reportId, functionRegister); + // } + + update(id: number, functionRegister: ReportBuilder): Observable { + const _http = this.masterQueryUrl + "/" + id; + return this.apiRequest.put(_http, functionRegister); + } + + updateservicereport(id: number, functionRegister: ReportBuilder): Observable { + const _http = this.updatereportservice + "/" + id; + return this.apiRequest.put(_http, functionRegister); + } + + getMasterQuery(id: number): Observable { + const _http = this.baseURLMasterQuery + "/" + id; + return this.apiRequest.get(_http); + } + + getMasterData(query:string): Observable { + //Create Request URL params + let me = this; + let params: HttpParams = new HttpParams(); + params = params.append('sql_query', query); + return this.apiRequest.get('api/master-query-data',params); +} + + + report2(servicename):Observable +{ + console.log("in service",servicename); + + // let params: HttpParams = new HttpParams(); + // params = params.append('service_name', servicename); + + // console.log(this.reportbuild2url,params); + + return this.apiRequest.post(this.reportbuild2url,servicename); +} + + +//savequery +saveq(data:any):Observable{ + return this.apiRequest.post(this.saveurl,data); +} +//getall +getall(){ + return this.apiRequest.get(this.saveurl); +} + +/////// +getreportdata(apiname):Observable +{ + var url="api"+"/"+apiname; + console.log(url) + + return this.apiRequest.get(url); + +} +getdatabse(): Observable{ + return this.apiRequest.get(`SqlworkbenchSqlcont/sql`); + //return this.apiRequest.get(this.databaselisturl); +} +getTableListn(val:any): Observable { + return this.apiRequest.get(`Table_list/${val}`); +} +getcolListn(val:any,val1:any): Observable { + return this.apiRequest.get(`Table_list/${val}/${val1}`); +} + +//column list for multiple tables +getColumnList(tableSchema: any, tables: any): Observable { + // return this._http.get( `http://localhost:9191/AllTable_list/${tableSchema}`,tables); + const params = new HttpParams().set('str', tables.join(',')); + return this._http.get(`${baseUrl}/AllTable_list/${tableSchema}`, { params: params }); +} + +//working column list for multiple tables with alias +getAllColumnsFromAllTables(tableNames: any): Observable { + const url = `${baseUrl}/Alias_Table_list/${tableNames}`; + return this._http.get(url); +} + +getcollist(table:any){ + const _http = this.colurl+ "/" + table; + return this.apiRequest.get(_http); + //return this.apiRequest.get(`this.colurl/${table}`); +} +createdb(data:any){ + return this.apiRequest.post(`SqlworkbenchSqlcont/sql`,data); +} + +updateSqlModel(id: number, sqlModel: any): Observable { + return this.apiRequest.put(`SqlworkbenchSqlcont/sql/${id}`, sqlModel); +} + +getSqlModelById(id: number): Observable { + return this.apiRequest.get(`SqlworkbenchSqlcont/sql/${id}`); +} + +deleteSqlModel(id: number): Observable { + return this.apiRequest.delete(`SqlworkbenchSqlcont/sql/${id}`); +} + +getallentity(){ + return this.apiRequest.get(this.reportBaseURLSubmit); +} + + +////////// rpt builders ////////////// + +saveData(data: RptBuilder): Observable { + return this.apiRequest.post(`Rpt_builder/Rpt_builder`, data); +} + +getDetails(): Observable { + return this.apiRequest.get(`Rpt_builder/Rpt_builder`); +} + +getDetailsById(id: number): Observable { + return this.apiRequest.get(`Rpt_builder/Rpt_builder/${id}`); +} + +deleteById(id: number): Observable { + return this.apiRequest.delete(`Rpt_builder/Rpt_builder/${id}`); +} + +updateData(data: any, id: number): Observable { + return this.apiRequest.put(`Rpt_builder/Rpt_builder/${id}`, data); +} + + +////////// rpt builders 2////////////// + +saverbData(data: any): Observable { + return this.apiRequest.post(`Rpt_builder2/Rpt_builder2`, data); +} + +getrbDetails(): Observable { + return this.apiRequest.get(`Rpt_builder2/Rpt_builder2`); +} + +getrbDetailsById(id: number): Observable { + return this.apiRequest.get(`Rpt_builder2/Rpt_builder2/${id}`); +} + +deletrbById(id: number): Observable { + return this.apiRequest.delete(`Rpt_builder2/Rpt_builder2/${id}`); +} + +updaterbData(data: any, id: number): Observable { + return this.apiRequest.put(`Rpt_builder2/Rpt_builder2/${id}`, data); +} + +updaterbLineData(data: any, id: number): Observable { + return this.apiRequest.put(`Rpt_builder2_lines/update/${id}`, data); +} + +getrbLineDetailsById(id: number): Observable { + return this.apiRequest.get(`Rpt_builder2_lines/Rpt_builder2_lines/${id}`); +} + +/// rpt builders 2 html +getStdParamById(id: number): Observable { + return this.apiRequest.get(`Rpt_builder2/html/build_report2/${id}`); +} +//get key from URL +getcolumnDetailsByurl(url: string): Observable { + const apiUrl = `Rpt_builder2_lines/geturlkeybyurl?url=${url}`; + return this.apiRequest.get(apiUrl); +} + +getAllDetailsByurl(url: string): Observable { + const apiUrl = `Rpt_builder2_lines/fetch_data_url?url=${url}`; + return this.apiRequest.get(apiUrl); +} + + + + + +///////////////////////////////////////////// DOWNLOADS +// downloadFile(format:any,data: any): Observable { +// return this.apiRequest.post(`rbbuilder/fileconverter/downloadFile/${format}`, data); +// } + +downloadFile(format: string, dataList: any[],name?:String): void { + const url = `${baseUrl}/rbbuilder/fileconverter/downloadFile/${format}`; + this.apiRequest.downloadFile(url, dataList).subscribe( + (response: Blob) => { + saveAs(response, `${name}.${format}`); + }, + (error) => { + console.error('Error downloading file:', error); + } + ); +} + + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/sequence.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/sequence.service.ts new file mode 100644 index 0000000..687521e --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/sequence.service.ts @@ -0,0 +1,30 @@ +import { Injectable } from '@angular/core'; +import { ApiRequestService } from './api-request.service'; + +@Injectable({ + providedIn: 'root' +}) +export class SequenceService { + + constructor(private apiRequest: ApiRequestService,) { } + public getAll() { + return this.apiRequest.get(`sureserve/sequence/seq`); + } + public getbyid(Id: any){ + return this.apiRequest.get(`sureserve/sequence/seq/${Id}`); + } + + public create(data: any){ + return this.apiRequest.post(`sureserve/sequence/create`, data); + } +// update +public update(id:any,data: any){ + return this.apiRequest.put(`sureserve/sequence/seq/${id}`, data); +} + + +public delete(id:any){ +return this.apiRequest.delete(`sureserve/sequence/seq/${id}`); +} + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/table-setup.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/table-setup.service.ts new file mode 100644 index 0000000..7e6af52 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/table-setup.service.ts @@ -0,0 +1,29 @@ +import { Injectable } from '@angular/core'; +import { RbTables } from '../../models/builder/RbTables'; +import { Observable } from 'rxjs'; +import { ApiRequestService } from './api-request.service'; +import { HttpParams } from '@angular/common/http'; +import { TableList } from '../../models/fnd/TableList'; + +@Injectable({ + providedIn: 'root' +}) +export class TableSetupService { + private baseURL = 'api/add-tables'; + private baseURL2 = 'api/add-alltables'; + private tableListUrl ='api/table-list'; + private tablelisturl='api/Table_list' + constructor(private apiRequest: ApiRequestService) { } + create(rb_tables: RbTables,reportId: number) :Observable { + let params: HttpParams = new HttpParams(); + params = params.append("reportId", reportId.toString()); + return this.apiRequest.post(this.baseURL2, rb_tables,params); +} + +getTableList(): Observable { + return this.apiRequest.get(this.tableListUrl); +} +getTableListn(): Observable { + return this.apiRequest.get(this.tablelisturl); +} +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/translate.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/translate.service.ts new file mode 100644 index 0000000..0dbbf91 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/api/translate.service.ts @@ -0,0 +1,19 @@ +import { Injectable, Inject } from '@angular/core'; +import { AppConfig } from '../../app-config'; + +@Injectable() +export class TranslateService { + constructor(private appConfig:AppConfig) { + // Code to get Locale Info from Session Storage + } + + getDateString(datenum:number):string{ + return new Date(datenum).toLocaleDateString(this.appConfig.locale); + } + + getCurrencyString(number:number):string { + return number.toLocaleString(this.appConfig.locale, this.appConfig.currencyFormat); + } + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/auth_guard.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/auth_guard.service.ts new file mode 100644 index 0000000..0711613 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/auth_guard.service.ts @@ -0,0 +1,40 @@ +import { Injectable } from '@angular/core'; +import { UserInfoService } from './user-info.service'; +import { LoginService } from './api/login.service'; +import { Router, CanActivate, CanActivateChild,ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router'; + +@Injectable() +export class AuthGuard implements CanActivate, CanActivateChild { + + constructor( + private router: Router, + private loginService: LoginService, + private userInfoService: UserInfoService + ) { } + + canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean { + //console.log('canActivate : ', state); + + let url: string = state.url; + + return this.checkLogin(url); + //return true; + } + + canActivateChild(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean { + return this.canActivate(route, state); + } + + checkLogin(url: string): boolean { + if (this.userInfoService.isLoggedIn()) { + return true; + } + console.log("User is not logged - This routing guard prvents redirection to any routes that needs logging."); + //Store the original url in login service and then redirect to login page + this.loginService.landingPage = url; + this.router.navigate(['login',]); + return false; + } + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/additionalcontainer.service.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/additionalcontainer.service.spec.ts new file mode 100644 index 0000000..439f06b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/additionalcontainer.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { AdditionalcontainerService } from './additionalcontainer.service'; + +describe('AdditionalcontainerService', () => { + let service: AdditionalcontainerService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(AdditionalcontainerService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/additionalcontainer.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/additionalcontainer.service.ts new file mode 100644 index 0000000..439addb --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/additionalcontainer.service.ts @@ -0,0 +1,75 @@ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpParams } from '@angular/common/http'; +import { environment } from 'src/environments/environment'; +import { ApiRequestService } from '../api/api-request.service'; +import { Observable } from 'rxjs'; + +@Injectable({ + providedIn: 'root' +}) +export class AdditionalcontainerService { + baseurl = environment.sureops; + private baseURL = "Gaurav_testing/Gaurav_testing" ; + constructor(private apiRequest: ApiRequestService, + private _http: HttpClient,) { } + + + saveData(data: any): Observable { + const url = `${this.baseurl}/sureops/Additional_container/Additional_container`; + return this._http.post(url, data); + } + + getDetails(): Observable { + const url = `${this.baseurl}/sureops/Additional_container/Additional_container`; + return this._http.get(url); + } + + getDetailsById(id: number): Observable { + const url = `${this.baseurl}/sureops/Additional_container/Additional_container/${id}`; + return this._http.get(url); + } + + deleteById(id: number): Observable { + const url = `${this.baseurl}/sureops/Additional_container/Additional_container/${id}`; + return this._http.delete(url); + } + + update(data: any, id: number): Observable { + const url = `${this.baseurl}/sureops/Additional_container/Additional_container/${id}`; + return this._http.put(url, data); + } + + ///copy ADDITIONAL CONTAINER TO CREATE DEPLOYMENT + public copyToCreateDeployment(projId: number, profileId: number, service: string): Observable { + const url = `${this.baseurl}/sureops/Additional_container/copt_to_deployment/${projId}/${profileId}/${service}`; + return this._http.get(url); + } +// get all by project id and profile id + getAllContainers(projId: number, profileId: number): Observable { + const url = `${this.baseurl}/sureops/Additional_container/copt_to_deployment/${projId}/${profileId}`; + return this._http.get(url); + } + + + +///////////////////////////////////// + +getAll(page?: number, size?: number): Observable { + return this.apiRequest.get(this.baseURL); +} +getById(id: number): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.get(_http); +} +create(data: any): Observable { + return this.apiRequest.post(this.baseURL, data); +} +updategaurav(id: number, data: any): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.put(_http, data); +} +delete(id: number): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.delete(_http); +} +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/dashboard.service.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/dashboard.service.spec.ts new file mode 100644 index 0000000..79e72a6 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/dashboard.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { DashboardService } from './dashboard.service'; + +describe('DashboardService', () => { + let service: DashboardService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(DashboardService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/dashboard.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/dashboard.service.ts new file mode 100644 index 0000000..71fef84 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/dashboard.service.ts @@ -0,0 +1,116 @@ +import { HttpClient, HttpParams } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { BehaviorSubject, Observable } from 'rxjs'; +import { ApiRequestService } from '../api/api-request.service'; + +@Injectable({ + providedIn: 'root' +}) +export class DashboardService { + + private getAllURL = 'get_module_id'; + private addDataURl = 'Savedata'; + private deleteFieldURL = 'delete_by_header_id'; + private getbyidURL = 'get_dashboard_headerbyid'; + private editURL = 'update_Dashbord1_Line'; + private updateURL = 'update_Dashbord1_Lineby_id'; + constructor(private _http: HttpClient, + private apiRequest: ApiRequestService,) + { + + } + + getAllDash(): Observable { + // create Request URL params + return this.apiRequest.get(`get_Dashboard_header`); + } + + getAllByModuleId(module_id: number,page?: number, size?: number): Observable { + // create Request URL params + let me = this; + let params: HttpParams = new HttpParams(); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + params = params.append("module_id", module_id.toString()); + // get all + return this.apiRequest.get(this.getAllURL, params); + } + + create(data:any): Observable { + return this.apiRequest.post(this.addDataURl, data); + } + + deleteField(id:number){ + let _http = this.deleteFieldURL + "/" + id; + return this.apiRequest.delete(_http); + } + + getById(id:number) + { + let _http = this.getbyidURL + "/" + id; + return this.apiRequest.get(_http); + } + + addToDB(line:any):Observable + { + return this.apiRequest.put(this.editURL,line); + } + UpdateLineData(id:number, line:any) + { + // line = { + // headers: new HttpHeaders({ + // 'Content-Type': 'application/json' + // }) + // }; + let _http = this.updateURL + "/" + id; + return this.apiRequest.put(_http,line); + } +getcount(moduleId: number):Observable{ + return this.apiRequest.get(`get_dashboard/${moduleId}`); +} + +updateDash(dashboardHeader: any): Observable { + return this.apiRequest.put('update_dashboard_header', dashboardHeader); +} + + + + +///////schedule +public saveData(data: any): Observable { + return this.apiRequest.post(`DashboardSchedule/DashboardSchedule`, data); +} + +public getDetails(): Observable { + return this.apiRequest.get(`DashboardSchedule/DashboardSchedule`); +} + +public getDetailsById(id: number): Observable { + return this.apiRequest.get(`DashboardSchedule/DashboardSchedule/${id}`); +} + +public deleteById(id: number): Observable { + return this.apiRequest.delete(`DashboardSchedule/DashboardSchedule/${id}`); +} + +public updateData(data: any, id: number): Observable { + return this.apiRequest.put(`DashboardSchedule/DashboardSchedule/${id}`, data); +} + +private toggleSubject = new BehaviorSubject(false); + +// Observable to subscribe to toggle changes +toggle$ = this.toggleSubject.asObservable(); + +// Function to update the toggle value +updateToggle(value: boolean) { + this.toggleSubject.next(value); +} + +private originalData: any[] = []; // Your original data goes here +private filteredDataSubject = new BehaviorSubject([]); +filteredData$: Observable = this.filteredDataSubject.asObservable(); + + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/dashboard3.service.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/dashboard3.service.spec.ts new file mode 100644 index 0000000..12b63dd --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/dashboard3.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { Dashboard3Service } from './dashboard3.service'; + +describe('Dashboard3Service', () => { + let service: Dashboard3Service; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(Dashboard3Service); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/dashboard3.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/dashboard3.service.ts new file mode 100644 index 0000000..bcfedcf --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/dashboard3.service.ts @@ -0,0 +1,308 @@ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpHeaders, HttpParams } from "@angular/common/http"; +import { Observable } from 'rxjs'; +import { ApiRequestService } from "src/app/services/api/api-request.service"; +import baseUrl from '../api/helper'; +import { BehaviorSubject } from 'rxjs'; +@Injectable({ + providedIn: 'root' +}) +export class Dashboard3Service { + getAdditionalChartData() { + throw new Error('Method not implemented.'); + } + private getAllURL = 'get_module_id'; + private addDataURl = 'Savedata'; + private deleteFieldURL = 'delete_by_header_id'; + private getbyidURL = 'get_dashboard_headerbyid'; + private editURL = 'update_Dashbord1_Line'; + private updateURL = 'update_Dashbord1_Lineby_id'; + constructor(private _http: HttpClient, + private apiRequest: ApiRequestService) { } + getAll(module_id: number,page?: number, size?: number): Observable { + // create Request URL params + let me = this; + let params: HttpParams = new HttpParams(); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + params = params.append("module_id", module_id.toString()); + // get all + return this.apiRequest.get(this.getAllURL, params); + } + + create(data:any): Observable { + return this.apiRequest.post(this.addDataURl, data); + } + + deleteField(id:number){ + let _http = this.deleteFieldURL + "/" + id; + return this.apiRequest.delete(_http); + } + + getById(id:number) + { + let _http = this.getbyidURL + "/" + id; + return this.apiRequest.get(_http); + } + + addToDB(line:any):Observable + { + return this.apiRequest.put(this.editURL,line); + } + UpdateLineData(id:number, line:any) + { + // line = { + // headers: new HttpHeaders({ + // 'Content-Type': 'application/json' + // }) + // }; + let _http = this.updateURL + "/" + id; + return this.apiRequest.put(_http,line); + } +getcount(moduleId: number):Observable{ + return this.apiRequest.get(`get_dashboard/${moduleId}`); +} + +updateDash(dashboardHeader: any): Observable { + return this.apiRequest.put('update_dashboard_header', dashboardHeader); +} +///////////////////////////////////////////////////////////////////// +resetConditions() { + this.ids = []; // Reset the ids array to an empty array + this.numberIds = []; + this.passwordIds = []; + this.textareaIds = []; + this.dateIds = []; + this.datetimeIds = []; + this.emailIds = []; + this.selectIds = []; + this.radioIds = []; + this.checkboxIds = []; + this.fileuloadIds = []; + this.urlIds = []; + this.decimalIds = []; + this.percentageIds = []; + this.buttonIds = []; +} + +//////////// Text +ids: any[] = []; +setCondition(condition: any) { + this.ids.push(condition); +} + +getConditions(): any[] { + return this.ids; +} + + +////////// Number +numberIds: any[] = []; +setnumber(id: any) { + this.numberIds.push(id); +} + +getnumber(): any[] { + return this.numberIds; +} +////////////// password +passwordIds: any[] = []; +setpassword(id: any) { + this.passwordIds.push(id); +} + +getpassword(): any[] { + return this.passwordIds; +} + +////////////// Textarea +textareaIds: any[] = []; +setTextarea(id: any) { + this.textareaIds.push(id); +} + +getTextarea(): any[] { + return this.textareaIds; +} + +////////////// Date +dateIds: any[] = []; +setDate(id: any) { + this.dateIds.push(id); +} + +getDate(): any[] { + return this.dateIds; +} + +////////////// Datetime +datetimeIds: any[] = []; +setDatetime(id: any) { + this.datetimeIds.push(id); +} + +getDatetime(): any[] { + return this.datetimeIds; +} + +////////////// Email +emailIds: any[] = []; +setEmail(id: any) { + this.emailIds.push(id); +} + +getEmail(): any[] { + return this.emailIds; +} + +////////////// Select +selectIds: any[] = []; +setSelect(id: any) { + this.selectIds.push(id); +} + +getSelect(): any[] { + return this.selectIds; +} + +////////////// Radio +radioIds: any[] = []; +setRadio(id: any) { + this.radioIds.push(id); +} + +getRadio(): any[] { + return this.radioIds; +} + +////////////// Checkbox +checkboxIds: any[] = []; +setCheckbox(id: any) { + this.checkboxIds.push(id); +} + +getCheckbox(): any[] { + return this.checkboxIds; +} + +////////////// fileupload +fileuloadIds: any[] = []; +setFileUpload(id: any) { + this.fileuloadIds.push(id); +} + +getFileupload(): any[] { + return this.fileuloadIds; +} + +////////////// Url +urlIds: any[] = []; +setUrl(id: any) { + this.urlIds.push(id); +} + +getUrl(): any[] { + return this.urlIds; +} +////////////// Decimal +decimalIds: any[] = []; +setDecimal(id: any) { + this.decimalIds.push(id); +} + +getDecimal(): any[] { + return this.decimalIds; +} +////////////// Percentage +percentageIds: any[] = []; +setPercentage(id: any) { + this.percentageIds.push(id); +} + +getPercentage(): any[] { + return this.percentageIds; +} +////////////// Button +buttonIds: any[] = []; +setButton(id: any) { + this.buttonIds.push(id); +} + +getButton(): any[] { + return this.buttonIds; +} + + + + + + + + + +getAllDash(): Observable { + // create Request URL params + return this.apiRequest.get(`get_Dashboard_header`); + } + +getAllByModuleId(module_id: number,page?: number, size?: number): Observable { + // create Request URL params + let me = this; + let params: HttpParams = new HttpParams(); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + params = params.append("module_id", module_id.toString()); + // get all + return this.apiRequest.get(this.getAllURL, params); + } + +///////schedule +public saveData(data: any): Observable { + return this.apiRequest.post(`DashboardSchedule/DashboardSchedule`, data); +} + +public getDetails(): Observable { + return this.apiRequest.get(`DashboardSchedule/DashboardSchedule`); +} + +public getDetailsById(id: number): Observable { + return this.apiRequest.get(`DashboardSchedule/DashboardSchedule/${id}`); +} + +public deleteById(id: number): Observable { + return this.apiRequest.delete(`DashboardSchedule/DashboardSchedule/${id}`); +} + +public updateData(data: any, id: number): Observable { + return this.apiRequest.put(`DashboardSchedule/DashboardSchedule/${id}`, data); +} + +//////////////////////////////////////////////////////////////////////////// + + +public getDynamicDashDetails(): Observable { + return this.apiRequest.get(`Dashboard/Dashboard`); +} + +public getChartData(tableName: string, jobType: string, xAxis?:any,yAxes?:any ): Observable { + const url = `${baseUrl}/chart/getdashjson/${jobType}?tableName=${tableName}&xAxis=${xAxis}&yAxes=${yAxes}`; + return this._http.get(url); +} + +public getUrlChartData(tableName: string, jobType: string, xAxis:any,yAxes:any,store:any,chartUrl:any): Observable { + const url = `${baseUrl}/chart/getdashjson/${jobType}?tableName=${tableName}&url=${chartUrl}&xAxis=${xAxis}&yAxes=${yAxes}&datastore_name=${store}`; + return this._http.get(url); +} + +featchDynamicUrlDetails(url): Observable { + return this._http.get(`${url}`); +} + + +private filteredDataSubject = new BehaviorSubject([]); +filteredData$ = this.filteredDataSubject.asObservable(); + +updateFilteredData(filteredData: any[]) { + this.filteredDataSubject.next(filteredData); +} +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/icon.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/icon.service.ts new file mode 100644 index 0000000..f8dd1de --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/icon.service.ts @@ -0,0 +1,63 @@ +import { Injectable } from '@angular/core'; +import { Observable } from "rxjs"; +import { ApiRequestService } from "../api/api-request.service"; +@Injectable({ + providedIn: 'root' +}) +export class IconService { + private addURL = "api/addFavById"; + private removeURL= "api/removeFavById"; + private pinurl ="api/addPinById"; + private pinremove ="api/removePinById"; + private starurl ="api/addStarById"; + private starremove ="api/removeStarById"; + private watchurl ="api/addWatchlistById"; + private watchremove = "api/removeWatchlistById"; + private futureurl = "api/addFuturisticById"; + private futureremove = "api/removeFuturisticById"; + private archurl ="api/addArchiveById"; + constructor(private apiRequest: ApiRequestService,) { } + create(data:any): Observable { + return this.apiRequest.post(this.addURL, data); + } + + delete(id: number): Observable { + const _http = this.removeURL + "/" + id; + return this.apiRequest.delete(_http); + } + createpin(data:any): Observable { + return this.apiRequest.post(this.pinurl, data); + } + + deletepin(id: number): Observable { + const _http = this.pinremove + "/" + id; + return this.apiRequest.delete(_http); + } + createstar(data:any): Observable { + return this.apiRequest.post(this. starurl, data); + } + + deletestar(id: number): Observable { + const _http = this.starremove + "/" + id; + return this.apiRequest.delete(_http); + } + createwatch(data:any): Observable { + return this.apiRequest.post(this. watchurl, data); + } + + deletewatch(id: number): Observable { + const _http = this.watchremove + "/" + id; + return this.apiRequest.delete(_http); + } + createfuture(data:any): Observable { + return this.apiRequest.post(this.futureurl, data); + } + + deletefuture(id: number): Observable { + const _http = this.futureremove + "/" + id; + return this.apiRequest.delete(_http); + } + createarch(data:any): Observable { + return this.apiRequest.post(this.archurl, data); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/modulesetup.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/modulesetup.service.ts new file mode 100644 index 0000000..8ccf61c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/modulesetup.service.ts @@ -0,0 +1,172 @@ +import { Injectable } from '@angular/core'; +import { ModuleSetup } from "../../models/builder/Module_Setup"; +import { Observable } from "rxjs"; +import { ApiRequestService } from "../api/api-request.service"; +import { HttpParams } from "@angular/common/http"; +@Injectable({ + providedIn: 'root' +}) +export class ModulesetupService { + private baseURL = "api/module-setup"; + private copyModuleURL = 'api/module-copy'; + private allrepourl ='api/getAllMyRepos'; + constructor( private apiRequest: ApiRequestService) { } + getAll(page?: number, size?: number): Observable { // not in use + //Create Request URL params + let params: HttpParams = new HttpParams(); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + //const _http = this.baseURL + '/all'; + return this.apiRequest.get(this.baseURL, params); + } + + getProjectModules(projectId:number, page?: number, size?: number): Observable { + //Create Request URL params + let params: HttpParams = new HttpParams(); + params = params.append("projectId", projectId.toString()); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + //const _http = this.baseURL + '/all'; + return this.apiRequest.get(this.baseURL, params); + } + + getById(id: number): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.get(_http); + } + + getByAccountId(): Observable { + const _http = this.baseURL + "/user-menu"; + return this.apiRequest.get(_http); + } + + create(moduleSetup: ModuleSetup): Observable { + let params: HttpParams = new HttpParams(); + // params = params.append("p_id", projectId.toString()); + return this.apiRequest.post(this.baseURL, moduleSetup); + } + + update(id: number, moduleSetup: ModuleSetup): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.put(_http, moduleSetup); + } + delete(id: number): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.delete(_http); + } + + copy(moduleCopyForm: Object) :Observable { + return this.apiRequest.post(this.copyModuleURL, moduleCopyForm); + } + + getByallrepouserId(id: number): Observable { + const _http = this.allrepourl + "/" + id; + return this.apiRequest.get(_http); + } + + + + /////backend Configuration + + saveData(data: any): Observable { + return this.apiRequest.post(`BackendConfig/BackendConfig`, data); + } + + getDetails(): Observable { + return this.apiRequest.get(`BackendConfig/BackendConfig`); + } + + getDetailsById(id: number): Observable { + return this.apiRequest.get(`BackendConfig/BackendConfig/${id}`); + } + + deleteById(id: number): Observable { + return this.apiRequest.delete(`BackendConfig/BackendConfig/${id}`); + } + + updatebackend(data: any, id: number): Observable { + return this.apiRequest.put(`BackendConfig/BackendConfig/${id}`, data); + } + + getAllViaModule(module_id: number): Observable { + return this.apiRequest.get(`BackendConfig/moduleid/${module_id}`); + } + + getAllViaProject(project_id: number): Observable { + return this.apiRequest.get(`BackendConfig/by_project/${project_id}`); + } + + + /////Database Configuration + + saveDBData(data: any): Observable { + return this.apiRequest.post(`Dbconfig/Dbconfig`, data); + } + + getDBDetails(): Observable { + return this.apiRequest.get(`Dbconfig/Dbconfig`); + } + + getDBDetailsById(id: number): Observable { + return this.apiRequest.get(`Dbconfig/Dbconfig/${id}`); + } + + deleteDBById(id: number): Observable { + return this.apiRequest.delete(`Dbconfig/Dbconfig/${id}`); + } + + updateDB(data: any, id: number): Observable { + return this.apiRequest.put(`Dbconfig/Dbconfig/${id}`, data); + } + + getDBAllViaModule(moduleid: number): Observable { + return this.apiRequest.get(`Dbconfig/bymoduleid/${moduleid}`); + } + + getDBAllViaProject(project_id: number): Observable { + return this.apiRequest.get(`Dbconfig/by_proj_id/${project_id}`); + } + + + testConnection(databaseType: string, username: string, password: string, portnumber: string, dbhostname: string, database_name): Observable{ + const url = 'suredata/test/testconnection'; + let params: HttpParams = new HttpParams(); + params =params.append("database_type",databaseType); + params =params.append("username",username); + params =params.append("password",password); + params =params.append("portnumber",portnumber); + params =params.append("dbhostname",dbhostname); + params =params.append("database_name",database_name) + return this.apiRequest.get(url, params); + } + + + //////get all config + + getConfigById(moduleid: number): Observable { + return this.apiRequest.get(`fnd/project/getallconfig/${moduleid}`); + } + + //==============Module_library===============// + +// copyToLibrary(id: number): Observable { +// return this.apiRequest.get(`wflibrary/copylib/copy_library/${id}`); +// } + +copyFromLibrary(library_id: number, proj_id: number): Observable { + return this.apiRequest.get(`library/modulelibrary/copyfrommodulelibrarytomodule/${library_id}/${proj_id}`); +} + + +addToLibrary(id: number): Observable { + return this.apiRequest.get(`library/modulelibrary/copyfromrn_module/${id}`); +} + +getdetails(): Observable { + return this.apiRequest.get(`Wf_library/Wf_library`); +} + +getLibrarydetails(): Observable { + return this.apiRequest.get(`library/modulelibrary/getall_module_lib`); +} +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/project-setup.service.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/project-setup.service.spec.ts new file mode 100644 index 0000000..cfc90bb --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/project-setup.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { ProjectSetupService } from './project-setup.service'; + +describe('ProjectSetupService', () => { + let service: ProjectSetupService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(ProjectSetupService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/project-setup.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/project-setup.service.ts new file mode 100644 index 0000000..dc32c4b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/project-setup.service.ts @@ -0,0 +1,237 @@ + +import { Injectable } from '@angular/core'; +import { ProjectSetup } from "../../models/builder/Project_setup"; +import { forkJoin, Observable } from "rxjs"; +import { ApiRequestService } from "../api/api-request.service"; +import { HttpParams } from "@angular/common/http"; +import { HttpClient} from '@angular/common/http'; +import { map } from 'rxjs/operators'; +import baseUrl from 'src/app/services/api/helper'; +@Injectable({ + providedIn: 'root' +}) +export class ProjectSetupService { + private baseURL = "api/project-setup"; + //private copyProjectURL = 'api/project-list'; + private copyProjectURL = 'api/project-copy'; + private recenmodiurl = 'api/getAllRecentPrjs'; + private recentarchivedurl = 'api/getAllArchivedPrjs'; + private allfavurl='api/getAllFavPrjsdet'; + private getalluserid='api/GetAllByUserId'; + private addboardandprourl='api/addBoardClmnsOther'; + private getrepourl ='api/getmodulename'; + private copydeployurl='api/Git_copy'; + data: any; + obj:any; + private storage: Storage = sessionStorage; + constructor(private apiRequest: ApiRequestService, + private http: HttpClient) { this.getAll().subscribe(data => {}, error => console.log(error)); + localStorage.setItem('project',JSON.stringify(this.data)); + } + + getAll(page?: number, size?: number): Observable { + //Create Request URL params + let params: HttpParams = new HttpParams(); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + //const _http = this.baseURL + '/all'; + return this.apiRequest.get(this.baseURL, params); + } + getallmyproject(): Observable{ + return this.apiRequest.get(`fnd/project/myproject`); + } +getalljson(){ + + return this.http.get('../assets/data/data.json').pipe + (map(data => { + this.data = data; + console.log(data); + }, err => { + if (err) { + return err.json(); + } + })); + return this.apiRequest.get(this.baseURL); +} + getById(id: number): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.get(_http); + } + + + create(projectSetup: ProjectSetup): Observable { + return this.apiRequest.post(this.baseURL, projectSetup); + } + + update(id: number, projectSetup: ProjectSetup): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.put(_http, projectSetup); + } + + copy(projectCopyForm: Object) :Observable { + return this.apiRequest.post(this.copyProjectURL, projectCopyForm); + } + delete(id: number): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.delete(_http); + } + +//recently modify + getallrecentmodify(id: number): Observable { + const _http = this.recenmodiurl + "/" + id; + return this.apiRequest.get(_http); + } + getallrecentarchived(id:number): Observable{ + const _http = this.recentarchivedurl + "/" + id; + return this.apiRequest.get(_http); + } + getallfav(id:number): Observable{ + const _http = this.allfavurl + "/" + id; + return this.apiRequest.get(_http); + } + getallsharedwithme(): Observable{ + return this.apiRequest.get(`workspace/secworkspaceuser/sharedwithme`); + } + getallbyuserid(id:number): Observable{ + const _http = this.getalluserid + "/" + id; + return this.apiRequest.get(_http); + } + public sample(data1,data2): Observable{ + let call1=this.apiRequest.post(this.baseURL, data1) + let call2=this.apiRequest.post(this.addboardandprourl,data2) + return forkJoin([call1, call2]); +} + +getprojectname(){ + return this.http.get(`${baseUrl}/api/getprojectname`); +} +getreponame(projectId:any,page?: number, size?: number){ + let params: HttpParams = new HttpParams(); + params = params.append("projectId", projectId.toString()); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + return this.apiRequest.get(this.getrepourl, params); + //return this.http.get(`${baseUrl}/api/getmodulename`,params); +} +getmilstonename(){ + return this.http.get(`${baseUrl}/milestonename`); +} +getiterationname(){ + return this.http.get(`${baseUrl}/iterationname`); +} +getgoalname(){ + return this.http.get(`${baseUrl}/goalname`); +} +getpmusername(){ + return this.http.get(`${baseUrl}/pmusername`); +} +getallteam(){ + return this.http.get(`${baseUrl}/Sec_team`); +} +getallreport(){ + return this.http.get(`${baseUrl}/Report_to`); +} +getallassign(){ + return this.http.get(`${baseUrl}/Assign`); +} +getallrequestor(){ + return this.http.get(`${baseUrl}/Requestor`); +} +getallowner(){ + return this.http.get(`${baseUrl}/Owner`); +} +getalltype(){ + return this.http.get(`${baseUrl}/DD_type`); +} + +public build(Id: any){ + return this.apiRequest.get(`entityBuilder/BuildByProject/${Id}`); +} +private pdata: string = "pdata"; +public storeaddeditvalues(pdata:any,) { + this.storage.setItem(this.pdata,JSON.stringify (pdata)); + //console.log(this.data); +} +getdata(): any { + //console.log(this.data); + var pdata = JSON.parse(this.storage.getItem(this.pdata)); + //let data = this.storage.getItem(this.data); + return pdata; +} +copydeployment(projectId:any,deployment:any,msg: any,newprojectname:any,repo_cond:any){ + let params: HttpParams = new HttpParams(); + params =params.append("copy_from",projectId); + params =params.append("Deployment_profile",deployment); + params =params.append("commit_msg",msg); + params =params.append("newproject_name",newprojectname), + params=params.append("repo_cond",repo_cond) + return this.http.post(`${baseUrl}/api/Git_copy`,params); + //return this.apiRequest.post(this.copydeployurl,params); + //return this.http.get(`${baseUrl}/api/getmodulename`,params); + +} +private gitiareponame: string = "data"; +public storeaddedgitiareponame(data:any,) { + this.storage.setItem(this.gitiareponame,JSON.stringify (data)); + //console.log(this.data); +} +getgitiareponame(): any { + //console.log(this.data); + var data = JSON.parse(this.storage.getItem(this.gitiareponame)); + //let data = this.storage.getItem(this.data); + return data; +} +public removereponame() { + this.storage.removeItem(this.gitiareponame); +} +private repoIdKey: any; +public storereposhaid(sha:any) { + this.storage.setItem(this.repoIdKey,sha.toString()); +} +public removereposhaid() { + this.storage.removeItem(this.repoIdKey); +} +getreposhaid(): number { + this.removereposhaid(); + let repoId = +this.storage.getItem(this.repoIdKey); + return repoId; +} + + + //==============project_library===============// + +// copyToLibrary(id: number): Observable { +// return this.apiRequest.get(`wflibrary/copylib/copy_library/${id}`); +// } + +copyFromLibrary(id: number): Observable { + return this.apiRequest.get(`projectlibrary/copyfromprojectlibrary/${id}`); +} + +getallprojectLibrary(): Observable { + return this.apiRequest.get(`projectlibrary/getall_projectlibrary`); +} + + +addToLibrary(id: number): Observable { + return this.apiRequest.get(`projectlibrary/copyfromrn_project/${id}`); +} + +getdetails(): Observable { + return this.apiRequest.get(`Wf_library/Wf_library`); +} + + + +/////////////////////////filters================================ +getAllSearchResults(keyword: string): Observable { + const url = `fnd/project/search/${keyword}`; + return this.apiRequest.get(url); +} + + +//////technology show +getProjectTechbyId(proj_id: number): Observable { + return this.apiRequest.get(`fnd/project2/techstacks/${proj_id}`); +} +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/technology-stack.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/technology-stack.service.ts new file mode 100644 index 0000000..347c139 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/technology-stack.service.ts @@ -0,0 +1,80 @@ + +import { Injectable } from '@angular/core'; +import { ActiveTechnology } from '../../models/builder/ActiveTechnology'; +import { Bcf_TechnologyStack } from '../../models/builder/Bcf_TechnologyStack'; +import { Observable } from 'rxjs'; +import { ApiRequestService } from '../../services/api/api-request.service'; +import { HttpParams } from '@angular/common/http'; +@Injectable({ + providedIn: 'root' +}) +export class TechnologyStackService { + private technologyStackURL = 'api/technology-stack'; + private technologyStackURL1='api/technology_stack1'; + private technologyStackActivateURL ='api/tech-stack-active'; + private activatedTechnologyURL ='api/active-technology'; +private updateelementurl='api/update_tech_element' + constructor(private apiRequest: ApiRequestService) { } + getAll(page?: number, size?: number): Observable { + //Create Request URL params + let me = this; + let params: HttpParams = new HttpParams(); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + // get all + // return this.apiRequest.get('api/instructors'); + // paginated data + return this.apiRequest.get(this.technologyStackURL, params); + + } + + getById(id: number): Observable { + const _http = this.technologyStackURL + "/" + id; + return this.apiRequest.get(_http); + } + + create(Bcf_TechnologyStack: Bcf_TechnologyStack): Observable { + //`${this.baseURL}` + return this.apiRequest.post(this.technologyStackURL, Bcf_TechnologyStack); + } + + // UPLOAD ZIP FILE DATA + saveFormAndUploadFile(formData: FormData) :Observable { + return this.apiRequest.postFormData(this.technologyStackURL, formData); + } +// without zip data save +saveFormAndUploadFile1(formData: FormData) :Observable { + return this.apiRequest.postFormData(this.technologyStackURL1, formData); +} +updateLineById(id:number,data:any){ + let _http = this.updateelementurl + "/"+id; + return this.apiRequest.put(_http,data); +} + update(id: number, Bcf_TechnologyStack: Bcf_TechnologyStack): Observable { + const _http = this.technologyStackURL + "/" + id; + return this.apiRequest.put(_http, Bcf_TechnologyStack); + } + + setActive(id: any):Observable { + let params: HttpParams = new HttpParams(); + params = params.append("id", id.toString()); + return this.apiRequest.get(this.technologyStackActivateURL, params); + } + + getActiveTechnology(): Observable { + return this.apiRequest.get(this.activatedTechnologyURL); + } + + delete(id: number): Observable { + const _http = this.technologyStackURL + "/" + id; + return this.apiRequest.delete(_http); + } + + + ////get by service type + getByServiceType(servicetype: any): Observable { + const _http = "token/flf/tech_stack/get_byservicetype/" + servicetype; + return this.apiRequest.get(_http); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/wireframe-line.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/wireframe-line.service.ts new file mode 100644 index 0000000..f1bfe8b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/wireframe-line.service.ts @@ -0,0 +1,60 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import baseUrl from '../api/helper' +import { Observable } from 'rxjs'; +import { ApiRequestService } from '../api/api-request.service'; +@Injectable({ + providedIn: 'root' +}) +export class WireframeLineService { + + constructor(private _http: HttpClient, private apiRequest:ApiRequestService) { } + public addToDB(line: any){ + return this._http.post(`${baseUrl}/r/create`, line); + } + + public getOneFromDBById(id: any){ + return this._http.get(`${baseUrl}/r/get-one/${id}`); + } + + public getAllLines(){ + return this._http.get(`${baseUrl}/r/get-all`); + } + + public updateOneLine(line: any){ + return this._http.put(`${baseUrl}/r/update`, line); + } + getseedetails(): Observable { + return this._http.get(`${baseUrl}/token/frontendtable/getall`); + } +///list builder +getAllwireframeslistoflistbuilder(id:number):Observable{ + return this._http.get(`${baseUrl}/listbuilder/lb_line/getallwireframe_table/${id}`); +} + +////wireframe + getAllwireframeslist(id:number):Observable{ + return this._http.get(`${baseUrl}/formdrag/wireframe/getallwireframe_table/${id}`); + } + ///// + + getAllwireframes(id:number,wfid:any):Observable{ + return this._http.get(`${baseUrl}/formdrag/wireframe/getall_table/${id}/${wfid}`); + } + + getAllwireframesmodel(id:number,wfid:any,wfname:any):Observable{ + return this._http.get(`${baseUrl}/formdrag/wireframe/getmodel/${id}/${wfid}/${wfname}`); + } + + getColumnList(projId: any, tableName: any): Observable { + const url = `${baseUrl}/formdrag/wireframe/columnlistofwireframe/${projId}/${tableName}`; + return this._http.get(url); + } + +//==============wf_library===============// + +addToLibrary(id: number): Observable { + return this.apiRequest.get(`wflibrary/copylib/copy_library/${id}`); +} + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/wireframe.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/wireframe.service.ts new file mode 100644 index 0000000..ecb926d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/builder/wireframe.service.ts @@ -0,0 +1,273 @@ +import { HttpParams } from "@angular/common/http"; +import { Injectable } from "@angular/core"; +import { Rn_Fb_Header } from "src/app/models/builder/Rn_Fb_Header"; +import { Rn_Fb_Lines } from "src/app/models/builder/Rn_Fb_Lines"; +import { WireFrame } from "src/app/models/builder/WireFrame"; +import { Observable } from "rxjs"; +import { ApiRequestService } from "../api/api-request.service"; + +export interface WireFrameList { + id: number; + name: string; +} + +@Injectable() +export class WireframeService { + private wireframeBaseURL ='api/wireframe'; + private wireFrameDropDownURL = 'api/wireframe-list' + private wireFrameLinesURL = 'api/wireframe-lines' // used in edit view form + private uinamechangeurl='api/wireframe-uiname' + + private wireFrameLineURL = 'api/wireframe-line' // get fbLine by id + private copyWireFrameURL = 'api/wireframe-copy'; + private projectIdKey: string = "projectId"; // used in wireframe type component + private moduleIdKey: string = "moduleId"; + //private editWireframeCardURL = 'wfb/newupdate/headersnew'; //update wireframe card component list + + private storage: Storage = sessionStorage; + constructor( + private apiRequest: ApiRequestService + ) {} + + public storeProjectId(projectId: number) { + this.storage.setItem(this.projectIdKey, projectId.toString()); + } + public removeProjectId() { + this.storage.removeItem(this.projectIdKey); + } + getProjectId(): number { + let prjId = +this.storage.getItem(this.projectIdKey); + return prjId; + } + + public storeModuleId(moduleId: number) { + this.storage.setItem(this.moduleIdKey, moduleId.toString()); + } + public removeModuleId() { + this.storage.removeItem(this.moduleIdKey); + } + getModuleId(): number { + let modId = +this.storage.getItem(this.moduleIdKey); + return modId; + } + // ====== storage finish ======= + + // ========== RB_FB_HEADER APIS =========== // + + getAll(moduleId: number, page?: number, size?: number): Observable { + // create Request URL params + let me = this; + let params: HttpParams = new HttpParams(); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + params = params.append("moduleId", moduleId.toString()); + // get all + return this.apiRequest.get(this.wireframeBaseURL, params); + } + + getById(id: number): Observable { + const _http = this.wireframeBaseURL + "/" + id; + return this.apiRequest.get(_http); + } + + // this is used in edit view form + getLinesByHeaderId(id: number): Observable { + const _http = this.wireFrameLinesURL + "/" + id; + return this.apiRequest.get(_http); + } + + create(fbHeader: Rn_Fb_Header,): Observable { + //`${this.baseURL}` + //let params: HttpParams = new HttpParams(); + // params = params.append("moduleId", moduleId.toString()); + //params = params.append("formType", formType); + return this.apiRequest.post(this.wireframeBaseURL, fbHeader); + } + + update(id: number, fbHeader: Rn_Fb_Header): Observable { + const _http = this.wireframeBaseURL + "/" + id; + return this.apiRequest.put(_http, fbHeader); + } + + wireFrameDropDown() : Observable { + return this.apiRequest.get(this.wireFrameDropDownURL); + } + + copy(wireframeCopyForm: Object) :Observable { + return this.apiRequest.post(this.copyWireFrameURL, wireframeCopyForm); + } + + // ======== RN FB LINE APIS =============// + getLineById(id: number): Observable { + const _http = this.wireFrameLineURL + "/" + id; + return this.apiRequest.get(_http); + } + + updateLineById(id: number, fbLine: Rn_Fb_Lines): Observable { + const _http = this.wireFrameLineURL + "/" + id; + return this.apiRequest.put(_http, fbLine); + } + + + // create table for only-header, header-line, only-line, multiline form + private createTableUrl: string = 'api/createTable'; + private createHLTableUrl: string = 'api/createTableHL'; + private createMLTableUrl: string = 'api/createTableMultiline'; + createTable(headerId: number, formType: string, data: Object) { + let params: HttpParams = new HttpParams(); + params = params.append("header_id", headerId.toString()); + + if(formType === 'header_only' || formType === 'line_only') { + return this.apiRequest.post(this.createTableUrl, data, params); + } else if (formType === 'header_line') { + return this.apiRequest.post(this.createHLTableUrl, data, params); + } else if(formType === 'multiline') { + return this.apiRequest.post(this.createMLTableUrl, data, params); + } + } + + + private buildMVCFormURL: string = 'api/build_wireframe'; + private buildForm: string ='api/SpringMVC_Hibernate_Mysql_Form_onlyHeader_Builder'; + private buildMVC_ML_FormURL: string = 'ml_build_form'; + // build mvc form + buildMVCForm(formType: string, headerId: number) { + let params: HttpParams = new HttpParams(); + params = params.append("header_id", headerId.toString()); + if(formType === 'multiline') { + return this.apiRequest.get(this.buildMVC_ML_FormURL, params); + } else { + return this.apiRequest.get(this.buildMVCFormURL, params); + // return this.apiRequest.get(this.buildForm, params); + } + } + + private buildAngularFormURL: string = 'build_angular_form'; + // build angular form + buildAngularForm(headerId: number) { + let params: HttpParams = new HttpParams(); + params = params.append("header_id", headerId.toString()); + return this.apiRequest.get(this.buildAngularFormURL, params); + } + + private delete_MVC_OH_FormURL: string = 'delete_wireframe'; + private delete_MVC_OL_FormURL: string = 'delete_line_wireframe'; + private delete_MVC_HL_FormURL: string = 'delete_header_line_wireframe'; + private delete_MVC_ML_FormURL: string = 'delete_header_line_wireframe'; + deleteMVCForm(formType: string, headerId: number) { + let params: HttpParams = new HttpParams(); + params = params.append("header_id", headerId.toString()); + if(formType === 'header_only') { + return this.apiRequest.get(this.delete_MVC_OH_FormURL, params); + } else if(formType === 'line_only') { + return this.apiRequest.get(this.delete_MVC_OL_FormURL, params); + } else if (formType === 'header_line') { + return this.apiRequest.get(this.delete_MVC_HL_FormURL, params); + } else if(formType === 'multiline') { + return this.apiRequest.get(this.delete_MVC_ML_FormURL, params); + } + } + + private baseURl: string = 'api'; + dynamicBuilder(headerId: number, actionLink: string) { + let params: HttpParams = new HttpParams(); + params = params.append("header_id", headerId?.toString()); + return this.apiRequest.get("api/wireframe_builder_json_controller"+actionLink, params); // first return this.apiRequest.get("api/"+actionLink, params); + } + public build(Id: any){ + return this.apiRequest.get(`entityBuilder/json/${Id}`); + } + //============= MANUPULATE WIREFRAME PROPERTIES ===============// + + private addNewFieldInSectionURL = 'api/wireframe-add-field-in-section'; + private addNewFieldInLineSectionURL = 'api/wireframe-add-field-in-line-section'; + private updateFieldNameURL = 'api/wireframe-update-field-name'; + private deleteSectionURL = 'api/wireframe-delete-section'; + addFieldInSection(id: number, sectionNumber: number) :Observable { + let params: HttpParams = new HttpParams(); + params = params.append("id", id.toString()); + params = params.append("section", sectionNumber.toString()); + return this.apiRequest.get(this.addNewFieldInSectionURL, params); + } + + addFieldInLineSection(id: number, sectionNumber: number): Observable { + let params: HttpParams = new HttpParams(); + params = params.append("id", id.toString()); + params = params.append("section", sectionNumber.toString()); + return this.apiRequest.get(this.addNewFieldInLineSectionURL, params); + } + + + updateFieldName(id: number, body: Rn_Fb_Lines): Observable { + let _http = this.updateFieldNameURL + "/" + id; + return this.apiRequest.post(_http, body); + } + + private addSectionOrButtonURL = 'api/wireframe-add-section-button'; + addSectionOrButton(headerId, body: Object): Observable { + let _http = this.addSectionOrButtonURL + "/" + headerId; + return this.apiRequest.post(_http, body); + } + + + deleteSection(headerId: number, sectionNumber: number): Observable { + let _http = this.deleteSectionURL + "/" + headerId; + let params: HttpParams = new HttpParams(); + params = params.append("section_num", sectionNumber.toString()); + return this.apiRequest.get(_http, params); + } + + private deleteFieldURL = 'api/wireframe_delete_header'; + deleteField(id: number) { + let _http = this.deleteFieldURL + "/" + id; + return this.apiRequest.delete(_http); + } + + updateuiname(id, data): Observable { + let _http = this.uinamechangeurl + "/" + id; + return this.apiRequest.put(_http,data); + } +private WURL='fnd/project/count_wfline3' +wireframecount(){ + let _http = this.WURL; + return this.apiRequest.get(_http); +} +wireframecount1(id:any){ + let _http = `fnd1/count/get_wireframe/${id}`; + return this.apiRequest.get(_http); +} +reportcount(id:any){ + let _http=`fnd1/count/get_REPORT/${id}`; + return this.apiRequest.get(_http); +} +actioncount(id:any){ + let _http=`fnd1/count/get_action/${id}`; + return this.apiRequest.get(_http); +} + +editWireframeCard(id:any, headerData:Rn_Fb_Header):Observable{ + const _http = `wfb/newupdate/headersnew/${id}`; + return this.apiRequest.put(_http,headerData); +} + +getByIdWireframe(id:any){ + let _http = `api/wireframe/${id}`; + return this.apiRequest.get(_http); +} + +//==============wf_library===============// + +// copyToLibrary(id: number): Observable { +// return this.apiRequest.get(`wflibrary/copylib/copy_library/${id}`); +// } + +copyFromLibrary(id: number, moduleId: number): Observable { + return this.apiRequest.get(`wflibrary/copylib/copy_library/${id}/${moduleId}`); +} + +getdetails(): Observable { + return this.apiRequest.get(`Wf_library/Wf_library`); +} + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/csv.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/csv.service.ts new file mode 100644 index 0000000..11af915 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/csv.service.ts @@ -0,0 +1,136 @@ +import { Injectable } from '@angular/core'; +import { Observable } from "rxjs"; +import { ApiRequestService } from "../services/api/api-request.service"; +import { HttpParams } from "@angular/common/http"; +import { saveAs } from 'file-saver'; +import { HttpClient, HttpHeaders } from '@angular/common/http'; +import baseUrl from './api/helper'; +@Injectable({ + providedIn: 'root' +}) +export class CsvService { + private getallheadersURL = "api/csv/getallheaders"; + private SaveURL = "api/template/save"; + private downloadURL = "api/csv/download"; + private purl="api/template/demo/download"; + constructor(private apiRequest: ApiRequestService, + private http: HttpClient) { } + + + importCsv(file: File,data:any):Observable{ + const formData = new FormData(); + formData.append('file', file); + return this.apiRequest.postFormData(`${this.SaveURL}/${data}`,formData); + //return this.http.post('http://localhost:9191/api/csv/save', formData); + } + + getAllCsv(): Observable{ + let me = this; + let params: HttpParams = new HttpParams(); + //params = params.set('file', file); + return this.apiRequest.get(this.getallheadersURL, params); + } + + downloadCsv(): Observable{ + let me = this; + let params: HttpParams = new HttpParams(); + //params= params.set('file', file); + return this.apiRequest.get(this.downloadURL, params); + } + + // working + // downloadCsvsprio(data:any): void { + // this.http.get(`${baseUrl}/api/template/demo/download/${data}`, { responseType: 'blob' }).subscribe(data => { + // saveAs(data, 'Sr_priority2_t'); + // }); + // } + + // downloadCsvsprio(data:any): void { + // this.apiRequest.getFile(`api/template/demo/download/${data}`, { responseType: 'blob' }).subscribe(data => { + // saveAs(data, 'Sr_priority2_t'); + // }); + // } + + // downloadCsvsimpa(data:any): void { + // this.apiRequest.getFile(`${baseUrl}/api/template/demo/download/${data}`, { responseType: 'blob' }).subscribe(data => { + // saveAs(data, 'Sr_impact2_t'); + // }); + // } + // downloadCsvsurge(data:any): void { + // this.apiRequest.getFile(`${baseUrl}/api/template/demo/download/${data}`, { responseType: 'blob' }).subscribe(data => { + // saveAs(data, 'Sr_urgency_t'); + // }); + // } + // downloadCsvscat(data:any): void { + // this.apiRequest.getFile(`${baseUrl}/api/template/demo/download/${data}`, { responseType: 'blob' }).subscribe(data => { + // saveAs(data, 'Sr_category2_t'); + // }); + // } + // downloadCsvsstate(data:any): void { + // this.apiRequest.getFile(`${baseUrl}/api/template/demo/download/${data}`, { responseType: 'blob' }).subscribe(data => { + // saveAs(data, 'Sr_State_t'); + // }); + // } + // downloadCsvscontact(data:any): void { + // this.apiRequest.getFile(`${baseUrl}/api/template/demo/download/${data}`, { responseType: 'blob' }).subscribe(data => { + // saveAs(data, 'Sr_Contact_type_t'); + // }); + // } + // downloadCsvscust(data:any): void { + // this.apiRequest.getFile(`${baseUrl}/api/template/demo/download/${data}`, { responseType: 'blob' }).subscribe(data => { + // saveAs(data, 'Sr_customer_t'); + // }); + // } + // downloadCsvshan(data:any): void { + // this.apiRequest.getFile(`${baseUrl}/api/template/demo/download/${data}`, { responseType: 'blob' }).subscribe(data => { + // saveAs(data, 'Sr_handler_t'); + // }); + // } + + downloadCsvs(data:any): void { + this.apiRequest.getFile(`api/template/demo/download/${data}`, { responseType: 'blob' }).subscribe(data => { + saveAs(data, data+'_t'); + }); + } + + downloadCsvsprio(data:any): void { + this.apiRequest.getFile(`api/template/demo/download/${data}`, { responseType: 'blob' }).subscribe(data => { + saveAs(data, 'Sr_priority2_t'); + }); + } + downloadCsvsimpa(data:any): void { + this.apiRequest.getFile(`api/template/demo/download/${data}`, { responseType: 'blob' }).subscribe(data => { + saveAs(data, 'Sr_impact2_t'); + }); + } + downloadCsvsurge(data:any): void { + this.apiRequest.getFile(`api/template/demo/download/${data}`, { responseType: 'blob' }).subscribe(data => { + saveAs(data, 'Sr_urgency_t'); + }); + } + downloadCsvscat(data:any): void { + this.apiRequest.getFile(`api/template/demo/download/${data}`, { responseType: 'blob' }).subscribe(data => { + saveAs(data, 'Sr_category2_t'); + }); + } + downloadCsvsstate(data:any): void { + this.apiRequest.getFile(`api/template/demo/download/${data}`, { responseType: 'blob' }).subscribe(data => { + saveAs(data, 'Sr_State_t'); + }); + } + downloadCsvscontact(data:any): void { + this.apiRequest.getFile(`api/template/demo/download/${data}`, { responseType: 'blob' }).subscribe(data => { + saveAs(data, 'Sr_Contact_type_t'); + }); + } + downloadCsvscust(data:any): void { + this.apiRequest.getFile(`api/template/demo/download/${data}`, { responseType: 'blob' }).subscribe(data => { + saveAs(data, 'Sr_customer_t'); + }); + } + downloadCsvshan(data:any): void { + this.apiRequest.getFile(`api/template/demo/download/${data}`, { responseType: 'blob' }).subscribe(data => { + saveAs(data, 'Sr_handler_t'); + }); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/excel.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/excel.service.ts new file mode 100644 index 0000000..2c4c582 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/excel.service.ts @@ -0,0 +1,30 @@ +import { Injectable } from '@angular/core'; +import * as FileSaver from 'file-saver'; +import * as XLSX from 'xlsx'; + +const EXCEL_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8'; +const EXCEL_EXTENSION = '.xlsx'; + +@Injectable({ + providedIn: 'root' +}) +export class ExcelService { + + constructor() { } + + public exportAsExcelFile(json: any[], excelFileName: string, fileNameSuffix=''): void { + + const worksheet: XLSX.WorkSheet = XLSX.utils.json_to_sheet(json); + const workbook: XLSX.WorkBook = { Sheets: { 'data': worksheet }, SheetNames: ['data'] }; + const excelBuffer: any = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' }); + this.saveAsExcelFile(excelBuffer, excelFileName, fileNameSuffix); + } + + private saveAsExcelFile(buffer: any, fileName = 'export', fileNameSuffix=''): void { + const data: Blob = new Blob([buffer], { + type: EXCEL_TYPE + }); + FileSaver.saveAs(data, fileName + fileNameSuffix + EXCEL_EXTENSION); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/alerts.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/alerts.service.ts new file mode 100644 index 0000000..430879a --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/alerts.service.ts @@ -0,0 +1,68 @@ +import { Injectable } from '@angular/core'; +import { ApiRequestService } from '../api/api-request.service'; +import { Observable } from 'rxjs'; +import { HttpClient, HttpHeaders } from '@angular/common/http'; + +@Injectable({ + providedIn: 'root' +}) +export class AlertsService { + + constructor(private http: HttpClient,private apiRequest: ApiRequestService) {} + + public saveData(data: any): Observable { + return this.apiRequest.post(`Alerts/Alerts`, data); + } + + public getDetails(): Observable { + return this.apiRequest.get(`Alerts/Alerts`); + } + + public getDetailsById(id: number): Observable { + return this.apiRequest.get(`Alerts/Alerts/${id}`); + } + + public deleteById(id: number): Observable { + return this.apiRequest.delete(`Alerts/Alerts/${id}`); + } + + public updateData(data: any, id: number): Observable { + return this.apiRequest.put(`Alerts/Alerts/${id}`, data); + } + + + ////////// ALert Rules + public saveRuleData(data: any): Observable { + return this.apiRequest.post(`AlertRules/AlertRules`, data); + } + + public getRuleDetails(): Observable { + return this.apiRequest.get(`AlertRules/AlertRules`); + } + + public getRuleDetailsById(id: number): Observable { + return this.apiRequest.get(`AlertRules/AlertRules/${id}`); + } + + public deleteRuleById(id: number): Observable { + return this.apiRequest.delete(`AlertRules/AlertRules/${id}`); + } + + public updateRuleData(data: any, id: number): Observable { + return this.apiRequest.put(`AlertRules/AlertRules/${id}`, data); + } + + ///get table form store + public getTablefromstore(id: number): Observable { + return this.apiRequest.get(`AlertRules/tablelist/${id}`); + } + + ///get column form store + public getColumnfromstore(id: number, tableName:string): Observable { + return this.apiRequest.get(`AlertRules/columnlist/${id}/${tableName}`); + } + + public getColumnfromurl(url: any): Observable { + return this.apiRequest.get(`chart/getAllKeys?apiUrl=${url}`); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/bulkimport.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/bulkimport.service.ts new file mode 100644 index 0000000..6055e4b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/bulkimport.service.ts @@ -0,0 +1,160 @@ +import { HttpClient } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { ApiRequestService } from '../api/api-request.service'; +import baseUrl from '../api/helper'; +import { Observable } from 'rxjs'; +import { environment } from 'src/environments/environment'; +import { map } from 'rxjs/operators'; + +@Injectable({ + providedIn: 'root' +}) +export class BulkimportService { + private URL = environment.backendUrl; + constructor(private http: HttpClient,private apiRequest: ApiRequestService) { } + + public saveData(data: any): Observable { + return this.http.post(`${baseUrl}/BulkUpload/BulkUpload`, data); + } + + public getDetails(): Observable { + return this.http.get(`${baseUrl}/BulkUpload/BulkUpload`); + } + + public getDetailsById(id: number): Observable { + return this.http.get(`${baseUrl}/BulkUpload/BulkUpload/${id}`); + } + + public deleteById(id: number): Observable { + return this.http.delete(`${baseUrl}/BulkUpload/BulkUpload/${id}`); + } + + public updateData(data: any, id: number): Observable { + return this.http.put(`${baseUrl}/BulkUpload/BulkUpload/${id}`, data); + } + + + //rule + condition:string = ''; + setCondition(condition: string) { + this.condition = condition; + } + + getCondition(): string { + return this.condition; + } + + getSheetName(id: number): Observable{ + return this.apiRequest.get(`api/BulkUpload/sheet/${id}`); + } + + convertFileToJson(id: number): Observable { + return this.apiRequest.post(`api/BulkUpload/templatetojson/${id}`, {}); + } + + // getTemplateById(id: number): Observable { + // const url = `api/template/gettemplatebyid/${id}`; + // return this.apiRequest.get(url); + // } + + getHeader(id: number): Observable { + const url = `api/BulkUpload/getHeaders/${id}`; + return this.apiRequest.get(url); + } + + getColumnNames(tableName: string): Observable { + const url = `api/BulkUpload/columns/${tableName}`; + return this.apiRequest.get(url); + } + + changeKeysOfJson(updatedKeyJson: string, oldKeyDataJson:any): Observable { + const formData:FormData=new FormData(); + formData.append("updatedKeyJson",updatedKeyJson); + formData.append("oldKeyDataJson",oldKeyDataJson); + return this.apiRequest.postFormData(`api/BulkUpload/jsonkeychange`, formData); + } + + downloadExcel(id: string, jsonData:any, ruleData:any): Observable { + // return this.apiRequest.post(`api/dynamic/DownloadExcel/${tableName}`, data); + jsonData = JSON.stringify(jsonData); + ruleData = JSON.stringify(ruleData); + const formData:FormData=new FormData(); + formData.append("jsonData",jsonData); + formData.append("ruleData",ruleData); + const url = `${this.URL}/api/BulkUpload/DownloadExcel/${id}`; + return this.apiRequest.postFormData(`api/BulkUpload/DownloadExcel/${id}`, formData); + // return this.http.post(url, formData, { responseType: 'blob' }).pipe( + // map((response: Blob) => { + // // Process the response as needed + // return response; + // }) + // ); + } + + ////for download + getSheet(id: number): Observable { + const url = `${this.URL}/api/BulkUpload/downloadImportStatement/${id}`; + // return this.apiRequest.get(url); + return this.http.get(url, { responseType: 'blob' }).pipe( + map((response: Blob) => { + // Process the response as needed + return response; + }) + ); + } + + /////////////////////// + //mapping rules + public saveMappingData(data: any): Observable { + return this.http.post(`${baseUrl}/MappingRule/MappingRule`, data); + } + + public getMappingDetails(): Observable { + return this.http.get(`${baseUrl}/MappingRule/MappingRule`); + } + + public getMappingDetailsById(id: number): Observable { + return this.http.get(`${baseUrl}/MappingRule/MappingRule/${id}`); + } + + public deleteMappingById(id: number): Observable { + return this.http.delete(`${baseUrl}/MappingRule/MappingRule/${id}`); + } + + public updateMappingData(data: any, id: number): Observable { + return this.http.put(`${baseUrl}/MappingRule/MappingRule/${id}`, data); + } + + getDDforMappingRule(excelFile:any, sheetName:string){ + console.log(sheetName,excelFile) + const formData:FormData=new FormData(); + formData.append("excelFile",excelFile); + formData.append("sheetName",sheetName); + return this.apiRequest.postFormData(`MappingRule/getHeaders`, formData); + } + + + ///////////////////// + // master + + mastergetexcelSheet(file_type: string): Observable { + const url = `masterimport/demo/download/${file_type}`; + return this.apiRequest.get(url); + } + + masterdownloadExcel(id: string, jsonData:any,): Observable { + jsonData = JSON.stringify(jsonData); + const formData:FormData=new FormData(); + formData.append("jsonData",jsonData); + return this.apiRequest.postFormData(`masterimport/DownloadExcelForMaster/${id}`, formData); + } + + mastergetSheetName(id: number): Observable{ + return this.apiRequest.get(`masterimport/sheet/${id}`); + } + + mastergetColumnNames(tableName: string): Observable { + const url = `masterimport/columns/${tableName}`; + return this.apiRequest.get(url); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/code-extraction.service.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/code-extraction.service.spec.ts new file mode 100644 index 0000000..bd7eae4 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/code-extraction.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { CodeExtractionService } from './code-extraction.service'; + +describe('CodeExtractionService', () => { + let service: CodeExtractionService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(CodeExtractionService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/code-extraction.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/code-extraction.service.ts new file mode 100644 index 0000000..17b8dbd --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/code-extraction.service.ts @@ -0,0 +1,184 @@ +import { Injectable } from '@angular/core'; +import { HttpParams } from '@angular/common/http'; + + +import { Bcf_Extractor } from 'src/app/models/fnd/Bcf_Extractor'; +import { Bcf_Extractor_Params } from 'src/app/models/fnd/Bcf_Extractor_Params'; +import { FileData } from 'src/app/models/builder/FileData'; +import { FileDetails } from 'src/app/models/builder/FileDetails'; +import { Observable } from 'rxjs'; +import { ApiRequestService } from '../api/api-request.service'; +import { catchError } from 'rxjs/operators'; +@Injectable({ + providedIn: 'root' +}) +export class CodeExtractionService { + private codeExtractionURL = 'api/bcf-extractor'; + private codeExtractionParamsURL = 'api/bcf-extractor-params'; + private staticCodeExtractionURL = 'api/static_code_extraction'; + private dynamicCodeExtractionURL = 'api/dynamic_code_extraction'; + private buildMasterBuilderURL = 'api/build_master_builder'; + private extractionStatusChangeURL = 'api/bcf-extractor-params/extraction-status-change'; + private creationStatusChangeURL = 'api/bcf-extractor-params/creation-status-change'; + private codeExtractionBuilderURL = 'codeextractor/builderfile'; + + constructor(private apiRequest: ApiRequestService) { } + getAll(page?: number, size?: number): Observable { + //Create Request URL params + let me = this; + let params: HttpParams = new HttpParams(); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + // get all + // return this.apiRequest.get('api/instructors'); + // paginated data + return this.apiRequest.get(this.codeExtractionURL, params); + } + + getById(id: number): Observable { + const _http = this.codeExtractionURL + "/" + id; + return this.apiRequest.get(_http); + } + + create(bcf_extractor: Bcf_Extractor): Observable { + //`${this.baseURL}` + return this.apiRequest.post(this.codeExtractionURL, bcf_extractor); + } + + // UPLOAD ZIP FILE DATA + saveFormAndUploadFile(formData: FormData) :Observable { + //return this.http.post(this.appConfig.baseApiPath + this.codeExtractionURL, formData, { reportProgress:true, observe: 'events' }); + return this.apiRequest.postFormData(this.codeExtractionURL, formData); + } + delete1(id: number): Observable { + const _http = this.codeExtractionURL + "/" + id; + return this.apiRequest.delete(_http); + } + update(id: number, bcf_extractor: Bcf_Extractor): Observable { + const _http = this.codeExtractionURL + "/" + id; + return this.apiRequest.put(_http, bcf_extractor); + } + + // =========== CODE EXTRACTION PARAMS =============== + + getCodeExtractionParamById(id: number): Observable { + const _http = this.codeExtractionParamsURL + "/" + id; + return this.apiRequest.get(_http); + } + getCodeExtractionParams(header_id: number): Observable { + let params: HttpParams = new HttpParams(); + params = params.append('header_id', header_id.toString()); + return this.apiRequest.get(this.codeExtractionParamsURL, params); + } + delete(id: number): Observable { + const _http = this.codeExtractionParamsURL + "/" + id; + return this.apiRequest.delete(_http); + } + createExtractionParams(header_id: number, bcf_extractor_params: Bcf_Extractor_Params): Observable { + let params: HttpParams = new HttpParams(); + params = params.append('header_id', header_id.toString()); + return this.apiRequest.post(this.codeExtractionParamsURL, bcf_extractor_params, params); + } + + updateExtractionParams(id: number, header_id: number, bcf_extractor_params: Bcf_Extractor_Params): Observable { + let params: HttpParams = new HttpParams(); + params = params.append('header_id', header_id.toString()); + const _http = this.codeExtractionParamsURL + "/" + id; + return this.apiRequest.put(_http, bcf_extractor_params, params); + } +updatecodeparam(id:any,bcf_extractor_params: Bcf_Extractor_Params):Observable{ + const _http = this.codeExtractionParamsURL + "/" + id; + return this.apiRequest.put(_http, bcf_extractor_params, ); +} + // CREATION STATUS CHANGE + + creationStatusChange(id: number): Observable { + let params: HttpParams = new HttpParams(); + params = params.append("id", id.toString()); + return this.apiRequest.get(this.creationStatusChangeURL, params); + } + // EXTRACTION STATUS CHANGE + extractionStatusChange(id: number): Observable { + let params: HttpParams = new HttpParams(); + params = params.append("id", id.toString()); + return this.apiRequest.get(this.extractionStatusChangeURL, params); + } + // STATIC CODE EXTRACTOPN AND DYNAMIC CODE EXTRACTION + staticCodeExtraction(id:number): Observable { + let params: HttpParams = new HttpParams(); + params = params.append('header_id', id.toString()); + return this.apiRequest.get(this.staticCodeExtractionURL, params); + } + dynamicCodeExtraction(id:number): Observable { + let params: HttpParams = new HttpParams(); + params = params.append('header_id', id.toString()); + return this.apiRequest.get(this.dynamicCodeExtractionURL, params); + } + + // BUILD MASTER BUILDER + buildMasterBuilder(id: number): Observable { + let params: HttpParams = new HttpParams(); + params = params.append('id', id.toString()); + return this.apiRequest.get(this.buildMasterBuilderURL, params); + } + + // ========== code editor service ======= + + private codeExtractorFileListURL = 'api/bcf-extractor-file-list'; + private fileReadURL = 'api/file-code-read'; + private fileCodeSaveURL = 'api/file-code-save'; + + getFileList(id: number): Observable { + const _http = this.codeExtractorFileListURL + "/" + id; + return this.apiRequest.get(_http); + + } + + readFile(id: number): Observable { + const _http = this.fileReadURL + "/" + id; + return this.apiRequest.get(_http); + } + saveCodeIntoFile(fileData: FileData): Observable { + return this.apiRequest.post(this.fileCodeSaveURL, fileData); + } + + // ======= STATIC CODE READ AND SAVE ========== // + private staticFileReadURL = 'api/static-file-code-read'; + private SstaticFileCodeSaveURL = 'api/static-file-code-save'; + readStaticFile(id: number): Observable { + const _http = this.staticFileReadURL + "/" + id; + return this.apiRequest.get(_http); + } + + saveCodeIntoStaticFile(fileData: FileData): Observable { + return this.apiRequest.post(this.SstaticFileCodeSaveURL, fileData); + } + + // ======= CODE EXTRACTION BUILDER ========== // + getCodeExtractionBuilderById(id: number): Observable { + // const _http = this.codeExtractionBuilderURL + "/" + id; + return this.apiRequest.get(`${this.codeExtractionBuilderURL}/getbyid/${id}`); + } + + getAllFileById(id: number):Observable{ + const url = `${this.codeExtractionBuilderURL}/get_allfile/${id}`; + return this.apiRequest.get(url); + } + + deleteBuiilderFile(id: number): Observable { + const _http = `${this.codeExtractionBuilderURL}/deletefile/${id}`; + return this.apiRequest.delete(_http); + } + + readBuidlerFile(id: number): Observable { + const _http = `${this.codeExtractionBuilderURL}/readfile/${id}`; + return this.apiRequest.get(_http); + } + + saveBuidlerFile(fileDetails: FileDetails): Observable { + return this.apiRequest.post('codeextractor/builderfile/savefile', fileDetails); + } + + +} + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/dataflow.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/dataflow.service.ts new file mode 100644 index 0000000..24da09b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/dataflow.service.ts @@ -0,0 +1,123 @@ +import { HttpClient } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import baseUrl from 'src/app/services/api/helper'; +import { environment } from 'src/environments/environment'; +import { ApiRequestService } from '../api/api-request.service'; +@Injectable({ + providedIn: 'root' +}) +export class DataflowService { + // baseurl = environment.surejobUrl; + private addDataURl = 'api/suredata'; + constructor(private _http: HttpClient,private apiRequest: ApiRequestService) { } + public getAll() { + return this._http.get(`${baseUrl}/dataflow/dataflow`); + } + public create(data: any){ + return this._http.post(`${baseUrl}/dataflow/dataflow`, data); + } + create1(data:any,files:any): Observable { + const s = JSON.stringify(data); + const formData:FormData = new FormData(); + formData.append("data",s); + formData.append("ssh_file_key",files); + // for(let i=0;i{ + return this._http.get(`${baseUrl}/suredata/suredataflow/tablelistfromsource/${id}`); + } + public getstoredata(id:number):Observable{ + return this._http.get(`${baseUrl}/suredata/suredataflow/tablelistfromstore/${id}`); + } + public delete(id:any){ + return this._http.delete(`${baseUrl}/dataflow/dataflow/${id}`); + } + + public update(id:any,data:any){ + return this._http.put(`${baseUrl}/dataflow/dataflow/${id}`, data); + } + public updatelines(id:any,data:any){ + return this._http.put(`${baseUrl}/dataflow/dataflow_line/update/${id}`,data); + } + // public getdataflowlines(){ + // return this._http.get(`${baseUrl}/dataflow/dataflow_line/getall`); + // } + + + condition:string = ''; + setCondition(condition: string) { + this.condition = condition; + } + + getCondition(): string { + return this.condition; + } + + datacondition: string = ''; + setDataCondition(condition: string) { + this.datacondition = condition; + } + + getDataCondition(): string { + return this.datacondition; + } + + + public createjob(id:any):Observable { + return this._http.get(`${baseUrl}/token/suredata/surejob/create_job/${id}`); + } + //surebilljob + // public getAllsurejob(line_id:any) { + // return this._http.get(`${this.baseurl}/surebilljob/getalljob/${line_id}`); + // } + // public createsceduler(data: any){ + // return this._http.post(`${this.baseurl}/surebilljob/schedule`, data); + // } + // public updatesurejob(data: any){ + // return this._http.post(`${this.baseurl}/surebilljob/schedule`, data); + // } + // public pause(data:any){ + // return this._http.post(`${this.baseurl}/surebilljob/pauseschedule`, data); + // } + // public runonce(data:any){ + // return this._http.post(`${this.baseurl}/surebilljob/runschedule`, data); + // } + // public resume(data:any){ + // return this._http.post(`${this.baseurl}/surebilljob/resumeschedule`, data); + // } + // public deletesurejob(val:any){ + // return this._http.delete(`${this.baseurl}/surebilljob/deleteschedule/${val}`,); + // } + + /////////////// data flow 3 /////////////// + + getColumnListFromSourceTable(id: number, tableName: string): Observable { + return this.apiRequest.get(`suredata/suredataflow3/columnlistfromSource/${id}/${tableName}`); + } + getColumnListFromStoreTable(id: number, tableName: string): Observable { + return this.apiRequest.get(`suredata/suredataflow3/columnlistfromStore/${id}/${tableName}`); + } + /////cron jobs ////////////// + buildCronJob(minutes: string, hours: string, dayOfMonth: string, month: string, dayOfWeek: string): string { + const cronJobString = `${minutes} ${hours} ${dayOfMonth} ${month} ${dayOfWeek}`; + return cronJobString; + } + + + ///////////data flow table name by store name////////// + getTableListFromStoreByName(name: string): Observable { + const url = `${baseUrl}/suredata/suredataflow/tablelistfromstoreByname/${name}`; + return this._http.get(url); + } +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/datamanagement.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/datamanagement.service.ts new file mode 100644 index 0000000..6bd5436 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/datamanagement.service.ts @@ -0,0 +1,111 @@ +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { ApiRequestService } from '../api/api-request.service'; +import { HttpClient, HttpParams } from '@angular/common/http'; +import { environment } from 'src/environments/environment'; +import { map } from 'rxjs/operators'; + +@Injectable({ + providedIn: 'root' +}) +export class DatamanagementService { + private URL = environment.backendUrl; + private updateUrl = "api/template/dynamic/dynamic_temp" + constructor(private apiRequest: ApiRequestService, private _http: HttpClient) { } + getall() { + return this.apiRequest.get(`api/template/getalltemplate`); + } + + // getallentity(){ + // return this.apiRequest.get(`api/template/databasequery/Table_list_all`); + // } + + getTemplateById(id: number): Observable { + const url = `api/template/gettemplatebyid/${id}`; + return this.apiRequest.get(url); + } + + getHeader(id: number): Observable { + const url = `api/dynamic/getHeaders/${id}`; + return this.apiRequest.get(url); + } + + getColumnNames(tableName: string): Observable { + const url = `api/dynamic/columns/${tableName}`; + return this.apiRequest.get(url); + } + + // create(data:any,files:any): Observable { + // const s = JSON.stringify(data); + // const formData:FormData = new FormData(); + // formData.append("data",s); + // formData.append("file",files); + + // return this.apiRequest.postFormData(`sureserve/template/dynamic/dynamic_temp`,formData); + // } + + create(file: any, fileType: string): Observable { + const formData: FormData = new FormData(); + formData.append('file', file); + // let params: HttpParams = new HttpParams(); + // params =params.append('fileType', fileType); + return this.apiRequest.postFormData(`api/template/save/${fileType}`, formData); + } + + update(id: number, data: any, files: any): Observable { + const s = JSON.stringify(data); + const formData: FormData = new FormData(); + formData.append("data", s); + formData.append("file", files); + return this.apiRequest.postFormData(`${this.updateUrl}/${id}`, formData); + } + + delete(id: any) { + return this.apiRequest.delete(`api/template/deletetemplate/${id}`); + } + + // getjson(){ + // return this.apiRequest.get(`api/dynamic/jsonkeychange`); + // } + + changeKeysOfJson(newjson: string, body: any): Observable { + // const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded'); + // let params: HttpParams = new HttpParams(); + // params =params.append('newjson', newJson); + // params =params.append('body', body); + const formData: FormData = new FormData(); + formData.append("newjson", newjson); + formData.append("body", body); + return this.apiRequest.postFormData(`api/dynamic/jsonkeychange`, formData); + } + + + saveTemplateInJson(id: any): Observable { + // const formData: FormData = new FormData(); + // formData.append('file', file); + // console.log(formData, file); + + // let params: HttpParams = new HttpParams(); + // params =params.append("file",file); + return this.apiRequest.get(`api/dynamic/templatetojson/${id}`); + } + + convertFileToJson(id: number): Observable { + return this.apiRequest.post(`api/dynamic/templatetojson/${id}`, {}); + } + + + downloadExcel(tableName: string, data: any): Observable { + // return this.apiRequest.post(`api/dynamic/DownloadExcel/${tableName}`, data); + const url = `${this.URL}/api/dynamic/DownloadExcel/${tableName}`; + return this._http.post(url, data, { responseType: 'blob' }).pipe( + map((response: Blob) => { + // Process the response as needed + return response; + }) + ); + } + + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/datastore.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/datastore.service.ts new file mode 100644 index 0000000..9368540 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/datastore.service.ts @@ -0,0 +1,109 @@ +import { HttpClient, HttpParams } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import baseUrl from 'src/app/services/api/helper'; +import { ApiRequestService } from '../api/api-request.service'; +@Injectable({ + providedIn: 'root' +}) +export class DatastoreService { + private addDataURl = 'api/suredata'; + private addDataURl1='api/suredatasource'; + constructor(private _http: HttpClient,private apiRequest: ApiRequestService) { } + public getAll() { + return this._http.get(`${baseUrl}/api/suredata`); + } + public create(data: any){ + return this._http.post(`${baseUrl}/api/suredata`, data); + } + create1(data:any,files:any): Observable { + const s = JSON.stringify(data); + const formData:FormData = new FormData(); + formData.append("data",s); + formData.append("ssh_file_key",files); + // for(let i=0;i { + const s =JSON.stringify(data); + const formData:FormData=new FormData(); + formData.append("data",s); + formData.append("ssh_file_key",files); + + return this.apiRequest.postFormData(`${this.addDataURl}/${id}`,formData); + + + } + public getAll2() { + return this._http.get(`${baseUrl}/api/suredatasource`); + } + + create2(data:any,files:any): Observable { + const s = JSON.stringify(data); + const formData:FormData = new FormData(); + formData.append("data",s); + formData.append("ssh_file_key",files); + // for(let i=0;i { + const s =JSON.stringify(data); + const formData:FormData=new FormData(); + formData.append("data",s); + formData.append("ssh_file_key",files); + + return this.apiRequest.postFormData(`${this.addDataURl1}/${id}`,formData); + } + + testConnection(databaseType: string, storeUsername: string, storePassword: string, portNumber: string, dbHostname: string, databasename): Observable{ + const url = 'suredata/test/testconnection'; + let params: HttpParams = new HttpParams(); + params =params.append("database_type",databaseType); + params =params.append("store_username",storeUsername); + params =params.append("store_password",storePassword); + params =params.append("portnumber",portNumber); + params =params.append("dbhostname",dbHostname); + params =params.append("database_name",databasename) + return this.apiRequest.get(url, params); + } + + testsshConnection(sshHost: string, sshUsername: string, sshPassword: string, sshKeyFile: any): Observable{ + const url = 'suredata/test/checksshconnection'; + let params: HttpParams = new HttpParams(); + params =params.append("sshHost",sshHost); + params =params.append("sshUsername",sshUsername); + params =params.append("sshPassword",sshPassword); + params =params.append("sshKeyFile",sshKeyFile); + return this.apiRequest.post(url, params); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/exception-rule-library.service.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/exception-rule-library.service.spec.ts new file mode 100644 index 0000000..22ba84b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/exception-rule-library.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { ExceptionRuleLibraryService } from './exception-rule-library.service'; + +describe('ExceptionRuleLibraryService', () => { + let service: ExceptionRuleLibraryService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(ExceptionRuleLibraryService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/exception-rule-library.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/exception-rule-library.service.ts new file mode 100644 index 0000000..5bfda6e --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/exception-rule-library.service.ts @@ -0,0 +1,42 @@ +import { HttpParams } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { Bcf_Exception_Rule_Library } from 'src/app/models/fnd/Bcf_Exception_Rule_Library '; +import { ApiRequestService } from '../api/api-request.service'; + +@Injectable({ + providedIn: 'root' +}) +export class ExceptionRuleLibraryService { + private exceptionRuleLibraryBaseURL = 'codeextractor/exception/exception'; + constructor(private apiRequest: ApiRequestService) { } + getAll(): Observable { + return this.apiRequest.get(this.exceptionRuleLibraryBaseURL); + //Create Request URL params + // let params: HttpParams = new HttpParams(); + // params = params.append("page", typeof page === "number" ? page.toString() : "0"); + // params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + // return this.apiRequest.get(this.exceptionRuleLibraryBaseURL, params); + } + + getById(id: number): Observable { + const _http = this.exceptionRuleLibraryBaseURL + "/" + id; + return this.apiRequest.get(_http); + } + + save(exception_rule: Bcf_Exception_Rule_Library): Observable { + return this.apiRequest.post(this.exceptionRuleLibraryBaseURL, exception_rule); + } + + update(id: number, exception_rule: Bcf_Exception_Rule_Library): Observable { + const _http = this.exceptionRuleLibraryBaseURL + "/" + id; + return this.apiRequest.put(_http, exception_rule); + } + + delete(id: number): Observable { + const _http = this.exceptionRuleLibraryBaseURL + "/" + id; + return this.apiRequest.delete(_http); + } + + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/extension.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/extension.service.ts new file mode 100644 index 0000000..33bab08 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/extension.service.ts @@ -0,0 +1,78 @@ +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { ApiRequestService } from '../api/api-request.service'; +import { HttpParams} from "@angular/common/http"; +import { ExtensionField } from 'src/app/models/fnd/ExtensionField'; +@Injectable({ + providedIn: 'root' +}) +export class ExtensionService { + private extensionAPI = 'api/extension'; + private extensionBuildAPI = 'api/extension_build'; + private lookupAPI = 'api/lookup_values'; + private dataTypeAPI = 'api/datatypes'; + constructor(private apiRequest: ApiRequestService) { } +​ + getAll(page?:number, size?:number): Observable { + //Create Request URL params + let me = this; + let params: HttpParams = new HttpParams(); + params = params.append('page', typeof page === "number"? page.toString():"0"); + params = params.append('size', typeof size === "number"? size.toString():"1000"); + return this.apiRequest.get(this.extensionAPI, params); +​ +} +​ +getById(id: number) :Observable { + return this.apiRequest.get(this.extensionAPI + '/' + id); +​ +} +​ +create(extensionField: Object) :Observable { + //`${this.baseURL}` + return this.apiRequest.post(this.extensionAPI, extensionField); +​ +} +​ +update(id: number, extensionField: ExtensionField) :Observable { + return this.apiRequest.put(this.extensionAPI + "/" + id, extensionField); +} +​ +// http://localhost:9119/api/extension_build?account_id=admin&form_code=teacher_form +// build extension +buildExtension(id:any, account_id?:any, form_code?:any): Observable { + let params: HttpParams = new HttpParams(); + params = params.append('account_id', account_id.toString()); + params = params.append('form_code', form_code.toString()); + + const url = `api/extension_build/${id}` + return this.apiRequest.get(url, params); +} +​ +// look up code (attribute, flex) +getLookupValues() :Observable { + return this.apiRequest.get(this.lookupAPI); +} +​ +// datatypes code (string, varchar, int etc) +getDataTypeValues() :Observable { + return this.apiRequest.get(this.dataTypeAPI); +} +delete(id:any){ + return this.apiRequest.delete(`api/extension/${id}`); +} +​ +​ +​ +///extension build json object +​ +getDetailsByFormCode(formCode: string): Observable { + const url = `FromExtensionJsonExtensionJson/${formCode}`; + return this.apiRequest.get(url); + } +​ + getJsonObjectsByFormCodeList(formCode: string): Observable { + const url = `FromExtensionJson/ListExtensionJson/${formCode}`; + return this.apiRequest.get(url); + } +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/rule-library.service.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/rule-library.service.spec.ts new file mode 100644 index 0000000..057e7bf --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/rule-library.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { RuleLibraryService } from './rule-library.service'; + +describe('RuleLibraryService', () => { + let service: RuleLibraryService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(RuleLibraryService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/rule-library.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/rule-library.service.ts new file mode 100644 index 0000000..045f0c2 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/rule-library.service.ts @@ -0,0 +1,87 @@ +// import { Injectable } from '@angular/core'; + +// @Injectable({ +// providedIn: 'root' +// }) +// export class RuleLibraryService { + +// constructor() { } +// } + +import { HttpParams } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { Bcf_Rule_Library } from 'src/app/models/fnd/Bcf_Rule_Library'; +import { RuleCopy, Rule } from 'src/app/models/fnd/RuleCopy'; +import { ApiRequestService } from '../api/api-request.service'; + +@Injectable({ + providedIn: 'root' +}) +export class RuleLibraryService { + private ruleLibraryBaseURL = 'code_extractor/rule_keyword/Rule_library_keyword'; + private copyRuleURL = 'api/rule-copy'; + private keywordurl='codeextractor/rulelib_new/rule_keyword1'; + private filedurl='codeextractor/rulelib_new/rule_keyword'; + private copyURL = 'code_extractor/rule_keyword/copyrule' + constructor(private apiRequest: ApiRequestService) { } + + copy(data: RuleCopy) { + return this.apiRequest.post(this.copyRuleURL, data); + } + + getAll(page?: number, size?: number): Observable { + //Create Request URL params + let params: HttpParams = new HttpParams(); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + return this.apiRequest.get(this.ruleLibraryBaseURL, params); + } + + getById(id: number): Observable { + const _http = this.ruleLibraryBaseURL + "/" + id; + return this.apiRequest.get(_http); + } + + save(rule: Bcf_Rule_Library): Observable { + return this.apiRequest.post(this.ruleLibraryBaseURL, rule); + } + + update(id: number, rule: Bcf_Rule_Library): Observable { + const _http = this.ruleLibraryBaseURL + "/" + id; + return this.apiRequest.put(_http, rule); + } + delete(id: number): Observable { + const _http = this.ruleLibraryBaseURL + "/" + id; + return this.apiRequest.delete(_http); + } + keyword(id: number,keyword: any): Observable { + let params: HttpParams = new HttpParams(); + params = params.append("id", id.toString()); + params= params.append("keyword",keyword); + return this.apiRequest.get(this.keywordurl, params); + } + + insertfile(id:any,data:any,keyword:any,){ + let params: HttpParams = new HttpParams(); + params = params.append("id", id.toString()); + params= params.append("selectedarea",data); + params= params.append("keyword",keyword); + console.log(params); + return this.apiRequest.get(this.filedurl, params); + } + + copyRule(technologyStack: string, objectType: string, subObjectType: string, service: string, newTechStackName: string, rule: Rule){ + let params: HttpParams = new HttpParams(); + params =params.append("technology_stack",technologyStack); + params =params.append("object_type",objectType); + params =params.append("sub_object_type",subObjectType); + params =params.append("service",service), + params=params.append("new_tech_stack_name",newTechStackName) + return this.apiRequest.post(this.copyURL,rule,params); + //return this.apiRequest.post(this.copydeployurl,params); + //return this.http.get(`${baseUrl}/api/getmodulename`,params); + + } +} + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/workflow-data.service.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/workflow-data.service.spec.ts new file mode 100644 index 0000000..7b38791 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/workflow-data.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { WorkflowDataService } from './workflow-data.service'; + +describe('WorkflowDataService', () => { + let service: WorkflowDataService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(WorkflowDataService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/workflow-data.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/workflow-data.service.ts new file mode 100644 index 0000000..0c3ec49 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/fnd/workflow-data.service.ts @@ -0,0 +1,63 @@ + +import { Injectable } from '@angular/core'; +import { HttpClient, HttpHeaders, HttpParams } from "@angular/common/http"; +import { Observable } from 'rxjs'; +import { ApiRequestService } from "src/app/services/api/api-request.service"; + +@Injectable({ + providedIn: 'root' +}) +export class WorkflowDataService { + private getAllURL = 'work'; + private addDataURl = 'work'; + private editDataURL = 'work'; + private deleteURL ='work'; + private getByIdURL = 'work'; + private updateWorkflowURL = 'updateByid'; + private fileurl ='/sureops/createfile'; + private callurl='workflow/workflow/callworkflow' + constructor(private _http: HttpClient, + private apiRequest: ApiRequestService) { } + getAll(page?: number, size?: number): Observable { + // create Request URL params + let me = this; + let params: HttpParams = new HttpParams(); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + // params = params.append("module_id", module_id.toString()); + // get all + return this.apiRequest.get(this.getAllURL, params); + } +getcallall(){ + return this.apiRequest.get(this.callurl); +} + create(data:any): Observable + { + return this.apiRequest.post(this.addDataURl, data); + } + + delete(id:number){ + let _http = this.deleteURL + "/" + id; + return this.apiRequest.delete(_http); + } + + getById(id:number) + { + let _http = this.getByIdURL + "/"+id; + return this.apiRequest.get(_http); + } + + updateLineById(id:number,data:any) + { + let _http = this.updateWorkflowURL + "/"+id; + return this.apiRequest.put(_http,data); + } + + update(id:number,data:any) + { + let _http = this.editDataURL + "/"+id; + return this.apiRequest.put(_http,data); + } + +} + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/jwt.interceptor.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/jwt.interceptor.ts new file mode 100644 index 0000000..257cd63 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/jwt.interceptor.ts @@ -0,0 +1,22 @@ +import { Injectable } from '@angular/core'; +import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { UserInfoService } from './user-info.service'; + +@Injectable() +export class JwtInterceptor implements HttpInterceptor { + constructor(private userInfoService: UserInfoService) {} + + intercept(request: HttpRequest, next: HttpHandler): Observable> { + // add authorization header with jwt token if available + let currentUser = this.userInfoService.getUserInfo(); + if (currentUser && currentUser.token) { + request = request.clone({ + setHeaders: { + Authorization: `Bearer ${currentUser.token}` + } + }); + } + return next.handle(request); + } +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/main.service.spec.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/main.service.spec.ts new file mode 100644 index 0000000..f8dc470 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/main.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { MainService } from './main.service'; + +describe('MainService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: MainService = TestBed.get(MainService); + expect(service).toBeTruthy(); + }); +}); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/main.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/main.service.ts new file mode 100644 index 0000000..9aaaa85 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/main.service.ts @@ -0,0 +1,36 @@ +import { Injectable } from '@angular/core'; +import { JwtHelperService } from '@auth0/angular-jwt'; +import { HttpClient } from '@angular/common/http'; + +@Injectable({ + providedIn: 'root' +}) +export class MainService { + token = sessionStorage.getItem('token'); + jwtHelper: JwtHelperService = new JwtHelperService(); + + constructor(private http: HttpClient) { } + + getIP() { + return this.http.get(`https://api.ipify.org?format=json`) + .toPromise() + .then(result => result) + .catch(error => error); + } + + getUser() { + // return this.http.get(`${this.url}/get-annouce/${month}/${year}`) + return this.http.get(`https://randomuser.me/api/?results=100`) + .toPromise() + .then(result => result) + .catch(error => error); + } + + getUserTest() { + return this.http.get(`https://randomuser.me/api/?results=100`) + .toPromise() + .then(result => result) + .catch(error => error); + } + +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/notification.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/notification.service.ts new file mode 100644 index 0000000..5ddf252 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/notification.service.ts @@ -0,0 +1,36 @@ +import { Injectable } from '@angular/core'; +import { Subject } from 'rxjs'; + +export enum NotificationType { + Warning = "warning", + Info = "info", + Danger = "danger" +} + +export class Notification { + constructor( + public readonly type: NotificationType, + public readonly message: string, + public readonly detail: string) { + } +} + +@Injectable({ + providedIn: 'root' +}) +export class NotificationService { + private readonly _notifications = new Subject(); + + public readonly notifications = this._notifications.asObservable(); + + public add(notification: Notification) { + if (!notification.message || notification.message.trim() == ""){ + console.error("ERROR NOTIFICATION WITHOUT MESSAGE: " + notification) + } + this._notifications.next(notification); + } + + public flushNotification() { + this._notifications.next(null); + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/user-info.service.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/user-info.service.ts new file mode 100644 index 0000000..b9d3779 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/app/services/user-info.service.ts @@ -0,0 +1,122 @@ +import { HttpClient } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import baseUrl from './api/helper'; +export interface UserInStorage{ + userId:string; + email:string; + displayName:string; + username: string; + roles: string, + token:string; +} +export interface LoginInfoInStorage{ + success:boolean; + message:string; + landingPage:string; + user?:UserInStorage; +} +@Injectable() +export class UserInfoService { + + public currentUserKey:string="currentUser"; + public storage:Storage = sessionStorage; // <--- you may switch between sessionStorage or LocalStrage (only one place to change) + + + + constructor( private _http: HttpClient, + ) {} + + //Store userinfo from session storage + storeUserInfo(userInfoString:string) { + this.storage.setItem(this.currentUserKey, userInfoString); + } + + //Remove userinfo from session storage + removeUserInfo() { + this.storage.removeItem(this.currentUserKey); + } + + //Get userinfo from session storage + getUserInfo():UserInStorage|null { + try{ + let userInfoString:string = this.storage.getItem(this.currentUserKey); + if (userInfoString) { + let userObj:UserInStorage = JSON.parse(this.storage.getItem(this.currentUserKey)); + return userObj; + } + else{ + return null; + } + } + catch (e) { + return null; + } + } + + isLoggedIn():boolean { + return this.storage.getItem(this.currentUserKey)?true:false; + } + + //Get User's Display name from session storage + getUserName():string { + let userObj:UserInStorage = this.getUserInfo(); + if (userObj!== null) { + return userObj.displayName + } + return "no-user"; + } + + getEmail():string { + let userObj:UserInStorage = this.getUserInfo(); + if (userObj!== null) { + return userObj.email + } + return "no-user"; + } + + + getRoles(): string { + let userObj:UserInStorage = this.getUserInfo(); + if (userObj!== null) { + return userObj.roles + } + return null; + } + + + // Get User Id from session storage + getUserId(): string { + let userObj:UserInStorage = this.getUserInfo(); + if (userObj!== null) { + return userObj.userId; + } + return "no-user"; + } + + getStoredToken():string|null { + let userObj:UserInStorage = this.getUserInfo(); + if (userObj !== null) { + return userObj.token; + } + return null; + } + + public getAllUsers(){ + return this._http.get(`${baseUrl}/api/all-users`); + } + + public getUserById(id: any){ + return this._http.get(`${baseUrl}/api/get-one/${id}`); + } + + public updateUserById(id: any, user: any){ + return this._http.put(`${baseUrl}/api/org-users/${id}`, user); + } + + public deleteUserById(id: any){ + return this._http.delete(`${baseUrl}/api/org-users/${id}`); + } +public logout(){ + return this._http.get(`${baseUrl}/token/logout`); +} +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/.gitkeep b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/fonts/THSarabun Bold Italic.ttf b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/fonts/THSarabun Bold Italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f286d7be891284cc86667ce78548c1d0d6748891 GIT binary patch literal 117644 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/fonts/THSarabun BoldItalic.ttf b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/fonts/THSarabun BoldItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..beb5249d52b8ef7cd7b5868cefaa37bff93e975f GIT binary patch literal 102916 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

  1. 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�Hd)@?l%WIWa5i5-}Z^k|bb z!o`$x83P+eXPO*skb}Xr&Qk_m1wco%bubEEucDt@_Vev>+qAZ9OR{Ci^n_>%<>Ipk zG<@86MJRx>!0H|=7(zP-v(2O#q}3|_?kgy}m;(E5K>`}F5dE|7RQOtmbRw1kg|wg7 zuy-!@Vn4`YaHO2sN@Lt7U7TgLHJ`zfz|r&|dZbwU7$-!4e~o`IEs;}xu652ICVi2O zs04}IZyHMadZrnT#j5|A?+?^>OOB~(Ay&sJt|K+-EYKhs>C(1io(>90NtKG2+E%V2 zdnRPnmRzA=m9{J4_lxy9!|{En)hBZoU72a_t&UyO=L#-q&S|wB%Zo2%adG8Bt3G}S zFN%+6l92yyZmtIPLZmo+&lT+TU?hG_qM@jnG`++iL^GYrnQRogo``keEFtKQvHZgL z{OIZpdd*1KNO~gzJXDrKLP0lu4qY&xJG8Ve%=*eq8)nXYtJ-)n)=XRzx?_G&| z-!qIT!M}~X-X1VcZF5gs;err7y`XOzce<{zR3Q7QQ{d zuV>NT8s4zAVw^J@{c!s|X=s9f4p&G?7vwjSAm?5$NDZ;skC^Q>XK9tQunp9@XXqOh z_&lFm(6v5iBJ9@jg!7rplwGUic05hqx&VI0^n>9C5A~B%yn$(c#;vsUz8?$X~5q zGUQ(tF`%S`t@6JwC>Q&83BAOT+YcPq+{m^M*?>-!|M_?_d2{rmL1&qh$5KxsHne(u zRhe7D(_DtXC?IiXCnL|uwA6Obl1V48MAk~`ki?aiApPYNLtu4IP?4aps~zv+SDgb-|RRVcwye`MyuLe&lPS$ zkC1gWxNE7AmJg1hb7>|qaUnF9Ta3_Ue}D2aR&du~D9PQ^)(fZH(U}XEP>Udhj(Sb0 z^Omv&A;^`x*Qk#DP*iJO5RNH8*WA;!rklu-$pp)D{Q3~8AV)rxjGDD#`sGpK?yMQV z_1<`Ba!g@}bS$9FwM2uzk#nWhygQF&7Kd-eM;6sdC(za~tC9Nj1#kHX40$l1ewBYQ zY8b}E(_By7>Q&qsP#|F}Hg9hpL)?vxS>JF>PlG9aSxe*M%OKoj({8ikyqQ;~mnmyW zG876GS{~ewAC+^{EPGR)e_wA z`Fd->)L;8vH!Zv1Mr_CJUD>p#nS2MMz<-iu-4bA&rhITiPY$gcZ#q(`ieDJr~u_9xKVX$78@P!Z7MTuP(%0?H@j6v)QyX zv~=vV8$)JCfcqmAmRO9odQvF@Se^;+@=K~Oi}lMucP}u>0#;aBE06YUtOHkWt<3Ke zcsNZ&7M!jwZvAl=YE_g#x#U^y|0rbtD8ImoiIO5G{;$NVxIfzkw+q;85YCZMMOyjx zs1w6B+F@Bh$ ztU5g@iFa5I!(~h%L|Q+^-mRLwdoSe+k@By_FnOt0>;{)IC_Nq--9e6F^Z>-ylmnko zg-Ppu>z_ezW#o8@YH1Ol+A~!B&^FSIg$ok5Fi@`z`}x(pXxY9@7!&N?Jy1P0n_LwZ}~c^-q-6q2DWwAE)k3 zwuZg@i6{8kO~puVyk-I@TFn(!Y*N_j5^&LJn+Ik;mk>XMoSfEzubNVkebStayZDvr zIztDK!}l@2$?SiSb@F?I0~?AxDB9?_ju>086qP=BMgk8F_85N*r+QQ+HmBq zt|HM=INWbOVmw?b-d;S9=k}q1>IZtSU}pt(1LNL8+D0$dion8UZlz3Z;g7;M$B@LW z&)E3!nd2wYVfTMSun`F-C-yzzWJTosl$VdC8<+2&Ug>S?h%r7&pR~UF%fTlCJCNYp z_y5VI^eg55?XYPv0FbQ} zWObyp+LAY+Mx87Kq&lg`z(R9>#pP5&krAvz=^jB>Mzyi&RQ-WxdmV|HJP58aj;3}J z%r%@@dEvA(FIrM1=>0y}5Q%14^*iek9ml)n;G%9kxXvmNwo|)1T;@pw z7kQ~}N9aEYN+Y$x`W*x;U!0lAKO%Lx+}b(;-hL9B&?$x`f5?Yj zT1${d8Ui#p#@c_Eqi*pvc>I*Cm) z-vTVLBrx|l8d!kF+Sm&ArB`?;Vy~?ZT0(pe!>9HtH$HMUy}Kx(Z*_(luX4Y*J1d|U zT&{rc)#_Yra=I_OwfibA*BE|TnU*74ic@N>F^<12`hNR6o^T;~d}P=!92~l{I09iN zlXu;5W!G~X@g;;-XIb*2>v>KGztXSSNO2}3UTnl|eVC0e6SC-`W6>^mu~HckOH!^} zh>RBGGX_^vfx`s1Yw9Y^QZeZtKmez8dqc;0r4Xe}dev}w5x*x%nz85PjWe)51=-JL1|(8`?&#edT{1>}@I5nVk6 z8-3w63#IciE4M+fdkS9yXNW3pukoB(vch$XaU>_VAeu{fLxAvAZw2+YK%nknwgET{ zAd@2>4GI7}Q{B&k)E3DX*%E+c^y3Hp1n)8s+%$DLqb9n=>pq|g|7Aa;maM)2PG`%v z(GNJ+!b}kVrX_pNu(oQDL$gY80LEc@`q z2itI(GAh7kR4slUX6_dG=Mud)8dP{v`<_m+q>^B&B}yf?FmBrN1xDN6`HYR~y#-JF zB}uj8c?e5EFE3&|=W&0~^M8Cm|MxY}L~7!XKZ}ysRCLP?enMdMWF~zG#?`IzCQ2BF zHFsLY!$0b~G*RM`6-ThecLUh@zGf7OGZ;Pd4X84Kzjc4O5`o(2v#-Z&SKHZJ1lIc? zL4}GsvGr93xH!HjL!)1lors+C9&Qh?*bqfl74s&ofpnIvK4}({C)6g}@s9Wm4Topj z*smL^vMcg}OUc;&XeY#yH4^=lc`RLlx?d~Cn zS*SU=+#r-D~9E?Ds!SUmyT6k6lk|5Ml?gYeyioBNI05wA+rm$; zh-G3=H3TvU%zuU^T`$3mP4wzqYY-8IOrD(Z&nEJwrnCU|_J3pdC{2ZYv>{%lP%7Z` z>a_dEEnMljt+X^MPzN^6qi+KIt>0qnGanxv{jQ7nZ-i)(M2RWcea-g+UEcSd0RRoZ z5#RVJrkcI{4f7s3CD$E?%Z{qusHc+uePFRlFW?38*-UTmD!Xb4);P#OGZ=e%W7|Q+ zOgisjq_e6$sxGfsQ*sl8+c+Hwbrb=k>gs{g(dJ@*+YQ(^m?v%v2kFmglf~2)zfTFS zq~e6qc{+0!do5})=6Pk1$T;hN1B5!nk{c9jHg=$7h01u*_=viwIj z*^K%(#hQlSb{oUP+UHkXp%}BR7jqXhn!oXcP{B1g+FVg-Q!}PRv-&+mH$(tBpFKKm zFiY1{N38j^5F8vM?djHHHPFIqYFx~@w*N*nytH!t_X*dT%S2*)Zo}Pi3y{XR(OLTK zx9%9Q>6dIrGwCa9xs*6Rh*btXkUj?YcH0tGQt3)X)NJgVGK~CMh{8V{GJ#iwj1AZ0 zEyRXslh(gRbX}Lo^R_O9!TL*LtKh1J+Tk|f!Hh&uwz#u_^CXGbO-n@YZ}r5Db1eGf zR3LHWzyI?>XMO^b#h+&8eaF8)fAT@wu;De?1y#yZKAh$)8j<*BzsDwZ&BJ?2p%@{< ztw84_{#b^wZx4O)?#16&< z=oC)ofvHjCv~D*V#2f~u&VmYZWuk|RS{87d3TJs4Gx}Qgy)UbpDZb_do)JKGhph*= z2J5@AGPJgjW$2&3aT$Xm=}FbC&pmD>cmpjhEw9d)wg-XGk=MPO*Tc10gVTYVVENm>+{RFqg-TYpC^r;3LV*gf1`qddI0 z&Z06#Z1%_4kTteCkSIQIrW`J=0Qm=CYRz6fDlIOq8~AnHEFbt!-#^v3d*lI@ zuWue#fy2{!&=mMcy}lR{Kj95b)G1-IOrQ4CLG$+rm=HgI{+v39`Ip_p6%r^j3wSg= zgsvi$tcO+G^Q8rr6}y^5-bI)%i{Q7P3O)KBFo5#a${VL&*zO#CK4A;5wCp@eiM|vD z$BX+P9{y$p)IL>y^725f&rQ21ST@@EHHHN1T-H0@g`Pzr8W%nqHfoc>Tw_3rOIcfd z#nS8e?wG7->e$D*l)`Jl!Eix5WLH*lLoK5i)eh3l)2T_PSP338-15Ged#0`zvO`y8 zIl8OwMR|(ddh~vIQ08yR+J7pw0HW%j=oZ~y@3KSh19>54LEqQy>6>2RyEkb<)nxva4WA^{-rgO|~^e17fX{J9i zZezbsS3TsU+RgX{QN{4W4<^|D+`d6rnI!rP@7=!g(X+(gC6pU(f7mkBMPGOq4Mwt@ z5#8D0zVIsUj(`%4Uy7>Scv`fN>dzgCI`ey7E&J%VIBZ=m4-=jJWccZAzkW$^a8)Ad z@Z#}LTi<7_(EBW8^3H{i;6#SCq7*x0Nrn#49Q&a@xP{5RIVO$i6$J{m~|r9bJOA(xaHE1$Ri}0KjD~)V>0Y z8bZTq_$puxj`?_2K{DdoQ6310sb|1A=XqV_KqMwL*rhfJNrKO9Hu(*%a4u((Lvo~W8JE9<#R}~YgcXvf ztD$Gd3m#URvsXGLE=M**>NQp^+K08twUs$lk(7p{tGAzrV76-_YRliWoTpyS!3?{D zZ{w|B0bCRf7N>YjF>Zu;GDwV3zgQA?{i*lk!+qiA6bB-8XQ7tm*Q=FBm(d8BDHb%3 zo1HvkV}V&hOmaWqQxaipIT>JhvyEF1ojF;#PR0`es!LlJ-s>q|QfvFa*Q+${FJU2F zR0JN+>zs@uVXvE#b6eHB9;X_~Br95h%$>7!k;MM5{7=k`j7{~=hZpy%X_eJ9LN=C65X#!h=*>yZY;q1u7D{z6H^(zJQBnf+ z0I{p0K|-bJ>_xr2rm9Hl1%isV0AbsG&RLjC@d>TR!Zak6dZj%5_s&Vc&IfP z<<~vX^jOf<+^QP9eH+t5m1*MWwPjZ=UafH%)@u{W1bM^j-?8tY)0%rd=r+Uffd_|B zvMs&6_@SO9rMYRA!yM=EVBTCHJeg|VO40iozlKR~2q+)j%c2_j$MpA~>O?UrSL44y zL05Yq{nQfe6`!+|VrP(vU5~pLx%Y4u#`T+AsbUOX(^aS2;sqBT7XS|o$ zfcC|F({vLh`U{>Y-i4rb|M^&^BGH{fv$|dV1ge#QE;+}I%ZM;d_OU32_J&yhKanjX ze)8u6YDco@proeM&nvR*c z^N+GP$lG>CS&Hhp)}%%1h4#=zNw;lgUC zFI0&j^p8>Zeg!kBluOvK0U0qj;DYup|9Zh8>mf*{xnv0uk< zAb_&Or7@0tB*1a@_b3Dd+JiS#mW8&81J#Oszn!ZQiX_lX08r`590j!9G755&y*6L9 z4WB01R}W~&UWPzRM+Y4b?GVOl7a;{AC6K8Gxi*>$T+R z3b7D)GKS==h-R19NQ`}hgPp)8#731GbsNoPXb&KB&3w+LLc;Db;UPkdqrKvG|Hzalih!wezwZ&C?JCFpe6Mvl{|%l1^4X} zF|VsNlxmq9>%bY`D`76vA)>I;5LL9Vb{>*pZ*uIC2LeA_w-#|W{9{0meguoj{=tFs z{bi3sS`K;T2w_uHiA*fFX*Zh3(vcx46HUyecWGeLN+>t z&AVm87%XpItybBmQfUdPJ2xM{{YQWKf1WkpMFy8k*VGtX#{M^SAAVToXsMA&(%bi4}Ni`w5`#u;5X; zKm^&n*-Q{3bj&s!tA^?H6%JOYNz1;&Dk(4n5%!u9C%8@^Q@5Q2o&?F4s^K3U2l03| zwdr3|I3<6QX|j$)ue4UDuWZwXUM*ulDM7`lho3q=;9k5)vEvvBozRx&fyqN11_Y$r z!9+mb(6i;Yfmtm2&M(GUe0W>1W_)%}?fQVUL&vjX;#n2NBn9ZR{w;_iXiJf8brxiF zVO^;jzb4jaNU{~?V7#vwe|J*A+Put_zP-@ka>i!7M}<;}bMSr+EG2D^8yxdS8S*>w zPJ=AGjGcPCH|UEZKh5y$$Emo35Uc)hHn>MNG5y1>>NC7GJU< zt?T{ObFAah)mg&u&4*^Zgca|>85zIw*W;j=-}#~W`}kCUtOEylC?)k=*8Fd8_}^yB z0ZmMgm1+D%XviXUY6HCkfv!ck{JtpoZBHvAM4Bv;Ti7lq9_k7)aP1GQqd^`#Z|5;q z>b)~_5UICx&sBlzXOp5ZM7QOwL&5eZvo5Ig!} zAdZ1M?}6d5%ToCWcn3C>elYoF(q);sn}FVRjfRHS0Dg0f9I??G0ocWzx>f=UJL;5O zmitpnQi~R*cR%bRYCPm$+A%$Mf;So7C$~r`E!7jowO!ssi#h81VlOn>thBg4=)Eo| z4c7ek5mdrPoQkEa59TRE)qN*c(RWLVDz$!-lbs8=B-!;m!}{n|=34A&uvKy+>pXbP zoDsQlo$ke!_$IOVx=Ot(g2{EUsU#BRj#Ck&^9`TkIy2`%RaPx9K^W2A<>cX8_%&}~ zV9Cv*QBb82rE4wyLi8Jxp>O0amg+(y|I?($)og7@9j!1YBu(pk+S- zRnIxu0GyuxQvmQ+-T5!|W@e&ec=N+1XwRm-+s?5+MI$7$znUI$haoQVWHf&mo`l(V zQmXi{_`-N(%xvrl3FypnAj!1`j}b^L4cy={WbzOb`KZRj!Cl;TekKLzSvQ*mrBSK#e6TI98+}rCMwQ!WP}OJ z3d44FHk=ExG!?ti4`8Yy%-%~Lhn;k!+Zg#-ob`@yDeg+e#4m0l3DLOoc;q&6%VPnX z6f-op<*eJzDYmvSWNnaUrD-9yZ0|12vjB5DtGG{gI?px_+pJS=mh5-px47tB5jHYC`x1D}R&8+J0p6skz{MoaKB#7ha+zDKT&d_- z_PlZ3jFE|rHbKNgQnud#WVFuZ)JmABprF9wyp*Uoi*W#Gbn zSX0_ql4TzXFT_4!rl;T8!i#_w_C9`|cNb=SMg7AckCe+Qv1dozkE29^??DBCah+(Z zjh;xKR2B@BXzm_v5i49Jw7m3%$>QS9Q#*y0$GU3Kk4sNA`fm6mDtIE|;`-I<9YS{t z>!B<;se%HC&Xzm2&YGTPMP z%inxGM|ctKYJqaCNe2uoe45@#C6(6b2u~Nb4qBb1S*mk+7yqn6s4)LNq|Gz?>`O16 zP@^;T9O0!(tb;ETs@&wPBnax2Y&VPSer8|_71MmQ1>_46=x!^oS>TwEvp&#TKxatzSMqc zkIT7*P?xE|PF#%o{S5K;Y&SgDNh)tQ%#jA|XpWAkr46$FRB%5&g+on*b9XD0=2z4H zd)>)EUm8A{Sl9Te3}X|pjK|)G0?9)evT=1{hwnMKO6>C!+wdN_hj!93{S>zIJc3Zf z66s}23DMXv)+IFMSeu)q#be>e40HlM!*U*|z0=YE-iU3zx^KZi7#K!kuj#hNCZ7T0BkVF0LCs`qA)sTLN-c zmGM2CKz(bcd}bmTY;?f0l_R$?5y_?q{vePXDOfLbyI68{%xNa%zQ^h2G4s=ij#K@5 z37xV;EUt{UKq;xQ+KGSy3#eOPEoIwP_yC~&`a7WgL`C^zhBdVNgtOX|U~i$yd}6rZ zVW1Q3Yej^RkkFfL?0Ri{L$wbyP{5X^>;J`Z!MQfRSp;JK21Tu^0blt9@kvz}lvd`Q z*>U{&x$WoAKJzD6BNtt2)br2un>6kTsUHevvR4hBmuo;>n3j0&myAnhO)C!6@}|xn zRivf|DpHFiiubJ5U_n7ayA?N$$mRJQGaQep_@i-w2V)$~ea(dzMGMOVfg5z;AujhT znwYxRO{CBM)z#cD9OM#_=KjM0j-tO{!r!ZXHJ+B-On@UBs3KTqCp&*|$obYH*+=W2{m`S0!km^N7N*$-L9?Z~*Qw@}C{*U ziLA(TMp=q(1`5^ecD@Oq7&cQhJ|P(7Zvt1$&udC;6;CuyT5Jx*pz81t4QJGuyeo!$ znvL}-CYgi&KF$hCf|t-5PksY=Jqn@=KRk!d07D#&7rS=(A3S=|QFX+hM<^+~Vsuxe z0=1JKx93LQV$bUbID1woy%_#sC)WV$zbOC)rQSuzIX>l~^|}Sull*h~{$_ArkqL#S zMG=>TSyo)oNrt;sGms7{Hld(+G5kqZ7ol9D`Ui#JNIR`L_D{aTGs7N#fdt4 zWxSTHqYoFaET*)+b?vs%qnMC@cHNa&xC&U4Z5XNbnn^nB+sK?T%1LoA($HvD*7uufVs*sU_Q+^LEzoug# zS>Cr&fL@l^A##e{>u|BzNu{){x>5DfnTt88+1nxqfx^P#g3$ta!xa|0(c*Sb_9$1* z_ZD)LJfijE3x zN6mrTPGwH$To0UyJQcLHTevMIUYzS%hzoti@B`UUxck8(8KIY%XHS7pyJv`}jCb5V z@n3CDd5c@ADAmfpjXhYO;Nqb{z^vn9DJY`%umtFhD>gt5pp<;Wz54N~9XN`2KUU_SbxbdLZaUv!odK60Qg?EAo}$5jRmCcJL_MvFb+ZM5`95f!?eS~7@I zNp1VQkt-C498m6uT&RlM+OMXQM1xeHP=sG=KexR*NrNoI!ei)t-d$n6^O{45jUFoY z`3XJ8LG;|5EvW&jF<@nOTl%yL z-p7H9CC6$wM*$EQ%RX>wi01qZ5yDy`)T0sGQ{QT6hOEl9F^Pa>&T_21ka?JC?<;um zrGt?yW3|=CG4{M5A96kkz?ZM}HOEp`_LkP;24p00zvwGeR=e5FHGg(phw7uZMf%E8 zVG~0)yqKHDD1^0}AM?HZbf%%C=gGwP{(11wF^??H9jOLudo(b;_^!lepq+?cfsXz* zW<9qnD#Sh6fieewr+}%>zAx_V8G#Pp*Wn}%Gpu*jh8u54xQ4hWt&^A*JRJKJ*mG9D z>IN%Uzh5enAA9IAX4vB+-Ri2LX&{ZT8mLiYx@vADCY%3razGd#N;pxdSh;6k^i&cv#6C^wQbF0Zk+rxz3)Y%C`=^pdrK&VTYd+wA$C4y z{op)VVCe2!x%MSsWfVM=H4tf$JU9}8bn5PY9cAoQq+AMB(bSrDbh13(SE!p6(SVzm|*1(yb7PpQvA~6P)+LFN?}p+e_v!*W4wm%K{@;486NKyga?$ zy8QVP?|sV@qg`9iIsDC}g_pv!Yi(9zAUN2X{Gb)sh%xzBKm1m!))TYsO}q6;-t$eM z>9}_5svoA)5`8KrUjAR-w@Hq;9F+BExI8dGlEbiYn-aw-4u#NT_9dH&bUi`o@!D#O zu$eo)ci{VuFz!q^kaMYR#$IW)7`jW#EvB%L{PUhfM1l{SXA-luy+mWamFCpTBK%S@ z+~thR?25Yw|B~Ugw=juM~A2mpJV&rd##8 zf$cAnmA}_f=G^Y8RP`o?KIevuOaz3TGV)Z+`3^3CrB@6GTV88-B=F%@^u?!Il1XEJ zH)+m8r*@w`b}|!9p4%Ot9QSi>;4=BjZ7Jc*ZQ#LzyXehk;3n)q0ElYGuj%5k96M}c z+1qiGv3cu}kBxL+UX2B{+h~0lWL=MO3h-Ex{#B+wnKz?7Eq9ZN%<7#OEmXvM&0f`? zXeG8;CV#X$9j&g-v%Vvgvw}wN=T!ceDL!ZFP0&@ zWvX<;V*Z7+b3X^;N<&++~eP~u+TcXf$$Rxhg7Zo?{o`v8iNS> z4u_Lhq9Ms_(__;3S$ewqU;7jED-SO}i^(O69R(^q$0Y6;5L$s{_YxN0TxmSf!vTfU+Hcj$v>3)*&WH^wv0aj6+R$2rN6+cQ`nMUV%sj=rLRnA& z(&lAZSrBAQJ_*4Of4HVLn%8HQ5(tFLbmj^NIl2WwIiGw~Y9XD7Kr^3y{NI*?q+*+7uT zaT9WU*q&joQCLg`tG*MsZ+-=nhriQr2tNR#VLj~QTDqUO+fx&yU`33OT67`70g4D6 zN|}Cvv>ZlOf`1MkXz)oTVC$Q+*VkgNsT}Y$kA$CnV_@#qifZXjgfMX#2h?s3^W&LWZBi5z6wx6_t21vn*gu?WjNr`Ow51-1n9N!a z1eyfmvn4cOoLxRIy|p`lL&-N7$%zi;snONEuoE3n*im*;RZr?o^v#kmrr=mT(F3Dl z(ewTe3^fKy4uU|#;m;K+R=+|>lIU|c0c+x0P0ejCYPOoBnAETG3QhRDcC?$l#P+m{ z!FA$XR~VCKa?ZN(;UB3TOOOd?G^1OVebGM?Ky(g16*@bt13Jr&!C-EGO_!V>E zIr;%F$4t~w6xW%D_$#w#)Wyj}MmaNymwX!7TwBPMrbPB8dYC6>yU}|F!=If=2ms#| zLf9=VyF|O-eQRM8!nJDUKJEa*DIGbWT5^UD{w3b1K^cw^cT_8*nvzc5&7ND*8WRGF z3_E01r!11yyE;2JSeWz~B371qWJ|Lf3RNgG{UXQ395ZDgzm^)ES0E?HU(~{bZy%pe zrCLVy(*JnenaNIXxc>WWe0T5@?JKsDyiT0E=S~)zbJ2_Gu8r4iPmjfc1YB-DIKF#N zJM_^V5ZqHnmscC?OPn|RqAbLn9JiHhS&%%oS^x94d~6efHw>S`)rlNbjDvUe$Ci2Q zjt!}3<-T;6=KsJS4O$2q)>dWk_g5v`Sj|V9u17Q#)u>^Sb3ta4*n>`!X~iC@_{<0p+B2^?OzyL!!h6CuTF_*z9=c`Sg|xu11I( znoMM9lRe5ZIv2&$9t!CWqt~+-=r(!r&ZY6=t^2dB3pO?8>0*sC#$KC1&a~#Cq?2Y= zX@}H)?IJ~`NG$($x6NN~l!!89cWB85xXoj*O{Laxw4*^hw%<%hLm$EPcD&(V^#0xHUBlEXPIJg?baJ_;^j#xjz4JwETE601)C;`#!rP=D zY1yX&AwQ>$vo-C!BJc?>`0XX6Z;+mql5%Vg2vL{rPi1Z<668q6f%&E*GmRYkmdZxE z-)U#6*R$<$8*vTWZH{B1uw808d@rKD<*I&XnpBw@BZr!1AQ=or@Am>rYZyz~0k`z{ zoIV^31fNWx)Q)|xaK~tcGg)0J-LlJ^XstyYa=l7=J6gD|Fku}we#8#mm2LO9&*IP7 zzdn*`k1$ozIGXa`v;sfJu3LQe{hQ57;MC8hKA>sN2xMfRYaS&m4*iJ>zJlX3fEbUI zdXw=xD*1L?gcpm>E2Q8Wt#L+qXlwLc+s&`1vND5JC)mWvK{cqy)bHj}1%U4lDC}QR zo3toA!DlEUBNtnk`8t|pmEY`-UrWa<(!bzJw{)-jMpe;+6U#h=K;yxJ>kEw%Hcno5=Y?6`32 z>`@`|Z$SXD)nKo?J<}?TyHM3U^)QzO<_DeMrJWCODxaLduPzUYK<#MP{MDk8@t*gX z09hh?@9G;;^x-E1^6^rpjDb7KIq2nP5=-mQ`lygu+zC0;Cr$6ZBWy8+WV!v&B&$^Z zh%RJwX`L#uenYsH+gR8Fa>(R%7l%kwuV2#BI28;5@Fa@;qW6(S=hJI(MsTd0Te&_1aPJ9CtJE-04A|wpE*dH{e@w zFuZZ5^;2|)=eMG71E7(2Ch1QBK{4?}I55#+X3uR#B@kMVlPx>f;}-jCDub$tYldo1 z1v_iBroPAHqL_fGr0Sd5B?pKv?Bn!U_cADjuz_PeYoA>B#nj@#K7jx01nUaUt+Gr8nnMbh%n!kpEUX>dxzUmpGFmG?~o8H{7rn9us#S%+7 zen_eQHlamAr!5#-O=6T=B(Ke{t)-cAbnb9oSG646QKG0s@W^3O!AT!fDsHDrCd190 zZk$D#cQ3EO-VwR8WHkp%$LAMZ16~EY=rbFq zYFImpoZ6`@Rbab9o?bx#!MrdV zhz~!y-EeVmteN!hptvQY2+%R3ec2m52Zj8S)lU=53=$Zy2Y*jog>0iMh$ z7|$Fbv&o{z<_i%n^{~jHnKJb+dU|pf@GOWhnYihVP^li1sy2P_cK5F>=aEYuA>%ly z2dr^+=AtrB0ER;U;|oLo3b&a#w;ZT48A{t0UEzkzo`ukC=V@UJt3v5*{(MaTi6p9D zNwrD{5S%;8RpnST=$LhtzeA}{t&+~;P=7Ts@vKjTVm@2axHCeJf8}5RPmg~tZ_ztn z092ml;${ig8a%SOqlui?5on=^SlV(napkZ&25C+`{70XY8?JQ(N|d5JcPIlVzaedN57i~+^e!e#`FbWiUI~gF9Do=bJOu2BQW&b@G*nE|{$`8XV zN?@Yn=fB-@Puh!sH}^MZ=k;|3;Z7}D7B3XuO;jG(z5M$5uf4LFgDK169F|yWG8kV7 zX&`*X@QMOXB=labR>|YD%H6{iUH;*0AdvZm23Gh`%$x^C=8NQ7Xhq}>C9!Xp;?y;4 z+?0!`-Fe}9j{5PQTv~4@O!1u+Dq_MD^(^AC^Tm8vNJ-=UCsb_ zm=#6@?P@9AH##m0aD~4q8Tf*j(W4t*(v8c{{NS<`!h+4_!2?@yyA7~yt{>7?tAF(# zO!0x+#D2;#NJgJE?f3@ZOh`XQf={<_H+H1c?FAVw6jfiNk2MQ3h5}@!)Tc+J;@f*? z$Dx(~L)Ke{wV_5^gHYVvt&~!rP~2ULLvi;4#oZ-9ad&t3;O-8^DH2?Zdx4;V$vNkn zxp!vr@H2n%@NQdc?X`!7B;}77ph#o<*m#cyvmSY;%6Nwqz0Q+?5~h@-nx?wz z|0kHTUIwG*zW!$| z{!ev#;P-b{{1u@_M=bI{^we!KG14DP?$-Ke8yO88%eg=M(Uf^|mUgR*+1%wst*soB z=pX}UeI_G_>3n(KRqFce9K z)#S6eBHKJ}zRo*75*w+mT8s&yvkdkj(#r_4@Yr(53P@`ZWtzG-frFmmxSo z*?0qE(d)oasQO^Ht_(%i^z0u`IXFC9WXhv~xY|_?lVz4{5q~Klx5fCFYk*q5+gsnA=Lj;x>g%jjS&@8*B4W{`O^!bhdASN2v1`Yh ztJIlq_*$71c8{A%O-;>H=F3?b>(BJ(elNM^zOcjP%U|Bs{r?Kxr5Hk8TPZF`Ar9@D zpU_lq>l_UWO4f;KL7r7pM!%>xHZ(jy?zbHDVu>wu^i4IPGs}Pep}#OtYxPa0rK#99 z7tgtMKEsz;o-zg3mY?O^jaM8!M+>76HDRwdOE%23np zARBdTmErmp3n=ArI6~Ozp3r(B~?${ny?O z)1Hm?%Sh-T3dIV=GtFTfkd|?eRjZbe;U=Z(2ATjLJKHo3<#be-pJ@gna(6;5Sw!|A zn?4V|S3m!b?0Mj(e%T**1tb&va53-_+KidEU@m_{dOdckg)S{Yg`-|jZ6UK^3!Pn= zQEe^pLn^I6=!&CP`Zz)a`4dOaP_|8~)wRfUc*sX+0?Y@L$=wQc62g$t`7ZrS%AiIHdSk8flNL{=Bj0!= z0p5nCRZ(1H3T$Xc3o&U1)aq)y5m-&UzLs5t(}G`Wsn$}4XwKl)o>^J8o~hEJl-32o z;A@{x4_};CAlnaqevg!@cq%%X`R#0Dx37Yt)Qp^!_9h%BV|0?QeKZgbx~q?7+n>3@ z>>1l^{PfYK@Eti{?w_#~i6?wYpv13&kz{hhhLwOSD}Ma5s+kaVm#6!t0#ioQO#XBe zGvnx<9vm?D(zxj-Pb`;W%P0&2y(WgZs+q+p=y?p))aD9muO0rcQyxF2MYTR8pGRdM zj8z-yv37)!K{o44FB!)}_K~3Xv&YhtZl?I^`x0gorYBEL#15c_n1?5-+-0!CF4jrs z8}YXph_;k={ZyB{*FN`@&fW{f`q2G8&p%Tv+;rAGT@arecFoHI!}k(Kk(rw4S}+@;5TL;MwwZ zIYrC-{{u7Ij9N8U!$d}w*@lA5x&GPVTeMI@y$b?fBL(Sjc~pt|>5FUF%IoWA^N%NdQ{9K8mCqWiwdU!Xbe&~6 zWUP0@bfB|!mviQp=_lD{^#%kZpe?cmLi{hPm`$$_jp)~I$yAbr79e^&mhqq6C23v8 z!V@0uPs_%SV@yYId29%ygddZkkWtaN6&t`@&!)LjyPcxQte977+(kS$3iSl-8Jv)p zAT~V3qW?DkKaKF)7;)bs%C7 zr{k~a&oti7AD@IU;j4q|CvW(2PMm*X*ojLe)q#1e{ z0-*saX#ch9diTY(frWhJx!WV-MISngYiur{Lvpt32h;B^ZWI9ZXj$DBi7wZyB_TXL z+656eM8E$D?MJE!2=ey0zFO%QCWcR5qnO@ZZ~Q@9_0(>K1ZiE-zwVbx#yTm7T~1X6 zdtoJ`PMwWA`0zG4=!VM>^nUPS3vC8-vIxXZxoywBV~nkC*}eL!Nv^-}6B1>>*H8#Y z)5B%@Os*zJ>O7O!nR0I5=XyLsDP3*S(<_Nqo^;N9jdD4{1rM8x!y}? z^m|+UBNE+@*cZmE)TEE1)}=f=Juy`GsF9@f;QA{9-IGw~$@>J$RO##wxzmc77dc8} zrG%$WmCU+7sr-2f)&-D5yXS9cn3y9|Q&64vFxYmr>G(kX4SHhhKW$p#+xt!V2)S+O za$J0iU$-s^<7dB++pb1~#&SOb)rBHEJ&nG~25=P1BI;U+5df$;Z?9Q{5NVHL-%c>}hUMYNw3%N^{Uq|PtomB3l~$%b z6`g`Fv7A9oU98JwjH)u9Af@}eH+ASJKR^5B#{Du8?f~IF+gzgeVWmcJ3`te&4r6gs zxi;Zi^VMEl#C4|A-Zd=TA~)#!W(G@lwI+6y+;{5E5OvL}#1shOZ!Np)YTL5120I%h zjPG&I)y!uiq6PG3YBjZaAODBd_wR-w^nV$jkpK0If2tlh&%67^l+iyzZfK*htw8qj z8rR(lGx6DGt+)45;PvwQWs9!NZRBF)0{YR!AHG0DP+=46NLDWH?CgYxhqWp}Aeg+- z1BI@cc+S?3Son7NaU9lz4Sj&kpw0Vp13FMMb4yUHE|I> z$n+M?ls$anMoSSr3oO^7h9~%CP*sgX!8HEy`BoO;ubOW>#bwkD-ss+B`cKvsP7-?} zkAbHn)p8|r_(c;5<7R&z)C>5+Bg2omB7hG^KI0L#N5`INI{fMklcP8Fca1Z8F zXba(>um(CM93p=*G`hIp-Re(QB6EaTEHA+phi^aSrl^!l-uzW6o{83lZ_uVE?cQz8 z1LBPr&`Ci4;+xHR%AVZ_ztJ=MPi<`;49`CIxHbnLKIZLIuVaNBv`Q6!<4|vdU_}bP zhK|B+?M1{9gYL=9_+Q?w&7T{)Hc^eZzmXK}>+VeUL|pXK?#BF>;+VV0Y|HuR5?UvE!R(s#emB9tFjP=`E=;;&Q-1W{P z^=nBDxXvi+YyT$S=NEw^-P$=`?4>rkG`iBf3~YyFN;nPc4+VP{JX!JOM!n^V3#K-V z-r|waJ+ncI=ZG^CT|F6gxjx> zXE&f<2!?T}32~@N`ba^^pGXdlgtHyQ8J99gtKY2ICk9!CIu$pyQgsSu@wpcuBRPn| zLB+*-yDB^|vz(?;!(xf)!KfP*NWx)4*Av7`E*vdyI{IOA(~#X`YM)0Ir~7law=80H zR3f|W{Y6Tly(th#yLUhG1L4w{U!b zD7bbZ*_rSADlu+ZT*JyV^oH7A1GU49hO%Z^##*0=a4~v9k}}D~9qgs0x{xZVxL)_j z2Yr#vU_gS*65efmxZRv4?G6~s3X~x?NnzW+qj%a^&3Tibz(2tQ8CQz}p`LL!^a@zX zA66v~J5>BaXaaPqYn3idVfOaby86@v`(5xwyaUUZJ(-NU-erxr1+K-W(zo5R;Geu9 zNFu&rRo=b^R--8z*A<|gVWLYslwiutSw)cVwTy8e{|uMkDCn)C&1OOW8F%si;RvG- zh=-To-3)i3%_)%!@wft=!PF*gB;IWtrSRF}Ia3 zQ1PIL_JfLO?2($qq|6x2BwM9^eAOy`!1$VPhqd0u)YC_K7GrR#YrLD^`~B(a(#hHg zZGFK8OK)(Fx2u^^z2z0I9-O00xCkGY^osS_;SC{0c8eN%hOylKBESpcH{{mb(?&C` zhQEv}X{eZRxQ@v7gJQ?EfMQocpzwDQMrHO}gmjI+bh?g(ZT1bvr@L1=&ekUJ@}2jd zxg>}@CE)P6lK@^*zI5^v)NUamM^7iMYSJr;Gmj>*glUm0nS1|uw|Y4HbIK5%pj8t{ zhnI{(^hnVtLE@b}PG54=pE&jaE2hX-+e!R_+u6&8B|8cF@97`H$jBPmZsbR@CUaV+ z_SDGw+S}XHg?!wLOcPYTg+4xGpcfUyt2INP z&D$_c2X8?cDpQzwDx}#v4)j4*^g-WWvktLwsO zeLyZbGLE2%k2EPucO}i940769zAXGA-{H}TSW*k!7&MyJ7zmcBc;A-0@Zw-Cbb!! z(hHNV&bLl&mgEZW0vM(^Gk%+?&g=Hb8Jr#{y1eqtx1z;H*a)ul5>3ZYAp?htjC))N zU(hk%3r*sN9E*8syAsVn2kBSCzjOf@#)PMX!-$T1FQXX75)u-EUVpz<77?u})gw9r z;2w0QOuwFdkxG{n(BHU4Ya-~Cj@%K!wtAs?iShqAbN9oM-71P>v}0hT4Wo-mcK}pP zJ1~{?e(ykJi0qFCZ_63c17oXr`hgk#VaY;_{xcjZ@Lo~`ceX>l2{Egz%wl6s38_T9 z$YpHFv&!F)Uo#K7TK-mQ2N<82C>afW#CxAxm8|(^_{PHXsqLLky*qOKdI(ICog;5M z#i-9+sA`@e?_3!Vvr--==td9QvV%Y+mQLA~1(hXNX!xd#%X4KrOo03Uj{RP7E<@FK zJ6eUco)lgmpCqM*cP1lDx2u+@RJ1zY z%hn2gsBsT$%p|X2oajFqay+6WjU=;>-dR|!xoTfP@M^J(H~S51vGnpzYw`7pcOLWG z=c%3i--O>zfIF`BaJF1eJF6M}tbFrCCM`KC*e_o`4`$}`|0TkIYz~gI*UR2qMNkXl z?r%u}IO=%uE-1zH7hj*}cND=5K|8_{wdtqI)aSITm0ElgxA_5q*K%4!LlV_YrpggWQ!=$P01?6feeas6E8LQP;d8* zqMP=YtO20WPqdDVZ363z70Ae!IfO z!^R&Nkx@~n(C!@nnvv{YG42;tL`B81Lk+NioSghb*N z+3%5)JB`F~fLKT$1e_9O=v( zgxtOt^nW@GfA<3}efY@{LWi+^$nvwTOKTR{H{y=R@OuLoExPCLyLne5(apcKu7O6> z^#Ki!i!DSfGv(DdfWJnvfH#>}Q$$uV5$?q}a0v?-RAcbmTE6X3!Up&7Yw*KRo;B8B z4AAkrm6~nN8hWbS6f_`c-zjDeoa(x0TeXfhGa5Ke+YpW*?1m9-W{U#ZqJSr zDyLs_+;a0s9Mu!bpw*|2q-4~6T>a#d;&*FlIp&9IW(wkQGk0sa0oD4_!k)|_@~n^NfvzI>qg$$ZzSz177_OXV|z4m7@OG! zG&f4`j;(WF39h29oB)*zA89U5S_3vaKF#Wa-qn#9O$(!`HXV-|9Gt!-0P{ z9A9QdvzIy0IYL{)c1ih&v&oRO=BbhE9m0sqjIf=mFy1NbZx^p2{IC!h6bI6sO}Bn(kk9){}xC2ipoN z?h81hq5tKPm-VhMiAlFUKQ_az+H;eJvQ(v$rt?HtAbR%EJQ)k@b8X4GU2I2Q@^ALF zhTWfqiGEj&){b4=uQuDLXlrY0JzsKy*L~C$_%>!*A=i?F{yt3(wze-%cUATN7VKP{ z@yC8DPj@4$<6rL&?4WNA+E%bmf(D?skd-wuW1{Khe<8=#352s&Z9pGxaM%IjGNoSZ zDcPZzM?boL1}C9K7-sx$Nk)%LO`Ezz27QaR9$D4#{ipMjbNLawjUII^x{M4)4tMi& z!?-!o+9|_COOI$dHfdTmkXn$pgq@kcelB%SUTq$Vjgz9`Y8H-J3r0Vo-f;8y;M=PA zLsqr)wwo9H)^e!hDJ0xOgps7LNpLF<_Mb9}1@a$<`DE(RJ18GL=lQe8!YIG<1kF|W z?p;oB`I(dMLY~i0r%V>7u}1=Xq8{-d40XdNv?GzipL1ER&#;=DUyBg`*;Tp?!h0#7z+$-E^4k^B!QeG`YeC7D{>Rno!QvvuHNE7zFS125!6=c}d-Z zGu(OfLC2Vfr*_7GW{eL^nFEi$9QvED9E35CC`6i&=<>m>y_!*4tM$oA1%)hbpo&C_ z9}Kl=YHV3?vCLXzWMraQ=$E@9s>`wDl$esr%FijcrdSY9+0kEln9xM@m2Gb2YRdGYF%lYg71+)jX^sA z^N-}yvBTGH-F4=Ebo$GigvW&E$|nyTxKmjY@@GEQV9^!>H9^O-$S_Kg-TM12<^9EX z_uZ@Sw>se(x^$`g3rOD8xc!9ex6BI9!qag>0&{i+eRx`iBEA3}MSEy96&zyg0h!-- z77Tft95^RyZ$pw)l-jb~!qUv?;Q8F7!Y$~A9-1VwmE?n;TY|zYJRW%OLhpf;j=h^0 z?jzmCwzEj%bWf%`)$YWL_j(GHPdv5;bA+QHaG&h(G_OY!!R<6xP>z(%gTZBpW!SXL zwdGI!+8TOH%b$q>sh-43_yp7Kw6X@w!pH{}kouMD$$rEgMFKio zX#@rJpNiT>C~HHXXwZ!Ve~&EjN>*ND7%2JG7P= zyh);`u!E?##9aH>5YJmo-fdhE_Eez(}I6?6KKqLeGhV4i4Q{pI*R`mvQ{x;XBaXWu{h1^wpmPf8QI zfsP+8>cztcflVA8Hts@KQTITai_o?Ald2fp(rMxzkHq@foWvHP;E2H*Bt;zHZ(ZIb^C$&Fl&`prO+ z|E;=h!mY3hEEM2~TGp8>TJM|+E? z7>My70p0)|4Z11Nr#(V8LzsEX)-kk_1^UH0DSXk_2DCa+T-~8`4_DzGpncgCG-{Q#I_qZ&8u2A{{%-1IS0tz&h90u?f`H7yF<|FFb1ioI{#}io zMEtQyu=bgBz%R^t0P;_e$NPZ;cvRIvY#WE5sH8Gcw!9P%?|a~Iz74pM)BXIWe7sm_kIFcq*Dq6# zAjsS*9xG3lyb3|sZ?W6<`)groYaeAfQQ@c#L7+aNNU&PPH=kC-F1n!+zw4msFQxbk z5yJ2fDqQfMR^o12@zxsr~sc1TG%7No&Q4l!c)fgebYU6dhy7?PnB zlG8m7r6h7C^7lVS@@M>$KRuh~pMGqtE+~+>p-YO&PgJOR8m$nzD|*d~e6pG9Vd%c3 zg3SrLI8FVc=jRgRfLrpT^b$XhU+9kNF8kwHK$p`VqWA65bym-v>S; zHASPYMNsr$$Z7vzwff84r*=woR~?eY7GWgE>09Oy~Vetlgg_ zn{o~-trRP$KU21?-hz<)8%y$Uoq1oY8cqwV3%9>qy0j@cEl3H3-W2-?zkc8Kct3ji zvjB{iVSdyL>*uY(e7f=IxR7^MgDn0zuM|({VX2$mrEOVTC=H_YZ*IwrZ50N?Z=Esq z^|n|Pt@KBNMp*B>o{s$v9x?KUVP5q)bKi9kS6BnLJMN{Isa{aN$tmWy){-bBXAT-% z62Wi0Ai#2e*|D3a+-$MKwp~Lv9GP;u(RVqbvO_#gQrs!|OLGQ(3Fh7Z)P`qh)AAcj z*z9CnL6u$M7)cBl;;H4oHa;%**&L_i=g*(2Mmkxuv&zS9lVc@Rq-LhdvLYj#KVXt} z7&+{ZiDkJl7u96X$NrS?VC!^-jvncj$9@coo!5RT8l@V%DN|C(OoFS8N^>-Mfj^qg zLOM(u-Ki~$RK7vGn%_clIG?&&NDfOoz=S`^3r+fKxUQ_+w^%XnsB#B#&?sqd%Ss8<`U-Nr4A81|GDFoWIQ+b+#K%nr7(#@(ATPUQ5P{sN{G zFYe1N#RN6vXBekw=T4w1guj9UyJxBHvx4lHpH9>q&lQZ|^-rU=^#It`Ad-5@^Y}k& zIIZ2#ECj?z6kOZ3H>NW~^!V!TX<;VaA}(cVV;1Tb-*QR!60lCsmRA>BSQACR_Fklv z;jcuGM8^@C2_urn%`0yOFM4KL*!JI$i?+fgjI0>8Y#bM?FE07qZ;7H>}UV zH>|%75QG&%e~HMsnec^kq{EvcC*1-xO{GHo1&*Cv>#(yfCc)1$gEtn7zxQUZoV=4> z>EY7zk$Kt0lT%VetZr!mugWSak32VxYzZqxrKO+lyzroNja`KW8D54!jHFOc#FI*P zGUfBV>T3_$?Lz{IVjc?FbS>Ldj)0c65=5AQQxifzBl2OsgDd%{)spnKJywb1`>b~)q> zU^wTHd|l%4KP2r6c6wkOI_MVvffBEV$*{-)#IVH&qpCGm(cav@CG|$Vd6@FQR;CBV zjw`W>LJ(>syS%%FugVU3H(_cj{DS)!8;#q$5d@VugYF_)>NM@&0pS!2+|DdM^7BZh zOQ6B?H%XP-Fn;uYf%lA&YS;rm!kF5p?+52QWU2wV zDtMR$uTeo(pxLoU7*Gw%gx4L`votULeO+#yh2^X3_m2v-r()(HesTi=?952ucELLN z@#==-Ruk8_1J^Lk8r9X<1)cgzb1*2SW_EQ6;UX=x|5cskV>-qlFvu>!dXcQvZj93| zuA32Qd;5ftRgD7G=5A>W147wuc%I)?z!z(O5!dV@V6u{o$=hI$eY-d!q2>h>%fLCf zVqj-nxA)XaqcA|+SI3VnbTP1GEG*(JtN)) z5>jb@QFm>mVg&b);|wq>FCVJhnvd!IY635yO(faFePAah$5GM?RrAYvKup!s_Cvqe za&!Bag}A%H{iGZx#b&gDsmwyAZ2`fn6ZEo)9PA(b_+mc*!BV0CH-V3O?q4J3dCJ`( zbd-EAcqO|%X1Y8Q*(PMm49x=>7!>smi>%qJy{HGJ{NWK1UsarNa)qi!qAYgZAp4z? zuj9AUq0qEDvI-`Ph)4)NjhR;Vv%jh8DE+d-I70LtiI^vbIJeGFS49fLdnoJ zW6co;=(2m6fBKlx05H<^>6!cWKmiM0&oe_~kQ?%Jl6w~vc3qf^Wb zmQQ1rMZ8|i?=i!kP;H+VJc?tXk4!VXBo%jYad-CvFyq?I?>#WQDhK_;R1zQbCRlK3 z(07pqThf_7kOJ{_H_E+EEV^|0DV<#ecGqVIM$Mb{b}6-`F08uIuq zInza&!370b03)3Rhdo?Kje}@0M1=u?8v<23V?6oI z{KL=hJn17|xm^Dhvw2lrwa9qvygopC*aCz^(*03c;;If>MY8A_P}m^#ZLGq6n+fHV zeY2Q1a8>&pXgJ209OdVa|8|FX1w~>K61HPtHinUvFEK5ep&0*f(r-k%eGjgTZNyE% zKrylhfu?{YFTLfH)=;238n3?9&m$W}Cy1rb(HS9RdgiNhIW47DDij1?lQBq~6s46& znbfQl@PB=ASdBMB{9>oJ5XST&eRVFq!IYD7@$~exca!cUFYUM7e7jjG^I`&N4Gq(& zgd01Dwz~qi5w6{Yg1IVSKI5@zmh741x($E*TR`5DY)i}prIiBQKt#YUdGO@t`WFH0YZo>5&SWiw9^sRSe+eOjs%6H-<#+d%TchEg#Q5b z<4@KFa->BXfRnMB(%6g*id~6QTRA_zPpeyBXo_8(uNd0d1{-!qn)L3&PQh~FEY|1o z^Mt%5EWd96M@Kz6`fAe1JG871j2%>}AD;I*q*#tB6bFPuzVW)XQQ0)E!y30D7q6ZrSo)2~8GsDk) zH*`uvr(iWfuRC;>A)>hv$~>OqIL-i)fBAiA;H19^A9enTvRG6_J!*LQS{#-^y$NCZ zV24GsZe5$q&o_O?c>zx%Cv}};Yzjr)m`Q+UrQDp_K@PSOy6HIf&$&|3dzfDZ>?N88 z1tM3Mpa_*|wmbEtHQEaqUz!3wEV*$9imWi{KMcf=XbfCImiOxiFz;#{us!Nz4%G z@Vf>u*V2w$zIEc_3J*5a1rP5JHVHPv}zG^6ByTq`;YXM^g&0c0`t>Qn`8n)-EPMlYZgypaB$}ZjOS@wXw)#ENhP%3Vqg2$ki2csY}Fch@thRnScgdMdJ?#vrf zP3$Ac%<|GYX7qoMG~pE3mrn0TT$W)Qc`qx5?}dd0C0+!7-2*2|gps?sk=eN6;?I__JOtPFYVKLW zyI0;7ED3GfFQ9?cS0!%xX0EtTV~MvYksXgP_FQtD)O%3Sm9T!U#eg00FV`$ETZRoE zxp`fDv3-F^1Ns*D>Tz*>8h16G@#`oRKZT4dSKvC*Ms~};qx}h;*zvQLUPrlviz9=} zFIdN18iB(;T*SOD)TO3*u`mmEB{V|q9GEDlEwtT_KM=xi-FW`c-z@NfX>{QH#5n!4 z+tB{GVt)M|ktLNa>ij&#PWd90{Zr7k6(@G4fx##Df-{I2#P3!-%SnrPn_M`scSjm+rH%E&a1O-1&;h5Jfvm~c7jLSMoh3`+V zCQrnW)Pt62cz$7c3}Rp(HoUbSTu9T88{&u^WNmtG>H<@im`leteXgOVNZHg=kewjc zWP*=HoIHlAIf-({sRxPeMwT7=^QFeatw~*Zb=MlyPXdU^qEWMO81ODyMHfw{M z0FvZN?O0u&C_{(61K*%;(W9mXAW&lQ;AF(`YT-iYhiiVxp;SOJhIl0~-v;}FI+G`o zw6suFQS;SG7L$FRCLa4Z;62Niw$-Y>1xt?UD#cN*LANU>p$KCK#UW|!9eZmS%JrGP zq)`G-U5Poq@8r~>j|;P5K#N5U`svsaNGJ7}tgBepGs!x*JvvZ8*fXBw6Tr9t|H}ec z@ueMo+g6)}BFdy_vveXJI63mKI1E~R>Lx9VIh&Mhtcxdc_v0w3x%p5CH3^mZ0r2vg z)5F#EL9766AEvBLRHRnd0fLmxx&<;cn~h&>rQE1Q?qfT*p|Q(7)wF+zI70>ssT_?B z)XFbUg0c?xw=KA_Q7&i_aD=fviZY9MYbYp3CJF>wL{P=|m2v0MO0GqAOjOa5>0Bi= zm2J$Vn?%jOyQmktOMjQ);Y|m`RbOG!PuNDiRJ+T3I}3+;m6j`<{~T}1Q%U^&4$Iy{ z++LjSPf3&Xx33}}ecYhyaYzrO9wWecg94vw#_993fW1@Qov} zCrNZbR?v>^EXGq=$IjIVrZyXppfu(rfDcdFWN&wo*I%E4xm7>Gi;hA=FuRImnb>_xQw4vO#Xn~}d7YfS_xV4aK6?O2uj}i5N3;K^ zRZslV%NJi{eXu`+BqCPN)jK2#qkeWUf%^)?`ZbYXw$us3JG)X;prq``?+Jl>{lT;m z$Cm)naga*RD3a)vh$UD4$3>$B*KWuyPGlsSih%*`c`x>zYxb(j^AlumgUQkKQvZR3 z-k+=R6jJ1NQ1{_eUdxa=7vm(aP0Y$+HJj1~Dca1M@h=2Dre4dil(h4@r$~w=>t)lR zQn)|0{KiSCH26&v1?79eb{*fA3l5`mo|u>IwgZL4pV18*`^FHEVho(LkIEy+Vhvmd zuTL*{O-?XrIXtpC@B0|gu*#7uHm?F!6|u7GZ--X&40$~!@J=*y+lKT;@R>*c_`l=zhNOpUg>HH6wK~*|K2&=Eu zd|4vSk{fwHO;_$o-$NYfvc<^s^<=}0KU5r^YqoLnz9&q#s-WqcK$v5jlbMo}{^l3@psx~8 zIgTn=RnuQ((VRy|>R0-JU&sa>wf^a#|NRptFnbjqLzgbzzedQJ=lDq5DWsexN!~7u7f2>5Z^X&7# z-#eX6@7KeQ+ZmfLh94T?>tg*wWOaK>LnzB%-(9N(ca>1gwZJ5&#L2?dlKQhe@gZ+d+{9QL- z=OBdG&WUQzUbt^a4~uoU5_#S(l5L^|-sMb=ZL0tsjbfs1sGWR5f4u&8^Si1I#=7Y} zYHn}M?@3y;_`a2O!}mBXk0Jx$0O@6t2V|c>N>igTyfZ97V33KDBX1$8G)JTHStG{ zLFF--G2UYoh2R<#10`>CHR{H-I1|5T9Hx`w(&AAWMnEqXlYa;PEXrznEqS<+-6qfA ze@WXGr!S^bw;b^nNv-+ZF#lkfMzE$r^l|XRI?I@(=99t4;Sp+fUhG%O=_}W|;G7I* zg{G7OfS<@TBg6K?G#_u5+efe+MTih8O`Yi=@)!$Q^p~oz@8>74+C9}ssmv*ZFOS`9 z0BfUY@=Z#}GiU#{-`4lP<)!HYB`Aa}4+vGM9(_-X8+BFyk7}buO0*wMBMU0M#uvfd z%U#7-U?5p&&|iR~nT-hf$_iB&_;#>o15jt=1cPZy5-sr^GmKy~YA>nY)6;E0i#4T6dL+oh#F;ugu&BM1dSk>vZ@qb$&hewWg^V;`Xr)_ zN2$a|{J62CS2*=zu8e@J@87iiFVIs~$o-c`o!!6+V=r9)}I|6w~}NwHm+r4wrRQ&E1Mw=dH|9f^TpJ-0#GTXLq^oq!4?_=H}_+;~D4a0-KsODOy zIV=D5uxr45PN|Zp@cLB-3h=(-f5ZpnH-G!Ye`H>e<;VRe+Ie=Amk6$Q-?ZEcRw{jw zq&F3d^>_(Rp_zFEeeL^X3uC|FGdq(b{osc(b|yE5K~xZXwKLwH|jp!qw+E$Cy67cITy(8nn$jo19H z2wcfpm^}lgMjQU~@|2AIp4pg!?U57OZM>dw>}f>;HJk~mPtB6_8Ggkkt42gO+{^R5 zmT?3a6%SrE@SvW!Zz29GoIMt?f)N?!xZZNA-u=C@$2!{qBd=!K#<$!z zI!Lxtup=X{C?@8|JuV-md{?Z%-j>&0jZ;bJ%>=HxR`1YsqAEVEPC#EtW3lFl?ZWps zLZ}=Dn*8s6)J5&4TwPa*XIc?sE>jvG39{toy>JnRhaWjI^DldvzBvs;)CI?o zCB<}MQ0Id_nm+6VaY7l4o#7i&Ylh}G+yWc3e|1m*X1KO`R%FQ;1h-vZ~i=u3T+Md_}gm9KVM9PQ8e&GvjceY0_m+_>=bL z=pSgBoa#X4U|0q9;NO_d^?WmTo9o%v-ZPAKGkftC9{R)%0DLYu(uz2LZ63M2$d_Iw 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Ⓢ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

    tpx+?<7&1Fg-o-%*yv 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 p`oxN=H z7mbrhlp?`^lfo)bl!}Yyy)PaUmlq|AADj?B+7;o2A67<8y1U|pb&Qhy5WszPU~LIm zP@Ni!ncQZ)WCu9W?SiNNY{JFF`{|fGi&X;97Ja{f`XbUdtS{<6)CksalLoB8Y#{fw ztiGH(d)X5)KKK4@=6MWK_h{V{&)JvNB+Y2G5PPk2+f_Wl`i8GqpXk?-+oDzxpGwPr z-R53#7OvEwEAK(D;qF~^(KfCK?ap*LMNVs6OG~)AY8s%_*pfu-TYXlzYO&Bi$B{Yo z?htV7`vn>gEuY-y5N+x8!pjOJw{Bt@)1a9q;Xoy&SmT9w*Tn^B$a);C-;fgRgk&k$ zYAZKl%pz0?evdRc3TqcOuO3rmFUnt;d^w+aj^F39)Mr1wDMa(_dWIiRAdQD5MV0g$ z*qTMb=~S!KDlxphZe>}g1V~{mu{C+{&yK!oW6vl*i z71s3xCV;9{Oy-pRI}VAn!H{0%#bE-q-!}$i$Yrg?J}-qOdho=H;NmSAtm7B<)l7Dka6O>sO6g*FNa%#6xb?!H6$1eZvb%RVH4ak7?eW=lI`*)@`pZsM&Yh{&k2<*<1l0x$? z|8o9j{aA3PB@D<6-|4(wy_BpyI`${VFzKE6x0i$Jc&}Ad%oL&PT66DI1`~W zoznV&ag}Z|1MGt{6EHSQ0!|fNv7Y}c5(sM2sn%WTgq9{eh;+1mIJlp2+tTZ%>hQ+9 z=%u{&2xKoV{F(9d!a3ApN*1!mz=SuX+26!SEo(K^a?T#92M34=UN8nF2QLm$i)7)pC52#{kZ)Ar+?d{v3mPqB65tHL?ci}m{UKUs zM6_VEI7SI{A`t@WP|tu;`CGj{bvJ?4as`fiwol7@-`VVrqxI^{{=Qy_c{PT&s&G>}(12=Ixy~;P zt7i|o8`RK1=yz%?_Zy}8GLYx9MJX?dlvJoxCQvL2c&0Upvl5<9A{>nW4Yn5gq*9u* zUV6vYyTK}E@tuTzpnGAA@w)`^p+`t~vqfP~^z1fu+lo;`L zy~WuFw^Qys+3z#t_V7&gFKmZ>^ZL zahp!Vo<}JWdRs=G%ig$Dbrj^kUiovP1N5berDB=vje_RT z_Zp7t*00sf{`*;Em>u@(2Ymb*S!3-lcU(D91BO&btRx6=JFfIZE6vUhA)ef|C?VZF z{OThZN!2a`ok#t8bD63GM4h+2V1$RUYDFmmLWB=9xw7O4#r$bKt<9|qP6gVoh;fc+ z)FuwFH9oMZHP;cQkk%|l=k9tk{8D2U7d)~TS=^EHhxUv+X_hJiDHgcOH^QJ2)&Z*{ z;xW8af9`O&WE5}LKWD1_loVEMQyJLb54+`cdMDbpe)8ceZ_*YQ&Cp40g_d&#m317T zPvf2Kb7J>|M#!z(RM+d8YLV@ti~2rv(ZoID9WmB;2XecE@R)CjiBZ_9bc4RH2LyCf zZx&cWg$Kc_eh}!ytyPzUC)Osvk-G;_xMrcNv}=f|ytn@csil2Hsm;eaJYhA>_4$QU z#O{NvF|Wt9kIH?D0Jq5lrFsC#(c%M-G1f<}I!RII)T$H-nkTHa5p{H*6}3; zu7T7p*=Q(li#BhwxR%-G(I#`sB*sxrm`xI;kabnUWcEl8e0Res)(RAB+mafTJ_A1z z)g$g!T;G7FQhjGLZH@0IKcgPY`On*aW5mR-;h%+sVjc3yn}3S+DKZI7B&`Aae7RDE z!C{ZI_7q8Xa%R1=R}cdt*8r%QIAP}vWs)=3*1f}6ZAOr&zk_A=K($}bXx@k+{H~gZ zbkl|-Pn3hEgox9;NVv$q;RF~WfD@^HU;giCbZ!IyIx$rl=E ziZ%M&+m-f?k7AfTRo0Y+v_ky^g*Z-)ys2i;C%Q$eR*qroWfT}G?+O^Hu->a!7 zP)#SJ`5)P^R(VS%Db-lRQvyIP}xK z(yFPxIbGb~fHmM~!yby^!cHXQRJ?vjT&VM-0<|=qGdx^f3Pp!7YUlEd7))?bRn7}x z5@5|76E$d35o3~fGb>CL*5Z8xX?bx*@H(93UtL5WsRd50&jT2V&0C}gV0TFTHbOg) zKPw>(P4$~FI#N$0*xF2rIIj;tJq?XU@-Q`1s~mk0sn9PsqCF+*t3h>NGdA*e>Boop zfuPawgHj|mX77ad2$r_UQRW^4vD8)s|IDFa=;){jJ~86H@X8$D)ETz8RX^}rDtuuJ z{!3vP(?x1Fgp#v1^Wl^}3fspi3!^>>|Jr^unbht@{19P_z6W3(%W?H8++IkAFuqHe z1$17DCr>)3$d8eA3$k3)FW$vB%*!j#l!C^JF;NRPT@zam0Lcb%oO;;F0vL%sQ!4-r z9~&+s9yop@k@H2B?!l@Nj{&AsG=vr-dLp1|rWVl0YCA9Sb5DvxW%xspK~8mA4;w#; zw)?R9AR{;wNGhl%_{3(YOw?-Crm)F+(S}yJfp%UP6Ta*yO1z(=TO1xBNUC(pHZV0v z#coXBi$io-`yIe)h5N5FQf!(BxV+mUt!a7`D!u%>yaR(Og;Re5sXCA;-l*N@%kEs& z7JkXH`BA`wL5^_PTKucD)WG{e`_fBjuCrMb*XF5*RE~x=kB}0c&5!3Heu_z4%-yec7NVo ze5v?FvI)++7tbjmNSn9{+u9 zj;;GGm87&2u7jF_K`Onp83A2Md!vE0SC~1^W`wG`Mc&5C7&=Q=%{}|&Mhu{P^|vht z`Mw!ge4kZ#yL6PkjloZO{rJ9Df8=Ek z5n48_X~avv`-B|OkF+*etU8EOOfgBFFLr%>;gGqVYiZNFro(sR-G8B#EI5Jb?p#@( z%*f+|Wb;mslO*n45joHG?ug9WQv{-GN6Phv(wF*V_fU0haBT!@;_zzJj>^t3+@KD^pYACspt6E$+SV(YIooJ|p5D_!Ju*e# zl6O&uh7C)=yv0<6$1tCwl4?Rb_9jQL2G)fpw57=%x757#XO7OSYD97J<>;SfS|LU< ztX#gUP&!%4ruHu?{^ukFHl2cy*Q@e{eUaP>g}R6 z+Ka{K7kaS4Fl$)4q|dIvC*Nc*^D zMa`=+kEQ(_{xo&Bj!O3(+u&6FToejKcG9$53jeLN(mP@G%K23Gt}@ohs==5mxDgO5 zPMF4qZGl4+8!+o$pZXg_3*#)wxISL6Wmw&Z#g|*5NJ3&{UdNyx@digtQXFOc9{@hi z+h#f%JwfvMiYIp1;g#yntyXEcRw$Ks0{u+j0Ot*D1Bhz;?^8x)20aOnnVq+EIke02 z^7@s}H?vVn`9Dgcqybm$CHRceZUTj=m`%; z^-{u4dSl!ElPzX;>c4?SV_9!Mx|dJxJ=MMp;yB=MGr!MlYB% zdNjGl;}+X9E6H=96IXke<;W;$eZxuQ3ovl0MxF{BKBz&87TpzFg<&NF$F zOhLwpQvbmEd)B`1pE2$w*D_w4E}7%xZF#R~GuC}y;(tD&`nqc{t%iI_vP&}nLLwp= z0*+>N5h8G?o+(~GYQo#Txn)ItOcPFDE`+>M8NX$s60KnrEte$>(?anv}k z%1Cn*H}}+0_MaSkefpW}n+K-)h8I7B>Z+Vad?e9}1}=S0V)H;&rSm!-p8FxE za4bZ}X$EZz5c1x966^MpjUed=e)ak&eRQ)Bw!k~}afxRA2aJbf;SXVszd4S{>nM6{ z(aDk@c&t+DkL?$!{;kX_YlnV}1PNqfK3^V(>sY;YlxzwY!|0NWqVXU!gkCFT3ck7o z7B$<1Kn|=m{LC2hI9oi^N@t?A!udTt%8U`(lKb#7A{bqp(c8ehRlH-{lXhEGnNvRw zwThn=8?6L;Cujh+8#Al-rXs0Wsc81b-9NJ*JrHaSo$aLzQir|={V7i6C=cXg6;4Pn zlfH3S)$e(5C~9YRB|URcxx)>%VOU!2onxwRk6|?WB4KG%ndOq*WLVfB)|~cZ-hM1K zT2_VD+;88p4hX4#QB=OuI}k5Zq7J_@!0dzhuQ^?lPl5%InsUv(uh^c}Dh=DQ@KJNT z_vf*}+2MZ(Bmp4i^VxOcdbsnU-NjPd3bHe@->n{&-uuEBiy|{&hw6`X_;0h{!@J^rn_;_ID~KJ{Xei z@K)nk4iNJaX9ZjP_ynBV0ReCnZ5IMs%-i=SRtx?G#f$=_@_KpcVs&oecGgtmWdyV- zU*`C^W4S;&TUFL~j8OA83x&@Bqt(WGIyaypHvpnyLhJqS>Nn`f!(RGqB2tHx{ufFp z_&1a=kuWPv`?4OfA^s_7j`C2+bzMdm|MJB^a-QCyZ@nLsQe4f~%BQ2_LPnXQef^1r z)&GpWOWaLJhr<=oebJCP!!wJ9JC3Wk12`oA9ryFwf$=|%vg88~kgzxL&r#8B`Y7b7 zH77ei)`eN7-^!h^AV4N3Fxl8n9wgKL*mCO)0nLZ_`S@h0(URI8y(JYP52E53JDyFH z!fLOL?f(aC1IOV*^O^KM?Vg#X%OeKoBWk}t7Lsp-`vI=K3zq4+zTWzsT-#0$pj<6x z4*j)AUM>zC{%i(*H_X1WufPuddsOxXAXrXC_>#5k?bWCRc z=5s_%P4rt0=B1xB5{s2e+?w<4cX(8{xo_H(XhHTGyGUoJHIc8GwI%p!OGjo&U9s93 z{&Z$$tGA%=S^QeBLh?cD%Q?BzdR4mJS@s3FhgA$G|DQkh*)7E_7`{9bvo|-jpiWn~ z-Ox0C64)HS&N(y8^rT(mG(%kIg2Os1QT~o_$LN=H)c`MPSgCP3H_cd@q3CNiuFAPk zvSc^yABp9d?3k(*CI*{-;k*k?e4~^Nt>JXxA5ip!T6nN05-Abllk#$6kX=Vu`)L#; z+j7xGvI!!_>!~sxv_N45XPGkHQ=rM;*=C|-{sWcs(W#FeU$^;UfI5aR=zQO{Fm@R< zhF&y~vQ++@AzZ^rxIxI=J*R*XhL}P9vGg9s{lq%gH;u`hPdIb1z;P?_v1GaoUDOu- z$NrXHb+-!R4TAz1xqj#QKkdh~PUT_uJg1r~HVi7SEF5C}7jrbR^SMu6Q=ZKIr1#dQ zzu#h{ZOWOm7n&tVNDy&dc4|yk#kPVMIRJ~&ErT5w)E?EM$^GjMy`my*HrL#W1;9cCC_A$^6v-#}`y#p*x->F_TrW2l_PE<<|^ ztoi@md~~b-o$Kza_F9v)wVT5(@Rz$C6WTBi8Q^?nY}Wh5j7RV7lIJ(_q&lR@5nHI9 z+-zBR0JUTF*Ff@p0mss4|-h7M_8TqonDGC$=v9E|T4T(uEV1vl^WRIOWk6tD=w z@LmeuYohPeDt5DENPKd1M-?teZajH$!m^=MyFrw_c-euA`*SYPCcv7eP)28=$!(lh zg#F-Q`?aC^)4>u5_8-a)Ey4EQc76sap!d5wz7H2PSkEMc^wtWU_V?$o8*H|-gpDB_ zHq5jPI$G~05^A2s(PKgyN#SCk3c91wJ#Cyv4r4@5ol53%G^)49?^&~Ic691!v!sPC zNjpm?X~(SGF<~UCQgsf9;{}Ds8h;`7a7q8H-+CN4JcWGzXC2_(_#fbnt`fH{!(=&JPsj z9hU1?Az z1jlvaqi8XcW$}p`MNz{K)v4g}>+!<<=;lDq25h6W@Nz2Zq7)FX*ASXEB!o9FKqmyu zR8N6VDM2}JYvUVDguRbJQ(=Cb(6M8%a&f4(~ypEmwKsM}rpY^-$=05dGau?^UDM`V%ajf3RItS(eo zthkB_Nd-c3P(t2fclv+URq{2eGOXoL)&vh5|MIQ?tKm9xe7y62u;sqvnBcy#QVuD9 z<;5}#JSV&FAs<#gDl@SgMU5TH2f6%)+Vp5j44bC<5*7|1UZjQ6^((T+3Lr)%1iWC>$@( zI|ozwN~d;oUbakArMH_uUPWc2XlE3nL#mTCo)NWAm^5zn9#f4O3yZ~KlgDhTyCh(x zlJ|QK^dUF}Wafc+x)!GGt~=GT3|8_V?nN#^aNH}Brq$oP6VJ-l)f zm|XFS*~}q|m48+Jcc|I9Lj$`=iVX&vGLBNc#d}m&T=Eh!-y?i63o3LZro6*M>0 z;oD>w!OQ%C5y_g2p=Vj#NZ+0Va6aWB>;D0*zqsq6vkE6b5JsV$kk0rC=sVs#mYz(ETrZbMI3?(KH3&fH`-E>c~XjX`6gBQmsq6`{!%U-T|!;dFL>t z5>ZLP%b$Or=~pg&Z{=fz%V89wr#Z*y%8ij%L{wG{b{A=MTi9M9f>hSCjl0cE`U*zt zO}?gU9md)F2(EER>0@Yt!TkMyW6~~r`gc?urR_t3W^d@652@COcp4{jI^A8V35h!V zQMV-eZ%xJ&R>PmIUT!_R1>O1Du%ntJ$_5UM>cNI9ek7Bn;4hH_&AXg)ZNF41Fg1Bk zgmV5%Ubxd0pY~NbBUiLxyZMfaAw9?uc8;PwDl?d8W<$*8 zK>~_}ZaM6_ETPQCx+&9b>KnO!+Dv~cr*f2O-`8ZsW7_%6bxIQy_yeA}82}FFj<6=$ zy;_caF)UaSI#J%&%T$E7LR-A!q4E%4@MhDu8?yeG$PhF(=8zfXa5)A(c0|N-4O7~P zQz`*+2+A6GkFkAjiB!cBFYPh6IjDtuNL0m16Gmri?bwF~&;7P`z%|~AK7MG+@N@Gt z;B&UJ*jM9>OExipj)-X2cOJR9(jwr`soOnUJ`KF6uhDOC`eERUFmHIs)$T)cTfJi( zm$Rw?H=-~Uyi%hLYw7ctF0qn6F`ql5d2Ko4-o~Aqvw*14j1xXbYh`VmLo%tu`J&lU zkQu3~I2RNez->Y~?YKLk8FUcgF&ui1`$()@J#HY@<|Xy!_vhXlVV zwP@ru992Cy9hyaJKToG6x7&o>j{+EAcdZO3AR|B5k$ymwN`&dnng!&0w1eaCu>ZHT^-LMjfwAY?Az&QkH|z`lM}OZ z>1U$lej-V0$*epNDoqHIv_(%l=Tm)6&1;?AYkH#s%PJ;Ej2K%TR2XKUvi3--)m@x9 z?q}PVRtSkPT9QEuzbxV=J1o+$9-cf;QaQ8XKBNaF%E+HUvMfJ}SF<)aAX8A0gx@rY zQAM#gS~(O`qarlFdo%iTe8x#yB=1l5;@JM(+Jj7g1J$y;7ck7`+a5X!sM3|)LWwHCXT#Yn3*dm~=@y$eP)sO~Ru8L`pR7Up58 z$1_Ha^^Pw0ihQ3U!83l4*Roun(dwM1Xh~SD;E7jYAP*f=jRm^G1JRs(`%);_GQjaW z=2`rTRq2QwmYiK_exB{6Y7;8bPDQS6!LK}H!z8IE%6x52+}1VPA^4gq)Zib{ZA}v* z!Oxo_!`b7n^H#Di90!ou@*5mT720~@-TC=|)qyRkgeXdMcRZqR*H}3$SM>70qHQ4i z8%2raH2Hrhd-H%K*S6hTOS5b+Q!^{IvNF@OGBZuE$*iZ8%A6G(R+8duYKk~yW;tZ# z$`PSyX-=Ry4~S+?IZ&x!4&aQ6fD?t`(OUy8qVvyhWk8z2V2M6 z!47Y9k2G&rb(XQKhAv@XzCle4;2)FPXjgPzJ-=cZ_W14NaGBLxR6-hyOSCj|~Ja<%NRCjz6*48nzTd2np2QC)=0Pgkf)pmC-UbOi4Rp^J@NAb%dGx51Ho8vD-cKdxIc?>vG@hV24Qo!poV zTMnBu0#Y)UgV68cd2f>lW)o2kCv!3Txneq$*4kTFEU#I5T2@-#_ll^XfKAB%wdEU| zM#dSg&(gQv8D~-+QFxO%MC=e+*7R7)a}!dRw8@VS&6Eu>y&dTkAD+t{;3NM)RV11( zX#iP|V})Y%hO#IZ_qam4gHp#jq+@JCCU^RkVDvn@ic>-Y`mXrzBFjczBr!&JZ?2i< zIxG*^B7n3iy5)uB-6Q>v^e7wvb@mHM)^-|nK8yj#qr0;7PZmA2TtK)&>d;?J8qfIdBWP4!SC>m_l_FzH=Rl&Y!A6;9#xL= zy95v?9(T(-E5yiJJS#K{)u`{!fq-GNSVaoM(AP+O+fI+%6Y65Yb?T3P$~h@ZI&rUO z)jl#v0k~3{mDxLiJf`5+snM}vp+^@EB~HX&*F#ZCaUZv~YD{iuqOF^J5y@QCc$^_X zq3hk0IonSk@hoc7Mm^t)?+h}m%xn*Bzx-X{SnEuVm%#z#;u8DtE!D^Ux#`VJl_mQT zN(*SK3C#0z_2-Y5?yXzHnKj5=L#a4G^gJRQYCeV9@i7f(p?KG1^5-s2b zTZYl`f2dP7;x-=bO&(M6k02KV`bSe{XuaQ1c=qzv^(EKfnwQm$ySVOn7wj!v4T2w@ zS^n&uYQ3U|4IK6njOK_XBw6k^kE)~x&(8#u7b3h@E{XUZE z@dM)v=R72aFDHeVV58M`-oH4>Ui+%QN<0W9Tr=1eC;OYN;?{_U-Ta&Oij}y9?|V23_IUPdTTsS~b9$^63x|&=b{< z9BN|6Z>ZmhbQEgoq9i5QMbYlStKe{fwAQbn%?yYK<$LeSIgKWSY*COZnY zjLK{GuUR3L@2Y2om^%WsJ~J~cl%OFg;`H`$?aCG9z^}G+4s3y*P`d-Z*Pb?0@BEjro_#%p&#ZCsIm`v(S&Bd-+vWq8OCY}dyb8!xHpF-%~# z<`Tm0Mq^8vAy%#MJ88Z8XL`fj4xiju9b^E=1tJo`*2(Qy4Wh znStywQXy@y6iRGfl-Vbd7DPJ0MN>>?k<%D^=qfK*tlzdDovwG$Na)$=ct_Lw6CAYC zMCmE8@W#p}p&B8G*EiVdvRz#a-xIDLRrKqvpvEIYN0HFlq57jr=-eibx+xA8@!(4+ z=gp1?|M5^xOP1h$W9*7-3yIY?wtswl+7_BWIT>4>p!Z7uH)&k&p4;`H*fJ75@C zT(lSU*$6v*HWt2%P8S{(P@RKqhkKq{%6*QS~X>d+n=x z)L35nav$zzf6F^UH!|q@?gl-qTA6JWusPV4v^VHSHK2zwdx41g34Ouzh$|;sbSO;9 zdJhbudgV|ju2jf}Cl-&(&&XSK9#Q>}mgD0I>&nWN`hJ$5L;4IS)V6e}_)}e7-ORew zLP>15V9}-r#rH#aO09dV#^Dhn;d6=MXT#yXpe&PfCRdJJ{mt^0*-J}I@uhsds^n0k z*O|QZQS{~KdUN&&e2UR1VATs+1Sv?@+tDnj#-sCem!XD3&yR;KSG}~!V@iIf2QA(? zpu8o&a3yc5|4-x32&ulmoeKYQ&}=?ql*5SdPGxJ27F_a(%hTPEg2jvsL!9u$G$7di7b2i2qg1e_Iqi(-~=on9rE&asnN{S;t&_b zV?9SHHc^!R!}Sg2h(3DVxTe^lJv%NTC`nHZcO6!cnh;wXxyu4P7uRROW+Sm|c}G%6 zO6;}kHxmgvz?6fvG`q+4>j8!j?hn*ONVtR|C#1qBw2W-B=Zf zxD4ttW^nF&y@L#AnyWYeovmlH zxO<0C>`9Hynquuz8k=&aZp^NsYn8Ld{77Zd1RKn0RapWbsh8 z%+lzBhjPT>A`gya@u+uP{c5wjuFfkNe`S6v?|ePEtlO6 zVU?(Uw)hxOjhe71<^1q)!SVj%l^HkExII3T*_0Ym_pwx>K(k-2KGLH8XS-H?c&o)MnV?cvl|-KkWntW4A{k*%8OXD$1wXEgTE(fdv2VTF1ZXMK3)U)6A@Gi`v0 z?jXt4yivRzjTHcbEEkF(sSxl1^Y8d`!e_ncK$5-=VjgJiQr^}9Dufd z2wttzQI5yRT#;`&^til=p9e^}QrGz4wKgFw2PRywMyUXh%;{w*u6o3?HlLygTz6f6 z(rR;8@K8!BSp9K{Xhn{+pa1iGyw3AgooAyr)B|`;$*`lgEuTrXx@cGBI)L}hz?Xfu zBAiQz3}wZnl3!D(x3D#V|Jt9DA9(aET)L@x7C|Y`E*c3R(oLyG7<6X{A}L#P2-)1W zf#hOx)g|pfL{&M%iNlP_NqUX7f-YxZ=FrNuHt=-CccduQ6AWmm$|tBv(bAk|c6`0jj@2VDT&z~j8OujtO?PZL#wuO^lR8#Mn%+}+>Q?!5(f5WQt}wu&>HW$2h7#MdmFv$eq&a% zybzRLM=x3lwa9^{KnE=4>bwf8-)0Jm7b%4?_B$w3WkuL9Siywe)WAlFs-|&a?W~@$ zMvxZ|utl@7`(z>DeOJvjHk>AB1THY!N1~+badfc1aew-SA(UYbCn}&;-9S9orGfz$!?J1kZdOxlK|(bBKL-Ka%sxaQMfOG9fOk zIh!g+{w;#_#}F16!(DNINZ0E+@4TBM;qutVMUqm;1y!CkTo|^SC_pia6(Nc!kzovN zM^fGWq|mQ1HN8^!{_OC@rnXVGF%8%O7n_wmDA7Ci7wQ(Y*l9@YW0a`6aKHM9Ay-pP zFKz^gT>J#fTTP*(XGb)gOsqT??nH8mzg=js!B!(C#xM$g&rERlAkB7kX#gY~fjv(Y z1os14t`IFFRKZ&5!Y9hwhrY52IGD0=Wo~CAJi|SS-X`0?tC9md z&Nmv69bvddrrHz6;CNfFq1?qF6WlY0dW(9@4<=-CQ&L|>Qp_gl=G7hrR7(<4rFT{l zWwdKVe)u#w+evEtICTWUEW!DZ&J^QI7P`N-Q%6wFf(9;XL-^HA!WaA8w5DD<(9|V{ z&-!>mMB#}GZcafO94cbu9aQN0iE5ZB5f#wN}N=riTG*31C3Pggjl z@zAVGCy!cwOAPar{z;1LayCGbdr7PK-7zvim(4z>`LslaVK|vJvY&y|q41Vv8w0%; z#yzs0b*6s?k|6~*M8TZ*l{FK0(fnq8%krjPHd(qd`SH($GL5MXRXv3h{RY-Fm4~Y~ zyrW#pF@wtyxc!>a*C$u()_J)rQ{W59#{lrf>BT4)7W_tP`?t>%y!P0%m4%N-oQ?P{tIBY-zr zqPS7tbYwIKJhyV+g@(T9{)5shRN0V5_kQxXLDR@qeJD!@jJnt4(I7J zz^cL~*QeCAlZ5+`Lu<1Qg0>vMreFd{>1#(xWX^wFs(DUPLgw; z8_%UIFAL2@(h*yM3R;H4NZ8EfMDDZw+~8Ktl^M;o&o^ZE___x3g3V6Y}p_WOW-9%Ak{xt$Wkflk4R{Ny4#&TLV0h)a_-ZA;O+s zg-5bMWpfHq7K4^z&39VdyhFCRoVrw~eqRADds`%=6Q@jWYXKF=T7fZ^fC;p{2j&Ne z|L8``{)?W^4L20!1a#I&Q5x<9pa4BG;tEt^2C#n~qKq7uZY&`QocY3+kqHmmp4mU{ zh_S!P;SE%1q*ey3=3)QnN_Sx0ih)}ec9((+Ol%ENN4otji7zpDmPqK z04IwL?QDZ+CZ(BPXjk)rMQpGcSM09WK^O2$$T#P>{}NS0;(R9I zzr^>KHA!U(F&(bSdkp zrUJV4LkNGSZu3_*-W|$S<<@lK%Se51&W1A9`bQkMB4{!vaE;oqJ1q`nrO#`yEk=+> zqihShIUynpx8!I~15IFn(Gt7lj#&mS4R-c^l@l7(-of?GWz&m0aJ`U$3KirCt6Ktg za;1jy-q4fRl{Ev$4wTAyO-0DLEqHACJ8N!&f9;cYSm^;CXVIr&j;OjA0urF_5EefkDUdxqbkkTJb#l0<}$ zaG!Sv{D5eO-1>mjVb#V8;M9zF*~mk&I+VT^ExHkE=ER`sd3EkdcdLI&%iI3Jd0-px z2Y%g1qgI-ZgoqD_s8n_Ex!`PhEYB_BHGYpK z@C+gS`7bg>TXNf*tUo%_LHPCwzUg3i*Xg9bpK--;*hri2WvJgy16MKQGI_ZATScq$ z1OIIGVDPUsQ6)4aD=nYB?rAb>=BzN_UlfVf?a=6O`>!j5yHT3(CZbfAzrV>=m2P@S z?ep75Z{Hm<2s3dUyLjt2nc2WR8g=(l{PlnmV?jBlHDeHXg%ol)JH=&XWw$B7E%wVx zCj%{}#63?A-I-7lu`@Kw1jBhE_^@)GdBsnIu}{1{-w@Z zpq85z)mqs#>J2L}_%f^b&`YDs+A4;@F?^{=khcrAc|W5;r5Kr^%^^7uYkd3kB2s!9f1@nQRIu zf95g-7fKt;qjFmF+EwfVzhljT%aP&y%d+-K1X)_(PQ$5+S2XspMH?oy_im}(nzN;z za0{piNgNs3xImuux=2jR&>bHTF2%0)KzEHnAK$)0(Y|_8x#eK(hNeEN`>$o>fBTCK z5$%K)Ftxn8Ix|`)ayh2Q;YtFf$>Z~LtKobmzMgN)Q zoVT-lf`>@&u43vATFoiP6T|}u%Flj3A%F5Bk!00Vx;q3RUAy`H!=(^)ofnz0t{t(eJO@>w+!Dt+Ir`r%uqOVK+#Ib+J; zeRrLaaL<7kyYN*bpP*?IziGK>ZzxKN+#Of4IZr6W-&Z#W zf4WW4c~4YY#)eO4`FvE8#LZb7vB@*@*9J>*xAKbO_T(M&cy4&A?p;xcXM4k=AZ=el zfs*>GKW8!97FhEK*lKSA*l!dgd9QLscifjGe?K*MOyK zZyqqlwg%?0c@><%tPhR zVf*Ny*1ySpfSea4wqE_7K(Q_L0*%iBT(eZ#+3iUNBK5L`CQ<2r%+e&b_g@41`?(_8 z5?7QE6OTw9OX*nzmwtRs@c8tRf1%z-xX?%cSraVM_oGI1(ukuPF1e%b(!kT^-jLA( z_liEz8$0d?0mIK{uuMfzKGgCKe`!ulXRxqKlW;*R&Y72IO9 zQLPesE3|jOkV zO^Hk<$bZ*(fX}3Dcde0@0XO@Il>Z6DLZ3BxDL2RG1V0KX&bqjhjvhDrTJt0zi)rWD z!CH>qQx$H#ReXDz4`d%Yt{3p?$oWDzKF~lZiH>U_I1x9>kMA7ouN5Ai2T-20hdb}bhD`#s<+{dA zW8ph?&xQY?%$mQejCF`B|8hBzv-`P;%R$xQ=rHVmu$r5Fdbz_ zNwkTwzXWfCTYY67oueOKSIT_!`%JN@tIOF!wLpaItt1(z>ZSecy}IGpqnvji%f^=; zO_;%Dl5(SNI8??#EiJZL<;Y zQ*nMCnn@vXB1gUblYM40ytEfJW?xYtBY@n?d~?q0e5a334L2t^bnmopJicoyPmHLz zFOw$Qwa)L2OErl73k_=LuOW<*N6sT<&v>kATm_7mjIVu{#a6GE{bzpdHg>X!?)QZ# z_*;nW7Wgdxpme^Z1Q1wtXFE;-%AbZH0Z_6?^~GMDH*}!;Zoh0K$Pnk74ogZC8{O^M zTPf!pa>6{Ra&(@`ktDt|6ob;xf`j=NS(H5oJ}&cBp5+(5kv8IKs=G=$As-vecu|vy zRVudz%~^%jE*#G@5gR1ceZ+~sJgNOXFwdbzeULE@rXv7U+bV@H%LQ0V}zEZmdNZi5*pX^IV~{gnm}T&-8oV7VC;7>w&u=%$~u zKOb3#e(sdsd9HhT@T2DQa+h4af`fUQBrgt4%m zgDvPEEgD_NKYA!23=-RKO8n*`)?(=EIN2S)C;!DZiYfTK{oINhKMfG2zwfTcHMBvm zIFk>gj`~4${9wpU+`#K6`ohjtb=(Ay)m`%E6BRr_KQkWzwxR#~TpuxV9iHTRB5fk| zU*V^~%=m2Cg&Tzl%=sI~7r!tS!~4da<$(7}EdR6lU$h9-)+18J@JdBq&yrw4J7mRH zZh72}Yia#rga4AQRG&o+)W4gAxG}zJGda>u3g;!SmU4UHT}H)=34f#W{$r|AC2CV+ zubq`bC+~lOFz>%?Ut*qcPqphoVnJhtKBdccp~M_rwH%s78+|KPOHg^Rrg&LG_%FdU zlnp$1AzeZHXXhrxlO=||x^hju{jP%C-oHmoY=6=c39)M-z&i=+tX)oM0bNhMAGxu$ zfuzJT0qY4w0zRycjbA>G7fv0);%(Kb{bQ%-f=a8pDQsxLQhCHjg)Tm{aOGW6&+*LJ zQ(kq8{etP5=SE?!20szXuvP`=*0XeDuf`*KaMB-T?TA!hhbXFiUgQ6%bzrnIKegw( zwN`F4wfIAM=+9SnuI;&~$m_`a2=cRHE{ALU^bZSl4~w}Y=BLg{S^>n_aV7;iL>9YJyn~+_3QO)n2n33`KqKyT+9s-PMzh13gvv zpM}fd*?MSgCl4b$0zbjsB$XK{^#r(4Tulp=cz~2X_jXTyWX7oHJB3hjgB1h7&d1aY z+j70)mqnC+AwMrka*{>pBAM7Vz@1;s<(bh)=^+g?$to4946^*pgtoPJnpJR^De8@WKvRiOXXVKvS*&PStlSG0WlD)lLU@S~J$ z?_L9s<}G}{R%a|@G5|*Q_wg-SM+cKo&Kw1IA^FieA1vOy$2=Ok85oYRhOHx3KYOl+nX1H4?wS}mCt^l0FYhB=|BIM8K}et3 zN5!Z3VERIu$sA^KEUm>spG&C8mN!$lGjAeYDprRg%l~G7Dy?>LV85@q{{@_ZyNp+- z;i(kV5~5*W;oBq*s%1g=LO1DHUf;8w85=$x$~BOJlfz0mx?@*FN z`^q{Ocbzm`H#2aEMVLLg`?l<5(_6pw!koRne476Efala}{W4GjRoTjz>&$&t=DA)B z9#_A!)O2V!@FjXsI?oQ_uJBm>zk)N93FLXnci7Pb7w%pWyZgpc>o6s*VO;8V5bw_( zY*8Qkax0T|c|@@td`{eRhcR1{o%|VpsVGDe#uI>^o(sSnzFNstl}vo`^l2Yc|0S|( zz5cKGG6p2$7uV9SL0v%Dkot=@>E_@Oj-}kb${0p8X24N%R8t*^x>;gy>S@6ct-m$m z#|-*GR#zh_qbPRu_qp@FsrX=az~+wiwZ9WJzYXZcOc*M?=U|0Gr1h;^ z%Fha-C#qxnf4^6l&hJQ94+2zX0xPj*{gm~7$zD~sqhKTcStCT!&R_ad;hvk&w`Kn| zs(!}mI;t_|_|V6;9-H4NKaDEhfM`y?Tv?WV41q2pRo8)V?$CxbblKoOG+6OMhZ$fz zQh{0uAe-pyh^_CB1GpQZ3a-FiAz5yGr#UAC{h)ol3+j}NDk|!EXjD4C8JcD=ZvS1e zC`Y~EU!r4*@BY|8x2fHB@Z5LlT+FED?0&9V=<}8T-(>bHqFSnUhR6nU6hagpaYmLN z>F_osKZa`M#8_+#_g}Gj43!{-g`G}{o?K#=zl?fHQFV^Q?1$W%54(h;9czVYH5cQe^=2)&yMQ|MhtJEM=hUK4Sb? zNeX%p?}yE-aR-H$M9+-yYyS|gtk{RjrkP$6wSCto!)684(7t8Gp2qSJ6ez4_5$QX_ z9dTsI+GklN(NWh>A6*0_QB

    ^P-%xA2Fi45F9{2iChTsrMbjhK|5`(4Z^P5vjmjU54epEcqh_$T{9 zr9|r3r}7OMyz&&6JmBbj$pfzYOZY2@Sk!Pr%0IlgOl500U8&ijfy>zUxO+MTB?-DX z2po>lF5dq*-+%ZP_viT@&CX|c-f|_x5FTo&0;=8vH2ACtvjGaGaUZ1E=}ZOPH`aW_ z?a44QHjTq1n}?z>^4oX9GjA=(!dW&>-v52icsw1_!J;vNeblv!Mu zC+ z3s%D$x7a2bSEHmklfB0SgcK3|rPF9)=9uyb zi8HX{?iP33blzVC3JwMJbqRu3iAv$uuWm;$g>E)2+#7uKjde=EeJ&<&?Rqi){x9Q@ z_2-6)L09s8+pk2jxb@0G8bV@Fj{i%Q{tp`kJAXh1dz8fee-Ncl2q%yOLeLghE!__K z-V;exlM{*jNgt?Y7p+{SjG@FCeh+q(2^~@9yittE6^@$(_e3WN90W~^K)DfUR*pl7 z4S$2FZM*>-D=R))o=p={Pl|wIk66NlO3CxTuw^2z2oWT!;(B2bJ(tsG;hooloqruV z+TimsN2@Q-DqXiM0?vbq-v`<^SwnmRZvf@85H>0!y0>{y3rbCY7Te0ou|r z4R}vOM5AiLQO)r~9lI96OOIx*IVs2IDYx1}@{KjD#=ZVINia5bQMmYxS4$C|pQax* z))Z-0?)Yzs;!3+0yi{-Di|q|_7UdVyCwR^0^R=fIX%_ndG=TB%!+>vQlH~HeZBtB> z0XO0=5%F5Mj+!cfT$#7JXkEPf*ve7TUf~Cu`N~eS_SggZn{zDcfM5IFOJs&MSq9O4 zdv`ZLz%TG(n~iRJ3b=9(vFpARUNqBy1C*~^1sZqYFK)rg<*hgy4_~wypcF6H?O%VR zIik*O=U*SB8=5yyin0H|ZVB_(Jm8%a=9zSLv&r1u15N5&ns#Lnq2s=!%YQfp>tVYG zA0=kE>y~{~S)%IGVUIugbxlB(+21c^{oTzyvi=uI%t)I=OR>o>MelU{;^m_hwkcS2 zY92a%T3fv`$l%2&PA_D0gKc*Xrmk%E7uVw=Iv_OR%Y`e(CYMfa#tnrY+_m>VWF!kT z%jZqLro=v(k|%tws5DrrhU_&END=Hg^+i$bFnts;hH$Kuj`L@3mA@c;Y4cZ&j9X`( z9(pC0_cRm}W&O4z;P8i?9Ayr@kRaV2+p`p zB~Y{cgyUsL3GQSBM-0Uiycvs_%GipKQ1%cH)5qRyob5pw+sV=tZCX3;;={=Dp>cYB1_6UKd#68uCRhiqj*s6>g#zu)_FHApZcEhrwV~CsH(_i3?3INHYxPa=0bMZ14HUA;hsZ~4YD{Hi=0xZW zuBQHM8?5b|NquI!Ci-J!^~aP<*DkcU9UI+C7-Kr)elFV$_G4jXjZ00~vJQtywkcCV zHz;5CQK3?O&9a2=)%z=7eFY~?b$%-Vkjx^1Xb$2HUc8(5a)$Am!})!VxS~k1zJT}U zf{jzHy4iVBhM6 ziEe(R^bb7Ox@3GFjBYe|FEi@9RC+U>IrOszDjcL$gZjJ6 zJO#?|Ct-m_sP>piG#u91RSGVf&t!+fv2Sd@u)&qX1(k`Mk0YH8Bl^K$#9*#fG)&OXZYOK@<71Tu?2;#laWH1d$%;!(ZY;LOcGTh5P9} zYgB1S+KPeUMb)^&SNEtWYX>2>S>*6a;=8D(E*)E%_` zj~IMVc$e0UqN*88L7=Eg6z>oNCW)``O{qRTd+R2Ifordw3XO8chX7vlUn<=;`HwMK zJd1=43RYpfP69N5y@j2L(wRkiQfAJv3yT7*N^}b$UTc#z)Sv42chA?zXrI&cb_IDn z4Dem)%p&a#p6PYStPCu%vR~rb)s;-Gj}YzgLiZVc{lV zyh6&Yd!L%Ssctjz?_IxQ7!&$<3J`MvosOJfw9-Ov6lZU(esGk*T9?@JnW8YP@ZO#$ zdM-*hat^N&2tEpNZ%7Hbbg=TM4iFGRHP!BJTXh3BdXIT61SwlT*Ov-j)G1jydmZ-V`1ACyVNG5q zy35Lbh0)r{d-yQ;_ng1xChT872c4Q(jwI_RTAn9<1;6XRgTK}w{y}HAtF~ZSQP)p5 zVq=N^`&9ATX5ZVus?&X4>~SKAjmW5AT^|;#x}yU6HLGab0i^86xb5WxY?PnKU9)JgNcJS z`L20oK&w;`z{(z`UiBdU!JpxoM(`jk6zcVvaJp7n$uxFRIA(836r|Unwm*Og!XgBV zuetUOy%pGSu9MRfj2LudTJhJZ-&^31yg`>0i2FfaZpWW{!`Y#{fC$F&eUe^qFU`-b z)mmzx!eIp~q>DJFa2euQ^b|Pqkw8qkqI$+8V`qh`n-_i+cX?ItEv&d?x0@wRH$AxP z^9dhEuQE7FmKf?VWh7ovtfE(IaBgi9H}oqBy5lQhHNeeQ=f!6mngc|}FGSE~R zip5-fJlFUPcxplm^!016@~hDh-X?_Zms=3VkVW0z@6gbK_?(wtuiPtr0&KjgIzM=w zLr%cTi_dTPPx>H04+iL4teinj+(PMb8Ox_ZjeCnHKvC^G?`7k_nBq8lN6sO$lL$m; zZ?N(Y_-_2}AoAye8RXH$F5AipcHrccrE7sU`EJY#(7{$+cgn}1zqZH4P+t?E!LGu% zZ9}7biBThbwhCl3jidj>`55UYXUW?@?PZGWzK)%jL4`gR%VjC}tEH(bfA7owi#lp2 z-}}Cl%@ntDh)%&&Rr=|zg!WqDkHVfe`-tg2ni!&CSOW4Aiq)bnoWyhhw+sNou7M}njUY}XiI+(!De=vLCi0LO^-X%=8ymS?T`Yd_WJEkh*mlhk|cXJ-r&9oK{9R9IoWUqe+ncTCIm_tTJe#q@&oqHWfjPW+k% zUBsC6dWR;_N0LbL!n|;`?lX%^_i&qLeq7J-*@Nr^6|8 zO@(fV&f4wm)()4Gd0V!1FKVXuPIteSy81CExSf;}_Rka2|Ck6w&(rY{>Lqh|jv=kH z1TM0dEK!Guc$hW+S|{}-V;XkV2N4pM?K`h3m@pQOz=Z80KIe}vnvfz_)6x4vyj`rT zzVl?E%2(tD{VcucUbX~s!?_+&ZyncKoA|)Zz_fXhn5Tn+X)=u=e5yb+CR!L`6sC^w zGDV{XT+vyW_;$oA%p|<57sD}GoAEp78kpGs_sI`Vwi`1iWH96_pfI9%E%5fW%wDCS{o{T0$S3uy0}Vdi+Xh`HBry z_bcFxGY=_u%~iV)lGRL2>+^xMc4saPZT`W_7@0@x&NON1X&{^r2Dxww+d3mFOGEvf zY1m0G0W$1c{!!R4aRx;5DLq3EoY92a=(z@(6p>*V;W*XtMsd~ofe;9xWJW^>lmpcN z-~1I9IEPm7zo99)Iwd`FgdPkLDmliq(BchR+QKZgRSd1W>}}E|VIN zJyB0Eus?#(#np3U_~UE1p9_(NQRa@gpqaYVMi$W^>ly4tK5}0)@F6}5xtqk`yyDE1E6%TI089Kbhbg*NED-P6EYRtb4#IP`Z;p$$P=|^XV^<_-#M#=T?xHC0WB~B zHF_u-m(K{9*mn1+>l9A=x0Tb5O2zgf6;<;_tMxVy`0Q%I@(0UsB_%B_j!ttdM5ckm z7e$}in_V&`i?4OVQ_m;bzHIPdA~GQ$T`S0UxhD575BD0e&>9(BTpg07m4RPyflzVJ z_WE}G)N_I~E+aXIPI|hp$I{B=_a9QVdfzPJ%T#!^N5_y%G`CE6Ja*fqO*50u+bOrQ zrhkp>P`L5~gszoEQfr@Oa;CUng>1$a8^OJm7=9ZiRkk&95Ex_MjHe5d!h9-bIWc1S zSxwi^pZJw9ryQ zB|oj$v9a4?$@07Vm(sV0=CQ8ycl>1>&T7#13~ZtaQ%hJ(y}s9*6}R3G-Kr8rA-JmfN z>OT3vj@7S9WTmPKmZGA_)Y|9j)K=gk;NQ&l&pD;(*0l)%(?$IXc+4?#wdU^9I6LwJ@Va$)&b2>li239x?VPs8n(D?+w8UG=HAZ!F|1b4}I@^6FWO8VR9!r%$vum5ay+IvL(=zXHK&ZB_u z-Xya794;3PMpL983|Ql=W;NeTm(w$8Vs*wgp(d)Y?D+@c!i|gG*$#z2EHiKf#e29E z8Gq!C*qozJornKnz>oLq?E)K2ZO`m}Rtn2v^sv)EL$0eYi@WS^q)Bj zNi)t5wgNQ~h)D1M7US;_4NNU~g?R~~>r+NA(^fwxAAZ|x+p-j=YnDSbSnaZP?-IH= zl$Ahsgf>n-IK;H38*-4@-#EDSwWwxT^LNr%7PwQ%#1<)n$9g7X8ReitIUEsJFXl4nlyU`ljsDi2- zH@&4)kR7}Yn$e5Os80H+x!$zGsV&1ap|yx9knn|xqxSs~QNdpt82GrIFLCm6V5jB$ zS&Np3_m-MZd0Xp95u5`IUzVq{y8>spH%EkV(+tiK_Zc^q`oMjIbzC9#>Q*yE>!E4gQ|ctI%KGr-Www;jR+22_Xc?)_2(yHQ9Cz3R2nhsSJ9FW&YuF}(yq zJ{>wn1%Ky%z39`2)*ef2$l#?Iw7l86&B*YjyD6o+G9L*aCjUDpbE{H0OLj)Ymi^og zel2C>-y0KCV{`>-uV=`HI5@p=OQEvgGwe=VDCHu`S=B4fMRj!^AyvWI-avZJ^h3_r z=X6^*yboD#{JjM#I^B9!ueJ;yx?i}c$D}%N-wHK}2$A8{sZ3z}(<{mD<*6Dq8NG$> zHGc+SAN~(AjG!AE@VqX-D#K@0Hx!@t($33_-07Uy2duRI1WM$u9R;7(oL-y}`ek4^ zD+8Tgla0eix-Fj$L2gKMp3NOjXs8jMwp7CDNB99AGwGFU8$_1)oI60KFmJSmg-rT! z+zN1;xvQyo;VF3^mfaXx%OT)Ybc)ho#=rYun~)Ro5K;o>xo=X`jiyM1vl;?)j2i3< zSk*&0Km>WsoK=sWOJ#mf$5axz?VG6x=da+59Qt?52v#ws(=j3dn3->aT$!Hp0e`M4 zUbg6-(Cv3CSB$VA0I~z|#oJu{hgAeRGVeRLObTTX9r>ESSL4_25BI`ZG& zSZpB*4wk&mtiFaMWskcS0ApVB=zi z4GNL)uk0gV{tzJaFX>EKChN?>ILq>WYgIDap~O0W2ZkX*Zsy3##+NO0Dsf?#i7(8PIb zY&CjE3fHh{EGWF6x!unrhZ>8WIJei3|6wsBHW(QbK;E)w?#)jvQN)-hdLt${^~-s- z-DxF^EY~NL1K%V{I**N(t18YIBj}u`u!-sOa^WQ83|dp$rsgQ+^1kp@z9@wjxVMN} z)xi0k?SPu`H?*NLA}c0pm6_%%NF>n+z0 zr$~QwzoKFFhv(XH2-Yv2wumvL$89Co?ds=z+tkc<|4Ic-XK>@@Vd<4;Dx&zKimT)U z+AUtRLIJ0&rTur;=6mSVP`~(I@2(#Ep}(icX);Ao*QSQv)Z&SnS@2*9)M*7I?o}gi zSWD@^zR@0Y)YX$JrkCN^o85fDcfG(uow21WNAp&8B=jc_2q$J^axC5t*oA?eXqkjaQ+Zj)sNqn*<&V6gHV}=xx@gr@TJgy87+EhP!2LJ9}B0u9bc8 zqz6Ph`Xt)nW$vD-o~d#xsEjAu0-10PB4l+Fhmr>d>qtVlDucd?qYPVvKqz+|qpQAa z0az2R0{16``xARRBYhvH1WXyQ)fb)<^}zQVADt`Xw%3CAHB`NO(VP$&_l;wzXMd;2 z`J5G^QH$w0?sX?`&N~wqs`gi)O1C-gS6k_xBH-Xf{hjHxJ0tv89CM<`qGg3(?@F_= zfnma`E&`VAo9*$igGvh=6R<>fuMms<|=IJX|mHywvmyM%`ZavGWc_2@qnUb2K zc?OZ0OIK>G+e$&jnwy%6v?-nt(9AZ z`FyVT=epk4^?rY^@7CoW*rkQv(xQ=Jg)R({OVkBBvDPXSv(Fb+=^p|NMi5Q);5}6Z zEO#X)A7~|wthy8u@P*}z2K+BvlTv*|pkM**(YzXM59IVMKe&RFOU6scxP z+GigK;VOjL)3>oNDe~r5-XKH8(*ZVvqE-ZOqAxt~ulTwxi zeba-d0$+!{P{N)OqGrlc9(5QIw8Grvru3egcn|da%rZYz%O8Noe+C>m-kA8hQL-w8 znk0mgqy9M{@C${e03FM(J~~GH4M*}*>5}CMEF|P%s!v1SF}p0m_qM$L3*TQK8cA3b zxc2}(diC_@*b5?`gEApH{~@} zsW((=Y!=@lxN;m5`ja^6d4Sc(^B2|4=X``7C#L!AD@iXQPG3@COC94CmeOtRg@)7h z%@exiHa(?HIT=j7$c7{3RvTPbeEvOjVZeoBaRg}`HE>>4LyL!jy#iWU)tN!uvB zS=IqlmkjD@0&hBFnHta}rpSP^L92@4_DN)8!d}E@ys=d=pBH<>!wtA5h4nGGXtvC>~P@;0SQoDQE8q z{)?FEwqCzV`e`If`C=U5+~@Ha_7nH?Pd+QmdjG<1Xd=cTpJkdG&O#ZmKS<|URt!90TYE086iKHk&Wk7*B zXQ;nNUf99)joe2CaeV@HtI(zQ*A!^y@*qE`X3y_o+y-*kgY_QG(^*erXpT z+7uShqGsYbHo&#LvMd23m#YoJ8YJjkO#eF^cc$snV(`G8$dVxZKb$YIMdqq*Mw_w1 zuftEdmBq^r21=@@+z;|8e`}~8E<yDY=ZqUrl z4MeE`?CL96{o?R>+4-{m3%~)D1p?{*JEpL2FvSYeNud8Wy0K6M1qqrW56lKZ-yg5H zsQcQ>Vk^G)Cg$gB_*aG2A!+>&O${aw@rpqFij$vyT_`R-xUbkA$Ls%isJ?^GL&DQo z()xz`=M3KgW(7m+E@isjDGid4PaR%tJUZg3Cy4O(%%T%oPLd^&1-Y;=QVr<25uFDs z{T&5meaExXpJmi}!a$M6vVV~qor_I0MI+vZepk@}UyS9aAkbAZODYxo>yISEQ9DXQ zy85H8OR%6@6B~gI_LRL6hOYjGn92S^3|xVc^@#8V864=o^#Rv%AK{^Ca?* zE{-iT+Urp)yk!dz_GfHMYX2pXjyo09I3PQV7RFrX#t_T2!3+T;!h&m^O=2s88HLlu z*9Nzt?6RFG=Lp^x`yE4*U`J@pY<)h^jcUJDZV~jn1vim90qrPFc{9~8O)h#L?%v(^ z;+@`?660)B9zI}<^uL$@M%MOr_5hu?wcqN9_6MpNJM;Nb-SL0;#I}F?bq>B7mg8L* z5T_h3??_3=!aP&X7Mn9XV)aV}_l{QQ%nNDhe~=OVwqN!cSN7xv>;H+2$oD}zOtKG` z#Cd=k8eyX}6_o4D72eko+=jFp;7yP1{}Pu-ocioHF4piwH9fiY zlB{%i67RJ(AoxUyy2v@6&$|?yvkT$N@ooKE9GRc|R!gHense`LrTCHn-c72K8q^Q)k`GBO*?*?d-RI&6r9abP-Hvle?n~3yU#rk_Df-0h4?1AE ziq|B7G#n1_>6L0cI%HKRHY6?^u2W3ZZkS@hzZ5*q;sAU&d4#J~0F1G~Ydh}0bx_{!FvBmsaJBUb1)v|g6_qQlVgv6=Oa#>gcR!W6g$C6Ec}$yP`0V&&ouCSN0>owHrv zA2xZ0rTMae=9yW^JI>U|3qsSRyCKVf7+B1p6rifG_KrIcvAL|LlOc2tGVK+A#$$_~ z#a&%C0yR_|JrY%O7aB{^x#|i86eB1>Y@=*N~)>1)H=G_d((`aQ+ z08zW?)H!>P#yck&I#_~C_*H2YEVOfZDJ=+kF@7Z|uL&d^oi?Q+M6MU^HKU5u_91TF z-4H+*y2)T+IJbr1>}xhejA&MGiTRzRMQ(WLR;IATbzwzXF3xSPd-y3_A0k*+uFMg2 zXM?vVb@d-%ZBJTz(M)uS`t)D+YQ5wh$F57z>#fUuS9QEe!VS=~Qxn(F^Kg#75q&{N zmsf19YCpv4Q**7W^7{b3xfO)}H|OnZB;}rFUb~i4OH1-#n{R}du+k699#sD~U}Fm+ z5*)q+mnlHVTWncSe!(8`0ypcD-L8mEY(2u%%BV8F(T2+q z)9rzEwku3=;2QV9P~=y)8Q3O?2{cuX3zAb_jeoBmi3lxtk4tAt16Tjm7gAj5f_XB> zGfQpRHIAI~=t3de1RPx%*s5jY&-!P13jN`q#cHY=m=sYcMC}-Ex)d-L1lIOdorJCFd z!OzyIgI+4kO5+N=*?z214yWb0o?cRYDliTQO0cZb-GvZKtC8GKOi%I8hyCghBDlC4 znL|Uy{b3i$a$2u*wM!nvQ`-;FrVNvz_~A9nsEyuWJO_|FhGAz&6@1WH^80;u{>CIa zzY4Wos=pdIt~n(sZv-U9x{OB|S^~LE#SO3h+*=mid>vdHlWuZk7dr#q`Zqw-w@>PM zt)Y{-C%hrsoy)DWNDPA-V!n>WIIwZGV)S-{!%pZ9r(D=>DqzNfU#l~k4odD!?X?&v z{>_fXR1q)tfVy?)-f(-ADQ`OR{n_7rVncmtDvSe!%v|E z#Lt=Jqfx`)iC5JpHkznfBcxPuYh@Dp2z+s6XG*wY`MshHt;xY5`VQR{)jKLwH z$hk`XN{uo)D-PRqrxXSNs&;`N9q>}U=^4H7Ic*V8;$toI%tkezYYkt>d&H7B%-|l* z$AlTj3*F>jv8EGIk@cs2jD8QC_b--9^(Q9vb)~d+sC}BeI{mfBfy&3~9fGXpR4rC) zP3->q?&!x35u6XOUMl}?Pm?8S)|uVgoOkRzu8BSfzfeMns_Q=^1g>kIcfve+E&VF5{V_nyM$O(% z3Ezw8`PNc*z2SZ8^yH3jVm_-7{b*J@(#%gRB;9&0jkj3^oR zO5%Xh$*pjk(6)@aU(A57mz}>SbV1MOr)7pTf)6=1bTQN7)?SsHPft-FScK-q=C=q| z4vIxT3SxMlkVAJRs&}gY`U?2$FgK%hnOKc3R8kLfQEJbmi%jS&R}~{x#FS211x)%5q=DR(veoPHB^@;A%j;P6Y&ALp~6LrS8*e_9(4a8(@xs=qp^BMBqdzjy_W!t#jHb2R%1> zjGT)ceOp_rY|Tp)Hof){s)`I%0+|Wq>UbO(FN#_6ilxx^bX2S1tNyI?zCIO8f%-|2 zwp2$BMphQf%N}|I$MeJZF>zuCGu2G1{-_kYtMFo~%i{^_XTbgASzKr7O!HQG7L40M zcE(R^4c%99zjqVVF%`0WA}Qiwh}N>|eoAX$<9i?&PODz{6v3w7!%Ba$X(^`o=J7U) zEW$C%fvQmpU{CZmG^?jI`9#$+3HmLf(E?%KcWPJ5iomSzJEp)YDn>9uVl*^p$;J0I zLHXIK(#$&$ks^_!_Os(eJVt3GDt``@(Z@5K*1Qm6XkO2nQmiMA%{lV^JpCEUi5X*ZuPFR@w zK8zOxYI2j-Wh!o9Hbo|i-C!2Dt3bR?_@?A&(GP6{Uxav_^Kp|dh%!_aRHF;h_?e%Dq1m+i@E;0|Vk{}-GCi7Q^2BUy)%#i`+EC-#{B0-NI-1sW8|**Z1kCT zg5SMt<@%)fJwna19sYyVRArh~<_@cbI~IflZ?<7gu6rz3&8$*+8C$h7mkK*yPbmZ< zei`!IJv_;ow>uSeR?Lmtns*vtyW*YkT`9JJkEKI0jw6h#+b^nh<;$V0q!*0%U814# za02R(Poj)FiId*eGbZ-UegW4#j#_b<{WxBed}I6$)^yEpO9UPx0s_XSYQt!M`QQHC zR_Ugmh#_zKJaXIaJf}J4gT6J~p2*?D0+2Vc``IZHdq49WTK+CvU4^o^7@K@Ffs!Cq z>hfTynM^Y#{-zd>uP&~3(U0*^&)C5s893N<47ejk4w@%yxlJ)LrTuBbeH|pXZe52r zd6r*JS8+cT6A!(3-+FP_`dAY0gB^(sYp=qtW=V;qU**qRD4}mhwl^!JKNGGAUY3AD z-Iq3dBzH!!o&*ITwb5Y-*zM};&XOZa^|2UqW^7c0t8!26wJyPl9n5hOwm>kI8GLBP z-(0XtZ}{j~p8mnpoT-c+So(cK@m2v(-wQ9!(T&P14;)>R-LPS!OOd86K_;|GH?IlV zzOv;nwJDw}E<$m`!XwL?a1LPHjpjSV3`R#^50>u~otKsSuGmyNG2B*zYC#t zxKj57u9}KH>C2+;jYyA5&4nEokHdTRUVJflbqE<{1E^R{gWW6W3;YqRr-9+2z!RJ^ zb3cU^w@nFbE$)-|ID7;3%MmT=7VZ{fL%Id+LC^MaldhH{$6AtrEkPqciRv^!V$XLv zu6?o^eb`}7F@zW9-%Y*SRj1~j@h}zAUX>pbtK!tGb-ZNoog<&iV3Ek~zx!bvnnf=2 zJOLCfaCLcn4YvkY;CN_g1!2S^q*c!A$#~TwQ;%TWMgJGrL2C zjCda@K(ushKv9~x$c@hdzp7~j0C#SiF31b94Z_i-=aeGFVzc zK!`SCIu&w&)e4M8kZjqk`o5k-jN!qJ9WZ)Zfg{rkCNBp82*O`!d1h<_oP=}m^jIb0 zl7w<-*K8_6y8bk>6_rs{D_*|}%g9k7QxFOhOYP-@mFj6My|g;?z#hhY&rn!zyo^>L zf_>*CB0w5d_5o9x5%$nj-vz=te<j?N2o`5R&BXsbfMT?yjg;?PRs8ZEZwbO#W0JYY&wPoo8XSKsRhj*-2E2^z(YlXor zwH>WiQTt*?wAH%VHx;ex(yG0NvpvnK)+e;uo~l}G#Y+WCTWz&i1ua)Z1=@7So>XpV zE1;;TRs}b%hyu$QRPj10_!&HNg^>h_sE~|~y9+szRfT)PFD@XrP#|GTLW1DE3HTKR zd`JiZ2tXjL3Acm(QL^9X`k72(zh;a}GF% z&hdRazfU{-|99=GyZ(FEy|;5Z0U@z+LSjNX06A@TlZnj=X)V*-%xEIps1HC$K7dJL zg`6Jv#uIRAR?b1tN$?>~f;SOrRz%BuQlCJhmu=FhnNS}0vjT)NngA8s^j|;MA~4BeO|;0z#9E^jf{vW)31r zQlz}`FXU952__B9_YjU7Nm8VkS^uSVV=ZAe0`FeTcm1CLE&l(%pBqW%o!Ojop4psp z&N=7Z*+AN$jr=ktwt4bNih}CGihe8<&NmQP#sZbSpK{$vwh4Tv*JR8%y1#i%*=K>bdAF+ zb;+ioQhbcpb8I{ou z&V@DPSn_AdvFupx{{;Ad|Nq@Cxo!Ucf5_Uqo;s(`>E}#4XU@!-)BAn3yWjT@XRiCq z%nsq>->gZ$#SohGLWUurRC>}W2e=d=F1OC63A>xdBCpZ} z-G~cltc?RQ^QOxNj9Pf7iF{3(@?EDa;uRbz%^$apdm`%AM#++esJRyL6f+ zMK+yg6RRwDurAD%p155Gvq{!In?mSLyMxLr@M5A2PI{JB#zEb6Q6aY|4s%_hVec$JQ1e0_X$kK{#s1Pi5_F1jxV z6-5hen^?0^ z6h#*O{XSavyESg9MkPjL$XKzrv)@G(+aINz9zB~CQk4Nj2xx>YL>MJT43+-m_)v^v zLP5puGwJP&#Y~JMqRN(`hEYY!#cGTUW`+bLMMV_`r8*sr0SrM!31Djw1XvkGj)waS zMHLJ&m1MB89_q$@HfDuDfNkXFpf})DLvl<8@Mqw+Eq9`bf z;ZYYG1Qiq$OiT$-v7RoE%>=g)qji6Tii!$|Dj1R;Y#c=eMa!cuxOEtn;bb)n!k8+m zsEA5Z)`()mi{0LctvjeRLKg)$oV7Zu0~%sWjHsxnvz_4*aRZ7nUQYVBg4a*=mF;iW^iE!{wqhx-~{cs>yI<6gR%ib|*&>WlIcdIX0{|La0^) z6t~8f{h_F$3T|*gF}_$1Wb4bQx2hwksIsw9F?+o1m0M9zQ4w{98+pnAMYfD!7*t0q z6=ee#;$(`rb(BC|_WB@pfXsG!3*&4BQA8c6qHOR$v>G76)=->|F^W+(a+#>Bnyn$# zqPJVwVPZHK?v7QqdNA9q?FeZEQIYOGTR_A{$zUV4R>Tmkl&ux0#1_NK4tTUvyY)iU zaCQgJ+)x@EHNjj8}U zWen@(p=@zLMI2+ab5ca@x&@ND6dR;t5;F%|6p#q3o*g_Y-Qj?S*a`q5Mu$gs_8{ZQ zDuN1bA*|F{Z6}W^>LQ|uTMB0?9i4&*qNSp;MF1-VpV)edC&|!8Lh;C4xE)Ros7d`RNsjwDM zqm-*EV6!g7X>Xv|k#>QC(8ObeUZhvZ&fzS^rk&koZKv7=*r;|F%0K~Zym#ngh$?Q< zqcc^c6TuYI4uai|AMgD!=es-w-5b=YNZ}!(WvK{k!l5O`kQHOlF4h|R^bcqIsU1s+jv};f7kT1dpu`;YaWlT#>!L)E z&cm8wT9tkJ$Fs_rS=*__RuUs&uLx1Aoh6%bhc$|wt9UU?Zap}g<)>!*L;t$>Mz6)_ zw7&_&0MWq+zyj@nC@cWc9CfTrNhV1$0b-KOnr4FqG*WS$OAWqofLd%3wjoyrT}C!z z1O#an(hiFx$$)8J6g%Rg>y^qiB!@ zbSvfP%E|6%>Qv(zU{jc&!?3j|qV%kw$gD4Rwu0L8lA)V9>6|ak7NV8^ z`X?H;oMxM%!d!dS+X%`-<7~>XP0SkLXvJ|_vhOX~)RwKprR$1o*QyK^kPt;Rhy5P8^n!QtxVObRIN^zxx*)_J?pG7d2rJn&u7dx&1ca(4joqy zkb@*cJia_gbmlWaUjYLZWr5uTX=J`l5U7npv^Q4R46zu=+A^;LhMM~L!`ol= zmDeSPKnP9}IF1E1S9RWkp4bf!=54D&Eqw)9pom%<{@Xomcvo_0ihv<3oMdM?YCk{& zxyPzV=CAphHSwq_S%9<_BrUEYjIa5cm8n{hsxMuARZYg>;B2xGQ_2FaO_xXt6NSNm ziTD^n0Rd0UfF_U-SfGm&hB!HBIANF)c5fP^>VX2r91M+a1?HgKrwUV;kc5CmGm@q8 z=s@r}yy~C6X!_dkKeiEPBBm*gV_HCotV0^8P3Kj={%As*&88zn#f?^-jS zl7ov|`6N6Wm0AeNCsloNOHh?S> z^}2Wqi?8BA!`Nb~# z1es)kq`Y(Rr^<20RAmfecK$w%*GILt&%2dZA0ci8#iReU8#rAiI_06JfrO{|6 z%1vmW&72V|8ibEyJmysax&T*W+Tz{MjLGZRnm?b%@;JD&kVXq=q^D=_twXn2QlJ2o zL>tj8yHG@dp*K|)55fdOYfZX*k;%Qw0eSnBK@3haEC@FPAfmD~rMn0k)GqFHF(Rtt z>ksh*W=``3jCp7QpFhpJwk?m}S+J=dG%YT$xc8bb*b8Z7e8u<7ff6WqEGFeabb|-6 z-7d&`026RSB6gohz2~DkT*TwoyVKQ*d2G1k9#!>^EP8GfDrBH{KS9=%((2=E7AlOY>;^N18Q^bbbr9I-v8+^mTPB{@jW2fgd^10Q z0`nPj@J@M*bpVZw?Oq%NK5uu zd-_WYwRcWv1uOTxvafFGhvc;-uPOK}&ihd=TQn-&R@J^=bDRMZwlX4=JAe$&85V!Z zZWj)Fk@ZKMm)LKZD9D(ny`>TEAY3-8w!eBz*|*ID`EIXC-e*%|TCMl$qz4N19zbkr z@B+$ZF^#@`cYv_IbMKc#>2V6-Xl=5X+6mu#awjb5AS3|?b3nF$0p@etloNP$1G0K76qxEeQYA=!WO)|r{AM8$N#SO5zHBz$M^ zMw8p;2aP_`9)nQ{x5Xt~rqG~bN|k@Mouo)?;{9>8&W(Jk9iI>E8($Kutv_Iz2Mb4! zY8;yMcD2R z7-;-`h}%#5fdc{4HyesqB@2dFI6TF0Y${z|dvY^$yS0x$NLb%zn3xSREtyL>DUKC4 z!UL9fH@g0@XYFn;sk9` zXr8|ygU7zQ-Ac9TQr_hF)={RA1mDVxyPFco$CUqs8_`~aF)D&Fguozzu)X))&CUWI zE7{cnfCKXr{GRO+AoMhh(>^42BHtNR(uh?CqPWzT52=Y;@;w zP1HZ-rVWcX5<+}m(kQv2+RN-Xf6kgtQW>kJI_n;*{RyK;BW51u}UI6bufPy_35a2dM80*OiKR;6PxL@Nv`C)an6Q zVE(2Grt`tY2@^nNp)w$cb?)^LPeLQ-^16e?jonYZckgnYPh(Z&4f<;=F$K59Bx+KX zYpzCZf>}gJs&Q@4>S1Ou?F7tG}5O%VR^D}(m`XQrs$k;^`f1EWZADrUs_*8HJ|}n zha~JMY!N%`a8eURo2BeD-0R`)kuz(@$o|Ey2%F1-;Zp|}%qTJ+LsGyM$LR=Zv*ll`g%CAi;t|l}0D8*d z(q{0FW$I@y$gV8Y3)y>m0JUO`9zYnIYR~FS_!*oyh!HPw%a5FyH!TV!#7r^iHuA>T zKW-D3Lcdt`jSGGAGg&l{LkA27l7QBdJF!EHJjNgz&Ezq_$dY&Am*l|0iBpwm%bTWU z``+G4bTDIotyL`pc-w?tc;1q${!!5!ZIzCLYlGF{@;fiEc6=*%K0&idPJzw6UF%9d2@bw-W$zn1cg57X5u-Ak{&98; z;T^hUQyZAW&Y0Q@CvkY98iEoFO(x`ieGyi}L4cA2;6yDQVArl*oh-s+(w&J-sYw<^ zIc%ti-w)V`Hg;`lSIei?#&tulA6(lvkVPl;!~e0GRF75@%a?#?0-%>8&1HcyRCMOi z$gt98&2jn?Fl#YYgHfb9C0@6PgTK{TAOoUYsV{F@HM-<=L&6KFCbcclnDzn2U&3t) zo6;2rnZ+UG+JqQFCt>=_eY{v$|F>*Gl59LeDkSo=v@P2-3OTfZMuy4mA`%|g4ZAF^ z=@u?1tyq0}lUt*!w%w-~#5=AvYep0a_RzRy@Xl;I34u_>tBi?a^wCtiia90ZoQo+p zeezb6F^}(FkS3wZWd7Hl+KXHiu8juK+N+8%MX3_gM#$bB$F6$U*Z9NC1KEmXA;Pt1 zy;XCYNknWi0Ie&M`5u*>D>2Ye)>;}UCJO+BSE5h{#<7IOOD0?bgZuuQ6&!om~!I2qvX!e zxK|X55T#17})V_nb+wV{mU=2V+M6?Dhpo8D@ z6Aa8*{&q43$nrPZ;iUR_wF$0-w69WfhGQER6 zE54=cIwZ=(rUlZ)2{5j8v}4bzUy}oGD8EeqjMuk-TCXB0Ba&)t@MpLUCT2vGZz@#< z3X&I9?|Wq*WuID%RUUpB8V-h)ye%IGaFQ3{5m2pb(0S^^tSN8rJj(naC zscfn~(a@L(luV^<*(0(ll9=_B94M@3jt}lXdCkFYrLeUY6eSCCbRb$CE}EoX1rNh+ z6M(oXneQ{az24f-cBY!z)#5w+PSaCGB+@mI$L5+P!67aV!(!M1gdwHz@35k$eUE~R zM8w9*SK4>-x^_g-qY=*eyzafPx8Utl)kjWVF=Z%a7%En;HmUWh(QR;LZe=soT#XLt z!Fl^J^BsmA0>5&_aataYexHvH?R0=)vJH!B&$`1zNG3=$qOdLbn}mMTQ>%xCB+@xb z#239~Zk2kl8w%Zq*Wj8;^^!_8UhalOL&~M*#??=Pp%KOXJ?qCUv!+?t5JZ!TWMDQ# zHmKEbkwrssxvKcEwONvU_C=WgAq^^S-6=l49w<#_`|GLQ#e#iI)nC8>?LS;aFb+G1 z9Fj!fBmkYXUU{g9cNPiu#Ve6WZ-%q-1;dJ4PcR2$hy`EVi~bMOk!)|{A)}Ns?%!B% zxDdOkdsC|Fq~X+7qP=^Ob0+n|Kl~h2n5smdzBq>!P-{2szjvr8XW2vA9Ni2~AKoss z312+Wq{B(4gNX&ymLLd(wmAG7Yya?N>)y=!#4oCS0FCT>ANN3^#1uS`Z@RpDy$i8k zD0Hia6Y398?g#MLZ$7l|)8AW;EPDE$#IC)lVTY55(in;jvH_8j3~AtgBCw1J*0=)X z-nG8Dp5Oq%{#864k1YGzy9y}qk*9-CXqyf>X4Ixj0f%AfExKg)vuiMKEAg7*u)vX( zFW!S(M1lDnToz4o1bX(qgGNtH^^uf1L=3|?vpePmR7|bERsDn4m9KvEX4+VF8h@Ow z-TADg{Ti7}|E~Tb8acfv19Ux7XM5L(;?|G(!-H&?j@WEbdZ-yBFp1}Y&)bb|9DHD7 z@#uTBPg{}b)~O!$56qwbX!FYW)Rfi z+94;pHeI3?Q^_`|Hl3p6&?vjiHoG>ppO_#Qu?brFGTZpdBf*iiJ<aF;1GtiQYzFfYB(755z`M#^-=dJ81_wE`BMT0be#Xg8F)eFhgfvuW8| zX2PGN<1 zKn;L-*}6WVdr`=t?Q6$Y{YwvZ%cPguqvYMyGPV_{jHXoM|*RDkGhUcy%(6I(POk zwO1!Rys%TiqVZr?`{4Z6gl>4on1=cOo$-P>a zH|pvcBYPLWr9GxtbyZ=GEc?3lR@2kb_c?{EWznX}SM{d)GxY~p)h}T8xs1fw5<#t(m6eUhO|x>NarTZ65?_@WS@bMf3a~`$kCDmjH%fxY(P+jY-%LqIoG^P2 zzauKX_TYY_Cpetcl5|YQ%GY64f6u%bVLC#ZDr_m6Xneir^y=gxU>HgnKArUFCG~o0 z-s{JHt;i_Zo6lpxd~H=Z`+S+%W{n!m$RL0$5fLqpH&7;Z!@<4*tYx8F zCPFlc^b!eNyVheD(8$!`Es|ev@G)zDrZvZDWBnyA#Ljwr8YDXVy3U@d+)ufSyg*kT z0}Ye#*)OTIsya?L^MV=EGJtoyDo^TNb`8i`JYJiVqM~3(H5-h@!P9sqy9=Wz8;lSK z!^$-Z0_+nR57n4y$)k~C5**tN|EvINuEwVzez{R)-#nW@6zA9AOR;b$I(F@4fm6{s zcR>$it@;1_d!xBp&V&Vr!QhoKMJyV6O8^USR@2GptOrop6^q1_p_ErIEmZT3zKk|L9I*xz$^?{C7bFEy9zjT;gX{qbx?ZP$({6WckbB@ z_b{4%M9Xy@z*Q!C}JspW9;QFu@{6td%GvV1iQ_Dw$CAX-p3Ir~3H>JdjVT zgwbsn+hR%?N~MiRS_Kl>?!eM>RjM(QO~-IHJ?g5n zG60Dnin1;Uvy%ka26JvXfFWT)@@xk%ML-}CFw09F8E^m7{qNWc~e{ zVyT!?kyId1f>^gHxFK&eCR8f53=lIOpCmT#xgxF347*<*d<~kLM)!8opQD?{3ut7hgwHh6)zMUB`Y@3hK!Hn^62k0s%%9Vtfjo9L zwFWasli~9LF+?$wbpYfLu?fqugp$G#2oo`Z0LDdRwh=%O;ys(EeMJoP1yk5z+X87g ztivFYBtxhpOg1|?2Elm>5H?q*YPr`f{ixO)XT%VPP>E~%JwF_uxzQ|;C2?4UR>mCs z(sebo2X7;2_J#fU6Bv=EtxbvS-2*PjH>KT(KC?*~#=2R<=P9j=VIqFDzRcsV{e-`* zpKox zc8GKsC$WZgF(k|##I4gN&pn+V&;|rHlC}U2T>)-3wOnix>Lw1r>|#d-ae&!F?&vz1w&{i za5LAWx@fKgJ7EA}4HKxrj9h~+V1vD0`yli^xqkAVcHb#@jRU9oEjT>HII7k3lg+!D zzM;p-XMnNY(9irm{x{tF-hvr%;Pd17*2N&knoohjJO(;_bSv;XuRKmA*^Fk6e*Oob z?_q!3SBnQT!z;dd3$i*GOH_0RjVgHyXk_t%l;){GpeTsGkf*a8iB^Un>p&|BQEfW! zfQZNMP3nXPFi?N!&-q5U7Bg(D!F4lCR}g4fy7Z+wpraN4{-2{Q2A=Bp9s8^ACN6?0 z*nCl#EYY+jYyx0Z9j6ta?b463#}d|5dfm;)UB(alNM+krnJEO^P-uvhEgGgRFo}-* z`UhsrMbzq*ci5Kkqvchj+y!++RR~ z|F|OF(LaE-ELm612Ex<^&B?3ICyd@yWv4Wn?mtS-2H8J4nCM^ppb_#mG{NGiW06kU zfJsCSs)J#f(=Z;sW>cw7R)hRJ8Y2Ec1QAUPD_Rjve%ig2=pF^UC$qDF zTJ8TFrZz*fpOP+}>>exP51ONWMRB-@Dubh4K_$t~uW)id{AsRx{GeOMo1WCU`jpEy zwJT)Fx;jd7?~G?g$=-j{{>H~#yHpiT+J2oQ3p;rXbb5S3^RzrvUhBgS7dKWFuxK!I zhimQp6tj#E)ZoVEDVU8aM$!8CXpD;Mp+>ST3G=NFFM2XX|Nn1v*|%WDTb^y}g^RK) z1suBA747n9v}E@)-z*(~ax>o32aH~3!Q#u!0hy1wYoF0e+dgj(MH%xux%JrlP|2p2 zTfCI6*7D_=AS+7Mgy}?xmYQT%6OS}Dauudk?0coAV0bn92(Mnc@SCYREzHV;{HzQa8`Cj)a> z`|jZTG>aHo?o~sat0ioAu$VR3RCHKCKR^gL7;(+qwVh1BZWU_k~L+X}+9soi=Y=a}-8 z_^EAJ;PTUWiNhW6mj37N-MOARygSJFD)W2I5^hB%h8V4kmZQTFs;mPNCLy?Y^+7qT z^MSMN5&%@3#*cGM5d(c`YmYCW)-wG)?U}C5%60@fh`$a#fTZv+;EDvz^S&yN%9$HN5s+D!Y} z_{gGX-(g~*E4~zng^6r{85S7J6KSmIZI*6oA7fP2e_E)e>zEHVzIrr6xnHX0ygI33 z$^)oWlLzv%mB;w|s7RM!v_DprSSqS8K)Emx2n0tn% z%D+$$J0Q_E<(di7Oszx3Oe7*A4v_SbM8UpocQ9-1AIjU7Zd=fDz~psYJ@BfJzDH#@ zo=<^A8K5v{*+ardl@G=?Pxovb4!?C4@wP#{ZSP^?SExa4v}{)&QxEj)4&Hl0@AA8N zEC3KB<(CpLO5Il5skPCx%;sH)R!xm=Q&8Pr#Fjg?#+1?2$_9NdezA7|8+MLo0 z&zk1T!#?0Rjy@RBWnjH*_w!~l1vGNg0^T;Uef}1zuO`7o#BHrM99Yfb^Lqz@?3;hg zwed`6A!{8|^6uNYn*Wwb)R&m$fEyBP5=Mhcdo|V#2*Wt&;ia?ZqrlYE25WsWhuuon zB@|g4N(L$<2w~vPI|tpkeDUvbRC^lxKFY=c-P_%tgCtpO(x^>!k{s9pBy0f|N_O=F z!RMD%%%VGYTq885=AZA1$**~9B;~bvu3WX$wgw~ZL2M)zQHIK9jf6@W9>`x(KCS)Q zK@gijImad>nSjSQPLKANqfZqqmS0C#|Mq<01f5dsa31LiwLCzI|RqBf-^= zANoQjHAA!1^jo;LMhCzq4qiZ)<*;zc1#k4i19@9#yofQ+1sNiTl5{a4Sso~JP;P4H zdT8F>7w^2_=uyAj`!qvyU*6n$se8Lh+`l)S*py0pHTwQW$_psNrICYq$LhVG60Hsi z+LKtVR-(!}6a~>)t%7KZEQc1YD;M-HTvyO`n+uI4U{;2p_HMN5ipd; z64c2R`z{f|VS)oqqS0o0jZzXu?dD)Vi4S_~KTJ%S<7V+7$Uk#ypTnq}D0r1x#vvIuSYI z5ywjI&LNz$@-j2w*wPND!gyy#F^a5Hic&t4=P^)GB|VIeJxlv}9Q;2OZI`cFM=W^# z_)zg;aic64LYQ&Ovz@4JOrrTZVk8~?}0+Z4VY(4xePAyd9GKg zzHz-*C$kglfkGO2>bEFK5M3FdD87Kni&2!=dW~ACi^VHlIMw*#>+YI1d5cyjv#M>U)M@PZa5qd?pHTK6@NoBlM8w!+#EjnVCbh<+ z(Q5*i8!k&w9z+`|olP6vd$rGl!MTvo&9#^&V9s9@9Sd#%F_Tz|iNE@Hy(9dOT>C07 z(D|SdviFZgNynjZ9jS;`y zo~d-X(c73_cS-7QTeB{MiKt%VZrwgWZBr_dP^nF+CPO`9Y?&!esvc&7pEAj0ZP|h= zN1RS=6ckyv6h#b&T~g$rEL8FsXm>?CdPBF*1RwK2k&}W4&%fyP@Q^xK#F%Y+zezYa(lOM`C4&E&ptPsTEG+ z8!Mewyar#j?$}`wXrP1Oi$?nl;xEvZ87kp7Z{}o&&1lZmo(+h$VWlc@h2I-d^RL=H zz8|gfWfBN604-o~h}Z#yp#f+D##H@<)Y`0RUI><4T;-2{DQ{x_%UkFd6o}Nl-6) zb%H?Q0lckq(Sj78FV8}`d2_ldnKJ+;U@pkswU`9osQ|N#kAb``^92Er94C{ELwyqWvKF9TqJH5@USoNCNKVHOC(8s80_F&ku@i#}4> zw&SyTe28kM1plv0M#(4bCEr&TPSP9+BBe9nKE+f_1e z`Zn>U#1u4*J(rmq*jZPl5!y)uV1P*Qe_cCuc!#zJh_q~O*VC88Js3QKDRC`?jv}h&1d~kSSw=_`LA0T0vfMXFv z^Vu)Bk!rC8k`^&d?Ot^4br<{A-KNmpnEq;A7MEK07wdnQDP{NoV`P<~RHQMj0x6@R zA(izROj@bbt+qFGyVT-~KKi2Pyf@vlY^<+IL1A{KA|M+NR8$!Uh@i9&G!B+(ubMsE z_y`Tn+Y$Cxi)p8pEQJDU^|od40PyVlU73BK64j~hK!X@8T$Ac&b6ZE%FC#1>)SmTG zvN!Xas#pHq7UO|@#H$yKSUSD!Wba4$%K!i(+4uReKXdx-%xe|ovC;LwZ(@8iIIep! zrXCm}Z@*&jKfrXel_(A@fNg18x~}Bqt+yLp@l_mWxJb;R&R4SG2O^p!og6ztq`f)0&lv<;d&tO!xI~zHx zNu>gfscoBFh&I;W*Q@g`K<(WL-)L5#P5);dMNsX|BToUNqG-84bpwot&!rNh*#1nW zEZbCn5B+~$@@LCjoA}L->zr674g#O6h8JAWuqc{KlD?T|+j%c;OnY}pjzTnW(p$-= z)@D7trepq$RK3>}?{%N`sgL(95CjByiW*#B0Ez!c@Gd=TJ9mff(qEWe2^G*tXn?R@ zdXQ@`3xw^JCnQ!5Hj+NCJCH?pd|9^vVR^kAn^7>FFv6@g3-%c%ZhK05rbI6UA~6?W z2J=|^#6PE(rxK0XBaHp-Vpn_8h0p0tsfIwK5y-}jvy6sBwjt&+g|wm4U#($87CgL7 zteq5bXlEV+?RNBh-o$)|efI%83>%`LFWOtR10;{)?a zq&N%AfbZI$)>vp0e-vnb+oKzSMN8>aFlw&G97y(mdmbpb3K(-fjTW)iDfc1IzN=ep z2evGn7Vq-F618|{%3mUJR%G4XO4prAf2?6@4Xe$9qov|F^@Q@0O?Bado(r-Eg6sir z&tqGGOy{?{cIqHr7LP1Y?ODf46xhtjRmOuix^`4?>(R(=V*na}b}XArXq!)h+v}Ew zeQiCg!k35KIx_=UbWGX*$G>OVXYlpw4|urm$){Gw{|PQub4IpdnO>UOx;W-a3^e&~ zDAAN!Z={tG38?#A;?w9_=NrOqAV~(+?WFkp8?)$Bc^~+ zPoc0X-3X&t4HS_!1ENfD_UgwotA~irU&j-%KPJu1nn?p!fJ~56gBkx4cP%8r&fE5c zdZs-6txRT=)Y7*1)87IXolrhF^YS|QAn&uqvei$;mt5n^YznakGy~1dWE0D&-|3!> zKz~;u1x~CUdA#<<%}EmER-Q0WjcZzxla=fKJ%sg&c+}xghrn-GP>nCB7Sn3a3ty_Hid=b?3DKTUXyn5C#Nx?g3~Oa5GOE#M}G# z5S{L&RB_f9E$C5=!}dH5944&)iviFK@EIQ>tS{CJ9>^>I|K2U9@(b2rS~J*!1`~IH zDO`JAa%D0<5PXg(c~`d|J*IWEc-yj_+N(hWI*FC28YZ2;Y+Y$DppnI25;_ntMS@x?=rPWGnMnynsU0imw?qN1p{(M8l=AC>l5o-C<7tDkevROLF%WTK855Y(P^u{CQV9WFimj;kK! zQ)|Hj23k1y$a)c7zWTA}*rmc7*D0@37AR4cxAT~H`RNx7Qgvu7`;twfq-YStfhiy% zdzo9F+P{4>tAkw=+Giyz5hR2tiG)|8kZ7`_!%BOZ|Ac4~5FeZ_#|#UX+=m$u4D>A8mvRCWkAm#qg znqJqCHX?=!C?lX6|1Hh9A*>{l?^MX^yf zED*%mo!Hg{hK1VmeDRNb&dZcX6Hu7zz!n1_2CDEsj7OU@E#A49wPc?9=C_|cOnqC~ zY$+6K{ISQE2MYF{;bk9Sp=47VD&lLu;)UakzotOhqEVa7ngJHgfCllqSg;iK?%#g; zu3-NlVg18gN}3&r#jUWTD^Yk0P=o8=Ma%D@{4^GE0JaJG;w5f*zfp2Tu_i1!lOeE3m(@Tl8k&gZG_bl!|N^n(S z76@iq2HrX+wa*r~m5J@M{=Jpxa0$=6{Cn)cmdlvJC5zpz;KmyUm)+ zvCSah5ZFn=v;ncAVK50X1o&llWr8Cm_Xio@87^8Ct<`u<}*NmZ{x~;Fl71m`GdA@AgxUZ5+PLY1i77dCdRWjDCF4I2*e`cdx&c zp(4GhNK>P+{##ski4pJ^jLQ_2N+s@9A8Gt{6LW^I-_al*3$E?ic}zYD7K_et^}t+| z3&Z&p-aO;lG%8Nx5#@tjkG*g~Gav;d5+H8a(MnNh1DKp-qOq-`Gk*EixQSVqk#hvg z+ozH(d^1bP=4IQ~n0jDBFFbcaTINDm?ChDXJVqkwEFToAG3{+-hDkWU8{yk`Z`*l5 z=h_8%qcN?vCnD?0r?ra1fYBkW8O@m3x@gaYLOb8*2hj{Ir#d!d<%?~SL;t1r*>*vL z;N5p;y{EsdM>#f+f!6j6V60;;|imiA)aF|r;w0DV^_Gbicj)-qrIWv-gsIbo@~%#PeW zFav$Fgu^t5BULtN2##NXTG^H-vPje#S@eYFnk8n-5db9G7Q6PUw!vYTAc0VAsse(j zOlqF)Dqzu>!{>SzVvT#2el|b)@j>^t%7o@qrw?MM@4-8~A7z&<-mMfcK3gnx8o#`% zV0_DJLMO*DL5z#E^VLsmpS{td?7x{{e*ul`A#d+LO!)jBh?A7$l`m*DVO?{TYu_!6 ze`le>3ZOow@))P|MBHquTD1H|2iJXM?5{r;wETSsW=U8?yNGc_uTZ9i$^ib`)>)f<+6mgBT}*kVG3` z@b9ek;_svg+&CZ85RNP3l=yB(drJs5STZ*Q->b#Nw0@Nf_Ik9=xW$yF~lm zryCny+Mh%H#_C|vDEA4oFwQX0H*xMKJ6JF?7f%(A@`3w^=&5Rn%Nb=!Z#sKs{3%@mkVhfn88e9jG zPr;<&H2+p!?UX#m{NwJ^xn43MN)0YNrs50!2LUiJzJ9!FucyDv5F2a~kq8MnTADQr ziRORt4E23z0q+Y=Xr5|Fl2*Pj9MFwgT8%N;2G5jTrh|A)7Q%a@029u4r-wV?o?nafoFQ4hjW1yZ3j{Zp|4`NF;HO=S$ ziV-Fdg^7R2Dg9_s1_%u)Zh8GqEvB7KEG8~?`*Jm|*(mHW5~ys*K(TElDOXg)qfDs% zh0Ee!c8IkI0UG94`ab&qT^co*k);OL96)a&Y@t?*qC5v=AM@B?5seJ1diE%|?$JJT zQ>#h!C^)%gy8hDl`e9f?1egrc0+41aXTve==IDXydtu(*_sH{?94B+aD_=CfgpH~F zaL;#E5sZ_fi3QEkj=yoX@fMAZO^r=1#70zIjg-e=+@|1xyb8E%e&*BPv8BC%yyNKh z_F!iLjSLj=3GK55O9?p<*04znTPO|X+1A(pwSWQ(7$}d&CiEgz@dzX=qQgWE4$Bp8 z^byRQk-v*R*=sLeS81B@@%wv2rZ`Dx*2K`!6TNSVU9VVQ{0>`%Rv=B%!aJBoNEL&R!W0Hs4j>?2vaalYnX(9D817Eswle>8YOL(g-WX?V!$CV=r3%U2os{s z4lZ82sf{S@oikY6s5(wNnuWpqA3NtgL6`;58xaObsBH@v1a^DvPqivkOrz7D5>M%n z7RE|gTS%A=GSZpMzJr^SsEq)IXsSsTzr2%E5mmp=4Jae+fkdn+omEDvY0-1~O$`;D zg)Ewh2Q%?v-Zr}GKfp-WL?f^k0OWum5TU2MZQst!@S^8EFWc0}HY9j1&q0w$N62zV z$%n-tuyx>jx~Fe+EBK>>MBtZ2rVMTha+aPv8r`#f_R7s@g-uv-G4WoCvp{Bn!x0!H z6#nJM->u~^L&zbt5d?>W_& zLD-2_{nBwu;9=im=~9Zto;kbiIei-4m@)#3)#4XEOmYvP)>`s7xaHREk3F*JnfCTr z7LAA@05o(pVbXNf_c-nOaeU|G2Tuwx-AGRvCKiHh*>ReL>EsVZ_g9J?B)Xa*l7mwj z%~W$$m#nM7;1nh5_1Xu4jAvbq+NkUJUN}=o!p9st?d@4$n~uYW0FueQo)TB$z|qyi z+OrOTa>A$nFXEpL0ECDTB`Zo)jcb;zef#eIuWz42=k6W9qD8Jq&9V|lh-^5`2deK+ zU6e5wXUtQSYu7=BwnR4r+7zih&8tGCV&5xuDjuiiu>`M9y7j`eyV&r;&Hx%Yt*gC& zgM&phGF009YrDNB!OlU$uEkVSs6&3Q2dJq%>wy6*dZ!)juiL>wIq>7z9b3?bD9#M& z6i@|GX&u87vA@@%|E>eSm);hU@Q$HVAEtmRvpwKbL#=^K0xIAa3;CWw!cG{^TdR*7#0X|MEWYu{-9O zB}NjDhePt)zICSbG;|oE>4PW7H$yuLZk?06p&6661q-rdQ@e3xG6QdnR)$K+uC;hU zFIozttykV?gb@biz}2{E>6{ zzxVk5Pxw_l@6vT;@wWQj_nH>>dVcs-6z42OB;1*4fAV{bDeZqKVdTQ(utr!Mltz=; z)8Y?1L|6}nin1%Ge8pp$!B4krQ>Dj)4hxt>^k%NP8aaRZJSsa(6r-cvJO~S6ymGaB zQv3Y41FX*>qSLi&?e~)C|8cA0fj^9|ojlV1<0Q_!$++TvW&msPg-XtGSPp?2%;-5Z zAL;fdk!%F$6MWtyOMAg5$YY?cI|Yj~P$qtt+vTx9-apvw@-tA+OpwV%-G1+n_~AX< zmWgV@geYXo`MmOm2^x}1%1c0!4F?%tqZ)w$BofM}R*%U9S7kC6#50)!8u?e74ieD2m}{5zdb$}}+$zeh#MiD3jw~PSJ9=5P5?}I27KjZE zm<-G6Fd6yh@cAeR5jK7pMUnl(JYb8Bp|ZCy1I?ahZ6{o@YPocB0As)1oCWERN7wdx zW`S&OtIHHhbaII33{7mF)?mg~8;2l?p47XX{`|-gVwhN%>aVtALNC1U%l)hU5XU}f zZC^eIcdlxGzu(zk(tT(Wb-;E|O_;XW6lJW;B^K5oXEO;zlT_oHYxgt9_}FINPCWzoT7MTLRnMjg^^S7LeaTGg16vI;}{ch`$ zOgL#E1r}!i{lNvb$=m~lXPzVnUhCKBuVZ}8-#G()J6^aa;_F+&(sd)7<}m5)5Vt2mq0^F$5ru9E7lWR6UUSqH5xizyf2XxCTJ5p}9Pn=keG>-xq1-;{a~n zsG}x5n^;-{`pOUW#gueH^ruJ*goO0u-em!eJf5Q$uf#XDRLjjBrsBmM$^bJH@t-(Y zlm&j;CpsdlmW(s2`^rya5n{Xo!RhKm>76d)9xB=L)iez3ED&9@4>L6=?L2wXGUJL;gK5 z;W{aMh#Q##23qye7X(Tk2gl#%MK!q5(JR3;fTft>nE)q;aUC@46Olx zg+KGFU2ShATE6YN05$5jH-4i#opU7?y~fC*=U+#{gjUTEBDY%^_c!EOR{_loTYP~s zh;tNVSDt2k`z%w$S~d=3Ety4bnM}sYaE+@z(?$?Thv|yPvOv((n$v*Y%r*|zx^f~T zlg5kJBI9wQVh!(?@DLPSBiWz@`IV-yS-u;$zO)kc;*m zCN3C2feYT!+0u`yeGv~3T)W>PNpj^FG?ur77|<58LjWJCwuEh*QEPy=vGFM!%u2jY&Qy5Hu z4F(8+FkF7`*nhGK3nWW+_4q?)bYpJB`XFC(T9Eena^`}{VBAdNtPI0cqhzd>*m1L5 zVWVUP$1JwNts>)U@0K2P(a@^C*BVjw%>2!3GNfQ@4#Nb;l zw27Xg476bM?X!gHaLVl5@;l38pg+s6b^-B+g$ppA!9Yoqis325;?dp&%2O}~lpcP+ zi$Wf|-rJ~379cRhVt=rGelK2>0ldMGW!_S_;9bgQ0U??sqE8*1+zeIi`?=)V9rXLl zLP+BNNnVrNckydOrr*1)ayvhR91qlr5RE!8=DcSM zDDZ8V1n=snvw%at2XI)k#gelJ3G2r$bj2$C4@Hst8E?CDrjZUKJeT_$deFt-+ZyLepm2%rA%< zT%+NYo&FE}SQ@(QdoVzB21i$q075D8rxeq;0249gFXx$**r8WC>&=>H>eWQb5D5NQ zEpgxB7dAO0@b6eZU~qzRO}=?A_Hivs~mj^<5^nf@P3xI9n>%kJ9^5uIg$5=9hx z3yN!1a7NM7T2!9^{^zV zBkJC@=FW(p3e5}W?9_g=G#WWe*Y$zI`dtU|HqX8<&8?^Az*KyNBnzuySH#X7g;y}8 zX=ZrL9En0`|H<1;f0Elc0%G!qu*>g#teM7#2qnp}!Qk>_{?WT0)IO^0TjWq@qhwos zj+XWzg6pF(6H$&K1s5($EcjWFBPzYjzT(iIl;9A~CxRxXR-qh01c*`%W@HC%a#(5e zU3dPIkL_$PBH?!w&u7s)jP0EKzesSf`k59g#g(I7(nW-#fEGXqaCn-U3Kh}FT$CeW z4FPHsJx6Wa%m~AB7+}DvJZ`Qs zIE6#p_Oi^96hLwg_ItU%>-$)`u0mK>r0SphKV6xsu-Y8E6@FJM5Q}N-u1tD&iN)a4 z>Cy^;Eg+m)eHu?5-uCz0DR`$$u)U`}G_2@3P<^k&H0pqt0Puph4A`=4i*g@BRQ|YyP+L#)k^7p&~w1 zbRJjC!SPks7$Lacwj->;I_%i|=tJ}NJN)jcRX`-dQK`W+(g2_j#>xVl#7(*?1%Nm^ zYK4Z_EHE8d5X#Z!R){C;f6AA?;H{L$Bl996s}+vMdEVTTlN@vWI48&u7)N#{En}3^zz?KEUc!s zcxrf950oH|!3-?x38YpdvBUKcwB)qY1tVKN{jAev^QdK|;Q1DEky&P{@^G)(24VT1g%pY@_O}`uJHG5c^eaAUe<1OJ z7h3)&Zuea;*0RI&o;Lf%RxT=nhoA{I8auqV2d^~WxN){6Cze6 z#BC90Fzc@|DI$@H1VK{Vg*IrSfTk&`G|ykC{gj9n5h;dBlA%T1!TgsJ3~qkmf8HD8 z-arIJG1s+co#iBIH7`%$&GHgL5hbMQoB5gVcEgJ;e2A**fr#h`K zolG5CGzCbjRJi|X|hL6ragB+_DizPPPfH>RCY$q@lHm=RQiYlL4f zHS&yN@l1`0o;#{+S5D9Jhi=gOtsw{2%}*(cij`z0N~Ma+VWZxPv@+N#E}%UqO0!k_ zEtzmG>e1!D5=D(lo0h$REL0>vs3uGfqc&NZ!dM(i?0r5^2L;s5!c;e}+u6A4r`7xG z8aYr>?1x|FoO4lBuSeOtggApMQ^cd>aqSE9Nq zF~8(UGYNrZ9@$tUkBBY@MH6MuR8~<`3C9I*80gDei-N2dH7`DYq8>Fo5?c)~xk9ipsBK=h|(75K;bt;0G7=$&>I}ZhHtR@X_mOsoWBVx)^cs0wB0<_z} zeT}PHj8}3lI@38;qH+lN=mF$dX=aYKnUtfs3IglK!h?Aei-p8YhRu!fOIM%U3u(7@AGHA z9AY7aV2I=_Tx6w-63j+_^Gn@e!#USqaZx>}G#WYQ`bR&XAXIIk@md&?#EY)ziq2J> zbN$h1RBzs@f77{Ae?t2mE^I4tw^qc|qO%fFDSpHt#3ULT8or&`HQv9!%IW;q_O)H* zc=qpIH@uXd_Z=MVc{2A?@6md_`^ntZTCWq!hUU+QCQspgr$@YXD$5=UBb!j{nTA%Hf`GD z?GpL#0&L>F*2aiY->HZcnl=~M;DoO++FEj@VictaMk~&p6SOtKEJZNdpA=`+BJEp{ zh0uIWu2OQB_Fw8s6&H!t(l9Qbb+PO> zz1eX)wds;)-FD?hwzCL4>8gBv+XdR}?UAFu+rz)Za{h#BO^9Kc%1M5mwCn~ zJ}6m`98ZB#5UJQ*nNB5rTtDx6+sa))Mn+Y zeARJT1E?8@ei;ihv2rw8G8#ptl5>@Q7d6kl*U!-I!e%VJDEdmYyRSlGP&@=FgixQw zEJ6}I5;p~J81aIF?B^osNdbEj0iVBh|ML%j^WN`Q{*({*_Gdn%)wBK74&nG-mtPkX zm;8WQ3<&mZUU-jFPi?pI{%s=8aW0C2-2J;;M9q`{L&Qu3J?>Rsc#l)>@%fzk1)h59 z{oiYs$2M`llNhYp+rmj#kd$C_f2vXt%??d5%5bJPU-Mm_5_+NSFo6ZG@A@9%#?F>_ z0gb%;e`%n&(UZySD$ZeFFT6DWB)-eT&HQK&nQ9FP%!|Lxl9S>&{651oT)Lqo9(WIf zqmJ@KqpJeYSY9u8@ER)`Uzo76e?{F@B3H>Ea)b5g5)gbD$zV1FlRO(*6k~syBGmqob}ACio8H`ZRMA*{;n_k_ErdmL_PKgO zFFwooC=V1cz100iHx64uJAaZcFShPH7OVO^s1mFwfYtz@U$8vYeYobu|L05Q8{9wg zdGG3)ZePCoS9RmZ05lFsy&}ZtzZh3^E{a@6Cq|>c>c+z90BSH}X*?L;3Y@VswDv)F zZ2#R>#3RIU1LYlN0E2;&AlRvuLP#;u7$)ZRd;Ze5>>oE`DLhyZGOuuLYK0uy|5?m< zd#?PKE?k3a76iP&<}c4|`=Y!V`Bbw01Rwunf02(0L?3l2rhPB&bXjp)e7RS@`jc$% z1jC2Fs|O3-|9kr)-|`3705kx7h{3;}6yaPYa+ORfE?W7+Q@CLpu61<)?+CT*F1~T? zK_XAn{?OBg-#SYVvXmthvIUcj;$|i)s&jA8|I}ywh<$gVD13rGzZq4jK2X}c+VOM0 z1gjNS5ZRU_`85U!>pMIjm>p<`Q9C;y>6)hK(qjPc|9kOZhH}iH0azfS*$(qv@AdZZ zr!Vn)4>`&ejN2~LsKN|i!85%(0FU}i9~_6G(tIN4Dk%b&>8Nw=#aIC`dr#v5oHO1& zrtF(LeDwgrWpQ4e{82}jeR-^(tv<9&8|NhD5Vup7I zKx+-XLaK0KlEGD6#*uSwp_L|u(`-&?hWd6+Ze92^@}6IbPcJpS?qf`9pFeqguWljs zAj@hQVY;h==%pYjVo{^&S2+3IUjK3n?FA6qv8q%3^5F2Y@6mit!wq@2!Fd4VLagC6 zI1l72HbVx0>z%J&p`4lR4}J7jtNJ`B=vfLEpQV68Lqh|mh*QL4cWl`a?_YcTVu$la z6T$KaqXBFL@Jx@2Lp0`C7gZ7r8KnrEbEht&aOK8#4UMeqK5LW5V2mbpR{5%R@$2_} z3?0U!N=!Mk#SRHV%i3aiu{6ztWuU-Uk$B+uV67|_-sD*A%WhvQg;4fj2D*vRLKK{N*MaI>$J`?0{kRYL&6hrJT5_LE*`sR1^hlYM3lkr}_ z5ZY^a*R!_7Bn{<8bhaVAW_^9{^?z3uqCDr5+2x-kWh{5-@ABBgfD))RGypR3!aLe~ z+CzmIAk&pu=J%@3`b*SBLqlr~Z2b6I>+E<2SMPWI^&l6yD7xdAFC3n%To-16e}o&c z%22UXEc@-?#|v${$@Nb>CYFiVouo*ej46bAB&gEqu2DIub=f*#a)bQ%Qg|9f*t30h zy*)%c5mDLnJ@1ohN~H}SU~0ojHDQF`>+AM6v{N`vC_WqX(K8qS(^vezzl$QV7lgnV zMBwG3@?6K{vp`R#kOWWb3kB!9l`peR129D|M;sOg1C%uBDZae+C)j%MAP7JF+j14> zQUn<^BIo*F(>>_XYc4blEh9|moa}s>Zlfs@NvM04ty;kMJ$e1B&*nQ7F|uCN3W-5S zD~sTAAWBNGQmrJ|XrY1i0^}ghw{_ZRY12r#p%h51Q4u4RHjFP7u$$ZzwoMPmDp{a@ z`h`z^b|laAK`c1vw>#Etcr-c?$flmhsfZ?-D^xN!?-qO`9=1$S#7q*R zI4y)Q#TZ87SVXDP8;NsctN!5d{MHGo;fCsxK*UHWLwTnXAZUnSt@==*CN;-tWzZ_yR(&hpJ7?cgI?A(~HL2FRKuJ^M=AT)Lmeeb* zKfx@h;+$Jj@BfPzxhPbIL34>HSdjdhf3A5Z=`)y8wHOJg-gL#bE2mD^UxGW95+4*& zmNjt(4HBdji(wQJgCJsdd>`<=zyUEPDp#3e&XH1vM<;!NN~cwWp^QkWPJ*P%#nq-g z(33U#r(USe{B@@yE^A$PzSz{dBMqBSGwt5Uj&*avxY{-}vW=lE>h)XGPKtO${om)_CT$&lStPZtZbeg=-gAr|NC0FSF{a`YZg* z7q0kfeDQZI>vlnB9{;8X9a~=L;>AGjGkm*+Hu&yJQB;pyrQ$NL*O&B{Uef~Yf2+Sv zoA#e5ho9177j?U+3s5(pDjC+`x>bv5_FvDtXf(PIYj|z(|DV%Ur}3xndjVabBoq~& z2}ICJNe5C4DW(^hy$mz0s$kX&pdmQmJspbAdwuV98@$I9luD-$W)0|pVpOFmS(Jxf z@KMj4dGzVSv|}~1U1jXDO@Gn8{bPBDzFnLJiJ2VLp7DbpINk+$l}@KpX;punRPVA$ zacptFkVZoB_)yL{=OyLUXyf|n`y|v6z4i4?N4QO)zI$B>V&BqF@eF^DuYP>*@|0WW zF;FpUz2U!qizn2VtX$$=$`ih_V#;`~lp?4&S8*8^E6!D%bH)C_6I;YRaWIGd2@y~9 z`eQPt2LR6JU+WJ)4=YC%@o0EyZ*}Lb`ukQDDQBjl`vVk{8lm`k5o49ah?54oKv5Me z>;=REl={7*>`HvnpQ953-5$sr=PDzilyXlcU<{E?MMTzTfbI@ojOwFb;=_O8?=;IF zI`j%ba>wTb%XcUZ-lSV-n_Zoj>KBiHzQ@1IEzfto8_{Y_wm!8f(BOvrrqm4%dVD#j zkOIfoPFy;vN=%`tS3OuIQcaPRvHn)Z-^_*BGaJ%(TV`>CMCWU@uL|DbyS@6yTq<=F z%o5^Ux-yB>t*oz1AT34xF6+oSSE=;7dKC3XQ7ge{l=X@hhW@{}I}f!Ba0Yx)D_L5T z4WHNk0f*+W%&u{*qwq8EF(5%;bUaZ^F8fuXgUYZrwTO!)0SNdqcGw z(0DN#1Q1EI8P4qYY#|5tbgufCRX=K{B2~r_EU3Zd!o;H59~C+(^~BVox*QlsQ$)ll zd`AGly{?D)-}o|}Y*6WS4NZZxI1E(EqC}kK*#qOrEDst|U_d@WTeY!EDxBfmxED$gnB5GYaZ9G`1Sc5X2 zCf=8cw`8^*x<@;gBKRd+3~$t(D;A5+xyZRn5@|h?k{ex7aZwaGSFG2gN_Ho@s6S!6 zN47A79Fss8Q=Ss5f?N13E0w8ArV3n8K^P$*0$5rZW9!H9md?=H0upY?g!b-S zDZeRY80kj!x(#b$y%DuUBYWce-o;W`Wi+HyD&n@dlu|L}cafIcwR`tD=bRC5zv|4E+ZsV{ZMzgM}j=OADDA9!L{@Ws-<`LLA*#v_O2``$V-l9TK1Jo252#5Nx# zJ@E2~P{@diqTt5U<6#{-u6`T}4&cze@8d35Y-no8#=N#T3uFdMo0+lAU=Nz6pkLm8 zfWQzzGlRGW)3DFr=BAIdyXW5V_R~(A-o5o_+#nrmXfW#6smq&;hNU{0>G`9rF$}lC zrL(=+Shu>5s^c<16q4`-1z9AsJ9Dl09sluen}6DpK=B>quj@0kwmY*ONL1Jt~0K2mplsW*>%j6 zW+)x-&S_7eoOh$YhufFkhu@ORfb!gWQ36Pd zR+Z9zbmy^@;~Gu#)OmJci0JHFbtMMsk00~@?dl)EK-2V87!(vxWq2)GgBj^;A>ijN zwQ>LFJlO+@?Gwws_Fz5>tnE2%*XU-@{Vw?n7~Ltg-2-`*h$Tu8n^jBIV(^%6&Wq?r zT;C8&xgp=EZe_fmNXp;(S&vWme)4<ReR6^2NW>9&_is0g9&fd#>GM>eZdoYmqR%8 z*wqjE9;Cj%3r3oft|$t^T#ajBoaFrywl_WE4R5g6BuAI_3;+4IFOOO)&OpI| z6u1Z$To&g~ZNGs^WVafrtGT^LjT>r;Qs z3kow(ynn|a!9I78x>bEjHLVG_zq;;d^cow!Ku<9A1WMsGT(Oj3c8Vu^jYVQpTEf#H zDd`F*1&yM^GC)a)i(ONJ;KvDJfpFznFAe+U$7v2u&DDs5Rg~e=0R;kZ8C4t_>k}## zNS9b#A~92Wm{2_$RoeTacV+hZd!F!@Qt3!TgJGm&_geg3Sg7XbzJAQ?#)3P>*G}d< zr{}$77ppm!P8uFStVyl+Y2>{Uk*vQ|YI5!58b#TaJ%sgfrTzUn*ClE(<$-)E;WmXt zDy`PP#(5hqy?Wt|x?(B8u-FFVP|gP|Ji8ToG)jr4fv!d>MGT_VP%*i~nQ4sC^?*dt z%n$~#)mDS+(T+4!FMfFo0HL5T0Z-&x5I&9WPGA3qkC=#UH#{2YhEjuDFAWu)#}tv^ zqSp_9G1Y6_;O{o)@nyeubb@^Rk1eE;d>ZKwozfo6>}cP8wZX#rsIqULW@yIK--T+v z`&P4b<6P`xSTUDZ8)&m9asVZZQ7D~gwXtKEQd zE5s_&n%N{JJu1AE9Z@M>qSKWsi7BTd2@uRwypcGtHJG+k6DB}FfC6&?wF5#)1Mx?6 zTg>)IS~aaVn(9-^h#AJ*;d7>cRAI+oD!XW$-M1SXDdMN}gfh3kcTom7wyc^n&ZHBO^}R|3($CzOP?5$4k1cxly(@#2 z38pE6O1BN@RK#-N8%DL;#nzfMR})1nW*LoxwBkB>)>)JdGeWMp8cSDv@0ytMXteU% zux|S%k4}#N6YS}k(R)mIAfbA*#u7F6h3~<+`s3|uGc7G|W<=35p&6W_T<<+j&UjDH zMY-7^dyw%pZSuO;AU>&m_B;Lbc|5ket1ttd(%P%4s5G^Mkt*DL*OMk^A`Qb?Vv6r&VDBWjE`Mx(qJPfS_)m7(-z+Rk$} zMyDbe5*v6_TPej%Y9WKA3dGheRrBw+Z$RF@3>IBb zh?Q8}{BdS%)qnG@uFTP&#mJ&(zvqXgZiNBBkq(mqAnd%_Oygr*^KZ3@5Dmk$nPt*_OfJb*G1%23NkRLoE+?XsoR^6vlnGk?_u#1|N^&B_H@ zE)>x&qD{p8Pr27A_rF)(f1TSk>Ai?46cOTwM+`5hsNm)y7?LtY0lY!z+tIo(mAc#3 zHIaxvBd~o_EHX`r2J;wbV*S{w(KBD)hDn>J-=XV*PjTd&j{?FDn29t1f(8I4f_8t` zCOlpZW5afuHS5v7!27)tdT9)sDgj7a*B2W(FM zzU(qwya3t>=;gf-@~>b9+8eZz;jHbzd{q%9s?`wlI##8SVOS+cUqD~QlppiqEd>-| zLfXdV&3D@D)l2HjPx*BI?yI%`iJl~_quKpi>bvylq~=V!@q`U z0%0%-o@h+#sECAn;+>xwwb7*XLrNVHQ--08m|+BBDxJv2(m&?A`{3`G>KmPCb-CC? zo^N^y=;9okM;1!zV5Cx@R0+^(|`4p^}BuCoM}V(_gYM~-$O+*8(iE9=2KwL=+;qHGA9lb05||^0IUH(1j{oZ4if_`FN=%h zK=r*i3$$bk8S7k!WBU!4THJ-*%20{Kdob3d3?q^q+5BjS41C7Vzx~f$4_Y{8y#P>A zrLFLQ=P#c8kY3gD`O~{tPveP3hiy`V3yFSox-E6Z5AxvupZYZa;Lh+kFD10}Kr?1DY98vcv(Q zg9(D>B>eik?#Egi5ANH)1yFgAe>ByQNUKOdrIi=a-(+uncfwFAP+z{SvgNQ?&I{Qe zP`(5V2BWSUp>1su!30=VjP-IFb;hir0nf!Z#lLslp#PzSj3`|mi#7Bd)8nB zTWYRG3latk2ofea3;=ri=>QD6Ols4)%Pp&QE>kql+?0qUj3&dak@f44L@>uk02dL>VOjapoL`4!)&2m6MHL-LYiwU_L6U5310rp|! zjPDhMzyx?4&Z`$5*A0bOD$P(H*~?CKzEUSfWB=T2Yo_;Ke(#^oS> zL4j?9g__MAD9IW&Yuy28(y+*%1-!rbF`0?VmF__J@jOdzyCyELfu5A9iys{0WW zjVh%AResNcLj?cPV-M#=0BEr34}gY-W`d9wYsCPQP3XGp&uA}bunsf*R+g=+-zE!@ z7K>XD6T6z`Kp2$VC;-=DswUD7u?96ebeLHCy((zr;8@-jpUQ4>A^O~V8HQmfBA;APTMKncC5tA8k+F(P%EJqSWP1KQcbO8D; zAmMAB{!3*WK>4=3)!6n)R73AJBl0`14>Y}>XG{kYH>nBxuyTZQmgWUyThL+Ae#Jr< ztObNHX@Op0CueHZnHRHfd$TZDGq<%$)OIXUDQfDjX+`PPIUrs2OLt6E{W3bhn<$G$ zmGQ_#j?s~0m~vQ9(n%QX*;HTmt92o^$w;ZdxyG3ujo$W_5^G$LH?pM;6&8J5iBsts z+O+$@3rtLdt_@;fqmYDkk~E~5Oc6RUxslH%hW2M~w9q_T`|1gHJ|#OzMopmj7Np0a z&Q)onsVSE5eiV#EtSO;Xq@g+<*&WC~Gjq-a!7qV1EU3Mz4ghU3VTFn4W_7ckNV{2% z28b^r4YE~71C#XJBdP^vhoG)nZ?Tek_B7uWf6!d`DUu|sa?dxYn2IFUB-RJK zHepf~`c{$CGXp0EY{v?bf35YCcXqFWd(V9)zb#PeQ)@D*ji(@%9g_FV* z9L|auoXjLSgFM)biqmkvr@w=5odsE-GqX0+-X6~cTSk}mmbzuV1*RMZKuIU(&24W| z0adTgRp~~Rh@=yS;j;OfP$8}+jDn%R-NDW)?>|=aWX>P}_|a#B>{}nmJMvjee~sI?c}5`D(wUc6QM17stA~J z60D|0j2?@m1jRg>$whPe-R$n^ETWOIjljN2^bc_m`1}jK`k1P}kTC~$hW^g_RFe)p zJ#UyEx#qOEzH#?6n+z2*5~?AU&Zf@n_0IY41Johrq;B|(0tPB((MP6+_)LT$L1Cf|YT-e|<$wy~m z-~+aVT9)m8$hw0lyuXnin70RS8t>`3`5uC6WclDzPgSn=8r+O;1xLuzi{>@3Qz z^c9j|rhtR@8pP2|BCr_{f)^ zr#fhf_bNW+sc$<61k16c`Jid`#e?mc(4G1+enY{oq71Zl>84f_jH{wawLh*rPQUR# z^mq59r-w3rTSB|r<2y6$nP4Up3gU<=N=lfk_~07T9>(!^Dj|4voK@IENex3K#6>-50Mm z1}Oa!T+_`R(VjuP zV`?w5bX^4@2S7k&fwI@j{RHC&%e%fsZP~bZ%q>(}zJ-&bf z^QpB=XJK~bb^}Oo@3)6LBMP-NsVEk*D3TUm#7rbdvu4Uk_|z~+i$Ad`S%Ya*^P`S$ z9Co#jtn9vT5CciG4Z3pQFLP>Twp2Q=F0+K8H?B;}8=^x_N$&*oK!;4!BT#*0` zpaUYz;T&q>(YS7?h+6Fn<}<)BdHXi71$LBxW)jg%OqJ1OuJPnC$;j)b{TWIbu}H)< zXO*Fh^$*V8sx>b8+D0z|3TP(3Pzn>4dd)#OtSGw@9CG8D_HaM%E$vc^v0E9+ukpAp zi&KdwjHpd_QISn44-~d5zm0)g7)|%Am{*-zOf#9T`rMwCc;GZUwsCmt_7@!?Z&xJq z8q6r_OV~|HCdG@GTqdZZg)CubfkRE{h4-xOkFNShmk-|h=(2Cm^1;*l{mYLjAB_5Q zG`8d&T|FArI2>BQAA0Xm)x%F@gKEz@%+_kcl+2Y)C68WGF2r8vo4MY;hx6g0QSCKNPk};vVqbyX02=-v-S5|wR z-lQqDU8VecAfdY5CiyL@?QST%pQf$Z$hqAQPWkodC0sD8S~D*C(qQe>x?`WJ*O~> z1lvbd{WZs#7TX~v0hfMt@2R#n_%!;#XHKe}WD5TWmF!xF4hr7lPDL83ZHbvM)*DA; zdz*SAK7&g~vQ1k{AyJdenVS(s^8mpfD$W4&j4vk6?lar{Sxo6iL2Y0yVrg_ZjE-=$ z2G>B6fzJ-|4v6Y4n~&`{*t5Wf!E&q<-R5! zm^mhg1R$r(5%hsS6)% zBZOZ9_JKw^6aQa;I-Klkli7@y)DsIVh`=Uh4T2DxBEqn^>^OVjbFRc%uD4{?$3VxgO%UZ$)9~w_h0RDbVU6M7b<(*o`Ybvg$u{&ie9T%p0srjVhZXfpw|%+tYV{&V&!qmju?I zRUHf&ZK4S%;<0=dz1`AXovE!OyB8Et2f$USQhJenm#+KR^Zv-mzoYl3?K#V(mu|&X z;Y$1;Sm1Cggz4#fb{F!t@@S&j1i%vJ<0}1X?{(7K6ZIa*r~GYIv1q_hk(i-kF{Kg* zZy9MvEA%zc?{zI`29B2T-EhzS%1>j@Si6B0h1RE?>Gp&B;T`zFPR zztp)ZZ8VgBRKub*v!kiC4cfc!7tl!mwBem0rWMKw#mkF0QY0yH2Jz$lms|EI;144J z4#7XQwE|!Oq8Shyj&4jVBXa*lV``in=y{bx1NH}W3?LZoi`#)Mk%-DRZBnV2&*1KL zp^E%u42BkR4n*I(3;(+|QugMEoNB_99g-}lP6xiEwc#N*c7^>n@+{}MLgkt_zWN4F zD3`|V@^k>!VlzbW<*f=16xMUF0DxgvdzC;_!icym#$#{+$i~*E zo0R{1U2Y^UEOi>2L2v{FhlqivZ~wR{0(}MrOkJs%R83Q`(6UXn{epu)rkXGb(1tJx zY={G5h(LtNcwk^;AW+|X`E@4$4F?NZ^iX-!PX-MDPIWSm1PtYOd(4Gc59Cw6CC6Gj zNTM0961sWG?uQ|eItTy~@+RGd*QV`+I8o#RTQcEX(QQ4rD+d#g8NL>q4$5KQa`3$- z;Rpfv|6Jct{_A7CN?pG`?b|T?7f-uP!ANBz5w%sRM7?rZTz%=f0u5+Kl^DP_s#|QDK5_Zr#l}M{-v4B>Eq<;oxk>d{qxRz82^hi2?2GCQm`ag zQPRc2LYufo*OE<*9Scb`g8;w=5KeNk4J(*tcoF-)5{db*?}K>kvp!V5uB&QbvoL#? z!iB1i&zLf{d1uVS+K4E}kM{u2?&ls|gGDDS(#&;e=BKSmRol_RLThbxOZqE8&K08+ zK{3HBDQ;U%$K@bVLw?BHp7Bl=t}B3Di!BhX2*p&^ZE*h9cPAQ*bW?BH7a`5zpX`WK zHesl&5s9hPmLG8X2XvXWvdmP7J!TWP8gv}4w z`A9E1PM(VJs4o@2uBpYMmXw_FLI4ybxy9RRd;4s=B+)RTnKa`_&8)+@YQn^hljK97 zA=O(lt^6SBQ(tk&X=rQ&AZ%8~zX`V~C=cZQZO=xG>UcoV1RUqsW9r8(yJt<_gh(S< z2cFW828Z$v9O>8sYq{blQ*jxun2PFCkxNPYuT`%AnPZmPcmIfF!lH_>e0gfC7f}9; zfZG(ji1od(r5fE-{zbsHko2wChJ;cop&}8Z@&4)5B|f_ZIhZ=zy7}|^_T|j%(%_tj zt1d5IuLy-HLV5TXrD8NVT8uI%t|+5f|!Vf$6C zal7BN;IfL4S1P8O{M8$&)aCaq{h~w*G>&wANNE*`scyqas6=eL7tyNvM+P*Yp>{Us4BV1VE2QGI0g*Q5oCnDPjfq|5=N zX(}d3HDTKCA$~^i2h33wVZ>$#G+-0wkkd7|#wH;<<%WdOooy&}Dmdgd^ucgzRf+Hd1r*i+Z90CG%uJ@g(TcEwsU-ib0QOoKTNp~<&p3^`4^JyJ@!|)Xz)=7 zQ^Yg4wCGAj=iF$DASq7jZzneMY-6cg3Fa}-AP%i2Oel|PP3cW*Jb-ERm+~0=`o!Hz zKPdt<(-mChHB~}IA}Wzp#-_yj`!;%9ar1Kc_#2UF^Pvv1m;BUL1y#IiIq%+kvLusu zQa`%;XZsK2fNx9=V<;Zq*sU)(;!#6Hgtf8Y=M z#qB#xyyq|OD}7tjz~`a``KorSQ+qW~t7PXfm`#t^xc!E|ibDY(zXCIC1U3RFThN9| zr<8xgs0#aS=hN<0R=9aF_j0w2sHIJ1rq)Y)f@2cXgr{~S*i&WiRjV= zoye+4tXoBl2A@WDdkxMFi07_}e*tK`|F5e~@eR)Nv&!kC518I|0fs7oTHXQG%!G2u z;lJIX*H`>gFDxEO2a$4^L18jFQqnR!jFN7n<1%*d`+HP&&&bbNj#<^e_TCo+GhJPo zmQ2@;X6UKMfEA^SvTH~iTQ>ztotk~fZTxIBmgnktlvOd6J;I+VbvR-nfvk`M8ahXC2onqOb@UvW_qOyRaQj|L!|<#`tCEo-LKDaG@w5l z9VE(^_@KL7HDSVHhwD0LzxOv)#FV0P43UBqT}{C>lW2sKQgfVs1H*rB z7jx*R7)XIdG*ZN(AK_(Q=DOE?nF7|5>1p3Nd2r)cLRNOh8r7th0BTa_YT<%DbUNm;0(3)RBYhHR{?JYT&=1q8h=9*QGlXr3jW_55?3F+PTMo1^WYJPso!P4w zAsZzfXo*sc5Nl=|fugLdv8}`Kg`-TEH}#6t-zwecn=z+CYH%Zk0S0*N{pmy3 zF4_ImK~q=*wV~3#YD97C>vSFam)^JzQ9XfPE3*VcieS#Tdc)q|z5e@l%jn{-i?$Xk zkxPoRvhGHU?cgzltNe0I8UDI^1F?H0VybMzz0K9Pzv7B$t3Q+lEfsMgcK?U?NXdPC zCZB^l2j}e*Y9~vyT%sW@Hp9PyNG#>WHn_&ycdNJeQ@`1jj-G#4xB7W7_xHt|VR24$ zF=uFGJ%2{bUC@tm&AD@W{l7NIQcf2=|hF3wp> z_g#`m-#G0TVzeNM(*z=cO&Zp$fr%83Z;Ig8JjwUkgXV(t#TK+pd$xkBhnKv13+(Jv zs@Dii`FmbSfteMHBNK@xah`LjM(!bQoSx}i9o!Ynqme?vKJz|d^p+nQTUu=vM1=(y zBH>4$#&rPz{Uh#(PgbrE36lsRS#w(KSq~Iup!np6IH6TVeGX%lL^KLT2#S_FYm1V-(BU#& zZ-7NRH+{h((i95V`}a}00EewWT0n)NSs2=ii*7a@D=G8sQc-rLfLfhCysaXPFeSUR zVW`N|zvl%M7+kSTU@^kP|A)!dqaqT%SIS$&+AAAUdNhd8bH|Np=L zAdYIn1T(Bj2+aT9JO(;;c+nH~r@_ljYz5mhOTKHau)o0*_BUK5Xe!!zqnq8wn!e}T z|DR{QNFI9b{}n~Wgt$?0Rf-^rlH^sKm9n2&gVC7vKtAR#k~Qv?F58jSgb6tCJ>RqA zCpym2en76n@68Jtb8zogq+(TnlaKX@EBx^{Hv8eFkb{GRIOj4z1gcI8?OX)@kJc*b z4HGatWzKISNGw}FRB~Sbp>pWiG+f)3d)sks8tz?v&-(EWFOoyMHL~qUbqyIh1hNGG z-m#6quDgzD2CFfH!xUpQ#ia6bUI?mCd>E+@*CtH=vorcyp5XOexixEXjI1vl4~lh& zxJ6vL>EPtngOfYla&WTG;N%Xs8l2o=#pi%*-v|6=`({mxe~9tzv#tUf`C7|DMeH^^ zI~7od2T=d!;30N21%w=`O=b&U-j3}bRrbBHhe;a*FSN|!iUj+P+b?oBguzh_z=qG4 zSD*2bP-hKb&#J$G0)yV4wkH@q{5O2#4Z$b4=<{Fx_GgAJo1Q%S=oYkBO%8~)O1pH4RZHBQwzxV>i2O+Ql7A%D5SEL!y6wS30B-+jCyoaO+g zD$G#v+1&pje(W)O)las6&qNHIaXLB-#E7g%tjh~gWGp6o5oU+>8s6RYh+X%lTa!jJ zR?8qtP7SU@9zwRV;%;LxQuU!AJdMrZ@qM57OR+cQ3v13@zcz}ZXPawa%IxuQA<0F4n5irvOe1lgt$pp7vY*%ipaJN;dy(CRG%`qb|FHxtV&X{OXLIE5?cHDN zFW5a}qyxaxmxlsW!OV!gppEK8BL{>I>^;2e$?O)6@83K59KOiK?Bg?FEzJ&O*5oz* z+Lf0HUB+P~yBtbUqT+Pb1Ynfxy>&qb>MzIwN9^954ZVyJ7mmdKpugbgdoQ1vnVA_H zniQINxjSRun#RD$<9zlckFM}c?d-7p*&&BWa%?%Xr}?|A-uEGnI%x*RRQv4PCDohgq49BdFrUyPIJA<=c-&21^L}7CJS)@yhH$)_k4R7R-lg>}n zbElvCe!bJpTfT+VUA0?#VnHA<81(xDni(*Y<dWuD&L?`K(Rb43AW7#FNIas9OHhwL z&&*IR&=)fmRfLfl4_h+&&cqKKKEE;pKop=)w9J?D8Ea@@-p<%UHMmX!Y@Yd&%4GJp zK6CyIk0{r8w=_94_u;gZV&LIG zYX~U6k?SPVh8s}p)Ca#{UhW2DDm7GRS28oZ)h9r0ryQbmJ?p5(7X&HO z06aN{bd<#jDmK#*ELza-`e{a$_P^jJUb{hc0rrIh#}^EX7--k1qURfee}V=y7=AUx z$%R2$I0Ze)-HKy%I+a^otbR=XB?O#xaNFnO=% zhhX2_X4X%63r-PS>gF5R{rKq-8{TAJ5e0UhwrDAx_epPj zmE;G#)bm|eD&~t{IE^H&pfkBeL{g8a5bhm)r4t)U~kX(q7fW` z0f41q*B{7ZedDT!Ydmun2wM`glqd%cP%XCjQ+5Ui<*<($Q-RCZxe#0FGyp5<0P+B7 z%AId={q5fx6U}Z_1}UXDX}$v+3|>Z42}KIWre9Fs1+P_(Ym10K{#Kj_fIyR2>@>p} zqvOdvmMIg3BTTT$Tx$A#{FJp`r$PV;Kn{U^_T8C3loe*p%#6JUu}t5bIgPpsz&?>N zeeU&dzDEgWuD=viDt&B~1D36;pT2$YbRGi*f0Ee?V#9goUGuz$ybD%OGU1X)qhe68 zm01dDrII3V|H!yeZ+Gv>^Fem$qq&a#lGE_0qb|Mrv$(uwLNys_e~G4()7@#0Cv3(~ zAYES1G62X-I#c`M{>*;wSqFeXSOZS^Vemqk(IT#l3cs@%tTR!Xhl?~Ea@xMKcanMj z#cvsp!L9c|-eqw&bRjn7ol4CF5TsQcuI{!oarCAeb_?X<1uPVkiWDS>EWn1tkBcYZNo)vme!+>UF@ui(iLf+eGASq?~L%6)lU_vp7}NRzY~P!QI|{H_2ga0kHQVp2^I!OY9FXz6)>&PrPAPOLE{Zm4|o&}HMXV8cBDmBkC}Ocw>h(O zeFCt_gwO!d8Sku4m(_$xfE>VJ%c-SM59ixRsD#L1R5I~FF zw#=-I#!@&$2O3{J@kQ%O38sAo{y>Bd5fdxO9EOI?+P$vsSj}AaK9oh&=TCIMtI(i- zXZ-<>$l6w7G~lD)O1U5{Cx;vX=Y}<&r>2(KqFr->I7)x8tvsx)3<)8 zuKYKX1g|M5I=NVkR;+s14NvkxAM(ks@*DRA${RBRk$RO-{_E4Jb$^Xhs|aHb#qdZE z3c3xDRXu$}rOm%Wm;q)IXyi)2x&uXLd`$H)8~JzwV0XVY&>&6wjh@aq?Fko+zAw*4 zZk5QUy_WEj=Z8s?L@6w;b$t+zU2?>)VD}pxvi8B8ke&uB>fJ;)?cFz8godH_J=&<_{y zIY>?G)}$5?NfMOv*kV2hU$EC*%q&1q6;~#KWd?4>w{Q40|8BJ>ab$)xb zKQktA0I}dK+SI<{-5Y*?)7p_jj!DUM1r#Fjr(qKvijt6RWdR{BAdUUi)b7l%qUV?X zQT)2Mt&j3vJ-Z**?x)1-K75Nm#=#OrO>!zPv*EJ0ecSYPI~x$!3P9mlwa`W`n^)<9 zG!mNJx~w`3Y!-sxGEhhDWsw}$2=sJLe7xf3HiE|9!`n=7u1(Y_ga&crrEc3XoJ_1c zQ9_)PgQ8;n%;D>rY^40q2t(bcB`}k+-zXW1f2|)i>$14SIv=3A zn|>L!Khr1?2n;%IvBMSdSmu;l{`f6;=yp*~Fsw}bMU`tl%Xu3veS49F^4p+PI^u;yeW0my!+?6Fg-O$dG#^Eu5lIsZ1zEv6=QazHS%n%B-l4i|sbyraq*t2@LW2jGW)WQH!)IfDKN*HS2ZmetdVpyy?EeLX) zKbqW&WIEq00j=zOaRt;`%j`KVD`tLnpl!dM{`TjsJFd7QDUO?J(S8zXD_M2tqNuXM zxuZ6G&?j~s8p?y%I&90PV#;kW*H6FG4u)*xjtul|&OC9qjYI`mmx zFcM@71DHD_3Q4%{73a(- z3v+B@&Vu}UN0s*CJ3h@5)d40G!~x_$<0F{)da6$2ox<_Sy*g_YMu^HlrPppuxe&W# z^qo0+pZj=KG_|4GA8N1jLLOU{nbbZL6B<9!s^NMvUvhK#0h2QM$U#GK?VCMRx zmDQ6I1_o2a(~3nGop;`ipFY)4Z}?jmsCPjj(48vVaGIV1CaMV&f+zU)zlI%mCZtRU z7O$(p%+9w-bzs7gOHrZdpMUci=rPGQ`Ik{ zHtmjUYoZ#=_yNzj#$a)y;zt&LLQIxpCp9fv(8nJ0oAU-kdS7QYqJ@Gg0p%-EDG%fu zM;1Njym;C7Kr>8#BFi?le8zlq@K;B=jsI6?6l8%pbDCFdz1fb{$(hH$Re%4?{uElR zshdQ4a#GwAnqR8zu+o0A0p)FlN>Cd%tqE zHSl`PV%Bo&JPw}t5O-=YtquTJMU$y_v992faVC;b%7xhTp_YTD*a9%;u>a(FNBmL# zsasuusgE^f>q{-}*A8|x*I-6XjG5qb)s;A~D32|+MTq2K2q=l65D}?&6GAwStqOdx z2wzC62?9umm#oAB*4k2>!#vv#stBV$Xu=kg9H(U8E#e(V7c)@Fxg6jj>(ml&$37AApXRcid@IVOK@gsBYuK>0sFulB9MB)74bG=lh+f z<`Ztnr&PD9|2nGAIysI*sKE?&j(_${&-*QLE1a`956fD`be4yT6d|bHl)zzf-p&_k zYc^pcr`>*UAd6;x(My&Bh2fuw95We4d8iB)ouNDyoj)UT; zjk<(5Cp#CN=?1s{j#O_f9XUDSFQL4MRb?9v)@Eoh1QZm@i~NdruIak&+V2*QKc|2( zznhxN45aHoxOkrSwQJS>4|i@;P>uNUWQe`R!e6uC;|Dk-#6i&o4~ z%8l4Sukyd{!41AIN@_6!paBMw92Bxcb!29zy~!I~e%+xmHginN+h<6a>%gtw%?Nor zkAXgIAeL5}QmSlQUe0GiGiuKU6X^ItiZej)kMkk3iDx#{bE>!fXe>Gj(G2~?b*=gl zJ=@k6fIBF6ief_PMJPz7M+vbg+{~nflC9xZs!8S}YkLJWlKBPzaoC?jTar22JfRg_ z-9EJ!0Sl4^L^(0!m-Im1NL>F2wL~u!a_H*Oh28RPm&G46Ye~9xtxq3}hpy4pbH77C z#0$3TPImT-1;(g%yl$7bTUnQ$9iePc{D8vatsCS{4+-Z{?wV!r0&IL zki)1Wi&(tR!+qv@V;Tn=B?%KbvK}FlR2^qVB++X`UU$;pP^N%{=e)c<7J)cSLhyg1 zZsB8?dDfW?``(}CAeMDCzwFp6?ms-H>r>1y(nnqWA^(9(H(dRRH@v;xi1HgV5-N3W zed^!?9*eP&TUi~?XVKLI{<}J+5vaJ#YEu;&b*BH2@3T4VX0tF047hdnHX2GPBjs}# zG@nh>CiCGXZ>Vq9W7247Qd#A)r8BEjJ&fgbYtq3?kj>n*KOVovkmA-}gV@3)SCz~F z4RnYDM~eoLlR=N#msA$?dO58jBrreh+W6?|VbxU?I$zABKSEnl&oaJ3{X=ATMY6a^ z9A?T9B0};!Dy9Oep=p^~e3U#69(3y{T{LS_oq-zM2(b8DW1ru8EiWsUb^Vq#LOW*3%$G}1Siw;dP7iofPTukXk29$naptXqFD$~UJE zrn!9F`Tx|=2x+ro-_35i`wdcViz_vSMF@*EeSeatBel1dShr~m7$zEQw5BGQa+9S96E#Z-qN23wvfZZ{=|2Jx_)P4 z(}#Q8p|L)@8f(NWO~Ep+IlQ#_Vm+_5`%V83-n)?sq+Ax~FWa;}@IxDAdseFuQWMKg z>_XNOJOLH~(7H}9G+cC^cKgMn?^I*pU<}`k0%~11BTDles(^tWI`2K}coz-hIwcnO ztnR6F=di9rO}gZp0sOL3gD=FXIP0_K?3*f}k+pXzqQLR3qi-A}V3T2?PLIuVt4F8P z#OP;w%OL(Jzo;ku*_N)WWM3NqNgaTSc=V30)iMtj;g~`q7Uzia6-2oF&7+WRhYRw{AC z!TC%QBBMn!r1qliJ-7+|{2wby<=f7;UT$%vpG|Z0%!~WkG`KsGk^o{P&M=Su`3V;XQd2_*IAi)J90wfxe`XmEE5B zw6|vg3+F(D{NSh`LHT!Gov949rb%Uu8IQ?TJ)hPaDj)`^4r+U!Z7-jmJ2WgiV2!Ew zVF#O$oC}L1D!co1juI+;?i1%Gz z<4d4EaZf`nZ#?(GtVYd9%A1P+6q2(b$0g+oa2<%DqZAee5q9@b$JA*J`BS0MW7yg@MdM5QQVLN037MSy+ z{k{aH+p?ho$^)pTXFV(C)=Q5&@oy-2>km;8D%`%L4z(9j?*sqWvaFSLA3fi{} zQ7lSFql9Qb<61{8!KvMFn3^Gg4e5aYeV-qLyGPXnHD{e5S}cbllBZGMXxUaw87Y-o zbN7aHQ?~~aV+%W(o`JmM8*kO5{dtysUzZL2i9QFirfRJ5pbnTQ|E|T>N3v^FI+3o! zxutuN364!1BN#d40^YX!*+~;tJk@9f0_&7g*@%jHb#ghIgbD5Q`0oqC1kn(I_Cwln zK*WIX%Yt$un#)slvU1(h`RwjZ4WQaoCC=ceGk`8YeMt|Iq68Ac0!eD;&zcF1Zl2y5 z;iSN?BS~iBc_90s_My^d#c{@94ZnFBbP+*6nUU}SDx&<4knql)*IBx&gB;!hFf+W` z-WOXl8|Ds;a(2|rgfc*mauwf|NQ3g<7|E)0*Q?a~0lpn3CLkirHW6SaAp*ZP6N3&w z-$fbos`upfn&eOvNGKL#BvfA#6cW?N6sDM1>VOt`sv+ zQ3e>uW3SN$0bMyn0abk0jg+cOiNifvOJ@-Y&RG(Smo-HTEN3kC-`CLe+}Ie)&V;f- zjjM5ua%Evztx5ZfWuN<*y>Fby;!38qHSfow+Ef*2=4y~K*BCx9+1OUeT=1Ug)}6|hdm+)uJAhnl~Q#qb-1hUA-PxY zXqngyTFg0^wt%wjeV!k>+uWhyb5O&F3PK$f2O$>A_WDbxbgVn&n^2wumqRV4kro_^ zg4_4}QP}}5rjxdu9nMAPP4hP@$O8Sv)Y_6=9dAt;0i{$*DHTx4H)FKQYS9c^tii(i z^+rhU&mVL%2vZUw+NOreui&@KEKE$$3)j^n8$REOFR>p&W?7f43`kb{HaB$cYPhq7% zmETb*BUJ~lLxp)l^{6j%CC2(@7P}RKV>75`d>-4jucqe4r5vDs%!p&oRUWuCjU}dd z|FpkI_6A;!cA3JOQcqw&9N4ULx0#A^Sl>Wl9nNtUKCr;1*Bo6x3GV2;U+J!8@~=Iu zQpzv_-G&Mn$~$L~$=c8?zntA?Ttr(0;V1)^cAPNC#_|^G*zAOngoBR#pC69y+}Zx0 zKl|Z0Mr`w=MY|cc;leG zkXro)BuW6nd}ScDAyiIUtV7j=uC>j8<3cz_;vXgqhr@yaQ zK&`ILr&dQ-c3%=eO*B%eRJSrx$}j?kaxb}qIfc#C&Dc1mad^iU{ZCY3nkE7>plut_ zoMYBulP!PHOvD{bT(YSxUP=qy@_S$8mKQnP7xR{GKW|i-7nkNl#>UtE;P<#t`=P8C zpA@7pSsW##4V91E~Ya$kP;_Xq~NK6*to5!f;w?{%^D#)jrbhGb_GSasN>+%Fr?sCwO| zkZSa2+{*_jx5j$Dh}yGGl4OKMH0RFdSI9iSXdrwseTL7mrHBM~6>{(g1er`#eov{C zGK_%H?LllnWql3@#pVi3dA=dHj!b;GCv)sM$P>EZ zUsU{&LPZofz8PjlO_`kxpJUqC)5C7jDy8L;?IWWp}s_4r(zPGU?~D)T9Q(aJ5S@=hQyx3>WLUPTz4@~WX{0L@4~{Hud3+f#qp%ph?@G!rvH@i% zBX+V%yyN8@(iE7ik=tK=AHqB07qqm*+xvT3)@FL*4;mt@kMD-Q;O8L?MEzN?$q{NM z0Xa4iF;z3GUF$<`X4l4yr=f8|dIgGFC4d}eTTbk_`L92ht-kWn^QRLt0yP{Gz+Swm z6;ogy2M^>ikJlDr*F1=|hAtw?B^iuxdX3lM+)%iC!et3-jH$Iy-zv=-njk6&LKXD% z9)O#qln1eOh*bwe2y2p7{O#Y?_uC&2#)It-?CM)EEm9o_Aa`JT;Snb)>O7+?aI z&X}91<+Cb~XiTNb4o!$W9b5VO_lZmY>(!cXb~|{s>;A*t_OrV+WBn-Er$qFF8i|g{vg)cGiQ613ivZB{GJ9t;4pwi>&n>b(PQuGT)lQ@ z=S=wF_>*Q93zp3$ap_OZ0|iy*d%nSQw;QP$O7w!$`Y*^_t$+8fuFPM3gzT+M78KjM zmsay;*%6Kpwe)0G^?l9<80kCLVhbBl02*4uYcUNfp$ugxWhj-d4*NjsLt25xWd-l? zFDi-jHgV~5yGCba0FMbozuu`r9p4i;uYG&$#-Ovl+Ur8Z%JX%!Z*xj|!UMTk-X& zw5mhtwrUapBps$OOY1VXGO-u_ae9JR;^6tyVzWQ6CD2S3on87^UY*( zm=Hb~2T&@JFbt&(r2^gSYLdCB)=O!DNv9&q#(YCl9KTS{VKYIC{&6vDSe|!90jVNx#GeiEkD==*f zhm+iQlrKb-A_PPdfT#%UUw?elP5b-aj4HvFfcVEAUG?9i>(zA_8i(K@9t%zF$7v%G zIRw0Il~^{F-eBYQRQF!>lg{?q>s%ASWP5b1QC{ysQ5Y66OTX(|Qw^y){8|YR09uo2 zQxxp{F7ik?INvOx&diWp)U1d&k50za$xZ$m4Hsh1RNFqcP+5s`v#=Sn)mj=&_8KLNGtlnPhc!E*8Uj8WC$jSn-*{1WCA6dEN({6kbC-w4 z^Rq}EwU$pKnbVHhy&%lt1KRr#=pMP z_!~(Cj!<>*%ouhEfLNkQB)NGr_I|nv-s3OGb?5*SOtMOUr0%Bl8n?kU_={vC*AMLf z5HHHEwCvs$$`nznU72`aUvYM&e^(x34fT8si?nZ?JtpPsr0ubL2HvYu5mIqYaS5PiOU zz2AOe7U=J4xpgrKW_A`*tGiFh6|v};vTy(Ahm&A|G!91*L5dKRXOI930KJRO zfh^jNRGN5d7UV=7!Y`mJv@@SYJ6l5i{q0Y!z4JFhnj9g=0ZLatiKcp0pN$+(-pdFe8ZP(6IjjXfF8JWz^zRai%FtI07wmHWYVQ8ez}89c_6Qp$D!bt z78rr5SQsJ{=2}dZ(qKF!Z$GAxMN4)+)tE^t|Mia$fvG$go)G`z90)R{p?u5gRDF!< zborFu(2;NL6FkOkz)TEgVd*;xRrELkU=Gil(}fvm)%2Hp)LYFw!2}UnFsFa6iJkDo z?!~0m#gz8>FLiwHazZaM;Vv?vclrCQIkxZcwjxkY6bR+WhK1*;{OVS$>SdqJ(ywmC zzE^vil${p)j-GDtOP$aQKl&@bvwwUsjTF$xhPz+;{rdx$rO;mWs4bc~=Ul}l7%Er4 zx+hS)zU(%Ih!-%*e?a~3O?i>M z37B%f216;sST2&zc9(6-+K)8P$4I9lX;de?N2Kc4pW0LflC*SN9+)xTdsM|In!^Bc z^r2hwS#-WDUeO9mY~my=7Mx9NJI&-YqwhRLElM$>3~4_hV0`m5RGhb0B{L9W!v_hP zB?=89z-rZO6S);OZ2pCFjWK*6<{cyM)R`^-fTI?faO?7)RNtbj%a^EL=ExYc$n;-mol z99u70&QNNb2eIpVV^xQSKzSy%Q~)z2Mx+)3!;WfPfgd2V>n{)1k|S6@*G-4qI>KZ! zn?NhHE!-^OQp~WJFai!heaC2}ViAfeCXlH*ncY4(Nx9AeijrFmKsV#i?y$k0r;F3m z*X*phseikNbhj_N;=xtQTxye%@@FKxCRvSZ5Y+v5k;z;RzzGvO1ayG^Waq||-)tZi zP^u{#o6!&NUYkcFtFP4=JiRyzgw83-0-^Sx-mU5Nou<#%2A zkF2SWc_42Rq`MQj@JgYPrZ+rdh>&xy-^=vxJBWiwNCV@Vr~RJ;38)6wSY$K&dU5Sz z0}MdCSxsW;W$0>Z!A_1|u;e;J3l}8PRB}N!0C02u^zH7^d~@#5Z&;5q*s$S=eO|@r zb|cnb%Gh3gQUF+ofK32IV>4Y`8r3}SQd;>pBI){P-jrScy$9pL;I4B*yL;XMYi+-6 zdw+|+!#BN(ooc#-p8PRj0=^ZW_NUaEChv?OKvyHtZ*bTa$3Pzr z0$3cEvvV8)pwWiI^O?=6PYk`>B^jJ|bx)vN>iy}Sn^69{Q>uK=olJ~q{wOyrIyC|B`MlY|Jh z5|`}iJ6~&LVb>l1I+P1rNk9V{Knd}u3^Qn01gw7wuU(*Cn)ki0KUOJDNB}HMQLcmc zv(cl7WCxIK>#(#zwM)cxuRcHAwt4GzC1}HjPkz)jzsY;1{5AF(UYj7mSusEyfK3X2 zb?a^tF(UpN6KA>*+nCy4iH17kEjxqzgA9|vweNk7eLcH_{_j2WSU>8^#Y_I2BrK}- zWy1@oIy9(QRj3e_uS75U;otky&-`^~z)%b%G<=!dhxdEA&)nQ}KrGFa-1p(`$ur0P z_@nE`W9xxEtNtH*Y|THW9{3_(d(V2{i~J(L$k+ZN|A(*rMScO}$_KAKx_hzjAhyr# z`6n;KG|G+Mr(z*WWVC2MA^J^Zetd!lGsuNzHUXVKmF_&=KQWh2-mHIE3Oeu78(+l} zD83czfqbt&!!RPB=p@oBMgS3qMM~qJ5>x2*7+gvP{3RmYUPM3lw1@b+&a8UU_MW|m zw=A2b`6+zSq$mSq3TQOr@3Pf*zx~cNeVClCh!BH)Zn;i@K)?()YmCB$QxW}iF}4m7 z-|1r8JI)%WFibx6%f$;=)O5fEz^OgW_ZcSc(-{wThVBvX%IwHwGMOF0OlWQ2IX&^! zmwh`2EN<5z-g+NcsP;!Gz}QA0IHI&i+Ec564rgZp;V_8u=jEW{-#qkPEeYE2#2ei4 z$Q2KKhk8SUzjWaKfpV8(6D!6515Cc3TEeFm1CbI_Ot16jLG(HoV!epnPl?{4vooKA zcdUA-fF8im9V05cr)28zqYe%IsnZ{<`22;5r8b#e|H0`xL=wMq0a!)wkABogee~s@ z&#%!mS8vUJ;urm9mpxQv^j*EOE*DmPS(c5(d6=wR?HnSw2m)9Di?}wm{huGkbweX- z`;YTDKgN$Sva z=Z*)j;h7O>e;&xE3=b51W+@6jBsNRVrvGk(p&Bm9uHWvjvA%o%USw5Eyr-q>4ny;} z?%*g)@buBks@(-N;%|Cp+w|RkA#%DRfDTuBZI${K>!8vVUs5t`!&*_j_)5W3$@^FB z+CTfJubx?c#OxP|ORiAO%r2*Q-OoNf)I=qB^p;kQDjztSiG?gM2!LjW13+s4T5>r@ zpx?JU3|-~TTsNQ&g_Yh8GqFgWJ(u=_gK2M%ov&3Mk03Sc&chDk?TgN$r16)(KUr5f zjf&59RWPi*EHpv#7fY=z6CctWz5Z3+1z&oVXE<-ejlC}U)%pvpX*%I`D~>(X{a|ns zOq^KmNya)Oq70Qz`7;`3^e*q%xho#r-QGX38?v1+0MjW8mClx({+@O6lI54}b@iDz ze+26AtVAP`@Rv|VZ8QQ{s%N00dg0Xh_+_%}+yC27?b?{$`^(17e(v3RaP;io#*Q_8 za^|AH^N|`&A@>h1qLI*EN>qqIh=RxwA(9T*SYB)BtHLJanArPl`-oYA*1nNmt=E+k zrAQH#_99yr?dq%I2fe2uRFlj~Z87EpR74pooVb3rY+BQrLCt)K&!8y?-ZH7ZE^08N zMFasQ;eec%=9xdadHX{*zuRvm{%X@JQQZ>^FMXD0@El}Mpp<$Q)$1}v!$_<85>q%L z6)_@Smx4xE1SAB(Z!9l|WER*2cMwDWcdxJfM-nQQP}|ov{&73I`g=NiIvpG=x|{Y=2HW`a2(c0q8JE`2X2n$e0({1o$M_rJ-o7 zsrQ#i9ii$=EH0a#u3Yy#C{#qPW_CX5syk%9yf87C5pEs8p}{_X?Okg_p?|XI6@v_9 zpw5B3O*87+_NXpX@M(0U$)D=2*!@Jo+WcM4LQ$}ZPxz8&eOKS62(xCJ;0u+}HGe({ z2a5#zkH`!sM@O<2Qyi142@^REX~GMlJemy3+k>BmOlqxzK*K?fHBF&r4PY#G=B>nF z`_gqCmRuRB;7iyqPL!bi888n5pF4t|8@jgyO>(=v5nz_ zj51}UoIx@Q4In9D4m(jhZnPuap_;k-p8qT$h)7kTGMU}@TXz4*&+w29-VJktkqT^6 zDjiAG*GCNRhKs@^4ilI``#mM{S>W^quE-$E7xFP9q3T#-35i>{p_Fd;+=8LP?7zD* zE&Y9&RV_Kv3=KqSWNH77LI3@y6lI{b?Ze7`lUIzL_jLL{l}YLgejt8l!FLUem2Dc?7>eULT(w79bJ&dJ{d1+7%k})wPB$xrP1qlP1HwxtZpZdj5 z?>D*eprnV+|L&7s7O-eAQO;z(>csYWXZ}Cf4M+rG+aESM zECNYWzz9Es#ame7)VedV7untUbA^eo{EAi3of+*W)r3xfZ{Hip+X_i==ahbQDPoUU zqg0cz!U3Z(?S(uOq>5L(4TN26tg(jc3oY762xpL&PM_@I^J3DW<)M ztygvIR?nKq{7>8F|D*~tIZ@U^;GF1UyFmM;zZq>1i_H#5Qy5}a z9e&5&MG9yn*fKz{|Kz37L^=SF{SvSQTQqX+O>JcPpucn2A9vYF5isgXZKs0A_re3R zKp~4Be)x|5@QEi*pSX)Z{MH_{!*=Se9R3$wHoZEJgNN{rs${N@J3N30g-E#n5^VdV zodYfTlD^ipy9ctCy<3-yMqk;42T}DWj_^SK zZq=7j6d-`3AaG5pLrVQ>DiyoC+Z0sRpW#C6Gp^tFDbn7*V`uP5i?S=Hgfi_dMKn^K z>L#KZVA$9=wtjLaf4f%)`}6s%gY9HS|D~|`~x8-m+ zi3MtZ)OL;oM+D`*{B6Zo$6Jbd+ei@~UGk1D?XB?W(*CHjZ_m=+*oyC)6=0p&V$=KQ z{_qd>ns48|tH2-Px@YSPGGPbtPmrO&;mT;b*YNK7KGOJRXk7DjTq`)H6&x;Y9^W-I z`SW#Hi6>S-0S{qZhMB|@|6aP`s12T=I-K^==CL-k-Yt z-UFN{5zCd`I8Z4}7W-|tJlViWA7W_H6Ab0E=+3p76>fiMD0Iq)Bc|c^iHt+rcrx->E49lFJhE#%ks}nW!{5dFIA&`; zrkxE63OfYa5!b)Sn-@GRq7El|A4J=L^P(t+UR|GDP7g)1FA`;uO1@OGg-xmRaR z$y)v(!Ol5}_EYukHT zb_U!3Wn&7vo0&VvA9E5ACYlSfyE~^UQ6Yy|06~q{RsI9(8XL|%qI6q^2JlSZ3xX$a zf5UFUn~D!Z3jh$n8XEqS>^Pq=RFnm7{#5^oSu^4fMFa=Sivx!&21pC|m(!KUqDvf3 z09AgMi|J$QNu-c>7?u_Zu9&On0BuAb1B)%`otCOi`ZKy-jt;+ViO|}5dp#N^;R>NQH!9GBx)5@ol4W*vM zV5ZXJbX@18IEQt0g@$zIaf1oPzPP#11To09uoX$p~+B2(LLfZ-3Cx;ueT>-3JhT?O>;XAr%CN z$u`^Y55MY0K-Yonwr0`clRVAZd>#`HlUQsCm3^{VfA`(gaIPCl z#`i250JN^d?yc9;uUI@l0Kggo0tk*jFcXWw2}49oCIC8@0}I<=0?V|gzrmfejW5k< zI($^$vnXJcG{DlVH7va4XTl1SghlKvjX12u5N9y7QB^e)u#F!u7$go`(BR;-bYfpJ zd-!?hZ8++aKg1n$ynB9)3$f`n{(2jFOBaNo=4xc&&t+ZWLY4N{dqOPc(aBV)C(vcW zvV~YkQy3=+uUIR{WJiOWagvbO{xle%T-fb(Z<@!!-xDzdQQbkczU+Z~%3mPW=$cAy zoqXK4Q}xRTXw?12KlgShCEi#vF?pbcU=1e>6B{+^PK4$TX01UsmS+$I!~j4Lcn@+R zYsu%}kEuy3fYPTTV)6Ps7ABGb7Kd#->c`#)T^BP7A~57gs>iAM%*dAT17?CJokU5} zsIw}n;IW?Js14_xchtk5z?)lz^BvUm?oWsn(O?NxD7t$ zuQ8o=8QclKLka`X&~;hBY-akJZ$Icu>$a#0P0bsL!p)9jvJ)nM4AX3eCJO*84Ppk6 zV*na*KJ(bWp<8E`xfKZ$J!@Z6#P+8Vk^oo$pX9+bW|QkkVQ~P>X3I>yO3?c{vk?Q$ zMBDlgk_nQn!6J20(wmR<^S`k>>~HV{%Cj7Gp4*q7_?kb9Pos^xq+V+Ky(*Fp@vpT$ z74aI(I(3A<=S&!h-zF$Wl7oanu%o9wU^5Ou!ih}aFbP!?CT^BGm{D@VLRHb^cDF9d zK#w7|m^GMDK>u39r;}-aYZ^T|8FSBw>a*Uu8o&py!3?OY->bd4d~%;*5oP5DU?P+E-_Ml5)i$pn%fnLh@m_4?H?o#>zjSDA9HCb2_O zgBgWo#iRx^fHk<9FfpJzl3;%T*d}vqFC1#0a38Y3#1JX_t{c~17x1Ulrmf|N1_^*i z{bX9#g?7X5_yT8DQ}ZS_zKNP(=$=aVxo@J^V+rNogFCYYvZW5pnu(YJ0hmQVa0DQS zn0U#OE2Pn$!Q#fNLKuMR1$_=(i`RN-GHY-nn3vO7K?*Yqj?-6t@Za{Mm&b#@&LM&KKjcTe|Gi#JrM}@( zPoNxiHS+SQJHe7$Kvx<5knch2^C9ZRV)@uD8EOnuUF~DM5FR~0+_f} zaM%~JTZurnLa=$`veMu76;X-*t)UEm4c)2whNeVsnI{kg ze4>5WW8eW%5ZIwBctRu4-v9E5CIMS=-Wd^VGL#W9R6~8KUUDI}DLt^cZE@|58eB{l zAT$$bKIvy3D6D7l7-&Rgcj4%3>zeKA5)b6F5tV&#zy}52qEWf)*F+OX>>6AnF&PXt zIp;Vat~pLCeEC1+L+rLlV|tVE?iM_@@h!`{w|4H#jc*D_e3B6dLukRWyC#;c8p~o| zI0XG^A(P-?sbnI4qjO8LD-zaQ#`iA26Bg8wiFJ9ZP94O9?T4PL)LV(4nPfPjZDFP& zjlF7n)E1cJl9z#%l->_`&d^^Q9h(1>T<0XYC) z^lME-nofxH8V$Wi^rmBK(;xWfcLAbCRZ#%V1ZSh8JXA(hd_Dc2#Xhx=%On#XL}v{T zAW|_GVzY^D0hdX3e~a(FeDzbl>sNgbe!AOSoU<6(tWFl+L}f7kqm+MCy{6y;jK^R+ zh*m}_(3?H0^?T{xmnYk?oc@`&50W?O?E=e8>2ZoJywBgb;Uhu*5zl%DBQ1S=BauJ{dlAfJdO z)?Y^jl-uTwgo>#;dNlgX>-6^i$p}ZX4NX@DAPY6ADjHOasVB~Se(u@1^P4>~iX&+w zzW+ol?bAyt*0{Cdgf$ID;>_+lb)scs-~lCb1_X5H_guu7Z{0F9j~_IAbs_c{n^b!H z<8E88R5r5A7E?wl;(`1cqcPxx!kGcXZE?oEPL6GAGF*tg+_+ad+v|b+ou2WNzuV!n zo(|vg*KVxq#?;1+G;DQi>dboCKlu$zc&vahq<~rMnp(R1jnS#deFm$g9K6fmo}H8O zWKKeM9l)qa<`b0bp7(U<)uR##u&I)iJTY*GL@r za$g+`p;??HH(xoh$u*eq&PgI?Y$qJbW1xF{V^IOYBJY=QNw#U73$Zbe!KVVoncHLc z%DNztT{OF@uE+50poSIAtd+E5J0vCR>YFY6=l|pP7?Izatvp6H_4aN*VO_7G*4^j6 z-A%npb$8#_1E_Q&u~o$yJ&^AXoVz}|{eN46*jR%H5;y&v-?gUCDyOG^od4;_Ww9XA z#6+bPzwXR-)sa1$uS9)ZKx$ z8gwOB-*A*~!_}+1xe&WX#m@ZkVq0T%FcMk!H(UH0+nG6LXwmb0EG*!|o}l)u6ReuE zK3v==B9Watdgh{Bk{J#z{?QEgyVRskUVq6Gs#G9wUqdydTsHrPyF5jM>O()wVjw+e zMv!LYG)sqkH+zkfMLDef4RG-F26B!m&CvX}PvwDpEbT^YWKFhL8S9i%jVWcQOO#UC zdX+NPH@Y?YzeHkgpt-)xkTvQJA|SN7~cd&)gty=eGQ3TrSf zWZ16}lCoBd@3ShwEQ+$5InBp+%`iU7lUZvuVIqG7ev>n2#1ph1puQh^^}*7|RvIiu zmp+3hP<(c&H=FH_MSo-{k}T1^a%JGAT_UgG_s{Bv}cBPKbbvSld!{`{$QB)dj6ZHjCS{4yP~^jy2pAKV$=eZR5we7z z7+{A0n1_Jm*rBKhMZ*Mgs3KLDxZ(m2yMgFjOLO*58#7s5z;luEjL7{Ho4T-$zyt`{JQh?H^%u(X&tM;-JT;1>>As zBYV>^rIewJY$9z$0wsE3-pktoovU%O|FJWLG}2j+T^Yzb_8vXG8ksA|vv>v4hyWl4 z2)2*|Nv)f2f771F&jqg;gdj(b$ zykcforv1g%7G+oBneojagJGe@YyS{|v%1%*Y%Fp~BB1J1u|Qh+9L|PW7yz3fx8M01 z_mJ>-ysxt_m{~hSu#YNvCzkzF>L+{u4eiqj?{^p5zkj=bKfcf1&0d|W$*qeC_2WGy z_Y*!en8^fJ-D7xVcQ(jWAE%Vd0-);IOc4l#Y|16qox5M5mi`9tor;j55})tGJc#rt zW>7J)FQngyqG6kr{dMOeS1(2`_|j#5=R;&#K79FQb}@?uSmHd!ukb_f3JsL-rM~P5 z6n{zdO8vzX`x`C_o{FaGQN5m4ajx<#&yqZ9gD)(5^-`ewt4+8O8_3@6HySb0MmCUo z?)B>{lTL?KgD}(uhxPo<&j@9DcAs&FJPy5SypRIpJvVLN6^yTN zS0o(B&0d(!Mw-^$U&XRNn$4C@Q}VC5nlO;pSzWz-*StveS5z7f}HxOgcICXtrVNM>{q9%MsqW+TA8Xx zP3}c*nt7e?;>H{NCy|bpO3~n8G#I>faOra2#wbou>^Tk-{AEk0|8O{2cZ=D}39>E~3#_EMn0j8abwbMuG!Kupno7otr=K zTuf3<8g;J@Ud#yqMNZw2Irt@Mrwf@AaP%_^0y3zn*w7e<^(WuC)X6_V0e#rdD>G zmZxf2s(zdA@NEs?9ico9zTbOt#lP?B;r?9lV@naNI-%5R_!DJ#uP3_mz3zPHQ(nxA zIpxJ9MZBgL^J@RBSG(Y!^=G{Po|OtF%~Sjk+QeHv$G}BwW?>BynP_bZFm;faeDQu9ObWcd5W2P zhT~8&Gz|VSeMTuJ( zNde=d#CMEopWh6^I0T?u!+c_iTPY;r9phR-hES5Y1I^NbrEaB=1TWaP8$KdcZ+!My zwWcu=Sd&U@RS}oPrQCoinb&K=z7UA9@fZ}8ylTCi2mmb)fCWoLpfwn*iI5a%w02-K zL&6l)v+ChEz-$t+oQ=%@!-nNRy!bKS6tpMAV&bOcqdKyvWj{HM$J%IEXbPYiAq*f4 z`ajPF*{^Z3ay>!0+H07YZhS2An&)je>e6d^5AsnZ!Pwtm#U-sYvNST)GF(dvk^qBC zKj~E3FpN!+RBwYa8m^;Kjgi^PV|yV5E<*HXum}Ja&~cw36FT7eIZB}8a0s$S4W^-W zb!Ld*BAs;L5Sm#amGR(4JI0m$4fSaiYiJCl*9VLy6){w!Pa}W4+E7l4uz*QP*Ss98 zCM>TB*bFcc00967L_h#D7~*8L^qIJ3hrGdf>htZ-bAoa`xpz6G8~)Wy>4g6-`x{@^ zPC5o)(v~{cZ!f?8Z}au1e}LsicOFvndBE;|abt>SGbL!fi4ecnqi*f}{ezE;YGzrk zodakoiUQWQGJmJ%J8-o> zvZ$f4@#FN}77llaV0m)N4ug?p-`YKRTOiV{jDS+9^%283ZQ#)k8%X|t)olWSVfub_ zv{Kg4hA*XWcQClK^R)KNf;kO~AsQOvn!%o6CKK$*1n=?%D`H2EhI&+rjdPOsdP(faC&8A^oh@f{e&2uY zv!fhl*o^;Gu(Pu>lgV_x&D8wAY{YwVkHd=11P*74d959rlN8dF_Pvbd1I~JE1!&;Q z?dCRhTicv!a3OYmKqb=3xcj!I!8aSnkEx$jMI!(NK!X|KwZR|oxcDGZOjXlR&@_*F zZRico^977Kcp%6?Yz9CO@LN0R^(}KH7M=H$Os5Q$Z93Tph_natDt++t-SP(<1PxGq zm^0|ZF+|s7BFW3#^5P}8(4iK%;yd_{Ep*F^Y~sd%>5$kEk!4G6(UM!R2K%s--=q z;5PX54I9_1#)h;{qZb3>4x#<-VjmsLYXEGC+wTO=_y(lYQ?-U~608J<=9@9UZ5{=ema*jYjMlx3ncSD^ml8ALarM1VL$x^#ia) zBMK)M78|w}4RVOI#=*u+G-w)m#)6h*Nm2+LtC*KpoeNidwHuE#@;uB^d=q?aymKSU z?1Eb-T{9-)LTvWo0ToHPEN=ejcL($Izmu_A(KOKl9i3HrpqbeVbxiV_6U6BkOz5-0sm!zx+b9maP}nbxH>y zMYV4Oo61Ng31F`L*FThlDON3}f-Olh0DUk*6YzN|ZdW6dgZaK)|LEFQmJ-ZfrJ;FH zQ26l9vKV4{Y1OJ^R=T6_Q@^gnVm7HWdsWj7$CmwLtB0O>wK|&kA;&`HVK7~ZhISut zf83rnKN~ZtqKHy1djdW9*Gc^G43qG_;o?TcaVh{HfB?E|)fz53caALWMZF6Tun)w1$s8HB9qGQS%aZ z($XNgu(V$_a!s7-Pl@QVL6bbIE}a8tAt>{l6i--rJbDJNUp_eyi8Rz-m^yQ7)7H`t z=_mFBMy~8j9{=a4bAVtU*qr))`QfyVtF7tXqO{&cURlk;kPNlk1|4WE{ByHl_OEqR zIqehr*Y@40V%GV!&oh);>DohiD8sS19X()X= zEXM(jX*Abf3=XOZlb{35M5pF%GemTTzQ&{w0nh*-gmeLxWj=T1M8U##kRZ%!40?W2 zM2et)Z7Wj5qXfgJ)nNml9|bO+tNIofBsP)wReOTrrRRA<*}EXsx>Q5cy1S=6kXNO) zRDGP1AK2B&?5qB?FFLxoKXCkMZ}{NnF>>0LM{6CH|A16d`^Uf71q*ZG%6!XT?1H4y zHZHftrEm08A31Gg;2F0ZHgcfykh$&BIUfduMH2(J@y)AG*7-lnx&aZZ4|E%eo0R(< zU>w5O+JM{!5TKxa7~*VV6UAoGW}#}rM8d)j+`hbf)mw^!TH)8LdCb>xw|G7lv_!JW zQ3!(JbEl(KtI9r2h=24K<6P8)VzJ^%ZCQ6w*8R$Yk8LUt2PvSS9SXOD8Uw#EW%!0m z&)eV)W$$<8<0ZDI8|oXg^zH=6gGuzVXt;%Z? zrG7`kfTI9k9=%a92%$SK+0Y(gHqyHQIR0u zwdDMNdmeY&=uL=~^Kvv&n&*`+zzrq-;eVZvzrPZVMon?fRb23j6x#KqIA^|?W;Y-W zP6iyl*=PRg*( zP?Q|q`11Rv-Re_MAFD_{td1&MXeMIg9oqkEE-ke(L`7E_Y)ZwsVut;0MKX0#e`$)K zP5Wf75dY|>e5zYdIMLOwdDO$N;t7VXPRncB zyVb{;=GKdEQ+fEEKh6~7EW5tng>Rp3gU?^~%#o$NGai3xGgP{2RV9mN!2BL64ukn` znE^B!KYqdJYg@#tlfF4!bsB?VGfd_JKzjpao`fcU=*#EPXgrUD*XC2;AO?Dp!vKnT zbbIagoug`dx;aXR0W5&g{jMtJc=y)q@}KzR8tcd-wzy1Hn{75|(f+DI=Mv0P1W^>N zZAH;J=PH#baOzW?YB78?$uwcSj*ZMjLE}$p(0$8MF_pSS=ka^j+;Gj3P)R<-74|>r zrJg`3_1dKlwSLJsH<&{^3t4nb(X&v^m##ymu|ZywzyX}{J@>@Uw6IRBuj0+`p{rq ziy6?&$kE2{^*KQ4o#kad=2{o|Ojr9EEuB4Y{xD!wnag+8dD}07wp0_QrZI%2zOCWW@t;(RErp=RUvO)w;w)uSjy5LKKTTwAe+OruIMMLZ$SX#Km( z1hD(AS~>ay)sw^rPu%*D4NvU$<@3(F@dmHod-#`}+)(->zrzJ@pTExb;L!tF>xcsW zW^aE?eCLzS=*PF7>_&9{Vkxh|EgfeEi}=o6ncEJ{Zw)Vc1`F$Jk6-l>zCW*C@GZz{ zuUk!+nrkp4;WD&oe1f_EGQJQ6v^T`!$Gq5w+LF&e*C@)EGrQt@20qn^d*_gu^3 zpYHbY9sl(gEntAoCmmJT`CL`Nqm$|UDVN2(4L4$4YH@1)__?letxP@%2k#mhExG5v zzW->|VL#jks>L*hXa@a6w^0<(USOhzaHak1s(61U6uj$~cIY`iRPx{plt?ta?K5IWQjw~P@)rL|EC^Vz{kk` zf8v6dx5oOw_QrGbSFhHnh+3i-X57WbRgXp%c1B3*2buao~q4GEdstF?tHH&!&RqAk-!P>m=XRb^zD@Ly8C|8}9ip8RfTrtQL zwNqD)p6Q&cM3KwkpoQakGBVP`$iTqB z$iTqJ$iT=*+Q?xeTLun0?2u=Cn&bbQ|IA}%FM5)(kpKpw8s=e0!9vE9+ArqNRRt`X z$3Q(hib>eL?;dhwR9!@Ju;Pw@mJ?JHCL##&as+?KHz; zNm33Smb{&rledLl6OKh_v)dRXxn?N7h#eJdu6;`LGtr9F^+yFe<@#5;6J2R(fTGxi zE9=g=N|Yift%|Z9Z4`_14L_j`X)E5fPA*e-<;0*eviS{Kj{z`>gb-tY&1{J_A# z$iTqB@dE<`4;a`y@a_gi1_lO321Yi&%Xj(i-reSbfmCEX+p%W8DgjbGi=7%F0%$OS zEx<0E9;dC`tZY*vm?lANhGPyI2M)r6@s zUH(MaNCe>|t-JwIT9BjG8eBgP%oNs1z_B?e8n7KmlAwv3fyz!TDoqgLQ(x0)<>N0p zS9GozxxA;){!U#B!>Xv%Dxw=uh67p+Q7Tpa`3>&$jHFRGY&l8Et|J&-g3yJjlAL1ZSAnOpXJTp z^T-!@r_`|gHok*LLZyZhDyrRqSg8bPXow>mWgNy8=~To!ue{VI-rpjdxIW1thbm%- z6y7UK=R+IQY!AYtHF{xP!?X3rF#6sKi-GJ8F@M5H`E3<7_Jnhp?{;VDLfPv@xjEBA9fq{Wv?BFe% z4|%?aJma12^neFEVB`S<@AQLjiE6KP;ktP{YQ)mOPZ+T}Hjbjk!D@hrv`9f2QqyD< zbpDA^KIGb;J2dn8PSVB}*S0f5O;7DbKC_|X#y}3e`S&)2cYMMz<%5aJ)#tR-tyHEe zM+Jz!EK$^imX$Zu&jwqn5d|?G?fP%x`Z+Yi0SK*NJWoZksJzUok5kH#tgTUOw(`JI zilAO}#RM}~EV^Re-N$xjB6U`dF3{2kL5T9me@%;(E!uZyF6n=i!D9Bmb`oidVCuxE zmG~MED~pNm(*9zmpZmhc((jSFD?i#HkG5rC^Sj%8*zwPJ$mT;fZy9;C|D|kJl0e}Wfjuw_FR1+p?CWx&M9hePcv_ZHnN&uH1 zr?XLRaxXkU#CwV}Pyq=((i!Fjmp$u{k`t=dZN+= zxE%WGvTjgTRuSnky%+W`EN19n){fSb|1Ap_*9#Z7|MjAEyMwHcX|ag!x-*Y`xqJ{^ zfI_nxrl<_Z9uao;XDS$?S_4FyiOsMBqQX%@J$NT-0}MG-ki#xwdr~!Fibkn)-<|Rh zzi#lM`P5qQu6q>lQGfR)w1Rs*UVe=;CePEJlK;L5?XzK}%~MwY=i>!55**VCF5Xn3 z0f3Uc630ciHP8UJ4&dOPP$rn!vwB#2H5}(y49fBB8S$jo$Y;?r3K%GlL+8y|jkOb? zPD@3a0lxYA7uX;rP9?>x9;FECQU2YE!T0*uyT)X!s51Tqwq+tkJaQ)vMp-X$QT;V7 zbdl$NHN1!z)I`7(6f*-tAA1id=~a64aNN@asAx<9wAOGgf(f!2hj~SEyv9I2R+;`GZ>X_OdDr@U%$SpK&egCS9*(|@+0@{SX)4? zj%frgsXZ?U7cpTaFD-#?v*~NtL&EpC*%%^je41ghcd^5Pm>`VfUTIuC@RJM?oqGtb zcl74o1RnyThz<@#T)T>Tk6__(=bzs^zYrhV0M#JHdq4&3xZ}>x;Xe^B0QF|(dg?f{ zWu|x!9zugog~_>v3I?39pLhS|wYwM-ag7=bgtvH-`O>AZU?sZz-ov2b6i$p_0FeM- z9EzyZneEHf@o35*UO<8I%*#xy2j-76MntK{y~TA@qWd~GxM8gPqgr{8Pi-wbjc3i6 zU%>6pXy148yrr5jF;=D%!hi|JVQ|@XeLrfgf|5t=2^18LX#unrC8sR-6&wUI|E0|8 zU42jZ2QH5Xf|xk8W!42ae+PncssN6)boVo~xb^t)Vj7uTJ6Wve)gkCLg$jRMk?Nn| zvG$+5K7VFRJ%BC177`}VOIs^x$Q3NECXCh=9471GdN&WyTtFXQCm=LUgH!_)C0$jI zIqE<9@W>~bC<}%oOWyuaf9LK32HJV_0M@#A#giaRVA^-kHYEDvuyw_E{Vf+VQ2(CI z;4;17LiGPOv0{Npulu9?c{r#{)dh39>^QS3;=z1}slp68T8pU&L${GGV6gf~$P;S~ zfaS2DvaTt^7lRJ}N9Ub!7APoL4lh0Cg(xij@E-eO&@=^fZH)40GDyPPcMo8!Q>%wF zpOQ20{>~UCeqX`RD=eC`;umlAL5%esA#DMQGFPYi*j6yJwwOf^?8g%xgNqqz#S^i} z4X#t=)Zh?!Ts_dfXKDY#bx1XCa*mTzPoe@wU5@kQ@q7E!kLRGArd%y%h#q>N$a>bJ z!rB+o0_ZtVmhK1Wywi_Ld+g^p{jouZALe`g@{R%p9VT4?C5Igk7}Guro-?L+;C?SW zYpSWf%xxX?o?X3jP~QIem&d5tMBJB@!@50k4ldrabJBIjPqAd2bwj~$L4M8U*%eb? zes4O_RQ6Hc7$(_o^1L>mL;uM?F*UP8gq5%;qoX|S*}b?DhyLf^XB$9=o`UPW0tzS! zEWKduF(~@j7o71z$W~F5oG;wf3+eyz7-;P8ZMR8oeci@%!Uu@Y69%F8Q;f#Y( z?n5~0OFL+sRD0IPH%}iL{2gso4c*z)z0`^aO4XukD*4oW!@ozF{-J0-KXKjt$Xa;nD)Z@n$UMr_9~SO)|FtQ>cJJE%P+Ge9)P3dtFng?a&i(aJb$9 z3QC5<0IDcGDxmbNxsqWbey#5*^?J$!`Nl*nRle`h0i&0m9ZG|BC=>P}E@rl8HDRJ@ zZ_mf<8dLV)Vw=&MYFbkt3#^!t?sXy7sBgS}!uwHvwhoPd!Opu(>|B!w(dGgsPJTvL ze7oB{`yK&w7;$I1{-N}&C<>qyHh+Y^akBs8)o0hc5&PAq8Y*`R<}QfL+dm*NW2t#B zeTbrxKPuVO22yLsj4W>5E9Noyl(8=DfkhAGdm}4$&u!`kiQY}?jD}LT#f+22buWSi z3^W_%k`8ohF{4pu7GhypP6U+Q9w&2?lPLn$6hyR~sH}5sFVB9{iEQ@O0gJ1&>Kn{+E07QUf$7e$o!SaV8MsXu=RvxFf@!C>0md&RBErN>6tcY_2 zuX6Mr1BDs3c`p;R{2+hnBb zP@gi~23P*sCNVcp8$A_~V0@t~!dxk%p@C2Kdvok?&P0+Jw4&q;bt)0SoND)zDBxiEDiU>SUHbz-C8dqH>)n%vqMI z#akqrQYyX4$d&+NYUgU?@9jOy2XjXs2{)8_8ynKbg)y(eGRAoxO%2$Na0q0=N`I?l107dXr)$-QgGZNHxX z7f7?==^HD@wjl$#Wbz-q&nRDGxNJosA@#T9p`s?f2k;%IOPapRum~unni0-Y1 zip81|4PHPg|6A9kPxe5*@rj6AA8%*@?;2ANJPZY_#=%}hbdh^q`3w_V!Qn;Er+?tE z0$!1-4BM%?%ou=xvTJ$~YVlYBU=#;E*vPR(4x$$LYu%m6=iu?Z%je-H7}`gKHwo+4{f{kyK-SAnh-` zMnw|as`h;llB&IV^I^d-ozk1lPU$GdsI_Zudh9F#i6uYtQ=eoEcFY zkH}=?(&92oK_Z5Og&TPhVH=K3)78{Fdt0tuU7REy@nQ#Jh$eCN+-dP1kN;oEdLWSw zoRvBuX1EdkLlyD1p7_0Y?$fzy>Q*kumsp(g0cK4@!>s$iFJGLqe1-lRjg!-frgB>n z8&V#RUMBR%b4SFROxe-YD%ZFAF8V`yHdns{)|9V%810CjiQXP?eoltq6bO@y`Www zE(F|WLJKF^-t5^lMz?~iyD}pxz5`$1yk46httuE+?D`d7a>cq+zU@?ekE#!Hb+Tyw zSik<$j@da>bk3dTbxo?O`0?HZidKqwBpiqEulnpL6KMuIIuZ=4UM-S8qA-Prox_~r1%po8fR`%GL_cc&;$9cTa8#+CBEXL`-^GBp9-YCI+<0fDi{kV z%~{4*--F5n#mqB`7eC$NlE^0QFmNR4nZ`#E2|wsXzexAK_rWWU)6(70Gq1;PnBI1Y zQZ7^M_1b*tu3r;P%9Gi5|G>^;#x{fB_4<>VzAD1jKWS|-S+d3tbk^Kib zn&9($ojc!VRus+@7nTE?L8M!AQ+tvAyMD}t4&ziMi}HhfgIlaOJdkifA*)=7zCnq_ z9dSa;s}_Hp>S$UP_J93_*_EAFJbL(bV4W&L=*_6lWh6>IP=o8OmUe7FJK!)n*KS{= zEw~M{K<4RBS*Dl#8R>vq=L4!KajUzlNGhF*ovF6QK2MKMx^;59zevO|R3uTlY7wIf z|Kohx;17^Rpcje@VT+OEEy=&msOn)pW4*)V&eh{R?AI6ZYP8z!(fLHeP@m^}C_!{% zDxw%^$_B1Gwp4atFA1e>@rRV5h)0so>?I}svbWqUFX zK;NrIm-aq;f9Y82%ip#>u>J&PyzbUUl~C#R36*%xUVlbRsYt{qb!wym8dp8s{c2ek zF7mg3_~NHuEG|G6lG2v^l7lK4>^;KF8JgU?WNL#gorz)_lcrp>JQyqgF%RS~G3wR2&(lae_coPU6IoxM zP%4o~*Fhz^6DsYqMF}(LKt1(H*M*2)@cW=$E=Y)K&r6b-YC70CT=xEUC$!JU zmHp$&zW>3VRsVR|Kd!Vlw(1{WK6u#J>fw=7YN3+%LQJW%VhQ7j8>W5;BjMBN&eUyL zv~~`XL%X+L8`g^&#ypa9;@DPjS1{Pq9x6NhG6|zI<%R5I&<3JeSSkm9TNO$iMfowz>y-mum#}r>^p)2le zKM;Kb!~)7e+6nWiK|_W0P^Rer|K)LT0gd!8T1u>ir8DVH$Y@7<3+buK)gaO7cFQWI zj8rPy82hX(kEm4YOhbM1U;)it(Cxvp(-;C`2Mh-b7j(Qm^H%m7y;OwCsV0L~J^(x0LzyHdnjOM@YI z08ET4>+-N{fEF+?wtCe0Vx65u|6S`VJ;*ukAg3d#pUKQNCW7SgSl^7-xB4^H!5XbI zR4Qf|M!D0_1n>fz2xiJd1yO(qVIupzj4W+FO4kK<__T}G715BD5VjD17hRzRu87KQ z=g(U2GKE0;hy|mMZ**$yWa{70)cVOkbjsh*cd%qqG?oHlTI*tJGx(>QT05Ka_uTKF zaq{2ueR`37`?tj$TtNRfz7uu?U|dWZ13I~=`xLN_ENCR1lY0NBfN2-Hy>AddJOVj$d zkJ55{$?k_VRzf}=1lQ>s)e456qij-aG7t@$=FSi<{@Nq9;>dIf_u>&^iir;T6} zznl1PtJD;`4P|s2>M)p%BsQr;swx-@ft;VFC-Zoy#taNcKh+@4u>qAiYQ``4bfVu) zxlXze8z?b_rEi}vy!PY1B(019WZ_CY{&t>q6%|h7@=~2tM&iuW%*UrurTx)`-7$sT zvH7jh#r;tw@0jwz+;O&Xsg@g8J{VQnd)z&Ldw&ytf0!TUuQH~zzh^yA%$Vc*JwFfw za%G0pVicOE!`As?R|HD!WhQN!m^;vUBDOaZHjb$5tet!x@_lvH8m~?oX{C(TB_c{0 z0UzXRlLbg@>^FMqd3HfHVbY{AwiQ_Y@8h54OSo_ECilD4z2rF)Tst4-a=a2kl03B^ z4gO&ycLVjlZjnwHX|G;rNVqjR-R(7)2Cv4R>C?&HMi=CJm0u5{mGYQn^V97fbnARc zK(p9RJBeT(HGwR$Z3s#7Glq1Zhix7flD8fjC3~w6znAx}IgBXfL2SbC0IGD+3=;sF z&jf7Gv_1%B~;gOQNeX^FaR0la_0(xT*y#dh3~bN|?3K%k|{* zm_wf=l}=>SjU`iQ=6(G1LBcv{LKixK}qqQ$AyEY5QwoDobWXG}8HBt%@cM9*w@l zP_ZLg*PAk8=`yEbgTZ*r&di@1KosH*I$fPtwEpPpdsPYKn^a<2D{|A}C9lZJ2N82( z`#kt}VfqIehEmEnhsyi#!D9SSo@ER8eH=_wZv0h=z+YE-lOO_dg{{+XeETn!-`ui-+=SzhC28) z+hbdo=>^v~w^T2byq1i%9q$6FOlCuY3T@+Eadw z!E?IW+q=5Dy4sI9XZzl@&|SW(qAc>Fzxno~_vyygcmcC1yD720e!WUX8dc+(SXD5- zj(q4mUT_T|>_IZPD;`-Z-;poP9=RG@aZS zsdphZoiMTy59E~!ypq*Zz(7kEGyu|^hEse5`-&bNU zK$f3PDZ@~PVFc2>>mJ-#?}pOnna*ajsmQuiqT6WLWVj)bN~a< z9z6%_xG<469MoVM?0-bdVBYrmUsQ4Uz14F!wa#UV-@3qtAa~J-;#Q_uSigeL25A7z zTTH4rPTzS?F>86}|D}nKSBuw`&A13FBl$S_xII();U8@2x;}6CI%oKL-4Aiy>t6S| zbBC|9MjvyPhdD2)Im6U-=M0~(`-{5n?3cIOUH7`zo&A#fll;l%yncA}f)`LqHQguX z(a9rJ4Q43w?`x!R`DeSgw{;i3H3G8$f9Cf7 z{huG4np7tNYXBr2v!?lAXUV!k(k5hc2YBTJwbF>PZ)bY}1Klyxl35js2Uqp<^zB&N z9_-0@O({Fx93@5(nUsvbXbNzJ#E-6mllrMS_{&s#WdBUWv6{Z|Ch>GVKKnuxfX4 z#(X6X4rSU4vOutexpwtJ z7TrCf;;X_m(0@3v=Hy7We%q~-kx+)A)Ps#i7h=<~>^gNs{Sn&||EYg3z{i2OCS8te zpRKz0LWfF5k%VY+kc{I0a>gll*#f(`fJqA+CZ9x}`cqw86OSJ3)krs@zwU0gPCoO4 zU4UtH>!oem{;bdZ%&OtR558f;)@P3V&|XM1Y%>}XMt$lrHco7Yc1=;DVL+gf(28j# zcEUKEnqX%?_z~azg@?mb6HR_V!4vw2?|BR3sZw>40xSMU1lofi>Ckb;qGv zOapO;?)dJ5cbuwRhlw0v5whXfM~-a`mYO?!AJx0v zs-gRJ6AkHJb;C!zj-fn|kMuUFK=--X5{vt4uVa)Ks4!u z$ZS#?((#NJkf6;nsT+FHdmQlgYzo(&7QTJ2Q5h+Kjt(J*3m# zkMawh2+DV@(!F=N#^QZZT-nPb< zH6XB&P_R2hD?3!kvcwb%RUfA#Yx}_>5?tsoY=Uc!(>EPR2hwRnDW&cfNkxuWpHOR3 zo)4+YmjxE0EEZwerdG_s!8ckFC~TP;Eab2QN5*tc`UbMr^2-P&g^P4dQKsb68#;J7-)o=l~E6oe;&v)Xo;A7So)w$QSlMRspqI zOv1C!H)#e}{ix;Zp4+J;5=P7e`9wlRROIeY<+3=hDU>?3%3v(WIT{^=C>AZb0XgiE zuK7{qA^{lGfgC6CnFmk%@S-)Nz$BpZM;#>CLsN%$;FrpJ4NkcbyWRtNwI-cy9C7P7 zCKG(I)vHdMHTqbr=7U|Ko=iRmUn8E!Sc6@e7t6GKzSxK`pbt+_tO7a~l)}5-Vr~3pNBizLMAyKm8n{O`1LIsUqVBJkzSv=+mBQB+5AXh>R@QF1_{5vV|yO> zHxPCG)Dw z?5*VlmVf~uEP&Lc%Sp;rsB4I@{^hYl(AoimZ9q?IpB2!^^_FdF7HuI=altHvhyB~) z<2&K7$lGgjo21v^BE70fWxw4(!~=P?zCMtSq*E%PR3u&g+00MnlclX!*EFEPm6#z1l{Y_5m#*T;uuG5=7%VltlYbt%Yjqben z)8C2h^J>f>r-pI(jZ&+Kog}h2GVx)u!jLwx-_B=Rz@eSHyGE4uW~%SLeb>p!16XVu z1WhOnm08-?o)zC2`P5ohW}H zaP^1$6g~g4zGLF?{-W$ke_uS5$HCwJi(PGG(evOn>HFVP1xf)?`qeEV{?|y~MIh~;wp4f}*ufES) z(5_wUY0IL~f7BN$CEM1*rSQd0>0Iq0;SUYIXv-r{7~FXMUhUPev8@`@C2(4`$ z^bKV4NqAiIAlXVulamOq#DHTH*hcbiTFj!WUvbjo)$I5DY*?86o}CRcKk|&{=l#34 z`zrU-`tj-A*z~*D^#1KKHRl^MO^JIZe#$DRQS+msI$3y$KV_%!FmWRuJWx$hO{#-% zxQ;lOR2>B_mSEzw>1e{1Fgq~uVP>M-7NN=hHp(UsrRS*`~>20b~~$1ac4+_6EuxB7SvL z72DPu{CR)8nAeuRb>FI9`Pr=cS#pjXYX&S7-#X&YHOJv{RD0I9fDYF}Mw7ae(19Xp z6ClTwr0P^h6=6&!3H1B?W~bamh7~>U<6m~l&Ukx1jodC?z@o!$ofEs^IUwuvWrjG! z7jq51I90+V4zL9z^Jmm628T*`#c6DYAsQx!*(ollxmCjt~XVx@-^HV;pFYMo}l^D<<#!68p zXS$mD-ZDoIk?;d1uW!MmW`Tt;5v2Swn`4&7)dQh;aB?SH9`;eiby35Pybz!$NkKB& zU$e+aZW32L%?2`#kL7}en8^VgKyWCwK|8{<1x&g39B&`Up|0JJ4F+SSX%rU1^r`k9 z#0JnvL3X8(gm(;+@M*)ue4F^e{#ccmcGBc(6ISXAYu)W5OHm& zjHw^54i1wxJ$^5&bEIkI2{D=(j`+OpKF`s?x6Wfic?|SUc3sfZ5^C?toYG&&V}IFs z3lfjuN}GQ}3u0JeTtgs=sE`mvP>wEYWD{?3BTlCDNBd5FQ$niu%Q>0=t|p9!oYO21 z5b#N2TW|YqwCA(vn0lb>GD!-qonx#-xd<=`Q6T)Ep8k{=S@IUKmd^H;&aMmMgMYiH z_9F8abTwvT*e0mnW!(_KvCRU|FpwAm4GIxdFu{Nr>DN^o%Fq6)wh#3i|Js$VJeDU3 zg={UN35UE1i)=us23KdjX9wi4tM%_Qygi9QHCH3S=9MQ7L6ak7nraC zT=#4{Wjp~U$aW4DwAqaEXfmZ2X(^!Ac8;j*F7?`E(iUj$Afc5g9neIYSi;OUnS3)_ zYqCH!xE>7)g-NSvh3leFMZDCnZ#5jE2s8w;Nz3SPYyb$2Ts}l<9-7boxh$VmPVW*< z-t78Ey9+^(B$Yg0__>0)_}$HOLmx0ucbr z0utMHpopvsh(@jZ6^|JfJdK~5=(m5tS=aaKT^8lAU~tuxr<+$rm;naEfsK{SsH90v zDjEfh{#sNBu~PEkugGU6^IHyvKPU6dPqxjW5o(*N4m6S|fC75nSuN9>Jx&)tmF1aJ ze&ur(ja&_QhXpa%}P!Mm8{U zW>05SHs!~TeW}Unm;KHo3n&UEG-=eN)bD(ZA%bgF|L(rbcQ&yZ{8KNOQSMFc|K&i4 zxeXue&pqE^KHaB!l~CudRjUR`o6}$Jy$4ww>!g)hXn$8RwSq05Ge1|Ro!^^|1^Q05 zKig;cbe}bUK~#_p3W0+XS)172b7nd}dwy%s2%?I@uy6QShhqs-ZqcT;@9_5FJ?)`P zXC4D}UQo!P18yBdZk;0}e1x<)Sac4$aos+Y$HAE$1&ld#wSp}0IqyA8JTH?KhRrLn zFg%?by_bK+;w_BE#|T>teXOAyH-+rzv`pGhF5mV}wd-5<;zx@{NQBqSGgov{-|EI0fD@`{K&-(f>6K0-=fkfdGLJ;xTr*Iya(VluZbo9hayGrZO*pKo_puL0t$Hs8F{A zAXEqt)i(`i43e6J1OibPsvMgZ2t-{VA)19?F>O0-|C|v;7bC^ZN6>04K|*sSSUfgf zv`2r@Pyca0bLBJ$RFk?OTB?E_zx1ts{KIy)D!x}QTU{e`~XPhF%c>H{bRXz`zZ zjf@D#=fC~uN^EyJqSw72{nbu?)vrE3f7SeZ(xGVcXgN3gZX_9}&(7`zIoP z@cxW+hHZb*IS^Itjf%Z)MCq2QY)&AKX6w!&Q5Dh!>z#IdrqAfGGi-b8gIh#nXNc;h zcDSD|Gkj+E2Rj_$?i~uJGwcTd0uXF)_OA}xrzr(*U^|?#3w>id!)a&Q_G=5F;-Vt$ zoE=f3$fks1Ih?7;`tjO8OZ5lY8DU2_yyohD+V;W$q3!^J9idguKrO`imTGq9wRD&xOq7qmL{}08psUIm)Z_D z$9=9le~ruSG&e*cgxJt4!VX6|!_JE;?u^D98R>$ypoI-L^j+8TFFyR@IGB{1AaRmXE}ial zc6@ex_TM+Xb|F~2Z$>(8M=$e>r6XOQ|04IfrWFV@XNT>GU4VcCk#^ddc1%sV8X0Lf z5r7z0d3sEi2)iuV`PxR~Z3NWl_6X(jA-1Yv%K`)7g)v zupM?Z9RegYmXXekT(|%s;O8BVEF5FdZr(j{;v?(`+p&x4gzbKY)7}msSemw-?f`5M zt!C^<$94C4?NI~>#D*M%p5Jtl>gMYs>~K0J3TEsqzV`3}8-+~~tR_>^5$;8Xv&m`O z*})7*=wTVQ9T|TW5D4DhecR!PD-pBfkC_YiuU->&O@GwYus;?dgxD93o}Eo90TK+p zg!(lt@KUz8B`ZpS0DlyzVg<&@xX=ga2gTB)p&qx68 z;&j;I>stf@#8+}P{HH*mkI3j>{jBS5@Gja>!L<%MopE@P=A)SommMMF>1wP@U%1B3 zNaq6(sHxYzoI!|Ela37A@ht@Chc|qyVW;R~EV5Z5EYcA@+Y#A;9d>jA0#-R(T`E9; z;Mp~MHPty+``*Qg%^$q`r6%ouzwhvOpllJa$F?(?28;e!UF{q#D%BZRBR>`pRc&x% zH~bt?6}(^A4%^pI9*Ei*WGD$);)7`I)E<|Ky84^MO zJ8Ef9cV_Pb7(J2p|3Ck_>u&Jdb7JDyv1!5dy4SwC@9+)hKkL$$0(R^k^=lh$u#4sm zF$h=C>6Jyff3dj0_3u9XbhYEABZWx-(oz*oN)Nx^k4{Q8u>=4O=qxaWk#vSTj=sY& z0IjprX*-@n$DccGXQVfGrM=MAuph(d^!SNIV0y>1Z&+iyzh=#Q3V~vij&zpMy-Cy{ zJ;!A@<6j|om@^z1D~2ES!p%pKFru*B>*}w+fXD7|^svIt9Q19sl9R&<)}t~Jkxs9A zm*ywF%e%b9(kH&lxdY&XovvhCQEhcp>}_2TY{(+hQ-A~#=wZ(2h3z*GjkHFB4bJX; zE$RYVJ8g&k!2ru_r^7dm0B%N-Ekw>+EZ}VgjQL&Pu`^ysfqN@aB6d~)7n53PzqHeS zKRRs@Z0!hmSUT*mA4;Q&Q)!3OKF|fkHajz%-YcL0*qo70M}7n)w5(j_#%_G`hU#J4 z5suth9JMo}m-pAOQ#K*Ma;h#1mG_ayT847210J82sJVHsA5)vBJJ$YK*a(2@A})HB z?S9RC?sQ~s>Ztk(1JGNAolg6jrs|#jblCPERTtoAxSBq#evYiqLe2H61G0=`!u>I}#VCBklALXJA5~WINOLm!ni|+TpMrbDh`< z5ZdNJSX-#3!{I3M?Tb;@w*eYPiypWsK@1F&HVa8)-@Awlu_>>?HC$Nk%U!#d?Yo+C zK&}po3A|<=hI3OV^;c+`sZ2y+I|T>?(C)SEaQ5GzE1Yy0_HC8Mqt0;o5gjz%!2_B= zZ%|~H4i=4zPP_1hh0Z;A@ZjYKPd$lYy%?6NY(4MUNNw(0~vMGV??vqZ##P7+|~tPb0uw$cJxWMowna#uvRn( z*i@9=c(Dcn|H@8R$BPlNR1`NK$%I26dDnu`$LDDTjEZ3V{ah`+IF!!^pc!kQR1MK4 z9txaS$?%nQI&Rx(+ef>z!;!8|bo6RPIX75a8_F#)2n(R1To#!bw)fMaKxin@7&cJ= zfeir>iv?ZWLCjVv4drFK`p?T_3QeVesyN8{@00m7waLUu5^EfS(@7;+`OnkE8EHqx zCO`-Tf3=9T&!am$)MYPxR!zkd(=jNA9M0mhnu;+Gf=>!md%ui~wBzQQsEeVEM3Awp zjfourL9o0=fv<_$T7~)Zkk^=U7YlXGfFH1lO&pSR_c3XQY9AZfw;jGqloGAh+Trr| zqk#!nn~~|rIF}X>K)ctOgYskSbUJ+zLO_dFMh?auk`M^SG9$zG9{>arLWm)!qPp0z zsYF_Xm(vU>?%JrMP55jPI_N!JNP#`4OntmELAK5bcx^IPs|ZP&0Ra;|XGW&;VG>Bd zzv{V+^v6=|48#i~ZHLnv03l#`IPDySo$mMSu;U~kKzyr+!B{^_~!QU6O`gPlj*P>-P_@`opxS^5JIo*4!e zuboC>$HsIxyJyF#C$-S-yg4K7$jFO9pruZichC+gMNz<}l9PjlB#?yTU}YYXRC`qc za54!eDMAbY)Ql!qy#Y$9>iSxCgdKMFzWl8hFE}C!d+Ne20W%pz8JGP2H(hm`!*)77 z7#G_a4u`#de#nw8Hlst4BIg;Dww#!j)it2GY9FC0l8**6fG|x%0t_qd$y~_a-hR zFpyyLlSoKa{`$YqAar5EAgPGj=*%X4*Zc_eqHQoNYJNN7p*TVMjXc zyz2z7kYPKrd+m{)Gt%ko+r7*@J<6mby7V*NU@Fq-GVF|xMO5a}Y0pni4!(J=Q0&@T z9wu)ez3SMOn$wsNZWY@6Xn4FV&9i{pBODI<{W?GuKae$p08u@5?Nr#2kr~l<_|&V? zB2b|>2#3p!9WeS`oZ-Ihu=C!JftBH~({rG%2wi!3WH=mYho|1J75~L{bm!H$ac@RA z(vIGm!>`r~fnagWVIREd;H`t)fLPgL7NBHZ9mqR6`(|ig90tMSO%$|0sqzHq4>&W@ z=@lJ_C~s^)2v8wdcVx^N*?0Exp&S1efM}j`r0vXIEg(R^+uwV^nU2go?+J+08EN|? zxONuQ3@n?d9;$W340SH8kI#IE*VIdlYxbR_r{{3Fzwg2g#e^N^+Kp;RMLCb(& z>aYIOKlQ?oT|NNoP3ltLYd4kZB5 zvATc&iBgENf`ju!XNOh3euupY!yQH39A`SLm4M;| z!-Z^$>0k#%E2St2**S94yiyc9+LRC=!@is47?xsHh+up$5ZMgFD7^uy6dw}9O>{)- z;R@_v6M|Y!H`P#7*}+0YUG!>{O|u4p3_1>^5!!|fMw8M_dZb%*ChC{ZdZ$QxL=hKm z(xbXKoFPgFL4;4vy4$uT*xW~T&>JXrn5fHdo_VW+(gtC*3}BNkUX3bMItNq{vr(}v zanYNKxJge;#SRm&acobtUe+qINf(l_EISL8hCV)0pgJ8+I|(s~V>59}V7)tT zgbiO3r^huJTLM8U)<7plBgOxnm{b7s-ND?YdK_xFp8?lz^Xo+zmh@hgfDO0J4G(@UGEfJ`YnIedaVv4cZ zm|Ik_ogqTNxHl?QajoDcE@HGrLqi~1sG=EN%#35oX+oSl#AzoZsN%Fz5k--#Og3kX zi6JT^q!!SG(b;6b4p4+dAx%PZg6)hdDq~bDQ9&^TB?H-{$(Du!V&bG|p=b=ixYD7^{hsT(SxGB4HZdZ!&zxAXcf$oUeLD1X(t=XC)deik*DoC>M zm*8_X2fx$j$^~tPsIppi6;)JhaC=WB!0+_AHfMI<{w_uE#Jq86@TOiIjPn*|IkpZl z%JzA~#Zje_By{g}O+oiwmxEPb+DjC%Mlp(tuKJRJD!TW&%^2`Q^J@j3v#^JuDERlD z9)tr@{Z~-HPDk z#>;Qnc(>wEAhuXbk{e0OJBd%y`uGJx$Y<5_u8{Uy#4(i^O8@WJh){7Mg4IP&98s+bzcCj zZ@%s)-}l?ijAMJj%bz>B=RI41_Wka>>#q0iBLCXm@3{WHw}`VZ_4=RukNmE|{<$x8 z(_P>2JN31H*^_(MeW_a&^~XIlf8vAJy+yar4}Qdbd)NJG3SaA9b#&R?dyjvqYt8&x zUv>Q5A3Fc!-4GhR;N?$^J>xxFK=*&f%?H=6z4Ot)>}#(Yd;E(QcBr$r?zOtMHzByR zH+IL?$^2OL3!L1lx;S_Y7 z&&|K#12_J@&+w^f#Ey&h-~KKa#|r7CPxxbQc>Kwsj~v|cp7(ykR~_8^RWD{zweD->&xrv^3#w1<@euqeqR)ISqx%p>Cb=TH{5;< z`>%cbd%ycvdD9=GewLH%4_))b>0MWEd(TyW`I{fO1rh(z8|M#wt*`avb$jpiPrT;t z2j>4Fa?>76-}avS|MKe|xJ6=@F5UFn$L@W&cNStFGC$Aaw7kouF59am&e%Q*J+f z6?$oYcMH?ET_K?5Nqzv?Y|pPkXYVXeZZa;mM*%K|y?!N}uk{{6$?%ek3uAsbT ze!H{X*B%_|x87En$(?WdaSEl1dOZIRRoR|jh0fk{R=u>RmmQo_EKv#OwbiH0Z|3_8S^XCVO=vUd( z>B$|aZ1Mksw~E_A?DoG$QI8Mq5$&Jcp~@}uB^g33Yxj%C^qvU{-Z;Nfm1=Q%n{qOG z>g2QN`SSx&{nJjqlWL`vYHxl|;P!l9@b39aZ`#wV=l`gR**DGiRbDO60tB#jzqp$( z6^u^ZDqd>pl)x`AzqzOb^^@&Q0_{1B5E{Enzrg(OSDntkmI$;j=}QITemTqSC!ecQ zymS7$>ZSKkZ1PG#e6Tmw1h>zMa`VBl=<1_C=`F9G_y-;Qu7(K5?za4@Uael{l`bWRhce?rD7X88Vw|%Z@Furu#ledE?%7Z62$Igm!^ZY@*w5PLooWA3u zRaDeV?=f8IcR}bmcYDw6rwu!NJFp@D3+#+rj~_q&kA9ZchBl24-iU>`vd)$N~b82FpKZ+`at_IpmN zyZ`?O@tV_9x&HJG@dvZ+G<*gBEB4L7P6@0)+0TUO%uyTA3|@~e&W;QSs5ezM_z zcyJtZ{M}!7aQP25d;2G=c*0wxyRC|IuDSRU1Al-0vyW}NbLvUrug3l>&bi`-D;{{V zsEhyo^^|KbsoioOzrg(OM?IW>E#o(Od!db<<;wX}qFz0}S}*NcKENw0D=T7n>3rm# z`LV+rF27y9d#?KA_Zin`A4ea0*i2MBH~*@t*ch{Xl3$IgaC=Wh&&_|Z;yv@8;#H^3 z(CW_1=Rd-5_<_@}TFCZ!efRvSfaP8eZ{_76Sh!3P%y{?wDXrvBn_sPp!}VvsJ+RB@ zRpZsDa?``AN6Wz@CttvZhu`q@s}`!|olnevLDdlbENK620eShoYM?!0{dBN}*> z;ZeVk&FjxTiFkT3ecJZr+XSEFR}*!LyjP!%{4pmZ(b*OMh+a0oTJ_onHpib5z`Unv zr(S__#>?Q`Nr)Urj^{TARb)H1$t&69hXJgrTs!~4Uw(ddZ-4yWgMLQ*k@;h&KJhx- znSVn9)SCh`^yVxiL#w+Ut}y)M`8SvCJ*{thP2@|>uf%inA8dHV9V+UB^P5G>+g^j{ zmzrOxs5j3qs=jZo%lR7>k-HCe)e3j#-!MW9zx=^didxnogHy?c9 z+G{^_a-Uki?TUM^{h~MiVNI28*Vs4AN)QKe3or_y`^%dXz!3Sk~57B#0j$>co#ykJSM}EY~b!J|A-3{OU)<^!4 z+zJo#Maxg#bl-ys`cCtoeBGPx_|Svm-~4^v^CQk(_6_g4(n9~$XHn66?mC!1@S#fe z%1b8)x4n7sw#P6Oe8d^Y^~Vo*7TA34ZO(%y5u7_IlzR>W<)a^-&u>&zFYT#BII=!` z{U?2d0h!F_JyiLs5C45X_Q#(6zYvsj^WXJrojo|Y)T>mN_uV$1&tJbQ+vgSai_T;7 zo)|H>_FJDE%x}A9Bv;)wKbT+t$>{cZ)yW;NIyn7~E3Ncg#`lRR{wD9ApWLWUKH*gd zr|-HFCGegb=JWUexKExVzWe;&ckq3-4`ue3pMBHm_x~}-@?EzboXqdr)vHd==LdUV zUT^)@C-ak&_jWOU@%;xUH|nK574Mn%V%L7_lY{wf*G!dwn{Imd-h6(;41yyI_L)!m z2t)f-ulUIiJ#_ioPoGl{-*tLEKe=xQDeyv!F80lyPAZfbAl4lN0SL5vmQo0@;c7Xl zP(?))1T5~}K^M{K@p6UnbMvdMmSY7}tKo8H6xWU+MyI`HWmxX^rXq?cmdlxds?XgiBe+moNp*%b=Ugrt{B!UQtQV7~}o&ci|KOw5 zpb{m>#O7m&4WnYC7!pCHF$pA4RH@WKe`bT&Qd}#x60K6U2!(68wkmVN(3dgSRVJrV&xhU*Hzq#i6CN#h;dYA%i-}zDF-uxyn>9Yxft8CyxIyZu#HnGT1&DcbK1dsC$UVDEULE_U}j%U*ioZTVXe`7A z`Sk&SApr_Dj4E6GR8+w@5W$dN|3DP6QOqP@i{4t-^6LWxm4?hBhO(vaH}?M$|1a_X W68|sp{}TT%@&6M4FY*6x04V^|BDOXF literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/Header.png b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/Header.png new file mode 100644 index 0000000000000000000000000000000000000000..7c31ed654286906e0868621c65fd81f0fdd17b61 GIT binary patch literal 3512 zcmbtWc{tST9_Lo4gW_~T$WjSmWGnmOC~ITiCyL21Dcjhkj!Huq=43KtEETeZ7&4PJ zBgjO;=eehIp8MSUKEL<#e)sS9{l4Ene#s7YmU{)I1o`;* z_F7w+Iq~uF)i&<;q1lbtgkPzskz*v4%b^!ZAs zazR{aE@p9yuwGWG=mnSb z2a8x>$Yhw7u2sHBCIMx>>J({B4=9HTOL$*+z<%IS?!K@BnRSc;d$L0P7@P;gaaMRCRaTShyM_t`ZA#t9&%n_M|YO7(m`NLN$ zB4-nZ;B)L1B}OAbq)Vhdn~>ZeOq`!rZ)moo2a8OE4+Iiy1K-7Ghstv_+PFC+s1X-- zd~9@%9c6I2sNZ0y-QTD%*nw(+t5gki9!JT&ics~U35;K?bw#QgLUDQ2z(SIaVGTsj zKp|I9BD;ogJSjM*xFCNXywkE)%`v?r08Pg?L)O^vRg}5a-%=CAFL$$WDvZX`O@b0N&kaA*|HVknW+X^~fFfm7g}VOX zG$sd6{^<~1*^-=7qqq+^3rzngQ|SY2nE}(vMhHT3y)du1pYErF?8fHPUU>Kr$=RWT z5b0~VOC+W7Xz|S?<C_ke(CCz@l*bh)Dl?Pl&t-o4rjaz0$tKQrOcZoXV^j% z2-3pi6u*L+O{bM8HsZFBC6v6UeNr(4p(qIcsJ9=fpuH#V4CS`M_AD6;nDNy487D7T z%fKI27o}@EdT6y*m%!3IoVxBE1C{Ycuuo%F%?7KEk2!-C_zI~Rnm;7*=CM6Tkm=~* z1f@IUEh+$OX^M*knm2m9n6@(Tsp?0h7*VW?#LC@@eV2g(l1_?s7FHLLh=gOb2BMEN zCE`}<6`U1C{%d4IEb7iNkoC^!9w6d3PtR;7Ke5k0kJ7UP9PF07I3UMP~>q-5*S@&h8-twZpk}n5ULN zv$ahBS9o$p=R|^SlpYlp2OM4;bm0TZ_o)k+>MrX$y4t6_;nl>hw8Q#>{l<<6bP1l{_}<=8 z@7~VDg}>`~N{F_bySl;I zMJSOiFj;|d-j)cJcuPhX2y3KaJo-4uxm*J0Z zrakhX!!o0fm4_*zOdgc>U^H6ps<1LtdI#h#UP`n_4Jwx}8lk-Jm-ZmHH6!jW$R`r{ zO%KY-LL^#GIXg2nTTm)2O5;Y|G(EoS{^zNEez67a-fvA>%psFWj*Of#{6NsEXMihK z&J`>3H(#E4=0eHEVMDs7fyc4g+G8Zi&3XQu2`+V5k6Giu+q7{n;?MnD6eog zBHHr&ny1==P94Uou*5`y_wyW|#DwA;ZWs4l=|~vA1%#uh%F-1@FO=cWFTB=y03=yT z`DO^W2*2SSf0KE;#*`{l_yltu?h`gcv#0|Grum$j*0B>AkwX`Ncg)Gzj5dEs~!r-uGPTJjasG zvKNgW?kUDkm;pBdO9J-;`SD7=>v&ttQ?jI?YiWO{3|n^8`)0D+@l4IeIInmC#V9mO zz0C}qnU|allm*rpa`J;;xUfRp`q8G&g?2BS`cqZw&i!hxQHuX)dO;Oq%@g-?{Q?0@ZRYgV$}w%5Bz^F{Xb)t;a$_*+r~V2H*0<(J)JrBnZDfd2bY`#&wkT@|fWh4p^5kro}*&#>`Q z&u@9>fd8}};Mg?ff&Ww<8r(92JvzT>%gFwW;Bz xR~|AjXsL@1?UuGCy=j|V@?CMAa&hFyJsxtxeW!oI1Nh_Tvo^Ogt2*U#^WO*c4BP+! literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/HeaderLines.png b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/HeaderLines.png new file mode 100644 index 0000000000000000000000000000000000000000..aeb32c89f91345cfff34155e4e946bfe17b55b83 GIT binary patch literal 4539 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/MultipleLines.png b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/MultipleLines.png new file mode 100644 index 0000000000000000000000000000000000000000..15c6c0f2a58bbbadb89755aa18194ad5dffb8fdc GIT binary patch literal 4751 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/OnlyLines.png b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/OnlyLines.png new file mode 100644 index 0000000000000000000000000000000000000000..57cc6c36fde2299729ca554a5281776ef8b59b6e GIT binary patch literal 4194 zcmcInXH-+^)(*WHK&1sldb<#iIuab3)VWdyl_Fh26OcLtkWZR)Q6fqS0Y*WT(4>o^ z^ne1PLjp)uT8My@00DAO)H};NYt5|hertX2T5rxi&%4XBpZ%U6NwzdM2D1yYgFqm# zsfmFV2t-#6Y(7>7;P;};kS=gQ7i?v$530bOSpi-cJ@w4=K%lDo9EYw39BWCEebPsxNwEVb(0XP~P8+$a|Ml8yln3&k#-v^L`E|G(S z10du>e{a*+X8@s4D3gpXSB~Fg=0&?2tj?T=?nBy?msm-~O5&+rg zy}EPfCba`Z#Q6gm00dauDWTu&p$%PIKtAsfEAz`Bfa2HH@Na`k?RWWZrz%jXXQ&xe z>JpW@PL-sR0lW~{jKD6XQVqVlQK=5!EchP)HId2+yxgY&1?RS?&nV?OEABv1wg3~m zU=WD^ByH2Zm)_C=fjG5H4fL*rIg#?fxsx5d@l28}p^q(_%z84@i{#iI>Yko}7Jo?C zK%Qc?q%VTT6bqQ3s8o)K^*jlCoBS#dU%ULl>7Ojt277ZFVYfn|QKcA6ocBMnysYCx z1?5Jy^Dh;k%$_AyBQ0;L)&I@mgs5|a)*2X?gf~nz=rqrxV=hbCzCqcHYT`r~u<(3O56Y8#`mb=sG z+$B%`t$Qoi!DHGtt&P2;1DZV4_e%^^a?HoidzqtHR?2NIm+634WCqA;XXM#JWL0wN zQQ&8D8+J7zFC0U*m7&N8!Q1XPra}u5gO7`)s$JDr9A8+*7$%}JO%Bx%E_ot$4L|!i zb9Uc!BTn;Z_$8Yam$$=MhF7-peiPZLXdk?0d{`ImCxlZRcFn(!XB4hw+pf%;{3W5B z&*N}(W2wQc$Q(Bs(Epsx2!@1Nm$MX^7ow(8B?QT9nd_f44?moZS5Pp?%ez|InQwXt zL9U)Jw$Dbw`fdyrfgM!SLJD2Q@tw3_09-amd*f!58_tX6u*>*rt%4% zw@@xc9CB`*XJiK$B^*s4^7V37iv~OyGGDG)eBLkE_6dlzHmdDpB&DT!1P@x@a5!x_l^G8q`0`{}`$Pn5S0pcA zzv*gJA9~fd)Fj7|H-oP(u&-Au`MYzSKA;v6ei-Y3@M{e5wOxBn)av>n0_N^k~7G2u|U-QK(W5r;@%#Z5E*Z7^nTkxA?ab&^;~iHGJNs3 zM!t6W6>_MG5va$jt0lN}j|cA?_Gb-FtBil-9mBlZU=@~lysJLt)5Xw+HOjQ<>sh#T z7qVR+$dHfZZCztA})onBni3STFn7jyBb^ixnn z-On~GonBtsg6msv>!bPGh$mEi=-uflf(i^ZLXPI4q|*? zOC0GS@v;KW%j$e0{C3e|^F<$GKhis4@@kfY7J6DZkaem@U>$bZ%xL~6WxafAGs-iJ zPOQQ8r?HgD^YhI$A+*k)f_@bGtBkC{*6cKKtpLT)kLa7YW!ebc&vyp|gyU|%CZ%sI zF%O>MFW5|EE?out-ecaoeviz2l&}O13fMe*L0RVsLZOM%`C|T@m*{6LPrM*6)x)ju z^**=aiQPcT<8U?ncpDdP&};ptd?=Pslkx7OU2Orn&qL|wPZQ0HHXgXf(2O`MbR(Cr zMbQzGGE!wrNo-mS2{UBoi9f&4Az)5QP}QKsP9V@#?d@9PK2}Mp0vQ9x?4GJObU57- z@28fT#^7fEiEiZ=tCnVh-4ev&3C^>`4SS?|RdbCagXfU;0{Wfb0Becd6)an#w&ZqgOq?H#xU1jJFylH zHyk^iQ#MJn9Z?@b_nQR`7;4Q&{2xppk3g_B>qc94jeaygmUv=jk~tH0f*-4pWEY)TA)LXH)9k zHJ3Y^u!~%_tIs#di65swN1qP@Kd5T~x#1%BC>MkL5xQp@nE|h8O;_A|rtjV2p-Eg( zQ6`^BoJkVnqIMi70NRP)DIk5)%b1w6PcQm5k(0V8vK~$MFZ9p?>ra1lYcS(;w5*Nc z$D&D$FE{86Y5fz-qd7$W4!pCi8q&g%am#~pXPrF-P!LX15dLwLKaK#+OAm-x#{Cyl z{~Om{(*O+(BjVbSR~{*Cj1ah^Q;Wr#SYVgTuN*)o7GnEVZQsPDDF;g8FwWP5)h-0R z&GuOqWa7FVTdJw#EJP&mq%O7AJ*{1~@Ix=j3!l6%xa41fDO8?byPu8-kQJJ1^=&%* zAf-`XlYAc~qFMFphY~@Z?d~-JvqJ8Br9ao+&3_qrTxFkOU+^{@G8uflH8b;OqfIC3 zSjZRGxYe;ng5a#_-5^D)_}^vtbhN@tpj#0p^`jQK~A{Ftpgrda={#Yx$RN* z2$nLkVZJBeI_h9Z-Igz6daK`{1&w0pha6OsQ> zzXoNLnqU?kw=JS{ugtQ9SoDjPpvVKw?5SloiaG|iz2r2l{hx56(D`0)$SFjHsKR37 z^F$9myBS}~<61-OvwU`ew(w3@ByS>6AYlk>_d~wl@DhgwwiM% zNyAh|z6_UpA=Si8(UKPFr@U83gCJ{+G+uj;hDS<2so>dYRX63ImDu#Szc@|fJ#S-v zxiYiIMTXXWXC=DW37SRAh80hB)--!_O))NyrVd|o5Gtb1fmusW6t&##WC&GyqN|ls z^aF_~D9zI>1dip@{SR$Slh()uZjlg(@qYw7h&oO=5lY`EtzA7Vup>raTWEqxmo$GM zW0I`4b7S8dLZZKJ76~6$UcJcZW&C4PUx+FbOdY7b?sLmeFAqq2>pwVenlCCfG$I@X z1YP?^_SHqjLPy=wZw(^4-D^3#)cNcV-+QleHr@@TE0@+*aSQund_q{7LjO(tH+?>c zWeqC+KH6dI(XU(#h{_UvZ!rIz1)wO`mrKW!l~dR~6_tCTJf^1~beMi<UIfNi`qY z15*hy(}!bc|9tU?u{9$JnF^4`kzua?(!saD(bnxTc5_gN$m7b3gaeo996_ogWCn9B3h zzCZ1boI7)KbJM@4nW?^OM)qB~chMpeoSKxFG$|=*(p^ekdDmb4zps0_Nr}>-gq<=; z4kw)?kxi0(eS*6KHz}8}|8e5~BvM&|TrnXrDLDlb4o>8x5}8bzAd}-BFna@za|x5= zle4u86}OpJPRMECXEpueg~U4-9XNKoCH(Jq6DK%Cu`_ThGUjCD+haUb}?ISk(sx^P#xOUyo*FUyt^OmhoZhOkPv$gHn z_72xBx7X(nbnWTx+53Nf6Fhk6#n9m+$6qF678{_9(B55712{vZB$ z?%zK6aOAT;eg4ITi1r2`3Y73;zl?cFlcF!hJ~-5@ZPz=)NSI&{U`P{ywE=W+88V-l^3uuT}Rg;H?gESYd6h z{H$0laryYGW~cNOZL#LhK3=|67*0v;Q|=jVu1Lr1rG5Eo;dd*~y<>K+)ij8Uxjc&D z=E?)b>Xfwj=}KX^OkCC9#})C`-Og&Z8f{6ucI+ZDZ5bA|g_hT98kY7c{pp!b6Wd$J zSBD+%?yVo3efmJzp_bI4Pl^Yh(5$veI&FRT<>jlDrye&SqMO@V=c_Bl=c{!-JNBKy z)eg>%V$u}pykK3=?68yDQJ1;OWcfrVng07#>P$ls?@OYbw|Q|ZBPm~~LA-}V`{&%D93 z;5l3zSdm<_Cx#HV2mb2gVf`)et+m;rB-g7&UuyN_aac@-mEZCSxcL8eu#TWATN}py zhOn_r`=0}STwy)%UY8HYZ0LrE)K&Sg640|Y5=tGym%$Z5u3rF$^aPNwHtO=#$?n9V z*1G&b4B6M7z8DUgS5H0k^g-3&>A@D1IMX(Gmk^pidT_ztz!aZ8+93xJ4E z0v{dl4_WXx`o+X>HH3hfRCiH8?5_-mnwJ4P9Q(9u4ZXF4Ip#yvU%;Vw0RcgcDhC{qJ%JqMbIxe{7DSCnVs-ygHKzMd^K4*tMY-UYg5W zw>t!MO_79rILnzY;;LFCnD6lP1-t~819%V#xV$GB{AM`*3ZY4}b|5|T5E=cDWB)13 zCwqoF>SR-$vriw7d;)KD)GesXv=b%9f$0zkRvPUD5I-)&(JS_~;nfGG3v85yXlHby zsPhk9=+T0HJ8gsWJ_PY{{obd&#AK<1>Oo>+@YKHiLF|cJLinRkpvna>E#Fb61f?C? zef)$0v<1LTNttA27#&E@87jWJJXq)X;SVj=z>LyE0#6Zd)`$SpPa1AsM(g|vaJ?Ta z=GcE+qXqjtPW;S>H5^=-{@N&cs zzCXzF)!5P34q^wRhliUVr*t-Un6T-{+_8!<>rsrIJv|DLa`p4Ng$WGP;_)&kS38dw zCtm}8Wy!c;>WjM2MUa$5;<^|Zy8pFN0_!>Ck z#X+Ep4D|aMgBPPdkPBSB41_mDdS3=$<(nQAa~?u-$&OW~$LS!T2dMb?^9er% z&}z(wu*WnN@P+gTgp>y#8g$&5(~8V%5>ltNl|K&R3|;IwQ0iQCARVbT)YDL6;EEq; zyD$GS21bDDCk=-V5SW*nLilI$AA|DK4ph`%_4{; zr$Uz}vG-brThfL|T{Y;_Qi?TTqXF6M$R~U10^qt%%5afS{1_R29E#O<`F6=N=3qNI)8q!@-u^EC9Y)|kk*9D44g`%UFvmY7HgsvQt0+D zA}?QKWBkzVNq}>35DCkV?_=Z8S(eCv6yY+$(%*=YGnt)@JcqElw;2m{@WBeHxj90U z9DoV$sE307*y`l;!K3!K0v^RDft00uFqMWwfxfK$4xF#_BuL@xKG|)2C;*mr1;9pC zT>YT7tc>vnViVV?whWNqi;8}X{~o&q0#1@sJ9d9KDU1;lpp*b=89TS^P&-&q-FGhw z`?)+VI*2PCJy)PFL!Tk_UeIbAL`# z>JYvda&g$T=NFh(u*q=mMvVg}lZkQhZC(c;-oDc@nG7UsT(qLL)LB)A-aFRiZ0dpBxRAR_SERCBC)L|67A?MjwT1};~>uHTpzcL_gQK$g~y(b|6Z1i#T zXBjAcpk7ZzrcU(6Mjv zSB!JnO(q#MK)KWjNt`0?6Q?^(79=#Ib|Lej<}H5?v-yFAJQpFu>shGQ^YtLO=|hrfGn+lMHz(HRo-{di!yrQ+ix9j{qbLPj*&;XpE?e04yxT zVOlFM-$=trBHqMdx-7Ov7cX^ki*Zo&7(z!!G+f@tWuI$>Ot3bk<+PkWfbrQopEIa5 zj?<+}L9Y`BX;Wk+l)GfPn^{yCZwJ`wnE8n8ETiTw15GeDv{3*#fk)2TY&LN47zhU- z!(EIH=z)LbMXw{(>{NSXycPDr2*GdMd2AYtzfGP`dz|QE;Ub$1V8LAo%7B!4WVchF zg&%!tJ{9rajAWTqh6z|X=9X%UL}OzCgPp+i*b+8mjYZM_&|pH&&fU&LSQ&sYDTbjD zq0#)W+W(AxT>*UcFNn6OP71oFG@WY?G6Ofbcxg_Hv!;mODhN7I1*#(4Bk;iNDIK+; znnRJ#OdV&~Z!ri@1!Hy^g;yT@##zRO<+%blM^Ps!WvDKrNXX4oj@q)VLXIXO@JifC z7;i}`Gs=~o8o8PrgmffrOV;YSsR6nZiaa<3QN^M=;Ni>$ek+ea(vJdP2&~ba#o{4u z7|SOh7OjYzYBQXFeS`=Rc+D+PynfTNjMhVbVp&f@jrq_TkjI!vK=9>W_eG^9esqEr$A5wBXezOqAqO_&a^9w= zKr2g0FL*2wXbX)#5MX|4f2NJIgqsEVVYjE6%vft8#Wzz0GENP+{S|*Rk)SM`*Qs&9 z$>iv7_2=@j8>36Rbd>5AfvVb4ji$<;G%4wU57P>iptCO^Fe)4F_v^UhnzZ{O=trw{ zA46Y+yt@rjr45o1CuwY5*<=hc10oBw(UKVVBna1uS<=ev))$*$GUEVZB4`PnAU(I; zLHlB2yWN@36qBKs87RbzGex3>d%W+e)L5dLNxTRhz0CVCcBgCyu*&o=#;+?H z0@8MmB}31oS&a^gSjSW$J`(FSTKKNFR+G5LT?aAd+LK}A>Xi65Avc?cHpV_gOZs$z zLCFUS(fa4coRFa{E4E$dh5XnSN6+=rsl%}x#S&1E_HQ1|MQ}O%C#0o3`kI%^@)=DK ztZgB_WoAR=rSDCy2BmOtAmki}q-BHB)9AhJ+nX_#JI5l}Sn5y*kegf#hoVSziuMO2dTev39vBqREMS*{a zDi+HY%BI3~#<^d-yl{K@Og0KmEi19bz=9%RGp^F)*+0AK2F9KBzbH&Xz!1y(EqSED)qP8)an*>*p zQ}`N&{sIBa#2rFBG_f1$Wl>%uoB*a1oJ%4^Ql|IFq2=WFLT>B5ZE)7ozN~=veU6zP zVz9}Oh3(Q@=$f1US;B^1Mv8$xlKbA~iUQ;&2ug1|nvpP(Yy1iF}oJ z#}?x6Cm0;GSY?~suF2EHxJ@d(@<)n^mL;?#xq=B zHcTLESjYz}B_V&#bM~|;5Vl051Ss-K*sZ4ptFl4BooC3FD81#&x_ zHcZ!N375_xGGzIh6nC0XGYz+JJeF-s<^W+X&?iHogr}K^YEmwsO|tv&Gi(j@FjEM^ zk2yXH9sq}}h-pwe&rv{aqEG_&QqE*@#Ye{+B=Q^duMT%e#TX(rmef>?7{{a0AnRZ= z*D@?a(g=h4K5m1R=?;wAvQ4NOf%yw8EBXh1#USM>;e(kAOc~Na%^=y3A=!no8?p-# zits^u(?X7Uq=M)nPy7|~+haySCd@Z8Q77$qNs01Vo=3G=uVp|EMQOpcAYt3chsjk7 z%SNki{5BWE>ahxwBqp7Af)8SDuaTajB82p)^blz<8SWRo3#pksd4QRNL2ghe9^nvf z5PSe($67Sk|2t@;#$TFuH=u*n5py=yN(U;Uc*cyrBdk7~p z=E{lJ?N&)5JVU7Na7v<`6=`l`0}5!`%i8uy{c zcdtu+9WJh0Ss>n<41?`U>2|>6n1>*NhIgWFwxVLj$8d|2Vl6et$>Jcqv@aX%vol5p;6u&`!q#ZpH}dnFb_*?OV2nmqLtG z&t#l1C54!y0575711EsR0)2@IfoX`R5A`PyH`L<@c;Jm>vjKF9M?~`MEqn<2g|4#* zx2>Lb0+LobY(`C<@>E$d$_Mxo2urR)YUHx`AS4cz+U=yeG&Zh}C+89|>jkF+I|V{- z(JS^Cum7Cf4)KAQ;`}fPjg5 zTr4sGXGsIuH3S=q+n%^}XM1x6+%)G4ux0LSmZ45B4CEmH*)?bZqg}$h)|TYPrZ zyXJ}+=<6Xb%@mR=Hj+#h$E!-{QL@aO!X|j%6(&&2jh+f1yNY}rVsgHErYcRTLrJ$^ zs4CKL<7*;e!|~%pF*p0D2}6a3mLvV)<6}e}C<=A7xvT`8eyDs>jb(a;#=s}*l^$TF z&yUJM3ZIcS^u3fP6)I7k=m=@R6A)L>{8Lc~i}vS8Q= z1xaCn?g8V?G!@DG$vd9|b4E0pSDiJ5{G_slh*m&gu|5s&ZH=H;Oon1|-#fhDrHdIj zLoni|GQ*SvjFD*};1 zjJR~TY1+}OpzChdFQ5yJKHyvCS3|uq#8o- zIS2|~66#1QdbL#Da=5OIiaV$#_D$@wygL|Ev-N$$B1XNvpc?uL= ziCCi7WSLY}D)b$)6a9U2BC)FVTNoYpEY4QY)qqu@r_NfxEGDR26#c=z3XvjwWe&5e zIcWz4fXUKikZ#pB7!`KHHsZsN+b5e=TW}b8c`1b&;~=^hnxDtzs(EUJ=pmRLG%|X9 zHQyE_i56jn#WH32E0<+ ziGWBD1iw+0+jnov09dYfkEN39(>WWn{ZiHzC;;!XRgI0=j8-;9Kx??yI#kkF#KP{T z9*YcY?n|(MBiXuQwN3FA`xdJ~h zdO4If#2A?~K=GsYu$%#m>j*<=c{zAX1g~Lip|%_PekfTiVJcC_3Z9L)UApD(;?G8A zUtGG>uY)qJeXn8K-(TeI78;9Wo6g`URN4x22G4u28wNxEG6Ow>`s>K!e{yy< z-~u+MkdQnDzj+dLF1Tl6#Jamwztv6gk_(xMKD7T%KDgC|63mXK5Iqv%BIcvHdZs$l+>FWU4wqJN|e=|L{U`F z(*$}#ZNy^?p;;%Vwkj9!qCqgAhPq9r8_1)qfIvryT4kd59{4s-1?tpXwP#|`yR*Fo z1SBu8hS`%qMDsUwTmPGmDR#C+Dkp;4GbCGP!_p|@?Rb3y6q!H%yU4(AU)rz{~MOh{zj_j#z^S zO4L}z&GBMh3ccCjK(u^VW|AT_gAV+z0Q6m6$M@uX^4|t!$s`LP)bL2wvCxV5;2kvL zS!v)aSr0T}Oa@4VH(|tl2BfmydTj6*a*6h@YP2FBvV=*=5^Qjj)774p5bdZ!skU#@ zl7dIdwzfnflk{>G^{0yXwk|YP=vf6AN*CPPgmE|`rxh?u=*yyRfCNv3Y&Xs$)Ie#7 zSudWXZZw>sRtD+aA%rH?Waw4P$u$&;EKJAy=Z3@Z1n!tPNeTm0DG=}U1{Nv;3Dg+m z6qW~jq2owpiA9OneIc<*?R6FOp^)*fB&SlTr~l453LQ@eRE;5PvNMf8!T4SVRl2ij z8|XV%nh9X)dX3l)JNgpDcwwcaS^bPHQ9s~g(T?O16leifIVXOXKT{(=ph2iW|YdgfSy^uneN+l0+zN+ zB#}`mv>Rf!ihG1ffsNtojdu-eWndm2acac8AtVrT3FZNp<8qCG;O}KLB&Hbj3!MtE z23}jFx`A5qNKat{Uc9kH)|8d7r!oq(<)|D8ZftLXiW)}y))GN$=LV`E?V13i$2+4F zzmXD`=*CB7p7NRjkyx(_)3kVP634)P4?Kg48IRdKh{pXa(28 zH4ceUqcLQq6IUy}XrpbBPQ(ORvbof#frD5n(S|2mRI9M+3qOzpC5GHQj<>K;8lf*V zVlJh57%}4_qoX)mo)erf9mhZ`^ zgQ2Um%d$21M#5w~AV0{|Odbm58-ejgX1uXDqV5muvxpV+Hq}_~Njr{gAZ}vqBr$-- zIuY@S9K=lzf2kW0MoU`@(eFV2#UpK_N&uAtDp%Ovo~jOfk8Z_mP?Y!WN$TEgwRJciixc6gi#Gzj^b!+E>=g6C$8R&KR^es{nMy99Wcq_)mf8Gtt7A< zE@C7};|Uw2A(s~{E}@+3z*nFjU&Sun7^mFSB*u8jIQAk$tj|L25{d$d9BpwLz1mP< zJ4Vfm=8PZ2f8d$80>)fJ|0>z5g$1l-Cr*1tJPC;cI6mf6(9;EUZRt%J>oYbemy80t zBZzFg7`^Uy!_EZ0LY^nXbA$rh#N_G$IbIh;25{j0RjP}Vt4708kxSJbQUpb08w!e8 zXd2LR5@OV8L_sM8I5ndw(#PrSxR4#kpz&IK{G3Qd7CqU>G=S0-s6|e*CxY1vlGA{4 zs~Jz*)2L@ZytApvANWJ0W*`fSO@aUXncch_uv0=D(rXTQnn0Z`oIs|ifqWzb{^f&X zHWa;409A~``+{(_-GX~YAd108Ji2>lDhqF>V0~WEp$35npi`W zrzRcjjO)q)={y>(uDF&bzN6nLvCwD$E5(?^Tw;Tgp*?^#S;%j7uqWlCompax|90a5 zUy3iE`s&lj4()=MF8}E7!bkQVKm5q4`#*i6ZT(YUjqE$}baZ+CPd>lxN)$gojr>!+ zuQ5HP{U1*J$E6RKxSl_|cc{BR{`XgRAF_=b*!%W%C!8^C{NwYu8aw|>|G1w+-Q#{< z>3&DOzxu$r?_cW17T$PpwQsfe*rTuE!ai*AM;ngQ?v{(Y8~OE-=5Wp7hfdvJb>E5q zxbWltsiSirtopUP5SQJdoo8bU>1wx29y;~lr)Dg@_hq)_b-&)1`LA#O(>aHIdCGL_ z<;a&$ee|Qxi|udaFF%XRJ$Ctxe+VCW*72K{HrUR-d{8k$%Q-&!sQAK#?m}Z)`qcS< zyx^I2IXbszq4&7zotK04(+}QaUsLk%(Jh%z?lZWn2NF7;+?W5y?$3*D((>PaRQ%&N zeb``c>9ZGnGtB3j2NHHYST*bAgVSyO92@({eBRd>`xrX$|q2sRpdf(Ist7=DzDrA3pIry^;_FcZw!S{;a)8G2~S|=7H-^!~Pb`pzZH+&r(aiq)i7;ISXS;-G;X1msLf{J9M>W>$?PhRr(7v#P(&tCL5`<5JOZA`!Y_ghokHwW{M5zidWuz`jt1mXNpH=&Z-8a$oYi^N5`X=!=cBbKZ#BG?MG&^ z`tqc8x6+;rA#=!F10&eFUrbi-zx_q?kzMY>Wu>Z-LI#e`?lb0dPe&!Hk)mbH@gqf* zg=A``uz1yd zIIXoYb1!{9F@otMvjEI!y#P@9EOT=|*B!?15w1hGs|$C>EocawF`xI`BSVAp9_6YP z(aojq>gd9rHEulHM^{Y&$*OZhOOgqx5JM*?bPk*bb#a%yQ`dqKYDW@XB z_KM8zngzOA_(%Wbc^LG}r^OpSV4k=_wzRJi!r6BZi)FXzGCB3e+7{-} zR&bH6zpxP=6ILHZCd`50lifv|X&%VYM_<@GGjiVZ@Zo^Md#3D&BNzXOUyNzRna&ka zM@z=qRaw!a-GF1QD=ptP?KP~q5VwC>vn$Zg-8<$);4Qs5LOcaWs<4|lxYZm=6wQOtuW6pl^4x~w_@HVXz8mPdCZc&kA)BWbn@2( zBPxYerPJIdx~vo%EA`{DU;1>fo8XXAcfB2C`y2W!)N8Nw9PJ786je?fj_&HZ4amEK zpMf5*<(XInszz!->9_W)#ygnej!-iS4}x2@80RTF1Zz$aT^IW;yToXNRv%$FY0T{D z>?Rsup69-b){_%r(`HL)~Xe65KpB( zTh-C{!;Ia;b;MKW89#OQtb?zZgSpG#o6H^o1!eA;QrxhBlHa`qn7D`{fFAI`{4X%B zpF97HN6s<|TD#!`0@8MZ$Q2f7!rapn1*~v$LBcpyyby@bZGv&=BO*qV9fT#=&UH&3 zMLOMk#C{kIbjz8At7`2j6|(J?^e)i1{?@#bs!q3kmGu2f7V_q4Ngt7ZZPTs&*}8Wk zwP4N_g7rmbxXB5g3FpO35kGoau|8EF1}ra z7LkeQ^RW|R6F^Ss(nIz&Sa9#et7A+CVBZQD2?++-YZu@XPkhLI3>ho|5%b~jS5fv! zq_YISg-;SZVal6h0f3l~13cma#-0BKTYbX^zk5l57z5rVnwa3Y68X2Y-ZRFGmdTHt zZN3tHyk}uo!mdk!G|IleN;vk?hl`gj>{(nfcjwkXzu`#RJz2SF#ta|+wo9^*ERO}w zlq5+o{d{18F0~aSufVvi!ZwhG@0mWbLby4B#yj06WM{9hKi{Uj8h-wSivE2OybOu!xqaX{J;;;dV6e@BU3`ZHhp5LC~75+!qPM0$GL z4;EC7AU&m2mQ|KjOqpKAQX61dQsu7dJmPxtTx(;&!R%Gs`c?JBNlTB1zKU+?@dKo( z;GJdb{ZOVynkjuHzmJdvD;|FzI;9htXv(ys9~FPPuLw?GoGUEZV)ldhN)H zvlph1REKM@D{|^z{6Y?;NoT*P7r$P;5;pbo%kxng;MnQ?|19KDOk!wcTVTa<8$63y7EGxWjL1}!yS%6|8_^l5_2m_htd;a3Cl;0-*`D~s$fD@+vu&N-EHeVT zCbC13B^`uC(h4basGH^KQCf>vzU-nb5^xqY&2<}OH#Oe0qf{pnBhEw!jXSdwNo9MPMO~QL#v|iMI z$YBuP0{_7|I~r9s=?YPaV;?(Ml7kW;N5-AmDpm$yKqm3QEs*%N%^)qLHC(24q?}a@ zm4wDSj&vZ|qfo?s2$YGKejL<#aH& zs+xst!#+nKhjkAN1qwvBB!8qFl?YWTBuRwa-`SH=Nh~n}0o`)znUbnq?(%5w6Ic=u zF>HBsQ8W_mk9PJru11g|yV^ZTDU>U_&TUU@)pho4=>ZWzC@p)u2Wj-TX42s4Wk2QSh-Q`wGpWn4)SB2Sqbn^Y@%;%O( z^*X-)x%%@7`xdq$y8p4@vB;Odyzrpz;c(5&^}qaL{j(3M+RQaHzm-8nNz<1`{K_kA`eGW zT0ixj>Yimg=~;)>eqZr$WMBq{8tJkrt>=9k@TFXKc>ZU_mpAGB15;FI=h=S$DW+}G zS9kv7OPODdWTT09-d=b0^Ht@NM>gb-{JPbc z^jg&eQy*FlkjjindsbFIPhTs0cxo7&ztmlbTDB80mxHWZe&p#lCi--V`2Etz-G%y- z>&!>Iigpwt#UoB9m{K+JjFW4f|3!WG2PYAsmiq2~9))+Ic`|Mv72DCXzOGjNQ|pq8 zqJO`&X$J_cIb)G+l4@kp8&g#+t@_F7UG0~;PwIBf4}P4`*@MhEKlt!K_7!m6EPIlU z`x8R@1C{I6Go=vsc}$$cNhF$IS2LXd48;h{QeX+!P_Z(o-jBpSQioAQ#cU_HcBHV} zyPepy(?DgJj?M#a%utbFN3|f=u3b|&#)RPO`2SMKR)j#P@52AX%h->jJ#CdNF=Kg3 Ovus5TR$B1&+y4({0ynJy literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/copyfromPrj.png b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/copyfromPrj.png new file mode 100644 index 0000000000000000000000000000000000000000..557df67fef5699fac97952a26342f184f2721156 GIT binary patch literal 17363 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 KMNUMnLSTXf_D4Mc literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/copytemplate.png b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/copytemplate.png new file mode 100644 index 0000000000000000000000000000000000000000..f771715519b23756199976c1839fb411aa062dc8 GIT binary patch literal 17937 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

    5k{*Ftx8!tbSQ#1U?pUu1RKU) zD&KL(o#k>Fn1OW_`Ui4i`ZvV55$*8qpgqlTB?>Jxri+tw-z)!D^yqo>Sp<@WqS&+N z;qxxMWarLH4;?-E+0TD5%*?rVx^4UAWpgl#nV|?rjvPeaj17%|_m3YxG;7x zfdptzD+$@X_wA`x5eR$RPPg0YG}~>sc^K1TSUQ~M3n<&=6-9)iDPX)y`7^AEY>?7J zs|jhrG9b3LZ{HrK!ikfMAG`T8<;uWvC$K903(L+x@5ac(0Ll&>+~4gikB#&A9C5g9!-(6TLjiaKMXM}dW+ zrk=gE&&OUUvM@Lv_B7d+8<5SI?|8ax1fd7zO6w7s7{Ofy`iE(7CQ42D={R15EJm?R z{|;dWZqZZ&Uqx9W(ftKnsPcnpCX@b>63bubpToH9Me>$_O>7(dBLdQpZpfqCL^bp! zqX(hW!>OTI=@>IZjuQK-Ol!XQl{7gCVu>z)^U9q%^S{_$D9@hV&gcrl9mYRfh5u~T zUOkK(9fsp^*y;V#?ex!2e}3wdr%u8tc=bJ9e1)A+DovlGGx+PgR^$+?cE*waLVIzL zeaTKc(M$GAx0jH8vFs&eUo3kG*%!-RLiWY7mymt2>?LGh9AoVN0OZmi;CafKkN^Mx M07*qoM6N<$f{>z#FaQ7m literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/database.png b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/database.png new file mode 100644 index 0000000000000000000000000000000000000000..01622c7f1e6ffa90fb7981c0b76074a54f8669a2 GIT binary patch literal 19576 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 Z{2xx`c?e0U&@%u4002ovPDHLkV1mc7XS)CZ literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/icon/sitelogo.png b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/icon/sitelogo.png new file mode 100644 index 0000000000000000000000000000000000000000..41e834fb56ae1fdf2ad50c433963963ab2b54179 GIT binary patch literal 34912 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/logo.svg b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/logo.svg new file mode 100644 index 0000000..4abf5f5 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/logo.svg @@ -0,0 +1,28 @@ + + + my vector image + + + + + Layer 1 + + + +

    + Sprin +

    +
    + +

    + Gular +

    +
    +
    + + +
    diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/micro logo.png b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/micro logo.png new file mode 100644 index 0000000000000000000000000000000000000000..7334d565f3971a6579336d4a8e6a7665dd313c7b GIT binary patch literal 3603 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 Z{2xx`c?e0U&@%u4002ovPDHLkV1mc7XS)CZ literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/new.png b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/new.png new file mode 100644 index 0000000000000000000000000000000000000000..b114da150cd9fec270f03ce42fd65d9226af491a GIT binary patch literal 156249 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

    KQ?Z!G}F_+sCC5 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/profile1.jpg b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/profile1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1858e45264608227086cda1cb6f78ae42f1becad GIT binary patch literal 10118 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%0A`gryX!B*D3NQPZd;>3HHr6po+YEkdC^*{?<$094 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%0A0V>gO7E{h+eoL&fHC&M1oJ;3&qc>*0tf<$6xw- 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 z zOISbvdcvEBgR581tvipFSnu?B0zK`4l^{mHdf@e>`fSU8ebL5@*o5D_;iz~Ly&?81 z2xj$8gQ8omj|4oI?Lw`g6E*SVG4SbxUl7}FHgKwBm}T24)euz_Pz^1OZZO~Tqb?6F z3LhD#dIVc=n!z0)d$6kud|+*HVA^FK?Y%`PS8y?2S$0CQQM{Mv@<#_-ZlhEo2r;>1 zFxHmuaKv1)+%g?dWLBoqS}Bucn`j@bRv0dQ;i=-zQH50wLn;-JTyu;{=Q9_F!Vf%{ z$myYbq3w>N6)_{bZUMy1&wXw9in(jK#ggL8`SCazfPl^N_;&!a7yg*UnXxOVMn*VS z5UPz#e2iTBE^+RCV!nE0_r;+*#>cjX1W<(`W zW_y@bW`)|Mb>%e&20_H#gmVr3Nf&(mT-Vo0Rg8PA&+czKr|esMe;u4<;2s0}2ciD^ zRarTC8TCPQCl8xL<|g;>qxXS3DG&W}dWA24*C1cM(X5mH97JKj(`Yz$tn$Qo&?lCM z)bA`5I3&5!1m=BZR2+Wlq^g^FCI&kh1H&_`KfsYl4%;5$2sQkESR8Rpz?XWXPE zR?a`XPi8q9KdOH^CS9D4|HeWyt zIQko5d-6B#284OoIf|S}G^(Rhrwq&s8lQ?R>93(uL|cp&nV5euLrnRZClk=@USwH_ zuA%CYDbVq`bSQ5lUyMN(^$)Ks3LMEuUizsiGAtVG%Od@Jn~V(ra~Ez;f-VBKK{!Yy z^XA?!xP4*@g~G*k0fqrupYsy`lVX{6_I(+W3n!)=ol#ilq&-&tauvZ?b-gk>y>9x!M@@AR}#cY`?wd;zuta zce7VRM%QSKIsL*ICSQ zDC5lmOe5`=maCk>OEATi7%T2ZglpfefRK^=MMN_Z4KV(4XYD`M0aU>9ilDsElX*H` zAuc}Nt|pM$4sAt-5AYrEG6afeWV(!#l+_x|eN=VD_p|7u}K~$CjoIP87hhBfQuoV0P ztPEV-ZSHr|JiIVoNazjyFOWopUaU!)B^lkrUe5H%sv3*gic>9+heWtU3$#Bey;avp z@Aj%mmBoKHRd>LN{r_13DmB6FXz^!4gxM*o z#_w(DKZEzBmTs_AUcp)VQ<$kK@FPq&d$G93G+UA`L!4_KN2WZi5^g}59+Im<4-dh3 z%-|XPOW8reY63szIS%MVBA&_GNp|kw7(;5W0tv{s@Jhmd2gGy@xg^B65)Xmm{j^AH zK@6t$h2Yl^df6zDA!W9~#(c!{PlhcXSX_v3DC{sms!IS2W72+z^n>a})b|_+$SrAn ze;E~Q3ZSXPcFy6rfmD!M5+|)K{y?u4i%cOKd9GQF6os88ZxUjVQ$gs}s(8lZwONu> zrxV|wLzFZIJ1A`ui(tZwG7hOk$a7)IWM#3tS$&AwHcy$EVA0+hKE|7~ZiSocaQm+r zK8SFBorowI@dwl9;9iM4w*i8c+M&(i$wIbo;kg2`S*hw0I}Y=uOK&O33fXo40FD+{VaeW9m0>le|i~*p*Ah2}@CFV8c zm*wWV#?(9E9Gl6ae#?Sf5SN4jYpI_HjfuAKH zYgK%a8)ge#dPKu&%unKxmr_N!E;Fx@H>2$;IoanyONJl#D+xiaF@V^t~r(n>b}y|uYn>wnX}iepvKl)zR^vYot>8VE!KDtjUI`zt2R4j^DDpFCJm;0Z>{Od=6QBPVDaHE&lD@lGgOy2$$iu7zVT`7wx@+FO2$XY_H2_k<>USfzuQ!9& z5R3P8hd0Cs7z#K4))k$d0iPdnwz~rCRHZY`DI^q%p{M+VjK-0++Jad_^$xM2ny_ z(fhH0+xJ5py9S~+ED;T2W-mUw@{Zmu?7AR3|6U)6`lt;X6=5d%43D`Nr+vEQWvPE# zEuG!C^1}qL5f_c%9Vq!Mj9!?sh4g({JuH{8eRv?Qeok1@oO0L{BCcnA zF3w2?v?KbN_Li!R@GdjfWLkT(aI0I*XF z4=x_t1_x^%JUKt-=9cE>`h`c?&?R^b>=QnbCV#X4=!y?LUi#1fypra}Z&g$rD&35*+&$mk5Jr>ZFASvwIgp8#eZG3b>#Do{Wmh9f0#}59}i)b3cS@|O&z&qeW^ar zNrviiF?mwOFGUfq<98!5IdXUfwy@4&=>QRKgoO0Rc35m1&cSKq?^w*2j6F+Ks}b8z zm^|dIuwr&IEQ_Vl?aXxi;>4^1Dz0BMn4}aT9P| ziX?Rl$vW*|xg2Z%4pub4>Ck4x8`oy|WKBSFG3hh&o00aJ!LCZi(TnpI5|)tRHO&ks zgeGHK+K3QOD`8e2rKDs$>vhfaxD81!5%l8wPq@aWrU0A-4*9YxVOf9L2=f}hIA1PX9+ZQShd!f^FcJwDqE`&Pgd30 zW$)<46%w?(d9NdGpSu~a(iM1>+M`s4|>SKxpxd7w6kKysqW zCXq7C6tno|r*)Ja5|ZuHb|CA66fYdXOZykdRE`)70C_-u1x*vUROo>(4-RaFYz3?? zSyYEqz)glZ3ZeMXdvSbxtUTnVRChyfLuX6ynY=iCI=7f#0mh}?^dG?;fJ?wXpfNDX z>AS#m@7Y+An!M)L=chp9Ap1Kp1PUb#Xv`3S!=rYn!DC#%yEju~JJBN_io*|ATBB$g zF5o+Mi=|;AYn+}i`2@As)^Hi>F-gb+cTMqybLSaDblw)eGyp={%em6{z=j#oMJ{a6EdwN_r0n`=yy z_mD-?GXmk?fVTABF*lon(124Z67g05OS(KIKSpL=sMaoRM-> zGgWr2fEdV=34zX^BLA}F)I8zW&F@S0uq6Q2@S4F6As0&k=(YuoITlUeo`7~kG)Pk; zOC*vigPqth301|YW{}j8VRrD;FsMl`3X>REIWsie!C&jCBN`0Jtwdz)DCt#b10 z93!-UxpQGj4@F+kop9w0%{=xgjseqbE6H8QQA-17c?(rs#@Nob0CX#72RF6Wz|d=H zvIowJG42*O$4L3?Cy7(tF`4gLYhGK;Z_UNptafZuL}d(Dk;aJZp7b`UqlqD`{FHv_V+Y8{R}DD3*ir4SQ3hK*CYTE+9s_7<$e{{*gL54 z4hlPfCb&$73vhrR=wC6QMrZF<;b>9^e4gW2EtI#`KL#TT3cQq&^jNgocnzW+x@_#2 z3+#6u(LFkpzvrF%>jA2`+y75J^TK&RXpw2)isxk$Q+&})&pF>`eSwC|@L&rJ4A5zC z)ald=^|H**p*|}_NhD^o%C8L;s5-UwUN?r)P2p+<4f5wII->Z6d)6>yvP1wZ} z)oneyN7+f01;}3nBdK+w7$FWxSGJAUoJl<}bK0hE_+FM0HOCd5eFl6Iq-?X7OsB9w zLV$TdhT5P+H=+|GxQ?PjB>ps&AGI0H41B_6|AxR0{bELAY{odGN`53 zAnyN`8i*hE3Tz!m=D>^{S$fTqxXtLL&W*~nGw+Nf0vzXGPSE`&(PuvE9QDFsPlbF> zbKYYZqE&#JSSt@$W5V!ae(Kws(y`7ePIn(d{ut_kj_USc&CLiAh$wcrJMQSet9p8+ z%9rB9{=y-ee)Z^7<+L!J?aMblso%a{{FPZ~r5fP`=v^>Lt|HQ#d`C^kUW@S}&F?nadELE#1NLxc5*Z780OH1jVcieWs`lR}g$j zTp83Rib4KqKL*6$s%_B(07hjE3~%dN29 z*~Cn!4(|tS1&KXj1Ari}F%S+7jD0gV3mr}sEf^arD?;$;u*6PghUux z!x%OCF;!~FpC05w76sP;LemsI9rou{D`-pJ9MgR?XhS)?mg&Chf`sN&dFY>RqszUr z1rz@I{PaI!>)!(Ae}BN7bRKVA>uwWt&{MRU}HMtgg!z`foT`WqbP`+B{ L<(mJ+*Z=%q67ydT literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/view.jpg b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/view.jpg new file mode 100644 index 0000000000000000000000000000000000000000..40bd29954ad71658f636da3a9ff6189ba0b8fd97 GIT binary patch literal 196 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 X{TK-^nI{Uqj{w)h9?lJp*z5lRv0}tI literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/environments/environment.prod.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/environments/environment.prod.ts new file mode 100644 index 0000000..f038c84 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/environments/environment.prod.ts @@ -0,0 +1,17 @@ +export const environment = { + production: true, + appName: 'My Application', + version: '11.2.13', + subVersion: '2021.05.13-01', + apiUrl: 'http://localhost:3000', + whiteUrl: 'http://localhost:3000', + blackUrl: 'http://localhost:3000/login', + + // changeble url // port + captchaSiteKey: '6LfrdSUpAAAAALkYDmnvdX3GLLCArgPWNHfXasjP', + + //Deployment configs + + + +}; diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/environments/environment.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/environments/environment.ts new file mode 100644 index 0000000..6bfca3d --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/environments/environment.ts @@ -0,0 +1,16 @@ +export const environment = { + production: false, + appName: 'My Application', + version: '11.2.13', + subVersion: '2021.05.13-01', + apiUrl: 'http://localhost:3000', + whiteUrl: 'http://localhost:3000', + blackUrl: 'http://localhost:3000/login', + + // changeblelocal configs url + captchaSiteKey: '6LfrdSUpAAAAALkYDmnvdX3GLLCArgPWNHfXasjP', + + //Deployment configs + + +}; diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/favicon.ico b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..997406ad22c29aae95893fb3d666c30258a09537 GIT binary patch literal 948 zcmV;l155mgP)CBYU7IjCFmI-B}4sMJt3^s9NVg!P0 z6hDQy(L`XWMkB@zOLgN$4KYz;j0zZxq9KKdpZE#5@k0crP^5f9KO};h)ZDQ%ybhht z%t9#h|nu0K(bJ ztIkhEr!*UyrZWQ1k2+YkGqDi8Z<|mIN&$kzpKl{cNP=OQzXHz>vn+c)F)zO|Bou>E z2|-d_=qY#Y+yOu1a}XI?cU}%04)zz%anD(XZC{#~WreV!a$7k2Ug`?&CUEc0EtrkZ zL49MB)h!_K{H(*l_93D5tO0;BUnvYlo+;yss%n^&qjt6fZOa+}+FDO(~2>G z2dx@=JZ?DHP^;b7*Y1as5^uphBsh*s*z&MBd?e@I>-9kU>63PjP&^#5YTOb&x^6Cf z?674rmSHB5Fk!{Gv7rv!?qX#ei_L(XtwVqLX3L}$MI|kJ*w(rhx~tc&L&xP#?cQow zX_|gx$wMr3pRZIIr_;;O|8fAjd;1`nOeu5K(pCu7>^3E&D2OBBq?sYa(%S?GwG&_0-s%_v$L@R!5H_fc)lOb9ZoOO#p`Nn`KU z3LTTBtjwo`7(HA6 z7gmO$yTR!5L>Bsg!X8616{JUngg_@&85%>W=mChTR;x4`P=?PJ~oPuy5 zU-L`C@_!34D21{fD~Y8NVnR3t;aqZI3fIhmgmx}$oc-dKDC6Ap$Gy>a!`A*x2L1v0 WcZ@i?LyX}70000 + + + + + cloudnSure + + + + + + + + + + + + + Application Loading... + + + + + diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/main.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/main.ts new file mode 100644 index 0000000..c7b673c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/main.ts @@ -0,0 +1,12 @@ +import { enableProdMode } from '@angular/core'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + +import { AppModule } from './app/app.module'; +import { environment } from './environments/environment'; + +if (environment.production) { + enableProdMode(); +} + +platformBrowserDynamic().bootstrapModule(AppModule) + .catch(err => console.error(err)); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/polyfills.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/polyfills.ts new file mode 100644 index 0000000..dcd18ea --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/polyfills.ts @@ -0,0 +1,53 @@ +/** + * This file includes polyfills needed by Angular and is loaded before the app. + * You can add your own extra polyfills to this file. + * + * This file is divided into 2 sections: + * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. + * 2. Application imports. Files imported after ZoneJS that should be loaded before your main + * file. + * + * The current setup is for so-called "evergreen" browsers; the last versions of browsers that + * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), + * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. + * + * Learn more in https://angular.io/guide/browser-support + */ + +/*************************************************************************************************** + * BROWSER POLYFILLS + */ + +/** + * By default, zone.js will patch all possible macroTask and DomEvents + * user can disable parts of macroTask/DomEvents patch by setting following flags + * because those flags need to be set before `zone.js` being loaded, and webpack + * will put import in the top of bundle, so user need to create a separate file + * in this directory (for example: zone-flags.ts), and put the following flags + * into that file, and then add the following code before importing zone.js. + * import './zone-flags'; + * + * The flags allowed in zone-flags.ts are listed here. + * + * The following flags will work for all browsers. + * + * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame + * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick + * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames + * + * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js + * with the following flag, it will bypass `zone.js` patch for IE/Edge + * + * (window as any).__Zone_enable_cross_context_check = true; + * + */ + +/*************************************************************************************************** + * Zone JS is required by default for Angular itself. + */ +import 'zone.js'; // Included with Angular CLI. + + +/*************************************************************************************************** + * APPLICATION IMPORTS + */ diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/server/app.js b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/server/app.js new file mode 100644 index 0000000..a98674f --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/server/app.js @@ -0,0 +1,30 @@ + +const express = require('express'); +const { createProxyMiddleware } = require('http-proxy-middleware'); +const cors = require('cors') +const app = express(); +const proxy = require('express-http-proxy'); + +app.use(cors({ + origin: '*' +})) + +//Deployment configs +app.use('/repos', createProxyMiddleware({ target: 'https://try.gitea.io/api/v1', changeOrigin: true })); +app.use('/sureconnect', createProxyMiddleware({ target: 'http://43.205.154.152:30174', changeOrigin: true })); +app.use('/sureops', createProxyMiddleware({ target: 'http://43.205.154.152:31123', changeOrigin: true })); +app.use('/entityBuilder', createProxyMiddleware({ target: 'http://43.205.154.152:30171', changeOrigin: true })); +app.use('/surechat', createProxyMiddleware({ target: 'http://43.205.154.152:30172', changeOrigin: true })); +app.use('/jobpro', createProxyMiddleware({ target: 'http://43.205.154.152:30167', changeOrigin: true })); +app.use('/Surecommunication', createProxyMiddleware({ target: 'http://43.205.154.152:30187', changeOrigin: true })); +app.use('/surejob', createProxyMiddleware({ target: 'http://43.205.154.152:30188', changeOrigin: true })); +// app.use('/jobpro', createProxyMiddleware({ target: 'http://localhost:8087', changeOrigin: true })); +// app.use('/Surecommunication', createProxyMiddleware({ target: 'http://localhost:19002', changeOrigin: true })); +// app.use('/sureops', createProxyMiddleware({ target: 'http://localhost:9090', changeOrigin: true })); +// app.use('/', createProxyMiddleware({ target: 'http://localhost:8080', changeOrigin: true })); +// app.use('/', createProxyMiddleware({ target: 'http://localhost:9190', changeOrigin: true })); +// app.listen(3000); +// console.log('Node server running on port 3000'); +app.listen(3000, () => { + console.log("Server started in port 3000!"); +}); \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/server/db.json b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/server/db.json new file mode 100644 index 0000000..16b3149 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/server/db.json @@ -0,0 +1,8 @@ +{ + "add": [ + { + "title": "todo", + "id": "Gosd82Z" + } + ] +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/server/package-lock.json b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/server/package-lock.json new file mode 100644 index 0000000..0d6968c --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/server/package-lock.json @@ -0,0 +1,537 @@ +{ + "name": "server", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/http-proxy": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "requires": { + "@types/node": "*" + } + }, + "@types/node": { + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.33.tgz", + "integrity": "sha512-miWq2m2FiQZmaHfdZNcbpp9PuXg34W5JZ5CrJ/BaS70VuhoJENBEQybeiYSaPBRNq6KQGnjfEnc/F3PN++D+XQ==" + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "axios": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", + "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", + "requires": { + "follow-redirects": "^1.10.0" + } + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + } + }, + "express-http-proxy": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/express-http-proxy/-/express-http-proxy-1.6.3.tgz", + "integrity": "sha512-/l77JHcOUrDUX8V67E287VEUQT0lbm71gdGVoodnlWBziarYKgMcpqT7xvh/HM8Jv52phw8Bd8tY+a7QjOr7Yg==", + "requires": { + "debug": "^3.0.1", + "es6-promise": "^4.1.1", + "raw-body": "^2.3.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + } + }, + "follow-redirects": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.2.tgz", + "integrity": "sha512-yLR6WaE2lbF0x4K2qE2p9PEXKLDjUjnR/xmjS3wHAYxtlsI9MLLBJUZirAHKzUZDGLxje7w/cXR49WOUo4rbsA==" + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-1.0.5.tgz", + "integrity": "sha512-CKzML7u4RdGob8wuKI//H8Ein6wNTEQR7yjVEzPbhBLGdOfkfvgTnp2HLnniKBDP9QW4eG10/724iTWLBeER3g==", + "requires": { + "@types/http-proxy": "^1.17.4", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "lodash": "^4.17.19", + "micromatch": "^4.0.2" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.49.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz", + "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==" + }, + "mime-types": { + "version": "2.1.32", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz", + "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==", + "requires": { + "mime-db": "1.49.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + } + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + } + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/server/package.json b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/server/package.json new file mode 100644 index 0000000..5ea1e92 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/server/package.json @@ -0,0 +1,18 @@ +{ + "name": "server", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "dependencies": { + "axios": "^0.21.1", + "cors": "^2.8.5", + "express": "^4.17.1", + "express-http-proxy": "^1.6.3", + "http-proxy-middleware": "^1.0.5" + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/styles.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/styles.scss new file mode 100644 index 0000000..5428d3e --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/styles.scss @@ -0,0 +1,198 @@ +@import url(//netdna.bootstrapcdn.com/font-awesome/3.2.1/css/font-awesome.css); +@import '~@clr/icons/clr-icons.min.css'; + +/* font set ==================== */ +@import url(https://fonts.googleapis.com/css?family=Athiti|Bai+Jamjuree|Chakra+Petch|Charmonman|Chonburi|Fahkwang|Itim|K2D|Kanit|KoHo|Kodchasan|Krub|Maitree|Mali|Mitr|Niramit|Pattaya|Pridi|Prompt|Sriracha|Srisakdi|Taviraj|Trirong); + +.font-athiti { font-family: 'Athiti', sans-serif; } +.font-bai-jamjuree { font-family: 'Bai Jamjuree', sans-serif; } +.font-chakra-petch { font-family: 'Chakra Petch', sans-serif; } +.font-charmonman { font-family: 'Charmonman', cursive; } +.font-chonburi { font-family: 'Chonburi', cursive; } +.font-fahkwang { font-family: 'Fahkwang', sans-serif; } +.font-itim { font-family: 'Itim', cursive; } +.font-k2d { font-family: 'K2D', sans-serif; } +.font-kodchasan { font-family: 'Kodchasan', sans-serif; } +.font-kanit { font-family: 'Kanit', sans-serif; } +.font-koHo { font-family: 'KoHo', sans-serif; } +.font-krub { font-family: 'Krub', sans-serif; } +.font-mali { font-family: 'Mali', cursive; } +.font-mitr { font-family: 'Mitr', sans-serif; } +.font-maitree { font-family: 'Maitree', serif; } +.font-niramit { font-family: 'Niramit', sans-serif; } +.font-pattaya { font-family: 'Pattaya', sans-serif; } +.font-pridi { font-family: 'Pridi', serif; } +.font-prompt { font-family: 'Prompt', sans-serif; } +.font-srisakdi { font-family: 'Srisakdi', cursive; } +.font-taviraj { font-family: 'Taviraj', serif; } +.font-sriracha { font-family: 'Sriracha', cursive; } +.font-trirong { font-family: 'Trirong', serif; } + +@font-face { + font-family: 'th-sarabun'; + src: url('./assets/fonts/THSarabun.ttf') format('truetype'), + url('/assets/fonts/THSarabun Bold.ttf') format('truetype'), + url('/assets/fonts/THSarabun Italic.ttf') format('truetype'), + url('/assets/fonts/THSarabun Bold Italic.ttf') format('truetype'); + } +.font-thsarabun { font-family: 'th-sarabun', cursive; font-size : 16pt; } + +.font-bold { font-weight: bold; } +.font-italic { font-style: italic; } +/* end font set ==================== */ + +.breadcrumb { + font-family: 'Trirong', serif; + margin-top: 0px; +} + +.breadcrumb-arrow { + height: 36px; + padding: 0; + line-height: 36px; + list-style: none; + background-color: #ebeceb +} +.breadcrumb-arrow li:first-child a { + border-radius: 4px 0 0 4px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px +} +.breadcrumb-arrow li, .breadcrumb-arrow li a, .breadcrumb-arrow li span { + display: inline-block; + vertical-align: top +} +.breadcrumb-arrow li:not(:first-child) { + margin-left: -5px +} +.breadcrumb-arrow li+li:before { + padding: 0; + content: "" +} +.breadcrumb-arrow li span { + padding: 0 10px +} +.breadcrumb-arrow li a, .breadcrumb-arrow li:not(:first-child) span { + height: 36px; + padding: 0 10px 0 25px; + line-height: 36px +} +.breadcrumb-arrow li:first-child a { + padding: 0 10px +} +.breadcrumb-arrow li a { + position: relative; + color: #fff; + text-decoration: none; + background-color: rgb(128, 130, 131); + border: 1px solid rgb(128, 130, 131); +} +.breadcrumb-arrow li:first-child a { + padding-left: 10px +} +.breadcrumb-arrow li a:after, .breadcrumb-arrow li a:before { + position: absolute; + top: -1px; + width: 0; + height: 0; + content: ''; + border-top: 18px solid transparent; + border-bottom: 18px solid transparent +} +.breadcrumb-arrow li a:before { + right: -10px; + z-index: 3; + border-left-color: rgb(128, 130, 131); + border-left-style: solid; + border-left-width: 11px +} +.breadcrumb-arrow li a:after { + right: -11px; + z-index: 2; + border-left: 11px solid #38393a +} +.breadcrumb-arrow li a:focus, .breadcrumb-arrow li a:hover { + background-color: #b7bbb7; + border: 1px solid #b7bbb7; + text-shadow: 1px 1px 1px rgb(20, 20, 20); +} +.breadcrumb-arrow li a:focus:before, .breadcrumb-arrow li a:hover:before { + border-left-color: #b7bbb7 +} +.breadcrumb-arrow li a:active { + background-color: #c5ccc5; + border: 1px solid #c5ccc5; +} +.breadcrumb-arrow li a:active:after, .breadcrumb-arrow li a:active:before { + border-left-color: #adb6ad; +} +.breadcrumb-arrow li span { + color: #7e8a83; +} + +.full-div { +padding: 0px 0px 0px 0px; +height: 100vh; +width: 100%; +margin-right: 0; +} + +.dg-wrapper { + margin-top: 0; + display: flex; + flex-direction: column; + height: 500px; +} + +.dg-wrapper-300 { + margin-top: 0; + display: flex; + flex-direction: column; + height: 300px; +} + +.dg-wrapper-400 { + margin-top: 0; + display: flex; + flex-direction: column; + height: 400px; +} + +.dg-wrapper-450 { + margin-top: 0; + display: flex; + flex-direction: column; + height: 450px; +} + +.dg-wrapper-500 { + display: flex; + flex-direction: column; + height: 500px; +} + +.dg-wrapper-600 { + display: flex; + flex-direction: column; + height: 600px; +} + +.dg-wrapper-700 { + display: flex; + flex-direction: column; + height: 700px; +} + +.dg-wrapper-800 { + display: flex; + flex-direction: column; + height: 800px; +} + +.float-left { + float: left !important; +} + +.float-right { + float: right !important; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/styles1.scss b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/styles1.scss new file mode 100644 index 0000000..2d5f160 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/styles1.scss @@ -0,0 +1,54 @@ +input[type=text],[type=date],[type=password] { + width: 100%; + padding: 15px 20px; + // margin: 3px 0; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} +.required-field{ + color: red; +font-size: 18px; + +} +.green{ + background-color: rgb(156, 231, 156); + color: black; +} +.blue{ + background-color: #57abcf;//rgb(82, 87, 161); + color: black; +} +.td-title { + text-align: center; + width: 150px; +color: white; + font-weight: bold; + background-color: rgba(63, 122, 231, 0.863); + //color: rgb(24, 13, 13); +} +th{ + background-color:rgb(170, 169, 169); + font-weight: bold; +} +.td-content{ + text-align: left; +} +.delete,.heading{ + text-align: center; + color: red; +} +.section p { +background-color: rgb(206, 201, 201); + padding: 10px; + font-size: 18px; +} + +select{ + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/test.ts b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/test.ts new file mode 100644 index 0000000..ae25f27 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/test.ts @@ -0,0 +1,16 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting(), { + teardown: { destroyAfterEach: false } +} +); diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/tsconfig.app.json b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/tsconfig.app.json new file mode 100644 index 0000000..82d91dc --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/tsconfig.app.json @@ -0,0 +1,15 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/app", + "types": [] + }, + "files": [ + "src/main.ts", + "src/polyfills.ts" + ], + "include": [ + "src/**/*.d.ts" + ] +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/tsconfig.json b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/tsconfig.json new file mode 100644 index 0000000..b62b646 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/tsconfig.json @@ -0,0 +1,21 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "compileOnSave": false, + "compilerOptions": { + "baseUrl": "./", + "outDir": "./dist/out-tsc", + "sourceMap": true, + "declaration": false, + "downlevelIteration": true, + "experimentalDecorators": true, + "moduleResolution": "node", + "importHelpers": true, + "target": "ES2022", + "module": "ES2022", + "lib": [ + "ES2022", + "dom" + ], + "useDefineForClassFields": false + } +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/tsconfig.spec.json b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/tsconfig.spec.json new file mode 100644 index 0000000..092345b --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/tsconfig.spec.json @@ -0,0 +1,18 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/spec", + "types": [ + "jasmine" + ] + }, + "files": [ + "src/test.ts", + "src/polyfills.ts" + ], + "include": [ + "src/**/*.spec.ts", + "src/**/*.d.ts" + ] +} diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/tslint.json b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/tslint.json new file mode 100644 index 0000000..67bcdea --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/tslint.json @@ -0,0 +1,152 @@ +{ + "extends": "tslint:recommended", + "rules": { + "align": { + "options": [ + "parameters", + "statements" + ] + }, + "array-type": false, + "arrow-return-shorthand": true, + "curly": true, + "deprecation": { + "severity": "warning" + }, + "component-class-suffix": true, + "contextual-lifecycle": true, + "directive-class-suffix": true, + "directive-selector": [ + true, + "attribute", + "app", + "camelCase" + ], + "component-selector": [ + true, + "element", + "app", + "kebab-case" + ], + "eofline": true, + "import-blacklist": [ + true, + "rxjs/Rx" + ], + "import-spacing": true, + "indent": { + "options": [ + "spaces" + ] + }, + "max-classes-per-file": false, + "max-line-length": [ + true, + 140 + ], + "member-ordering": [ + true, + { + "order": [ + "static-field", + "instance-field", + "static-method", + "instance-method" + ] + } + ], + "no-console": [ + true, + "debug", + "info", + "time", + "timeEnd", + "trace" + ], + "no-empty": false, + "no-inferrable-types": [ + true, + "ignore-params" + ], + "no-non-null-assertion": true, + "no-redundant-jsdoc": true, + "no-switch-case-fall-through": true, + "no-var-requires": false, + "object-literal-key-quotes": [ + true, + "as-needed" + ], + "quotemark": [ + true, + "single" + ], + "semicolon": { + "options": [ + "always" + ] + }, + "space-before-function-paren": { + "options": { + "anonymous": "never", + "asyncArrow": "always", + "constructor": "never", + "method": "never", + "named": "never" + } + }, + "typedef": [ + true, + "call-signature" + ], + "typedef-whitespace": { + "options": [ + { + "call-signature": "nospace", + "index-signature": "nospace", + "parameter": "nospace", + "property-declaration": "nospace", + "variable-declaration": "nospace" + }, + { + "call-signature": "onespace", + "index-signature": "onespace", + "parameter": "onespace", + "property-declaration": "onespace", + "variable-declaration": "onespace" + } + ] + }, + "variable-name": { + "options": [ + "ban-keywords", + "check-format", + "allow-pascal-case" + ] + }, + "whitespace": { + "options": [ + "check-branch", + "check-decl", + "check-operator", + "check-separator", + "check-type", + "check-typecast" + ] + }, + "no-conflicting-lifecycle": true, + "no-host-metadata-property": true, + "no-input-rename": true, + "no-inputs-metadata-property": true, + "no-output-native": true, + "no-output-on-prefix": true, + "no-output-rename": true, + "no-outputs-metadata-property": true, + "template-banana-in-box": true, + "template-no-negated-async": true, + "use-lifecycle-interface": true, + "use-pipe-transform-interface": true + }, + "rulesDirectory": [ + "codelyzer" + ] +} \ No newline at end of file

    Pb?$lfs|a)Wa# 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 R)V|wnwno|_dSU3r{Rb`xNTmP( literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/fonts/THSarabun Italic.ttf b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/fonts/THSarabun Italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..4be8ad8460f1e363eadbbe20ec1b3b27b80483de GIT binary patch literal 104352 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/i18n/en.json b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/i18n/en.json new file mode 100644 index 0000000..0b299c4 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/i18n/en.json @@ -0,0 +1,375 @@ + { + "BREADCRUMB_HOME": "Home", + "USER_GROUP_MAINTENANCE": "User Group Maintenance", + "BREADCRUMB_ABOUT_US": "About Us", + "ABOUT_TITLE": "About Us", + "SETUP": "Setup", + "SETUP_TOOLS": "Setup Tools", + "USER_MAINTENANCE": "User Maintenance", + "REPORTS": "Reports", + "REPORTS_DESCRIPTION": "Reports Description", + "ABOUT_DESCRIPTION": "Create new project for new users if you have access. If you don't have access, please contact the admin.", + "HOME": "Home", + "SECURITY": "Security", + "MENU_MAINTENANCE": "Menu Maintenance", + "MAIN_MENU": "Main Menu", + "DOWNLOAD_TEMPLATE": "Download Template", + "IMPORT": "Import", + "EXPORT_XLSX": "Export as XLSX", + "ADD": "Add", + + "MENU_ACCESS_CONTROL": "Menu Access Control", + "EDIT_MODE": "Edit Mode", + "FOR": "For", + "RELOAD": "Reload", + "SHOW_ALL": "Show All", + "ONLY_MAIN_MENU": "Only Main Menu", + + "NO_DATA_AVAILABLE": "No data available", + "NO": "No", + "MENU_ITEM_NAME": "Menu Item Name", + "VIEW": "View", + "CREATE": "Create", + "EDIT": "Edit", + "DELETE": "Delete", + "QUERY": "Query", + "EXPORT": "Export", + "SYNC": "Sync", + "editMode": "Edit Mode", + "setupCode": "Setup Code", + "value": "Value", + "schedulerTimer": "Scheduler Timer", + "schedulerTimerTooltip": "Time interval for scheduler", + "leaseTaxCode": "Lease Tax Code", + "taxCodeTooltip": "The tax code for the lease", + "vesselConfProcessLimit": "Vessel Configuration Process Limit", + "vesselConfProcessLimitTooltip": "Limit for the vessel configuration process", + "rowToDisplay": "Rows to Display", + "rowToDisplayTooltip": "Number of rows to display in the UI", + "linkToDisplay": "Link to Display", + "linkToDisplayTooltip": "URL to display on the page", + "rowToAdd": "Rows to Add", + "rowToAddTooltip": "Number of rows to add to the table", + "lovRowToDisplay": "LOV Rows to Display", + "lovRowToDisplayTooltip": "Rows for LOV (List of Values) to display", + "lovLinkToDisplay": "LOV Link to Display", + "lovLinkToDisplayTooltip": "URL for the LOV link", + "oidServerName": "OID Server Name", + "oidServerNameTooltip": "Name of the OID server", + "oidBase": "OID Base", + "oidBaseTooltip": "Base URL for OID", + "oidAdminUser": "OID Admin User", + "oidAdminUserTooltip": "Admin user for OID access", + "oidServerPort": "OID Server Port", + "oidServerPortTooltip": "Port number for the OID server", + + + "companyDisplayName": "Company Display Name", + "systemParameter": "System Parameter", + "userDefaultGroup": "User Default Group", + "defaultDepartment": "Default Department", + "defaultPosition": "Default Position", + "singleCharge": "Single Charge", + "firstDayOftheWeek": "First Day of The Week", + "hourPerShift": "Hour per Shift", + "cnBillingFrequency": "CN Billing Frequency", + "billingDepartmentCode": "Billing Department Code", + "basePriceList": "Base Price List", + "nonContainerServiceOrder": "Non-Container Service Order", + "ediMaeSchedulerONOFF": "EDI MAE Scheduler ON/OFF", + "ediSchedulerONOFF": "EDI Scheduler ON/OFF", + "uploadLogo": "Upload Logo", + "accessType": "Access Type", + "add": "ADD", + "modules": "Modules", + "loading": "Loading ...", + "name": "Name", + "default": "Default", + "description": "Description", + "addModules": "Add Modules", + "edit": "Edit", + "delete": "Delete", + "usersPerPage": "Users per page", + "of": "of", + "users": "users", + "addAccessType": "Add Access Type", + "cancel": "Cancel", + "areYouSureDelete": "Are You Sure Want to delete?", + "updateAccessType": "Update Access Type", + "update": "Update", + + "SEQ_GENERATOR": "Sequence Generator", + "CURRENT_NO": "Current No", + "NAME": "Name", + "PREFIX": "Prefix", + "SEPARATOR": "Separator", + "SEQUENCE_SIZE": "Sequence Size", + "REPORT": "Report", + "REPORT_RUNNER": "Report Runner", + + "REPORT_NAME": "Report Name", + "REPORT_DESCRIPTION": "Report Description", + "ACTIVE": "Active", + "FOLDER_NAME": "Folder Name", + "ACTION": "Action", + "SET_UP": "Set Up", + + "USERS_PER_PAGE": "Users per page", + "OF": "of", + "USERS": "users", + "ARE_YOU_SURE": "Are you sure you want to delete?", + "CANCEL": "Cancel", + "GO_TO": "Go To", + "ALL_REPORTS": "All Reports", + "ALL_REPORT": "All Report", + "REPORT_BUILDER_SQL": "Report Builder (SQL)", + "REPORT_BUILDER_URL": "Report Builder (URL)", + "LOADING_MESSAGE": "Dashboard could be found. Loading..", + "START_FROM_SCRATCH": "Start from scratch", + "IMPORT_TEMPLATE": "Import from a template", + "IMPORT_PUBLIC_PROJECT": "Import from public project", + "DELETE_CONFIRMATION": "Are You Sure Want to delete?", + + "LAST_UPDATED_ON": "Last Updated On:", + "CREATE_NEW_REPORT": "Create New Report", + "ADD_MODE": "Add Mode", + + "ENTER_NAME": "Enter name", + "DESCRIPTION": "Description", + "ENTER_DESCRIPTION": "Enter Description", + + "SUBMIT": "Submit", + "home": "Home", + "dashboard": "Dashboard", + "all_dashboard": "All Dashboard", + "dashboard_builder": "Dashboard Builder", + "dashboard_found": "Dashboard could be found. Loading..", + "loading": "Loading ...", + "last_updated": "Last Updated On", + "start_from_scratch": "Start from scratch", + "import_template": "Import from a template", + "import_public_project": "Import from public project", + "delete_confirmation": "Are You Sure Want to delete?", + "cancel": "Cancel", + "delete": "Delete", + "Dashboard_builder": "Dashboard Builder", + "Dashboard_runner": "Dashboard Runner", + "Go_to": "Go To", + "Dashboard_Name": "Dashboard Name", + "Description": "Description", + "Security_Profile": "Security Profile", + "Add_to_home": "Add to home", + "Action": "Action", + "Delete": "Delete", + "Who_Column": "Who Column", + "Account_ID": "Account ID", + "Created_At": "Created At", + "Created_By": "Created By", + "Updated_At": "Updated At", + "Updated_By": "Updated By", + "Start_from_scratch": "Start from scratch", + "Import_from_a_template": "Import from a template", + "Import_from_public_project": "Import from public project", + "Are_you_sure_to_delete": "Are you sure you want to delete?", + "define_dashboard": "Define Dashboard", + "add_mode": "Add Mode", + "dashboard_name_label": "Dashboard Name", + "dashboard_name_placeholder": "Enter Dashboard Name", + "security_profile_label": "Security Profile", + "security_profile_placeholder": "Enter Security Profile", + "description_label": "Description", + "description_placeholder": "Enter Description", + "add_to_dashboard_label": "Add to Dashboard", + "back_button": "BACK", + "submit_button": "SUBMIT", + "ACTIVITIES": "Activities", + "SUGGESTION_FOR_YOU": "Suggestion For You", + "LOADING": "Loading ...", + "NOTIFICATION_NOT_FOUND": "Notification could be found.", + "SUGGESTION_NOT_FOUND": "Suggestion could be found.", + "SERVICE": "Service", + "Last Updated On": "Last Updated On", + "REPORT_BUILDER_2": "Report Builder 2", + "REPORT_RUNNER": "Report Runner", + "ADD": "ADD", + "SET_UP": "SET UP", + "REPORT_NAME": "Report Name", + "REPORT_DESCRIPTION": "Report Description", + "ACTIVE": "Active", + "ACTION": "Action", + "DELETE": "Delete", + "WHO_COLUMN": "Who Column", + "ACCOUNT_ID": "Account ID", + "CREATED_AT": "Created At", + "CREATED_BY": "Created By", + "UPDATED_AT": "Updated At", + "UPDATED_BY": "Updated By", + "DELETE_CONFIRMATION": "Are You Sure Want to delete?", + "USERGROUP_NO": "User Group No", + "GROUP_NAME": "Group Name", + "GROUP_DESC": "Description", + "GROUP_LEVEL": "Group Level", + "STATUS": "Status", + "UPDATED_DATE": "Updated Date", + + "RECORDS_PER_PAGE": "Record per page", + "IMPORT_FILE": "Import File", + + "UPDATE": "Update", + "ARE_YOU_SURE_DELETE": "Are You Sure Want to delete?", + "THIS_FIELD_REQUIRED": "*This field is Required", + "NO": "No.", + "MENU_ITEM_NAME": "Menu Item Name", + "ID": "ID", + "SEQUENCE": "Sequence", + "MODULE_NAME": "Module Name", + "MENU_ACTION_LINK": "Menu Action Link", + "STATUS": "Status", + "SUB_MENU": "Sub Menu", + "video_Field2": "video_Field2", + "video_Field": "video_Field", + "numadd": "numadd", + "Support": "Support", + "about": "about", + "Button_Field2": "Button_Field2", + "autotest": "autotest", + "Childform": "Childform", + "Test2": "Test2", + "Chtes2": "Chtes2", + "documentsequenc": "documentsequenc", + "state_name": "state_name", + "Currency": "Currency", + "token_name": "token_name", + "state": "state", + "Adv5": "Adv5", + "Adv4": "Adv4", + "Adv3": "Adv3", + "addition": "addition", + "automulti": "automulti", + "calculated_Field": "calculated_Field", + "counrymulti": "counrymulti", + "Paragraph_Field2": "Paragraph_Field2", + "Number_Field": "Number_Field", + "Basicp1": "Basicp1", + "Sum": "Sum", + "ButtonUpdate": "ButtonUpdate", + "datagrid_Field": "datagrid_Field", + "Email_Field": "Email_Field", + "audio_Field2": "audio_Field2", + "QRCode_Field2": "QRCode_Field2", + "dylist": "dylist", + "Basicp3": "Basicp3", + "Basicp2": "Basicp2", + "stmlit": "stmlit", + "1ega": "1ega", + "Country": "Country", + "BarCode_Field2": "BarCode_Field2", + "Imageupload_Field": "Imageupload_Field", + "dy2": "dy2", + "name2": "name2", + "idfemale": "idfemale", + "dy1": "dy1", + "Url_Field2": "Url_Field2", + "t1": "t1", + "age2": "age2", + "t2": "t2", + "age1": "age1", + "Sum2": "Sum2", + "t4": "t4", + "Decimal_Field2": "Decimal_Field2", + "Description": "Description", + "gender": "gender", + "select_Field": "select_Field", + "QRCode_Field": "QRCode_Field", + "Datetime_Field": "Datetime_Field", + "sum": "sum", + "test1": "test1", + "Test11": "Test11", + "Checkout_Field": "Checkout_Field", + "Ad6": "Ad6", + "picupload": "picupload", + "Textarea_Field": "Textarea_Field", + "Textarea": "Textarea", + "Ad8": "Ad8", + "Ad7": "Ad7", + "Ad9": "Ad9", + "num1": "num1", + "multiplication": "multiplication", + "Date_Field": "Date_Field", + "num3": "num3", + "num2": "num2", + "Token_registery": "Token_registery", + "dymulti": "dymulti", + "Toggle_Switch": "Toggle_Switch", + "last_name": "last_name", + "atoc": "atoc", + "Percentage_Field2": "Percentage_Field2", + "Test22": "Test22", + "Date_Field2": "Date_Field2", + "default_Prce": "default_Prce", + "token": "token", + "test2": "test2", + "test3": "test3", + "dymlti1": "dymlti1", + "Fileupload_Field2": "Fileupload_Field2", + "audio_Field": "audio_Field", + "mobile_number": "mobile_number", + "Decimal_Field": "Decimal_Field", + "country": "country", + "ismale": "ismale", + "Currency2": "Currency2", + "Name": "Name", + "atc2": "atc2", + "data_grid_Field": "data_grid_Field", + "BarCode_Field": "BarCode_Field", + "Imageupload_Field2": "Imageupload_Field2", + "recaptcha2": "recaptcha2", + "Buttonupdate2": "Buttonupdate2", + "test": "test", + "atdy1": "atdy1", + "Phone_Number2": "Phone_Number2", + "atdy2": "atdy2", + "Sttest": "Sttest", + "Percentage_Field": "Percentage_Field", + "Textarea2": "Textarea2", + "Url_Field": "Url_Field", + "Active": "Active", + "dymlt2": "dymlt2", + "Paragraph_Field": "Paragraph_Field", + "State": "State", + "district": "district", + "name": "name", + "UserId_Field": "UserId_Field", + "Email_Field2": "Email_Field2", + "Static": "Static", + "District": "District", + "about_yourself": "about_yourself", + "datagrid_Field2": "datagrid_Field2", + "Toggle_Switch2": "Toggle_Switch2", + "Dv2": "Dv2", + "Dynamic": "Dynamic", + "description": "description", + "number1": "number1", + "Phone_Number": "Phone_Number", + "Fileupload_Field": "Fileupload_Field", + "number2": "number2", + "Value_List_Field": "Value_List_Field", + "Value_List_Field2": "Value_List_Field2", + "district_name": "district_name", + "OneToOne": "OneToOne", + "recaptcha": "recaptcha", + "stmmlt2": "stmmlt2", + "country_name": "country_name", + "Dependent_Dropdown_Field": "Dependent_Dropdown_Field", + "Adv1": "Adv1", + "OneToManyExtension": "OneToManyExtension", + "Datetime_Field2": "Datetime_Field2", + "country_list": "country_list", + "Textarea_Field2": "Textarea_Field2", + "Defatest": "Defatest", + "Approved_Field": "Approved_Field", + "select_Field2": "select_Field2", + "Password_Field": "Password_Field", + "age": "age", + "Button_Field": "Button_Field" +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/i18n/hi.json b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/i18n/hi.json new file mode 100644 index 0000000..8f6d890 --- /dev/null +++ b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/i18n/hi.json @@ -0,0 +1,224 @@ +{ + "BREADCRUMB_HOME": "मुखपृष्ठ", + "BREADCRUMB_ABOUT_US": "हमारे बारे में", + "ABOUT_TITLE": "हमारे बारे में", + "SETUP": "सेटअप", + "SETUP_TOOLS": "सेटअप टूल्स", + "USER_MAINTENANCE": "उपयोगकर्ता रखरखाव", + "REPORTS": "रिपोर्ट्स", + "REPORTS_DESCRIPTION": "रिपोर्ट्स विवरण", + "USER_GROUP_MAINTENANCE": "उपयोगकर्ता समूह रखरखाव", + "ABOUT_DESCRIPTION": "यदि आपके पास पहुँच है, तो नए उपयोगकर्ताओं के लिए नया प्रोजेक्ट बनाएं। अगर आपके पास पहुँच नहीं है, तो कृपया व्यवस्थापक से संपर्क करें।", + "HOME": "मुख्य पृष्ठ", + "SECURITY": "सुरक्षा", + "MENU_MAINTENANCE": "मेनू रखरखाव", + "MAIN_MENU": "मुख्य मेनू", + "DOWNLOAD_TEMPLATE": "टेम्प्लेट डाउनलोड करें", + "IMPORT": "आयात करें", + "EXPORT_XLSX": "XLSX के रूप में निर्यात करें", + "ADD": "जोड़ें", + "MENU_ACCESS_CONTROL": "मेनू एक्सेस कंट्रोल", + "EDIT_MODE": "संपादन मोड", + "FOR": "के लिए", + "RELOAD": "रिलोड करें", + "SHOW_ALL": "सभी दिखाएं", + "ONLY_MAIN_MENU": "केवल मुख्य मेनू", + "NO_DATA_AVAILABLE": "कोई डेटा उपलब्ध नहीं है", + "NO": "संख्या", + "MENU_ITEM_NAME": "मेनू आइटम नाम", + "VIEW": "देखें", + "CREATE": "बनाएं", + "EDIT": "संपादित करें", + "DELETE": "हटाएं", + "QUERY": "क्वेरी", + "EXPORT": "निर्यात करें", + "SYNC": "सिंक करें", + "editMode": "संपादन मोड", + "setupCode": "सेटअप कोड", + "value": "मूल्य", + "schedulerTimer": "समय सारणी टाइमर", + "schedulerTimerTooltip": "समय सारणी के लिए समय अंतराल", + "leaseTaxCode": "लीज़ कर कोड", + "taxCodeTooltip": "लीज़ के लिए कर कोड", + "vesselConfProcessLimit": "जहाज कॉन्फ़िगरेशन प्रक्रिया सीमा", + "vesselConfProcessLimitTooltip": "जहाज कॉन्फ़िगरेशन प्रक्रिया के लिए सीमा", + "rowToDisplay": "दिखाने के लिए पंक्तियाँ", + "rowToDisplayTooltip": "यूआई में दिखाने के लिए पंक्तियों की संख्या", + "linkToDisplay": "दिखाने के लिए लिंक", + "linkToDisplayTooltip": "पृष्ठ पर दिखाने के लिए URL", + "rowToAdd": "जोड़ने के लिए पंक्तियाँ", + "rowToAddTooltip": "तालिका में जोड़ने के लिए पंक्तियों की संख्या", + "lovRowToDisplay": "LOV पंक्तियाँ दिखाने के लिए", + "lovRowToDisplayTooltip": "मूल्यों की सूची दिखाने के लिए पंक्तियाँ", + "lovLinkToDisplay": "LOV लिंक दिखाने के लिए", + "lovLinkToDisplayTooltip": "LOV लिंक के लिए URL", + "oidServerName": "OID सर्वर का नाम", + "oidServerNameTooltip": "OID सर्वर का नाम", + "oidBase": "OID बेस", + "oidBaseTooltip": "OID के लिए आधार URL", + "oidAdminUser": "OID एडमिन यूज़र", + "oidAdminUserTooltip": "OID एक्सेस के लिए एडमिन यूज़र", + "oidServerPort": "OID सर्वर पोर्ट", + "oidServerPortTooltip": "OID सर्वर के लिए पोर्ट संख्या", + "userDefaultGroup": "उपयोगकर्ता डिफ़ॉल्ट समूह", + "defaultDepartment": "डिफ़ॉल्ट विभाग", + "defaultPosition": "डिफ़ॉल्ट स्थिति", + "singleCharge": "एकल शुल्क", + "firstDayOftheWeek": "सप्ताह का पहला दिन", + "hourPerShift": "प्रति शिफ्ट घंटा", + "cnBillingFrequency": "सीएन बिलिंग आवृत्ति", + "billingDepartmentCode": "बिलिंग विभाग कोड", + "basePriceList": "बेस मूल्य सूची", + "nonContainerServiceOrder": "गैर-कंटेनर सेवा आदेश", + "ediMaeSchedulerONOFF": "ईडीआई एमएई शेड्यूलर ऑन/ऑफ़", + "ediSchedulerONOFF": "ईडीआई शेड्यूलर ऑन/ऑफ़", + "uploadLogo": "लोगो अपलोड करें", + "companyDisplayName": "कंपनी डिस्प्ले नाम", + "systemParameter": "सिस्टम पैरामीटर", + "accessType": "एक्सेस प्रकार", + "add": "जोड़ें", + "modules": "मॉड्यूल्स", + "loading": "लोड हो रहा है ...", + "name": "नाम", + "default": "डिफ़ॉल्ट", + "description": "विवरण", + "addModules": "मॉड्यूल जोड़ें", + "edit": "संपादित करें", + "delete": "हटाएं", + "usersPerPage": "प्रति पृष्ठ उपयोगकर्ता", + "of": "का", + "users": "उपयोगकर्ता", + "addAccessType": "अक्सेस प्रकार जोड़ें", + "cancel": "रद्द करें", + "areYouSureDelete": "क्या आप निश्चित हैं कि आप हटाना चाहते हैं?", + "updateAccessType": "एक्सेस प्रकार अपडेट करें", + "update": "अद्यतन करें", + "SEQ_GENERATOR": "क्रम जनरेटर", + "CURRENT_NO": "वर्तमान संख्या", + "NAME": "नाम", + "PREFIX": "प्रिफिक्स", + "SEPARATOR": "विभाजक", + "SEQUENCE_SIZE": "सीक्वेंस आकार", + "REPORT": "रिपोर्ट", + "REPORT_RUNNER": "रिपोर्ट रनर", + "REPORT_NAME": "रिपोर्ट नाम", + "REPORT_DESCRIPTION": "रिपोर्ट विवरण", + "API_REGISTERY": "एपीआई रजिस्ट्री", + "API_REGISTERY_DESCRIPTION": "एपीआई रजिस्ट्री विवरण", + "ACTIVE": "सक्रिय", + "FOLDER_NAME": "फ़ोल्डर नाम", + "ACTION": "क्रिया", + "SET_UP": "सेट अप", + "GO_TO": "जाएं", + "USERS_PER_PAGE": "प्रति पृष्ठ उपयोगकर्ता", + "OF": "का", + "USERS": "उपयोगकर्ता", + "ARE_YOU_SURE": "क्या आप वाकई इसे हटाना चाहते हैं?", + "CANCEL": "रद्द करें", + "ALL_REPORTS": "सभी रिपोर्ट्स", + "ALL_REPORT": "सभी रिपोर्ट", + "REPORT_BUILDER_SQL": "रिपोर्ट बिल्डर (SQL)", + "REPORT_BUILDER_URL": "रिपोर्ट बिल्डर (URL)", + "LOADING_MESSAGE": "डैशबोर्ड पाया जा सकता है। लोड हो रहा है..", + "START_FROM_SCRATCH": "शुरू से शुरू करें", + "IMPORT_TEMPLATE": "टेम्पलेट से आयात करें", + "IMPORT_PUBLIC_PROJECT": "सार्वजनिक परियोजना से आयात करें", + "DELETE_CONFIRMATION": "क्या आप वाकई हटाना चाहते हैं?", + "LAST_UPDATED_ON": "अंतिम अपडेट:", + "CREATE_NEW_REPORT": "नई रिपोर्ट बनाएं", + "ADD_MODE": "जोड़ने का मोड", + "NAME": "नाम", + "ENTER_NAME": "नाम दर्ज करें", + "DESCRIPTION": "विवरण", + "ENTER_DESCRIPTION": "विवरण दर्ज करें", + "ACTIVE": "सक्रिय", + "CANCEL": "रद्द करें", + "SUBMIT": "जमा करें", + "home": "होम", + "dashboard": "डैशबोर्ड", + "all_dashboard": "सभी डैशबोर्ड", + "dashboard_builder": "डैशबोर्ड बिल्डर", + "dashboard_found": "डैशबोर्ड मिल गया। लोड हो रहा है..", + "loading": "लोड हो रहा है ...", + "last_updated": "अंतिम अद्यतन", + "start_from_scratch": "शुरुआत से शुरू करें", + "import_template": "टेम्पलेट से आयात करें", + "import_public_project": "सार्वजनिक परियोजना से आयात करें", + "delete_confirmation": "क्या आप वाकई हटाना चाहते हैं?", + "cancel": "रद्द करें", + "delete": "हटाएं", + "Dashboard_builder": "डैशबोर्ड बिल्डर", + "Go_to": "जाएं", + "Dashboard_Name": "डैशबोर्ड का नाम", + "Description": "विवरण", + "Security_Profile": "सुरक्षा प्रोफ़ाइल", + "Add_to_home": "होम पर जोड़ें", + "Action": "क्रिया", + "Delete": "हटाएं", + "Who_Column": "कौन कॉलम", + "Account_ID": "खाता आईडी", + "Created_At": "बनाया गया", + "Created_By": "बनाने वाला", + "Updated_At": "अपडेट किया गया", + "Updated_By": "अपडेट करने वाला", + "Start_from_scratch": "शुरू से शुरू करें", + "Import_from_a_template": "टेम्पलेट से आयात करें", + "Import_from_public_project": "सार्वजनिक प्रोजेक्ट से आयात करें", + "Are_you_sure_to_delete": "क्या आप सच में हटाना चाहते हैं?", + "Dashboard_runner": "डैशबोर्ड रनर", + "define_dashboard": "डैशबोर्ड परिभाषित करें", + "add_mode": "जोड़ने का मोड", + "dashboard_name_label": "डैशबोर्ड का नाम", + "dashboard_name_placeholder": "डैशबोर्ड का नाम दर्ज करें", + "security_profile_label": "सुरक्षा प्रोफाइल", + "security_profile_placeholder": "सुरक्षा प्रोफाइल दर्ज करें", + "description_label": "विवरण", + "description_placeholder": "विवरण दर्ज करें", + "add_to_dashboard_label": "डैशबोर्ड में जोड़ें", + "back_button": "वापस", + "submit_button": "सबमिट", + "ACTIVITIES": "गतिविधियाँ", + "SUGGESTION_FOR_YOU": "आपके लिए सुझाव", + "LOADING": "लोड हो रहा है ...", + "NOTIFICATION_NOT_FOUND": "सूचना मिल सकती है।", + "SUGGESTION_NOT_FOUND": "सुझाव मिल सकता है।", + "SERVICE": "सेवा", + "Last Updated On": "आखरी बार अपडेट किया गया", + "REPORT_BUILDER_2": "रिपोर्ट बिल्डर 2", + "REPORT_RUNNER": "रिपोर्ट रनर", + "ADD": "जोड़ें", + "SET_UP": "सेट अप करें", + "REPORT_NAME": "रिपोर्ट का नाम", + "REPORT_DESCRIPTION": "रिपोर्ट विवरण", + "ACTIVE": "सक्रिय", + "ACTION": "क्रिया", + "DELETE": "हटाएँ", + "WHO_COLUMN": "कौन कॉलम", + "ACCOUNT_ID": "खाता आईडी", + "CREATED_AT": "बनाया गया", + "CREATED_BY": "द्वारा बनाया गया", + "UPDATED_AT": "अपडेट किया गया", + "UPDATED_BY": "द्वारा अपडेट किया गया", + "DELETE_CONFIRMATION": "क्या आप वाकई डिलीट करना चाहते हैं?", + "USERGROUP_NO": "उपयोगकर्ता समूह संख्या", + "GROUP_NAME": "समूह नाम", + "GROUP_DESC": "विवरण", + "GROUP_LEVEL": "समूह स्तर", + "STATUS": "स्थिति", + "UPDATED_DATE": "अद्यतन तिथि", + "RECORDS_PER_PAGE": "प्रति पृष्ठ रिकॉर्ड", + "IMPORT_FILE": "फ़ाइल आयात करें", + "UPDATE": "अद्यतन करें", + "ARE_YOU_SURE_DELETE": "क्या आप वाकई इसे हटाना चाहते हैं?", + "THIS_FIELD_REQUIRED": "*यह फ़ील्ड आवश्यक है", + "NO": "संख्या", + "MENU_ITEM_NAME": "मेनू आइटम नाम", + "ID": "आईडी", + "SEQUENCE": "क्रम", + "MODULE_NAME": "मॉड्यूल नाम", + "MENU_ACTION_LINK": "मेनू क्रिया लिंक", + "STATUS": "स्थिति", + "SUB_MENU": "उप मेनू", + "ACTION": "क्रिया", + "BUILDER ITem": "" +} \ No newline at end of file diff --git a/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/2021-12-24_1662642503238.png b/calculator_app_20251020-calculator_app_20251020-f-f/authsec_angular/frontend/angular-clarity-master/src/assets/images/2021-12-24_1662642503238.png new file mode 100644 index 0000000000000000000000000000000000000000..3a1c499014a0ca224a1775c0ec25ba53ea6d632d GIT binary patch literal 753683 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 ku0_*Dkrwl>a0k}3*&2eo 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

  2. ywA_J9k`cMi~2U3(bhIkg&YFy*8+`L*)O|Bcx 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/service/Rn_rb_where_param_serviceImpl.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/service/Rn_rb_where_param_serviceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..584cbcd016d4b028c9d7c89d39f6477d19667f1f GIT binary patch literal 1254 zcmbVLTW?Z95T4~yA!gqWB#p=!Y3BiRF6*m^ii_AFrkl_n-e zAN&FSDC4&WtPvU`KJ3iy%+5En-^_mh@%0-K?NK#FF-Ch`J>*6TKaiFikB8DsR9Et5 z&@o+oM#6|;XYM&1j{FoQ80AmIL~vgOeg4WjkzJdjHAYWX#bcB*$R$Ub(X+-v zv@?gwYIAx{LBE|fM%S9-z^b8at5A8qtOtR%!YUnv4py5!4@X7?{bM{uPPKW*Jt=~a zAB%1TFU|sZeQfnq8QBBu+P(^uJzx~CRNIUa&vj2`C{7zW%2JNeMneVi<#^~x^F|;q zqe4S>h2IuNx%1qZumgoco-V%cpV&qjiBL>{U9L1D(#KZ$yrDu{t1cQCrCX{W2s<_i zc)u91zgU3;Yc^uH>2=;l?SAdrT{~F9UL`h7Xi1JzbRkPO=vInu;`RU6+#KDeJD3tj zLEZNm?aUt)jozV^#u2?#Em%uqu&i@}`us9cS%=t*I)n?QKl^q%`qjJILgXqmAn%d1 z1Ko=_m8cb&GA%teUHL+}aVh`xqdj)*W>h(MfJ4AZZBZ$2&3c-tq}bLqi9%g literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/service/Rn_report_builder_service.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/service/Rn_report_builder_service.class new file mode 100644 index 0000000000000000000000000000000000000000..c747adddaaf2565283829704a0b00c8fb28c9a7f GIT binary patch literal 1624 zcmb_c%Wl&^6uo28q)8LnQp%h1D&PQOSg=b~si*=XrD~g$4J@KbJh)RFJB-IcS@2^l z_y9f%acAtrAvLNau}M5`w<0k;ThUX=)2)ybC11dT5e6FbM(U8lL=yTfk zyOIwBsk*&Lcn+7{^Y}FpTK5{ypzIt&lyS@hc;t*9C10;jcDc$zDSzo=>Q3oa985$U)T$E zvt}IQk?ZDdXm``SNC}U&M5s`p*wT4)F@;y-ZcSwpf9O6};!nNI1ge;g>Ds1#dtmd=)lR z>uX4I-H_bKhHqxWx8U~QBzFwSUD!%sECac*jC*i@TH%99Iq}uQS&~PX$+q!$3{R#W QPbVHWUK6O}uLaNk03+PWZU6uP literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/service/Rn_report_builder_serviceIpml.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/rb/service/Rn_report_builder_serviceIpml.class new file mode 100644 index 0000000000000000000000000000000000000000..bc3f6bcff155d94ab7b58da3de5ecdbb01602498 GIT binary patch literal 13630 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/realm/Controllers/RealmController.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/realm/Controllers/RealmController.class new file mode 100644 index 0000000000000000000000000000000000000000..e6d4930c765e8f145e5fd2768bc72a261251b1a6 GIT binary patch literal 3545 zcmb_eYjfK~6g_J@aqOsRo0dY#t1W%x(Nr`|AH<=M^l5P15SO&HK#}c@qasU2lG6zc zANfBp!vuy8`~ZFw!`YQ$JBd0~XPAt&+ST2A&pqev-Td?KUw;Fb$3`9*f!T)FHhpP1 zt_=0qHg9=u=zESM{lHw~mv(<4kDS1f=hl{GI+oiqAJm`AMktW4Nq@_3NP(%!L5K0j z*jqd+2~4bY-Oz5!bvv-@j$CqGFSJ72a|3}J70+*(LC3e<)`oAj$J zi@9*qX6|MJhkXqWh(cf^HET;YtiS`%>TutQXg{+%(+ieaK zzv>0yiq+{vybebp1kUW0cGXf6hSJ}oar!80@`tVr!ey_yT`EA}Jp)4+F5(o<F#J~BI-DFi>ORpl2%5E)|6s@xcE?`n1V>g-o{sfqPONN%?2vjErK9=23wxnN5 zSei=2qI58uUfZ%=bJc38GgheCE!PUWKB?{eug(`=CHKvjc7`P4@5uq;$7A9nTFee} zc^&@a`quSD5V>goh|jWDO)blY&8p7@_K$2Ui@2G`#{x(DjV&hLz$f^W-N1H3-LiB) zDi^Vg+j-m)m`UoX`!$HM7`TJGEC6pq;PPa-oKC=av#z202FmzM;5bQHa-2tYxJiv| zipv(S&rKRQsy*_=q%kFP#}Z19)k;3upaiB<`OzWC9dQesPql@iPwegJ+nwF6em|9m zRMlA|q$W?E?XUxlPfkVIc0=1SD|Qg7`aQ6i!m&E>>ju_P>mBw%pL6@dr0~c)vJbVs zU1k@V8$8VE`k=z~wSlkjM8IfDhd0Qx`t~!`la3wq#*6oQBGpN!_qO)7dvmEkmVs~Z ztw6Enb^V6CYpZMe_`ZLDE~zv3vj0w!;=~7HH_+>C4Z{AlU&3j&0M!XH{NwG%S)MaB zj_B0_it*YgNA)uT9HJ4$z+pa*(9Gm0I1Ww!fuq0aeaHAzUVxK0&ZiL>;0>JMOsFdp zIUQ?^vkCr;rw{?H-{$wc^7js3l=l@vQxHd|f5*EsJ9vNP;;)=$pkfp`0w17&b2`qc z$TW__P5gG2&I+_U$F~g5(|$;BS;63aGyr3&2V+{pIFyNDu*=b0fq6{-IgW+~b8!b3 ztF!yjOcT|NMl&7R_RttH8pX#Y(w5QqFA!H&<0@n{u1gx*hqz2h=J=k$l^#{|J&ad1 z#?uPpHJVVD>$vd*ANA)8(OlvFg%(2`CrDt4uuFepsj70A-NC(u+(b?#k=2xrX$t2E z@e0MdsuP)yHun;lV64v>hz_y9H-=|bRH#*!d$OqF0aIV)cO`tZ@E`AqUUhXwxF zuu-FVl;p#NBu{GAAJS6kTvUj6@MUGD4>ziS662$#!yE%tKt#&?}CX|9&<&g zCO}ZC;#C#)sg2~$ALZx<8h1J0-jFe`J7=ZDNhS6b2fU(4U x6cdH`FnrfPZV?gpNJM#nh(b@Zf-X5;KHSa&ph9O**UyILV4U-2FZfAF;6I49g*gBK literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/realm/Entity/Realm.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/realm/Entity/Realm.class new file mode 100644 index 0000000000000000000000000000000000000000..2b50b0381e60b2b3ddf6e5bcd4cdd2ecf01f9ada GIT binary patch literal 4437 zcmb7H+jARd75}ZQ)vn}~?I^Jur6F}wxAnCuv|PGQLfgbiWn|Ylj!W7?x|X-L5^2|! zR-xh6(sC`Amdgwb!wbVq^O6~0hPpGrFz`}lc;ty0o_OM)2(-WR?MhnNZX_~^_I&62 zo%5Y@zTY{!`TPI=@Mi#z;->}@8cvk`TA}VbRnHC7vsPH}f=Y0suu5gkKvKhlam+K@ z{#n1;ta&XQ6<5kiqhX}s)+rS=l>O5ZlXc`ig zO&XQ1I@g^-)$z6pCEwec*N|UrGKiYHUTIV|s_qk>=Lb$emkkYL3jT6oM-FKOu2*&o z#Z4NWJYeI3>$!C&a5vS-1euLM)>}93i04UbH+EdX7tbv$uNBuWYsg5MYF9j`=4!~r zg1#8kD=O@C;5S);E0WdVi*>)&UYVh-Y#feR7CnaI)_IN*Fhi!QLEmzNB5}FNsTeXU z%-vC8ir)1DN|P&9{o00qtU8hVX@^KjcE%< zB(x!JobS|4w&pC1%GO}}5Gmql*AcBU3jU)O#&8#JOP!%=D(Xiq9F?Q>Mp)g$lY5Ih zwN5H7xxu!-x#HA$$pHz*ZV&a(bSMu44tfOp3b0-FIspR zk1?QA6|WMU5!IJ0d>LP%%Gud*J>Je-oPaGx#ag24jCm7ZV<*gxhfzzU>Y!J}>(}=< zYxTq(oW0I=nH_JJ=d_7$vSVh)V>P1g+iaTFk<84*ciA3drs~7>_gMES$?gXhUJ`cl zcGfc(z*|y)9}<1hZ`RB1`HIZdjH=N?QbrBORCL`hk?_4Yk9*1Y0luFM9D|M&R|Z!J znEb~9%C*JyA+EA~4sku~Vniu8-4v9=Og%Zd)RPlQJvoB-JVX=rCmr0)l^k%K&yVn5 zfwIP@KK*-~_$`G5#`!A{@U(mRYlQ%u#C=?8(x5#YJvxRKPVt80#S;AR_!c7 ztM*VnE1;nWl+6#dK*?Loe_-F3`*~QGcE8-l8ZNP@qxcWjIr8z7fEE)mpiiZ4Xq3NChmUxP~G@ZUZGJh(0T9NJe$ow{` zW{%9 iUxWt)*7@Rk7jGUs-@CuK5*!}Vem_=Uf%0Yc6W{|Nbs2&H literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/realm/Repository/RealmRepository.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/realm/Repository/RealmRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..578971fa1dfc90b0011349f1892a1231fe522c24 GIT binary patch literal 757 zcma)4$xg#C5FJxW+4n`5@rB>1S!0}q80ypak5{)9YDMF)_wE?S*D_MVWd<1>{+X~H{3Lm#oOB-q{au2bzse|- z;ElBMKE{2ev=dHhWf}0`zw9nEG%Z3aH$|LLbBh*ZlE_=}YDOnsE_C8O*3qEnwK?C( zaA$9W!4UD0O)LOPG$2MSKYx(wXXxrWyb!s#4h?lRc&#&2#bX&$q3Lgo9pE7Di$0mi$SImKjWtDZy0nb^0S^rby|dlv#jx{BP+j literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/realm/Services/RealmService.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/realm/Services/RealmService.class new file mode 100644 index 0000000000000000000000000000000000000000..befcb53bc0f6462018ad4ee87836038e10130429 GIT binary patch literal 3068 zcmb_eYje{^6g}%WabhbW36Bz94U~uT009kwVj2h#T3RQB7($_sRJJybz?MAH8k(Qd ze?ezD>Cn!!{oL>UH=Rz;O0umao+h2?7p-=6_ug~QJ$qMw{QdK<0A}zigOtF9idQ#% zY1Le*!m)0ar2pEf$iQ6Tay_19kQNwzX}z}0n&no_N9C8Yq67};z4aB@@B&A9{-(gC z;%=9n?~&8aydW^P(sY$mm#a?TlxuR{bv3g0nv*^K~fdOQRyy&=csaY>e z|B1!80;5H*V%1hH-_i4UF|9Tn0-5NNRac@IxxZw+mbRrVfxG!G`xcn4+KiYebaTAT zU;qM#4fLWfhxag+!BK(f|3a~WV>nI%0-_Q)pD*sLA~Eb*%HX8Hsoi0c(C9PDa(u5O zDV;^BHavUT(nVC#C#8p~Qq9+D&m6U}Y*igMthvBSzH7~OB-8flmgAZdgX_#O6z8_D20p?~o^0Zzj#}v^8WUMaIRrkO zP3q6}lU$a5cv62+;zn_`H zPC$E}e@(;#1E1hi%Ge2(eHloXX|t`p$l?S(Gw?Zz0)r$Y?AU8AkJwIHN=mm-vU&nb z1|DIV8-nc{wj~$aPpoFJB5*mGl>DwD!z$?;BJi4iMJ{>jf!B2Hh1REjJRw>(^6_=O zp2cIV>b}dcX|HBqA-sr)ZDnQEdia$#N(M~v$o7W3*=RN8*)E&+p>gJ1QdZ^FqSc7I zyAdh#X&`;A^E1i%#yan)FFs!P_cYoE6fLo`feO}m+#(RlYsN78S}*AuPjp+w$uoX6 z!GOlKkC4=IDXi85N8ffM$?N@+&QhRzXAIb{rKd=L>))V&)4Y{>_#eS@rmrTB8P4?B z&#|8)FIhfwoS7U2$KJ`GVEn+B6o&ZJ#=r;;@M%N_80K6%9mPRf>CGz~b)ezNA8}~v z9gd{%J5DT4zvWuwC(99}a|lO6U*nN|?29{b3h&eB5bcifEroH~_wsteRE^ z|2te1yWF2nkdkeaV&XDAX;KzAYJ?*(!Ye6k;Tn0_iSt|n=SUmp2nx8>!C44#evG-; z`@PtEEC1UmbgCAyJ;CBmCVc1GzH{At-^2ab_n+jtkMZU;^67UV@}-MgSoj`!4myRK z>9O?G79MV4QQM5ATQ$GgJJ$R57d(DGTKWl3f1{IhsH0P%^e&PZle)Qrk+&^F5XSQ7*i;?=ay;u*dmyyNVVc%J@nuO-+J*SqiKysR$p=bYpzh{ zf8lzDJI6U2NQH`u*!%`-G>WSJZCEpl3}_(_#x=82h*aDYW)bmvo2GX{#F2^z+lU8Y hhc(O5jl?>i9ZY(q$`y@*y0bZ?un|6;_PKls`~&P9>5TvY literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Controller/Report_buildercontroller.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Controller/Report_buildercontroller.class new file mode 100644 index 0000000000000000000000000000000000000000..b9395fb8dc2c7fd005f1e4d24de46f452b0a6d9c GIT binary patch literal 6221 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Entity/Rp_Line.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Entity/Rp_Line.class new file mode 100644 index 0000000000000000000000000000000000000000..c50609d7550a022ee5167f0b8a83ba5ef36f29df GIT binary patch literal 3743 zcmb7GTW=Fb6#mBc+8bv>LP7%O(sD`LTrp6Z78@wHK%6FlCL!EP!^R$BgR^VaYYM$T zRXkPdQ>99MEmFlpi`pQyQq{gtslTZ${bqOVIEiTtV!dZ(zWL_N`OZ0;zyAH@Hvot6 zc?=3rqIU^v(1=>#AR@pTzcg`$Uq(+z2KOqn*(9o3KBulqO=y>d>H6@AP{#-RTTvGPc#+uKs9n5_BPx!83pIwQZaeU%-$~B zR?@7+D>=^bDNawzo6=FS;AFRUmX;15M@}DZiX6lukyW`T#9tRfg}!))GU>xMd)xn>G_3QGV7+-Up(+L zt>ch@F|@mu51yxo73mvmxPshxK9_R*O#^RX7b)rZST)CVq?mm}yS<#^0Rl%298)lz zFmG1J+bpqub)%C8cB-{@Rlrk~r3LBCnyeg^sdkn{X|gmq4kjaRzQ9r%Y%bvxXS#(R zoHGzdtFkf%I?<)9cMNPn7t5SpQM({H*+3Zm7fNSEcHY1?Bq(9om$0W^m#TvObL=&f z(#_ks3#MZ(NoGGUV{lI`daBTaDA6^V^{yT4doj<{fl+y znI~sWYgD1*xQ_W4-lw}ODerGFa0!>yCey$KCMl!6x~T-r42A9Hr6UkilJ%xK1)0xRp-X+6$IkH?Sx&(QS#(V2riuP9B>8(GBbgbhrK2jym{v4mND^6CP zEvPg$D4@#2{VI};Tde;TW2;Ft=x?6)X;un7;^#-hc0N&#VjP8_^I>XpY;e4pqc*-b zaojG^;Y~2#Jt(t1fGK!4pPmf1atAXvScr49o!}jO+BnD3_T zIbv~RsKKF0uBbiQz)v{4mS}SwkyayOZ`y!ptT`ffuMLRCn2?X?=9{udb z^yAIa`&k{(Z}I3aVs0bvr<$erYa^iF=FzhOuBR6tGp?EIQ!#?lDLoNWAUy!Z5_%ozMyiFN8>x7rMS`3P+vEDKG5V7H9 zly0c`kyJ!2BqG6zu7vlO(kabbqUPQvJ)u>XZlt2#Qna?jOyI7ajl~=DeF?-1GqeuM zyoko2yR_6d<0dM+Tp0T()m>T<9LFJiKug0Fei!c1ih81a5B(V@A{0dk3c=SiZd@6M z)I>M5Dxivqtey&B(K^@)a_wvYj;#i-;2SJ(3-8EJ@Opjt7jE_Q@dO_>E`I+zR8>EO TkG&lE#QU(S596mCe+K*qd_dkH literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Entity/Rp_Who_collumn.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Entity/Rp_Who_collumn.class new file mode 100644 index 0000000000000000000000000000000000000000..c4f457d3bb0b49be9b26f436b32d7b315691ecea GIT binary patch literal 4455 zcmb7GYjYcC6@J#z>gILgI!#)oDM=d_e2KeF2rbA-L9w0SBE^m+J0u0%wY0G}mUk6t zl{V#43Z+*rEil6jKY)A*GcbTV0}NC6P-gf8{Q>YZfbyJoSJKLMW8tx+v*$eT^Pby# z-u=ga|M(XGXYunS1~fcX@wUu{ZPi@c=WpF>_^WFzr&hHa=A7$0{vC6vzIt`TTdjDt zT5HQqBCcWhrghsgYnHoiF09?OD}E9Q4G$`<Q&1RvT?fLHP+2$z2Ug) zHyT{~qSx3o#cW!gP|TSi1!2hTj9j?W$%x8*!E@K?LTB#_*XX#~%dQGGv%EN~oQfJG ztsR4S`*dF(6|AOT^s3Gc$F8>BvMLpi#h9;>F+Vf2uzb0^D&;lSZ9j}ab{iQR-(AK> z!ZOagxA!RINTKF!t$CZ~CEK+d(hZX88Lw)mp<%*+fgueC3yy1FZf&jEjdGCPk%CvT zYAY7|kLeGUaeu>MbDSyszrD^qBcVt}JE3&*FAkkCa1@UO=w+$3?b>cgQAk#j#iemz5{FB$kU=GgcZ%bgRnD4#Q6;;9T`C>WT< zoaina_^jwOEE@PiAT1df#S@|{8+aN|a6EX-bP#WJFCJje->@4R4oF2u!#N>g9#n>? zCV)f^LkNjz0!XBZLr6r^vytSccO%jCY!rcn8;NG98<0#Ky+w zB}F$3RKRnjFD`NLFa`5We8X9uMxW2%7H%7O5iil>bB^oy&+cfIaFg*Bfxc|u zoA?%?R=sY!jCg9Vu8I`D$Cv38zQYDRb)r*ywf}d8^wk|)?QQSF^?k+F$>;eLeh}5< zeQMrNnogRjd5h&4mss90;GwRH$k<}|v83UL%zepgH7fQ+N3Op^y_tJbvaDfLdDVMU zu|eu~wbbJ6RjFCcCdbdoJz&ALTu}ELk33PcpFF{D)-AK@ZCQ?MHd}SM-pzcg>iF!1 zUY=<@#uFIhM@NFwEQu85G%v6LWccC0yZ9YMSo%cp z%EhPtj=^mFLp*R7##A=Gjjyy3#hgw^F_*~df=PUck-Hem>e)mDw2(^@w2(_>lLAVG zpky``0bR+Z3A&QYWYYr5grIab69JWSg9MdwMs`p@MhK$R2F33&wAil6@LCXZr&mA1 zGFI50hw(RD<+K>!Z2TR*N?i;S_%*IkisKUA#dS(Lig+8(Q%azQO?-_KFJ9RAI;9le z!$o|9QX0QtMOP_hu+6Fb0;NIxnUl_{Tm08(EfuXNyPY{qWEwiruP>S z7I~RPj?3HI?jrLAO;e{+m+DGNKI!=Cos{TIgrp>7zp7e@Z#G=IV>)R6qAo?!cZR3W z#m}ooIW|1K!8S<^Pu@jxY8&&jX@34809#W8%H45SEC*y2zc{ z5S;7F)OS-G}ws9fT#8;%<)kjm}W%cL(gj?4}n(w2_wl2>XJzkO!2o`uj>Eg^ UjcA0F@A3JkjA;0IXcheIf8`KVbN~PV literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Entity/Rp_builder.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Entity/Rp_builder.class new file mode 100644 index 0000000000000000000000000000000000000000..2801d8661cd9916f084d5e57a082450348285073 GIT binary patch literal 7244 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 QoNK{9)VH@R``3W~0k%WRbpQYW literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Repository/ReportRepository.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Repository/ReportRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..613985fa6930042072c70543c9c316018217f931 GIT binary patch literal 1163 zcmb7DU2oGc6uoZOwTuB}W5Dr7jNy)rrE0`q_xRi;;Pch})e6Nsif99`k<4J_;c< z)m#ds~yjoP)jV zW&R@Yw3b6^3e5thyeWk|I)T^SMypZ(;>@x4I|uFmwO+~kG;Uh!%0vy=J~#8f#F;C0BDMfl>4M(#kRVnMs{SEcYrsd~F1Z_?2+JEBGSI zP{G|A?n*deJVP76I)+@qqXJxoYq(Z1q>8)iF>Ju*H@GoN*s=*X;TB$I3AYy$wrv8! f-hsOqwE%bT6x@BRRfGq&^1~^hV^da-Acni5QS%3+tm73Zv@{!5xO9P7ZE{4ArMho@V0E5Y22FbhRHtV^66ra7s&pH6M4Qso0r&!JAF#gw literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Service/Report_builderService.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Service/Report_builderService.class new file mode 100644 index 0000000000000000000000000000000000000000..e28502f16b355a07fb4161164b625853f99245a2 GIT binary patch literal 3877 zcmbVP`BU3g5dNMqF>*4(^9tz@p(PN*m1pbAU$sYat*dzAcbIb&FcJ1Wo= z>zNY>Puf}8h9+#)5QQeNHA!I8#l^IAuIrSCz>cJy(akyCG5Fr!47&>kC3bqFNH!FO zLTQ=RmtESu?O7|bO{{4KczM7#Y4nf zfnpap6icqHD~hddD}sjw`ZoZq%aDY~>V<{0?PODzq)s(1Fu1v-slcbCyI^Op>0ENI zbV#taoOH9&)eVzwcEtQxi>_hDlSaWMRa$3_oTa-(htivlF_5>j!$&b z2_ELb+bd=HK^huv^Vv>1yN-!K$jQ?sZ3yi0>*Sn2B!*Hvw*_uAI7r#L(J88Id4%RQ zw4yBvhes&Qj}seAwBUWkbK9(WgGEpj=-J?KFb=(}I?A)KoMvBRt)L>OIY^XqYcB=@ z@2vD|WzbMRPuB0=*T8#4!>gdr35`chdc~_88m(0Uv~x_lX)0=n%dv73RN`q6S>?!c z)Pu0Ss?X}c?VS^feY!G3C#Ci-j*(I0(q&|QS?cx_R;)In?Z z_@2JK=-N&eaaskf&Aq>)<5zWL8(rA}(1GoAWm7W14(z0r1}JtB7$2Tcuw>W!8#?<| z@n8slW8W|IB!s}rZsnzu_SmE6g?~Mwf$`Tg%=s>+P2UL0VQX%w{ssrdIt`1T$^x+64JcJRtvi7}R z02M+KJ|Pqo?vQ>V@-PaMel;nQT0>+2dc;I6!tyhzE)<&z=MgRZ+ literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/session/Service/TokenBlacklistService.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/session/Service/TokenBlacklistService.class new file mode 100644 index 0000000000000000000000000000000000000000..c1060c2bbfe26380a29ee76929d8a0aa260a3e6d GIT binary patch literal 4134 zcmbVO>317f9lcMIJ&rty6_YrQ<1~(&re4x0NdpbB<1}$&67Z77sY^pyo~37d;?a!I zjGP)MWo;=GC~KkYYuPE#G}xTO;WLMG_|7N(5TM-mW+aVbkpLewnt99p{qFrO@BR5- zn|}mw5}OuM0>=w}DPK|2^;DP-R1i46m!DUaHK(BRSN&Dxop)tn)pdd}9<`7W$X%Cf zGVe-nIX|~}T@^xsu28SOqRM{YgnngR;MjC4@WzS=zwtdLu=h&U3!Rc$Z~|x1Rp&g< z4`oQ70)bQ0eq}iylq-(6yi}1Tb;GZ$<`p;N3$Vlj`qE;-gt6B??s!f(A&?##UJ%Gk`bCvR8oO-du+u^hsWw<$l)(zove=DX z+dy$`Y(v(&E%!_ zzLB$W2${z-DqQi4m!;09P*up}{uVB5-8#I`%_=%(<2X*xhAfv|X8eJn;Y1{ts$N0o zZhk6$8S7--y~V&UE01wfr^mRBHnewQ0uNg_D{%CGt6m%DaGoJua=haCbqyL>Jd~sm3!hYJ znyrPxJc20;7r4I>VLfBxZMaAV4ud0E;$+aI@uhg22ye%_ zMcq|HNUCJvvcNzq$_#`Pu1C!(i#c4eF^{YCX<3DF+BPG`B(+BiHXg@21*{br%o^jY z+-u!b`vRzh7s$x`qkB#@@ee__-uUwFY6_Sht zVmjZ}O}eq{G&K`k_3O=_rIN@y6ElIqmL4bdV)FGgca8OOt#h2b4RHMKXu9WapAUH; zv1m*KvOq?O(R&(7+s~C=>XIjgRV*?u<&> z=&1|!<2F8FlG+I_l*%Fdp2bSlY6}Q<+>E|0(4H$xi$!_p7*Er?(2CAqvD(;lT;RUe z1<{mV`fQlM=WKi)FH-fQa@ocI!&#sYOx*|@M%cMqb*DsLYR9w~hw&8~U)6_AN5S_( z>F5hdI#8sUo%gGif|_#l5!u(Abo0?g>ZlHkz);HzOu!DN{E&4~yLU0kbLV|OWDsRJ zI-r6qzJ>2t_%@5qMA@`1$6KT7`Dvpw7s~h=WaGQ|9^=L%tu`d^mt+j$oe}s&=@nfS z9Gdq1)oOVxqMy9#Bu1JxUZvB?<^TO;Wb)2?lSf&MJSkmwo=3r0S3ABba5zb+cH}3V zjfZmhL6#l&$2LBN=ehGoIXs`ki+b$mHa>$Fx-9%GhZk}f(POXL_#(cpsxs-yfOlpKuQOY>gr$|Z7Je^q&z+YtkE2N7AiYWRnvrIs;L*%4i(mS` zga0Xgo8x<@dAIq^dt3dxi))xi*vY59sys>*!T)_DxA3NsKVbJ0x3K3XdimPN*Z!N> z{~H5zfX{AZ_{{OS8(lcSt6>fU9I+z^IyT5J)-?{%tcHJt|0%s<Th(QjpK7PJVsV$QkbE|NrBUuSJ1yV zvw=&3Zp_VU+7G;rM`6voxStODUP&B7Fx5SY>NWFm`v{?`qmM!kH zcrQV3O>0eCz`^xc>%Yd7$J1xD+8ba~-hj`bY@(|DUr%9T|JTvBU(ah%o=H&+&G=&i z9M7ET{{=B4euE}cA0p-{^wakNoM!5r!BL#$$iw`aG(1llnaArq$H__aBs4yWXZhdH zbx-px&AmJD9Jy!ejH4075zTlzQvbxD5dXj)O}CL#xvXvgMAbQUf|!E;9dRkV%J-Cs ziLNiu%K<*Mo?L@Z(;MVcx>>~g&vLa+_|8~`&qiTQLgWoZl!YMuB3!zJhpyG#sL ztDcV0kqvw~1ubAY;moNfXI?U8UkkT(?#4GrT cdHX4C{L;Mris|?}yv9|!ncT!J#(3|)0T7oPZ~y=R literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/session/controller/SessionController.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/session/controller/SessionController.class new file mode 100644 index 0000000000000000000000000000000000000000..9b4444fb9d408f3c8f2c927c3f383e654ebb898e GIT binary patch literal 21671 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 VmEENLF~>h)1d>&}_&=kzuATq@ literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/session/entity/SessionItem.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/session/entity/SessionItem.class new file mode 100644 index 0000000000000000000000000000000000000000..890ec2521e4f94a8217c80235b8f6c0217e8bba0 GIT binary patch literal 4755 zcmbVPTXS1i75+GNPMlJluM73^hV-}SaA|3DJ{1i+b6bSS#qVL zK)4ks*A{5Ytus9ENM@MKa2e{%0Mnr_Wrk;-;E7+s3#EK(?|qJBONlhhB#|M(_=hw*v}Ll%y$)whd{z^~SVu-FWm%}Tvi3~FH|yir`y!%`S*r;xCa zz2;x{i&ek2QCwcV7OaI9?6AHS)GXwd+Od_eQK@Y#SV*>-L8G+J#E$4vUB#TMt!lOA zZwD3}foanYw*5-gLi%c@(G1V2u-&LvgJw+93MEDTqXTdLN#SL<8F z#h?~6{4iK2Y2wNHdXR>NdtKN_S{Prd)Pi%Z?bV=h$tQ*6)z|#$6~9rDv2iBC%?dfE zmIgZn*)f-Y*;F;RXZ@MOxM-exZIGUAuYoR;#7 zbIQetI9(x$&O!pSF5C!xQ6Egaj=1(*=&@*Vv9sra2;~P|jAD!nXvRl#XsY{Urms)~ zO+%yG4ZboC8ynSHf zhQ004*`|G%Y%>~N3H`OLvcF?)qO<8YH{}*v7@nFgNohA-1h~p7oWEEqpJtg#>}ZXk z*{ZVdrQ-c33ud?JLVIIr71og^sS4ESQxzVO_VU6k2Q```hRftx9!0XgK%+ z52>RePpMf?W)R|ri!b3JF78C7RtZmu>nkq4im%b-@9YFMcHsHWn_=2vclR@sEjai( zFV@^qedKDAZwlj!`-mc?c3svs(YGm|xua2KPCEFmazsZ=$M-4jxudE^9KFnoNPKjN z^!!l8Rkb*Jg$FS$TYSw$6FGHUSLC>UDpmNgh0IF5)mRJ8RHW->J1X{|lope`AjACq zej)8Mi?E4Mnser zK1{UD-h(U$591^K=%d-P0L$dVF3vv#S>i$TIy6#QKlL0>LlF?(rxM_(Ynhd z`FSNWGMdr@el>J!YUn9Wc!2$Aa(3oduoJgt--7iE*u%GG{{pK#H?xb!)R4xL=jQnE z67zq>NIvm44%~!0pHJ-Kbc9&+Y(f^jWZo7`@@?d9Vl;2(lO3Rvmm;X-Ir)@;90N+_ zoet1hFHO){FOyFTC}TkBe5M0b_C^RQdv1P2K&}DN>HsZ!qXaE`WBE}5jTz8reyjs@ z!5b&&f|t#Y3n*(qG&7_&1)W zmB1qYfltx0QO4i#46P)pcmvPUN}++@;M24myoOit8Cq$)j+gLRS{dwO3!kGkfY6!cE*(T)nr5?$ufV<}%&y5?6JQ}=b>q2JS& zA?aJ$g%gRBO0Y+=3!9XylbyYZ)ch_so)iC~mykd{VIq!*ScgiUtwPkVN^6_EIWDL7S{p6k7Hi6>{PbWv;U>cxe@)!cA6Mg^u)=+Eu+dQ<-7Bi3+Z< zGB$;* z6p6Kgv3Kc6P$ZT`Ves`XpY8FGI1a&%01+m!*JWVI4pciy<^yRX1E)IBs@NT(spYZFH6m-W&ckIpUGXnjW3FBck$)i3w(&S zckzwfx3pan|97-~R_yO-yDaug+Flm>2im?Mxj&-4i&yXVx#JtHS@NCTW0CEz-rM*| Q@1Ml|U%fw5m;UGf176M!!2kdN literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/session/entity/Token.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/session/entity/Token.class new file mode 100644 index 0000000000000000000000000000000000000000..6db36c8a6dfe826b17121231e9db2e9293a0ecf5 GIT binary patch literal 3810 zcma)8ZF3V<6n-|zW;e;UwBa>?QlVmBiJ+pUP)linXbVV76?|ixu5D<#Dai)KcV-;N z(J%VR8GnF$!5JO3%&6m_A8^J$zz@)$q2hDyZeH3((wR1U?m5qW?zzu7_wN4j?~lI# zcpTRagfw*Jic9H|V;5YXC`0H&la3xu3PkMkE~@4+Z6oG^s-Yb=gXes=A3kP zj+6E_37m9Xr(}E1+>BkQI0TtxPsa1t?u+M2)7O?2K07vkdOACOK|{1sc1l?$Y>MI9 zOOA$QL+(>vDX+5EJ=wE{SdN--?PJ_&$_L7((i6p;T^M6znj_|<&pV#*CVP4t=mIHr z1yW?)t4+j6P85nuv&F@9ZKLFi952o}F>p}}I-(jjP2^qYbY*GQDNWndQ}UJ^X6#a4 z#(^{9E#xWi-icP_W2fcnEvNI&R@%-x{~jgI*0!e~Sna^*uBIDPmY-R) zJIEv6-LRtR75(BGnANboehK;B(MrBB=afuPqnIjtPk!!b95!CJFpq;=`$*o+d&A<& zTeyrxy6oj;$K{N{#vZCxx}h^ytubU`iHi($`N^wAio&?OhN#+%_aS0!6F!mb{iq3Q zV-9pF0XVwK-W}+wsX))06tY+L@Ro&3*sJ885xL)$ZN9A`K2@xga?XjoTpV$w!~qdY z!%mgQ>Z^EMUHe09O)~Kvp(7-h5Jv__ogA5b%E^s8NWh|lR|j1oxf9fr*MNHRT=Th! zP@V$Dw{j#z+xXnh|1@olPrdJZ?D&R82s`;J5Fn0S{Iz@lcH;q#G&wpgi1uuZh$pWF z(Y}ol@!+-~+P^U(p8FO=eH$Yhz#uEPR_qMPL!xe9{}0&lEv@xxZ}Sm>+ENL>@&}04 zd2V^ZYphyJ`aK(^m(I};(6=f2M{%%K_WL$UFAZ6vZ&&n(TGQ{}D82M~jlM(CKgMsW z7TWi1lwOWcjlNUS^BuCDUc1e*wXsBZ`}@9v9=X~7E3_}6hi~@ZhBi6Sw}L0tkVfY8 z0Dm%(!QYWcMed;U2CTtUWCcg6h~bP*$Z#f_(ghQ}gX9ggrSw#^0W^{^2pY+lDMLVJ z05Vc$186i8BWN@ePsIcj4?wY0ya6ESpkSv6%@J2t%cX!3?KSiuJ!6& zoWM!ywH3eN6mN?Vy73*d^o7xfukkFc2>(CBbNtmYiBB*=D~bXZIXcPvtpo?BX_@$( zY-ec2@C8P2mR1}qyc3_NmB7!uo6ga)FvZ-CA!(R@quqe^54ITy^UtKY!#88C&FTp_ z!6HZGJ7Rs2>E-9PoI|OuNb-NjSFcH;QwWhHIA5n!3-JxiscUWr?JxS|UjMXX=t$(K zYLwj_LknyZv!nk8jKLMmToV6qCL)1UB#4;OJbq{-qpJ}6MoltPdNnkfiKT<0bApjD1+Z%d{dGW`SR! zr4w-ouhNRb<2&dzT81j(pNQY1Bf=tT8VkqAJ^t3mA#rSlUIkP!k=3pM7Hxplk!!sH z*jNp&%D9e6X{p?S$FC=rf;7A9oU?Evpfh$!P`-*Rm z@R2P0_Ndqu-yRdp8?;w&?S3z+Y*0H*zD}AXQ~xTsg?F0Ym8-uBLU>OdhxgSNio8%h G0R98KC5qhu literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/session/entity/VersionModel.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/session/entity/VersionModel.class new file mode 100644 index 0000000000000000000000000000000000000000..0e7a3850809e20d220198137a57b7bdbfd1a1a3d GIT binary patch literal 3114 zcma)7U2hvz5Ixu4^{$;w>!wW_H>I=?XzV0)2%#-bQ)o*+0&yCelG5_kjkArN*y~_# zDk1TVctYX{38}ACLVbV=QVApkFGb=v0p-l@`Xg~mEG5@-XXc(eGiT=RU;qB{8-OXS z8;B?zFH|epnq!w;$II58dc9P2vySVPyw9>rPEEG?>WWh~peZER?7MchY`d%3tIKOn z!Ba5q22Kinb1mzlS1Y-z(+YaUUaQs=_O}^lUC&u{YQDAPidEmRy+TnTvFdo?r3wc| z(rt&Dh(p&l8C}Jhb?=tyrRB17&ULGv?J>~01W~S5maFU8%Z}^RY|mNYHQEJc5QoA( z3p!#7d*@27Grw6`c52scLddyl!7eY^wUX>ZrREhxh1StDL$GJ|}Oa{spY8%awT zDGLV7&{--V%EK1o4dsHALzK^3NQg2~Z!1jyNM~KrOJpbSc*W|?bgx)ABszsxEj$-UuUY7UrJ$JyG?F4tpaZBn*db)Z;4~yU-NG-Y^Bb zz!bJsXbN|h57=zm-T<<-U-az4dfwg$o4_pE^`bP8LUbfOE16xia2^*J;=;Ar{6*$4 z%X-zE`evB}5o<(8A&4b59NugWH*Yb$YS7UJt|}bdIXUMyOXU@(X5w8E5Ke?Yh9e=u zOak**v~V5Ac;%UrTk_6|YRSS4yib+AvEjHYrD15GI+6XpMMi2Ps94S##-$v&gKm%A8ud-%JT|5?h4zk22; zB!8d~K_6Ffp%VMKTA_RZ{oE;O>|KBcy944h>;g2@9T10U7oa2E0Uc#cqa8KM5j-MA z$&CJt6hkt2z_@Qp$rGJ|6 zaUcHW-QkaP3omWigirYJd?h=JqdsR{dsxGVqnYoZYY#^Mfch4C^ug%wQ2DXU7SjHf z!r1&6mz*~KCwfxaW9+*RYdocG;Y7n@BB#@3A{R^P;uCv}zWeA+>8V(o(`3$|(`3#} z8RBGyPDaXXbDGM<=`@u~q~hX~2%X}oM8ipYz^J1g!?Y1()9jOnIEhm%ML+K0G}j1= z{1slOE{Y7kM2?b%%UH)WC7ln2gEN$3DB}`lC>f~XO`N4<;%oNr81TFiquRzA4r;u@iXe@YBh=62uZF5=Dg+TxKFV>A6BF!gAliER&0J z*7JCql16GK@eU;&H~CJ@QHuGbd=K*p6&guVibU||3D?#>B8q?k!pi@>%`;)Km3$JP62J}WB!E=r5mqyb@3Sm}vJA=6_97i(-Q}C6kwtml W_Hf-##s;Ztedkim3rqBlVC_Exl=8U% literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/session/response/SessionResponse.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/session/response/SessionResponse.class new file mode 100644 index 0000000000000000000000000000000000000000..f3d0e63b350b5fb46f24d5863ae3efea20ad7b1e GIT binary patch literal 1966 zcma)7U31%15IxtHV#iTi*CZ*XDWNogKaz-#@XO!D5Lj%w zJ=2p`*O7tgOW(I$hqm8$9bcNekz*&eQ_uuTr!&5ES|`zW`_i)l0u18?G&_(zfkORs z(y)wl0y}s(EK*}+MIgU3pt~pcY~SAR%1y^{gAmjgDAsM)^uM;+ZRwfT$rp38Z#UeQ z>~4E5IRp=hllJ6S1KX3WB)b&?`hnFQNWn8wZ5gO)?4?kAerA_rW;N$v47Xgp>-P5D z2j(5=C>dmnB(y47O|s+*26RjaT&UZQ+#2-urT3Y|_5^Zuw`q0vEYDVU?9_se&3>21 zl6%&4STE%dJ1al8~2eXX}lsZGqODewF~PRT*0dbu3i!V@8!U76n96AuTH;a|9r6>)8M*^DP6HF(;5L zD0WG#s7BrnW^J{Sy_V6a(+7P~oce z82!jG>u%7Ip1`D9lZEJtWkO$UoZAho=7WaSkM}9vvHXtO#gKYUmA+%(Bitg^_D-$A zx2UlVuGXL%&^ZL%bq8Kk-nP}IPLIrUSuw*^_7+|-B-D!2O7X&F`A*X_c@G&(`7r1e zYLfI_;CB_5<@+N4OrCi!p_hI@?lBJuO!KKi!0Z`5jVJ)KxI|0fMdVp@6lj&136)tY z|A^f8Je@_FjUr+sRV5<*5~FoC9x~^Q88!-EWl2RT|1++9o|}JytED5nc7!)_PFEz zJ=lm=G+6zZmQFH?R*Zfl94t4UsiTAahCYp;^V!OpwjK&Im#uUtOFCPAgcN6c`-}Ct z@p6=+)VOYvoAWVhtgEx~Cp;y>75+4oLy2$=iKkRaqXi^f=MLb>z;Etfyib{H{%8HUgN2!2YZ&%4q}>l>qd=y*Km?9qF9&huW*``v%P`Ub#R ze4ax_;gs#Knt`@lPe*3B=5F}G+huK6&C9+Q1-|R*z$~q~ov$3S3d8rTb<1=uZ^gV- zzNhU-VLz3Ny5@&Y}9{A z2hfB42Kq6e@I=A!^n87_tb;|1eiaTBeA{xDtiX}))?qfPIs~%!%{nY?)oP@XxO&$uw@z4D3BJOS ztpQlDgy={ITO!fDucBV7>oA(}E1UU#C_HPR7kz{H34WTxp&!V;PF8Hq5d%NNVWJJK zb%H)NUf7<9ByGo04o4Km_DaWXtSjsz6LA0(9w!1lF@eK#I;#4WHgU|CzIv?^hrW`A zTky$$*8zSUAZNQzg?cIz`XvL*2TtXo!i(LTu%c>GCV2_$2?Hl#lEr1_-OT2Vio$sM z-pziIgsC1mu6e5_C2qO-0i4D!ayY~Ki-Wl3SA#w41%*LBxZ;L-u^RXr3a4A9W69;Z zXNx7XRIk-sM+b?QRHLGg=Wx!zdHhmgXhlb?S?_KbNmo%A8BeEADL#!g@&+#ASJVi% zX*`|2TT5YLNu0c7;AL?#LMO9X85G8 z*{1J^){22D9EE;rCBJ3I???~NI83bJRISJL#D3=Kjc~1br}Cx<<JSVzHPeMg4m7wOU{aCMfHFroa|on;^ZYNU)a@AsO@?n z&x&Q+It@v-UIxf}CiQ)3H(FOU12OWq@W)U@y8tgpz!>j8rR8O ziBmy6H1H?9!&JESio(%dFCVkqQD7fMrl%4`lN`KyKCfm(>YZ6G@v+K#j-kdf)yUM-If%EY!hSI!SLu#Jw zf{lZdEfYe946ZqT$-1w#a@OP5AiqqmifixWmoWa#O$I|PA>bK2!M)KGz%ZWV7gHNg zAsd?<;@1fOpMDc6#3-Ip@EXDOAXwX_16vDm9^Z!vRFKk z-0?#8V77D1lQA2|NZlBoCFCQRz$E|95Zwh#VFo8~lhZ;Gr}#RYj+r>y#Mx$|f_r$I z_aXL}lMJmD;gXXc>h#3yWMg*vGZaOOp;dS(hWu>|#nBRmBw9=4Mxr&cgPWZZJ4f&5 zQxO|!;~Z(>JV0xLt{pMKq)@{eodn!x5XM>b40n;>3Q{||ouCEgW=d*Xy`=Fv;c>z89xqfM@qh}d>v}@b*RnP;7-0W_y@gZ R@Xwejq4bkByif5N@IM0T;}HM= literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/sqlworkbech/Entity/SqlModel.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/sqlworkbech/Entity/SqlModel.class new file mode 100644 index 0000000000000000000000000000000000000000..bd5c497c4b6f0b3ce5f07827bce5d791d776563f GIT binary patch literal 5641 zcmb_g`*Ryt75-MwmAtZLIghF_U{XW;toouY>m)SIqqx{f8oMSjA<0@=Y$dYfNOD^9 zYN1d{d6hQ}&;l(DkMQUWaR->`lwqa}%GnDY1dw2D)6-z%blVrbp z&Ue4P_uO;NUF8q|{ne`g?!wDa1PtuSmXQwWkV#UA?MSnE2;+8A*n4{oqG zSI%E@%V)C%n$Bu>$a_@z8cOHfO17L|ku4gCIN2&E7%=7ygcsfFBt=p~!wqlr;Mt^v!!z1Uby1Dd&jWOHSv;Ead85Q=@sLXU4h?!{B= zqZX24-$wqSjlmVdtrmKP5GCO#&qHjtTS)mfIbE^cWuZ@OveZNMGZ5E37Pg7Y%vTP0 z=Mfwlo)_1Ih3(kEv#IE_=^NU3G{bYu>uI;TRLUK9%3MH|*~-^&LQ_PxH_r3|B6GV) z^aG(s{`R?P`ZjHvTcugHs*!9^zpr6i24W=ny9o`=%c~;p#Z{-k#Wk%(SLnp>e4P88 zvM`MY8H%h^JS=Q695DBtLl@svn8lQ{3qJHuHFFK!V4?^J*Xw?FH8G*nqwu)RMn1OMb~fKdX6*75;z+J}i;@k%do6aWO6CBrSd-!Tqs;_)KZF zoOO@nFiL@^^MBFAcLM->2k{w3olTQ+esb zHTi8y{sFvu%f#Gu4R)vU(%x(G+m$@OA~(wiF0*9%*u7^)M_xiWbanJMFfJn;ygK?C zjOnqFb-YIn3675O@AKm0;JA#A+oAE_p(`DF9lcjzji*EFIN{T0?Jy~`b|f7ZPULl@ zt{{;Pry~udIXg+2;dZeCovVnBY?j`A*ol5r#DdmxR z(kb5kEtLD30Ia87vcZ;rDnNMIsA-BdbJ|z(4t} z6{2n?;+E9$#W+op1vH5cng&pKnrl#8X~ z&5HT1b9P+0;x!iwinID#XYPuQg%`*m{(%qTLkwgXf5(T3vM1D_NK>gFuks@6~hzhy0J)IrwxfxJUsqX+FWW(1RfttZSB{1@>J@n zSMaoy);d0y`rT4R$3I2x0Ck0>DcwX?gG(Ii(IgQT<{*K1y1bA60z){{U74v`_#5 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/sqlworkbech/Repository/SqlRepository.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/sqlworkbech/Repository/SqlRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..a455628722ba812c776b8d0794a17099ad1520f7 GIT binary patch literal 444 zcmbV}u}%Xq42GQoJz79QY&-)JVSwon5(5nADx{v&-FG!dj$C|Ae4y?;6$1~zLm|=* zw4kyuICf;~|KdL%pKtE~a1I9v^c0+x+-Of|9f=Mz`@;UIpz=|VspVjV{aoiWySgQ? zt>Cc6XVey5rSFTHN=cxv;DUXnL+g#J9y~U*(9%;B)OCvy@-2AR;!04#Fz3#fbZaar zIQl_5U4Rq}a#J~!&c}h*>^D5k{sq3w{@VS63sh~9FhU@Z0!XD2PbpLh$_r1<#!X!|cJMlh`d1(! zka*w&_$b798)b>uNbs;TJ7>qoGiPRh{`&p{z+-HekYjifnm)HuL|Qr?J7L{{=}OBF zjCR&U5xuquO~4c@p} z9BQZfvaMp(iR8Z4#tEm4jv1acjP3DwV3qD2ThW(eV?XeY6guX|B6P-{aWOr>_lM4m zm6cthU3jjvaxWS3JG*U$g0HlKJeC5KQDInaC@tR%`yFZD3A&e|)-a)n+QKRyPr!mZ zQB=s&d7Y&?rM;yX)e-chmR30F3t-sZX{1uNoNuhY`!__x%4~fsJG`TG_s_16OzaND zVBo13wr1r#5?(eZ?ToJfPTrIshcb4rO!ur_2E%%QA{HvRit8m@V|e(#6Aw_s3XNxA zO@BaZRLg3%5i8(yd8-&5SC0+p>=)s-&tH zM8$>)n?eKN3w zWwOC}0;;$~5y^%X6sDA`gk7em>{JUAG)2`&E&!w#ak5Lp`^R-!D8I|4UH!^&Hw-a literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/startCoder/Services/StarCoderService.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/startCoder/Services/StarCoderService.class new file mode 100644 index 0000000000000000000000000000000000000000..bf265d7ea5bd44f3cdf75d6ff6bd3500f624b65b GIT binary patch literal 2058 zcmb7FU31e$6g`XW$Zp->LU+ZA-R7>=;O=vy#XYS-cm7p)qae8dj%5LMygKMl8|P%|1_Jlwq7^Bn2+Q&;ct7q3e8b`iaQE!zsqioi>}>PseL}Dn%t~6wi%`)%^asKP^ri)f2raw<{6Uw zhgO%Ghl=XwLE2%Tycgcvg@X802Ex5!>Yi7LOh8nWeEL+S4mB(f(Nd^jQNaQg(R-?> zSi(I9rNhO2yS>jaksr)=m?kP3$F+M76^-f+GzLR4(#s)zL>;SigC3z~jnq6&O4v)J zGUoE{`(!lWr-Y|>W;F~6<&qftL1HKjxA{gS8KzDSD{A0yV9gH)kwYM`yD*U0uxOUZ zm&M__CkYJEPY1QSsmqZiXx1>K8g}1p@ijwE*vU742DjvlXUJ~#sULg1X?O;W-et?O zg+GG`ARo!eBXn*Ha{J#uO@)RO%_#acFnTe6e0lp}YWJeBAeubG|2r>pqr$UI3Zjn tgohNHHH=~%kLdPmvN%QZ!P_^-Z&iA$(OZHMv<%{gzt*uyyNuMgz(35nOvV5J literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/sysparameter/controller/SysParamController.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/sysparameter/controller/SysParamController.class new file mode 100644 index 0000000000000000000000000000000000000000..20fc53d2f1e6b37472b66a492da555682efb6a2e GIT binary patch literal 12164 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/sysparameter/entity/SysParamEntity.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/sysparameter/entity/SysParamEntity.class new file mode 100644 index 0000000000000000000000000000000000000000..acb8d4bae66e12135752a920f5ed82c0a2d7c825 GIT binary patch literal 13036 zcmeI2d3;mZb;r*I1HxQyvV{?bu^B?Z4>KOZ5JEf*ktNw^MwUF5YzAf$Mc5BpgDiO@ znHeWd)292r@B6+@+oX+{Hfhtkd((a2_kG{@Htp}6t7l7kg7-fBUH1>RKzkHDwp?DHtl0Tt$*xUSx2hZYN`Bq0*_BDVR4dfBCNo>rd43j` zp9iQ*QU8niyZOmtzO*`-zV)KLTvN2Cu%bvM6onTyVYqHD6{>|>MLSX|m23H0p?O0`g}*`;NBGO;qH=+O>}S-WIc@-=&9DPP>QVHBv=`1k781MSgLc58#} zyCRF(w4$RO*wJ!vbG^hiB@7n5Ps9}URF~K6mCd4E$)f*?dNa{$@z`QAzL3i%=HiNU z(au-xZ2pyKc?J5QfXy^yYL!B16~NwPJd%m$vXSR<(R2(>hws|es$GnhOSk7MamR;X?i^B8UKLi&0xo6f}&nfYYo z26|d7l97`tI1N|^dwze_IcCL1M z%7vAxUAb#lQZkW!=|n7-i7zZ+(ozwgv;(l1#DeY>`1U$^Z$iiTzq3z=*#7P*n0$z`v_ zbJyeXXFysjZ&v2*N@lHa8(r$XmR?-Q&7=RBYl#_jC%9aiE)=oOt1}h*rA@pl*a$<> zRBk$v#460@W)|YlF2++)Y=_V-W4SvyXa?ZWZav7>F3Urk8^v;dC6_F(mU%zy z{>qt`y5-SEzP82_SYF@Am$q_^cPnRh?NFh*V6PVVc)`j?ipBEFHXmmGlkVszP4Gxo|tY^KbiD8tp)e8fD{{+#5+I@p9J6<_yCmof$V{kOO|_WE*K5?1|Fd z4o7=1SuC&LD&LvhIkwS_F5ZU+XbB6x8!-%Udb3c(ZVJ$I*z2t!=1gJbN;fUiO-;|! z3yStXStu21Php>*arbL{shbqNO;e8Eu4vz?T}xo)_MRC}FyfY`Wy0_M`Hc;`1mW13 zgnMv}zDxz^HkNl{tR)UeSJs$QP;{iLvIG zg0>WGXnKjBg$^FcrhpS5Y`*ZsSm$^muA7?fa${k*E_Dn$0eVGRZ4NNv`VLL+WLIvr zIY0#HT{0&v5l1}Ut?6T&k+sB%0KG@ip@}gk1c~*>Yx)GXKIHHbn*#JnSbR)DYfKXR zPto+LY#-!VXw?Vk(-jShTT8p*_nDeLi~REGED^$^d<})0N#gCmvs` z>Fby+)aJ+-pl`)XJu&8rgyQ+Crf=sS4q-G6uiZEj zpzo9wYKx8H_&!bF#g4o}4M!(-2I&1V9nH~FeC}y_&6$o&Qz#A4_evLC@l(7$sOkHh zF3z+^*Z_S<+G>uc;`M`?ws}f;M_+3SwgLKK93>ND?f@%pKdR}+*ewLNs4E5s=qC^x zC&oHPT=D;~rk~=@9)W)&g73~JpN9eZ8Cm+45G<}gr|IX}m3JZUs+|BGpkGupGBI|) zm@MAEtm#+Sdj#I8`vmU*{Tj~ViLp*mSs=fm={I@w!+>-$3ea!MLb;-}c>k`Z-*Xnq zWf7o1K%O%())c74>5nx1F+265NfQDkqzC9v&312#>*Dk0n*M@)_$_bpk-#6Izj8Tp z^cTm!(e$^S9N8d1e=n2MDMt|Jf7J9(?97wX$tXboB7jcWgaH0cQ=I-?!qZI-Pyfkb z<-a&8-F#3~`X6}*+Y%80{;x)sqRcz!1W_{|h!sI6j_;-_XjJV*qpGVdmYHkZ)B}2< z_M@qB1_U(C^EC9~aJ5sL>$h-W%Hyhs7L(=Wd~qpXDe&*c!>-y|0lj(LcOGOeno|cc zvR+O5Xg^E+n);0t)D)yaem0~jWS$+?G;E|Jn!-jps%gYX$21)`(j%HijWnj|grPjD z>770=s(==(M$2FZd(i=2gFdk26x@e>~YPw{! zZ_;$xNN?6OWuzxHT`_h~X}W5jy+u>RNYk38jTF-qHPVcxn31mWmYPu%b1n8mB%VB} z&uE&ZYe=Q4CY9n$PIpxfgq4nS~R zu@c*V_puWRO*74*&Um}Rm@#aQQwTxexkC^_3!ZljEoKNUp#$*%*7u7CIIf`WbkLh_ zx(;z1({N}yavM|Bc1XLQn)?^G*6HLlW9@VY>%!59?Z;E=I^YHy+4%1H#-{Q1rw{QW zFz0aVVTPKLInY$(Od{dR`KJ={&;8ublTJK8er}tGC3P5(8~$)lZW_0iMN-xOpTo(< z&Dzhbw$I^1ZRu{>t7^DYt4+y3u*JJG$cvZlnF0szLFfH4@%J&lv3IVXHUcybcjy0R_?+x8gAylD|l-h!Bdl zEk^z}w)qYtznA6jHgcWi?=kWRSpI$^{{Z{`kdc3cm|-!k&=@blj{@*lGNCr17=mjBYof6emW8TlVr{%0fq>pl99;C~zWBlpyvLA4J* z?x_Rs0G;p$LP^sDbkZLPl}-=PDSvZ>;-?4bv_BAPp&p=de?voU z)B|+Z9|#3g570S(AkEP0A2CdBUEcWKv(^NP{Q>9Mf`zK()9pE{ee*4^#H~Ffl%i4 z0L}VZH6$H;XOjF=CE9b#maODyUp-SvH3wi@l1iLi??G0x-x{f_p7*uoH(|+d_zne& zMt;Ldu3X|&3QzZ;V2Hb#QfY5|pI^M({TzJ1;OFUu2loDKT@Cof%MH@O2L=DEckc)N z;^iLd;6s96@WzMy;^j8$;D-gD@x~AP#mk-8!G{H(^~Q(&;^k)T;70_%=#3xoiJaZ+z4*o-3z2_^9At z^v1{i;<+HZgO3URjw(Jd2}BAz>le>;-W_~g@aw8XU5%8x?8=mrJDD z`(?^pMpkMA)>3Xn?mSCR?>0Qk4dctqOFIo$+8f?8g@(rf*tT9%RjUhQlw939R#$!2 zIpn=o2oDFX(7w6~S)u)PHEe|r)K%CD1?p_w>v_d^~ zb;=6$*41e%+*eoQR=B^e&RXGtx;kftgLO4&g$C>DycHU%s|!{*R96?R@Zq|;WQB+8 z>arC&Qdd(}I9yj(tnksgx@v{71Q9EYu0^fz@w$pzp+~sG;n9{k>%}ti2cRzekH>>_ zly4bo+6;2%ma*OVRD^+JlJ?6TWLv)eu~jleKsnG%ezM9j>Z=$zU}apgzpWU+;axbX)@=soN#hh$f+CWSDXZKro!n2 z$9xXV96dS2aU9}c!6!N&yL>kC0mi2c9|ior@=N9H?@cUU`_+@b-*9EUduLzozPo0F mj5IdLNK=`;yRkv`sJrmpqh6L}#ur2N3O3Oeh`m+yj{gH>j}TA* literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/sysparameter/entity/SysParamUpload.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/sysparameter/entity/SysParamUpload.class new file mode 100644 index 0000000000000000000000000000000000000000..be7714c016e0bdb56fc3163f3e88e306a0af07c7 GIT binary patch literal 5625 zcmb7IYj+!072PB2F_uSm?8I@DxFt;t_!+fnpdcrqaY%x}c0%kJ8W)nWG}wyekt&Ts z%&WXfTcG7#LZLhp9-$9t+^(`Xn5 zGx9&)c=ay;4q-EfkcI=9!g{J?nR(lCQss?u(JYzkmSdGtmhI%6jnw=``Hbk!74ro% z8$(#bwoB$^GnF^(mDK6wOIF6wV3>|$W>(iZX*#Pxo7Rv#TOq@`wU{gCmh;vz+b%e! zlPlO|4LfIq;!3J$mCCuYW7!!iHJzQ*u&;^Xlx15b)3LIPX1-z(q?a8TuWZ~F&y^N7 zih>UxJGXFJL%h024WXqe4FgS9n<*@F%I+qX-In$3Ny~0_2Rn*B`-m>Xt`YmJf?D=_mrcxFQJ)gZsFv$g1938;BrE?wOoz%~jTytpQ_0B{6E&OX4u(gTrep_W1`_Dj&|3pg;o31g(ikwAlrpd#J2dpyO!A{Ah=T_D z1tCs59tfq_-eq8?*bLgv`5_g!?=!F) zd$`APePF}G(<6(#&$E`ZTFAPIC0C!WPt;&FM24591ln7pSMKW{ZuFjD`)jbi*VI0O zzM_YS-13kD1pT6xt@pGBDd;|~0@KL`SR-9Zub*xk}H_8TPab81=E~C?2%7+b%VIE*8#sfF6Y;_aESDLAWENyB!zHAB@Z<0ZFi zZBP%?fve%!RX?F>>UAdtOBT1J;I+zb7Z|8xJqi`jD6ZP_=5f_3)v@Xe-ws7suTHR% zX4YoSqE|`uRkOS*RY>CXX#*ShjF-&Q5{=J^=5A`voSmLM!R#nm&WyRDX!!F}9;>Usc+vN-m$ZN;;mB55Er}DbHT5Sm26aHFG_?x;D`X!-Z-&J@0j+c^!;3|GE2c6KsM!6_y z^@4=rIURo>fQ2MJU#OHamK=k(v^I_hB<9WEH@uFGdsrgm)j&r`x+q66j(R!L`IHJD zx6lQH3br`U+`~~1&D%KcJ&!&P*~&a)7oPzGJ6LlA+gGDufK+T>jRskRy^D*6q~Uk~ z+3z5A{d}^5()KovM7x*Id-zFF*7%H!zJz@@DTFY@Z-L1E-_CDC0q_pIlOs(Ea0{Z* z7YJ-k#H!qa=sTouCELq4tQ_NLmm*&>j){Pz$1TdqiwwEr^b`NAw_$ z@kZ3=QJUl-Mm;*Z=N9(8*fjn-6~ap-Niub#rihNP54hLjINpC-`mtLWZI@o%NRK|@ z(x1S|R`dtjrB`>_qu=h*pK48iU%T|GGI;d;F8v2u(;sS=Uey z^5}QD^dD?ZpKh04YMlm;KIzhb2s5ohd$e78RYE=b-7Y=f92@CF`Uu62U9@Jf#q0{0zQ8Pjw)TFX4-n!Z?Rj%92S%{v`Y| zr6``jL41W$4A(J$uTs(_8?=2e-oycfnGKr8`1A25zpLYrDEblc0X`;NtMXvc0IZ6v z*LvVsEx3wrV(_Nu4O6PKn%lgIoy{gz=f0(x)0u^Q2X9O~ToZRO@rr-K)ra~Xe;Hqw z#M{J^ec#!{_b4;BUm&t0Q0C4?choB~JHX z7gsMHl1csv|37^B_wYi-MXQcb@bBBNdDaHe_wdSAm=o*+;MqlVzR4j?}UAcLBZt DHmsRd literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/sysparameter/repository/SysparamUploadRepo.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/sysparameter/repository/SysparamUploadRepo.class new file mode 100644 index 0000000000000000000000000000000000000000..0fa71844813b276aa31cfff3227a85fc9b8dd6eb GIT binary patch literal 802 zcmb7C%T60H6ul-5fzStqwo!Lk_94}(RJs`+qG+N94Wdo@kh+OX<}!6~?2+vWnxEi< zy66Y+QHVQE1VK=VE-dRleC|Ex`26C}UjX<3tp+SG_&79UZc!+Wp1acJ!iq6^w3N(^ zlit{p_h3qasxi2#a`6nCH zUi!e~OT}=?B-$p-m%V~&WBehVJW{x;weiABqa6dD+?UMP0&PiX^@&ggZ5Q?9B;Nbh ze$(#s4iDO->>x-xD1wIVpP%DiJeQvCH<0Pp&U?~=NXiKY&>FeLNRVrYt6s9;0R3;1 z22Pc0v~#m>3OmG(RJ2Cxwsr3+RT-R3)tz%Mx;NPy&i%LObA!9uV}>^P@b=E}j!2>L zWsdy%vqbdG7}V(0D{<&6HeiY3Wr`M{2`hB3QuQH4j~qOPC%-6OqimhQQ@U!f9$KHx No;(jv7U{_gfJ+mk{3`$e literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/sysparameter/response/SysParamResponse.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/sysparameter/response/SysParamResponse.class new file mode 100644 index 0000000000000000000000000000000000000000..251ec728038624158e3665bd3a0c1bbd3c3b846d GIT binary patch literal 2243 zcmbVM-*XyO7(Ewu14&3qXi3GU*0!kzNQ&0@qa}$=D6LUQV{kHKpWMI|wuN0>mN@w@ zeD)8pFL|glN@sM&(HEWZZ&K^I%Ld3M(V5P`?!Di=-?`_U`+fW8KR^8fU>TJNLISs{ zb}Q#dqiIPu*E#644aaCnS2_%K+P2k^xynIjTSa&LKm?k=jnTX>t=e$=wo#WyTLmVG z>B^P|AP_G-HujBN*EO5DlG$AB?V*|hdgQIse(?be?CB=e zQSj91PQaD(3qe!Ty8^{v^d($TIJ3tU9JG&A#LLoc*fp=@R3%eU)U_+FV_J2A3rDxo zG^~2AAI(Q_UErcunhR6d7qqE|3;JU9TRfI>5&q$8p9e?uT%}IsCG}_E;b@q zXR8n0?5D(VM{O0hD!$+%7j)ZgNQa542o1du2FqbHrjseMjJ+_q3Yff zvZ;uaV%WsTMBd)nEEjq7CPlG=yG>Uhb{uY^Vt1XYyl<-JNCq$ars9jMRP22W5K?W$ zXM~@I5TY38JI>V!&L$rrhN%vwxysICJnZkAL4y0n7(LJT1^#m!^NRvK^8=F4I0)e) zpK1$;@{0HLHXwypITN^qIcPrM4Cq+#9KYw>fzo0Qk5F0V!@pPKD6gK zK2T!*-yYT&83kEBW2VmhLN@aqbnP(v8^pKJ!-v^lA(M`My~$|7$rgn7DopRq79-1UGX4IdFJ ziLprZFHEyo{>E$sclnDBtS``dP4(C*qHYsk-L5LN&^#p2(el0d0@pXaE2J literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/sysparameter/service/SysParamService.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/sysparameter/service/SysParamService.class new file mode 100644 index 0000000000000000000000000000000000000000..7db191aa5649268d5497a688dd24584086fd11bc GIT binary patch literal 1172 zcmcgrOK;Oa5T13@x=DGYFWxV4axN??+=4hDrBYBTB3WFxpv`*YI9+?K-E~_30e%z* zegHoTF>BX}(h3Q3;5PHk%s20!zrOzffVc3%2amvOu2QN6lbNv8lqP4IrNRnLjnIpP z3mTSY?7*t_VY*W!ORxm<0byxj_xP%>W1-6nVs~XqvA(a_psd};t6pK}{_ zP~Syu8{ZP#zqX;Xg7zxt7Tmsq+Me@*8oq^xyHwl?sj{pDw literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/sysparameter/service/SysParamServiceImpl.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/sysparameter/service/SysParamServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..6e4426c11a9686ab60750d3f0b2c478e244a3fcf GIT binary patch literal 9124 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 RzYlupPk+E~^AD;1{{U;rulfK0 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/template/controller/DynamicTemplateController.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/template/controller/DynamicTemplateController.class new file mode 100644 index 0000000000000000000000000000000000000000..2261661f54292cfff06d6c5775c7590299133407 GIT binary patch literal 17588 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 W9d#A*tF%Ooxe8G~S)#^Wh5rMb`oF>e literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/template/controller/ExcelController.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/template/controller/ExcelController.class new file mode 100644 index 0000000000000000000000000000000000000000..9ad0713b4e0ae2b08a18e2455c3486d09d3b7af5 GIT binary patch literal 10488 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/template/controller/ImportDataRequest.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/template/controller/ImportDataRequest.class new file mode 100644 index 0000000000000000000000000000000000000000..d35ba7606afb71c1366c96df3306adf5a90dc0c3 GIT binary patch literal 1185 zcmbV~ZEw>s5XaAHyFLZlwUCX+vBIQoNJI$Ub=sRD&`<^wMSJgNR_7^+i*rHZTY&^Z z;sqao4}~~8ErfJTVzP9}ozMUK`OZIne)|ppPhqPL4ui*`ihV73lnC@u#IuN_@I#fL zR#7Che-O`<#%CP)8}Tj^Db}INpnJyOb3fwA)PFrW6CpCFjwK4(3G7yeGV%kN;)p?W zET;*_Ow;y@()Mn_KjgEyYlX+CWilP*358OlJz5MJ`&o)A7Mj7zu1qBEF{li;kBMYo zoro4x;HnEPXfx;pG7+z`cp~&$K8XmU7pRa&$6QO}&x2Jwl_`TK!GHIJaOzWmc?WvK z?ZTzzJvdkjUiRiqV6f&w4OXaVx+vNomTQ_$yevmAThz8SwFCD4Zrz93qJ7;%fv4)^ zh-)4T6q;Jurlu^$WVr9S&@|j_;$FmQlHu=3w#F*cp?EIMki4b0_sG00*d(P2ye1$8Y?2!&xbHLaxSvOCBRp^n&pbytbG?%|# z68Q|?M@n+wk4XDmk#)F1yt&9tD{@4q98+}X;TP}>O2w+QY_vnS>RKf)&zj>H$Xgco zHl4^(O{77fcPLV0h*t650bOmdp%k~IkT?luU+ktOv?&;pP}($5_DMV>ZoOfT3uP4& zLI_^q35g#-Uy1~Rq!J)hcmRn%zz=|*!Sz`c0a zL`cK!tCdo^<~qf)>!m%nR4qE5n|8}y!Ml{sm7F#AY_(W%@+Nc*vGdMFCtY;PYw0If z&bzCghEO3-{(M_7Un#F;H6%_qsH5aA7wUzTqB~nIS3JinRLXS?dlmfkbk(iZ3w6&e zue#}6o|_KsAb8X*yEWRBUv`QOmmsU|$$IV5b@4oD=~7kUb0_8&mvT$zG?WGg|bZiRzzA5lK zSH8G|=kfVsrLygL95H`p)`(Xea2P<9s^r4_ffHoebh5 z{M&5AI{6YT;ZN8Y5x!CP!?t_8J8BclETIM0Td(9#IW>mcV`0!(ZU~H}iClD>INGTx zuuyaj65F(_z4DV6abImXMQY!&*{|m8#IsQve4mZ`aSsb^)hW*jT9^;oh+}sYVPtIF zjeCT5#Kz6S({R*A5(kBP*v6PoJ!0c_9MqsywpLeg76Vf8*4-MbQt~(^RcR@XB5lQN z)$5QiX{~oFad#2#@loCEAq8&N@~{tUGui+@NF4y5F?7arRxd0#)u8mOb*H{AWvd}P zK9Q5KEZKMpr|H$H)47E?x}DPysk!w=ky9eu6$Wj7%lBhGNFTtE}3oWHTOQuwDa( z1ci(S13V$lyk_GCsj_pOKB!sLacuWGu&e{|znqC>N$wjG#Wz*5*JJ459miEe6g1N*)vwLRKIOY^fhs>hJ8W{&2tQrOsRG zV@my9z15HRt6titrG7-I=l5)TaI|Yo+YnRq`()}182XjTpP+pXBYb7@8nlI})F$p# zOA-$(PVte^r+>v@LjMILmtjvQ^i4d}L}W7tA=ykMVF)Jj3*whClrR#J4$w@-BxojM zB}@TX0mw{P9iU^G0fLTYqKN?kMFY@4BH96(%?uJWo3Rsv0!-PLdZ!3SZ(;QaYcX;4xAL7Vr^rq#`Kd0v;!2q6QaF zkh1V8cg~XmSFm zNAww0DEnjCb(V=0o4gEjdJ|_}7JfFPiy)x~5=)B57tLf0C1TyEO;*BaijHL>N)%~{ zSWW(}*^H?~ETmwUsYLsCPWx%!%)rMmKEzop(?lJIlC{Vd52Jd-hQmf0_N<_jvJK{N<}ykqX#^8!v3)f@EFj zvQN+O6|egAF`;WdJu9@w$0jab??aUfa;Nd8@;VRhDn-0S1LZ!EOkKq#^|4A#ZQwv^ zdIN`234H^HQwd`O+s5dKx-cB|_qKW<$(;Kailn-yNDC#^O+_v@Nw&l;)`w6sZVlBd uqXvl>;V}YbuE!{pYYeYeJ4CO2jiJHa!#%#kH6}zKrGMX6S1PgY9pFFV;=2j} literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/template/entity/TemplateFileUpload.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/template/entity/TemplateFileUpload.class new file mode 100644 index 0000000000000000000000000000000000000000..49b1d261c3fa3dd788e71ec39cdee3613401c32b GIT binary patch literal 7990 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/template/repository/TemplatedataRepo.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/template/repository/TemplatedataRepo.class new file mode 100644 index 0000000000000000000000000000000000000000..74ca9c2c30c0c836abe083f810b83fa4e904f878 GIT binary patch literal 965 zcmb7DO>fgc5S?uaX&VZmP@uOxaA-NyAOV-qqO?gxk((4dp@K`au_x&UXV=k$U-|W0MA8&vC{_zt4Uc*iqRv5gD^w={f5{1rlI8GDckbqQM z>9m=8oog%>P6Py(;SPi9NKAy62sQND{Sij440jp4(Prq`)JQcP7%|2xZN7PVo;OOx zGUvy%pqeQ#*c_tkPfuimEy`lh*!36uq09Mdd;Wh5MdhSh6q$2$(?pB7#$YGNC_2W^ z(#n2Yam{gk1Z5?g5^l8lObYcZjQ`3pWUdd%k|>kUY{mlfLl>Jkm| z0#VcvKY0I&K}C`H1Pi`Z+5ls)mS36mTs=c~spE5z56+>X8lMlOin}T`IznqP4lvRt zwrvv=dweuKjq5gIu(i848&~FJ;`!1#s&+k;L(B$M?O!&$^-Pw8eN7HMtkDx-uu5Nv z*1JN_qzr4Y0_*fwC3J(%6$|%Z^DEpZ1fay=0p#!LA#73bQJw~mi-by%K(4W{P2iIv J^z{15vp;&)EY<)3 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/template/service/CSVService.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/template/service/CSVService.class new file mode 100644 index 0000000000000000000000000000000000000000..2134b38f969502b63bf3f9dc05766e6b2c6c6834 GIT binary patch literal 3523 zcmbVPS#um$75=V9qn@Ql8jWKmO&l^IUbI*qY>aJ2P8=_CBBPNUjgWDIF|E;+)b>pG zq`OB8PFMq&EfAI@gv|khUV%_@gbRlkLKS&T6;-@Y#UJ2>C-M;S-R{;zvP8EmmQ356k*>f4fkO+0x^z9u^QFz82G^_bup|GU562t6GjF+aid)-` zTDIjsED-DNnGk3_=}gHKV#w)eM~6Viuw~1UMr~5M<0fNQ8FDISb;5KlHIEis{aK62 z=o!9EFlaeFBW>vtD?%i&yL)rudp0i#qy`r%vK}N~!@UCA0=z7zFf`hfBygX=+4A7< z;K}iP#i=%G_C=e}htm>3>6Zk0kAEDG6Vw1uF99Gmj zBCvf6UwbB$Mp4HAj*`4)y)Nyk_siuLc9~1^J&_+CDh-Y2_p1XR(QzCnxad2fivoA8 zMH4iOs1+y*oYE0TTLPz9Ez?$&)$$n5Xc*eiT*`|q)tZivV_2cza9x)5I9o``s#aB{ zu-wil%Ofh3QGp%ZXExJ4N)#P_oW}N5ytx$0_=JY>jmCmLrDFo;1hk;Bj85NDQX7z6 zpOk?l&f`f9Pmn8XrF5EM>G%}dNI6f|NguW`4WA|^s=gg2oxZ5vdd{`TD-E9^{Ofmz z>nU8s;S?^Qq97$s+agF=uA#<2&qNy2nAI>tE(9ku*`ve4B?ja>$6eQC#dLQ+xdm6Z zSkq9Yt@VNkKjn+9!$F;q%`4wWy+`Iebyam+)mKX4dpV_erKF zRA^t(@m1BdyZJG$7fw#B&OLlaj1rcBVC8mgyweuzYxmmD zTYNscj(`zO9_GQjZdF^)y$D66mnr*Z<#NfaN7rVyB>h=us@b5KrBvBzxD}~Nkhkx9 zUtjjA;$RJIdDXMoxYF_IcOm+=Gr%i~0rPuO3;)=#IMX;w^PS*-(nE>@US^R%DP#h5 z79u)0%W_uWo3ul`_c}U%8;G~@sg!{n?&4D&Km}|^7vD@j?x9_S<5tc-ppJ?Ci}DEF`VmP!9Iav>kS+@pF4ORhx(TBvD`y^EaO-)uJ#!5 zU{kTpXbY7!uAVF=f-QsG@;V+}Mk#kT+LTlRBk?-MDEl2g$z>xM$x@=27DfFAE}XxC zi|38hb(q&NSwB-`;uPO;E!3GM-sNJomZsvzvUS*c? z>=O1D(`uRsrbhaWqHd)Bf|Q{b(@W?y(uV#jXM8Q=YZM#F-w?lRqC@Ops-F{mqAy6f zf@gwY0QVAx9mMiJ0&+j{co2uN3#YIfCEns?^rDJB_K3Z>hJL(8tl#3r{xuH4jd9^a3p~HC31s6MsTaqo`4Q9YJ8ic7PO0Fcn;s8^}OiEckw)la9DKV zdz8j;N+j`pO50E(Z+<|jMql2+54n<{NB_hN93|=3pYb9`DSCGmFX2aI=UXV^WjxK8 z-lm5?rgj#8LpOecpP~~#W6WK&A6or6t%eq^(ZVbA*@C``H;~mJXfpWpXqetO2-mM_ z;O7E2&H<|=bME#xX}H2|8ZI-uRXTKMTU*ott1O^9+a6Qf8Ch(V$-0AxyU>375vzP& jeFy0id}T8KAq2l56mkAE?PfW~a zar&Q&VLvl>zma3GJ@9&vWP#85ShVH-r|MgqG_rCY~ zhdbZg0aOXGTX9oAIGHk%R=g*-AIokl2nsA5 zHO37+VWfuj&Vf-g?g^AMTPe%iD^OHd-zyMowFgZVMJUryj1qy$sFgB1GRXnc=`jWp zroiH;9XArahGWU++-A@lv0Qx~T08>u%byQo}=zku)c4 zXH1_k2lQkn;aO?J@$~lm>adkCo9d%}cp1-1=uyk{s8>C7CT^xZ%TBop77Hx#B`jNS z>%4m+P!_X>Q-+su7@hI|?Kb9wWO887Cs2$BNJ>T;pW!0sJ1saT0>1y2fWl9r6L5g#%2v~B6Gt7lj*NhUj? z_Yv3u+a5b?#68=Y)UXPxSr~CD_lU@zx-72uDX;gVe3(u~TZ459)(Wh96dyFK#|Gw& zA;v~b(`#XgZm4T3Y|NKzQcx#QU&zQo!!r)sPSWr^(@{~2G6kFRMd6oCi{luRvUXH# zL|Hi+uvLLBu%?h&-@JxxcuJtuqH2RM3RLB@;%jcp?Gun4XjHJ1M7me5`BM!~V;5PN zGS4vZrFjiA7|Spt0;>x7(``?bV>g;L>;Z{gMl88S4*Mi;lV^;oMPPLyEv;rEAu(#z za1e(`(IFo>x!r3dGAxY7ELG+!0V$d1q#ppwm0TtON6@C=C=2->01|Tz$8elJ8iRuZ zpxyrTn02Z@l<@EDr-fS z9+TqO6Xbb8#bl9G7x(jCQ&7}TI>Q{#Qf2Xs%;sposEkBH%4Jh1Ao|&L?c7{m>8qc+ zmg$7B_}@mi85>*8?2$Z~&X47F_r=`&pdWjwt>FQ&`H92{M%QDW5g%(e(*F2Y@P59F z&K?p3z1{Ri?7=QWPH?tB=0T0w87FSaku9)d?yr>wNlAflcP8aoNwe2-Eq-gXq*AtL z_|sfq?m6w!hG~05K+k>nG+_;h6F;AT09X8~;Z@<2&b#2fc;j`He&rvlyvk!>AqZ0+F&SxDhU!!ghi0usc#3E}a6gzJw;Z+DD1yDHcHELI|CtMPuU@SljeUXZA zseC#`{}xcy0;#GpTpq3nS6;*Oee!BtLP=4hdQKA|8kqt+^X2JpL+T||gcWJaw@Igc zn+LZ{VVG%CzVs22Xgd4`0rnB0{Y0?^Asj$8CrT|2VJo}VQT}za@sHv-Ttx9I*XP;b zKVZYWfD^cg7(PP}uCi-?jb7ZsNqmof{K!816VHBQPyGX@@fUUd15*e#L7BNPm>uRK zmpQo_#Tav@;5HISGHV+CMhZ5w7Q&xM<0a;_8o$$Hmqk*GU*RFcYS@aOG0qi77Cy%W z&Y+aKmS7TRp;A`G%Xo#_E?|(}zsBc_^zC)LK|el48{WiQJiUr~yiK_ZMp5m*yMVET z{C6vHjviOhr>xa??pl49R?qY7GD@e>3{`!XL$U0MjgWZ9WkN yyQPpXSUpXT=2e!H#2qZ6wJy;Zn8xz?#j`4zFfvIH8Oewb{p&}>B+I9dfqwxZuWJ+l literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/template/service/FileUploadService.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/template/service/FileUploadService.class new file mode 100644 index 0000000000000000000000000000000000000000..22de1b3085a1ba21ae16914abf035a26919b6997 GIT binary patch literal 4922 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/template/service/ImageUploadService.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/template/service/ImageUploadService.class new file mode 100644 index 0000000000000000000000000000000000000000..94dd45b805c78aa1b1a8f7efe28c1cb7cbff5d51 GIT binary patch literal 1972 zcmb7FT~8ZF6g{&xIIOn>NJ2{5<^vjH$j3GL0BWU3Zc>Gm*J$h=oJrTa*6x_d z5B*PxRJEcHRiFE#s-D?h%odD9Ubs8MopaAUXYTl)fB*aoz#6t|a0L8L-18G9!$=w5 zs9rymM)|2q_H{@3PkXYfe(r~{40iIZ8ma;_Z{)u8Lm74b=j}JDV+7n6svoD?#K}r-Hrq0qJob+Ou-d6-_ntKHt4lg z@=~&{z+5Zt$Z%IC+OCVus(GzR&MQN^_IdcjE zmpn{hvX0AGsNv(&Ts>WX4_ELB)k#TJV7bvcZZP?r*s9?(fm>spKG_h#a}Cbk81LDS z%Dj$)pQQENsDuuEX&o3qwWWoXG`4na0hpJQEZ8=46;#%%t!3dfvnZ% zeLER4Y`XAqzlJZUMdr`{{_EjOe8rnj!U7i$r6`Rp)p9gDm?@c?H6Y*xDx~DE+QU~i z<3gEG-s7(2{+)-1AdH)*=j<<)lMmT*_$CK^-T~SYoP7?CGy9P1Q;9=TuNsxw2WlrC zBpvmGwljYDL<_``_!bod@44>zVeHAu!$R-y9!@YYG{X#vBs5+=ZeS&hO0VP zKBHiqSp5Uudww{WE|LHb=lSjB37EkwSM(DXm}L)dF*=OXtH0sm?E}m^_#25mGYb@+!Bt!%+I4162rex24JuKBQqj!{U!~aB zO4#)gc6}W7Ivy3+zcNm+-jc<>bAS=^XLjT6q23Rx3)Lf0rZejo>D5hYyPVZs%V9=! pmkR9(oiT8jJ%#d9`?4yU`&755%ed-gxv{qiX^CGX5gSkp^$tfvVD^75Ilj%TD?@nBY z=PO>|7M*GDo?CY5?|IMj13RFnWiemyi%b4mcFOUbk{vk9G_Q^O%T5Xk2Q64=R%o4Z zJts1IEeg4P#?Lcin{kseR%*ejOU|yDXD65zTIhP5afwlE9kb9Pwj`<>)qrK=xP{j0 z##A+W+32>=7H*Uq^3c($<2l+^E;Ig^-3m+8==$bP-csgT+jBng~+YcQK?+ z)4UMa`L$VlJ#GYZ)h@3}6DcHmdZ#7wX$u!I#SpH}PtQ&=#%boW|m0PEEGp17#JC3uN68!1>dmaW%$|>GBO-S>{ zK@MdOS@`Bmg>Q}!-_69bM~Qomt0Y$k`0n5@OIh))_x+5{A1O595T618jb!+=A^?pZ z=1NIp??QBRZ$zAnU5L8&M#Qn&h3LfIh+e`;=6Gw4awKn(r1bUwg3g~PZBJ5Xgou+Q z36zQ`yiBytR^VNx(6c-J(Y?}3p=p&y96hR}o zbS5RBbPP&m(p8Z5fLM9l?CCcfq^F-|FkZ^$)4DUC_`F^pEj{0A)t)W7I7kl=rl z;-N@PJw>c`Z;l1h;#@VvUBk+MZUy=Bv8a7l9c&Z1RU3niM(`$nhYcQK zjQnD4uMbwlZPsV(H_YE`zxD`=QlkyrZ2y1{sf)-TMe?x7b|jC8oabW$&a>|3u{haE aK9M^(u=)LZgw>sIpRM1oyY#mSYySh2$^u3J literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/Email.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/Email.class new file mode 100644 index 0000000000000000000000000000000000000000..b4ebc8d26ee374a1685f903171a73b18b40d88bb GIT binary patch literal 2063 zcmbuA>rN9v6vxk$UT9sQT(zQd5i4CTD;H4#NwkQ96%Ch~=m)aE1XkMJWV_`ld>Bn^ zO#I*j_)y0GnJsI(Za>+kdv<2d<#*1^ng06y<0la<)6*2i1m#Ygs^LnrVoT4c*QC37 z@YZ-yHLXgD;({ilmiO$V_vg-0(W%s{c1=(gW|mngOSfh@_Tl!XAh9E;r|8%<&$PX= zS*gneg7QZQN^+d-Qy7*$nU|(fG3_&>#nEvt)HYD-ry%YtGS z945}B$BqZ43oYhN*YTorD$^urM5BJXCaAAu*>bmDJ(li)d0dek)Hy*SCep#UIT`oP zEo3=bimHVw6}S^MKl0#oIB=niMBhm7+&O(`x@J{+sFR>HP!Cld7-?Li3?rrC#-H^y zlzUWTs4bypJ=pM`MjG|_hF8kNtqe_Frr?lDXOS&+je6TGQPx0Xi8bam>TAzai+opkyNUmG90^znt9YUfuSrs@%3Ot(t}1duH2?XL>l1 zsP;gq;#7~F3*)7BwQPc3|SR3z)KsX_+3Pi&yZ@4fY6< zkH=>m6Yl1`{+%9kD~;*14Vu#D8dT78@dnN5xkQ5&^jxy7&HN_qR^eay9)cFjt6PDa zIM27UYQQ|-w(1ti^Q}s8waS?M&zM(DnN&@gOTs)0!z@g)P|m7vKc0fGE4T|M@%JJ@ S5`W9&Go~YpyoRVTTK@wmNF+A^ literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/EmailRequest.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/EmailRequest.class new file mode 100644 index 0000000000000000000000000000000000000000..a1b862d519b52c0b5bb86c8c3e914d66d35e5237 GIT binary patch literal 1603 zcmah|U2hXt5Ixu4wHIdrCux!zQj!7%f5dS=(huT<0%@osC4dqXseS5=eHAaPchmKn z-_hs(fbxbGtp=F?>5%E+Vi)~*L~BA^RN_(5A-A5@O7}?xV!hjv|C?;siwDjdEpF#QE)h5PMy-5j^sG-kxu620<9>*b9T6fcjx~FMQbe+yo}l zv1t?3S_|9e6ckRou#rUM zY5{e;@8SbY5_821y!g6YedyvNe9S9-aA1PALVc9LCp1s1H62_d--;kLT`a&!y4sbl zu1m2MYO@peqn5et$tsM$%xqD5z}u8O%iUMV$O6&I)8+)|pQ4weSKxDu{|0Tvr(OL4 z?h_groZ%@Uyu?|aZfX}XPLFfLB;k((Ei*GCnbq2laKEQ@5@~uEfgzGq5qkV~7;SS} ze8Jtq^a%JTOtl%dR;zvo+d8cM2K6oM>|yO!sI7(S05ge8OEOVL#FvrGC$v)Z`9w1AI#Z8NM%8}o5d{3sF1FWb8Npt=mHzBC31)e zmymge8CVoSDGI>HGoD9&M#-XapGPoVlX!xZen$O^iN;gBCu|2;n)rmr0L!mi%u>ox Z$;UAQ{Ak0UVs-Rh9^dd!$t8mu{{r@X34H(n literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/Login.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/Login.class new file mode 100644 index 0000000000000000000000000000000000000000..545e1fa9cdfa55b329cbe988a6480c7f3ee6d7ec GIT binary patch literal 2079 zcma)7ZBrXn6n<{9n{2{{hR91Js8qm`1e&U?wF#hYX(^QeQz|q1$tCQNZNn~ZHub;w z1LO-IbVlin&N%v|o$)vLGyK?EpOb6|FRASSch8=C_Bqda&bgPr{{8iL09UXUM?@i8 z^>&NCZPi^nC^j3mzxZISxZ>?NZXB9I`l0pMD%LG`r?|HD(5?mwhD5p6uC0(+>27ZX zzT@tcxxZ&M8sB;TwnE>I9ejBdJvg1~6+e2v=?2cOz3e`A8qQYTzTvuFUj|xlIaIv4fhoy>9tbD6oB|lMg$93NicJ zrd6l=1VUTfa_;LSGrnWuU5rx6s^#96XmO64Fpx+hiuX;tjZyJUns^Hd1?8RWMTn-L zdqK_i6;e|8WVdnsE&nk`JD}USFre#5Z3I^JQN`K|r8H_*qb6-oh)(C0h1X>hv$({h z>-U!{x5;Xm)%td$S?AOwjwMS>c5#isYfnxbpDK);o~N5lr@n3b21?Ro8O!NT74u14 z!<>nEj4;of<2u2DxIQ!SId0Hp?d{nvr*O7ctIl*U%v3gTi!GZO?@*jKAhqNKddb8m zqBkqvl#1_3_PYjF6xfaAhS&6~_8mv&FWDk{N$SA`Zbo_LBK+aFwk(bmpE6(UD*Z{m z#rW38r^&w}ZK6WY|BTd+G$J_1RYGJj4QJe*N)NIPJz=$V$?ZF4x%r-mtfzygM_fs1To1d~|AG<{Lzv49*c4NIJ$ zJS`m+)>fbu!wm7qk%$}5(I1C;f#Eo!{55EvZ<`#{Q1>Ycqsg7pLzwGKFKyLD5n=tR zuIfjub#fKfA^OFZ>^%DX^z_jDO`lHCQo1~+&9}rIOP6bu)<_rj5uZIo@f-0^lr-7M zYT=F{f^%!Ew~$xbs3D~&&*q2th?I0(#mBUS$z}eN6Co!!Z&zt)Ez#~ldr5~z(UhW4 ze7xk^eUFG^2zn==6QiAUF^u_m9rUPrO<-B|)Ni=WjAc++t4aY8Xsxi4h{Yx*$TqF+lBjfn?8fFH^@ zTM#3nX)-%AJCEN?_xY&40jG=7I_-r|{v2Vw7mEAER}C}PM{hl}xiy4sozQ&-DVwJ$$|br}woD^8^z zsW4gRp57L=C@oFDAVnXMBpTJA)1VvL3rUMChfb!wJ1@vTCSmg=vxzf}0_pZB01GIR z#juDH$)CwjSbCUBF3wD@V3~+?ax-D0Ry(`TSo&^lksl}%XCZM$PJfFzMY+n9PK!Mlyx^CrKE5ZU6uP literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/PasswordResetRequest.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/PasswordResetRequest.class new file mode 100644 index 0000000000000000000000000000000000000000..662753d69f93d70012625236c9f6e26a8a58e626 GIT binary patch literal 2151 zcma)7ZBrXn6n<{9n=G(Uh`cm{3IaAS&{S=$O#p36OQ{4p&|yYDxg>YUwqX}HoA$r> z1LO-IbVlin&N%v|&iEVr8GcmjbMgWNqGf=)=bknO$%QAm~i zyH#M94DLI!qqxN-WM;Z(ZYSL2&?FLd|xs`t#TxjR*T+w=U; z30>c-NusL1x8py}t!PgNPN>UFWZd=3x(5maHcZ46F0HwqUa#-%=-{zK2>H%0In`|^ zaAn_e8ezpHW@hc8VlbDKv3^pQWF4^)m#hO+t)s$`)cFF_+my4Y!-`M&0%uQ$Iv@x6 z_7to_jPg5GzUcsIs$WQd(aXGV*?1e{3RcPS?n$&bCv8~h=|vRp+ISP=;+wJY26_~f z-`S}anu6(v6&;Y62r|>r*`da(PG2*uqr0uJ4qyLP=#-uoo&A>FR>i4Rq*V&hRC-l7 zUb8Wet0eGfbG3Mn3|CosplkIiN6hZbYR`0_TcO{av^YLi7&|+Ecj|7ntOE;qg{k%w zo*wMfsWKOPaT5zR7BR;B3$EveOXB*(#;3SVm$SdGy|Ti5w~n4`aw~Vi!d-TDZt@iG zMGI19TF_T)d?an57~3MoLm}`$p?Ax#2PJ*qmBCGR<9=1D#S~i`<(ZD~hhyKcIEZ}8 zRB{UF@8vGWT_2w||8leypJwKJ^nXhuf=gT_giZ`{wOjTO65J^no!0;jUkqpzW8{05 zQJ&xtp^(Y`fd21jou@R~j6jo;(3N@>E;HKX^pH1|dOiH`Md3xpWB7Ojo@c2G`#;Gn zP8OAH<{OyCVfI(3uVF?Hv%f$U=Q2l_Xl!Y`vp&ZqZ_NLOzNGOILkF*@h8y}xBkLF9O`e3#u4SOMe}mgf&m?Gmu&`h(HpHD6EL141HJCj>eEtZz zFU3EdH{?aqXuYvSaK4)8F68wlYKu~ohxC1XKuRWV;6qx%*+;}N0<#^^jxjo23}Zgt3tg(-5Li|{`x9<{p1Ab_1*!Z9ONl#N nq*}3;xg6pC|DDO%R)I<`oGyt@ZiyFI?S5v?-V&cRTD literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/Provider.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/Provider.class new file mode 100644 index 0000000000000000000000000000000000000000..80812bea236f28616afdbd65ee3f94daa413a3dd GIT binary patch literal 1090 zcmah{TTc@~6#j;7yX~@tS_R}Hh*oV2QXuL}8v?;f2n!_^nlwHQ?FdV@yJos=(l>vS z!UIGj@!20`JhLsZFTy6XXU^@L?_B=;{c#204OVpwG0Zf)RzV8xxWX@V+CsiRs1)|4 z*R`8M>WDCmoboO&INUuhl-*8?A!=1NH!Ox(>#p1)Lu{*3*|N$E!{xoh-Arx6IxJTi z=04q*7%w#(+qL~Q1}&SbF+?`KrideIfML``3J(aqGzb~bTDKIdzO>!r;&!fvwU1rycO?0iL#PU( zbT`Gd;`$2BRink$)+g1>0g^OsAT_0iO`Zrz1H%+&lJ=2w^)3AbtEZFN1xC)14wOfc zKpBhvBA0fCbhREi!&vnk6W=Lg2$S?TNGi-JdUYzWDi3WY{T2QS*%co>zc6!w>D$B@ z5g?jDk{R4}%qXImqmvlIlN2yZCxNG!AFzE#H7T_5GfdQXwER`Qq{!`R)0cR*_>DY$ sR()`G!ze*x%MBRiNvfxfG|OKi{~PT8d5TJu;q_MqycEC}upG#hf8UPn2mk;8 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/Rn_Who_AccId_Column.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/Rn_Who_AccId_Column.class new file mode 100644 index 0000000000000000000000000000000000000000..6e6faa522ae5d4cb2a5a58b2c21409ce2414be67 GIT binary patch literal 2256 zcma)-VRPF=5Qg`h*r|gL6$ty zsSth@%)l_i2YvuQis3y;cE+mA)HA-*>E7LaZui#y=ik5nCZf;i`3w~p-Lw2Y52SEC zsdyC1pkeOu1F!q-so$+xR?F@hz8m$u8JcEPJrl14cZJvEdnaeoQZrOybR~Z4`20`? zj&Pk{#EB~*hBGXWWe_^PchqVyV!Mpy4Brct@YJzzBUuEB{xC*m3m8h;H3i#t>@!l1 z%NuyP#pwD$ zGV^?(qm<27r+H}BI{SM>Ge__my-DO#z}GJVA8a@+Cbi>QAh12f6WeA~BhMFcJi(w4rQR;Lb%y4rrj zs|oN*PpUL``ufbTtY$AznHYUqp$g4G9ge9NRf8H57faz{B~gxaNp(rI z!;K0p4jqm*#%Of%Ml=_x*2Y^Ex=A05(P;IM=0dD#^a0Zd^>c0gtU^me>(NG{L)#|h z(Yi*3ZVz>%4b<(>j{-~XIJ#4><@EcyZa_xMIX%!3gMqXUBXpbPiZDd}@8rmuXjgUK zj{6bmgQ_w4+MW#rxBb3wJRU{^G_K;c$aWOEW!%peeTY*{;aj8rphwHHwDwtZ_%32h(#ruiHjaZC|rQ#~) z1q6iRR^qOpE0XTM74PD=F$8Zxm*Dk{JET?U42*Z-onvO0i)(+bHA3S%`DRGA1x3w>4#2ika%U xOh%SzCzq+2&tznocER*~0#ni`DbsB*6=)|Ozm9u)9_w$gZlRjhABb7B`yc)1tsVdX literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/Rn_Who_Columns.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/Rn_Who_Columns.class new file mode 100644 index 0000000000000000000000000000000000000000..a9f9684fcf5dc28779abae0e1e1a40bfa98fafc2 GIT binary patch literal 2003 zcma)+{Zku77{{Lt1R4xBLai42LR+l7w5%-^YiZGtq%(CA%Rs=<{=h7`ZCJeQ-rVg~ z@vqVu9cTQ(KfpiA@w<0Nm|Tx)GTFVoeO^BMeV)zV|NQwE5j~{VB$XK5>X`u#rSP@1 zJdR}8?7rYT`rz9mbI>q;JkZf3jWenpi`RntLihQL!(-XAlQhBTQu0Yn6XIS5QBe7KfhyHt$k-(uE130#&+ z_j#wa+pTxD8O;@#r)t1(T#ErhPBnH~^=_+qQ13Fjpkv>6haXFhM3p%3giY1B-!@^N zM?t7`|5XUzA5HiJciUVHkHQwSXT@!~r`AoSxHamJrSKX~~lDc{HI&?%3NN+dB z73ujRiXiFj0<#wGm_2DHmk5f$s(F5|9S4GYW+0U2Q5@j5SzeDlWzpiJaW?2C4m5^e z8Q(dYqzibi;FgqV3P02g>vyqUfYn7j*Cf41Gc=3krHJ0A%iq%n^r0KBBwi>==5ZtM zQF0z1r5;xkV-z7Xu3?@~ zeu8l#c{xpsc&?@fv_#8TFAA%I|dVEVa{( zKv)K&OMf}F%F;WuRMq>~E2F(IF?vwQw3cVOQ^@pLG1FR}X&Fo_=P;#p%b4a8rgi$f zK&MA}rqx2G$FzZSzoFBkJktX(t)0V^wnxTvEn#|6$n-SNv|h;cWiiv!Jkw(^ZJfiD eHf6>%52g}*m5lY|n#^Fmg>?hU)m{?oQS)CR6^v5= literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/Role.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/Role.class new file mode 100644 index 0000000000000000000000000000000000000000..ab66569ad1f60b30dc92c714986918e0e6f25c1a GIT binary patch literal 1917 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 uPEtZZh>@F@0+#z}FdQTM2`~L&WT##x2 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/User.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/User.class new file mode 100644 index 0000000000000000000000000000000000000000..b1548ec071ca16e432e0f846101e5f2944d0113d GIT binary patch literal 19578 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 R&0hgl|AM-~y>{T{{{U1r%bWlJ literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/UserProfileDTO.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/UserProfileDTO.class new file mode 100644 index 0000000000000000000000000000000000000000..e5a6e723defcccb9d011131a56cb4a56421e7957 GIT binary patch literal 3544 zcma)8Yjf087=F@CHrZ`@p-{>KV!>5sDh}Z+t3Z&CMBCi$8XL! zjw4_6lQaGR`GPY#YMD{TK|kP(e}EsLKSRamB-u;5)!j}v=RNQHocFw!=bYsCe}4EG z!1H)dMVo{pd3QbIS!U6({7kuIdDE9JW-fD__uLzH(c)BvETQ|RdE3ksO=mT8arvf| z_f^Ct>s-!FOOP%|=$LYyl5aZxl36TU3ZoEz zk_7EWxmcVt*SWN3rnb?d@7d03RzhOKa~-$rQ& zVkID9pAH=z61rw=$C@jzFI(QFFy)>ZH_wbs=1rH8QuYfreWquc7n!^0jGk2w6BWBX zsiRZurqZy$tcC7~jxM3=pl-Ta0%3VtN4KzOv`mV62<3o|T|(Jjs;^A%Kx1JBm)N&i z%P+Vq^QOmM`0O5o;=*cB424q>3Im{23xL~l9&9TiZrv)IMK0d5Pe_~W;MFAKdQK+; zk8@Stbj}L2P`;?62fLGq;bk4q;<(TmI-U?Z2`6>*hteq>PleKH9nWAl+2w9!PP7-9 z;ra#3W3-|Z=^D*C1AV{U4fyVklmrVUX=_$6{3drXx6dl zoB6d_b0eaSRxnEiK{*Mrfx(<8$bycGm}fro3%S{|OgP6fdseAjB<&M*c_hdpTXV!?*u+t~HAg(fO&lF<&Cwu+*tG4% zHt4)fRCj3jd-Q!nsj=F7Lqt?<(FxIF3ByDyWFv1^2_wzjA8OUTU{2M2XW)Lcx%HcRZ)i`+53%bm^wE^OiI*yfF+(9_%!sEH zfr&pv&s}t+lvKP9lr>a>vWAvY1xSlPYD%jEjT;Gq#*JhuAwbCplt?A(KodqgK@*0a zY8N0q0#T}fLX0z4C~d4Uopkoq77+$i)rd&?8#R+OG(Cge2R0F z6wKli&d!kIMXcc!N-8|w*f~lXJ|pS^r3605X}n4)iA`RIGnCr#6L+1Zq+^b;O`=ED z{z9h;>2K^+5#zr`abGAVnv0bKHpwQ-;;W#s$rxj9;`}P2yP_ojb$pd-NfZ`Blq5R7 zQvrqe4&~Bqw}bR2bsC-C>CT>%#{;4q?9LWQ6RmsrF4WOYymnpa#|&8*QgUR`1bISJ z)=&Zyc@r$sQcA@%Zo~sqylNtw!c`N78kk6=Xq6h64({Ccg)q!0#~41wA}%pU1s~xu zCGlqZ087j}#xJA-UZ*7E6x;O%B?VV-fU+^&tl>Q-AS R_&eW~+rJ8K2gl*ve*rrqG~fUL literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userlist/controller/UserListController.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/userlist/controller/UserListController.class new file mode 100644 index 0000000000000000000000000000000000000000..4bd073371f063545900a0cd8e74dba63b32541aa GIT binary patch literal 7439 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

    x|OZ9h2v1fJQYMp#zK#l)>$CYpcrL zdj?#Uu$-DD zyO1SDA8Ry7LpeG@Co?p`X#T&bTBG;rCzvUt>um0D?=lc@S!k!f_ zDLP9$7M zhXU2;3;Gh(OxV7v!>Y)ZaD zjY@Qf(GieRw5Jr}N}LQT4pR2TX?U!@a|HF`h~8EGcBa29S<+Z(d-jV11a8_Ctg zASRWA8*0JMnJoAEUZZd62?&EvD4^ALgBvDyrB^58`;{HstrEib@L!Gk=lM)hy$bN@ zFM>CSc`4o4)TmBXNDOYs>zG$<-&T%D;XbdeTuRN4idySwqj=%Ppmfd&NfzFjjt4) zf&Cyuw}gQUKn%uY1Y=6U*q;hv;KYEr1oHsvr}5Slm~%UHZu$IfG*dt|tDeh(7DK z=YqDx{R$R?c#ng?0$>+@r{c2o;rtFQ&85fF(un~@>4>865+Ghiux6DbGr{D@k#X!L zqmBh>PC24M6<<*qbI0(n&@x=Vi*XtFpl1a=l6*LM6|Xt`nJlX?51d>}aPpX9{T?i3 zoO2TK4&5tHci{#KC_s|)3hG#38A2UKt3vCT-vJZ!+(!?S^$?(>;-w0^)CS>KD(nP) zw+bJYs eW@v@(;~4^M0B4Gxs^>EWZ4_-QV&@ob5&Z*{EOtr& literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/api_registery/Controllers/GeneratetokenController.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/api_registery/Controllers/GeneratetokenController.class new file mode 100644 index 0000000000000000000000000000000000000000..e9e13db50c720648242f35f01acd221018482acd GIT binary patch literal 2061 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/api_registery/Entity/Token_registery.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/api_registery/Entity/Token_registery.class new file mode 100644 index 0000000000000000000000000000000000000000..41d2328e24bf84ae999a746f021a0b92c014eb9e GIT binary patch literal 3013 zcma)7ZF3V<6n<{9n=I)TN@xqAs0bDNN&pdQLP2N?2HS#dDS{|$lWVgy-L0Dq(jUPe z@CV2jKIn{=8J%(T3(okPRDAC4rrEZUw$tpMd+u}2J?A;+p8f0JUw#8{9!?qwfiq=y zHSbBQ=14zpt=SJfxop>c>8e92V+M@K-`c7$5K-?7QoN%4GZ#n*=RclC{@u)u`kgzKPho&D}Ppo{+a+dQY z$Ct~}D+=W18VqPvF4}c_sV1*Fj_X@Kz19VK1B<8mHFXZ7cgiwfs?g{}n~fXNk)Gwt zN^m$qM%`EI<@Gn>dD6oAnpF7G?k(v=e5jcEO=NM1 zG&T*C@_iHCN~zaFGI|Hva51>Zj+&8v)vesNJaW!HWw@QRiJ#mPw~Y=~rbZJdkdogt ztQu{%U~erwmSw*Go{cG&XS>d4(*P zco!#>bjiefIKjqux3)-h8gq92s`LcXiv50d1B^fuhz9~?yv@48&A2Ml0ts})_DRmX zZ`I;3MXUeIQdV*Rn@w4#BpnD)r=R>Z+UkCazyo3mzjyun$SX-3Y*4Ujf5sDfNJ z@tLYBNnFeziN`9BDks9c+wjWrx~(o*_qL=@D~1G)2FGn3SK+iRvT5j(!%)Lf=tyyu z<|+Y$KVD_7O|B1e)yemMt`A6b1q$A(0LqIL!IXIqb;^u=OQR!PDQ%ALqx|J53%>QC zpV0RMg#_N>Q$fHJ-saN`0eA<;xe}_acX4!bZ;p5?c5!rSZ;l2qNY1vWR-p3)BTfws z|BSvLDecUyH$+6ask}puhlti$OfoAljFH{kpWLf^RU?7OeKv4Ey1V;Rdvza{K62k3 zxaU0D8NIm3#P>1DXTw9^L)Tsm{{itG^yG`--yvp3hBj~}SW@_4c7%_DHu@(za@s2# zd=7Ior)}WFCSt6h6Eapv<#dHfy+ZamI&*q16$2FuX@ZIcBbQbnBLby!MiZpHU_i+o z{r4aYbhAd!FpkS4u?J6ag*}--KWuzVU6RC>ag~zBiFO^=DCwBt-UOu-YV6%fN@;lL z!xSZhD6qh0+V~s$(-8llH;oJYHz*zn#eH$HS-WwPtEn%lGLoIX&1q*1iOaJRTTDo8TvJfPeuh)dP)(NHPf!+i(G1^vD1WUzWE#!7B!3>jwdMA(k z8YH;~oc$GZ_p%Ewv8cG*z`g938+fSr<14!q%0(qt_}IYLZyHKxBaVdn8nijIHE&Y5S@*hGf~0T+EQ>EtyY8}TF5~l0oyRSjO(6vyUX63lE2~4vG51@qr{1Y zIV4(G%m+MX-s8RZkJmQ->dJ3+JQ0qikd18&x%@SGHFr}rQPz;UZAnT|L%pM3A zl-6(t+X@a#d_rBJw|YD;so)Iy3eH2ax{1kod!MkT=a3%t0vUA~QFy-@ZX>QADi}^f zn+m#d6)8CWoBnjgtY9#8)+4t`E?)AVYE1qwB^UYc{#<)@yxAMm;m?D&=F%uQnzV9J z)17PFyrPl!fstMCje?Vn@>V%e;ANyv7)ESWuqCx4If87N^d9WO;A;+HPi9~6eSl9$ C&!qAI literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/api_registery/Repository/Api_registery_lineRepository.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/api_registery/Repository/Api_registery_lineRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..9f64674c450ca2da8f714759551a59bc20b2df9d GIT binary patch literal 852 zcmbVK$xg#C5FJxWY1zvrZh;evgoS`pSkwbZpddC02`-h}45>?MM~>5~-@)H--~;$5 z#56@+BsOt~obh<(&3kX&-d|n;U=NmaFv6fz)eUY?gbFPekt`bwWNgv2`3*)omR8em zX)sX^rNVwP2cryT>!K-mC{(~ND|M{e9E>s8*Cya`WTXlnjc8y?n`#=H_ABP@5#g-dB$RL9os4BA#FA3l3M;jW8F25fw67D=nYv}0B1~xF-55jC&e?Px zjczzYcBHC1tr{A1x}ub&e|WsZV1fwCCZ^3YWGy2ZdN0VD3$!)uUx|(bWGqcsxYdcN z;;9S?boD25w>y$Ecpi|x>#zG~l0)A9Pw@ftGi5PAlbW#g;1L^_}oKIw)d2N#`uTmU4ey31v^u`)VYog9$M>2k#;s0Afx-X{Iy`hoUJxereL|9 z91U{|_Jb?$(tuWZ2jgq>7|eO};_^ecBVe6-)gzpys`5w$6IeplK0&&6gHttO&jV$B zt#eoSK7Q7QOYYu1)VCAX0=_RXpUpMAcY`Z4eE{mE(nppsK|iJc=AQy4`-+ar440NR zH?zCZ@~z+d z3;HkYOa})$)An<}_uq6nJ$E+=0VCt2&d%(8+2=mbdCooex%=0@FMkIx0hvHdV5;D5 z+MbeSM+LU5=v7aZv>zyM%g!tBsV*qr&Nff4ZYWt)UhQK7ae=T#uXUIxdmBXk)Af=+GIS~&;)Y(fMnlES$tClIt@yf%ECye$5c^D^m%) zD{%Go(GMVip&|w++a!Xro>#$!TU?SxPCOCZ++!sbWXt6TI@nl}CGCXj6If2SRG$H0 z7u`*%9h>ILh=pmk66$_as-P#YOAJu;$k$JAJ;2R2X_?9xU7WY@Ah0*7}auWij01?HLs znRA^|+Xu+dbH&0(nBYM+^xO#pq?-doRkE)5FyY0DDP*#oN#Yu=CooAy!t=1_tA&qo zgN2IlDaJZEO_i6N#WeHjYdTC}Is#Tvl_}%ZwXIcSakLpwl<|tee%nG8cepu`d4&FW zvvD0gYh_opLgjMbe{8o-?Z??}-7>VzTKEi~^Wg!5%7V_9H6^EDKy}u2kxWf(rN4x0jXgR=t8+ zaD!R5>J(?{pSp3MXnBjJ*3Enp_po9v9fpm&<>F<+i}=|i0`74KztSd9K2sdrdmC+4 z>NnDSi^c7qA5xJIWZ}uYtkiD2WIjx5R+~F9b--W3xKXk|>mp`;Hk2C>cKwedgEPE^ zI{24DHJhu5ZGt1ycC$^e<;~1@FGn_8!M5|l3s}Ff6T@M?jWN)NBYazt0Z08D@nqpB zt<2(OwkA;DgdoiSF z-zhk4LY=``E_k2)7|w+uZ?R`w_SQmv5W{Y?2=#CnX)rQtMCwHvBXpVKV){?BVZp^H z%_9F}q5lcan$(lV{|+vSSKOzXNJ%zGv2lr>3@I~g4Z{8!!pkvi<0^UCkMmp;&i)3@ zeq?ZS7iT8K`3a_K-luEc>-pb`VRzRew$t3)ktW~04d1=3d{5)kn(x2Kbr<7h4f3%a z5c$HzZOr_PG#it`jrdS}bQ^Qqm^U^<@%oN{u}N+9LT@Gmw(VnJk-(YPi zaq8w0PT>kSa)QrQO!6`Mnu>xpP-bhIAdnERq4gRb;48vA#oF?aI*HRm2OhE4iLdFy mXf(3=hV$QYrW@iPOeVN8#ZgZzRFq*ehVR1nYU5OV5BvwrL>^24 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/api_registery/Services/Api_registery_lineService.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/api_registery/Services/Api_registery_lineService.class new file mode 100644 index 0000000000000000000000000000000000000000..03b5eb122c755733933476cf6b12b3b3e51d76ac GIT binary patch literal 3605 zcmb_eT~`xV6x|a7A<3ZN2NtC^wHAY@gH@~rM3I7^0V&Z~?FXGCmoPHSq%#vVed%+5 zLjQ$bs|y$HT5X^EXZi=ay1MVoBn%j|EB0mXojYgt*=L_~&%J;C^UH4luHw4{VhScp z_NL|t-L!xlUAq=ec0W!i7+9%Up0OzkhHDf}F>P74r+bENxeBi5Y^S2R zRmZR@YmUAtp4rZZRusDBYHNB)($Mtg588Civ!5A`C=<48(y$C~NfF-bm#RgQPw?O zfth^`*etd1>Mb;z7;fvYBorK1(TT1!PGBH`cN9#&b=p*%#3_pEGAIQ@+1&n0A=_7$ z5_ng^m4kgB7&;vV%8j)p0SkFic`m$azEWhFutYlkO zoOG|1?M>aVG@1)pAPlipaqc%|?vr_=LI*X6TK(|9JD6-sl&J|>4?`->;f#XBnqieG z2bHceJO$_fQ*6ErYzow}EIi#XDeRGKnEIM$m|Bh$^9$YOng1n)+5TChA(5l)+pNS51_ikrB_W+=<;w(lVu z^$?sgdlGiPDvtu)oJip|K22bTvihCH54Z7E#VqF7>dBv5yHRYBlZ!PNlZqdWDBg%i zfm#+O`@(9m?x&?c%Bf*BT#ymuR4ihNB_I3|#Be-n--v-{PFJnUZou92eS00h1=sct z0jb@JiaZ{$85!=fBV1uoDISeaQW!)*#Up%9!qo4f!!EE_!n`NXUuIwsPgHz?FKOw9 zmV06k4TlTT^lKHX5;RHBp#REMT}4p>Bnhy)T2>*j#zfFI*vft)n!Uu&q`yNX#<~gv zPiakzi1pEE8iJi)NPy9dM$a7ayd?aZaT#;0yrWXO9+W=*cA zuz{+)HjsDRHp`bOP-M?FijXzd!LPLOgxtgTTG+I|H+%A)UfNjHtKr2YmG`;N8S?6K z`oN3aCAnD?v_5s@ZBW=ATS?%2zRR1ONyv2Q^1~Q* zy#=fXeNX*?S<_P*Squ|0!=H(t<-ju%BQy)}FZlRZxhg|XN&FpLR9=D4L_|q7MbR+Y zWO~_0(upj^=?R&B6hoj)hp%v;%n(h_MU?4j^6kMGu8~TbFdySOpPvv+<|0@b=Sqev zjAe|2f(cA=Nv36%qtvJ`^n4?RZA>#W`;{7rDAm{W+=n}uCt!vUM8Cs<$3O0d=rbXD zBLnwh*sYr&Dvjke8o^FCvD2-v?_)W{{)>ur(O+INzpw)`U%I%B&wj)>2N}Y6d>}ru zjfdNK>`%Vh#y9??w2g}VYargJ!|~36&KJL8z@;W!aG;BnR&$(gjO iaea%vxds2mLV_(l!?$G2uXd?(4A1=M^X87N1OEa*jj;Ft literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/api_registery/Services/GeneratetokenService.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/api_registery/Services/GeneratetokenService.class new file mode 100644 index 0000000000000000000000000000000000000000..973c76c03efa3ab1a821f7c8cb78c9da7b79000a GIT binary patch literal 5718 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 YJ2X?5QCE$nh5pWT-m9KRI&Ka43$!}z#Q*>R literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/config/CorsFilter.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/config/CorsFilter.class new file mode 100644 index 0000000000000000000000000000000000000000..dfc2141ba79e609deec95126fcb8eb92af1deacb GIT binary patch literal 2206 zcmbtVTUQfT6#foLmqt(UbrB!@6I%*2@qV*g3s z`WJj@7k%jRv8(^7mv81IDGAU%bY*4EW$&{u-`U?jzyJBmuK;f2m4-fnOBH)J<4B`! zNiS2et!=ZG$=Z(l*sOcf(GV6Gd2Q?&nYv-sGKHza*xNB( zfyw;8hPNOPt=etZFQ)R{F%?y88}dz4y57P`Qnz7SuIv>ntJxjHv=;nK26Foq+3-y2 zY8Vwb8=zv^nUz9EqG4R%^07g5bOaI`P0KTPW!ZF1X1ruswr2!}dlRnPwVFxT*X+ES zEoitPaJ}2Zj^{Np%lvfmRT*ixC~)n+bOUUnxGXTSRH;bU)w8zcId)xNs@LtedciRn zLlj8?F+GR`uEy{YJ{CCTN^e;jRp|)aP|&L)DS8frR(N*pq{>lT7f2rKC+oca;0=~y-?)$Q7)e=<+$49qOe|CDXbNvxG6B+ zV`kOZ*OzK^F-vE2cV}m#xOI{pLKCw zU1toR<00uyF7bv0#tz@OY6}ag=YD;B5knS_RDBd#*iCAOr&dzsK|IE?h9_h|cTpaq zS_~st5qS9jsOM?rsKs)9kLR2w}S5|eUEW=j=%G`N*d_6fcs=(7MHPsNxVc7uPBl1 zo_>alD%w_tj2mC#t03!b5E*^WaGzw=zNRJA&0rAfvn&{JBHmiw^it@vH^De~(9@ze96=xJS(03(SoxVJB08 TZd_Bm5y&2+-W3T1?3q#t)RNocGB^DW@z=!c&D9C8&0!=g*^q!HM2&$HEQO~!Hm&r zS+=XYrfucLl8l`lv`6Bb49jqI*GO?m)Z5WY8IFRLp3Hq$ge58H?*h8{@47*WP71(y&NNGGkh%yOxNT zH1;V7ZLm{D6mxN^ifRQ5rsCh|>CHhW zFe((x=`<~)yO13;oL-%Nl>ScYnLgby#j`(H(IPF3q8v3E&cJM1=?Mt5?2Dk4r1G31JW`u4B$JHwP$82Uqt+qE z&I)cFqo*HX1!b-+pm^{EuZV~P*-54>dp?%X|6PVVY^S#BBCTD+Ax9SoOtRu!V!Fev zuB#`9vow-k3kb$^8>f#n_NnMnaHfE>+p8NMMM&ckc5P8`szhws@%Amn2@$1>HS{3C z+(@!Ax<(g^Sur=xTGA-D^fj9nVTjsUBGjy6n}Ss*4syww%|<3?I8pTC5|P7~7VE`x z?Xz8QvllDGWtF(>5afHAg82ciqp-j>Ah>jef<>OlbEy}}Tb|7`FX~PRSwY3HgrMNO znK@CU_cY|JM6=m`@~%@zx{?kgpFvud7n}?eRI--^waAuAj3BFmb0ys=F_w3YtOg6D zZMj__i{^O*VUV}7j=5yEp=TMPD@nbngkN7UGi)ajke736OA>~qB#ImgA~egz-7XEg z!Q83Pb2*ul=LUG(BZ}8Iy^QiVXcj8=Xm|zoDu}qYH>uz>pIfC%D0>yIR`IG5x|Sf( zaE+`sqMW)JD}sH(bkiEuGiJ(%Aa;9=F!;3!j2i`xmo>$VDW2 z>E_U&ouVfc_6^_H$BQzuvl7hekuE(aJC=$!9v?K>U^rBaZJ((p47Z>lAK=w##-3Db z@>}hct~2bqxpt*zf_ z4-U9vIitR*wq9mN{W3W&+%@3ZVmONZc)Nyo2tI}A&TIs?@J)NuDQEwDoQq zxNu8XYkRlg*XJ}mjL)}l4Web*>l&=JQ z=_q|7*5C1AOo+#upWw6NGn{F&O6wo!k>?%mbIl(kLE9jktV8!&mV&R-l}n zcQ@LO=h_n%mg({H4(yi&L^QD51r?Sk9>Y-;-ym0lpad+@@J)P+9_L%cdRb(TZxFtf zLhpApd>7wi%d|&=*>dvrFN*8%0}VeE?-6rkTanef*I|-Z;>Y-@il3Z_!Cc`M@)~}I zpR+5pclWmSbhmbrQ9XTaJp*k$JzIKsz?s=|BDXyqY=4j8ml}SBUyGh2^(xpAd;%_J zkiYh%K`#>SoovokcpSe|@!J`WZ~<{DU9REx_yddGpg2pAwQT7p8EtkRZL-XYs;HpK zFUj6hWM|&CE@Yu1BZj@g#~hqlyKtgkAgQ|Q%7WpH$&)uvH^Kf3s2)rm$KcYuJDEBs z2%9Iy4OKm7ZgVm#iOMNSO&&o4O`ai>sc1Hrmo#Yh#XtoCapB_mop$LPGux>D*4!Pa zWV#1hN>biCrv;oh)^evppu!?0J-@UB3jNQ!ihb7vstoW(01~l2ny?E_(%5K<4-9kV z0mJ|Hvs@etXW|ME+Kyq1b4lD6r!KAC;zu1>D-E)&swAyY2ewLnc`9Q|STkGxVTgKh79vh^!Ex3?(Wx^t~@lJTQ1si!6qSjT|gw6DFJ4fe+ zxCj&n1wj!3u>%+R5G$yp6WtQz!(1#tb_nwiW2=Iu&;)w>W1-MN^c@fRoN@F^;M)nD zkS~*vLx*vBFyzHF3;fzrg%wypkabu|u&X)J!s~jhqv`FmQpC`M-BE@Vr=v(BhM5 z7{Fs;J41SB6OnADqIS%q6$`0$F}kGPt39RKo6tqTLNh%WzeaY{S$Ol0l-i zLlhGMO7l;FS+w?9KPdetXYB#(oItL>+Bpc9Kt{*$@^QTKHq?mlc~jSNDi$8ctG&6q zxZOfVVI3QPxy&aoRu>az4{;`lvzHQ=5a*?o+m2T3;N2A^vFa~k?#J~$=Kdn)e%#<= z-s)p+Wwc(88|kk%5N-|1p5^xZBCV*{Kl$Gx@pRqklm5Bh_s8~_-~^Js^2Lt?-G~yh|BwUVW5vqeSiau|7i8C;__i$L=MaOkBE_v z@j_QMg(q-3bN`b~6%)9FH+MCuF}3=D$n$&3F@YofF*R0k5T9y_2pbOI(}(a`+EM+8 zub^@Qk8<6Ynxe62tTGm<-d}zn%E$5Lrm9%gIKKV>_8-Ex?`#T-=zRYGesl=GIE>#Y zxKono0X)bMg=C1jSvNpuoxoxwj^YU!N+I_o??T)yjX&}( z%sns1pYUfUNrra(1%G7)--k8$8~)CEcMIwB6y++p|C#s){>gfOFC+Fe{>3DIh@aFw zLj0RHi2Cd4_)k&CGt}Y9KTCN*n+TMr@E|!NDZ)B8%)w3kdxC#Y@~>Q^9{(>#v8^bq S9EvEFqSZW($COY-<$nRfIuKL< literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/config/JWTConstant.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/config/JWTConstant.class new file mode 100644 index 0000000000000000000000000000000000000000..d4cbe0feec1110b27b040005765769688eb56b4a GIT binary patch literal 1193 zcmaKs*>ck`6o!ww&`c@Nm3>j!N?T}vvdzFSV-h!Yne#$bfN1AEjQW<2#^f|XO7M_Suf?I zmSfV9G84Ij5ggJ0@Kx#%z@EDc3u`> zlEBzNFoB7~fZM*i=DjPx41RmVndX|Jn041FyM7dezE`Uh;5;rlsp%>$zA__}Byi4Y zgzI(R3q3cmDGP9kz^Now`#d3V6$=r0)v8-@s*&SY8e48HjJD8+Q*jG$mB6YaDc4$Q zs^U1+yiMDwl}S6?82g(hTuavHbXTiBHR=P$tTQ&Q`)=Fw-SSDe8w8fZE0dc3_t8%JtT z@HR`5PfF)PuMn7R)CLuKpOS7Ws$l8CU3P$0?IF?W8XJbiF;5aZGhK9l5^UD1WepRRozOXnw@lzg zU2=+E`dAdY&oma=aGg*g2YNoHJTVIiZK?K`Oudj<74ec^2`S8L0>k$fn*>Hms?En? z7#>c*eRzPKQ5BNc(teBUkhOZ~X}YRn)@w2?EDsh(tX2ZF`u}J2(l&Nhn>D-%d_K7+ zwqko6=CSvO@wH6AB^ZTMNMlGtfE@|rIX;bi2F@OTKZiV(<7wpC9M2(N$nizw%Q?P+ zd@aY_U;C}ld?=zre}J4yXTzKy81P*ANXJywN@=pxV89y73YhQ1Z8BFmMn z@-P;i1St72hOUQFN&AQ)SDvXd=bQ(th+DW#zye`6L=^FWSRX0R zq%DEBjG(2dA$E3kY<%%VCi66L&Tuaz!ZFPLxy>k<(DtM$ z+!fuRex%QXM-tMcp#z<8Xg7`?6v+0{EOwwsf0j%gtpnt7$uhE?vmY?{E)5x`wJUWF zVubd^EC3fUN+*VkxP&~$XrHIkIIgtfuaZqtzM$fHvZc8}_ICa~CO%>+hwr%ybOm4% zebgsO{@E)cASVnfMAD!ZAjygVd9XKln(h$ww0VEN7BVM zEiKU9vb%up7P=Rd9=LSS1>L24(w6SM7ah?5lXSk}vz>H>mZ(?0!5=01dZT-6Oi2?@?i(G;a{bakZP=4F z(+9J*AH*+dkTOcX<@+?45x+JBwpUQs>t?JZmg0B~#|e(F zG}D$yBRWn%i=c7X3L^6fR<&+FU>-J&tmzCJy;;-uyV_=2xe8MA8;F#^UW9`h1 z4qDzGlV%CsB5h{(nx3tm^>{5D5UNDii##E5_8deLI6m>EECW$tz(a!o(+iHt*@+i-@CGjWz+u}J`PJ^L~%Mk0F6^N((;QeiHb81teC zyV%Prj8t2MfKt@m%HpIxhp?&KgR^&A!wg$*va1niqf0}l;FM~r9ifMXZnncB`HYTD zIEM<`)xW22*UkZkTUGz9SVj8h3KkW8aUf8Loj|u>p)qC#BSzpFW;W}NC((-wG@LKE zsv0}3y!77&(MHkWuJ~GDOMJ!Fp1B3E2HS_*YRW(p|z&N=Qcb=$5Zh% zGCkyaqlA3h5$t{JfwZMStr$0qUlVB!gM!_U(LPnEE3q=nD*k)c3vgcwGebItF+!~< zC+snOJN-Y=%GLt460H#A)h2>%RRe#X_^f_#5gHXyI!sW@vwEi1sqqmzYo$0npv6*zrj$yJ9r|c$h-<@lM>) zn8mo{>rI07y>2d>aaISZA)CywPEl^+hv#}niqx2j#5x-Z{VpVYn_}+`NxTJb)9_Zo zx$__^iz*)Jfi)4ZgosKl#)f*{>Z%M_$J_A^dL&I0j|wMjtiG44;(C1d{(BDs4#^Ot6GRAox;63K8laAx;DqgEQhDt z+A6+2GnR`7*%UsZv3B zzKXAF_*%)yQLmjRllWU0Tw3l9XzPvyVO{zRp%|kb$k!sXZ@-oP*vzX zlOe1L&Z?^TnY2}^6--W7_)K{o!jClkP;k<`lXd(UKcS^;zdIe+hY9Sg+zI?YV*^4l zqnssUu}rrQn*kwILNwYtTn}k0(HTzs){@69jVZ(@h2UB#$R}jhj>d}gx(_JASF-AIg6EU^I8Hna#1`ay9;?(CgoVFCQIy70~sV1e#Ot zX4$b8_S=*V``Pee6EIWGN2qe9T#pKN&Pi2uS1Ks)vj)qF6Z(|Km9VKT=~cQ=BDFD>SKQYnl8PjCCcYK@ys1^yfK+tq`;j26L!Tmqtmd4A2Uu zB`nJT(q(Z7lo@LcIe}f-@^hr53eaVlJdPMwC`E`q zmF66nv+|gJ8y6g`D&+A5$YM11WwX|>neFz5bEAag=>kHN73|3H^f}`Yo5igl|5(!pL94O>-)ANYWp2fmt^}NMV*eYkAlJj{?Rth}Re`DEruBBD!#KvmH z79|=b*@h?|R9)7h8sc-Ehp=+W7$NH|m8A=W$h@*-@@zUI@m1R^HBm)noVRkuyqOx~ zv||)E#Sags2~Il#M62*M76qa8N-{3Ww4WJ>3J6-ctWs2CzEOEH#|``GpzAsUHWa1I z%+C=NYhk%q?AXptu6+6tVJ*))CR*u(JIt}Lf3C?U!Krh?QTPp|Tz7<;fe>ctLUe-V zvwR9#ryPmU+vhlz7xw%uUz2VDNzVK{R00h1wV{i>)7cxWB^7$uTVqvUTvn~+ij$bu z)bgWOJ(j625WK5VISxk~dEdZmG8|)dJ7bLL;*2pC1{Gs>~jm>g5 zj(s1N-Oh&^Ea$J<3}oo>;RyJ|4;%3^gID#ozWpw&s9drlT%!0>a-4*dd9A}KSV_rN zh4)O*!`*M-CN&(nXiXlid91q^ZFy|C0~_l;gw2=KHlH_;N6)?3n#Z=Hf;ruW7J>mD!$jLn=98e=cX`TgU&kXte4J)mb&|}ucfZ}@;sh>Gj^!E z=I7+`yw3XeJMp5H`aE9J+3*%@?$qwUvgYesv?<(J%i?!!G;os|xJ3;tj|N^dh1b>a zae<;&wV$JI=sHSsq^d5C46?OF2@V``x4y9O!$?! zhN!gh-i-9-F*}QJXt+Erh ziGw%G1X~nW;GLmI-oz@Nj#ThSxl&G+Q&bS~Zl$bJ{>r;2$ZE=ylyPY#)jBMYK-zg% zk417w*6^-@lIYSQYY7||hIi|DcPZC&kOvKyGZj5m*7NR0{8Ubp(+LO;DdfSA?N3ju_2GKB~;eJi{{dIHnpJTGTUy~F0ms;5PZ(O8F xm;6h8p?zrW!we%8RSRl`NFXcurwmae=Y+qTByDc)8&PkJbDFR#6j{{ZHLBtQTF literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/config/MessageSourceConfig.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/config/MessageSourceConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..312f9a359fa892f301205c8e273761ade97112c9 GIT binary patch literal 1423 zcmbVM+iuf95Ivh-lDh5%w++2gE~O+5sR1E`2tuNTB7`YYTOz^R#@V_qjyJN`1^xyW`!NbLPxUe*FCQ9l(9u%ObGGh;BVXH{kHhN7j~NQi#n@CBCK}x&8OnvCBO}j_n~@)S zhY@dxk23n8Q&QrS>dlG#7xt1+`3+I^W1o0D4MVB8@?}UgR(og!((@>!y(^veiM-1L zvG{o~drR=JlEo~;%R%hoq}h~_viC$Fd0h*$C*oB8tt6}mqNgGTW-yk+Wzy0OcpNvm zI(pQRBi5G-CKj>8FdhrF#bXhY7z}d-=TH6im6oYetmd%7F!J_br~FX6u9~>2T`h8b zCJuQLsOO<8>-3o6)xfO(DF@Qf^n|MNz^`*9BMSbP0-m&=P-W~IiP>d#8mSXuhr1N# zb4T!-3@`c#-sOJLXa?3WW`MfW#3ZJ)xnZJ&+YF1OQYQuC*Ha{h&B8#rdR|i@Xm~Uu zYLvci|3REIHrg}1qKh6jByf6q==KexS-C>@mwu8}N5^lt)Msf{p7 zYnCjVc1HWi#wl`N>5zdztG)(IjHhe*fUF6!n3k4aP1D(+{SxgK{dBPRWM^p4pJC?R zDdwD#m2Y9bWG%OFrSyev+R^hwKzn7$JBL|{I7e$fMa#D%bkK5iH<^-WxQ-ii*AI7> zzH40T3~PkD?vyrKxYa_j3v)6}e~IvxDaJ|{mUWJ0po~q*FhjCvu6I&2t;Jp77thLr A(*OVf literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/config/MyCommandLineRunner.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/config/MyCommandLineRunner.class new file mode 100644 index 0000000000000000000000000000000000000000..9338423a4178fe17f92c9bfe3e89f5f6c405c737 GIT binary patch literal 2026 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/dashboard_builder_authsec/Controllers/DashboardController.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/dashboard_builder_authsec/Controllers/DashboardController.class new file mode 100644 index 0000000000000000000000000000000000000000..9fffa57fe328a14a703e39cabeb31767a0daaa1a GIT binary patch literal 3064 zcmbtWZByGu5Pr@EjBW7}r*WIUl7yyUNR+lfNKFU?NJ?shiwRBJ56s!R7^Sl0N+%dk zrXTx%+D=Pn`k_CdKdRF`$+kq}%s4O}`*f?@-Dh{7-Sa>H{`EJ21$>u6f?=!fG<8>S z%N9~MxOY@@xN98NeA6<7d&qrxo3EK9hazS%t$2~!win0&#Hxo&a0q3_mS zh`MA*RfT(O)&;|QX)s3}g_xI)q{wh}&$p%76bGhf)-17Z+m7VYbZn1dx#YMF-D|m~ z-FWWurZ{ojAM~2wwx>Vmb?LZmo%a;;c2jhGU2flE`bw;c^-b?`RlDhGC*)+G59V)`YvyDL*O}r_QYd?wV@f z5e~^Clk7eoupm*9V>O9{6y<1@9}9y^&fv}rXmyJUDccd1inHfcWLWH5oD)&gYo=|) zt6p(DS>~-)Skz49p5gjgZdJJAkQDA2k`3-@PyFZ$Pd;>vc2U)6TEj3#GPsGE6h2{i zaKUcS@Buzdqk#Do=FYTUwe3mK)Nl*8i8GE*U3ev=wCU&-;360xAe+^mGc&J^|iCIUydG&UXD~? zUut*=nubY2Pjq+{bpGr(Yqz>1?aBYnUI_nql)PGdn{r%^GylRQQju0Pl(9qCfFUdz zGKaPHp(32Nvm&Xtd(hTx=mtAgZS zPP>ojt9=jVVT$kqDMo_p^q_n_BVQ_jT;X@zm^;PC<=-$ne+qs67m_9rxx7Zf+`uHJ z1D8{wR>vjjV-ZVaH%*_r^pwCd=?~K-M+;MpA462^AzBF#jj4DQB1W-yaV1HCLJM#a zpw*pQ5uyy)2WBY&g#b+t#p6tLGrQJ53kp5Ssp=uRMO7uic zik(f28mDwQfOiYS|f{0wOR~D zl_Vi$`oK`>RGCP3VC+Za3_%nr!27X8q#XH*J{j#19tS*%*coLRnORNX?w%qG&dYq`sb@fsisMc_!|-s=Tt z%qdn&b`6_;?3#APa%_Q)idnXd;=Eaw`nAlsfVe2oKIYgJ*Rb7rqgXXnW+nd#fsmCG z=$yK5JTekR!_Fr%wrl3i@~A-kYL%&!%z3L~Ef&r5w(YovORp7yZg0oq#FC6tVf3t- z$mF=`aFc~e(>BY7Yv#P*1Zfpl>iOj@@r*RLyktszW;{JJmzldEpx8#q6o@rsJnNP% zJ5QKea&l%-;6Rfce8LEd6iqwt7Q#U1cLHrzrQQiLwLm9%)6I~RuKt0B7;CH?3|Pt7 zkDBljn<_e`Mdv}HUNb`~W6Y}s0=+s~(I&8a%CgOwYH86d&l#jv*5hQ^HG{pQ9vBt3 zV3F%nQ;p59r@QUoFmjZ|%y@+DT~|&(nartQM+}|hn9ym-pEM5X*ei|gRwdI&P`H0! zL9Qos>_?nrReZ9#`Q>70%OIM|8{ z7>{C%nXVlH-;It__(&orbi9KjQuS zWwTN(x&(QV)jmH^q%Ux*xsK0w6n6ynt(ERuFZfrI27@C|zli#+T&fkfk=2pI2?jZB z*_L}on(pbyqd=3fv}D>Wd!(_owYD_O$htVA8t#*`;a-`g7osTrl{UDkO~@8**cWZM z*DErm;UVW|xVPbid%i2uH>v62ByHj95t$s2wLR8xOE#T+&$l9sFJ<|>xmstPYB_68 zSn~YtsKsybbZt6YMWP~^PeUrZgWx=mH_$v*I2zoUBOc*x936YMqtf2Rd+fwUj*@g9lB5g{J;$M6ntJN? z5dle(K)-XxiB>rr?3cj%eEYX?e{`qrW#rMq6BYi9IXON8-vV&e!1Sq)JFS8HuYB6M2c)3fkjpJkkJ~OhyTs zOlt9{1Ze>%8rNzdMNU?D)1kTPXI-C%r^w(UOYXwAxWt1L;-p!aqAg5XvzVr&U=9B~=Wv-)1k3b&g;Eqxc!EEnq~R)K4x>G){fk{u2>lhhqqxBTns|l%zSzxY`lS^JB`TEe$hC?K7(H5b1t7G)ElIrOg zEy$Mr0IlQl3e*ncZp!PLTwu?%j-eGqM^xAMhu@ByAxIy;-T~KR)8b(=f3Sf~2*cx)9m0)JTM`<(d$g|P%eoy_5 z+c#o&Utm$vyb3dBt>OXYG(R!hmnWsXF>KovH5@}=C literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/dashboard_builder_authsec/Repository/DashboardRepository.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/dashboard_builder_authsec/Repository/DashboardRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..bdc8c3efb278a292cf7c3e07cbd1dd9a6af6bd10 GIT binary patch literal 488 zcmbV}!Ait15QZnKZrxSEqdtRRE_$j6!YU{QVHdnE({{|Jwn>>xm342#?&m-D={bxAzOP8NX*J*CzM zE1s8n@-14uC9tVrzrshdV5s2Kv(cet>&!i4LrOTFmRn5Tk`c(&pOA>NW$2e1vJuReyI K*oX0d7vKXVRiWzu literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/dashboard_builder_authsec/Services/DashboardService.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/dashboard_builder_authsec/Services/DashboardService.class new file mode 100644 index 0000000000000000000000000000000000000000..2eebca14d1e6aeba832453e026987a76e3702517 GIT binary patch literal 2407 zcmb_eZBrXn6n^d|5ZG*KX$uOXwJ+8r6xLd**dR5$Su{W;HEO>wH`zzM%N|Y$so;e?G-=aw#&VSy;plB z>WabK7fnBu$`4K%w#t`_(m&IW)88vH%*JP2`$Xx9TGUC>=^Fn%7cwVoZr~W;9Z7K zE*E}K1B%sAad}uRsJnNBI`W<8TsM^x0hQQn2;~UHrAv$JxtMfIN!KpRP*DNLE3)Bn z)e0!j@*55-!?IZ|>WbXA@FDInWDce0lw6l#qED!Hy6rIRB(>f4lxT=x_=eCy=Pf+I z0=1?Nx)ue=C4+Qsez$;;7JE&7H@RChVdG&2ACXv5dC&dV!pC?-caKtFxY^YzF-=HL zLsCvR61~w)iNSJ&OJzBzogQeX=_IGFSH7w<_{_o+5SZCH(aB*d>EF$PhQMg6Nu5L0 z`)TO=cLCj@ucV1NJhkuzN>p}IYL|L(P_2s6vya4{!@7kHY?5o(bv>77?3u4>-!CmZ z)39R%yF-)D)tg^g_*w&u5kPNq$HFf57_P{0JM29c(b#;c4}D`{9~J6GI&{t`38vSijPTfr;1&2!AU<((IAUAx}t}V)cXE5`Mq@DWRcP8RTj fYL=oiDSS&`>8N_+MpQkmjDc$O_q$%leGmK#A~|Ft literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/event_management/Controllers/Event_ManagementController.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/event_management/Controllers/Event_ManagementController.class new file mode 100644 index 0000000000000000000000000000000000000000..b94689b3c1fa8f1794092282be9a8a5d32afdec6 GIT binary patch literal 4128 zcmb_e+fo}x5bY5HA$bkH1qUa-#<2x9-Z;URfNvOMj4c5H2NK&c9!Y~3d$p_Vj-ZGu z4|zzwC#g!2R37pH`KVOR%r25ZYf8u|m3DV#db&^d>F$|-{{8E3A{r%`q6DMKqF1qf z!5vp9TdWILtyH+n%c6o$d(v~2?>Ua}1AEFW=Ie`%wG<^89eT~zx$SVbY|j;5i=twb zS`_}eEDA<w1bS>A3-;n>o)f+d+NMDqo_CVG5G}w8r))*bhHJn&fS{+12_osb{ zJ2ioA-Rt^;QQ!HuO*VdH)N@O^Qr%(Hl^t4Ql$`WRB12tt#G*dxXVjmQu9&S=3c`QN z;i`t^6}hv-eW}OMWKyk3_&&9FWE&*42Dh;WxV?*fU6i=ujNI(rI;TK{+HA>(@uAMP zF}fBT;SEu+3(_q$Q#bDgD$lFckeS0R7#N+~nJ4pH=Ytadj)ZC7;DY$RCIWTeD{YRa ziP0&Gx~V5aXXspt&N90FUU_ZNarzJ`5XSv_r}0Y$;0_g-7i!Hb)m=t*^wg@*jkTXT z>ttQL&q(2#ZBi^bkqntunfrotbHm;b^nTvqu)q z&|^l&5R?hWS(a)INg%;KPA*0Z*|u^!(eJ2t0##n%>nMGI)J zt(G3`n(EjNt_fk;Y)G%B0#Rgi+*aNj;kMLQC>lkeusMSU_9U)}ba)zTkH53%89irY zm4t({bEUAkqWk1PtQlNkZp3mP*E=2ZEP6G+C>~0E;W_>8yXF;L z@$b6w#hHxCaogs8ZX1)n7X)*@L^&a?*zo?$2CC_TMQ72xbPr45hZ_V&DU9^H*UY9V z6U`mKTmP+q4q_2}Q$L=EAZFvu@a`V|gAV^@_8rAjYatq-V|ZGj0DXY5ZkV`WP}11y z!)OqH>p8K2PS8hKPicK0<3nrD1Db|-VEA`Bd1;GI=P&cFu&N zksWNJPv|_9r6Knzz7li+Qr!&G8U{|=CKyAQ31JKy7zY!W&@j-S@zh|xf&L`kmH~5l zi!RTO>_&4Bs3r`W;ZU}Y#){DBcw9l)5(fW8;Oa8C(g}m>iZS^aT?Hkd<2ylL)I&8| z$9T1zd0N8$Z7|`? zGG-Xq+}rxMZCYP~_2qqAM>9i6biL^sXb>AFpQ(ZEwA)<+FIsEhIdc4k!O&U*I@iJ) z$T!zOm}ls7O)y?Tu(<|yz?eWZH4o{i6nUfALmFNo5QU~dr0W@zHVKcT9NSTT+H``7 X=2k;!wf z4hjDhD5dyHv3pt6*0sW~LptNx?FK>r(UW$8d7z;Rz zmP^*Uh9Tu~C9^E^)H!?3&Sdj+y0eYpgzeZh%eC`ra)R`_E91h|P4S#*?&`8F`0TOi zQ*+t51r2@6H7nZhlG`{l$<5Us@NK$g<5sRVVHWJlS)Jy z!k(!&Z`X6R(y~OQVP~7Qdx<7xv}`*Cx7Y*3UgJm>ahXKgqJ~JpcC+Lk932ZRrj^KD zej>BZtgNnrY%};iJ{O9fyVy0}1qM=s#I<>{Bb13wCYJ;%-Rb)f_k4 z;&yZFE5mNF#O=BFWUyYktu)TNg`u3;kl}6X!t!%0YnwDMfUPVpIvr^yTr3#_+r$#5 z<%G(T-=kywjySn z9D8vxI?9dc7!yYl6C)9QD-zGC5kPo!QFx>FV=Gpfi&;1E=?fR_oI5qPm|%#f4V=LY zqt98+w4gQo#$@XXroWzVE7Y&SIT%`9K*yBkbFz|Ly zdep!>Jn4dgdp#*{;N2K!%~#hSJAZvld(|!4H3ltJI3k@zR~jX5RmzRWcbf;;sP0$b z;3-adz@VyEff}dV@BocrQW;w(zRxqa6mbRc`ar@ndV`eb8QiKZzH?BQoOP|-r5S74 zKYDu6su$(hYG65LWeYxR;6u2=yqr0kotb9hvfSdDU0*4?1gWg_k8BLRcO)2NY@`uT ze5AGZ$cVR8V`N!}iwJd)oU~O69y=)A4x?+cv&tMoW1X&=dHAfiL11 z*Lkqyl-$Fj`m%wq;Av@k%geSj(mlar(WuVANn1DFl#Z|QbWIMg4^&O|4PpM~2ExWU z+l25L9>K}sR-O*&c$Noha@b22hu`5roE&asjEe8EEGLI0Z5%w$<49|3JE{ADBJldU zTHFh=xED3-=Gok2EiZ9j$0SWZHt<dM?GMcTf)N=Oml639Cjd|ZI zyVU;O<6Q`*a0kyQ-#dt7CnAV)6yqoaoj<-DI5s%m!cmgXK92isq?CgFSwY#2)sy{K zJ=t&7lRZ{F*-(8Np-c0(GmBkhWIH8bkP5aHj)yst72Lt+o&04eYkWq=e~r6-Ng;%{ z@~=R^W!Oi!&J0kYH4n+I9BVxEve8G$mvS3Ej5y3=X#lR|(=}0;n0G%^q1f4VWbWA|H z4~nJr0O-6KC+NJHNXG?~@Imo(A^=)4dkI=HjdZVo3?D=(0J6*^L6+H!N@2|5@3=@Qf<^olmncPX6*o|(6vHR*GAfjGT*K3FD8=z2oFF*Q&%RvX=3erUO6+a zOe}lfE3Qnt+t;5|1OxW7)q}s_Blsw@6~Sxx7^M*JP&e^$W>D(y8f#1H?<_uzPg07o z&WiXHr6``{hCNOxh8J)T?NWcQ@Pqg>l;To3+T%#Q&TCl@D@WrEOnaU4_=Av)wj!)d ztRrRZ35*qB5RnF;feEiy`LJjJ)YI}Cl&^tyoslz)YtH(fv>LN>y#Jx82FYapA-4p zo_t>9=RA2yKOFcGXR3#unn>>9X!4<(ja zB*EXpMSb8^)qA{pdw+QafMeK8pkv@750#CCC6id15zAeLjE*X8?U?G&cnNWChYRd_ ziLIanHVq64oS`j|oxPbBluH6#11BLm+tkssdx%)kQ;3iD9tCYtqtY&~k7`^UG|-=f zHs*BcOEPfqJN3~gtAXCcJ4R`vPCsW~m899fRGemiS~Fzv^4*qnjsA*-9L4l3HLyQ! zb)lkL-}q@s=gdJ+eBj2w;g13vp-4gIHLblNRZ|UYXl&^dLAykA2ezTNsD0Sc+EsiP F-~(gfqc{Kn literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/event_management/Services/Event_ManagementService.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/event_management/Services/Event_ManagementService.class new file mode 100644 index 0000000000000000000000000000000000000000..cba109a15a92acdf37ff7b1f5a5c94e2f2f63e7d GIT binary patch literal 3067 zcmb_eTXPge6#ja%Vae_g2saHz1ytN5z=%c!7K0%P5ZGMELO@XC>~3e%usgHP%m(x5 ztG`C8thMmL^4T~4kmYw~_Ld9L3f5H3>FNH??d#L0=g+@?`yIdpzE2^c@OjCr*}itF zt`2Rzq1|w`=D1Ep*EqBb+TSoG9oVzc%6w;~wU9zm;m9**!?CN5Td^05&vYqNNH6QU z7nsoVHx*{`d-~`?cX;V8xE8eJU39dlK1?I9n^i}R@Qu{ zreApebGxV=H?Y^7lEh&<9R+);5qd9-ugf%h;JR^5IH}N=9bHjKPJ3mYMjsAY7(iO# zaNf9jp;0Sp|A9ll3Pubue{_)A%)uKwjQtOaH?8;WWx0&r()cw?i7}@yVjlfx65A5 zF|JLxmNH?IyOrp6C<|bqU@COb@X6MX|GR_h`(tG?CpB@-!iPAkkXkctnS7AzI`dN) z`%lS5Jg_;C%(4z0Qzf%Uv#s54gr;ieO%RfTyE`UdE9{FB_PD}e*Ku)kuB>pcw;1Q# zP*=3S-_s-fd~D$pOz;c~KQ|*6*6sy2?skEpDy~=wxq9ZPe(BWblQBDcs~9#Ts!A zCwlSi9M~%lH0rEhZvPMaY*f1hyU*U0#t3d%xQ#msLu6^mXV>S=#mg)#t#9Y75XwbC z%13b5!ad}v6zo*ml6OmIbVallEG&wvLv%G&t{HdLWv`Hx`xchP-XYrCy7IunL(v(a z&TZdoxMjgVvhY~&1H^Y{pICS**bK2Vq*(4fL4R%G8$oA??w$YEf+P48@e8d;N*2n3 zO%dCkTeDCRoScLi9h7_%m7kb47M=-wP)u)Ks#>VQWm%hGimXZ-=VkdswCWbVgCB?A zUQ1@5$W7YkRatAvPzUluQ1BXlN#8PZfsVZ5Z{ng9zQXQ3FJLFuUbtD;?Z1*7&hWU#>066u(3sq)bur3gt_xU801^Pz+pas6$5YtL;T`F#4(~o zd6`li9U1!t$H!mdWCDL+Wd8h5oQv(GDaFYkK8kFej`1y9)Wkb@mo^89JH=4~r-|=Z zoEBGSaFz=1ah$;Wk;@w#iOEdMRW)Sqe62j1v~y zKOfnj;H;#c7W*%8LG3VqwTF~+hZLI$#-z+rN`ynL2rnhj#HZwCdz_O!aSnCj96}D) zyK&~CI6uc^%ldT7dOQCc33PWYW_y~OJJVx3)3Ke|&Gt0GapZqd_S4@}iTwOabRu84 zFy6#$6LTWxn^+QAXkta=mrZ;na67I9B7uatfa^(@*z~d;Fi8!=QE>ByP!*HXl60~#|0c)s_8hr>kN=Caq Tkcg^Dm`tD%y*D~1;sx*z`ve!R literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/exceptions/GlobalExceptionHandler.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/exceptions/GlobalExceptionHandler.class new file mode 100644 index 0000000000000000000000000000000000000000..f42860486bd64699fca5d7b5d43c40d36f17633c GIT binary patch literal 3373 zcmbuB`*PDp6vn>|33iOi#au$5Edmm-A)sD>0D%x=LP(n%4mC|_OV`pyQII8fB`3iD zeSp46OJ_`5X8Hhqs7}vHMmC93oM|$)tjnJBJKwpi{{H9BzW`jpiwyc0E}4Gakb=9O z2o3Sv6phgFy}+1p{Tg?t-(GmYJwJS7F86F>v9>PEkYSJO+YI?RU)o0C zu3lL;=6u^0a)RMxrRjxEUCeqLPTcamwij*@Bt2Fu%BUQtDF1W41M`R!$BNk7_>zgyJr|J%ynqXE)Rl<;&#eG zFdWt}fV~U{<{VEfH0w1XA92Es!ZNvA<iBLXXR?+;+yP;+ zp+u$xS47aDGz;=R+)hw6B|SG&5jI85s5zcx@FbN+;=ElcWO!hMyG_#XMyios;>h3( zL!sALayX6SgBZp649+o3^tx{3tr*Kxmd#+=Yt}UsP^1W^E0x6x!|k5+OtCegxGriK z!zHSvK!iyWVt))%h5u#0Sk1w}rx|?0FdntW?n_3)XZV~!qt>bTepu$sfHF5!D0a2a zqc!PosurM#u3|icYgD?O?n-WJxQ-hPIkGh`f`Hp(>Bu{lmP1w3kuVb)Zs9f=>J}zh zcC@>F+pCJz4DJwH$8&t+ZqsosA+spa(22*Fo>ZmYE=&EUp2H-{s%3Ah#7t|ruV}NO zADdCPA844x7YuuOqai$treqpNmo)DXP+XIk-iLWCX0Sl>a_hL#u%trncf3`ffss7@ zlKPS1LeF(T?R9WogloRF#MNjBg{0AQG9Dx)(@~hjMV3L zH#|mT5#D1`HRXziZ&XhWE-XGRmCMu1%UOI&-M!*Br5=;$PN2us`jY!nH+?Up!LFCA zy5mvWzQ+$4JY_f=W&XciYTzoXhoh~4rnmD_SV>jsu}oy&quq<9p%klB@0NJG+c8+_ z!&gl{+M9$I8ZNyP8(k8_FJ*pHw)8MKUW*(O+3$qI|)Ygvc3Y)uJ+Cd@#!%}y<%*KzDq}{BO zaLHr4Q);BE+jg{=!;dOT$#AAK9d>$}Ce(72!TZz;$;e3X+5_XVGQ`mPMp&k*l|IER zOV);CsvUOcEN|UKsi?w^0a~ifQjN;!#YIqq=eKWFG{fjMiQecKPN+8+I%eoh9kbCf zi$Ub*Y#*H!>8Sn&^XzwMzajrCo%G=deX9kaUq_=W${fAaw3iulRCfn1yvEShB}35? zEq(yQM4=X+#D_%n5&hmzXCKq&)Dtihdc^S)`XlD?H#oiW8fWLnUSXt#3u6~sxZJ{( z7H+;m{tYHq@>8#IcdUhbEzGp=q!`LqoqoO`WA%k3I$>9NVd4gPCC3h+cJ$BJX z0><%>t|?gzRIp5OKcc4wXfV=&;VV>Ai62MAKevg?UBq82;t28yK@$3RG2|}k&l1rH z(U0OB{g-gQi@u!DmkIN6L_e{ez7I8+sq|JvFWdBmgg(L+F}9sxQySJ)P#uBuv=Ss~ z7T0i!Bs@o(dq>$6sE5g&$@aphV@%#wSq+F;H9!~H`%m&H06VD{^+@ZJqDGZTd s9iHKYXP9{Wi09CDo;?W2TOY!xKy&n~N#`5%*`$xE`cZ1D=TpP~0wBts)Bpeg literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/exceptions/InvalidUserDataException.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/exceptions/InvalidUserDataException.class new file mode 100644 index 0000000000000000000000000000000000000000..d93a02b9c7a94d3b2ffee85e75907cddb5ad0849 GIT binary patch literal 511 zcmb7A%TB^j5Is|YngW6-Xh>YR^O4w?xWljkO)%9M5%w3Dz%}iyX>W{dNN2k=_;$v zzA7$qgyx-^D?e0b>fdC>>WIJVgsO~a6%IK`g=x_166k_Z?g*__#tv1Oab8YXJR%fM zwb8assP6?oynUN!Gi~h;3As)@VGk=`bSGa!i1v4CCRkKJK_rmhfgR!E_*6sy=B&u*&?cf8y{U*M@^9QV*{JQ QRF^nU0v4+pVjXO~12*G*F#rGn literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/exceptions/OperationResponse$ResponseStatusEnum.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/exceptions/OperationResponse$ResponseStatusEnum.class new file mode 100644 index 0000000000000000000000000000000000000000..38a46d13b14931bfcbdd31e896298302424b4ac4 GIT binary patch literal 1482 zcmbtUZBNrs6n-vy={Aati9_DRm#N!8CW`p7v5YL!ERIcAm|6T_%D6&F*Dh^GddS0G$?z#8Z?{6mnmXVh*#E@;7?Tp1$-QZ4!e`@iL zqnU=Csdc!eie;VK9a8Yb*+Owtr)!stZd-z%;mV%6uV!@B*vSYTgQRR0izP*2Sgi~Y zJj)O$)$6r7MSQnbua>K?7{b-shqZq6;Zk*TJ<(XJY?dfj{{4W-Lb;Z%8Jd%4@Fi0X z27l4q<{<K7T!&Qc0u5S`gRxavR97{8HvgK4GOt#l#1P}~C65zTFNq~?5(=tK= zgax=EBaEO}-INi*FvDm?GkCSz-s0AVx}|f5SjB9qdPB7|fn8+;K8z7LXIHZsA_-1C zPZ(;OtVd3PX>DtUsxw5_xwC6-zfmpv?Qo0igZrx9<+LayQ-d`uf_XfUus~@%jX1C! z-j=b54DFR_S?WQ{>>Mzpz3r-P?eUhAEqgk6rlJ5V$ zlo(pF^wUhs7$LtagdD=++4v6DjE(w^5Iw}W3*vqkOt@e&;DRX^%miI9EBzoRUk~F- z)8E5{(hT%4r8I**%qoYN`$}<#aErb{$_9+$wyP0ZI-T?t43>z$s6a~3&m7^--<@PP zfP{o71^4L<58-YUxJPdoNu>JqtWXz3w0IA5&DXy4Ni!!%uKT8skzV*hf4q#?IioO* x*ixTSnxxq!ZK(thDq8&F67G;~!*1N&RQ)Ud z0QtfPol!cYGmd_#GyVpDh9A}X++?%7BwA)VuzT-4_w2dP^PF>Te*fpkp8?#!r!hnX z(j{j<=Ss6;OFt*SEXk^GIkuNut4h~Y(+%lWX^=5!0*Qy_V>4GV?Y-RE&O=%91ui;G z&rRR-Yo5UD%6VgsHG?-kU9xNY1%cE?&GxN*xn+6QPDL)*w!_E@l|W|2a&q1m=H8xk zbLR0*ZlP)won2X3cNHH0E5?bt^7ESI%H1gW3W5)j7NzHzdr}~|a!hE`cP)F5-zE2? zAJT7_+ z?H+O(JmVj3^e|%SQPHdhiH?^|udIqhAezoBE7b28?CrM*X?A&z@2iOG@hv;ckmxD^$V1WOL!fKZsktS2+fuzZ*us5UNhM$`+ic>+is^aMi{XJl;RUWl z)?8EDMnS22lBG#>yx1cAe>oG;KYULt|Bi1G{`Q4q2dKOp%XXRVM1 z8y*291-Bu<%kpj7D;WiX@ZI(Bycybr|C7j68p;#dZ=h?36Td=y z4Ly1|@e4$8GJAw;^(7~-u1@lm*QS0$cS?JT-UAp@DeVa9rbjlf(#conr_y{5vF_4rSidyt%ef?JCD5tfq6NBBUo<&a$E>j>-r q*OTJ`L80!rHU}Nw5>K$%zGqI~5)phO?l&}C6j5NMapL@^ox9?xR0(gqM4O9p_W0$F%b!s^%{y64&FwS~)#NHM8 znENjDTwy0Kf0Y`j61u1QT&q;usX8ibFc~lEgjLVE(dm$LFHk414+!*z(AgK3%e{YU zw;j<4o0pmmjW@FG3u|4_rR;=fiOZ+T&m;K{alnPk&(sBv)X3P0(u>~sLUU1+2XeRY zvU2S_3QKtKSBO~%bM;D&MgNul;qm+4;Yt4h_aThqYoLo7>S7xbRj@3cutQ7ywq*9i zR>an~9)CvXQ`xg3XS2+<lLK8-lbhevKrE;2Y(66Su^6q_`=6 JmvI|+egH##vZeq4 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/exceptions/StorageException.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/exceptions/StorageException.class new file mode 100644 index 0000000000000000000000000000000000000000..9bd0874327de82ab11844d527726d93dd90d72ba GIT binary patch literal 842 zcma)3O>Yx15Pe>fEX@ZAg%nag+9DxnitvR4Qc)$;Qc<*|s7Z50PGS;6Vn?>O;cs!O z#DO2ck3x*MAw?wzR$9-F_sx6rW`6$q{sX`ZJc6MQW6ke{U5tI6emhMJRBiE&q2M+~P&2Mp{TLuH@nywJWY#;MGc zba)s;;g!%$$whgWr!!zIkFoV|LKLSy_bGu1|NhK6Y0qyLvu;ff0cGd*33dr zT8(T|ZR%(U`LnPghQ~`OM&3{PTRIl_mDX|R zi}C|WRlj3b>vZ?7*iJEI=y5HC5mOb*`pXyEHrn{QTdi(s&p2!+Y;55QKNkA z0)?AcrHt^nh1tdQzMdN(9CvGp6EB*xXH;f4((U1(1fZ2Q&e8KX<8z3&6wTw6Lev=8 zy$E?G;LKG%<&UNwa`pe$+pX;>P(17CZfNY%DrY-&^r&G;2ZcGBSm#-0*m=@t8Q8N6 z-wURP4ejGCWDT-ipd}}Heu+InBw0!BZr@`5XH$+O)@2~V3yF(Ug5)JZ3Vke#$cmi% vf?mou_zG2GwGn(LxW3ySto@MG5|Mv${YP@`nOqC&4QrzjjD-JM@FwsV(Bh$A literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_DynamicTransactionController.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_DynamicTransactionController.class new file mode 100644 index 0000000000000000000000000000000000000000..da2902d24251ec7d0aa80388b7dc09d9d2e25cf0 GIT binary patch literal 6857 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 literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_Forms_Setup_Controller.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_Forms_Setup_Controller.class new file mode 100644 index 0000000000000000000000000000000000000000..ec672519de167dbdf35512f441efd88ffeb159ad GIT binary patch literal 6509 zcmc&&`CA*;6+I&f3&cRYLA;kbwgY$>Ct&Ov+X==vRs)y-#<7zY57Gc*iy38R1i@*V zF6rKMOVd4V(tU42T-(HLx^L;e{X6}7-kXt-#E@@DzqUU}qj`Gw-Fxo6=f3;itN(iW z6#$+1XA&_5of&&Za|}Ia8J;$2WwnfLd5)dS8ICq=ji0ui8Fzfd@Cy0y-qJrwBowT@ ztk3FNPPeACvlEw%jHjU4vBoE*gexUn!3U2E+En~1SGhsNRI`t}8-*0F1+?ei| z;yoBlc+(~g=~{*>iu-6r?Udn3-zvD!+P~zDrNa4<|Y zyZcRBbLaFau36?0SL?}}XY+<59m;t%vwE&TtPTC9>$TXEErD&dMHLF}dL8OJL*q1O zOlT7(Q>`pS_Zi-Rp3gI$w5DDYNi;5VNWsp^L>SUVz&*pM$cV1Unud)>3Wn>+WvDBW z*QW?v%^H(>A?JyBn@ zw{Yk&6~{p`tIQPve}pB1v}}*2t@~ozSUv8=$s~Fd?26)F6}>p6AVplF92yp@-ul)y zpRNVZ%xQu_(zeqo?!y@dl(wZkV}^EZ2&ld^QPiLfA!KK|iF~35nV)0@F-3PEr6|m7 zR@*Q#Y%TJ(hA3xRR_Ap^yaI`(0zic)(#lnw4E&xnT}D5k1h=?Rj}^IH+%ZQUe#P8!@LW-77ex=ebpguEyvTD^!av>!N}?BcdhNvQnl!W@aB3 zdq!BIg%!mi-J34%JA@fCvx1Kgt9T3Esvt?9`R-~Ln5+32?*9}nVIm2g7{aUw@vn*u z7?PNMMZsZadPK2ZC++O~$%2{7ayP5TB&L&K7I(Z3aTO*mlMoYJQNi)@?b2^NR;U;u zVCY39t)Q{8Pf@Tj!xqRhDjOaJ*>YVYo@h6^BRV>=qiE7o{{uCv$@RvbY__GRWzd)l z^8HX~)I(F&cFQ*M!;$5Jed~;&i+o`t!k%r~cFe1?Ls76v*2qUS_9-T}Ew+Igw`x;# zbkU6ql!(k^N_JsR#iL+KC0u=$rDLcya%`iKtqzaj@g&}+;Eom3{tPRc*tH6-inrql z(zM|3~v` zxY}?|`iyiHEj#{ewJsw+vS9ugJ?h;G+dD6CXJejif z5zSBZl6XoYFP@4-h(4#{^Y{WoO=D!bAmgnE1n-$~-ztj`jk)I~iizKieiNS!aR z06$fHR%G;4~X$NB>Pq`*zvWQzryj*dmGBWS-%%I{&_%R)8 z3&%G3z-#^sAvj(NKf^DQ_&E)c5Gq$t@k{)Q z)`;5_FUN}BR35+}pT$9`3%^lu4ZmfI&}}@pq(E zrtzupS<`+4>WlmlLnFV%WMDULTEi*ZvBSk1&~i~47!2+dgLn9Y!k(L)yN1uMTiA8s2KEf@y^cHg z@pBXVk0#o$p<{Dm5r<+pTC;z1P2xJb`B=m~3a+DX{|l6iO8{HsDjh`Ji6$JvPNq;B z4)g7Z1a-pK5`dyUnwOS9yEr#ZP_?}Mcrzi1<8&&F{47M>*|zcjdi{c{WW@*=(&$N2?(zapGI`PNJEaTDWk zkkyR@dmb+mYBL#eI~Hg_kzoGFOB@lAEhX%=GIIT}gl(z(T$glOC+H-q6jStuUw%Yl zKF!qxr#cpJbNwsV@za1?zm6dQIk0aT$R)=4Ae&{}OxB6ZEQwcG@N(EgB8igev#+BB zw1e6O`?dt|VkLO~$V)UafOmu9ar}+A88GqrTf0e)g RhQD);DC?8-`ajmx{Tr;fLQntz literal 0 HcmV?d00001 diff --git a/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_Function_Register_Controller.class b/calculator_app_20251020-calculator_app_20251020-b-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_Function_Register_Controller.class new file mode 100644 index 0000000000000000000000000000000000000000..184d39d7a5e1c75c71e4f8383c2565dcff2f2160 GIT binary patch literal 6074 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

8CeP?S*z?nlw~cT0kcw!uRdI}m4J39thhZ>Rv# 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⪙t2K%LxPNr-ae6i!E!a1B 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%0DQRb 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