tango-app-api-trax 3.7.16 → 3.7.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -215,6 +215,10 @@ export async function startChecklist( req, res ) {
|
|
|
215
215
|
} );
|
|
216
216
|
let getupdatedchecklist = await processedchecklist.aggregate( findQuery );
|
|
217
217
|
let bucket = JSON.parse( process.env.BUCKET );
|
|
218
|
+
if ( req?.body?.section ) {
|
|
219
|
+
getupdatedchecklist[0]['sectionLength'] = getupdatedchecklist[0].questionAnswers.length;
|
|
220
|
+
getupdatedchecklist[0].questionAnswers= [ getupdatedchecklist[0].questionAnswers[0] ];
|
|
221
|
+
}
|
|
218
222
|
getupdatedchecklist[0].questionAnswers.forEach( ( section ) => {
|
|
219
223
|
section.questions.forEach( async ( question ) => {
|
|
220
224
|
if ( question.questionReferenceImage && question.questionReferenceImage!='' ) {
|
|
@@ -678,6 +682,90 @@ export async function sopMobilechecklistQuestionValidatorv1( req, res, next ) {
|
|
|
678
682
|
}
|
|
679
683
|
};
|
|
680
684
|
|
|
685
|
+
export async function sopMobilechecklistQuestionValidatorv2( req, res, next ) {
|
|
686
|
+
try {
|
|
687
|
+
let requestData = req.body;
|
|
688
|
+
|
|
689
|
+
logger.error( { function: 'CheckEmptyQA', error: requestData } );
|
|
690
|
+
|
|
691
|
+
requestData.questionAnswers = typeof requestData.questionAnswers == 'string' ? JSON.parse( requestData.questionAnswers ) : requestData.questionAnswers;
|
|
692
|
+
let getChecklistQA = await processedchecklist.findOne( { _id: new ObjectId( requestData.processedcheckListId ) }, { questionAnswers: 1, sourceCheckList_id: 1 } );
|
|
693
|
+
if ( !getChecklistQA ) {
|
|
694
|
+
return res.sendError( 'Check List Got Edited Please Fill Again', 422 );
|
|
695
|
+
}
|
|
696
|
+
|
|
697
|
+
if ( getChecklistQA && requestData.submittype == 'submit' ) {
|
|
698
|
+
let checkChecklistStatus = await checklistService.findOne( { _id: getChecklistQA.sourceCheckList_id }, { publish: 1 } );
|
|
699
|
+
if ( !checkChecklistStatus.publish ) {
|
|
700
|
+
return res.sendError( 'Checklist got edited.please contact admin', 400 );
|
|
701
|
+
}
|
|
702
|
+
}
|
|
703
|
+
|
|
704
|
+
if ( !requestData.questionAnswers.length ) {
|
|
705
|
+
return res.sendError( 'Please Fill all Required Fields', 400 );
|
|
706
|
+
}
|
|
707
|
+
|
|
708
|
+
if ( requestData.submittype == 'submit' ) {
|
|
709
|
+
let reqAnswers = requestData.questionAnswers;
|
|
710
|
+
logger.error( { functionName: 'payload', message: reqAnswers } );
|
|
711
|
+
let CLQAnswers = getChecklistQA.questionAnswers;
|
|
712
|
+
logger.error( { functionName: 'CLQAnswers', message: CLQAnswers } );
|
|
713
|
+
let validationCount= 0;
|
|
714
|
+
let errorCount = 0;
|
|
715
|
+
let originalSectionIndex = CLQAnswers.findIndex( ( section ) => reqAnswers[0].sectionName == section?.sectionOldName || reqAnswers[0].sectionName == section?.sectionName );
|
|
716
|
+
if ( originalSectionIndex == -1 || CLQAnswers.length != req.body.sectionLength ) {
|
|
717
|
+
errorCount++;
|
|
718
|
+
}
|
|
719
|
+
let originalSection = CLQAnswers[originalSectionIndex];
|
|
720
|
+
reqAnswers.forEach( ( reqSection ) => {
|
|
721
|
+
reqSection.section_id = originalSection.section_id;
|
|
722
|
+
} );
|
|
723
|
+
originalSection.questions.forEach( ( question ) => {
|
|
724
|
+
let sectionQuestion = reqAnswers.find( ( secQuestion ) => secQuestion.qname == question.oldQname || secQuestion.qname == question.qname );
|
|
725
|
+
if ( sectionQuestion ) {
|
|
726
|
+
if ( question.answerType == 'multiplechoicemultiple' && ( sectionQuestion.Multianswer == null || sectionQuestion.Multianswer == '' || !sectionQuestion.Multianswer.length ) ) {
|
|
727
|
+
validationCount++;
|
|
728
|
+
} else {
|
|
729
|
+
if ( ![ 'multiplechoicemultiple', 'multipleImage' ].includes( question.answerType ) && ( ( !sectionQuestion.linkType && ( sectionQuestion.answer == null || sectionQuestion.answer == '' ) ) || ( sectionQuestion.linkType && sectionQuestion.linkquestionenabled && ( sectionQuestion.answer == null || sectionQuestion.answer == '' ) ) ) ) {
|
|
730
|
+
validationCount++;
|
|
731
|
+
}
|
|
732
|
+
}
|
|
733
|
+
} else {
|
|
734
|
+
errorCount++;
|
|
735
|
+
}
|
|
736
|
+
} );
|
|
737
|
+
CLQAnswers.splice( originalSectionIndex, 1 );
|
|
738
|
+
CLQAnswers.forEach( ( section ) => {
|
|
739
|
+
section.questions.forEach( ( question ) => {
|
|
740
|
+
if ( !question.linkType || ( question.linkType && question.linkquestionenabled ) ) {
|
|
741
|
+
if ( !question?.userAnswer?.length ) {
|
|
742
|
+
validationCount++;
|
|
743
|
+
} else {
|
|
744
|
+
question.userAnswer.forEach( ( ans ) => {
|
|
745
|
+
if ( ans.answer == null || ans.answer == '' ) {
|
|
746
|
+
validationCount++;
|
|
747
|
+
}
|
|
748
|
+
} );
|
|
749
|
+
}
|
|
750
|
+
}
|
|
751
|
+
} );
|
|
752
|
+
} );
|
|
753
|
+
if ( validationCount ) {
|
|
754
|
+
return res.sendError( 'Please Fill all Required Fields', 400 );
|
|
755
|
+
} else if ( errorCount ) {
|
|
756
|
+
return res.sendError( 'Checklist got edited.please contact admin', 400 );
|
|
757
|
+
} else {
|
|
758
|
+
next();
|
|
759
|
+
}
|
|
760
|
+
} else {
|
|
761
|
+
next();
|
|
762
|
+
}
|
|
763
|
+
} catch ( e ) {
|
|
764
|
+
logger.error( { function: 'sopMobilechecklistQuestionValidator', error: e, body: req.body } );
|
|
765
|
+
return res.sendError( e, 500 );
|
|
766
|
+
}
|
|
767
|
+
};
|
|
768
|
+
|
|
681
769
|
export async function sopMobileTaskQuestionValidator( req, res, next ) {
|
|
682
770
|
try {
|
|
683
771
|
let requestData = req.body;
|
|
@@ -1479,6 +1567,408 @@ export async function sopMobilechecklistMultiSectionFormatterv1( req, res, next
|
|
|
1479
1567
|
}
|
|
1480
1568
|
};
|
|
1481
1569
|
|
|
1570
|
+
export async function sopMobilechecklistMultiSectionFormatterv2( req, res, next ) {
|
|
1571
|
+
try {
|
|
1572
|
+
let requestData = req.body;
|
|
1573
|
+
requestData.questionAnswers = typeof requestData.questionAnswers == 'string' ? JSON.parse( requestData.questionAnswers ) : requestData.questionAnswers;
|
|
1574
|
+
let getChecklistQA = await processedchecklist.findOne( { _id: new ObjectId( requestData.processedcheckListId ) }, { questionAnswers: 1 } );
|
|
1575
|
+
let reqAnswers = requestData.questionAnswers;
|
|
1576
|
+
logger.error( { functionName: 'updatedPayload', message: reqAnswers } );
|
|
1577
|
+
let CLQAnswers = getChecklistQA.questionAnswers;
|
|
1578
|
+
let originalSectionIndex = CLQAnswers.findIndex( ( section ) => reqAnswers[0].sectionName == section?.sectionOldName || reqAnswers[0].sectionName == section?.sectionName );
|
|
1579
|
+
let origSection = CLQAnswers[originalSectionIndex];
|
|
1580
|
+
if ( originalSectionIndex != -1 ) {
|
|
1581
|
+
CLQAnswers.splice( originalSectionIndex, 1 );
|
|
1582
|
+
}
|
|
1583
|
+
|
|
1584
|
+
if ( requestData.submittype == 'submit' ) {
|
|
1585
|
+
reqAnswers.forEach( ( reqA ) => {
|
|
1586
|
+
if ( ![ 'multiplechoicemultiple', 'multipleImage' ].includes( reqA?.answerType ) ) {
|
|
1587
|
+
if ( ( !reqA.linkType && ( reqA.answer == null || reqA.answer == '' ) ) || ( reqA.linkType && reqA.linkquestionenabled && ( reqA.answer == null || reqA.answer == '' ) ) ) {
|
|
1588
|
+
return res.sendError( 'Please Fill All Fields', 400 );
|
|
1589
|
+
}
|
|
1590
|
+
}
|
|
1591
|
+
} );
|
|
1592
|
+
CLQAnswers.forEach( ( section ) => {
|
|
1593
|
+
section.questions.forEach( ( question ) => {
|
|
1594
|
+
if ( !question.linkType || ( question.linkType && question.linkquestionenabled ) ) {
|
|
1595
|
+
if ( !question.userAnswer.length ) {
|
|
1596
|
+
return res.sendError( 'Please Fill All Fields', 400 );
|
|
1597
|
+
} else {
|
|
1598
|
+
question.userAnswer.forEach( ( ans ) => {
|
|
1599
|
+
if ( ans.answer == null || ans.answer == '' ) {
|
|
1600
|
+
return res.sendError( 'Please Fill All Fields', 400 );
|
|
1601
|
+
}
|
|
1602
|
+
} );
|
|
1603
|
+
}
|
|
1604
|
+
}
|
|
1605
|
+
} );
|
|
1606
|
+
} );
|
|
1607
|
+
}
|
|
1608
|
+
|
|
1609
|
+
if ( requestData?.editSubmit && requestData?.editSubmit == 'true' ) {
|
|
1610
|
+
reqAnswers.forEach( ( item ) => item.section_id = section.section_id );
|
|
1611
|
+
origSection.questions.forEach( ( question ) => {
|
|
1612
|
+
let sectionQuestion = requestSection.filter( ( secQuestion ) => secQuestion.qname == question.oldQname || secQuestion.qname == question.qname );
|
|
1613
|
+
if ( !sectionQuestion.length ) {
|
|
1614
|
+
let data = { ...requestSection[0] };
|
|
1615
|
+
data.answerType = question.answerType;
|
|
1616
|
+
data.qno = question.qno;
|
|
1617
|
+
data.uniqueqno = question.uniqueqno;
|
|
1618
|
+
data.uniqueqid = question.uniqueqid;
|
|
1619
|
+
data.qname = question.qname;
|
|
1620
|
+
data.oldQname = question?.oldQname || question.qname;
|
|
1621
|
+
data.answer = 'null';
|
|
1622
|
+
data.remarks = '';
|
|
1623
|
+
data.validationAnswer = '';
|
|
1624
|
+
data.Multianswer = [];
|
|
1625
|
+
data.linkType = question.linkType;
|
|
1626
|
+
data.linkquestionenabled = question.linkType;
|
|
1627
|
+
data.linkedQuestion = null;
|
|
1628
|
+
data.showLinked = null;
|
|
1629
|
+
data.parentanswer = '';
|
|
1630
|
+
data.dateRangeType = false;
|
|
1631
|
+
reqAnswers.push( data );
|
|
1632
|
+
}
|
|
1633
|
+
} );
|
|
1634
|
+
}
|
|
1635
|
+
|
|
1636
|
+
let sectionData;
|
|
1637
|
+
const uniqueArray = [ { id: origSection.section_id, name: origSection.sectionName } ];
|
|
1638
|
+
for ( let section of uniqueArray ) {
|
|
1639
|
+
let newArray = [];
|
|
1640
|
+
let qaAnswers = origSection.questions;
|
|
1641
|
+
let requestSection = reqAnswers;
|
|
1642
|
+
for ( let i = 0; i < requestSection.length; i++ ) {
|
|
1643
|
+
for ( let j = 0; j < qaAnswers.length; j++ ) {
|
|
1644
|
+
if ( requestSection[i].qname == qaAnswers[j].oldQname || requestSection[i].qname == qaAnswers[j].qname ) {
|
|
1645
|
+
if ( qaAnswers[j].answerType == 'yes/no' ) {
|
|
1646
|
+
let qaans = qaAnswers[j].answers;
|
|
1647
|
+
let yn = [];
|
|
1648
|
+
for ( let k = 0; k < qaans.length; k++ ) {
|
|
1649
|
+
if ( requestSection[i].answer == qaans[k].answer ) {
|
|
1650
|
+
if ( qaans[k].validationType == 'Capture Image' || qaans[k].validationType == 'Capture Video' ) {
|
|
1651
|
+
if ( requestSection[i].validationAnswer ) {
|
|
1652
|
+
let validateAns = decodeURIComponent( requestSection[i].validationAnswer.split( '?' )[0] );
|
|
1653
|
+
if ( validateAns.length ) {
|
|
1654
|
+
let splitImgUrl = validateAns.split( '/' );
|
|
1655
|
+
if ( splitImgUrl.length > 1 ) {
|
|
1656
|
+
splitImgUrl.splice( 0, 3 );
|
|
1657
|
+
qaans[k].validationAnswer = splitImgUrl.join( '/' ) || '';
|
|
1658
|
+
}
|
|
1659
|
+
}
|
|
1660
|
+
}
|
|
1661
|
+
} else {
|
|
1662
|
+
// qaans[k].descriptivetype = qaAnswers[j].descriptivetype || '';
|
|
1663
|
+
qaans[k].validationAnswer = requestSection[i].validationAnswer || '';
|
|
1664
|
+
}
|
|
1665
|
+
yn.push( qaans[k] );
|
|
1666
|
+
}
|
|
1667
|
+
}
|
|
1668
|
+
let structure = {};
|
|
1669
|
+
structure.qno = qaAnswers[j].qno;
|
|
1670
|
+
structure.uniqueqno = qaAnswers[j].uniqueqno;
|
|
1671
|
+
structure.uniqueqid = qaAnswers[j].uniqueqid;
|
|
1672
|
+
structure.qname = qaAnswers[j].qname;
|
|
1673
|
+
structure.answerType = qaAnswers[j].answerType;
|
|
1674
|
+
structure.runAI = qaAnswers[j].runAI;
|
|
1675
|
+
structure.runAIDescription = qaAnswers[j].runAIDescription;
|
|
1676
|
+
structure.allowUploadfromGallery = qaAnswers[j].allowUploadfromGallery;
|
|
1677
|
+
structure.remarks = requestSection[i].remarks;
|
|
1678
|
+
structure.answers = qaAnswers[j].answers;
|
|
1679
|
+
structure.userAnswer = yn;
|
|
1680
|
+
structure.linkType = qaAnswers[j].linkType;
|
|
1681
|
+
structure.linkquestionenabled = requestSection[i].linkquestionenabled;
|
|
1682
|
+
structure.parentanswer = requestSection[i].parentanswer;
|
|
1683
|
+
structure.questionReferenceImage = qaAnswers[j].questionReferenceImage || '';
|
|
1684
|
+
structure.multiQuestionReferenceImage = qaAnswers[j].multiQuestionReferenceImage || [];
|
|
1685
|
+
structure.descriptivetype = qaAnswers[j].descriptivetype;
|
|
1686
|
+
// structure.parentQuestion = requestSection[i]?.parentQuestion || qaAnswers[j].qno;
|
|
1687
|
+
structure.oldQname = qaAnswers[j]?.oldQname || qaAnswers[j].qname;
|
|
1688
|
+
if ( qaAnswers[j]?.taskId ) {
|
|
1689
|
+
structure.taskId = qaAnswers[j]?.taskId;
|
|
1690
|
+
structure.task = true;
|
|
1691
|
+
}
|
|
1692
|
+
if ( typeof qaAnswers[j]?.redo === 'boolean' && requestData.submittype === 'submit' ) {
|
|
1693
|
+
structure.redo = false;
|
|
1694
|
+
} else if ( typeof qaAnswers[j]?.redo === 'boolean' && requestData.submittype === 'draft' ) {
|
|
1695
|
+
structure.redo = qaAnswers[j]?.redo;
|
|
1696
|
+
}
|
|
1697
|
+
if ( qaAnswers[j]?.redoComment ) {
|
|
1698
|
+
structure.redoComment = qaAnswers[j]?.redoComment;
|
|
1699
|
+
};
|
|
1700
|
+
newArray.push( structure );
|
|
1701
|
+
} else if ( qaAnswers[j].answerType == 'multiplechoicesingle' ) {
|
|
1702
|
+
let qaans = qaAnswers[j].answers;
|
|
1703
|
+
let ms = [];
|
|
1704
|
+
for ( let k = 0; k < qaans.length; k++ ) {
|
|
1705
|
+
if ( requestSection[i].answer == qaans[k].answer ) {
|
|
1706
|
+
if ( qaans[k].validationType == 'Capture Image' || qaans[k].validationType == 'Capture Video' ) {
|
|
1707
|
+
if ( requestSection[i].validationAnswer ) {
|
|
1708
|
+
let validationAnswer = decodeURIComponent( requestSection[i].validationAnswer.split( '?' )[0] );
|
|
1709
|
+
if ( validationAnswer.length ) {
|
|
1710
|
+
let splitImgUrl = validationAnswer.split( '/' );
|
|
1711
|
+
if ( splitImgUrl.length > 1 ) {
|
|
1712
|
+
splitImgUrl.splice( 0, 3 );
|
|
1713
|
+
qaans[k].validationAnswer = splitImgUrl.join( '/' ) || '';
|
|
1714
|
+
}
|
|
1715
|
+
}
|
|
1716
|
+
}
|
|
1717
|
+
} else {
|
|
1718
|
+
// qaans[k].descriptivetype = qaAnswers[j].descriptivetype || '';
|
|
1719
|
+
qaans[k].validationAnswer = requestSection[i].validationAnswer || '';
|
|
1720
|
+
}
|
|
1721
|
+
ms.push( qaans[k] );
|
|
1722
|
+
}
|
|
1723
|
+
}
|
|
1724
|
+
let structure = {};
|
|
1725
|
+
structure.qno = qaAnswers[j].qno;
|
|
1726
|
+
structure.uniqueqno = qaAnswers[j].uniqueqno;
|
|
1727
|
+
structure.uniqueqid = qaAnswers[j].uniqueqid;
|
|
1728
|
+
structure.qname = qaAnswers[j].qname;
|
|
1729
|
+
structure.answerType = qaAnswers[j].answerType;
|
|
1730
|
+
structure.runAI = qaAnswers[j].runAI;
|
|
1731
|
+
structure.runAIDescription = qaAnswers[j].runAIDescription;
|
|
1732
|
+
structure.allowUploadfromGallery = qaAnswers[j].allowUploadfromGallery;
|
|
1733
|
+
structure.remarks = requestSection[i].remarks;
|
|
1734
|
+
structure.answers = qaAnswers[j].answers;
|
|
1735
|
+
structure.userAnswer = ms;
|
|
1736
|
+
structure.linkType = qaAnswers[j].linkType;
|
|
1737
|
+
structure.linkquestionenabled = requestSection[i].linkquestionenabled;
|
|
1738
|
+
structure.parentanswer = requestSection[i].parentanswer;
|
|
1739
|
+
structure.questionReferenceImage = qaAnswers[j].questionReferenceImage || '';
|
|
1740
|
+
structure.multiQuestionReferenceImage = qaAnswers[j].multiQuestionReferenceImage || [];
|
|
1741
|
+
structure.descriptivetype = qaAnswers[j].descriptivetype;
|
|
1742
|
+
// structure.parentQuestion = requestSection[i]?.parentQuestion || qaAnswers[j].qno;
|
|
1743
|
+
structure.oldQname = qaAnswers[j]?.oldQname || qaAnswers[j].qname;
|
|
1744
|
+
if ( qaAnswers[j]?.taskId ) {
|
|
1745
|
+
structure.taskId = qaAnswers[j]?.taskId;
|
|
1746
|
+
structure.task = true;
|
|
1747
|
+
}
|
|
1748
|
+
if ( typeof qaAnswers[j]?.redo === 'boolean' && requestData.submittype === 'submit' ) {
|
|
1749
|
+
structure.redo = false;
|
|
1750
|
+
} else if ( typeof qaAnswers[j]?.redo === 'boolean' && requestData.submittype === 'draft' ) {
|
|
1751
|
+
structure.redo = qaAnswers[j]?.redo;
|
|
1752
|
+
}
|
|
1753
|
+
if ( qaAnswers[j]?.redoComment ) {
|
|
1754
|
+
structure.redoComment = qaAnswers[j]?.redoComment;
|
|
1755
|
+
};
|
|
1756
|
+
newArray.push( structure );
|
|
1757
|
+
} else if ( qaAnswers[j].answerType == 'multiplechoicemultiple' ) {
|
|
1758
|
+
let qaans = qaAnswers[j].answers;
|
|
1759
|
+
let mcmo = [];
|
|
1760
|
+
for ( let k = 0; k < qaans.length; k++ ) {
|
|
1761
|
+
let separatedArray = typeof requestSection[i].Multianswer == 'string' ? JSON.parse( requestSection[i].Multianswer ) : requestSection[i].Multianswer;
|
|
1762
|
+
for ( let s = 0; s < separatedArray.length; s++ ) {
|
|
1763
|
+
if ( separatedArray[s].answer == qaans[k].answer ) {
|
|
1764
|
+
if ( qaans[k].validationType == 'Capture Image' || qaans[k].validationType == 'Capture Video' ) {
|
|
1765
|
+
if ( separatedArray[s].validationAnswer ) {
|
|
1766
|
+
let validationAnswer = decodeURIComponent( separatedArray[s].validationAnswer.split( '?' )[0] );
|
|
1767
|
+
if ( validationAnswer.length ) {
|
|
1768
|
+
let splitImgUrl = validationAnswer.split( '/' );
|
|
1769
|
+
if ( splitImgUrl.length > 1 ) {
|
|
1770
|
+
splitImgUrl.splice( 0, 3 );
|
|
1771
|
+
qaans[k].validationAnswer = splitImgUrl.join( '/' ) || '';
|
|
1772
|
+
}
|
|
1773
|
+
}
|
|
1774
|
+
}
|
|
1775
|
+
} else {
|
|
1776
|
+
// qaans[k].descriptivetype = qaAnswers[j].descriptivetype || '';
|
|
1777
|
+
qaans[k].validationAnswer = separatedArray[s].validationAnswer || '';
|
|
1778
|
+
}
|
|
1779
|
+
|
|
1780
|
+
mcmo.push( qaans[k] );
|
|
1781
|
+
}
|
|
1782
|
+
}
|
|
1783
|
+
}
|
|
1784
|
+
let structure = {};
|
|
1785
|
+
structure.qno = qaAnswers[j].qno;
|
|
1786
|
+
structure.uniqueqno = qaAnswers[j].uniqueqno;
|
|
1787
|
+
structure.qno = qaAnswers[j].qno;
|
|
1788
|
+
structure.qname = qaAnswers[j].qname;
|
|
1789
|
+
structure.answerType = qaAnswers[j].answerType;
|
|
1790
|
+
structure.runAI = qaAnswers[j].runAI;
|
|
1791
|
+
structure.runAIDescription = qaAnswers[j].runAIDescription;
|
|
1792
|
+
structure.allowUploadfromGallery = qaAnswers[j].allowUploadfromGallery;
|
|
1793
|
+
structure.remarks = requestSection[i].remarks;
|
|
1794
|
+
structure.answers = qaAnswers[j].answers;
|
|
1795
|
+
structure.userAnswer = mcmo;
|
|
1796
|
+
structure.linkType = qaAnswers[j].linkType;
|
|
1797
|
+
structure.linkquestionenabled = requestSection[i].linkquestionenabled;
|
|
1798
|
+
structure.parentanswer = requestSection[i].parentanswer;
|
|
1799
|
+
structure.questionReferenceImage = qaAnswers[j].questionReferenceImage || '';
|
|
1800
|
+
structure.multiQuestionReferenceImage = qaAnswers[j].multiQuestionReferenceImage || [];
|
|
1801
|
+
structure.descriptivetype = qaAnswers[j].descriptivetype;
|
|
1802
|
+
// structure.parentQuestion = requestSection[i]?.parentQuestion || qaAnswers[j].qno;
|
|
1803
|
+
structure.oldQname = qaAnswers[j]?.oldQname || qaAnswers[j].qname;
|
|
1804
|
+
if ( qaAnswers[j]?.taskId ) {
|
|
1805
|
+
structure.taskId = qaAnswers[j]?.taskId;
|
|
1806
|
+
structure.task = true;
|
|
1807
|
+
}
|
|
1808
|
+
if ( typeof qaAnswers[j]?.redo === 'boolean' && requestData.submittype === 'submit' ) {
|
|
1809
|
+
structure.redo = false;
|
|
1810
|
+
} else if ( typeof qaAnswers[j]?.redo === 'boolean' && requestData.submittype === 'draft' ) {
|
|
1811
|
+
structure.redo = qaAnswers[j]?.redo;
|
|
1812
|
+
}
|
|
1813
|
+
if ( qaAnswers[j]?.redoComment ) {
|
|
1814
|
+
structure.redoComment = qaAnswers[j]?.redoComment;
|
|
1815
|
+
};
|
|
1816
|
+
newArray.push( structure );
|
|
1817
|
+
} else if ( qaAnswers[j].answerType == 'multipleImage' ) {
|
|
1818
|
+
let separatedArray = typeof requestSection[i].Multianswer == 'string' ? JSON.parse( requestSection[i].Multianswer ) : requestSection[i].Multianswer;
|
|
1819
|
+
let mcmi = [];
|
|
1820
|
+
// for (let k = 0; k < qaans.length; k++) {
|
|
1821
|
+
for ( let s = 0; s < separatedArray.length; s++ ) {
|
|
1822
|
+
if ( separatedArray[s].answer && separatedArray[s].answer !='' ) {
|
|
1823
|
+
let newAnswer = {};
|
|
1824
|
+
let validationAnswer = decodeURIComponent( separatedArray[s].answer.split( '?' )[0] );
|
|
1825
|
+
if ( validationAnswer.length ) {
|
|
1826
|
+
let splitImgUrl = validationAnswer.split( '/' );
|
|
1827
|
+
if ( splitImgUrl.length > 1 ) {
|
|
1828
|
+
splitImgUrl.splice( 0, 3 );
|
|
1829
|
+
newAnswer.answer = splitImgUrl.join( '/' ) || '';
|
|
1830
|
+
}
|
|
1831
|
+
}
|
|
1832
|
+
|
|
1833
|
+
newAnswer.answeroptionNumber = 0;
|
|
1834
|
+
newAnswer.sopFlag = false;
|
|
1835
|
+
newAnswer.validation = false;
|
|
1836
|
+
newAnswer.validationType = '';
|
|
1837
|
+
newAnswer.referenceImage = '';
|
|
1838
|
+
newAnswer.allowUploadfromGallery = false;
|
|
1839
|
+
newAnswer.descriptivetype = '';
|
|
1840
|
+
newAnswer.showLinked = false;
|
|
1841
|
+
newAnswer.linkedQuestion = 0;
|
|
1842
|
+
newAnswer.nestedQuestion = [];
|
|
1843
|
+
newAnswer.index = s;
|
|
1844
|
+
newAnswer.runAI = qaAnswers[j].answers[0]?.runAI || false;
|
|
1845
|
+
newAnswer.runAIFeatures = qaAnswers[j].answers[0]?.runAIFeatures || [];
|
|
1846
|
+
newAnswer.runAIDescription = qaAnswers[j].answers[0]?.runAIDescription || '';
|
|
1847
|
+
mcmi.push( newAnswer );
|
|
1848
|
+
}
|
|
1849
|
+
}
|
|
1850
|
+
// }
|
|
1851
|
+
let structure = {};
|
|
1852
|
+
structure.qno = qaAnswers[j].qno;
|
|
1853
|
+
structure.uniqueqno = qaAnswers[j].uniqueqno;
|
|
1854
|
+
structure.uniqueqid = qaAnswers[j].uniqueqid;
|
|
1855
|
+
structure.qname = qaAnswers[j].qname;
|
|
1856
|
+
structure.answerType = qaAnswers[j].answerType;
|
|
1857
|
+
structure.runAI = qaAnswers[j].runAI;
|
|
1858
|
+
structure.runAIDescription = qaAnswers[j].runAIDescription;
|
|
1859
|
+
structure.allowUploadfromGallery = qaAnswers[j].allowUploadfromGallery;
|
|
1860
|
+
structure.remarks = requestSection[i].remarks;
|
|
1861
|
+
structure.answers = qaAnswers[j].answers;
|
|
1862
|
+
structure.userAnswer = mcmi;
|
|
1863
|
+
structure.linkType = qaAnswers[j].linkType;
|
|
1864
|
+
structure.linkquestionenabled = requestSection[i].linkquestionenabled;
|
|
1865
|
+
structure.parentanswer = requestSection[i].parentanswer;
|
|
1866
|
+
structure.questionReferenceImage = qaAnswers[j].questionReferenceImage || '';
|
|
1867
|
+
structure.multiQuestionReferenceImage = qaAnswers[j].multiQuestionReferenceImage || [];
|
|
1868
|
+
structure.descriptivetype = qaAnswers[j].descriptivetype;
|
|
1869
|
+
// structure.parentQuestion = requestSection[i]?.parentQuestion || qaAnswers[j].qno;
|
|
1870
|
+
structure.oldQname = qaAnswers[j]?.oldQname || qaAnswers[j].qname;
|
|
1871
|
+
if ( qaAnswers[j]?.taskId ) {
|
|
1872
|
+
structure.taskId = qaAnswers[j]?.taskId;
|
|
1873
|
+
structure.task = true;
|
|
1874
|
+
}
|
|
1875
|
+
if ( typeof qaAnswers[j]?.redo === 'boolean' && requestData.submittype === 'submit' ) {
|
|
1876
|
+
structure.redo = false;
|
|
1877
|
+
} else if ( typeof qaAnswers[j]?.redo === 'boolean' && requestData.submittype === 'draft' ) {
|
|
1878
|
+
structure.redo = qaAnswers[j]?.redo;
|
|
1879
|
+
}
|
|
1880
|
+
if ( qaAnswers[j]?.redoComment ) {
|
|
1881
|
+
structure.redoComment = qaAnswers[j]?.redoComment;
|
|
1882
|
+
};
|
|
1883
|
+
newArray.push( structure );
|
|
1884
|
+
} else {
|
|
1885
|
+
let des = [];
|
|
1886
|
+
if ( requestSection[i].answer != 'null' && requestSection[i].answer != '' && requestSection[i].answer != null ) {
|
|
1887
|
+
let validationAnswer = '';
|
|
1888
|
+
if ( requestSection[i].answer.split( '?' ).length > 1 ) {
|
|
1889
|
+
validationAnswer = decodeURIComponent( requestSection[i].answer.split( '?' )[0] );
|
|
1890
|
+
}
|
|
1891
|
+
if ( validationAnswer.length ) {
|
|
1892
|
+
let splitImgUrl = validationAnswer.split( '/' );
|
|
1893
|
+
if ( splitImgUrl.length > 1 ) {
|
|
1894
|
+
splitImgUrl.splice( 0, 3 );
|
|
1895
|
+
requestSection[i].answer = splitImgUrl.join( '/' );
|
|
1896
|
+
}
|
|
1897
|
+
}
|
|
1898
|
+
let ansstructure = {
|
|
1899
|
+
answer: requestSection[i].answer,
|
|
1900
|
+
answeroptionNumber: 1,
|
|
1901
|
+
sopFlag: false,
|
|
1902
|
+
validation: false,
|
|
1903
|
+
validationType: '',
|
|
1904
|
+
validationAnswer: '',
|
|
1905
|
+
referenceImage: qaAnswers[j].answers[0].referenceImage || '',
|
|
1906
|
+
multiReferenceImage: qaAnswers[j].answers[0].multiReferenceImage || [],
|
|
1907
|
+
showLinked: qaAnswers[j].answers[0].showLinked,
|
|
1908
|
+
linkedQuestion: qaAnswers[j].answers[0].linkedQuestion,
|
|
1909
|
+
runAI: qaAnswers[j].answers[0]?.runAI || false,
|
|
1910
|
+
runAIFeatures: qaAnswers[j]?.answers[0]?.runAIFeatures || [],
|
|
1911
|
+
runAIDescription: qaAnswers[j].answers[0]?.runAIDescription || '',
|
|
1912
|
+
};
|
|
1913
|
+
if ( qaAnswers[j].answerType == 'date' ) {
|
|
1914
|
+
ansstructure.dateRangeType = requestSection[i].dateRangeType || false;
|
|
1915
|
+
}
|
|
1916
|
+
des.push( ansstructure );
|
|
1917
|
+
}
|
|
1918
|
+
let structure = {};
|
|
1919
|
+
structure.qno = qaAnswers[j].qno;
|
|
1920
|
+
structure.uniqueqno = qaAnswers[j].uniqueqno;
|
|
1921
|
+
structure.uniqueqid = qaAnswers[j].uniqueqid;
|
|
1922
|
+
structure.qname = qaAnswers[j].qname;
|
|
1923
|
+
structure.answerType = qaAnswers[j].answerType;
|
|
1924
|
+
structure.runAI = qaAnswers[j].runAI;
|
|
1925
|
+
structure.runAIDescription = qaAnswers[j].runAIDescription;
|
|
1926
|
+
structure.allowUploadfromGallery = qaAnswers[j].allowUploadfromGallery;
|
|
1927
|
+
structure.remarks = requestSection[i].remarks;
|
|
1928
|
+
structure.answers = qaAnswers[j].answers;
|
|
1929
|
+
structure.userAnswer = des;
|
|
1930
|
+
structure.linkType = qaAnswers[j].linkType;
|
|
1931
|
+
structure.linkquestionenabled = requestSection[i].linkquestionenabled;
|
|
1932
|
+
structure.parentanswer = requestSection[i].parentanswer;
|
|
1933
|
+
structure.questionReferenceImage = qaAnswers[j].questionReferenceImage || '';
|
|
1934
|
+
structure.multiQuestionReferenceImage = qaAnswers[j].multiQuestionReferenceImage || [];
|
|
1935
|
+
structure.descriptivetype = qaAnswers[j].descriptivetype;
|
|
1936
|
+
// structure.parentQuestion = requestSection[i]?.parentQuestion || qaAnswers[j].qno;
|
|
1937
|
+
structure.oldQname = qaAnswers[j]?.oldQname || qaAnswers[j].qname;
|
|
1938
|
+
if ( qaAnswers[j]?.taskId ) {
|
|
1939
|
+
structure.taskId = qaAnswers[j]?.taskId;
|
|
1940
|
+
structure.task = true;
|
|
1941
|
+
}
|
|
1942
|
+
if ( typeof qaAnswers[j]?.redo === 'boolean' && requestData.submittype === 'submit' ) {
|
|
1943
|
+
structure.redo = false;
|
|
1944
|
+
} else if ( typeof qaAnswers[j]?.redo === 'boolean' && requestData.submittype === 'draft' ) {
|
|
1945
|
+
structure.redo = qaAnswers[j]?.redo;
|
|
1946
|
+
}
|
|
1947
|
+
if ( qaAnswers[j]?.redoComment ) {
|
|
1948
|
+
structure.redoComment = qaAnswers[j]?.redoComment;
|
|
1949
|
+
};
|
|
1950
|
+
newArray.push( structure );
|
|
1951
|
+
}
|
|
1952
|
+
}
|
|
1953
|
+
}
|
|
1954
|
+
}
|
|
1955
|
+
sectionData = {
|
|
1956
|
+
'section_id': section.id,
|
|
1957
|
+
'sectionName': section.name,
|
|
1958
|
+
'questions': newArray,
|
|
1959
|
+
};
|
|
1960
|
+
}
|
|
1961
|
+
|
|
1962
|
+
CLQAnswers.splice( originalSectionIndex, 0, sectionData );
|
|
1963
|
+
requestData.questionAnswers = CLQAnswers;
|
|
1964
|
+
logger.error( { message: requestData.questionAnswers, error: 'QuestionanswersPayload' } );
|
|
1965
|
+
next();
|
|
1966
|
+
} catch ( error ) {
|
|
1967
|
+
logger.error( { function: 'sopMobilechecklistMultiSectionFormatter', error: error, body: req.body } );
|
|
1968
|
+
return res.sendError( error, 500 );
|
|
1969
|
+
}
|
|
1970
|
+
};
|
|
1971
|
+
|
|
1482
1972
|
export async function sopMobileTaskMultiSectionFormatter( req, res, next ) {
|
|
1483
1973
|
try {
|
|
1484
1974
|
let requestData = req.body;
|
|
@@ -1878,7 +2368,7 @@ export async function submitChecklist( req, res ) {
|
|
|
1878
2368
|
updateData.questionFlag = flagCount;
|
|
1879
2369
|
updateData.submitTime_string = currentDateTime.format( 'hh:mm A, DD MMM YYYY' );
|
|
1880
2370
|
if ( requestData.deviceDetails && requestData.deviceDetails != '' ) {
|
|
1881
|
-
updateData.deviceDetails =JSON.parse( requestData.deviceDetails );
|
|
2371
|
+
updateData.deviceDetails = typeof requestData.deviceDetails == 'string' ? JSON.parse( requestData.deviceDetails ) : requestData.deviceDetails;
|
|
1882
2372
|
}
|
|
1883
2373
|
if ( requestData.submittype == 'draft' ) {
|
|
1884
2374
|
logger.info( `v5 => Checklist Save => store Name: ${getchecklist[0].storeName}, User Email: ${getchecklist[0].userEmail}, Checklist Name: ${getchecklist[0].checkListName}` );
|
|
@@ -4235,6 +4725,13 @@ export async function questionListV1( req, res ) {
|
|
|
4235
4725
|
logger.info( `v5 => Checklist Continue => store Name: ${getchecklist[0].storeName}, User Email: ${getchecklist[0].userEmail}, Checklist Name: ${getchecklist[0].checkListName}` );
|
|
4236
4726
|
let bucket = JSON.parse( process.env.BUCKET );
|
|
4237
4727
|
let cdnurl = JSON.parse( process.env.CDNURL );
|
|
4728
|
+
if ( req?.query?.sectionIndex ) {
|
|
4729
|
+
if ( getchecklist[0].questionAnswers.length <= req?.query?.sectionIndex ) {
|
|
4730
|
+
return res.sendError( 'Check List Got Edited Please Fill Again', 422 );
|
|
4731
|
+
}
|
|
4732
|
+
getchecklist[0]['sectionLength'] = getchecklist[0].questionAnswers.length;
|
|
4733
|
+
getchecklist[0].questionAnswers = [ getchecklist[0].questionAnswers[req?.query?.sectionIndex] ];
|
|
4734
|
+
}
|
|
4238
4735
|
for ( let [ secIndex, section ] of getchecklist[0].questionAnswers.entries() ) {
|
|
4239
4736
|
for ( let [ questionIndex, question ] of section.questions.entries() ) {
|
|
4240
4737
|
let Multianswer = [];
|
|
@@ -149,6 +149,7 @@ export const startSchema = joi.object( {
|
|
|
149
149
|
date: joi.string().required(),
|
|
150
150
|
processedcheckListId: joi.string().required(),
|
|
151
151
|
currentTime: joi.string().optional().allow( '' ),
|
|
152
|
+
section: joi.boolean().optional(),
|
|
152
153
|
} );
|
|
153
154
|
|
|
154
155
|
export const startValidation = {
|
|
@@ -12,6 +12,7 @@ mobileRouter
|
|
|
12
12
|
.post( '/startTask', isAllowedSessionHandler, validate( startValidation ), mobileController.startTask )
|
|
13
13
|
.post( '/submitCheckList', isAllowedSessionHandler, mobileController.sopMobilechecklistValidater, mobileController.sopMobilechecklistQuestionValidator, mobileController.sopMobilechecklistMultiSectionFormatter, mobileController.submitChecklist )
|
|
14
14
|
.post( '/submitCheckListv5', isAllowedSessionHandler, mobileController.sopMobilechecklistValidater, mobileController.sopMobilechecklistQuestionValidatorv1, mobileController.sopMobilechecklistMultiSectionFormatterv1, mobileController.submitChecklist )
|
|
15
|
+
.post( '/submitCheckListv6', isAllowedSessionHandler, mobileController.sopMobilechecklistValidater, mobileController.sopMobilechecklistQuestionValidatorv2, mobileController.sopMobilechecklistMultiSectionFormatterv2, mobileController.submitChecklist )
|
|
15
16
|
.post( '/submitTask', isAllowedSessionHandler, mobileController.sopMobilechecklistValidater, mobileController.sopMobileTaskQuestionValidator, mobileController.sopMobileTaskMultiSectionFormatter, mobileController.submitTask )
|
|
16
17
|
.post( '/submiteyeTestTask', isAllowedSessionHandler, mobileController.submiteyeTestTask )
|
|
17
18
|
.get( '/dashboard', isAllowedSessionHandler, validate( dashboardValidation ), mobileController.dashboard )
|