@@ -4716,48 +4716,59 @@ private void RenameSpecificKeys(JObject jObject, Dictionary<string, string> keyM
47164716
47174717 private string GetDescriptionNLPForRelatedActivities ( JToken envelope )
47184718 {
4719- string descriptionNLP = null ;
4720- int recipientCount = envelope [ "recipients" ] [ "recipientCount" ] . ToObject < int > ( ) ;
4721- var recipientCountInNaturalLanguage = ( recipientCount > 1 ) ?
4722- ( " and " + ( recipientCount - 1 ) . ToString ( ) + " others have " ) : " " ;
4723-
4724- JArray documentArray = ( envelope [ "envelopeDocuments" ] as JArray ) ?? new JArray ( ) ;
4725- var documentCount = documentArray . Count ;
4726- string documentCountInNaturalLanguage = "" ;
4727- JArray signersArray = ( envelope [ "recipients" ] [ "signers" ] as JArray ) ?? new JArray ( ) ;
4728-
4729- if ( documentCount == 3 )
4730- {
4731- documentCountInNaturalLanguage = $ " and 1 other document";
4732- }
4733- else if ( documentCount > 3 )
4734- {
4735- documentCountInNaturalLanguage = $ " and { documentCount - 2 } other documents";
4736- }
4737-
4738- if ( envelope [ "status" ] . ToString ( ) . Equals ( "sent" ) )
4739- {
4740- descriptionNLP = envelope [ "sender" ] [ "userName" ] + " " +
4741- envelope [ "status" ] + " " +
4742- envelope [ "envelopeDocuments" ] [ 0 ] [ "name" ] +
4743- documentCountInNaturalLanguage + " on " +
4744- envelope [ "statusChangedDateTime" ] ;
4745- }
4746- else if ( signersArray . Count > 0 )
4747- {
4748- descriptionNLP = envelope [ "recipients" ] [ "signers" ] [ 0 ] [ "name" ] +
4749- recipientCountInNaturalLanguage +
4750- envelope [ "status" ] + " " +
4751- envelope [ "envelopeDocuments" ] [ 0 ] [ "name" ] +
4752- documentCountInNaturalLanguage + " on " +
4753- envelope [ "statusChangedDateTime" ] ;
4719+ JToken recipientsToken = envelope [ "recipients" ] ;
4720+ JToken signersToken = recipientsToken ? [ "signers" ] ;
4721+ JArray signersArray = signersToken as JArray ?? new JArray ( ) ;
4722+ JToken envelopeDocumentsToken = envelope [ "envelopeDocuments" ] ;
4723+ JArray documentArray = envelopeDocumentsToken as JArray ?? new JArray ( ) ;
4724+ JToken statusToken = envelope [ "status" ] ;
4725+ JToken senderToken = envelope [ "sender" ] ;
4726+ JToken statusChangedDateTimeToken = envelope [ "statusChangedDateTime" ] ;
4727+ JToken emailSubjectToken = envelope [ "emailSubject" ] ;
4728+ JToken envelopeIdToken = envelope [ "envelopeId" ] ;
4729+ JToken sentDateTimeToken = envelope [ "sentDateTime" ] ;
4730+
4731+
4732+ int recipientCount = recipientsToken ? [ "recipientCount" ] ? . ToObject < int > ( ) ?? 0 ;
4733+ string recipientCountInNaturalLanguage = recipientCount > 1 ? $ " and { recipientCount - 1 } others have " : " " ;
4734+ int documentCount = documentArray . Count ;
4735+ string documentCountInNaturalLanguage = documentCount == 3 ? " and 1 other document" : documentCount > 3 ? $ " and { documentCount - 2 } other documents" : "" ;
4736+ string envelopeStatus = statusToken ? . ToString ( ) ?? "Unknown status" ;
4737+ string senderName = senderToken ? [ "userName" ] ? . ToString ( ) ?? "No sender name" ;
4738+ string recipientName = signersArray . FirstOrDefault ( ) ? [ "name" ] ? . ToString ( ) ?? "No recipient name" ;
4739+ string envelopeDocumentName = documentArray . FirstOrDefault ( ) ? [ "name" ] ? . ToString ( ) ?? "No document name" ;
4740+ string statusDateChangeTime = statusChangedDateTimeToken ? . ToString ( ) ?? "Date is empty" ;
4741+
4742+ var descriptionBuilder = new StringBuilder ( ) ;
4743+ if ( envelopeStatus . Equals ( "sent" , StringComparison . OrdinalIgnoreCase ) )
4744+ {
4745+ descriptionBuilder . Append ( senderName )
4746+ . Append ( " " )
4747+ . Append ( envelopeStatus )
4748+ . Append ( " " )
4749+ . Append ( envelopeDocumentName )
4750+ . Append ( " " )
4751+ . Append ( documentCountInNaturalLanguage )
4752+ . Append ( " on " )
4753+ . Append ( statusDateChangeTime ) ;
4754+ }
4755+ else if ( signersArray . Count > 0 )
4756+ {
4757+ descriptionBuilder . Append ( recipientName )
4758+ . Append ( recipientCountInNaturalLanguage )
4759+ . Append ( envelopeStatus )
4760+ . Append ( " " )
4761+ . Append ( envelopeDocumentName )
4762+ . Append ( documentCountInNaturalLanguage )
4763+ . Append ( " on " )
4764+ . Append ( statusDateChangeTime ) ;
47544765 }
47554766 else
47564767 {
4757- descriptionNLP = "No signer recipients found for this envelope. Only 'Signer' recipient types are supported in the current response." ;
4768+ descriptionBuilder . Append ( "No signer recipients found for this envelope. Only 'Signer' recipient types are supported in the current response." ) ;
47584769 }
47594770
4760- return descriptionNLP ;
4771+ return descriptionBuilder . ToString ( ) ;
47614772 }
47624773
47634774 private string GetEnvelopeUrl ( JToken envelope )
@@ -4933,12 +4944,12 @@ private void RenameSpecificKeys(JObject jObject, Dictionary<string, string> keyM
49334944
49344945 foreach ( var envelope in filteredEnvelopes )
49354946 {
4936- DateTime statusUpdateTime = envelope [ "statusChangedDateTime" ] . ToObject < DateTime > ( ) ;
4947+ DateTime statusUpdateTime = envelope [ "statusChangedDateTime" ] ? . ToObject < DateTime > ( ) ?? DateTime . MinValue ;
49374948 DateTime statusUpdateTimeInLocalTimeZone = TimeZoneInfo . ConvertTimeFromUtc ( statusUpdateTime , userTimeZone ) ;
49384949 System . Globalization . TextInfo textInfo = new System . Globalization . CultureInfo ( "en-US" , false ) . TextInfo ;
49394950
49404951 JArray recipientNames = new JArray (
4941- ( envelope [ "recipients" ] [ "signers" ] as JArray ) ? . Select ( recipient => recipient [ "name" ] ) ) ;
4952+ ( envelope [ "recipients" ] ? [ "signers" ] as JArray ) ? . Select ( recipient => recipient [ "name" ] ) ) ;
49424953 JArray documentNames = new JArray (
49434954 ( envelope [ "envelopeDocuments" ] as JArray ) ? . Select ( envelopeDocument => envelopeDocument [ "name" ] ) ) ;
49444955
@@ -4947,13 +4958,13 @@ private void RenameSpecificKeys(JObject jObject, Dictionary<string, string> keyM
49474958 [ "documents" ] = string . Join ( "," , documentNames ) ,
49484959 [ "recipients" ] = string . Join ( ", " , recipientNames ) ,
49494960 [ "statusDate" ] = statusUpdateTimeInLocalTimeZone . ToString ( "h:mm tt, M/d/yy" ) ,
4950- [ "status" ] = textInfo . ToTitleCase ( envelope [ "status" ] . ToString ( ) ) ,
4951- [ "sender" ] = envelope [ "sender" ] [ "userName" ]
4961+ [ "status" ] = textInfo . ToTitleCase ( envelope [ "status" ] ? . ToString ( ) ?? "Unknown status" ) ,
4962+ [ "sender" ] = envelope [ "sender" ] ? [ "userName" ] ? . ToString ( ) ?? "Sender name empty"
49524963 } ;
49534964
49544965 filteredEnvelopesDetails . Add ( new JObject ( )
49554966 {
4956- [ "title" ] = envelope [ "emailSubject" ] ,
4967+ [ "title" ] = envelope [ "emailSubject" ] ? . ToString ( ) ?? "Title empty" ,
49574968 [ "subTitle" ] = "Agreement" ,
49584969 [ "url" ] = GetEnvelopeUrl ( envelope ) ,
49594970 [ "additionalPropertiesForSalesEnvelope" ] = additionalPropertiesForSalesEnvelope
@@ -4967,30 +4978,31 @@ private void RenameSpecificKeys(JObject jObject, Dictionary<string, string> keyM
49674978 {
49684979 TimeZoneInfo userTimeZone = TimeZoneInfo . Local ;
49694980 var filteredEnvelopesDetails = new JArray ( ) ;
4970-
4981+
49714982 foreach ( var envelope in filteredEnvelopes )
49724983 {
4973- DateTime statusUpdateTime = envelope [ "statusChangedDateTime" ] . ToObject < DateTime > ( ) ;
4984+ DateTime statusUpdateTime = envelope [ "statusChangedDateTime" ] ? . ToObject < DateTime > ( ) ?? DateTime . MinValue ;
49744985 DateTime statusUpdateTimeInLocalTimeZone = TimeZoneInfo . ConvertTimeFromUtc ( statusUpdateTime , userTimeZone ) ;
49754986 System . Globalization . TextInfo textInfo = new System . Globalization . CultureInfo ( "en-US" , false ) . TextInfo ;
49764987
49774988 JArray recipientNames = new JArray (
4978- ( envelope [ "recipients" ] [ "signers" ] as JArray ) ? . Select ( recipient => recipient [ "name" ] ) ) ;
4989+ ( envelope [ "recipients" ] ? [ "signers" ] as JArray ) ? . Select ( recipient => recipient [ "name" ] ) ) ;
4990+
49794991 JArray documentNames = new JArray (
4980- ( envelope [ "envelopeDocuments" ] as JArray ) ? . Select ( envelopeDocument => envelopeDocument [ "name" ] ) ) ;
4992+ ( envelope [ "envelopeDocuments" ] as JArray ) ? . Select ( envelopeDocument => envelopeDocument [ "name" ] ) ) ;
49814993
49824994 filteredEnvelopesDetails . Add ( new JObject ( )
49834995 {
4984- [ "title" ] = envelope [ "emailSubject" ] ,
4996+ [ "title" ] = envelope [ "emailSubject" ] ? . ToString ( ) ?? "Email subject empty" ,
49854997 [ "description" ] = GetDescriptionNLPForRelatedActivities ( envelope ) ,
4986- [ "envelopeId" ] = envelope [ "envelopeId" ] ,
4998+ [ "envelopeId" ] = envelope [ "envelopeId" ] ? . ToString ( ) ?? "Envelope ID not found" ,
49874999 [ "statusDate" ] = statusUpdateTimeInLocalTimeZone . ToString ( "h:mm tt, M/d/yy" ) ,
49885000 [ "url" ] = GetEnvelopeUrl ( envelope ) ,
49895001 [ "recipients" ] = string . Join ( ", " , recipientNames ) ,
49905002 [ "documents" ] = string . Join ( "," , documentNames ) ,
4991- [ "sender" ] = envelope [ "sender" ] [ "userName" ] ,
4992- [ "status" ] = textInfo . ToTitleCase ( envelope [ "status" ] . ToString ( ) ) ,
4993- [ "dateSent" ] = envelope [ "sentDateTime" ]
5003+ [ "sender" ] = envelope [ "sender" ] ? [ "userName" ] ? . ToString ( ) ?? "Sender username empty" ,
5004+ [ "status" ] = envelope [ "status" ] != null ? textInfo . ToTitleCase ( envelope [ "status" ] . ToString ( ) ) : "Unknown status" ,
5005+ [ "dateSent" ] = envelope [ "sentDateTime" ] ? . ToString ( ) ?? "No sent date"
49945006 } ) ;
49955007 }
49965008
@@ -6847,7 +6859,8 @@ private void RenameSpecificKeys(JObject jObject, Dictionary<string, string> keyM
68476859 }
68486860
68496861 if ( ( "ListEnvelopes" . Equals ( this . Context . OperationId , StringComparison . OrdinalIgnoreCase ) ) ||
6850- ( "SalesCopilotListEnvelopes" . Equals ( this . Context . OperationId , StringComparison . OrdinalIgnoreCase ) ) )
6862+ ( "SalesCopilotListEnvelopes" . Equals ( this . Context . OperationId , StringComparison . OrdinalIgnoreCase ) ) ||
6863+ ( "SearchListEnvelopes" . Equals ( this . Context . OperationId , StringComparison . OrdinalIgnoreCase ) ) )
68516864 {
68526865 var body = ParseContentAsJObject ( await response . Content . ReadAsStringAsync ( ) . ConfigureAwait ( false ) , false ) ;
68536866 var query = HttpUtility . ParseQueryString ( this . Context . Request . RequestUri . Query ) ;
@@ -6882,11 +6895,11 @@ private void RenameSpecificKeys(JObject jObject, Dictionary<string, string> keyM
68826895 case "recipientName" :
68836896 case "recipientEmailId" :
68846897 filteredEnvelopes = new JArray ( envelopes . Where ( envelope =>
6885- envelope [ "recipients" ] . ToString ( ) . ToLower ( ) . Contains ( envelopeFilterMap [ filter ] . ToString ( ) . ToLower ( ) ) ) ) ;
6898+ envelope [ "recipients" ] ? . ToString ( ) . ToLower ( ) . Contains ( envelopeFilterMap [ filter ] . ToString ( ) . ToLower ( ) ) ?? false ) ) ;
68866899 break ;
68876900 case "envelopeTitle" :
68886901 filteredEnvelopes = new JArray ( envelopes . Where ( envelope =>
6889- envelope [ "emailSubject" ] . ToString ( ) . ToLower ( ) . Contains ( envelopeFilterMap [ filter ] . ToString ( ) . ToLower ( ) ) ) ) ;
6902+ envelope [ "emailSubject" ] ? . ToString ( ) . ToLower ( ) . Contains ( envelopeFilterMap [ filter ] . ToString ( ) . ToLower ( ) ) ?? false ) ) ;
68906903 break ;
68916904 case "customFieldName" :
68926905 case "customFieldValue" :
@@ -6914,87 +6927,16 @@ private void RenameSpecificKeys(JObject jObject, Dictionary<string, string> keyM
69146927 }
69156928 }
69166929
6917- filteredEnvelopesDetails = this . Context . OperationId . Contains ( "SalesCopilot" ) ? GetFilteredEnvelopeDetailsForSalesCopilot ( envelopes ) :
6918- GetFilteredEnvelopeDetails ( envelopes ) ;
6919- newBody [ "value" ] = ( filteredEnvelopesDetails . Count < top ) ?
6920- filteredEnvelopesDetails :
6921- new JArray ( filteredEnvelopesDetails . Skip ( skip ) . Take ( top ) . ToArray ( ) ) ;
6922- newBody [ "hasMoreResults" ] = ( skip + top < filteredEnvelopesDetails . Count ) ? true : false ;
6923- response . Content = new StringContent ( newBody . ToString ( ) , Encoding . UTF8 , "application/json" ) ;
6924- }
6925-
6926- if ( ( "SearchListEnvelopes" . Equals ( this . Context . OperationId , StringComparison . OrdinalIgnoreCase ) ) )
6927- {
6928- var body = ParseContentAsJObject ( await response . Content . ReadAsStringAsync ( ) . ConfigureAwait ( false ) , false ) ;
6929- var query = HttpUtility . ParseQueryString ( this . Context . Request . RequestUri . Query ) ;
6930- JObject newBody = new JObject ( ) ;
6931-
6932- int top = string . IsNullOrEmpty ( query . Get ( "top" ) ) ? 10 : int . Parse ( query . Get ( "top" ) ) ;
6933- int skip = string . IsNullOrEmpty ( query . Get ( "skip" ) ) ? 0 : int . Parse ( query . Get ( "skip" ) ) ;
6934-
6935- JArray envelopes = ( body [ "envelopes" ] as JArray ) ?? new JArray ( ) ;
6936- JArray filteredEnvelopes = new JArray ( ) ;
6937- var filteredEnvelopesDetails = new JArray ( ) ;
6938- var recipientName = query . Get ( "recipientName" ) ?? null ;
6939- var recipientEmailId = query . Get ( "recipientEmailId" ) ?? null ;
6940- var envelopeTitle = query . Get ( "envelopeTitle" ) ?? null ;
6941- var customFieldName = query . Get ( "customFieldName" ) ?? null ;
6942- var customFieldValue = query . Get ( "customFieldValue" ) ?? null ;
6930+ filteredEnvelopesDetails = this . Context . OperationId . Contains ( "SalesCopilot" ) ?
6931+ GetFilteredEnvelopeDetailsForSalesCopilot ( envelopes ) :
6932+ GetFilteredEnvelopeDetails ( envelopes ) ;
69436933
6944- var envelopeFilterMap = new Dictionary < string , string > ( ) {
6945- { "recipientName" , recipientName } ,
6946- { "recipientEmailId" , recipientEmailId } ,
6947- { "envelopeTitle" , envelopeTitle } ,
6948- { "customFieldName" , customFieldName } ,
6949- { "customFieldValue" , customFieldValue }
6950- } ;
6951-
6952- foreach ( var filter in envelopeFilterMap . Keys )
6953- {
6954- if ( envelopeFilterMap [ filter ] != null )
6955- {
6956- switch ( filter )
6957- {
6958- case "recipientName" :
6959- case "recipientEmailId" :
6960- filteredEnvelopes = new JArray ( envelopes . Where ( envelope =>
6961- envelope [ "recipients" ] . ToString ( ) . ToLower ( ) . Contains ( envelopeFilterMap [ filter ] . ToString ( ) . ToLower ( ) ) ) ) ;
6962- break ;
6963- case "envelopeTitle" :
6964- filteredEnvelopes = new JArray ( envelopes . Where ( envelope =>
6965- envelope [ "emailSubject" ] . ToString ( ) . ToLower ( ) . Contains ( envelopeFilterMap [ filter ] . ToString ( ) . ToLower ( ) ) ) ) ;
6966- break ;
6967- case "customFieldName" :
6968- case "customFieldValue" :
6969- filteredEnvelopes = new JArray ( envelopes . Where ( envelope =>
6970- {
6971- var customFields = envelope [ "customFields" ] as JToken ;
6972- return customFields ? . ToString ( ) . ToLower ( ) . Contains ( envelopeFilterMap [ filter ] . ToString ( ) . ToLower ( ) ) ?? false ;
6973- } ) ) ;
6974- break ;
6975- default :
6976- break ;
6977- }
6978-
6979- if ( filteredEnvelopes . Count > 0 )
6980- {
6981- envelopes . Clear ( ) ;
6982- envelopes = new JArray ( filteredEnvelopes ) ;
6983- filteredEnvelopes . Clear ( ) ;
6984- }
6985- else
6986- {
6987- envelopes . Clear ( ) ;
6988- break ;
6989- }
6990- }
6991- }
6992-
6993- filteredEnvelopesDetails = GetFilteredEnvelopeDetails ( envelopes ) ;
69946934 newBody [ "value" ] = ( filteredEnvelopesDetails . Count < top ) ?
69956935 filteredEnvelopesDetails :
69966936 new JArray ( filteredEnvelopesDetails . Skip ( skip ) . Take ( top ) . ToArray ( ) ) ;
6937+
69976938 newBody [ "hasMoreResults" ] = ( skip + top < filteredEnvelopesDetails . Count ) ? true : false ;
6939+
69986940 response . Content = new StringContent ( newBody . ToString ( ) , Encoding . UTF8 , "application/json" ) ;
69996941 }
70006942
0 commit comments