Migrated Query - 24 find punchedrecords
This commit is contained in:
@@ -1,329 +0,0 @@
|
||||
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
|
||||
pageEncoding="ISO-8859-1"%>
|
||||
<%@page language="java" session="true" %>
|
||||
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
|
||||
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<title>Cygnus 1.0 | Document Initiation </title>
|
||||
<script language="javascript" src="/matrix/js/lib/constants.js" type="text/javascript"></script>
|
||||
<script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script>
|
||||
<script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script>
|
||||
<script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script>
|
||||
<script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script>
|
||||
<script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script>
|
||||
<script language="javascript" src="/matrix/js/ajax.js" type="text/javascript"></script>
|
||||
<script language="javascript" src="/matrix/js/ajax-dynamic-list.js" type="text/javascript"></script>
|
||||
<script language="javascript" src="/matrix/js/appjs/punchingdoc.js" type="text/javascript"></script>
|
||||
<script language="javascript" src="/matrix/js/validator.js?ver=2" type="text/javascript"></script>
|
||||
|
||||
<link href="/matrix/css/button.css" rel="stylesheet" type="text/css" />
|
||||
<link href="/matrix/css/div.css" rel="stylesheet" type="text/css" />
|
||||
<link href="/matrix/css/textbox.css" rel="stylesheet" type="text/css" />
|
||||
<link href="/matrix/css/select.css" rel="stylesheet" type="text/css" />
|
||||
<link href="/matrix/css/table.css" rel="stylesheet" type="text/css" />
|
||||
<link href="/matrix/css/autocomplete.css" rel="stylesheet" type="text/css" />
|
||||
<link href="/matrix/css/bootstrap-5.3.8.min.css" rel="stylesheet" type="text/css" />
|
||||
<link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" />
|
||||
<link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet" type="text/css" />
|
||||
<link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" />
|
||||
<link href="/matrix/css/punch-workspace-v3.css?v=1" rel="stylesheet" type="text/css" />
|
||||
<link href="/matrix/css/add-cases-v4.css?v=5" rel="stylesheet" type="text/css" />
|
||||
<script src="/matrix/js/bootstrap-5.3.8.bundle.min.js" defer></script>
|
||||
<script src="/matrix/js/matrix-shell-v2.js" defer></script>
|
||||
<link href="/matrix/css/matrix-frame-dialog.css?v=6" rel="stylesheet" type="text/css" />
|
||||
<script src="/matrix/js/matrix-frame-dialog.js?v=2" defer></script>
|
||||
<script src="/matrix/js/matrix-accessibility-v1.js?v=1" defer></script>
|
||||
<link href="/matrix/css/matrix-theme-v2.css?v=4" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body class="matrix-v2 matrix-shell matrix-tool-workspace matrix-punch-workspace matrix-add-cases">
|
||||
<div id='PageFrame'>
|
||||
<%@ include file="/WEB-INF/app/fragments/app-shell-header.jspf" %>
|
||||
<%-- Shared shell owns ${Sessvals.menuHtml}. --%>
|
||||
<div id="formcontainer" class="matrix-tool-workspace__content">
|
||||
<form method="post" name="docdetails" id="docdetails" >
|
||||
<!-- Common Details (Section1) Visible for all portfolios-->
|
||||
<div>
|
||||
<!-- Title -->
|
||||
<div class="title matrix-form-title">
|
||||
<img class="matrix-title-icon" src="/matrix/images/commondet.png" align="absmiddle" />
|
||||
<span class="matrix-title-text matrix-form-title__heading">Common Details <span id='recfound'></span></span>
|
||||
<label class="matrix-form-title__field">Skip To <input type="text" class="textbox" style="width:30px" onkeypress="return NumberOnly(event)" onblur="GotoRecord(this)"></label>
|
||||
<label class="matrix-form-title__field">Search by File No <input type="text" class="textbox" style="width:200px" onblur="SearchRecord(this)"></label>
|
||||
<!-- Checkbox for AUTO CUT diabled for now -->
|
||||
<!-- <input type="checkbox" name="autocut" id="autocut" /> Automatic Cut-Off -->
|
||||
<div class="divselect matrix-form-title__end" id="divportfolio" style="width:167px;">
|
||||
<select id="portfolio_id" name="portfolio_id" style="width:185px" onchange="SubmitForm('docadd','_parent','docdetails')">
|
||||
<option value="-1" selected >SELECT PORTFOLIO</option>
|
||||
<c:forEach items="${portlist}" var="port">
|
||||
<option value="${port[0]}">${port[1]}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<!-- -->
|
||||
<!-- Form (Section1) -->
|
||||
<div id="FormPanel1" class="FormPanel">
|
||||
<table align="center" class="matrix-form-controls" width="99%">
|
||||
<tr>
|
||||
<td>
|
||||
<div style="height:auto;width:16px;float:right;margin-top:4px;">
|
||||
<div id="btnbedit" onclick="EditBasicDetails()" title="edit basic details" style="background:url('/matrix/images/edit_form.png');height:auto;width:16px;cursor:pointer;margin-top:2px"> </div>
|
||||
<div id="btnbsave" onclick="SaveBasicDetails()" title="save details" style="background:url('/matrix/images/disk.png');height:auto;width:16px;cursor:pointer;margin-top:2px"> </div>
|
||||
<div id="btnbcancel" onclick="CancelEdit()" title="cancel" style="background:url('/matrix/images/msgerror.png');height:auto;width:16px;cursor:pointer;margin-top:6px"> </div>
|
||||
</div>
|
||||
<div class="widget">
|
||||
<div class="lblcontainer">
|
||||
Appl No.
|
||||
</div>
|
||||
<div class="inputcontainer">
|
||||
<input type="text" id="applno" name="applno" maxlength="25" style="width:150px;text-transform:uppercase" value="" disabled="disabled" onblur="if(validate(this,'t','AlphaNumeric')){FindSameDet(this,'A','customername');}" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="widget">
|
||||
<div class="lblcontainer">
|
||||
Name
|
||||
</div>
|
||||
<div class="inputcontainer">
|
||||
<input type="text" id="customername" name="customername" maxlength="100" style="width:275px" value="" onblur="validate(this,'t','AlphaSpace');" disabled="disabled" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="widget">
|
||||
<div class="lblcontainer">
|
||||
DOB
|
||||
</div>
|
||||
<div class="inputcontainer">
|
||||
<input type="text" id="dob" name="dob" maxlength="10" style="width:80px" value="" onkeydown="return addSlashes(this,event)" onblur="validate(this,'f','Date')" disabled="disabled" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="widget">
|
||||
<div class="lblcontainer">
|
||||
Loan Amt
|
||||
</div>
|
||||
<div class="inputcontainer">
|
||||
<input type="text" id="loanamount" name="loanamount" maxlength="15" style="width:115px" value="" onblur="validate(this,'f','LoanAmount');" disabled="disabled" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="widget">
|
||||
<div class="lblcontainer">
|
||||
Branch
|
||||
</div>
|
||||
<div class="inputcontainer">
|
||||
<div class="divselect" id="divbranch" style="width:235px;">
|
||||
<select id="bank_branch_id" name="bank_branch_id" style="width:253px" onblur="validate(this,'t','');" disabled="disabled">
|
||||
<option value="-1" selected >SELECT</option>
|
||||
<c:forEach items="${branchlist}" var="brnch">
|
||||
<option value="${brnch[0]}">${brnch[1]}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="widget">
|
||||
<div class="lblcontainer">
|
||||
Product
|
||||
</div>
|
||||
<div class="inputcontainer">
|
||||
<div class="divselect" id="divproduct" style="width:132px;">
|
||||
<select id="product" name="product" style="width:150px" onblur="validate(this,'t','');" disabled="disabled">
|
||||
<option value="-1" selected >SELECT</option>
|
||||
<c:forEach items="${prodlist}" var="prod">
|
||||
<option value="${prod[0]}">${prod[1]}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="widget">
|
||||
<div class="lblcontainer">
|
||||
App Type
|
||||
</div>
|
||||
<div class="inputcontainer">
|
||||
<div class="divselect" id="divapptype" style="width:135px;">
|
||||
<select id="apptype" name="apptype" style="width:153px" onblur="validate(this,'t','');" disabled="disabled">
|
||||
<option value="-1" selected>SELECT</option>
|
||||
<c:forEach items="${typelist}" var="type">
|
||||
<option value="${type[0]}">${type[1]}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="widget">
|
||||
<div class="lblcontainer">
|
||||
Category
|
||||
</div>
|
||||
<div class="inputcontainer">
|
||||
<div class="divselect" id="divcategory" style="width:115px;">
|
||||
<select id="category" name="category" style="width:133px" disabled="disabled">
|
||||
<option value="-1" selected>SELECT</option>
|
||||
<c:forEach items="${catlist}" var="cat">
|
||||
<option value="${cat[0]}">${cat[1]}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
${dynamichtml}
|
||||
<input type="button" class="button" name="btnsave" style="float:right" value="Add Docs" id="btnsave" onclick="return AddDocs();" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<!-- -->
|
||||
</div>
|
||||
<!-- -->
|
||||
<!-- Document Details Visible for portfolios in which document verification could be done-->
|
||||
<div id="section7">
|
||||
<!-- Title -->
|
||||
<div class="title">
|
||||
<img class="matrix-title-icon" src="/matrix/images/documents.png" />
|
||||
<span class="matrix-title-text">Document Details</span>
|
||||
</div>
|
||||
<!-- -->
|
||||
<!-- Form (Section1) -->
|
||||
<div id="FormPanel1" class="FormPanel">
|
||||
<table align="center" class="matrix-form-controls" width="99%">
|
||||
<tr>
|
||||
<td>
|
||||
<div class="widget">
|
||||
<div class="lblcontainer">
|
||||
Document
|
||||
</div>
|
||||
<div class="inputcontainer">
|
||||
<div class="divselect" id="divdoctype" style="width:170px;">
|
||||
<select id="doctype" name="doctype" style="width:188px" onchange="changeLabel(this)" onblur="validate(this,'t','')">
|
||||
<option value="-1" uniqueidentifier="Unique No." sprovider="Service Provider" validuno="xxx" ymon="A.Y/Month" validymon="" defsprovider="" genlist="0" selected>SELECT</option>
|
||||
<c:forEach items="${doclist}" var="doc">
|
||||
<option value="${doc[0]}" uniqueidentifier="${doc[2]}" sprovider="${doc[3]}" validuno="${doc[4]}" ymon="${doc[5]}" validymon="${doc[6]}" defsprovider="${doc[7]}" genlist="${doc[8]}">${doc[1]}</option>
|
||||
</c:forEach>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="widget">
|
||||
<div class="lblcontainer">
|
||||
Name
|
||||
</div>
|
||||
<div class="inputcontainer">
|
||||
<input type="text" id="docholdername" name="docholdername" maxlength="100" style="width:200px" value="" onblur="validate(this,'t','AlphaSpace');" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="widget">
|
||||
<div class="lblcontainer" id="sprovider">
|
||||
Serivce Provider
|
||||
</div>
|
||||
<div class="inputcontainer">
|
||||
<input type="text" id="serviceprovider" name="serviceprovider" maxlength="100" style="width:200px" value="" onblur="validate(this,'t','SplInstruction');" />
|
||||
<input type="hidden" id="bank_id" name="serviceprovider_hidden" value="0" />
|
||||
<input type="hidden" id="serviceprovider_citylist" name="serviceprovider_citylist" value="0" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="widget">
|
||||
<div class="lblcontainer" id="uniqueidentifier">
|
||||
Unique No.
|
||||
</div>
|
||||
<div class="inputcontainer">
|
||||
<input type="text" id="uniqueno" name="uniqueno" maxlength="50" style="width:140px" value="" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="widget">
|
||||
<div class="lblcontainer" id="yearmon">
|
||||
A.Y/Month
|
||||
</div>
|
||||
<div class="inputcontainer">
|
||||
<input type="text" id="yearmonth" name="yearmonth" maxlength="100" style="width:180px" value="" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="widget">
|
||||
<div class="lblcontainer">
|
||||
Location
|
||||
</div>
|
||||
<div class="inputcontainer">
|
||||
<div class="divselect" id="divcity" style="width:120px;" >
|
||||
<select id="city" name="city" style="width:138px" onblur="validate(this,'t','');">
|
||||
<option value="-1" selected>SELECT</option>
|
||||
<option value="CITY" selected>CITY</option>
|
||||
<option value="SATELLITE CITY">SATELLITE CITY</option>
|
||||
<option value="OUT STATION">OUT STATION</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="widget">
|
||||
<div class="lblcontainer">
|
||||
Vendor
|
||||
</div>
|
||||
<div class="inputcontainer">
|
||||
<div class="divselect" id="divvendor" style="width:120px;">
|
||||
<select id="vendor_id" name="vendor_id" style="width:138px" onblur="validate(this,'f','');">
|
||||
<option value="-1" selected>SELECT</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
${docdynamichtml}
|
||||
<input type="button" class="button" name="btnadd" style="float:right" value="Add" id="btnadd" onclick="return AddNewDoc();" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div id="FormPanel2" class="FormPanel">
|
||||
<table border="0" cellspacing="0" width="100%" id="casetable">
|
||||
<thead class="thead">
|
||||
<tr title="Row Title" id="rowtitle">
|
||||
<td style="font-size:12px;width:20px">S.No</td>
|
||||
<td style="font-size:12px;width:150px">Name</td>
|
||||
<td style="font-size:12px;width:150px">Document</td>
|
||||
<td style="font-size:12px;width:150px">Provider</td>
|
||||
<td style="font-size:12px;width:150px">Unique No.</td>
|
||||
<td style="font-size:12px;width:100px">Extra</td>
|
||||
<td style="font-size:12px;width:50px">Location</td>
|
||||
<td style="font-size:12px;width:50px">Vendor</td>
|
||||
<td style="font-size:12px">Action</td>
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
</div>
|
||||
<!-- -->
|
||||
</div>
|
||||
<input type="hidden" id="dynamicfields" name="dynamicfields" value="${dynamicfields}" />
|
||||
<input type="hidden" id="docdynamicfields" name="dynamicfields" value="${docdynamicfields}" />
|
||||
<input type="hidden" id="uuid" name="uuid" value="" />
|
||||
<input type="hidden" id="case_id" name="case_id" value="" />
|
||||
<input type="hidden" id="company_id" name="company_id" value="${Sessvals.getCompanyID()}" />
|
||||
<input type="hidden" id="branch_id" name="branch_id" value="${Sessvals.getBranchID()}" />
|
||||
<input type="hidden" id="status" name="status" value="" />
|
||||
<input type="hidden" id="docv" name="docv" value="0" />
|
||||
<!-- -->
|
||||
<input type="hidden" id="invalidfields" value="0" />
|
||||
<c:if test="${formmode gt 0}">
|
||||
<div style="position:fixed;text-align:right;bottom:0px;width:980px;" class="buttonbar">
|
||||
<input type="hidden" id="invalidfields" value="0" />
|
||||
<input type="button" class="button" name="btnfirst" style="margin-left:5px;margin-top:-2px;float:left;width:80px" value="" id="btnfirst" accesskey="F" onclick="findRecord(1)" />
|
||||
<input type="button" class="button" name="btnprev" style="margin-top:-2px;float:left;width:80px" value="" id="btnprev" accesskey="P" onclick="findRecord(2)" />
|
||||
<input type="button" class="button" name="btnnext" style="margin-top:-2px;float:left;width:80px" value="" id="btnnext" accesskey="N" onclick="findRecord(3)" />
|
||||
<input type="button" class="button" name="btnlast" style="margin-top:-2px;float:left;width:80px" value="" id="btnlast" accesskey="L" onclick="findRecord(4)" />
|
||||
<input type="button" class="button" name="btnadd" style="float:right" value="Add New Record" id="btnadd" accesskey="A" onclick="return AddNewRecord();" />
|
||||
</div>
|
||||
</c:if>
|
||||
</form>
|
||||
<input type="hidden" id="formmode" name="formmode" value="${formmode}" />
|
||||
<input type="hidden" id="usid" name="usid" value="${usid}" />
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
<!-- Page Load Javascript -->
|
||||
<script language="javascript" type="text/javascript">
|
||||
InitPage('${portfolio_id}');
|
||||
</script>
|
||||
<!-- -->
|
||||
<!-- Process Message -->
|
||||
<c:if test="${not empty msg}">
|
||||
<script language="javascript" type="text/javascript"> CallMessage('${msg}',3000,200,300); </script>
|
||||
</c:if>
|
||||
<!-- -->
|
||||
</html>
|
||||
@@ -1,403 +0,0 @@
|
||||
var records=new Array(1);
|
||||
var fields=new Array(1);
|
||||
var recIndx = 0;
|
||||
var recpos = 0;
|
||||
var FocusAfter="customername";
|
||||
ajax_list_externalFile = "listservprovider";
|
||||
var validateHidden = false;
|
||||
function InitPage(port)
|
||||
{
|
||||
centerDivBoth("formcontainer","H");
|
||||
$("#portfolio_id").val(port);
|
||||
ManageButtons(true);
|
||||
$("#btnsave").hide();
|
||||
if(port>0)
|
||||
{
|
||||
if(document.getElementById("ajaxmsg") !== null)
|
||||
{
|
||||
CallMessage('1001AJX:warning:Another operation is being processed, please wait..',3000,200,300);
|
||||
return;
|
||||
}
|
||||
LoadingMsg("Fetching records, please wait...","ajaxmsg");
|
||||
RunAjax("GET","puncheddocrecs","val0="+port+"&val1="+($("#dynamicfields").val()),1);
|
||||
}
|
||||
}
|
||||
|
||||
function PrepareQStr()
|
||||
{
|
||||
var val0='';
|
||||
var val1='';
|
||||
var indx=2;
|
||||
autocut=0;
|
||||
var lindx=fields[0].length-1;
|
||||
var cid=$("#case_id").val();
|
||||
var temp='';
|
||||
|
||||
for(indx;indx<lindx;indx++)
|
||||
{
|
||||
temp='';
|
||||
if($("#"+fields[0][indx]).length > 0)
|
||||
{
|
||||
if(fields[0][indx]=='docv' || fields[0][indx]=='status')
|
||||
{
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
temp="''"+$("#"+fields[0][indx]).val().replace(/,/g, ' ')+"''";
|
||||
}
|
||||
val0=val0+fields[0][indx]+',';
|
||||
val1=val1+temp+",";
|
||||
records[recpos][indx]=temp.replace(/\'/g,'');
|
||||
}
|
||||
else
|
||||
{
|
||||
val0=val0+fields[0][indx]+',';
|
||||
val1=val1+"NULL,";
|
||||
records[recpos][indx]=temp.replace(/\'/g,'');
|
||||
}
|
||||
}
|
||||
val1=val1.replace(/&/g,'~AmP~');
|
||||
return "val0="+val0+"&val1="+val1+"&val2="+cid+"&val3="+($("#uuid").val())+"&val4="+autocut+"&val5="+($("#usid").val())+"&val6="+($("#portfolio_id").val());
|
||||
}
|
||||
function GotoRecord(el)
|
||||
{
|
||||
recno=el.value;
|
||||
if(recno!='')
|
||||
{
|
||||
if(recno > recIndx || recno <=0)
|
||||
{
|
||||
CallMessage('1001IRNG:error:Invalid input. Out of range',3000,200,300);
|
||||
}
|
||||
else
|
||||
{
|
||||
recpos=recno-1;
|
||||
FillDetails(recpos);
|
||||
}
|
||||
}
|
||||
}
|
||||
function AddNewRecord()
|
||||
{
|
||||
if(recIndx== 0 || records[recIndx-1][0]!='0')
|
||||
{
|
||||
var cols=fields[0].length;
|
||||
recIndx = recIndx+1;
|
||||
recpos = recIndx-1;
|
||||
records[recpos]=new Array(cols);
|
||||
records[recpos][0]='0';
|
||||
records[recpos][1]=$("#portfolio_id").val();
|
||||
records[recpos][cols-4]='0';
|
||||
records[recpos][cols-3]=$("#company_id").val();
|
||||
records[recpos][cols-2]=$("#branch_id").val();
|
||||
records[recpos][cols-1]='';
|
||||
}
|
||||
else
|
||||
{
|
||||
recpos=recIndx-1;
|
||||
}
|
||||
FillDetails(recpos);
|
||||
}
|
||||
function AfterResponse(response,oprID)
|
||||
{
|
||||
var rindx=0;
|
||||
if(oprID==1)
|
||||
{
|
||||
$("#ajaxmsg").remove();
|
||||
if(response.trim().search('Error')==-1)
|
||||
{
|
||||
var rows=response.split(RowDelim);
|
||||
for(rindx=0;rindx<rows.length-1;rindx++)
|
||||
{
|
||||
var cindx=0;
|
||||
var cols=rows[rindx].split(ColDelim);
|
||||
if(rindx==0)
|
||||
{
|
||||
fields[rindx]=new Array(cols.length);
|
||||
}
|
||||
else
|
||||
{
|
||||
records[rindx-1]=new Array(cols.length);
|
||||
}
|
||||
for(cindx=0;cindx<cols.length;cindx++)
|
||||
{
|
||||
if(rindx==0)
|
||||
{
|
||||
fields[rindx][cindx]=cols[cindx];
|
||||
}
|
||||
else
|
||||
{
|
||||
records[rindx-1][cindx]=cols[cindx];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
CallMessage(response,3000,200,300);
|
||||
}
|
||||
recIndx= rindx==0 ? rindx : rindx-1;
|
||||
$("#recfound").html("<b>( 0 / "+(recIndx==0 ? "0" : recIndx)+" )</b>");
|
||||
recpos=0;
|
||||
FillDetails(recpos);
|
||||
}
|
||||
else if(oprID==2)
|
||||
{
|
||||
$("#ajaxmsg").remove();
|
||||
collen=fields[0].length;
|
||||
if(response.trim().search('Error')==-1)
|
||||
{
|
||||
if(autocut==1)
|
||||
{
|
||||
records[recpos][collen-4]='1';
|
||||
}
|
||||
if($("#case_id").val()!='0')
|
||||
{
|
||||
findRecord(3);
|
||||
}
|
||||
else
|
||||
{
|
||||
records[recpos][0]=response.split(ColDelim)[0];
|
||||
records[recpos][collen-1]=response.split(ColDelim)[1];
|
||||
AddNewRecord();
|
||||
}
|
||||
CallMessage('1001IRNG:info:Record updated successfully',3000,200,300);
|
||||
}
|
||||
else
|
||||
{
|
||||
records[recpos][collen-4]='-1';
|
||||
CallMessage(response,3000,200,300);
|
||||
}
|
||||
}
|
||||
else if(oprID==3)
|
||||
{
|
||||
$("#ajaxmsg").remove();
|
||||
if(response.trim().search('Error')==-1)
|
||||
{
|
||||
CallMessage('1001IRNG:info:Record updated successfully',3000,200,300);
|
||||
}
|
||||
else
|
||||
{
|
||||
CallMessage(response,3000,200,300);
|
||||
}
|
||||
}
|
||||
else if(oprID==4)
|
||||
{
|
||||
if(response.trim().search('Error')==-1)
|
||||
{
|
||||
FillDD("vendor_id",response,RowDelim,ColDelim);
|
||||
if(currow != null)
|
||||
{
|
||||
$("#vendor_id").val($("#doclist tr:eq("+currow+")").find('td').eq(6).attr("id"));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
CallMessage(response,3000,200,300);
|
||||
}
|
||||
}
|
||||
else if(oprID==5)
|
||||
{
|
||||
if(response.trim().search('Error')==-1)
|
||||
{
|
||||
alert(response);
|
||||
}
|
||||
else
|
||||
{
|
||||
CallMessage(response,3000,200,300);
|
||||
}
|
||||
}
|
||||
}
|
||||
function findRecord(arrOpr)
|
||||
{
|
||||
tempPos= recpos;
|
||||
maxLen= recIndx-1;
|
||||
if(arrOpr==1) tempPos=0;
|
||||
if(arrOpr==2)
|
||||
{
|
||||
if(tempPos>0) tempPos=tempPos-1;
|
||||
else return false;
|
||||
}
|
||||
if(arrOpr==3)
|
||||
{
|
||||
if(tempPos<maxLen) tempPos=tempPos+1;
|
||||
else return false;
|
||||
}
|
||||
if(arrOpr==4) tempPos=maxLen;
|
||||
recpos= tempPos;
|
||||
FillDetails(recpos);
|
||||
}
|
||||
function SearchRecord(elm)
|
||||
{
|
||||
var found=false;
|
||||
var skey=elm.value.trim().toLowerCase();
|
||||
for(rindx=0;rindx<records.length;rindx++)
|
||||
{
|
||||
if(records[rindx][3].trim().toLowerCase().search(skey)>-1)
|
||||
{
|
||||
recpos=rindx;
|
||||
found=true;
|
||||
FillDetails(recpos);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!found)
|
||||
{
|
||||
CallMessage('NOREC1001:error:No record found.',3000,200,300);
|
||||
}
|
||||
}
|
||||
function FillDetails(indx)
|
||||
{
|
||||
if(recIndx > 0)
|
||||
{
|
||||
CancelEdit();
|
||||
document.forms['casedetails'].reset();
|
||||
$("#doclist").html('');
|
||||
resetDocForm();
|
||||
$("#recfound").html("<b>( "+(indx+1)+" / "+(recIndx==0 ? "0" : recIndx)+" )</b>");
|
||||
var cols = fields[0].length;
|
||||
var findx=0;
|
||||
for(findx=0;findx < cols;findx++)
|
||||
{
|
||||
if($("#"+fields[0][findx]).length > 0)
|
||||
{
|
||||
$("#"+fields[0][findx]).val(records[indx][findx]);
|
||||
}
|
||||
}
|
||||
var data = jQuery.parseJSON(records[indx][cols-5].replace('},]}','}]}'));
|
||||
var tdocs = data.docs.length;
|
||||
for(indx = 0;indx < tdocs; indx++)
|
||||
{
|
||||
var did = data.docs[indx].doc_id;
|
||||
data.docs[indx].doc_id="0";
|
||||
AddDocRow(data.docs[indx],did,data.docs[indx].docvendor);
|
||||
}
|
||||
document.getElementById("applno").focus();
|
||||
}
|
||||
else
|
||||
{
|
||||
CallMessage('5005MQRY:error:No records found',3000,200,300);
|
||||
AddNewRecord();
|
||||
}
|
||||
}
|
||||
function EditBasicDetails()
|
||||
{
|
||||
EnableDisableFields(false);
|
||||
ManageButtons(false);
|
||||
}
|
||||
function SaveBasicDetails()
|
||||
{
|
||||
if(confirm("Are you sure to update the details?"))
|
||||
{
|
||||
var QStr=PrepareQStr();
|
||||
QStr=QStr+"&val7=2";
|
||||
if(document.getElementById("ajaxmsg") !== null)
|
||||
{
|
||||
CallMessage('1001AJX:warning:Another operation is being processed, please wait..',3000,200,300);
|
||||
return;
|
||||
}
|
||||
LoadingMsg("Updating details, please wait...","ajaxmsg");
|
||||
RunAjax("POST","updatebdetails",QStr,3);
|
||||
EnableDisableFields(true);
|
||||
ManageButtons(true);
|
||||
|
||||
}
|
||||
}
|
||||
function CancelEdit()
|
||||
{
|
||||
SetPrevValues();
|
||||
EnableDisableFields(true);
|
||||
ManageButtons(true);
|
||||
}
|
||||
function EnableDisableFields(isEnabled)
|
||||
{
|
||||
var indx=2;
|
||||
if(typeof fields[0]!=='undefined')
|
||||
{
|
||||
var lindx=fields[0].length-1;
|
||||
for(indx;indx<lindx;indx++)
|
||||
{
|
||||
$("#"+fields[0][indx]).prop("disabled",isEnabled);
|
||||
}
|
||||
}
|
||||
indx=0;
|
||||
/*$("#applno").prop("disabled",isEnabled);
|
||||
$("#customername").prop("disabled",isEnabled);
|
||||
$("#dob").prop("disabled",isEnabled);
|
||||
$("#loanamount").prop("disabled",isEnabled);
|
||||
$("#bank_branch_id").prop("disabled",isEnabled);
|
||||
$("#product").prop("disabled",isEnabled);
|
||||
$("#apptype").prop("disabled",isEnabled);
|
||||
$("#category").prop("disabled",isEnabled);*/
|
||||
}
|
||||
function SetPrevValues()
|
||||
{
|
||||
$("#applno").val(records[recpos][3]);
|
||||
$("#customername").val(records[recpos][6]);
|
||||
$("#dob").val(records[recpos][9]);
|
||||
$("#loanamount").val(records[recpos][5]);
|
||||
$("#bank_branch_id").val(records[recpos][2]);
|
||||
$("#product").val(records[recpos][4]);
|
||||
$("#apptype").val(records[recpos][7]);
|
||||
$("#category").val(records[recpos][8]);
|
||||
}
|
||||
function ManageButtons(bmode)
|
||||
{
|
||||
if(bmode)
|
||||
{
|
||||
if($("#applno").val().length > 0)
|
||||
{
|
||||
$("#btnbedit").show();
|
||||
$("#btnsave").hide();
|
||||
$("#section7").show();
|
||||
}
|
||||
else
|
||||
{
|
||||
$("#btnbedit").hide();
|
||||
$("#btnsave").show();
|
||||
$("#section7").hide();
|
||||
EnableDisableFields(false);
|
||||
}
|
||||
$("#btnbsave").hide();
|
||||
$("#btnbcancel").hide();
|
||||
}
|
||||
else
|
||||
{
|
||||
$("#btnbedit").hide();
|
||||
$("#btnbsave").show();
|
||||
$("#btnbcancel").show();
|
||||
}
|
||||
}
|
||||
function changeLabel(el)
|
||||
{
|
||||
$("#uniqueidentifier").html($('option:selected',el).attr("uniqueidentifier"));
|
||||
$("#sprovider").html($('option:selected',el).attr("sprovider"));
|
||||
$("#serviceprovider").val($('option:selected',el).attr("defsprovider"));
|
||||
$("#serviceprovider_hidden").val("0");
|
||||
if($('option:selected',el).attr("genlist")>0)
|
||||
{
|
||||
$("#serviceprovider_citylist").val($('option:selected',el).attr("genlist"));
|
||||
$("#serviceprovider").attr('onkeyup',"ajax_showOptions(this,event)");
|
||||
validateHidden = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$("#serviceprovider_citylist").val("0");
|
||||
$("#serviceprovider").removeAttr('onkeyup');
|
||||
validateHidden = false;
|
||||
}
|
||||
$("#uniqueno").attr("onblur","validate(this,'t','"+$('option:selected',el).attr("validuno")+"')");
|
||||
$("#yearmon").html($('option:selected',el).attr("ymon"));
|
||||
$("#yearmonth").attr("onblur","validate(this,'f','"+$('option:selected',el).attr("validymon")+"')");
|
||||
ValidateEntry('f');
|
||||
GetVerifierList(el);
|
||||
}
|
||||
function GetVerifierList(el)
|
||||
{
|
||||
$("#vendor_id").empty().append('<option value="-1" selected>SELECT</option>');
|
||||
if(el.value != '-1')
|
||||
{
|
||||
RunAjax("POST","getdocverlist","val0="+el.value,4);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
function collectDynamicFields() {
|
||||
const names = value("dynamicfields").split(window.ColDelim || "!C0L!").filter(Boolean);
|
||||
return names.reduce((result, name) => {
|
||||
if (/^(?:field(?:[1-9]|1[0-2])|dtfield1)$/.test(name) && element(name)) {
|
||||
if (/^(?:field(?:[1-9]|1[0-2]|150(?:_2)?)|dtfield1)$/i.test(name) && element(name)) {
|
||||
result[name] = value(name);
|
||||
}
|
||||
return result;
|
||||
@@ -99,11 +99,10 @@
|
||||
function applyResult(result, originalApplicationId) {
|
||||
element("case_id").value = result.applicationId;
|
||||
if (element("mvcode")) element("mvcode").value = result.mvCode || "";
|
||||
if (Array.isArray(window.fields?.[0]) && Array.isArray(window.records?.[window.recpos])) {
|
||||
[["case_id", result.applicationId], ["mvcode", result.mvCode]].forEach(([name, fieldValue]) => {
|
||||
const index = window.fields[0].indexOf(name);
|
||||
if (index >= 0) window.records[window.recpos][index] = fieldValue;
|
||||
});
|
||||
const currentRecord = window.records?.[window.recpos];
|
||||
if (currentRecord && !Array.isArray(currentRecord)) {
|
||||
currentRecord.case_id = result.applicationId;
|
||||
currentRecord.mvcode = result.mvCode;
|
||||
}
|
||||
notify("success", "APP-2001", `Application ${result.mvCode || result.applicationId} saved successfully.`);
|
||||
if (originalApplicationId === 0 && typeof window.AddNewRecord === "function") window.AddNewRecord();
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
* workflow is intentionally isolated in application-save.js.
|
||||
*/
|
||||
var records=[];
|
||||
var fields=[[]];
|
||||
var recIndx = 0;
|
||||
var recpos = 0;
|
||||
var SameAddr=[];
|
||||
@@ -20,6 +19,7 @@ var selectedAddr=-1;
|
||||
var FocusAfter="customername";
|
||||
var CHECKBOX_FIELDS=new Set(["rv","sradd","rtv","ov","soadd","otv","rco","pv","rcp","ocp","spadd","refv","docv"]);
|
||||
var DUPLICATE_OPERATION={R:19,O:20,P:21,A:22};
|
||||
var PUNCHED_RECORDS_URL="punchedrecs";
|
||||
|
||||
function InitPage()
|
||||
{
|
||||
@@ -48,7 +48,7 @@ function InitPage()
|
||||
return;
|
||||
}
|
||||
LoadingMsg("Fetching records, please wait...","ajaxmsg");
|
||||
RunAjax("GET","punchedrecs","val0="+encodeURIComponent(port)+"&val1="+encodeURIComponent($("#dynamicfields").val())+"&val2="+encodeURIComponent($("#uuid").val()),1);
|
||||
loadPunchedRecords(port,$("#uuid").val());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -74,7 +74,7 @@ if(recno!='')
|
||||
{
|
||||
for(var index = 0; index < records.length; index++ )
|
||||
{
|
||||
if( records[index][4] === recno ) {
|
||||
if( records[index].applno === recno ) {
|
||||
recpos = index;
|
||||
FillDetails(recpos);
|
||||
break;
|
||||
@@ -85,19 +85,12 @@ if(recno!='')
|
||||
}
|
||||
function AddNewRecord()
|
||||
{
|
||||
if(recIndx== 0 || records[recIndx-1][0]!='0')
|
||||
if(recIndx==0 || String(records[recIndx-1].case_id)!='0')
|
||||
{
|
||||
var cols=fields[0].length;
|
||||
recIndx = recIndx+1;
|
||||
recpos = recIndx-1;
|
||||
records[recpos]=Array(cols);
|
||||
records[recpos][0]='0';
|
||||
records[recpos][1]=$("#portfolio_id").val();
|
||||
records[recpos][cols-4]='0';
|
||||
records[recpos][cols-3]=$("#company_id").val();
|
||||
records[recpos][cols-2]=$("#branch_id").val();
|
||||
records[recpos][cols-1]='';
|
||||
records[recpos][2]='******';
|
||||
records[recpos]={case_id:'0',portfolio_id:$("#portfolio_id").val(),status:'0',
|
||||
company_id:$("#company_id").val(),branch_id:$("#branch_id").val(),uuid:'',mvcode:'******'};
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -107,26 +100,31 @@ function AddNewRecord()
|
||||
}
|
||||
function AfterResponse(response,oprID)
|
||||
{
|
||||
if(oprID==1) handleRecordsResponse(response);
|
||||
else if(oprID>=19 && oprID<=22) handleDuplicateDetailsResponse(response,oprID);
|
||||
if(oprID>=19 && oprID<=22) handleDuplicateDetailsResponse(response,oprID);
|
||||
}
|
||||
function handleRecordsResponse(response)
|
||||
async function loadPunchedRecords(portfolioId,documentCaseId)
|
||||
{
|
||||
$("#ajaxmsg").remove();
|
||||
var rowCount=0;
|
||||
if(response.trim().search('Error')==-1)
|
||||
try
|
||||
{
|
||||
var rows=response.split(RowDelim);
|
||||
fields[0]=rows[0].split(ColDelim);
|
||||
records=[];
|
||||
for(var index=1;index<rows.length-1;index++) records.push(rows[index].split(ColDelim));
|
||||
rowCount=rows.length-1;
|
||||
var query=new URLSearchParams({portfolioId:portfolioId,documentCaseId:documentCaseId || ""});
|
||||
var response=await fetch(PUNCHED_RECORDS_URL+"?"+query.toString(),{
|
||||
method:"GET",credentials:"same-origin",headers:{Accept:"application/json"}
|
||||
});
|
||||
var body=await response.json().catch(function(){return null;});
|
||||
if(!response.ok || !body || !body.success) throw body && body.message ? body.message : {};
|
||||
records=Array.isArray(body.data && body.data.records) ? body.data.records : [];
|
||||
recIndx=records.length;
|
||||
updateRecordCounter(0,recIndx);
|
||||
recpos=recIndx==0 ? 0 : recIndx-1;
|
||||
FillDetails(recpos);
|
||||
}
|
||||
else CygnusNotifications.showLegacy(response,{duration:3000});
|
||||
recIndx=rowCount==0 ? 0 : rowCount-1;
|
||||
updateRecordCounter(0,recIndx);
|
||||
recpos=recIndx==0 ? 0 : recIndx-1;
|
||||
FillDetails(recpos);
|
||||
catch(error)
|
||||
{
|
||||
CygnusNotifications.show({type:"danger",code:error.code || "APP-5002",
|
||||
message:error.message || "Cygnus could not load punched records.",referenceId:error.referenceId});
|
||||
records=[];recIndx=0;recpos=0;FillDetails(0);
|
||||
}
|
||||
finally{$("#ajaxmsg").remove();}
|
||||
}
|
||||
function handleDuplicateDetailsResponse(response,oprID)
|
||||
{
|
||||
@@ -172,8 +170,7 @@ function FillDetails(indx)
|
||||
{
|
||||
document.forms['casedetails'].reset();
|
||||
updateRecordCounter(indx+1,recIndx);
|
||||
for(var fieldIndex=0;fieldIndex<fields[0].length;fieldIndex++)
|
||||
fillRecordField(fields[0][fieldIndex],records[indx][fieldIndex]);
|
||||
Object.keys(records[indx]).forEach(function(fieldName){fillRecordField(fieldName,records[indx][fieldName]);});
|
||||
$("#btnsave").toggle($("#status").val()!='1');
|
||||
FireClickEvents();
|
||||
document.getElementById("applno").focus();
|
||||
@@ -186,7 +183,7 @@ function FillDetails(indx)
|
||||
}
|
||||
function fillRecordField(fieldName,fieldValue)
|
||||
{
|
||||
var field=document.getElementById(fieldName);
|
||||
var field=document.getElementById(fieldName) || dynamicFieldElement(fieldName);
|
||||
if(!field) return;
|
||||
if(CHECKBOX_FIELDS.has(fieldName))
|
||||
{
|
||||
@@ -195,6 +192,13 @@ function fillRecordField(fieldName,fieldValue)
|
||||
}
|
||||
field.value=fieldValue;
|
||||
}
|
||||
function dynamicFieldElement(fieldName)
|
||||
{
|
||||
var dynamicFields=document.querySelectorAll("#FormPanel6 [id]");
|
||||
for(var index=0;index<dynamicFields.length;index++)
|
||||
if(dynamicFields[index].id.toLowerCase()==fieldName.toLowerCase()) return dynamicFields[index];
|
||||
return null;
|
||||
}
|
||||
function updateRecordCounter(current,total)
|
||||
{
|
||||
$("#recfound").html("<b>( "+current+" / "+total+" )</b>");
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -39,57 +39,6 @@ import org.springframework.web.multipart.MultipartHttpServletRequest;
|
||||
@Controller
|
||||
@SessionAttributes({"Sessvals"})
|
||||
public class Ajax {
|
||||
@RequestMapping(value="punchedrecs",method=RequestMethod.GET )
|
||||
public @ResponseBody String PunchedRecords(@RequestParam String val0,@RequestParam String val1,@RequestParam String val2)
|
||||
{
|
||||
val1=(val1.replace(GlobalClass.ColDelim, ","));
|
||||
String fields="case_id,portfolio_id,mvcode,bank_branch_id,applno,product,loanamount,customername,apptype,category,dob,contactperson,mobileno,raddr1,raddr2,raddr3,rlandmark,Rcolony,rcity,rpincode,rphone,companyname,oaddr1,oaddr2,oaddr3,olandmark,Ocolony,ocity,opincode,department,designation,ophone,extension,paddr1,paddr2,paddr3,plandmark,Pcolony,pcity,ppincode,refname1,refaddress1,refcontactno1,refname2,refaddress2,refcontactno2,rv,rtv,ov,otv,pv,refv,docv,rco,rcp,ocp,specialinst,sradd,soadd,spadd,"+val1+"colr,colo,colp,fathername,bankcode,status,company_id,branch_id,uuid";
|
||||
DBFunctions DBF=new DBFunctions("1001");
|
||||
DBF.setProcessFlag(true);
|
||||
if(val2.trim().length() > 20)
|
||||
{
|
||||
val0="uuid='"+val2+"'";
|
||||
}
|
||||
else
|
||||
{
|
||||
val0="portfolio_id="+val0+" and (cutoffby is null or cutoffby=0)";
|
||||
}
|
||||
|
||||
String response= DBF.FetchRunQuery(24, (val0+GlobalClass.ColDelim+val1+GlobalClass.ColDelim+val2+GlobalClass.ColDelim).split(GlobalClass.ColDelim));
|
||||
fields=fields.replace(",", GlobalClass.ColDelim);
|
||||
fields=fields+GlobalClass.RowDelim;
|
||||
if(DBF.isProcessFlag())
|
||||
{
|
||||
response=fields+response;
|
||||
}
|
||||
else
|
||||
{
|
||||
response=DBF.getErrMsg();
|
||||
response=fields;
|
||||
}
|
||||
return response;
|
||||
}
|
||||
@RequestMapping(value="puncheddocrecs",method=RequestMethod.GET )
|
||||
public @ResponseBody String PunchedDocRecords(@RequestParam String val0,@RequestParam String val1)
|
||||
{
|
||||
val1=(val1.replace(GlobalClass.ColDelim, ","));
|
||||
String fields="case_id,portfolio_id,bank_branch_id,applno,product,loanamount,customername,apptype,category,dob,docv,"+val1+"docs,status,company_id,branch_id,uuid";
|
||||
DBFunctions DBF=new DBFunctions("1001");
|
||||
DBF.setProcessFlag(true);
|
||||
String response= DBF.FetchRunQuery(242, (val0+GlobalClass.ColDelim+val1+GlobalClass.ColDelim+"0"+GlobalClass.ColDelim).split(GlobalClass.ColDelim));
|
||||
fields=fields.replace(",", GlobalClass.ColDelim);
|
||||
fields=fields+GlobalClass.RowDelim;
|
||||
if(DBF.isProcessFlag())
|
||||
{
|
||||
response=fields+response;
|
||||
}
|
||||
else
|
||||
{
|
||||
response=DBF.getErrMsg();
|
||||
response=fields;
|
||||
}
|
||||
return response;
|
||||
}
|
||||
@RequestMapping(value="uploadservice",method=RequestMethod.POST )
|
||||
public @ResponseBody String UploadMNimbleCases(@RequestParam String params)
|
||||
{
|
||||
|
||||
@@ -1,128 +0,0 @@
|
||||
package matrix.nimble.edp.punching.controllers;
|
||||
|
||||
//servlet libraries
|
||||
import java.net.URLDecoder;
|
||||
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
|
||||
//spring libraries
|
||||
import matrix.nimble.edp.punching.model.PunchingHandler;
|
||||
import matrix.nimble.model.Session;
|
||||
import matrix.nimble.utilities.CommonFunctions;
|
||||
import matrix.nimble.utilities.GlobalClass;
|
||||
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.SessionAttributes;
|
||||
|
||||
@Controller
|
||||
@SessionAttributes({ "Sessvals" })
|
||||
public class Punching {
|
||||
|
||||
@RequestMapping(value = "initdocview", method = RequestMethod.POST)
|
||||
public String InitDocScreen(ModelMap model, HttpServletRequest request,
|
||||
@ModelAttribute(value = "Sessvals") Session Sessvals) {
|
||||
|
||||
PunchingHandler PH = new PunchingHandler();
|
||||
PH.setErrCode("1901");
|
||||
model.addAttribute("branchlist", null);
|
||||
model.addAttribute("prodlist", null);
|
||||
model.addAttribute("typelist", null);
|
||||
model.addAttribute("doclist", null);
|
||||
model.addAttribute("catlist", null);
|
||||
model.addAttribute("portfolio_id", "-1");
|
||||
model.addAttribute("Sessvals", Sessvals);
|
||||
PH.GetDDValues(240, Sessvals.getBranchID().split(GlobalClass.ColDelim));
|
||||
model.addAttribute("portlist", PH.getOptionvals());
|
||||
model.addAttribute("formmode", 0);
|
||||
model.addAttribute("stat", true);
|
||||
model.addAttribute("msg", "");
|
||||
return "edp/punching/initdocs";
|
||||
}
|
||||
|
||||
@RequestMapping(value = "docadd", method = RequestMethod.POST)
|
||||
public String PunchDocs(ModelMap model, HttpServletRequest request,
|
||||
@ModelAttribute(value = "Sessvals") Session Sessvals) {
|
||||
String msg = "";
|
||||
PunchingHandler PH = new PunchingHandler();
|
||||
CommonFunctions comFunc = new CommonFunctions();
|
||||
PH.setErrCode("1901");
|
||||
PH.setPortfolioid(request.getParameter("portfolio_id"));
|
||||
PH.setProcessFlag(true);
|
||||
PH.DocDynamicHtml();
|
||||
if (PH.isProcessFlag()) {
|
||||
model.addAttribute("dynamichtml", PH.getDynamicpanel());
|
||||
model.addAttribute("dynamicfields", PH.getDynamicfields());
|
||||
model.addAttribute("docdynamichtml", PH.getDocdynamicpanel());
|
||||
model.addAttribute("docdynamicfields", PH.getDocdynamicfields());
|
||||
} else {
|
||||
msg = PH.getErrMsg();
|
||||
}
|
||||
PH.GetDDValues(240, Sessvals.getBranchID().split(GlobalClass.ColDelim));
|
||||
model.addAttribute("portlist", PH.getOptionvals());
|
||||
PH.GetDDValues(4, PH.getPortfolioid().split(GlobalClass.ColDelim));
|
||||
model.addAttribute("branchlist", PH.getOptionvals());
|
||||
PH.GetDDValues(5,
|
||||
(Sessvals.getBranchID() + GlobalClass.ColDelim + "op.description='DOCUMENT' or op.description='APPTYPE'"
|
||||
+ GlobalClass.ColDelim).split(GlobalClass.ColDelim));
|
||||
if (PH.getOptionvals() != null) {
|
||||
model.addAttribute("typelist", comFunc.GetSubArray("APPTYPE", 2, PH.getOptionvals()));
|
||||
} else {
|
||||
model.addAttribute("typelist", null);
|
||||
}
|
||||
PH.GetDDValues(241, PH.getPortfolioid().split(GlobalClass.ColDelim));
|
||||
model.addAttribute("doclist", PH.getOptionvals());
|
||||
PH.GetDDValues(70,
|
||||
(PH.getPortfolioid() + GlobalClass.ColDelim + "op.description='CATEGORY' or op.description='PRODUCT'"
|
||||
+ GlobalClass.ColDelim).split(GlobalClass.ColDelim));
|
||||
if (PH.getOptionvals() != null) {
|
||||
model.addAttribute("prodlist", comFunc.GetSubArray("PRODUCT", 2, PH.getOptionvals()));
|
||||
model.addAttribute("catlist", comFunc.GetSubArray("CATEGORY", 2, PH.getOptionvals()));
|
||||
} else {
|
||||
model.addAttribute("prodlist", null);
|
||||
model.addAttribute("catlist", null);
|
||||
}
|
||||
model.addAttribute("portfolio_id", PH.getPortfolioid());
|
||||
model.addAttribute("usid", Sessvals.getUserID());
|
||||
model.addAttribute("Sessvals", Sessvals);
|
||||
model.addAttribute("formmode", 1);
|
||||
model.addAttribute("stat", PH.isProcessFlag());
|
||||
model.addAttribute("msg", msg);
|
||||
return "edp/punching/initdocs";
|
||||
}
|
||||
|
||||
@RequestMapping(value = "addeditdoc", method = RequestMethod.POST)
|
||||
public String AddEditDocs(@RequestParam String val0, @RequestParam String val1, @RequestParam String val2,
|
||||
@RequestParam String val3, @RequestParam String val4, @RequestParam String val5, @RequestParam String val6,
|
||||
@RequestParam String val7, @RequestParam String val8, @RequestParam String val9,
|
||||
@RequestParam String val10) {
|
||||
String retval = "success";
|
||||
try {
|
||||
// System.out.println(URLDecoder.decode(val0,"UTF-8"));
|
||||
// System.out.println(URLDecoder.decode(val1,"UTF-8"));
|
||||
// System.out.println(URLDecoder.decode(val2,"UTF-8"));
|
||||
// System.out.println(URLDecoder.decode(val3,"UTF-8"));
|
||||
// System.out.println(URLDecoder.decode(val4,"UTF-8"));
|
||||
// System.out.println(URLDecoder.decode(val6,"UTF-8"));
|
||||
// System.out.println(URLDecoder.decode(val7,"UTF-8"));
|
||||
// System.out.println(URLDecoder.decode(val8,"UTF-8"));
|
||||
// System.out.println(URLDecoder.decode(val9,"UTF-8"));
|
||||
// System.out.println(URLDecoder.decode(val10,"UTF-8"));
|
||||
|
||||
PunchingHandler PH = new PunchingHandler();
|
||||
PH.setErrCode("1902");
|
||||
PH.setProcessFlag(true);
|
||||
|
||||
PH.AddEditDocs(val0, val1, val2, val3, val4, val6, val7, val8, val9, val10);
|
||||
|
||||
} catch (Exception exce) {
|
||||
retval = exce.getMessage();
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -25,6 +25,7 @@ import lib.models.ApplicationSaveData;
|
||||
import lib.models.ApplicationSaveResult;
|
||||
import lib.models.CaseSaveRequest;
|
||||
import lib.models.MessageDetails;
|
||||
import lib.models.PunchedRecordsData;
|
||||
import lib.constants.ApplicationMessage;
|
||||
import matrix.nimble.security.PayloadCryptoService;
|
||||
import lib.exceptions.ApplicationException;
|
||||
@@ -61,6 +62,34 @@ public class PunchingController extends AbstractAuthenticatedController {
|
||||
"publicKey", cryptoService.encodedPublicKey()));
|
||||
}
|
||||
|
||||
@RequestMapping(value = "punchedrecs", method = RequestMethod.GET,
|
||||
produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
@ResponseBody
|
||||
public ResponseEntity<ApiResponse<PunchedRecordsData>> punchedRecords(
|
||||
@RequestParam("portfolioId") Short portfolioId,
|
||||
@RequestParam(value = "documentCaseId", required = false) String documentCaseId,
|
||||
HttpSession httpSession) {
|
||||
ApiAuthorization authorization = authorizeApiPage(INIT_VIEW_ROUTE, httpSession);
|
||||
if (!authorization.isGranted()) {
|
||||
return ResponseEntity.status(authorization.error().getHttpStatus())
|
||||
.body(ApiResponse.failure(authorization.error()));
|
||||
}
|
||||
try {
|
||||
PunchedRecordsData data = punchingService.loadPunchedRecords(
|
||||
portfolioId, documentCaseId, authorization.session());
|
||||
return ResponseEntity.ok(ApiResponse.success(
|
||||
data, new MessageDetails(ApplicationMessage.APPLICATIONS_LOADED)));
|
||||
} catch (ApplicationException exception) {
|
||||
LOGGER.log(Level.WARNING, "Punched records were 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 load punched records", 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)
|
||||
|
||||
@@ -1,88 +0,0 @@
|
||||
package matrix.nimble.edp.punching.model;
|
||||
|
||||
public class DocDetails {
|
||||
private String portfolioid;
|
||||
private String bankbranchid;
|
||||
private String applno;
|
||||
private String customername;
|
||||
private String product;
|
||||
private String apptype;
|
||||
private String category;
|
||||
private String loanamount;
|
||||
private String dob;
|
||||
private String caseid;
|
||||
private String uuid;
|
||||
private int formmode;
|
||||
public String getPortfolioid() {
|
||||
return portfolioid;
|
||||
}
|
||||
public void setPortfolioid(String portfolioid) {
|
||||
this.portfolioid = portfolioid;
|
||||
}
|
||||
public String getBankbranchid() {
|
||||
return bankbranchid;
|
||||
}
|
||||
public void setBankbranchid(String bankbranchid) {
|
||||
this.bankbranchid = bankbranchid;
|
||||
}
|
||||
public String getApplno() {
|
||||
return applno;
|
||||
}
|
||||
public void setApplno(String applno) {
|
||||
this.applno = applno;
|
||||
}
|
||||
public String getCustomername() {
|
||||
return customername;
|
||||
}
|
||||
public void setCustomername(String customername) {
|
||||
this.customername = customername;
|
||||
}
|
||||
public String getProduct() {
|
||||
return product;
|
||||
}
|
||||
public void setProduct(String product) {
|
||||
this.product = product;
|
||||
}
|
||||
public String getApptype() {
|
||||
return apptype;
|
||||
}
|
||||
public void setApptype(String apptype) {
|
||||
this.apptype = apptype;
|
||||
}
|
||||
public String getCategory() {
|
||||
return category;
|
||||
}
|
||||
public void setCategory(String category) {
|
||||
this.category = category;
|
||||
}
|
||||
public String getLoanamount() {
|
||||
return loanamount;
|
||||
}
|
||||
public void setLoanamount(String loanamount) {
|
||||
this.loanamount = loanamount;
|
||||
}
|
||||
public String getDob() {
|
||||
return dob;
|
||||
}
|
||||
public void setDob(String dob) {
|
||||
this.dob = dob;
|
||||
}
|
||||
public String getCaseid() {
|
||||
return caseid;
|
||||
}
|
||||
public void setCaseid(String caseid) {
|
||||
this.caseid = caseid;
|
||||
}
|
||||
public String getUuid() {
|
||||
return uuid;
|
||||
}
|
||||
public void setUuid(String uuid) {
|
||||
this.uuid = uuid;
|
||||
}
|
||||
public int getFormmode() {
|
||||
return formmode;
|
||||
}
|
||||
public void setFormmode(int formmode) {
|
||||
this.formmode = formmode;
|
||||
}
|
||||
}
|
||||
@@ -1,13 +1,6 @@
|
||||
package matrix.nimble.edp.punching.model;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.commons.collections.FactoryUtils;
|
||||
import org.apache.commons.collections.list.LazyList;
|
||||
|
||||
import matrix.nimble.edp.cutoff.model.CutOffRecord;
|
||||
import matrix.nimble.utilities.CommonFunctions;
|
||||
import matrix.nimble.utilities.CommonFunctions;
|
||||
import matrix.nimble.utilities.DBFunctions;
|
||||
import matrix.nimble.utilities.GlobalClass;
|
||||
import matrix.nimble.utilities.StringFunctions;
|
||||
@@ -21,8 +14,6 @@ public class PunchingHandler {
|
||||
private String dynamicpanel;
|
||||
private String dynamicsection;
|
||||
private String dynamicfields;
|
||||
private String docdynamicfields;
|
||||
private String docdynamicpanel;
|
||||
private String portfolioid;
|
||||
private String [][] optionvals;
|
||||
|
||||
@@ -62,18 +53,6 @@ public class PunchingHandler {
|
||||
public void setDynamicpanel(String dynamicpanel) {
|
||||
this.dynamicpanel = dynamicpanel;
|
||||
}
|
||||
public String getDocdynamicfields() {
|
||||
return docdynamicfields;
|
||||
}
|
||||
public void setDocdynamicfields(String docdynamicfields) {
|
||||
this.docdynamicfields = docdynamicfields;
|
||||
}
|
||||
public String getDocdynamicpanel() {
|
||||
return docdynamicpanel;
|
||||
}
|
||||
public void setDocdynamicpanel(String docdynamicpanel) {
|
||||
this.docdynamicpanel = docdynamicpanel;
|
||||
}
|
||||
public String getDynamicsection() {
|
||||
return dynamicsection;
|
||||
}
|
||||
@@ -119,70 +98,6 @@ public class PunchingHandler {
|
||||
setOptionvals(null);
|
||||
}
|
||||
}
|
||||
public void DocDynamicHtml()
|
||||
{
|
||||
DBFunctions dbf=new DBFunctions(getErrCode());
|
||||
dbf.setProcessFlag(true);
|
||||
setDynamicfields("");
|
||||
setDynamicpanel("");
|
||||
setDocdynamicfields("");
|
||||
setDocdynamicpanel("");
|
||||
dbf.FetchRunQuery(74, (getPortfolioid()+GlobalClass.ColDelim+"75"+GlobalClass.ColDelim+"ADDDOC"+GlobalClass.ColDelim).split(GlobalClass.ColDelim));
|
||||
if(dbf.isProcessFlag())
|
||||
{
|
||||
CommonFunctions Cfunc=new CommonFunctions();
|
||||
String [][] ResultSet=dbf.getResultArray();
|
||||
if(ResultSet.length > 0)
|
||||
{
|
||||
Cfunc.setGeneratedHtml("");
|
||||
Cfunc.setPrevControl("");
|
||||
Cfunc.setDynamicCtrls("");
|
||||
for(int indx=0;indx<ResultSet.length;indx++)
|
||||
{
|
||||
String ControlVal="";
|
||||
String secContainer="";
|
||||
String Temp="";
|
||||
secContainer=Cfunc.DynamicControls(ResultSet[indx], ControlVal);
|
||||
if(secContainer.equals("Generalsec"))
|
||||
{
|
||||
Temp=getDynamicpanel();
|
||||
setDynamicfields(getDynamicfields()+ResultSet[indx][2]+GlobalClass.ColDelim);
|
||||
if(Temp.endsWith("</select></div></div></div>") && Cfunc.getGeneratedHtml().endsWith("</select></div></div></div>"))
|
||||
{
|
||||
if(!Cfunc.getGeneratedHtml().startsWith("<div class='widget'>"))
|
||||
{
|
||||
Temp=Temp.substring(0,Temp.lastIndexOf("</select></div></div></div>"));
|
||||
}
|
||||
|
||||
}
|
||||
setDynamicpanel(Temp+""+Cfunc.getGeneratedHtml());
|
||||
|
||||
}
|
||||
if(secContainer.equals("Docsec"))
|
||||
{
|
||||
Temp=getDocdynamicpanel();
|
||||
setDocdynamicfields(getDocdynamicfields()+ResultSet[indx][2]+GlobalClass.ColDelim);
|
||||
if(Temp.endsWith("</select></div></div></div>") && Cfunc.getGeneratedHtml().endsWith("</select></div></div></div>"))
|
||||
{
|
||||
if(!Cfunc.getGeneratedHtml().startsWith("<div class='widget'>"))
|
||||
{
|
||||
Temp=Temp.substring(0,Temp.lastIndexOf("</select></div></div></div>"));
|
||||
}
|
||||
|
||||
}
|
||||
setDocdynamicpanel(Temp+""+Cfunc.getGeneratedHtml());
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
setProcessFlag(false);
|
||||
setErrMsg(dbf.getErrMsg());
|
||||
setErrDesc(dbf.getErrDesc());
|
||||
}
|
||||
}
|
||||
}
|
||||
public void DynamicHtml(String pageId)
|
||||
{
|
||||
DBFunctions dbf=new DBFunctions(getErrCode());
|
||||
@@ -242,11 +157,6 @@ public class PunchingHandler {
|
||||
setErrDesc(dbf.getErrDesc());
|
||||
}
|
||||
}
|
||||
public void AddEditDocs(String docType,String docHolder,String serviceProvider,String uniqueNo,String bankId,String yearMonth,String city,String vendorId,String uuId,String userId)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public String[][] loadCasesForAddrCorrection() {
|
||||
String [][]resultArray = null;
|
||||
DBFunctions dbf=new DBFunctions(getErrCode());
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
package matrix.services.edp;
|
||||
|
||||
import com.cygnus.db.CygnusDbExecutor;
|
||||
import com.cygnus.db.RowView;
|
||||
import com.cygnus.db.SqlArrayParameter;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedHashMap;
|
||||
@@ -19,6 +21,7 @@ import lib.models.CasePunching;
|
||||
import lib.models.ApplicationSaveResult;
|
||||
import lib.models.MessageDetails;
|
||||
import lib.models.Option;
|
||||
import lib.models.PunchedRecordsData;
|
||||
import lib.models.UserSession;
|
||||
import lib.constants.ApplicationMessage;
|
||||
import lib.exceptions.ApplicationException;
|
||||
@@ -38,6 +41,9 @@ public class PunchingService {
|
||||
private static final String CATEGORY = "category.";
|
||||
|
||||
private static final Short ACTIVE = Short.valueOf((short) 1);
|
||||
private static final int PUNCHED_RECORDS_QUERY = 24;
|
||||
private static final Pattern DYNAMIC_FIELD = Pattern.compile(
|
||||
"(?:field(?:[1-9]|1[0-2]|150(?:_2)?)|dtfield1)", Pattern.CASE_INSENSITIVE);
|
||||
private static final SqlArrayParameter GENERAL_OPTION_TYPES =
|
||||
SqlArrayParameter.text("CITY", "APPTYPE");
|
||||
private static final SqlArrayParameter PORTFOLIO_OPTION_TYPES =
|
||||
@@ -87,6 +93,53 @@ public class PunchingService {
|
||||
}
|
||||
}
|
||||
|
||||
public PunchedRecordsData loadPunchedRecords(
|
||||
Short portfolioId, String documentCaseId, UserSession session) {
|
||||
if (dbExecutor == null || objectMapper == null) {
|
||||
throw new IllegalStateException("Punched-record dependencies are not configured");
|
||||
}
|
||||
if (portfolioId == null || portfolioId <= 0 || session == null) {
|
||||
throw new ApplicationException(
|
||||
ApplicationMessage.APPLICATION_VALIDATION_FAILED, "Portfolio is required");
|
||||
}
|
||||
String caseUuid = documentCaseId != null && documentCaseId.trim().length() > 20
|
||||
? documentCaseId.trim() : "";
|
||||
try {
|
||||
List<RowView> rows = dbExecutor.query(PUNCHED_RECORDS_QUERY, new Object[] {
|
||||
caseUuid, caseUuid, caseUuid, portfolioId,
|
||||
session.getCompanyId(), session.getBranchId()
|
||||
});
|
||||
return new PunchedRecordsData(rows.stream().map(this::toPunchedRecord).toList());
|
||||
} catch (ApplicationException exception) {
|
||||
throw exception;
|
||||
} catch (RuntimeException exception) {
|
||||
throw databaseFailure(exception);
|
||||
}
|
||||
}
|
||||
|
||||
private Map<String, Object> toPunchedRecord(RowView row) {
|
||||
Map<String, Object> record = new LinkedHashMap<>();
|
||||
row.asMap().forEach((name, value) -> {
|
||||
if (!"dynamic_fields".equalsIgnoreCase(name)) record.put(name, value == null ? "" : value);
|
||||
});
|
||||
Object dynamicValue = row.get("dynamic_fields");
|
||||
if (dynamicValue == null || dynamicValue.toString().isBlank()) return record;
|
||||
try {
|
||||
Map<String, Object> dynamicFields = objectMapper.readValue(
|
||||
dynamicValue.toString(), new TypeReference<Map<String, Object>>() {});
|
||||
dynamicFields.forEach((name, value) -> {
|
||||
if (name != null && DYNAMIC_FIELD.matcher(name).matches()) {
|
||||
record.put(name, value == null ? "" : value);
|
||||
}
|
||||
});
|
||||
return record;
|
||||
} catch (JsonProcessingException exception) {
|
||||
throw new ApplicationException(
|
||||
ApplicationMessage.INTERNAL_SERVER_ERROR,
|
||||
"Punched-record dynamic fields are invalid", exception);
|
||||
}
|
||||
}
|
||||
|
||||
private void validate(ApplicationDetails details, UserSession session) {
|
||||
if (details == null || session == null || details.getPortfolioId() == null
|
||||
|| details.getPortfolioId() <= 0) {
|
||||
@@ -122,8 +175,7 @@ public class PunchingService {
|
||||
}
|
||||
Map<String, String> allowed = new LinkedHashMap<>();
|
||||
details.getDynamicFields().forEach((name, value) -> {
|
||||
if (name != null && (name.matches("field(?:[1-9]|1[0-2])")
|
||||
|| "dtfield1".equals(name))) {
|
||||
if (name != null && DYNAMIC_FIELD.matcher(name).matches()) {
|
||||
allowed.put(name, value == null ? null : value.trim());
|
||||
}
|
||||
});
|
||||
|
||||
@@ -502,7 +502,7 @@ class RoleVisibleBatchMigrationTest {
|
||||
assertFalse(documents.contains("z-index:-1"));
|
||||
|
||||
Path punching = Path.of("build/WebContent/WEB-INF/app/edp/punching");
|
||||
for (String page : List.of("initcase.jsp", "initdocs.jsp")) {
|
||||
for (String page : List.of("initcase.jsp")) {
|
||||
String content = Files.readString(punching.resolve(page));
|
||||
assertTrue(content.contains("matrix-tool-workspace matrix-punch-workspace"), page);
|
||||
assertTrue(content.contains("punch-workspace-v3.css"), page);
|
||||
@@ -518,11 +518,6 @@ class RoleVisibleBatchMigrationTest {
|
||||
assertTrue(initialCase.contains("/matrix/js/edp/punching/initiation.js"));
|
||||
assertTrue(initialCase.contains("AddNewRecord()"));
|
||||
|
||||
String initialDocs = Files.readString(punching.resolve("initdocs.jsp"));
|
||||
assertTrue(initialDocs.contains("EditBasicDetails()"));
|
||||
assertTrue(initialDocs.contains("AddDocs()"));
|
||||
assertTrue(initialDocs.contains("AddNewDoc()"));
|
||||
|
||||
String editCases = Files.readString(punching.resolve("editcases.jsp"));
|
||||
assertTrue(editCases.contains("matrix-tool-workspace"));
|
||||
assertTrue(editCases.contains("SubmitForm('caselist','_parent','caseGrid')"));
|
||||
@@ -545,7 +540,7 @@ class RoleVisibleBatchMigrationTest {
|
||||
assertTrue(workspace.contains("left: auto !important"));
|
||||
|
||||
Path punching = Path.of("build/WebContent/WEB-INF/app/edp/punching");
|
||||
for (String page : List.of("initcase.jsp", "initdocs.jsp")) {
|
||||
for (String page : List.of("initcase.jsp")) {
|
||||
String content = Files.readString(punching.resolve(page));
|
||||
assertTrue(content.contains("matrix-add-cases"), page);
|
||||
assertTrue(content.contains("add-cases-v4.css"), page);
|
||||
|
||||
@@ -5,11 +5,12 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
import jakarta.servlet.http.HttpSession;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.context.support.FileSystemXmlApplicationContext;
|
||||
import org.springframework.stereotype.Controller;
|
||||
|
||||
import matrix.nimble.controller.Ajax;
|
||||
import matrix.nimble.edp.punching.controllers.PunchingController;
|
||||
|
||||
class SpringWebContextTest {
|
||||
|
||||
@@ -33,8 +34,8 @@ class SpringWebContextTest {
|
||||
|
||||
@Test
|
||||
void requestParameterNamesAreRetained() throws Exception {
|
||||
Method method = Ajax.class.getMethod(
|
||||
"PunchedRecords", String.class, String.class, String.class);
|
||||
Method method = PunchingController.class.getMethod(
|
||||
"punchedRecords", Short.class, String.class, HttpSession.class);
|
||||
|
||||
assertTrue(method.getParameters()[0].isNamePresent());
|
||||
assertTrue(method.getParameters()[1].isNamePresent());
|
||||
|
||||
@@ -4,16 +4,60 @@ import static org.junit.jupiter.api.Assertions.assertArrayEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
|
||||
import com.cygnus.db.CygnusDbExecutor;
|
||||
import com.cygnus.db.RowView;
|
||||
import com.cygnus.db.SqlArrayParameter;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import java.lang.reflect.Proxy;
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
import lib.models.PunchedRecordsData;
|
||||
import lib.models.UserSession;
|
||||
import lib.models.Option;
|
||||
import matrix.services.commons.CommonService;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
class PunchingServiceTest {
|
||||
|
||||
@Test
|
||||
void loadsPunchedRecordsAsFormShapedObjectsAndMergesDynamicFields() {
|
||||
AtomicReference<Object[]> parameters = new AtomicReference<>();
|
||||
Map<String, Object> columns = new LinkedHashMap<>();
|
||||
columns.put("case_id", 101);
|
||||
columns.put("applno", "APP-1");
|
||||
columns.put("dynamic_fields", "{\"field1\":\"Dealer\",\"field150_2\":\"Note\"}");
|
||||
RowView row = row(columns);
|
||||
CygnusDbExecutor executor = (CygnusDbExecutor) Proxy.newProxyInstance(
|
||||
getClass().getClassLoader(), new Class<?>[] {CygnusDbExecutor.class},
|
||||
(proxy, method, args) -> {
|
||||
if (method.getName().equals("query") && args.length == 2) {
|
||||
assertEquals(24, args[0]);
|
||||
parameters.set(((Object[]) args[1]).clone());
|
||||
return List.of(row);
|
||||
}
|
||||
throw new UnsupportedOperationException(method.toString());
|
||||
});
|
||||
PunchingService service = new PunchingService(
|
||||
new CommonService(), executor, new ObjectMapper());
|
||||
UserSession session = UserSession.builder()
|
||||
.companyId((short) 3).branchId((short) 7).build();
|
||||
|
||||
PunchedRecordsData result = service.loadPunchedRecords(
|
||||
(short) 38, "c4e2680c-fdb0-48cb-aa07-a563aa64cdb9", session);
|
||||
|
||||
assertArrayEquals(new Object[] {"c4e2680c-fdb0-48cb-aa07-a563aa64cdb9",
|
||||
"c4e2680c-fdb0-48cb-aa07-a563aa64cdb9",
|
||||
"c4e2680c-fdb0-48cb-aa07-a563aa64cdb9", (short) 38, (short) 3, (short) 7},
|
||||
parameters.get());
|
||||
assertEquals(101, result.records().getFirst().get("case_id"));
|
||||
assertEquals("Dealer", result.records().getFirst().get("field1"));
|
||||
assertEquals("Note", result.records().getFirst().get("field150_2"));
|
||||
assertEquals(false, result.records().getFirst().containsKey("dynamic_fields"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void loadsParameterizedOptionsAndNormalizesApplicationTypeGroup() {
|
||||
RecordingCommonService commonService = new RecordingCommonService();
|
||||
@@ -72,5 +116,15 @@ class PunchingServiceTest {
|
||||
return option;
|
||||
}
|
||||
|
||||
private static RowView row(Map<String, Object> columns) {
|
||||
return new RowView() {
|
||||
@Override public Object get(String column) { return columns.get(column); }
|
||||
@Override public <T> T get(String column, Class<T> type) {
|
||||
return type.cast(columns.get(column));
|
||||
}
|
||||
@Override public Map<String, Object> asMap() { return columns; }
|
||||
};
|
||||
}
|
||||
|
||||
private record Call(int queryId, Object[] parameters) {}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user