From bc00515c1b32e6de0ea014901acf3e78b959ab92 Mon Sep 17 00:00:00 2001 From: Narayanan Madaswamy Date: Sun, 2 Aug 2026 22:32:54 +0530 Subject: [PATCH] Edit case issues fixed - Now add case and edit case are working fine --- .vscode/launch.json | 1 + .../lib/constants/ApplicationMessage.java | 3 + .../main/java/lib/models/EditCaseSummary.java | 19 +++ .../main/java/lib/models/LocalityData.java | 10 ++ .../main/java/lib/models/LocalityOption.java | 4 + .../lib/constants/ApplicationMessage.class | Bin 6468 -> 0 bytes .../lib/exceptions/ApplicationException.class | Bin 1010 -> 0 bytes .../classes/lib/models/ApiResponse.class | Bin 2587 -> 0 bytes .../lib/models/ApplicationDetails.class | Bin 16866 -> 0 bytes .../lib/models/ApplicationSaveData.class | Bin 1774 -> 0 bytes .../lib/models/ApplicationSaveResult.class | Bin 1455 -> 0 bytes .../classes/lib/models/CasePunching.class | Bin 4047 -> 0 bytes .../classes/lib/models/CaseSaveRequest.class | Bin 2188 -> 0 bytes .../classes/lib/models/MessageDetails.class | Bin 3245 -> 0 bytes .../target/classes/lib/models/Option.class | Bin 1353 -> 0 bytes .../UserSession$UserSessionBuilder.class | Bin 4111 -> 0 bytes .../classes/lib/models/UserSession.class | Bin 7725 -> 0 bytes .../target/cygnus-lib-1.0.0-SNAPSHOT.jar | Bin 20966 -> 0 bytes .../target/maven-archiver/pom.properties | 3 - .../compile/default-compile/createdFiles.lst | 12 -- .../compile/default-compile/inputFiles.lst | 13 -- .../default-testCompile/createdFiles.lst | 1 - .../default-testCompile/inputFiles.lst | 1 - .../lib/models/MessageDetailsTest.class | Bin 1217 -> 0 bytes .../WEB-INF/app/edp/punching/editcases.jsp | 71 +++++---- .../WEB-INF/app/edp/punching/initcase.jsp | 136 +++++++++--------- .../build/WebContent/css/add-cases-v4.css | 34 +++++ .../build/WebContent/css/edit-cases-v1.css | 77 +++++++--- .../build/WebContent/js/ajax-dynamic-list.js | 86 ++++++----- .../build/WebContent/js/appjs/editcases.js | 68 --------- .../WebContent/js/edp/punching/edit-cases.js | 112 +++++++++++++++ .../java/matrix/nimble/controller/Ajax.java | 15 -- .../punching/controllers/EditCasesGrid.java | 60 -------- .../controllers/PunchingController.java | 79 ++++++++++ .../nimble/edp/punching/model/CaseGrid.java | 27 +--- .../nimble/query/DirectQueryProvider.java | 21 +++ .../query/QueryProviderConfiguration.java | 12 +- .../matrix/services/edp/PunchingService.java | 79 +++++++++- .../services/edp/PunchingServiceTest.java | 31 ++++ .../java/com/cygnus/db/ImmutableRowView.java | 2 +- .../cygnus/db/JdbcCygnusDbExecutorTest.java | 12 ++ latest_queries.qry | 8 +- 42 files changed, 623 insertions(+), 374 deletions(-) create mode 100644 cygnus-lib/src/main/java/lib/models/EditCaseSummary.java create mode 100644 cygnus-lib/src/main/java/lib/models/LocalityData.java create mode 100644 cygnus-lib/src/main/java/lib/models/LocalityOption.java delete mode 100644 cygnus-lib/target/classes/lib/constants/ApplicationMessage.class delete mode 100644 cygnus-lib/target/classes/lib/exceptions/ApplicationException.class delete mode 100644 cygnus-lib/target/classes/lib/models/ApiResponse.class delete mode 100644 cygnus-lib/target/classes/lib/models/ApplicationDetails.class delete mode 100644 cygnus-lib/target/classes/lib/models/ApplicationSaveData.class delete mode 100644 cygnus-lib/target/classes/lib/models/ApplicationSaveResult.class delete mode 100644 cygnus-lib/target/classes/lib/models/CasePunching.class delete mode 100644 cygnus-lib/target/classes/lib/models/CaseSaveRequest.class delete mode 100644 cygnus-lib/target/classes/lib/models/MessageDetails.class delete mode 100644 cygnus-lib/target/classes/lib/models/Option.class delete mode 100644 cygnus-lib/target/classes/lib/models/UserSession$UserSessionBuilder.class delete mode 100644 cygnus-lib/target/classes/lib/models/UserSession.class delete mode 100644 cygnus-lib/target/cygnus-lib-1.0.0-SNAPSHOT.jar delete mode 100644 cygnus-lib/target/maven-archiver/pom.properties delete mode 100644 cygnus-lib/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst delete mode 100644 cygnus-lib/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst delete mode 100644 cygnus-lib/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst delete mode 100644 cygnus-lib/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst delete mode 100644 cygnus-lib/target/test-classes/lib/models/MessageDetailsTest.class delete mode 100644 cygnus-onprem-app/build/WebContent/js/appjs/editcases.js create mode 100644 cygnus-onprem-app/build/WebContent/js/edp/punching/edit-cases.js delete mode 100644 cygnus-onprem-app/src/main/java/matrix/nimble/edp/punching/controllers/EditCasesGrid.java create mode 100644 cygnus-onprem-app/src/main/java/matrix/nimble/query/DirectQueryProvider.java diff --git a/.vscode/launch.json b/.vscode/launch.json index 95e6faa..eb1e198 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -61,6 +61,7 @@ "REDIS_PASSWORD": "M@triXR3d1s@6202", "REDIS_DATABASE": "1", "REDIS_SSL": "false", + "CYGNUS_QUERY_CACHE_ENABLED": "false", "CYGNUS_CLOUD_BASE_URL": "http://localhost:8090", "CYGNUS_TOKEN_URL": "http://localhost:8090/oauth2/token", "CYGNUS_CLIENT_ID": "matrix", diff --git a/cygnus-lib/src/main/java/lib/constants/ApplicationMessage.java b/cygnus-lib/src/main/java/lib/constants/ApplicationMessage.java index 43fb7be..6c5c11f 100644 --- a/cygnus-lib/src/main/java/lib/constants/ApplicationMessage.java +++ b/cygnus-lib/src/main/java/lib/constants/ApplicationMessage.java @@ -42,6 +42,9 @@ public enum ApplicationMessage { "The application details were saved successfully.", ""), APPLICATIONS_LOADED(200, "APP-2002", "Applications loaded", "The application records were loaded successfully.", ""), + APPLICATION_LOAD_FAILED(500, "APP-5002", "Applications could not be loaded", + "Cygnus could not load the application details.", + "Try again. If the issue continues, share the reference ID with support."), APPLICATION_SAVE_FAILED(500, "APP-5001", "Application could not be saved", "Cygnus could not save the application details.", "Try again. If the issue continues, share the reference ID with support."), diff --git a/cygnus-lib/src/main/java/lib/models/EditCaseSummary.java b/cygnus-lib/src/main/java/lib/models/EditCaseSummary.java new file mode 100644 index 0000000..20a449b --- /dev/null +++ b/cygnus-lib/src/main/java/lib/models/EditCaseSummary.java @@ -0,0 +1,19 @@ +package lib.models; + +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Getter +@NoArgsConstructor +public class EditCaseSummary { + private String documentCaseId; + private String mvCode; + private String fileNumber; + private String customerName; + private String applicationType; + private String product; + private String receivedOn; + private String punchedBy; + private String branchCode; + private Short portfolioId; +} diff --git a/cygnus-lib/src/main/java/lib/models/LocalityData.java b/cygnus-lib/src/main/java/lib/models/LocalityData.java new file mode 100644 index 0000000..009879c --- /dev/null +++ b/cygnus-lib/src/main/java/lib/models/LocalityData.java @@ -0,0 +1,10 @@ +package lib.models; + +import java.util.List; + +/** Localities returned to the case-initiation autocomplete. */ +public record LocalityData(List localities) { + public LocalityData { + localities = localities == null ? List.of() : List.copyOf(localities); + } +} diff --git a/cygnus-lib/src/main/java/lib/models/LocalityOption.java b/cygnus-lib/src/main/java/lib/models/LocalityOption.java new file mode 100644 index 0000000..616d663 --- /dev/null +++ b/cygnus-lib/src/main/java/lib/models/LocalityOption.java @@ -0,0 +1,4 @@ +package lib.models; + +/** One company-authorized locality autocomplete result. */ +public record LocalityOption(Integer id, String location, String pincode, String city) {} diff --git a/cygnus-lib/target/classes/lib/constants/ApplicationMessage.class b/cygnus-lib/target/classes/lib/constants/ApplicationMessage.class deleted file mode 100644 index 1c78a10122551c1e55c4f6cd39430bd1331df910..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6468 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 ZMcc#!v|T&~y3Y%eZoBBf*z-i^e*l<)dRqVh diff --git a/cygnus-lib/target/classes/lib/exceptions/ApplicationException.class b/cygnus-lib/target/classes/lib/exceptions/ApplicationException.class deleted file mode 100644 index fed6543d921b2e5732ba85801e680609141100cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1010 zcmbVK%Wl(95Ir}E6Oy=1NC~AakCum&nnIQ=f{-c%D;EK+x?*$VUL_Yfc4XfGp9K=A z5(_?nk3yX5q^>I>MPda~ftnf}M*`L7I@0EaK)2^#_8priebkQ@gzSphkmVmd!PQl>GIEg>YVW{X);8|}q zc>$bHCs27ApV3^)*O7WNn+#QQVp#<`ejLc~R3_Tyi(>EQ(Liyfk16?F?`#o zU>tE%VZM*fzlH?bN6L)jv$ryl6J=CFG5^12E0AAZl@rKW%K5rWJ6InnQ}|bNyAON& zt9LBWIF4sYpk8ac!>s~QejZQlm0^!}RpPaB(e|H@$;%2=DO^ z)V?t-u^m{?J~i0hM1$ZB)^_LZxPdM+0&$aHL>6u07Li+w>m`J{|8n ZYF`=5hpcABjZAGmh_g@=xR-V9{skW>?Gpe1 diff --git a/cygnus-lib/target/classes/lib/models/ApiResponse.class b/cygnus-lib/target/classes/lib/models/ApiResponse.class deleted file mode 100644 index dbdf179841bae3bc47512fd78eae0dd37ebe05f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2587 zcmbVNe^VP(6g@8?YzT`aX^O3sRF9Uz z4?82%8JzJ0_@Nxn+uf80A+giUB>VQhd(S=hy!&qc`St@_fzcJ)v4d5CWU;h2hBU?uWK4|16qst+2bH#aC|iDItz+*>zvDW- z6fpd5vnhRFK0s1(ra*c9!Sq!E@ORs>&;G;tC3kZZp(6BF=P8%diz$ zH)LShEx(#!#FXOwzQ9s(zaMf)Y-umg`mdY#0Mi2Lz^wrrfNw`5P4S> z#*B%ZxJ8U(%RgSH6eK+uV^f8EWMUQ{Q(5^-*J@Ft#eo4@&RD0?zQ9=BK60#}>oHlf z(Wp|_DDz~^cI0-qeIUJtbOD4&1jjbhUK>;@5B7Z6Z=GJ~%z&5` z(pV*t?3N6U-NPNrv)VF{9@ESg_qnOZT{y_np1|W`f2qSl^gaEQ1nMh|d;M6e#sA?j z0I*k=@iTia6ny#IVO=a`01TDc8Nf@AcuTY%sY3CRrVKCYroh!p6jjY5+|Yxo^WkxS z38adpu%~8-KKS+t6fZAG(>@v@tUXhAyIxa1vQ7z6Vb z9rSVuywb(8otN$lS&1B$_po$C@-EM_lou;KIQKy zV?e(mf6I|SN?fT=AjZq7ddvVxH@%kXM2J3w(>b=4e~wdLqeSFboVpO!W>a zj-wJ2d`7Yga{Mo(e;g^#zsA)+_^R_74S7X*#zPKtAcU${gdEI}zuKGQj>q}xOvDf)js7Cn|*MN(4 zMEXXEMy#(=@XVqV%<+$G`4Yez!0+7Fg?U@RS$su}6~k>lmD=g@{3$*hgcwPke$xVJ z+zngpjI7#IWMe_@aw&KsU&p-H_*6oq%74Nb#yZs}gR&@O!SnkjX05|b3{!P5Ty#tB z5%vnI{8eJ;u(@}GO~pOEf^P|!z$)(Zd4s1EUDEScG-{&n=%Fs|BlcjLB-XKkhuESu ML+dtnu#4;e0cQgl^Z)<= diff --git a/cygnus-lib/target/classes/lib/models/ApplicationDetails.class b/cygnus-lib/target/classes/lib/models/ApplicationDetails.class deleted file mode 100644 index cb996f50414076f293b41847af5979a97f550886..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16866 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 diff --git a/cygnus-lib/target/classes/lib/models/MessageDetails.class b/cygnus-lib/target/classes/lib/models/MessageDetails.class deleted file mode 100644 index c118e262010af86e25604dec80754a73b0667580..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3245 zcmb_eTT>KA6#kmqEbD-<-m;=(HK?$ttBEEmCI&%e4WI(9QDfq;+rr4~%sMlRm)!67 z>r?WWs#N7A4@p%}%2XwJN~-dsV!rNKWPwe13B~O6bf5XocfND_^!)Yr{a*p}brZg z3MFQu8F2xF>jPeamg~EFhOb+*R>ra1smyrj+wN4KGBr)KDAO2CC+yIXYI3cKHZ>XN zWW|}9PMBDyrdv5ZD1*FjmlT~iHejQHO(q^elB?QJIkcV3`SaO9qWG3u@QTqxVu8p* z1Jc-l4ij56jnIq8#nFjJ4WvwL!*+po4I0`-naM_qFk08UDX?JyuzHc0UD#n@r-@zY z7Dy^Bi&Vl1GL?V^WoX$BMQb{0yLR}Dz>V(gN{#;CnI#;1a&e^5YhbrxxksRFF+*o2 zugiR>GnzAy5!k-CmUSFCWjX!+RJkbK@WidW)Oma{TwnK?P4j8%Xq=S6%#MwrGDNSSBuFQea*5#*)%fQ5Q@|T%$5}aGbk-MiVBu_hgMoVGwe=A<96N9aZ%PP1h#c*$8# zSvHc5`V#^>x`$V5czr!NrYmY_Ylm%Dj+Tp)(w~SNCWgJd<>V}qAc4wcLpW_y`3{X; zvjOyRZ>{c`@r=lD+AEy3e5)u!M#WghLn}WsVwEb+8fR5Zr0CLwPRGiw%1YLqwF8@+ z`d!!K#-tp4IWg>b#Yt}_b4t3>w?bJU6V+MA7K=^5)NQ#^V%&%0UfIvfleSWL-O^6B zSLJ~`k9%GiguYdZ2nR8|OR6Ge2dRY(y0!`L$MFF^H1LtCg^vZg7W<3s&U!Pla!5qw zanj0%o_|~5>*~U&7)E}E*jOAHbPapnOu1B}jH?QJ$%_-WOR|Rf#Cj-c*6&*ZGxA5%TjBVJ8vR>0@n8itq&J7CqkP zxKZ#yf$)@!+>3LlCjr1o-$PGFTj5*8JKF0me211_u=iqO-#tA3Te@Qo2h+O~hv(5Z zhhynIiQ{@Sm`*k%PU_)MI@$OqVu{n=BbIEui{Uw(ODCHW6M8k5P8x~l=W*$Gbk5YA2@-ik(6)e|O^m_TU(gtubV91^bwS{W`$0i0{Jy9i0ZDV$g|D z;XCS}pbs@t$!O3cl@2AGqxw0T^hl+|z#WcHq2U2Z#0+!^10zfSJAr1GD-Q_uZx(f2 z=UZCotp-_vd_X1&8$4`4zhD%J zS`M^+RUm%;)&M%U9B9L;K(E&X$}I=lxGK;a+|Nb+SsgICf=k@?0Q+khtIh zcqqh-ZKZNzDY@D4tY^MC{QLLc?>_*J@w|=#iWW*X%BTqJT*$d}Jn2uIQ};rRj6mg; z_O*E}Q0(@GHB?cvP`A;5Ezt6`>r8{O@*?N-(&)e!D9@!gQv&V5GV6%5n>MzwLt&nD zm6r`WGokh;aah~NE{8S7DjJ14W^?+Ujr}-%5(cwNfzlhQF0eh&zWO+ux+?r4T`w*l zjHEY|p=Lk5ESYm13G5D5`aTkRN249^M<*QH{HBO;}WYR1&omHSoW#3*6ne=gzOjnH-E$wwzJL(Ndu@B0e2jfpN zlv8C?NR4n-S~HWCmgKA^g=CA;MOw6e7RHJ|%UIyq$>MwY_|~R)esBvs ZJ6U``AK%#&&+mAFXD5q4q^%Y3>_6B4zqSAX diff --git a/cygnus-lib/target/classes/lib/models/UserSession$UserSessionBuilder.class b/cygnus-lib/target/classes/lib/models/UserSession$UserSessionBuilder.class deleted file mode 100644 index af44226eddbe7c8a3dd2865cc961c97ca92a1479..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4111 zcmd^?>rNX-6vxk)i!Ur-2!%p!gg|No#Z4M|b07o~z^y~l7)aCfqP0E33+r8LcZ|fF z^f6i~Risqv1N1%m6qTx;;~B$lW`j0-?T2CKoIUfKvvc_$^Vh#`{se#r@N)(d(36B- z1Nxw!LH5u*HVd}t92A~Z4|z>6=)Y$Fbr88E~E4 zLo&MT)=Yt4MI&w)FhlhIHh!&S&l)gC(J68{iu{oQIdTq@^P%OpZ1bc$>%0LA#2BD= zTb|o)NzlgzEYX<3Q-62FCkEW6H)-2Fu$)~>X8)-HcRLd|xzpYjO*;vnF&K~Dk_;@v z7qrP=GWaJKT++_+2OV;a&-YwtkPf~O=0bzy-1+@cJoZHc?!gL!iKcnPH(Up|_qin+ z*z<+y2%jyxI{Fg0<@3fm$?(Ld5kfQNA+54tvk*%D)qG2Ivp&Wg9BlHBPSk*Tv|6YLXV=fwQ z{i*5UtrgtE4DN@R>d?Fww698n$6zY=u4FLvlyEB@ID;{a3y7hd5|ygrw!IqPv}nz; zd#DsjTbC#p2|L^u+pdoSon3cb;S0}f$?x$~@GXPCgJS}HrN_BbHC|zh(*eN^n6!mt zc9rz3Pr`I&h2y$%N$*L?O7(7!#If5CXkyo;q%dT5Cpr~AdfU~z6_y|Fhe`%^VJ`{$ zbgQ2;m_1uf%Q<$BctI|;yy%-|O}O3(gI|I>tperxZJSQr=KgHib&uMuqP{x;PiWxo zNsC8>zYN67qFM}Yxk7B1wq3CV$J1ey9K1*yw(0wv?w7uMNqEU%PW#ZP{FCq_gKOu9 zVm*@|3pcRFB~T)V@Gn+)z*~k^KR)l{GePxP^I;j*d{}}tA68(^hvirEVeQp?SadZX zR$a}9MOX7-vDJK7Xf+>}Sj~q8_ATECt^@v5!nIh#UIE`S^31;m_8WE*_@hcL7(fQr zu}_oJkPUc<&){<6PXKrXJsnUHN7BM4=NEp*KfhvEM~%x6g~DL9N1HSO(XwyxhhZy< zKNy=Y_gnGF2F^$q4gjqSt>qHecRb#h=mmbJ6+VjLnxCp!j5j^Up=| zZ^hHeYI{;*$~P-;L(q ziOrY#tN3Ju`P)!JNnAtuJH&USvul6A@{9RbD50-l5Zeg0F>Djqrm$VbHjV8jwp-Zp z*cP!Bu-$nLpGOO?)bO=P4gVUxQ8_fQY*G%Z$hy${Z{RC{^D*cARZ_yW@KJ^TPa!Q_8X?iQ*5 diff --git a/cygnus-lib/target/classes/lib/models/UserSession.class b/cygnus-lib/target/classes/lib/models/UserSession.class deleted file mode 100644 index 5fb4f06a412aac0f8754f5ab1d5627949de28399..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7725 zcmd^E`*U1X9sitU-+T9w&GRN{DG;#TwnWe>+|n8v2n3T-NgFIw%O<%tOE$Y+qZ%lYCF4bB+o^@Atbq>%I*7?6HM7RtHe z;_~#8D2EJ~0**OKAr|$Bfl;5@qu6NREKw&N^h{|nSLG1I<7@-x2zzLqLvy&t44fzE zh^UG#^IHsT7G+A5m**>Mh1^lE)vST7!VwqSmF3d;T^)$)a*kxch-o+T$H?QXk6@~uIKAf{gc5b;|m@hN1N0{Se-s8@P z=r1>Lh3KQyOUI^{M0=%yt3;c0wQg+0bhUwZW5zMLU6kM`^fh+)5Cij``vSgj~!_~+2slDcX0IO)zJ!nqltz`MT`n-L${cjwkVJ8mX3? zLxLlkE3KCo?Ww#@mj^g|?!Dsz$*4Re_u7@}tS!la8#KMARH|00<=mRHwJQ-ksqiPC z+vfUi+NHK_@-1KAr;JZNz3??;>38F+8Rx}8>`t&fNh0FOzKD1#cP^Sfy@u)m5~~-W zU201zgr{Tp6@DGYGjbgNMq#XR3(gmBDXrM!P7IwBdMdYAEtQWd+~+?+T%Z%It8&Gq zf?XM#DV0{%*LI%r@NIJ3e{{`m1HZw?;9cZ=Dwkq1S18Qot2XnYF$m-YAAP(Gg#h;BfRt|tntw>j4~>et2}eNu#SwpMJQ+F zL7{8D6?DzFfv))+&^7P>y5@yn*Sy{9npb*V^A@jb-q>}`8@jG}AJ;W+;H-ODg7_f1 z@gW}i2K$hrWEfL90FRBNXUIB0buG%F2CQ|GVg4^jX1N|uLC_aXdbMOo@ zHnEm}k*Bfa;Ny7b!<1E1Sp1$!UO2AjIB^n~VD>SD#myhhl#Zt10NiLc6Y(9=hA7cW zlrosjzoN7wIS+jCCYRp;;X0)(O@f4Z$~0NqS_D*w-WVrB;uQ^4bg^H zqW+FVd~UWO+SE!k(2`277Xd9w! ztwh5eiTG}9Lp0t>G}4iX@7y*-7qt?Nb|m5-ES%&V7$o6Y-1Ea*vkxK|IKK5cMD9nh z`}o#p5t+@Nz{PvF@s}0Y{vzUL;05#?gR$KVoWP|TM#O{_BxJ%0nL)vXUO?s;5@yg0 z`9PCan4n23Vul42aY11-;sZ@tQG%wdm>CsN%mqcwm=82<#R;0W3^Ohu!v#_Dfo81) zL9T^N8W}gpq(CR1XpfzCj3uwRv^_v4e&>?G(phMP>IVhkZ7c^)N`9Oy)lc2-a zuxSct*aey9un)9gjS#e8jhZ6@8g)S<=BN*3TN?Qz&C316esr)<>l zbxQqe1rPBOaR&y}UF7`+r9pKMdv`yjA@vYe@J&jls=>y$C=IKZFokbZ8d0xc0^gxD zs$Rv}_%5Xl>Lf<+JxUw#0OR=pwuK|FVRQF0NP9GtF5s zZHm=ROgWC%ycO3bW*gTl?wJl+hBg^>li`^TSqW`o`f zfCniBu$#N$7^NT%s`Kz;N+DEL3_qb1=1%)7eo86A-!I{3l%jYZPqHo9pMT++|2d^N zUgPgyuo!9p%iKrYpXx%);$ccjHG_-r2&I%dfe7b0t zJau~H4gNE5aGOYCX20L!_jm#3zX78h{)qqp diff --git a/cygnus-lib/target/cygnus-lib-1.0.0-SNAPSHOT.jar b/cygnus-lib/target/cygnus-lib-1.0.0-SNAPSHOT.jar deleted file mode 100644 index 7feaa467f85a8b8d92a6f62944c8a4785ac9e3aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20966 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

%&s3XP;}y4z$b0)h=;`-hoJqKe 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 Mq?C4c)P(-+zrcxwFaQ7m diff --git a/cygnus-lib/target/maven-archiver/pom.properties b/cygnus-lib/target/maven-archiver/pom.properties deleted file mode 100644 index ccdce53..0000000 --- a/cygnus-lib/target/maven-archiver/pom.properties +++ /dev/null @@ -1,3 +0,0 @@ -artifactId=cygnus-lib -groupId=com.cygnus -version=1.0.0-SNAPSHOT diff --git a/cygnus-lib/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/cygnus-lib/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst deleted file mode 100644 index da08045..0000000 --- a/cygnus-lib/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +++ /dev/null @@ -1,12 +0,0 @@ -lib/models/CasePunching.class -lib/models/ApiResponse.class -lib/models/ApplicationSaveResult.class -lib/constants/ApplicationMessage.class -lib/models/ApplicationSaveData.class -lib/models/UserSession$UserSessionBuilder.class -lib/models/MessageDetails.class -lib/exceptions/ApplicationException.class -lib/models/Option.class -lib/models/UserSession.class -lib/models/CaseSaveRequest.class -lib/models/ApplicationDetails.class diff --git a/cygnus-lib/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/cygnus-lib/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst deleted file mode 100644 index 4264197..0000000 --- a/cygnus-lib/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ /dev/null @@ -1,13 +0,0 @@ -/Users/maddy/Projects/cygnus/matrix/cygnus-lib/src/main/java/lib/constants/ApplicationMessage.java -/Users/maddy/Projects/cygnus/matrix/cygnus-lib/src/main/java/lib/exceptions/ApplicationException.java -/Users/maddy/Projects/cygnus/matrix/cygnus-lib/src/main/java/lib/models/ApiResponse.java -/Users/maddy/Projects/cygnus/matrix/cygnus-lib/src/main/java/lib/models/ApplicationDetails.java -/Users/maddy/Projects/cygnus/matrix/cygnus-lib/src/main/java/lib/models/ApplicationSaveData.java -/Users/maddy/Projects/cygnus/matrix/cygnus-lib/src/main/java/lib/models/ApplicationSaveResult.java -/Users/maddy/Projects/cygnus/matrix/cygnus-lib/src/main/java/lib/models/CasePunching.java -/Users/maddy/Projects/cygnus/matrix/cygnus-lib/src/main/java/lib/models/CaseSaveRequest.java -/Users/maddy/Projects/cygnus/matrix/cygnus-lib/src/main/java/lib/models/DuplicateDetailsData.java -/Users/maddy/Projects/cygnus/matrix/cygnus-lib/src/main/java/lib/models/MessageDetails.java -/Users/maddy/Projects/cygnus/matrix/cygnus-lib/src/main/java/lib/models/Option.java -/Users/maddy/Projects/cygnus/matrix/cygnus-lib/src/main/java/lib/models/PunchedRecordsData.java -/Users/maddy/Projects/cygnus/matrix/cygnus-lib/src/main/java/lib/models/UserSession.java diff --git a/cygnus-lib/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/cygnus-lib/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst deleted file mode 100644 index f382137..0000000 --- a/cygnus-lib/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst +++ /dev/null @@ -1 +0,0 @@ -lib/models/MessageDetailsTest.class diff --git a/cygnus-lib/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/cygnus-lib/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst deleted file mode 100644 index 5b52a0d..0000000 --- a/cygnus-lib/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst +++ /dev/null @@ -1 +0,0 @@ -/Users/maddy/Projects/cygnus/matrix/cygnus-lib/src/test/java/lib/models/MessageDetailsTest.java diff --git a/cygnus-lib/target/test-classes/lib/models/MessageDetailsTest.class b/cygnus-lib/target/test-classes/lib/models/MessageDetailsTest.class deleted file mode 100644 index 491ee2764d4ed7c955acd4ba6addcad311a3dd9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1217 zcmah|>rN9<5dKanY$?m7+RF(=O7awx%sL{%TIkS`XRo*4H%1XwY?xVvJ!$8P+{F zkldAlVYXV1sBG|OUJfCpU&pXRxxkpswJyfv5HlzSS%DZ>@X}|+X-bmpxz00lOE3r*Uq<_HQO)q znnPuX=e#<1D%=<9+`A0R4}yxh+zIc>{!*y>L|gZ5F73c9+U-CASibN1Y0s5DS1qfZ zblZ_({(3CJNfg_z6ivG#0zoLI>w44`-9NmLySfW{AuKg{E9lp??4`NuxzycGCl-ci z$!q&{`%tKKXa5}&g|V%=fV#t=0aVWbeKdk#ctAUYR;F$?&cVLYCWMD1l^Td(m!#e` zz#bma33yD}P{+ASU`a)Bh#oZ)^f^tQY2Q_fJb cK%59CNz!D}I!CgfS)xaKnT+9pyh3>K2lT!m%m4rY diff --git a/cygnus-onprem-app/build/WebContent/WEB-INF/app/edp/punching/editcases.jsp b/cygnus-onprem-app/build/WebContent/WEB-INF/app/edp/punching/editcases.jsp index 96c9357..b9ee053 100644 --- a/cygnus-onprem-app/build/WebContent/WEB-INF/app/edp/punching/editcases.jsp +++ b/cygnus-onprem-app/build/WebContent/WEB-INF/app/edp/punching/editcases.jsp @@ -13,43 +13,42 @@ - + - - - - - - -Cygnus 1.0 | Edit Cases + + + + +Cygnus 1.0 | Edit Cases + - +

-<%@ include file="/WEB-INF/app/fragments/app-title.jspf" %> +<%@ include file="/WEB-INF/app/fragments/app-title.jspf" %> -
- +
+
- - List of Cases -
- - - - - - -
- -
+ + List of Cases + + + + + + + +
@@ -69,19 +68,19 @@ - + - - - - - - - - + + + + + + + + @@ -103,4 +102,4 @@ - + diff --git a/cygnus-onprem-app/build/WebContent/WEB-INF/app/edp/punching/initcase.jsp b/cygnus-onprem-app/build/WebContent/WEB-INF/app/edp/punching/initcase.jsp index 41c0a8e..218745f 100644 --- a/cygnus-onprem-app/build/WebContent/WEB-INF/app/edp/punching/initcase.jsp +++ b/cygnus-onprem-app/build/WebContent/WEB-INF/app/edp/punching/initcase.jsp @@ -17,18 +17,17 @@ - - - - - + + + + + - - - + + + - - + @@ -37,11 +36,11 @@ - + - - + + @@ -58,7 +57,7 @@ @@ -77,16 +76,19 @@ +
- - - - + + + @@ -117,7 +119,7 @@ Appl No.
- +
@@ -125,7 +127,7 @@ Bank Code
- +
@@ -134,13 +136,13 @@
- - - - + + + @@ -154,10 +156,10 @@
- - + @@ -169,7 +171,7 @@ Name
- +
@@ -186,10 +188,10 @@
- - + @@ -205,7 +207,7 @@ @@ -266,10 +268,10 @@
Residence Details -
- RVR  - Same Resi - RTV +
+ RVR  + Same Resi + RTV
@@ -316,7 +318,7 @@ - + @@ -374,11 +376,11 @@
Office Details -
- OVR  - RCO  - Same Office - OTV +
+ OVR  + RCO  + Same Office + OTV
@@ -434,7 +436,7 @@ - + @@ -475,7 +477,7 @@

- +
@@ -492,8 +494,10 @@ Office Phone-Extn

-
- - +
+ + +
@@ -510,11 +514,11 @@
Property Details -
- PVR  - RCP  - OCP  - Same Property +
+ PVR  + RCP  + OCP  + Same Property
@@ -529,7 +533,7 @@

- +
@@ -561,7 +565,7 @@ - + @@ -584,7 +588,7 @@

- +
@@ -610,7 +614,7 @@
Reference Details -
+
Ref Check 
@@ -675,7 +679,7 @@
Document Details -
+
Doc VR 
@@ -694,17 +698,17 @@ - - + + - -
+ +
- + @@ -722,9 +726,9 @@ diff --git a/cygnus-onprem-app/build/WebContent/css/add-cases-v4.css b/cygnus-onprem-app/build/WebContent/css/add-cases-v4.css index 18edeee..28ddb0d 100644 --- a/cygnus-onprem-app/build/WebContent/css/add-cases-v4.css +++ b/cygnus-onprem-app/build/WebContent/css/add-cases-v4.css @@ -66,6 +66,40 @@ font-weight: 400; } +.matrix-add-cases .matrix-phone-extension { + display: grid; + grid-template-columns: minmax(0, 1fr) auto 48px; + align-items: center; + gap: 4px; +} + +.matrix-add-cases .matrix-phone-extension > input { + width: 100% !important; + min-width: 0; +} + +.matrix-add-cases .matrix-edit-back { + display: inline-flex; + align-items: center; + gap: 5px; + min-height: 28px; + margin-left: auto; + padding: 3px 10px; + color: #245f91; + font-size: 12px; + font-weight: 600; + border: 1px solid #9eb5c8; + border-radius: 4px; + background: #f6f9fb; +} + +.matrix-add-cases .matrix-edit-back:hover, +.matrix-add-cases .matrix-edit-back:focus-visible { + color: #fff; + border-color: #28699d; + background: #28699d; +} + .matrix-add-cases .matrix-form-controls .widget:has(#splist), .matrix-add-cases .matrix-form-controls .widget:has(textarea), .matrix-add-cases .matrix-form-controls .widget:has(input[id*="Address"]), diff --git a/cygnus-onprem-app/build/WebContent/css/edit-cases-v1.css b/cygnus-onprem-app/build/WebContent/css/edit-cases-v1.css index 79619dd..e49dabd 100644 --- a/cygnus-onprem-app/build/WebContent/css/edit-cases-v1.css +++ b/cygnus-onprem-app/build/WebContent/css/edit-cases-v1.css @@ -4,19 +4,66 @@ background: #f4f8fb; } -.matrix-edit-cases .matrix-tool-workspace__content > .title .divselect { - width: min(330px, 38vw) !important; - margin-left: auto; - position: static !important; +.matrix-edit-cases #caseGrid > div > .title { + display: flex !important; + align-items: center; + flex-wrap: nowrap !important; + gap: 7px; } -.matrix-edit-cases .matrix-tool-workspace__content > .title select { - width: 100% !important; - min-height: 28px; - padding: 3px 28px 3px 7px; - border: 1px solid #9fb1c1; - border-radius: 3px; - background-color: #fff; +.matrix-edit-cases #caseGrid > div > .title > .matrix-title-text { + flex: 0 0 auto; + white-space: nowrap; +} + +.matrix-edit-cases #caseGrid > div > .title > .matrix-edit-cases__portfolio-select { + width: 0 !important; + min-width: 0; + flex: 1 1 auto; + margin: 0 !important; + font-family: Tahoma, Arial, sans-serif; + font-size: 10pt; + font-weight: 400; + padding: 2px 30px 2px 7px !important; +} + +.matrix-edit-cases #caseGrid > div > .title > .matrix-edit-cases__refresh { + box-sizing: border-box !important; + width: 27px !important; + height: 27px !important; + min-width: 27px !important; + min-height: 27px !important; + margin: 0 !important; + flex: 0 0 27px; + display: inline-flex; + align-items: center; + justify-content: center; + padding: 0 !important; + border: 0 !important; + border-radius: 0 !important; + outline: 0 !important; + appearance: none; + background: transparent !important; + box-shadow: none !important; +} + +.matrix-edit-cases #caseGrid > div > .title > .matrix-edit-cases__refresh:hover, +.matrix-edit-cases #caseGrid > div > .title > .matrix-edit-cases__refresh:focus, +.matrix-edit-cases #caseGrid > div > .title > .matrix-edit-cases__refresh:focus-visible, +.matrix-edit-cases #caseGrid > div > .title > .matrix-edit-cases__refresh:active { + width: 27px !important; + height: 27px !important; + margin: 0 !important; + padding: 0 !important; + border: 0 !important; + outline: 0 !important; + background: transparent !important; + box-shadow: none !important; +} + +.matrix-edit-cases .matrix-edit-cases__refresh img { + width: 16px; + height: 16px; } .matrix-edit-cases .tableContainer { @@ -55,12 +102,4 @@ width: 100% !important; } - .matrix-edit-cases .matrix-tool-workspace__content > .title { - flex-wrap: wrap; - } - - .matrix-edit-cases .matrix-tool-workspace__content > .title .divselect { - width: 100% !important; - order: 3; - } } diff --git a/cygnus-onprem-app/build/WebContent/js/ajax-dynamic-list.js b/cygnus-onprem-app/build/WebContent/js/ajax-dynamic-list.js index 22756fe..048b1c4 100644 --- a/cygnus-onprem-app/build/WebContent/js/ajax-dynamic-list.js +++ b/cygnus-onprem-app/build/WebContent/js/ajax-dynamic-list.js @@ -31,8 +31,7 @@ Owner of DHTMLgoodies.com var ajax_list_externalFile = 'getlocality'; // Path to external file var minimumLettersBeforeLookup = 1; // Number of letters entered before a lookup is performed. - var ajax_list_objects = new Array(); - var ajax_list_cachedLists = new Array(); + var ajax_list_cachedLists = new Array(); var ajax_list_activeInput = false; var ajax_list_activeItem; var ajax_list_optionDivFirstItem = false; @@ -75,11 +74,11 @@ Owner of DHTMLgoodies.com ajax_list_activeInput.value = tmpValue; if(document.getElementsByName(ajax_list_activeInput.name + '_hidden')[0]) { - document.getElementsByName(ajax_list_activeInput.name + '_hidden')[0].value = inputObj.id.split("#-#")[0]; - if(ajax_list_externalFile == 'getlocality') - { - document.getElementsByName(ajax_list_activeInput.name + '_pincode')[0].value = inputObj.id.split("#-#")[1]; - document.getElementsByName(ajax_list_activeInput.name + '_citylist')[0].value = inputObj.id.split("#-#")[2]; + document.getElementsByName(ajax_list_activeInput.name + '_hidden')[0].value = inputObj.dataset.localityId; + if(ajax_list_externalFile == 'getlocality') + { + document.getElementsByName(ajax_list_activeInput.name + '_pincode')[0].value = inputObj.dataset.pincode; + document.getElementsByName(ajax_list_activeInput.name + '_citylist')[0].value = inputObj.dataset.city; } } ajax_options_hide(); @@ -113,7 +112,7 @@ Owner of DHTMLgoodies.com ajax_optionDiv.innerHTML = ''; ajax_list_activeItem = false; - if(ajax_list_cachedLists[paramToExternalFile][letters.toLowerCase()].length<=1){ + if(ajax_list_cachedLists[paramToExternalFile][letters.toLowerCase()].length===0){ ajax_options_hide(); return; } @@ -123,19 +122,20 @@ Owner of DHTMLgoodies.com ajax_list_optionDivFirstItem = false; var optionsAdded = false; for(var no=0;no"); - }*/ - $("#uuid").val($("#"+SelectedRow.id+"uuid").val()); - SubmitForm("caseedit", "_blank", "caseGrid"); -} -function keyListen(param1,param2,e) { - var keycode = e.keyCode; - if(keycode==13) - { - GetRowData(document.getElementById("row"+currow)); - } - else - { - if(keycode==40) - { - currow=currow+1; - if(currow>=$('#casetable tr').length){currow=1;lastrow=$('#casetable tr').length-1;} - } - if(keycode==38) - { - currow=currow-1; - if(currow<=0){currow=$('#casetable tr').length-1;lastrow=1;} - } - $('#row'+currow).addClass('rowhover'); - $('#row'+lastrow).removeClass('rowhover'); - document.getElementById('row'+currow).focus(); - lastrow=currow; - } -} - -function callkeydownhandler(evnt) { - var ev = evnt; - var focusedRow = ev.target && ev.target.tagName === "TR" ? ev.target : null; - if ((ev.key === "Enter" || ev.keyCode === 13) && focusedRow) { - ev.preventDefault(); - GetRowData(focusedRow); - return; - } - keyListen('','',ev); -} - -window.document.addEventListener("keydown", callkeydownhandler, false); diff --git a/cygnus-onprem-app/build/WebContent/js/edp/punching/edit-cases.js b/cygnus-onprem-app/build/WebContent/js/edp/punching/edit-cases.js new file mode 100644 index 0000000..11e2fe7 --- /dev/null +++ b/cygnus-onprem-app/build/WebContent/js/edp/punching/edit-cases.js @@ -0,0 +1,112 @@ +(function () { + "use strict"; + + var currentRow = 0; + var lastRow = 0; + + function rows() { + return Array.prototype.slice.call(document.querySelectorAll("#casetable tbody tr")); + } + + function rowNumber(row) { + return Number((row.id || "").replace("row", "")) || 0; + } + + function setActiveRow(row) { + if (!row) { + return; + } + rows().forEach(function (item) { + item.classList.remove("rowhover"); + }); + row.classList.add("rowhover"); + currentRow = rowNumber(row); + lastRow = currentRow; + row.focus(); + } + + function hiddenValue(row, suffix) { + var input = document.getElementById(row.id + suffix); + return input ? input.value : ""; + } + + function submitForm(action, target, formId) { + if (typeof SubmitForm === "function") { + SubmitForm(action, target, formId); + return; + } + var form = document.getElementById(formId); + if (!form) { + return; + } + form.action = action; + form.target = target; + form.submit(); + } + + function openRow(row) { + if (!row) { + return; + } + var uuid = hiddenValue(row, "uuid"); + var portfolioId = hiddenValue(row, "portid"); + if (!uuid || !portfolioId) { + return; + } + document.getElementById("uuid").value = uuid; + document.getElementById("portlist").value = portfolioId; + submitForm("caseedit", "_parent", "caseGrid"); + } + + function moveSelection(direction) { + var allRows = rows(); + if (allRows.length === 0) { + return; + } + var nextIndex = currentRow > 0 ? currentRow - 1 + direction : 0; + if (nextIndex < 0) { + nextIndex = allRows.length - 1; + } + if (nextIndex >= allRows.length) { + nextIndex = 0; + } + setActiveRow(allRows[nextIndex]); + } + + function handleKeydown(event) { + var row = event.target && event.target.closest ? event.target.closest("#casetable tbody tr") : null; + if (event.key === "Enter" && row) { + event.preventDefault(); + openRow(row); + return; + } + if (event.key === "ArrowDown") { + event.preventDefault(); + moveSelection(1); + return; + } + if (event.key === "ArrowUp") { + event.preventDefault(); + moveSelection(-1); + } + } + + function init() { + rows().forEach(function (row) { + row.addEventListener("mouseenter", function () { + setActiveRow(row); + }); + row.addEventListener("click", function () { + openRow(row); + }); + }); + document.addEventListener("keydown", handleKeydown, false); + } + + window.CygnusEditCases = { + init: init, + openRow: openRow + }; + + window.InitPage = init; +}()); diff --git a/cygnus-onprem-app/src/main/java/matrix/nimble/controller/Ajax.java b/cygnus-onprem-app/src/main/java/matrix/nimble/controller/Ajax.java index 399c10d..b4aaae8 100644 --- a/cygnus-onprem-app/src/main/java/matrix/nimble/controller/Ajax.java +++ b/cygnus-onprem-app/src/main/java/matrix/nimble/controller/Ajax.java @@ -95,21 +95,6 @@ public class Ajax { } return response; } - @RequestMapping(value="getlocality",method=RequestMethod.POST ) - public @ResponseBody String GetLocality(@RequestParam String city, @RequestParam String letters) - { - DBFunctions DBF=new DBFunctions("1001"); - DBF.setProcessFlag(true); - - String val1="and 1=1"; - if(!(city.toUpperCase().equals("-1") || city.toUpperCase().equals("UNKNOWN"))) - { - val1="and upper(city)=upper('"+city+"')"; - } - String response= DBF.FetchRunQuery(13, (letters.toUpperCase()+GlobalClass.ColDelim+val1+GlobalClass.ColDelim).split(GlobalClass.ColDelim)); - response=response.replace(GlobalClass.ColDelim+GlobalClass.RowDelim, GlobalClass.RowDelim); - return response; - } @RequestMapping(value="listservprovider",method=RequestMethod.POST ) public @ResponseBody String ListServProvider(@RequestParam String city, @RequestParam String letters) { diff --git a/cygnus-onprem-app/src/main/java/matrix/nimble/edp/punching/controllers/EditCasesGrid.java b/cygnus-onprem-app/src/main/java/matrix/nimble/edp/punching/controllers/EditCasesGrid.java deleted file mode 100644 index a190195..0000000 --- a/cygnus-onprem-app/src/main/java/matrix/nimble/edp/punching/controllers/EditCasesGrid.java +++ /dev/null @@ -1,60 +0,0 @@ -package matrix.nimble.edp.punching.controllers; - -import java.util.HashMap; - -import jakarta.servlet.http.HttpServletRequest; - -import matrix.nimble.edp.punching.model.CaseGrid; -import matrix.nimble.model.Session; -import matrix.nimble.utilities.GlobalClass; -import matrix.nimble.utilities.ModuleFunctions; - -import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; -import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.SessionAttributes; - -@Controller -@SessionAttributes({ "Sessvals" }) -public class EditCasesGrid { - @RequestMapping(value = "editgrid", method = RequestMethod.POST) - public String OpenEditGrid(ModelMap model, HttpServletRequest request, - @ModelAttribute(value = "Sessvals") Session Sessvals) { - String[][] CaseList = null; - CaseGrid CG = new CaseGrid(); - model.addAttribute("Sessvals", Sessvals); - model.addAttribute("caseList", CaseList); - model.addAttribute("caseGrid", CG); - model.addAttribute("portlist", FillPortList(Sessvals.getBranchID(), Sessvals.getUserID())); - return "edp/punching/editcases"; - } - - @RequestMapping(value = "caselist", method = RequestMethod.POST) - public String ListCases(ModelMap model, HttpServletRequest request, - @ModelAttribute(value = "Sessvals") Session Sessvals, - @ModelAttribute(value = "caseGrid") CaseGrid caseGrid) { - CaseGrid CG = new CaseGrid(); - CG.setErrCode("1002"); - CG.setPortfolioId(caseGrid.getPortfolioId()); - String[][] CaseList = CG.FillCaseList(caseGrid.getPortfolioId(), Sessvals.getBranchID()); - if (CG.isProcessFlag()) { - model.addAttribute("caseList", CaseList); - model.addAttribute("caseGrid", CG); - } else { - caseGrid.setErrMsg(CG.getErrMsg()); - model.addAttribute("caseList", CaseList); - model.addAttribute("caseGrid", caseGrid); - } - model.addAttribute("Sessvals", Sessvals); - model.addAttribute("portlist", FillPortList(Sessvals.getBranchID(), Sessvals.getUserID())); - return "edp/punching/editcases"; - } - - public String[][] FillPortList(String BranchId, String userId) { - return new ModuleFunctions("1002").GetResultArray(249, - (BranchId + GlobalClass.ColDelim + userId + GlobalClass.ColDelim).split(GlobalClass.ColDelim)); - } - -} diff --git a/cygnus-onprem-app/src/main/java/matrix/nimble/edp/punching/controllers/PunchingController.java b/cygnus-onprem-app/src/main/java/matrix/nimble/edp/punching/controllers/PunchingController.java index 13eb8aa..11f9ecc 100644 --- a/cygnus-onprem-app/src/main/java/matrix/nimble/edp/punching/controllers/PunchingController.java +++ b/cygnus-onprem-app/src/main/java/matrix/nimble/edp/punching/controllers/PunchingController.java @@ -27,6 +27,8 @@ import lib.models.CaseSaveRequest; import lib.models.MessageDetails; import lib.models.PunchedRecordsData; import lib.models.DuplicateDetailsData; +import lib.models.LocalityData; +import matrix.nimble.edp.punching.model.CaseGrid; import lib.constants.ApplicationMessage; import matrix.nimble.security.PayloadCryptoService; import lib.exceptions.ApplicationException; @@ -42,6 +44,8 @@ public class PunchingController extends AbstractAuthenticatedController { private static final String CASE_ADD_ROUTE = "caseadd"; private static final String CASE_EDIT_ROUTE = "caseedit"; private static final String DUPLICATE_DETAILS_ROUTE = "findsdet"; + private static final String LOCALITY_ROUTE = "getlocality"; + private static final String EDIT_GRID_ROUTE = "editgrid"; private final PunchingService punchingService; private final PayloadCryptoService cryptoService; @@ -121,6 +125,33 @@ public class PunchingController extends AbstractAuthenticatedController { } } + @RequestMapping(value = LOCALITY_ROUTE, method = RequestMethod.GET, + produces = MediaType.APPLICATION_JSON_VALUE) + @ResponseBody + public ResponseEntity> findLocalities( + @RequestParam("city") String city, + @RequestParam("letters") String letters, + HttpSession httpSession) { + ApiAuthorization authorization = authorizeApiPage(INIT_VIEW_ROUTE, httpSession); + if (!authorization.isGranted()) { + return ResponseEntity.status(authorization.error().getHttpStatus()) + .body(ApiResponse.failure(authorization.error())); + } + try { + LocalityData data = punchingService.findLocalities(city, letters, authorization.session()); + return ResponseEntity.ok(ApiResponse.success( + data, new MessageDetails(ApplicationMessage.APPLICATIONS_LOADED))); + } catch (ApplicationException exception) { + LOGGER.log(Level.WARNING, "Locality search was rejected", exception); + MessageDetails details = new MessageDetails(exception.getApplicationMessage()); + return ResponseEntity.status(details.getHttpStatus()).body(ApiResponse.failure(details)); + } catch (RuntimeException exception) { + LOGGER.log(Level.SEVERE, "Unable to search localities", exception); + MessageDetails details = new MessageDetails(ApplicationMessage.INTERNAL_SERVER_ERROR); + return ResponseEntity.status(details.getHttpStatus()).body(ApiResponse.failure(details)); + } + } + @RequestMapping(value = "application-save", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) @@ -207,4 +238,52 @@ public class PunchingController extends AbstractAuthenticatedController { session.getCompanyId(), session.getUserId())); return "edp/punching/initcase"; } + + @RequestMapping(value = EDIT_GRID_ROUTE, method = RequestMethod.POST) + public String openEditGrid( + ModelMap model, + HttpSession httpSession, + HttpServletResponse response) { + PageAuthorization authorization = authorizePage( + EDIT_GRID_ROUTE, model, httpSession, response); + if (!authorization.isGranted()) { + return authorization.viewName(); + } + populateEditGrid(model, new CaseGrid(), authorization.session(), false); + return "edp/punching/editcases"; + } + + @RequestMapping(value = "caselist", method = RequestMethod.POST) + public String listEditableCases( + @ModelAttribute("caseGrid") CaseGrid caseGrid, + ModelMap model, + HttpSession httpSession, + HttpServletResponse response) { + PageAuthorization authorization = authorizePage( + EDIT_GRID_ROUTE, model, httpSession, response); + if (!authorization.isGranted()) { + return authorization.viewName(); + } + populateEditGrid(model, caseGrid, authorization.session(), true); + return "edp/punching/editcases"; + } + + private void populateEditGrid( + ModelMap model, CaseGrid caseGrid, UserSession session, boolean loadCases) { + Short portfolioId = selectedPortfolio(caseGrid); + model.addAttribute("caseGrid", caseGrid); + model.addAttribute("portlist", punchingService.loadEditCasePortfolios(session)); + model.addAttribute("caseList", loadCases && portfolioId != null + ? punchingService.loadEditableCases(portfolioId, session) + : java.util.List.of()); + } + + private Short selectedPortfolio(CaseGrid caseGrid) { + try { + short portfolioId = Short.parseShort(caseGrid.getPortfolioId()); + return portfolioId > 0 ? portfolioId : null; + } catch (NumberFormatException | NullPointerException ignored) { + return null; + } + } } diff --git a/cygnus-onprem-app/src/main/java/matrix/nimble/edp/punching/model/CaseGrid.java b/cygnus-onprem-app/src/main/java/matrix/nimble/edp/punching/model/CaseGrid.java index 6459a04..16b4bb9 100644 --- a/cygnus-onprem-app/src/main/java/matrix/nimble/edp/punching/model/CaseGrid.java +++ b/cygnus-onprem-app/src/main/java/matrix/nimble/edp/punching/model/CaseGrid.java @@ -1,10 +1,6 @@ package matrix.nimble.edp.punching.model; -import matrix.nimble.utilities.DBFunctions; -import matrix.nimble.utilities.GlobalClass; -import matrix.nimble.utilities.StringFunctions; - -public class CaseGrid { +public class CaseGrid { private String ErrMsg; private String ErrDesc; private String ErrCode; @@ -48,23 +44,4 @@ public class CaseGrid { public void setCaseID(String caseID) { CaseID = caseID; } - public String[][] FillCaseList(String PortfolioID,String CompBranchId) - { - String [][]CaseList=null; - DBFunctions DBF=new DBFunctions(getErrCode()); - DBF.setProcessFlag(true); - String ResultData=DBF.FetchRunQuery(23, (PortfolioID+GlobalClass.ColDelim+CompBranchId+GlobalClass.ColDelim).split(GlobalClass.ColDelim)); - if(DBF.isProcessFlag()) - { - setProcessFlag(DBF.isProcessFlag()); - CaseList=new StringFunctions(getErrCode()).ConverTo2DArray(ResultData, GlobalClass.RowDelim, GlobalClass.ColDelim); - } - else - { - setProcessFlag(false); - setErrMsg(DBF.getErrMsg()); - setErrDesc(DBF.getErrDesc()); - } - return CaseList; - } -} +} diff --git a/cygnus-onprem-app/src/main/java/matrix/nimble/query/DirectQueryProvider.java b/cygnus-onprem-app/src/main/java/matrix/nimble/query/DirectQueryProvider.java new file mode 100644 index 0000000..2787a6c --- /dev/null +++ b/cygnus-onprem-app/src/main/java/matrix/nimble/query/DirectQueryProvider.java @@ -0,0 +1,21 @@ +package matrix.nimble.query; + +import java.util.Objects; + +public final class DirectQueryProvider implements QueryProvider { + private final QuerySource source; + + public DirectQueryProvider(QuerySource source) { + this.source = Objects.requireNonNull(source, "source"); + } + + @Override + public String getQuery(int queryId) { + return source.fetch(queryId); + } + + @Override + public String getQuery(String queryKey) { + return source.fetch(queryKey); + } +} diff --git a/cygnus-onprem-app/src/main/java/matrix/nimble/query/QueryProviderConfiguration.java b/cygnus-onprem-app/src/main/java/matrix/nimble/query/QueryProviderConfiguration.java index 1708ccd..2eb3c9e 100644 --- a/cygnus-onprem-app/src/main/java/matrix/nimble/query/QueryProviderConfiguration.java +++ b/cygnus-onprem-app/src/main/java/matrix/nimble/query/QueryProviderConfiguration.java @@ -23,12 +23,14 @@ public class QueryProviderConfiguration implements DisposableBean { OnPremRedisCacheService cache, CloudIdentityClient cloudClient, CloudClientProperties cloudProperties, + @Value("${CYGNUS_QUERY_CACHE_ENABLED:true}") boolean cacheEnabled, @Value("${CYGNUS_QUERY_CACHE_AES_KEY:}") String configuredKey) { - byte[] key = queryCacheKey(configuredKey, cloudProperties.clientAssertion()); - installed = new RedisCachingQueryProvider( - cache, - new CloudQuerySource(cloudClient), - new AesGcmQueryCipher(key)); + QuerySource cloudSource = new CloudQuerySource(cloudClient); + installed = cacheEnabled + ? new RedisCachingQueryProvider( + cache, cloudSource, new AesGcmQueryCipher( + queryCacheKey(configuredKey, cloudProperties.clientAssertion()))) + : new DirectQueryProvider(cloudSource); QueryProviders.install(installed); return installed; } diff --git a/cygnus-onprem-app/src/main/java/matrix/services/edp/PunchingService.java b/cygnus-onprem-app/src/main/java/matrix/services/edp/PunchingService.java index 6e05fd4..ce0e2d5 100644 --- a/cygnus-onprem-app/src/main/java/matrix/services/edp/PunchingService.java +++ b/cygnus-onprem-app/src/main/java/matrix/services/edp/PunchingService.java @@ -25,6 +25,9 @@ import lib.models.MessageDetails; import lib.models.Option; import lib.models.PunchedRecordsData; import lib.models.DuplicateDetailsData; +import lib.models.EditCaseSummary; +import lib.models.LocalityData; +import lib.models.LocalityOption; import lib.models.UserSession; import lib.constants.ApplicationMessage; import lib.exceptions.ApplicationException; @@ -45,6 +48,9 @@ public class PunchingService { private static final Short ACTIVE = Short.valueOf((short) 1); private static final int PUNCHED_RECORDS_QUERY = 24; + private static final int EDIT_CASES_QUERY = 23; + private static final int EDIT_CASE_PORTFOLIOS_QUERY = 249; + private static final int LOCALITY_QUERY = 13; private static final int RESIDENCE_DETAILS_QUERY = 19; private static final int OFFICE_DETAILS_QUERY = 20; private static final int PROPERTY_DETAILS_QUERY = 21; @@ -100,6 +106,40 @@ public class PunchingService { } } + public List
- - + + ${status.count}${casedet[1]}${casedet[2]}${casedet[3]}${casedet[4]}${casedet[5]}${casedet[6]}${casedet[7]}${casedet[8]}${casedet.mvCode}${casedet.fileNumber}${casedet.customerName}${casedet.applicationType}${casedet.product}${casedet.receivedOn}${casedet.punchedBy}${casedet.branchCode}