private void ResolveForApplication() { // var documents = Application.Documents; // var existingHandledDocs = new List<long>(); var applicationDocuments = DocumentationRequirements.Where(d => d.DocumentContextKind.Equals(DocumentContextKind.ApplicationEnum)).ToList(); foreach (var document in applicationDocuments) { //var appDocument = ApplicationDocument.FromProductDocument(document); var appDocument = Convert(document); appDocument.ApplicationId = Application.ApplicationId; appDocument.ApplicationNumber = Application.ApplicationNumber; //var matchings = from it in DocumentationRequirements // where it.DocumentType == appDocument.DocumentKind && // it.DocumentContextKind == appDocument.DocumentContextKind // select it; //if (matchings != null && matchings.Any()) //{ // var existingDoc = matchings.FirstOrDefault(d => d.Equals(appDocument)); // //existingHandledDocs.Add(existingDoc.DocumentId); //} NewRequirements.Add(appDocument); } //var deleted = documents.Where(d => d.DocumentId != 0 && !existingHandledDocs.Contains(d.DocumentId) && // d.DocumentContextKind.Equals(DocumentContextKind.ApplicationEnum) && d.Origin.Equals(DocumentOrigin.Product)) // .Select(d => d.DocumentId).ToList(); //_logger.LogInformation("There are {DeletedNumber} unused documents being deleted with application document context kind", deleted.Count()); //Existing.AddRange(existingHandledDocs); //Deleted.AddRange(deleted); }
private void ResolveForParties() { var existingHandledDocs = new List <long>(); var partyDocuments = DocumentationRequirements.Where(d => d.DocumentContextKind.Equals(DocumentContextKind.PartyEnum) && Application.InvolvedParties.Count() > 0).ToList(); foreach (var document in partyDocuments) { foreach (var party in Application.InvolvedParties) { var appDocument = Convert(document); appDocument.ApplicationId = Application.ApplicationId; appDocument.ApplicationNumber = this.Application.ApplicationNumber; appDocument.PartyId = party.PartyId; // Check if party role corresponds to document PartyRole including "new" status for role if ( (party.PartyRole.Equals(PartyRole.Customer) && document.PartyRole.Equals(ProductPartyRoleEnum.CustomerEnum)) || (party.PartyRole.Equals(PartyRole.Customer) && string.IsNullOrEmpty(party.CustomerNumber) && document.PartyRole.Equals(ProductPartyRoleEnum.NewCustomerEnum)) || (party.PartyRole.Equals(PartyRole.AuthorizedPerson) && document.PartyRole.Equals(ProductPartyRoleEnum.AuthorizedPersonEnum)) || (party.PartyRole.Equals(PartyRole.AuthorizedPerson) && string.IsNullOrEmpty(party.CustomerNumber) && document.PartyRole.Equals(ProductPartyRoleEnum.NewAuthorizedPersonEnum)) || (party.PartyRole.Equals(PartyRole.CoDebtor) && document.PartyRole.Equals(ProductPartyRoleEnum.CoDebtorEnum)) || (party.PartyRole.Equals(PartyRole.CoDebtor) && string.IsNullOrEmpty(party.CustomerNumber) && document.PartyRole.Equals(ProductPartyRoleEnum.NewCoDebtorEnum)) || (party.PartyRole.Equals(PartyRole.Guarantor) && document.PartyRole.Equals(ProductPartyRoleEnum.GuarantorEnum)) || (party.PartyRole.Equals(PartyRole.Guarantor) && string.IsNullOrEmpty(party.CustomerNumber) && document.PartyRole.Equals(ProductPartyRoleEnum.NewGuarantorEnum))) { //var matchings = from it in DocumentationRequirements // where it.DocumentType == appDocument.DocumentKind && // it.DocumentContextKind == appDocument.DocumentContextKind && // select it; //if (matchings != null && matchings.Any()) //{ // var existingDoc = matchings.FirstOrDefault();// d => d.Equals(appDocument)); // // existingHandledDocs.Add(existingDoc.DocumentId); // visak //} NewRequirements.Add(appDocument); } } } //var deleted = documents.Where(d => d.DocumentId != 0 && !existingHandledDocs.Contains(d.DocumentId) && // d.DocumentContextKind.Equals(DocumentContextKind.PartyEnum) && d.Origin.Equals(DocumentOrigin.Product)) // .Select(d => d.DocumentId).ToList(); //_logger.LogInformation("There are {DeletedNumber} unused documents being deleted with party document context kind", deleted.Count()); //Existing.AddRange(existingHandledDocs); //Deleted.AddRange(deleted); }
private void ResolveForCollaterals() { var documents = Application.Documents; var existingHandledDocs = new List <long>(); var collateralCodes = _configurationService.GetEffective <ClassificationSchema>("collateral/classification-schemes/collateral-code").Result; var collateralDocuments = DocumentationRequirements.Where(d => d.DocumentContextKind.Equals(DocumentContextKind.CollateralEnum)).ToList(); _logger.LogInformation("Found {NumberOfDocuments} documents related to collaterals", collateralDocuments.Count()); foreach (var document in collateralDocuments) { var activeArrangements = Application.ArrangementRequests.Where(a => a.Enabled ?? false); foreach (var request in activeArrangements) { if (request is FinanceServiceArrangementRequest financeRequest && financeRequest.CollateralRequirements != null) { foreach (var collateralRequirement in financeRequest.CollateralRequirements) { var hasCollateralKind = collateralCodes.Values .Exists(v => v.AdditionalFields.GetValueOrDefault("collateral-arrangement-code", "").Equals(collateralRequirement.CollateralArrangementCode) && v.AdditionalFields.GetValueOrDefault("collateral-kind", "").Equals(document.CollateralKind)); if (hasCollateralKind) { foreach (var deal in collateralRequirement.SecuredDealLinks) { var appDocument = Convert(document); appDocument.ApplicationId = Application.ApplicationId; appDocument.ArrangementRequestId = request.ArrangementRequestId; appDocument.CollateralId = "" + collateralRequirement.CollateralRequirementId + "-" + deal.ArrangementNumber; //if (documents.Contains(appDocument)) //{ // _logger.LogDebug("Found existing application document related to collateral."); // var existingDoc = documents.FirstOrDefault(d => d.Equals(appDocument)); // existingHandledDocs.Add(existingDoc.DocumentId); //} //else //{ // _logger.LogDebug("Adding new application document related to collateral"); // documents.Add(appDocument); //} } } else { _logger.LogInformation("Collateral kind {CollateralKind} not found for collateral arrangement code {CollateralArrangementCode}", document.CollateralKind, collateralRequirement.CollateralArrangementCode); } } } } } var deleted = documents.Where(d => d.DocumentId != 0 && !existingHandledDocs.Contains(d.DocumentId) && d.DocumentContextKind.Equals(DocumentContextKind.CollateralEnum) && d.Origin.Equals(DocumentOrigin.Product)) .Select(d => d.DocumentId).ToList(); _logger.LogInformation("There are {DeletedNumber} unused documents being deleted with collateral document context kind", deleted.Count()); _logger.LogInformation("There are {ExistingNumber} existing documents with collateral document context kind", existingHandledDocs.Count()); Existing.AddRange(existingHandledDocs); Deleted.AddRange(deleted); }
private void ResolveForArrangementRequests() { // var documents = Application.Documents; var existingHandledDocs = new List <long>(); var arrRequestDocuments = DocumentationRequirements.Where(d => d.DocumentContextKind.Equals(DocumentContextKind.ArrangementRequestEnum)).ToList(); foreach (var document in arrRequestDocuments) { var activeArrangements = Application.ArrangementRequests.Where(a => a.Enabled ?? false); foreach (var request in activeArrangements) { //var appDocument = ApplicationDocument.FromProductDocument(document); var appDocument = Convert(document); appDocument.ApplicationId = Application.ApplicationId; appDocument.ArrangementRequestId = request.ArrangementRequestId; appDocument.ProductCode = request.ProductCode; appDocument.ApplicationNumber = Application.ApplicationNumber; IEnumerable <PartyRole> partyRoles = null; if (document.PartyRole != null) { partyRoles = from party in Application.InvolvedParties where (party.PartyRole.Equals(PartyRole.Customer) && document.PartyRole.Value.Equals(ProductPartyRoleEnum.CustomerEnum)) || (party.PartyRole.Equals(PartyRole.Customer) && string.IsNullOrEmpty(party.CustomerNumber) && document.PartyRole.Equals(ProductPartyRoleEnum.NewCustomerEnum)) || (party.PartyRole.Equals(PartyRole.AuthorizedPerson) && document.PartyRole.Equals(ProductPartyRoleEnum.AuthorizedPersonEnum)) || (party.PartyRole.Equals(PartyRole.AuthorizedPerson) && string.IsNullOrEmpty(party.CustomerNumber) && document.PartyRole.Equals(ProductPartyRoleEnum.NewAuthorizedPersonEnum)) || (party.PartyRole.Equals(PartyRole.CoDebtor) && document.PartyRole.Equals(ProductPartyRoleEnum.CoDebtorEnum)) || (party.PartyRole.Equals(PartyRole.CoDebtor) && string.IsNullOrEmpty(party.CustomerNumber) && document.PartyRole.Equals(ProductPartyRoleEnum.NewCoDebtorEnum)) || (party.PartyRole.Equals(PartyRole.Guarantor) && document.PartyRole.Equals(ProductPartyRoleEnum.GuarantorEnum)) || (party.PartyRole.Equals(PartyRole.Guarantor) && string.IsNullOrEmpty(party.CustomerNumber) && document.PartyRole.Equals(ProductPartyRoleEnum.NewGuarantorEnum)) select party.PartyRole; } if (document.ProductCodes == null || !document.ProductCodes.Any() || document.ProductCodes.Contains(request.ProductCode)) { if (partyRoles != null && partyRoles.Any()) { NewRequirements.Add(appDocument); } } //var matchings = from it in DocumentationRequirements // where it.DocumentType == appDocument.DocumentKind && // it.DocumentContextKind == appDocument.DocumentContextKind // select it; //if (matchings != null && matchings.Any()) //{ // var existingDoc = matchings.FirstOrDefault(d => d.Equals(appDocument)); // // existingHandledDocs.Add(existingDoc.DocumentId); //} } } //var deleted = documents.Where(d => d.DocumentId != 0 && !existingHandledDocs.Contains(d.DocumentId) && // d.DocumentContextKind.Equals(DocumentContextKind.ArrangementRequestEnum) && d.Origin.Equals(DocumentOrigin.Product)) // .Select(d => d.DocumentId).ToList(); //_logger.LogInformation("There are {DeletedNumber} unused documents being deleted with arrangement request document context kind", deleted.Count()); //Existing.AddRange(existingHandledDocs); //Deleted.AddRange(deleted); }