public bool ProcessEnvelope(ReadEnvelope item, SaveStatus status)
        {
            if (item == null || string.IsNullOrWhiteSpace(item.EnvelopeIdentifier))
            {
                status.AddError("A valid ReadEnvelope must be provided.");
                return(false);
            }

            DateTime createDate         = new DateTime();
            DateTime envelopeUpdateDate = new DateTime();

            if (DateTime.TryParse(item.NodeHeaders.CreatedAt.Replace("UTC", "").Trim(), out createDate))
            {
                status.SetEnvelopeCreated(createDate);
            }
            if (DateTime.TryParse(item.NodeHeaders.UpdatedAt.Replace("UTC", "").Trim(), out envelopeUpdateDate))
            {
                status.SetEnvelopeUpdated(envelopeUpdateDate);
            }
            status.DocumentOwnedBy = item.documentOwnedBy;

            if (item.documentPublishedBy != null)
            {
                if (item.documentOwnedBy == null || (item.documentPublishedBy != item.documentOwnedBy))
                {
                    status.DocumentPublishedBy = item.documentPublishedBy;
                }
            }
            else
            {
                //will need to check elsewhere
                //OR as part of import check if existing one had 3rd party publisher
            }
            string payload            = item.DecodedResource.ToString();
            string envelopeIdentifier = item.EnvelopeIdentifier;
            string ctdlType           = RegistryServices.GetResourceType(payload);
            string envelopeUrl        = RegistryServices.GetEnvelopeUrl(envelopeIdentifier);

            //Already done in  RegistryImport
            //LoggingHelper.WriteLogFile( UtilityManager.GetAppKeyValue( "logFileTraceLevel", 5 ), item.EnvelopeCetermsCtid + "_assessment", payload, "", false );

            if (ImportServiceHelpers.IsAGraphResource(payload))
            {
                //if ( payload.IndexOf( "\"en\":" ) > 0 )
                return(ImportV3(payload, envelopeIdentifier, status));
                //else
                //    return ImportV2( payload, envelopeIdentifier, status );
            }
            else
            {
                status.AddError(thisClassName + ".ImportByResourceUrl - 2019-05-01 ONLY GRAPH BASED IMPORTS ARE HANDLED");
                return(false);

                //LoggingHelper.DoTrace( 5, "		envelopeUrl: " + envelopeUrl );
                //            LoggingHelper.WriteLogFile( 1, "asmt_" + item.EnvelopeIdentifier, payload, "", false );
                //            input = JsonConvert.DeserializeObject<InputEntity>( item.DecodedResource.ToString() );

                //            return Import( input, envelopeIdentifier, status );
            }
        }
        public bool ProcessEnvelope(ReadEnvelope item, SaveStatus status)
        {
            if (item == null || string.IsNullOrWhiteSpace(item.EnvelopeIdentifier))
            {
                status.AddError(thisClassName + " A valid ReadEnvelope must be provided.");
                return(false);
            }

            DateTime createDate         = new DateTime();
            DateTime envelopeUpdateDate = new DateTime();

            if (DateTime.TryParse(item.NodeHeaders.CreatedAt.Replace("UTC", "").Trim(), out createDate))
            {
                status.SetEnvelopeCreated(createDate);
            }
            if (DateTime.TryParse(item.NodeHeaders.UpdatedAt.Replace("UTC", "").Trim(), out envelopeUpdateDate))
            {
                status.SetEnvelopeUpdated(envelopeUpdateDate);
            }

            string payload            = item.DecodedResource.ToString();
            string envelopeIdentifier = item.EnvelopeIdentifier;
            string ctdlType           = RegistryServices.GetResourceType(payload);
            string envelopeUrl        = RegistryServices.GetEnvelopeUrl(envelopeIdentifier);

            LoggingHelper.DoTrace(5, "		envelopeUrl: "+ envelopeUrl);
            LoggingHelper.WriteLogFile(UtilityManager.GetAppKeyValue("logFileTraceLevel", 5), item.EnvelopeCetermsCtid + "_ConceptScheme", payload, "", false);

            //just store input for now
            return(Import(payload, envelopeIdentifier, status));

            //return true;
        } //
Пример #3
0
        public bool ProcessEnvelope(ReadEnvelope item, SaveStatus status)
        {
            if (item == null || string.IsNullOrWhiteSpace(item.EnvelopeIdentifier))
            {
                status.AddError("A valid ReadEnvelope must be provided.");
                return(false);
            }

            string payload            = item.DecodedResource.ToString();
            string envelopeIdentifier = item.EnvelopeIdentifier;
            string ctdlType           = RegistryServices.GetResourceType(payload);
            string envelopeUrl        = RegistryServices.GetEnvelopeUrl(envelopeIdentifier);

            if (ImportServiceHelpers.IsAGraphResource(payload))
            {
                //if ( payload.IndexOf( "\"en\":" ) > 0 )
                return(ImportV3(payload, envelopeIdentifier, status));
                //else
                //    return ImportV2( payload, envelopeIdentifier, status );
            }
            else
            {
                LoggingHelper.DoTrace(5, "		envelopeUrl: "+ envelopeUrl);
                LoggingHelper.WriteLogFile(1, "lopp_" + item.EnvelopeIdentifier, payload, "", false);
                input = JsonConvert.DeserializeObject <InputEntity>(item.DecodedResource.ToString());

                return(Import(input, envelopeIdentifier, status));
            }
        }
        public bool ProcessEnvelope(ReadEnvelope item, SaveStatus status)
        {
            if (item == null || string.IsNullOrWhiteSpace(item.EnvelopeIdentifier))
            {
                status.AddError(thisClassName + " A valid ReadEnvelope must be provided.");
                return(false);
            }

            DateTime createDate         = new DateTime();
            DateTime envelopeUpdateDate = new DateTime();

            if (DateTime.TryParse(item.NodeHeaders.CreatedAt.Replace("UTC", "").Trim(), out createDate))
            {
                status.SetEnvelopeCreated(createDate);
            }
            if (DateTime.TryParse(item.NodeHeaders.UpdatedAt.Replace("UTC", "").Trim(), out envelopeUpdateDate))
            {
                status.SetEnvelopeUpdated(envelopeUpdateDate);
            }
            status.DocumentOwnedBy = item.documentOwnedBy;

            if (item.documentPublishedBy != null)
            {
                if (item.documentOwnedBy == null || (item.documentPublishedBy != item.documentOwnedBy))
                {
                    status.DocumentPublishedBy = item.documentPublishedBy;
                }
            }
            else
            {
                //will need to check elsewhere
                //OR as part of import check if existing one had 3rd party publisher
            }
            string payload            = item.DecodedResource.ToString();
            string envelopeIdentifier = item.EnvelopeIdentifier;
            string ctdlType           = RegistryServices.GetResourceType(payload);
            string envelopeUrl        = RegistryServices.GetEnvelopeUrl(envelopeIdentifier);

            LoggingHelper.DoTrace(5, "		envelopeUrl: "+ envelopeUrl);
            LoggingHelper.WriteLogFile(UtilityManager.GetAppKeyValue("logFileTraceLevel", 5), item.EnvelopeCetermsCtid + "_competencyFrameswork", payload, "", false);
            //input = JsonConvert.DeserializeObject<InputGraph>( item.DecodedResource.ToString() );

            //InputEntity framework = GetFramework( input.Graph );
            //LoggingHelper.DoTrace( 5, "		framework name: " + framework.name.ToString() );

            //just store input for now
            return(Import(payload, envelopeIdentifier, status));

            //return true;
        } //
        public bool ProcessEnvelope(ReadEnvelope item, SaveStatus status)
        {
            if (item == null || string.IsNullOrWhiteSpace(item.EnvelopeIdentifier))
            {
                status.AddError("A valid ReadEnvelope must be provided.");
                return(false);
            }
            //
            DateTime createDate         = new DateTime();
            DateTime envelopeUpdateDate = new DateTime();

            if (DateTime.TryParse(item.NodeHeaders.CreatedAt.Replace("UTC", "").Trim(), out createDate))
            {
                status.SetEnvelopeCreated(createDate);
            }
            if (DateTime.TryParse(item.NodeHeaders.UpdatedAt.Replace("UTC", "").Trim(), out envelopeUpdateDate))
            {
                status.SetEnvelopeUpdated(envelopeUpdateDate);
            }
            //
            string payload            = item.DecodedResource.ToString();
            string envelopeIdentifier = item.EnvelopeIdentifier;
            string ctdlType           = RegistryServices.GetResourceType(payload);
            string envelopeUrl        = RegistryServices.GetEnvelopeUrl(envelopeIdentifier);

            //Already done in  RegistryImport
            //LoggingHelper.WriteLogFile( UtilityManager.GetAppKeyValue( "logFileTraceLevel", 5 ), item.EnvelopeCetermsCtid + "_conditionManifest", payload, "", false );

            if (ImportServiceHelpers.IsAGraphResource(payload))
            {
                //if ( payload.IndexOf( "\"en\":" ) > 0 )
                return(ImportV3(payload, "", status));
                //else
                //    return ImportV2( payload, "", status );
            }
            else
            {
                status.AddError("Error - A graph object was not provided for a condition manifest.");
                return(false);
                //LoggingHelper.DoTrace( 5, "		envelopeUrl: " + envelopeUrl );
                //            LoggingHelper.WriteLogFile( 1, "conditionManifest_" + item.EnvelopeIdentifier, payload, "", false );
                //            input = JsonConvert.DeserializeObject<InputEntity>( item.DecodedResource.ToString() );

                //            return Import( input, envelopeIdentifier, status );
            }
        }
        public bool ProcessEnvelope(ReadEnvelope item, SaveStatus status)
        {
            if (item == null || string.IsNullOrWhiteSpace(item.EnvelopeIdentifier))
            {
                status.AddError("A valid ReadEnvelope must be provided.");
                return(false);
            }

            DateTime createDate         = new DateTime();
            DateTime envelopeUpdateDate = new DateTime();

            if (DateTime.TryParse(item.NodeHeaders.CreatedAt.Replace("UTC", "").Trim(), out createDate))
            {
                //entity.DocumentUpdatedAt = updateDate;
            }
            if (DateTime.TryParse(item.NodeHeaders.UpdatedAt.Replace("UTC", "").Trim(), out envelopeUpdateDate))
            {
                //entity.DocumentUpdatedAt = envelopeUpdateDate;
            }

            string payload            = item.DecodedResource.ToString();
            string envelopeIdentifier = item.EnvelopeIdentifier;
            string ctdlType           = RegistryServices.GetResourceType(payload);
            string envelopeUrl        = RegistryServices.GetEnvelopeUrl(envelopeIdentifier);

            //if ( ImportServiceHelpers.IsAGraphResource( payload ) )
            //{
            //if ( payload.IndexOf( "\"en\":" ) > 0 )
            return(ImportV3(payload, envelopeIdentifier, status));
            //else
            //    return ImportV2( payload, envelopeIdentifier, status );
            //}
            //else
            //{
            //    LoggingHelper.DoTrace( 5, "		envelopeUrl: " + envelopeUrl );
            //    LoggingHelper.WriteLogFile( 1, "credential_" + item.EnvelopeIdentifier, payload, "", false );
            //    input = JsonConvert.DeserializeObject<InputEntity>( item.DecodedResource.ToString() );


            //    return Import( input, envelopeIdentifier, status, envelopeUpdateDate );
            //}
        }
        public bool ProcessEnvelope(EntityServices mgr, ReadEnvelope item, SaveStatus status)
        {
            if (item == null || string.IsNullOrWhiteSpace(item.EnvelopeIdentifier))
            {
                status.AddError(thisClassName + " A valid ReadEnvelope must be provided.");
                return(false);
            }

            DateTime createDate         = new DateTime();
            DateTime envelopeUpdateDate = new DateTime();

            if (DateTime.TryParse(item.NodeHeaders.CreatedAt.Replace("UTC", "").Trim(), out createDate))
            {
                //entity.DocumentUpdatedAt = updateDate;
            }
            if (DateTime.TryParse(item.NodeHeaders.UpdatedAt.Replace("UTC", "").Trim(), out envelopeUpdateDate))
            {
                //entity.DocumentUpdatedAt = envelopeUpdateDate;
            }

            string payload            = item.DecodedResource.ToString();
            string envelopeIdentifier = item.EnvelopeIdentifier;
            string ctdlType           = RegistryServices.GetResourceType(payload);
            string envelopeUrl        = RegistryServices.GetEnvelopeUrl(envelopeIdentifier);

            LoggingHelper.DoTrace(5, "		envelopeUrl: "+ envelopeUrl);
            LoggingHelper.WriteLogFile(1, item.EnvelopeIdentifier + "_competencyFrameswork", payload, "", false);
            //input = JsonConvert.DeserializeObject<InputGraph>( item.DecodedResource.ToString() );

            //InputEntity framework = GetFramework( input.Graph );
            //LoggingHelper.DoTrace( 5, "		framework name: " + framework.name.ToString() );

            //just store input for now
            return(Import(mgr, payload, envelopeIdentifier, status));

            //return true;
        } //
        /// <summary>
        /// Handle deleted records for the requested time period
        /// </summary>
        /// <param name="community"></param>
        /// <param name="startingDate">Date must be in UTC</param>
        /// <param name="endingDate">Date must be in UTC</param>
        /// <param name="maxRecords"></param>
        /// <param name="recordsDeleted"></param>
        /// <returns></returns>
        public static string HandleDeletes(string community, string startingDate, string endingDate, int maxRecords, ref int recordsDeleted)
        {
            int pageNbr  = 1;
            int pageSize = 100;
            //string importError = "";
            //may want to just do all types!
            string              type     = "";
            List <string>       messages = new List <string>();
            List <ReadEnvelope> list     = new List <ReadEnvelope>();
            SaveStatus          status   = new SaveStatus();
            int    pTotalRows            = 0;
            int    cntr                  = 0;
            bool   isComplete            = false;
            int    exceptionCtr          = 0;
            string statusMessage         = "";
            string importResults         = "";
            string importNote            = "";
            bool   usingNewDeleteProcess = UtilityManager.GetAppKeyValue("usingNewDeleteProcess", false);

            LoggingHelper.DoTrace(1, string.Format("===  DELETE Check for: '{0}' to '{1}' ===", startingDate, endingDate));
            //startingDate = "2017-10-29T00:00:00";
            try
            {
                while (pageNbr > 0 && !isComplete)
                {
                    list = RegistryImport.GetDeleted(community, type, startingDate, endingDate, pageNbr, pageSize, ref pTotalRows, ref statusMessage);

                    if (list == null || list.Count == 0)
                    {
                        isComplete = true;
                        if (pageNbr == 1)
                        {
                            importNote = "Deletes: No records where found for date range ";
                            //Console.WriteLine( thisClassName + ".HandleDeletes() - " + importNote );
                            LoggingHelper.DoTrace(1, thisClassName + string.Format(".HandleDeletes() Community: {0} - ", community) + importNote);
                        }
                        break;
                    }
                    foreach (ReadEnvelope item in list)
                    {
                        cntr++;
                        string payload = item.DecodedResource.ToString();

                        string ctdlType = RegistryServices.GetResourceType(payload);
                        string ctid     = RegistryServices.GetCtidFromUnknownEnvelope(item);
                        //may not be available in database, may want to use ctid
                        string envelopeIdentifier = item.EnvelopeIdentifier;
                        string envelopeUrl        = RegistryServices.GetEnvelopeUrl(item.EnvelopeIdentifier);
                        //LoggingHelper.DoTrace( 5, "		envelopeUrl: " + envelopeUrl );

                        //LoggingHelper.DoTrace( 6, string.Format( "{0}. EnvelopeIdentifier: {1} ", cntr, item.EnvelopeIdentifier ) );
                        try
                        {
                            //only need the envelopeId and type
                            //so want a full delete, or set EntityStateId to 0 - just as a precaution
                            messages = new List <string>();
                            status   = new SaveStatus();
                            status.ValidationGroup = "Deletes";

                            //
                            if (usingNewDeleteProcess)
                            {
                                Program.HandleDeleteRequest(cntr, item.EnvelopeIdentifier, ctid, ctdlType, ref statusMessage);
                                continue;
                            }
                            //21-02-22 the old and new delete process seem to be the same, at lease the same xxxManager().Delete methods are being called.

                            //
                            //importError = "";
                            //each delete method will add an entry to SearchPendingReindex.
                            //at the end of the process, call method to handle all the deletes
                            switch (ctdlType.ToLower())
                            {
                            case "credentialorganization":
                            case "qacredentialorganization":
                            case "organization":
                                DisplayMessages(string.Format("{0}. Deleting {1} by ctid: {2} ", cntr, ctdlType, ctid));
                                if (!new OrganizationManager().Delete(ctid, ref statusMessage))
                                {
                                    DisplayMessages(string.Format("  Delete failed: {0} ", statusMessage));
                                }
                                break;

                            case "assessmentprofile":
                                DisplayMessages(string.Format("{0}. Deleting {1} by ctid: {2} ", cntr, ctdlType, ctid));
                                if (!new AssessmentManager().Delete(ctid, ref statusMessage))
                                {
                                    DisplayMessages(string.Format("  Delete failed: {0} ", statusMessage));
                                }
                                break;

                            case "learningopportunityprofile":
                                DisplayMessages(string.Format("{0}. Deleting {1} by ctid: {2} ", cntr, ctdlType, ctid));
                                if (!new LearningOpportunityManager().Delete(ctid, ref statusMessage))
                                {
                                    DisplayMessages(string.Format("  Delete failed: {0} ", statusMessage));
                                }
                                break;

                            case "conditionmanifest":
                                DisplayMessages(string.Format("{0}. Deleting ConditionManifest by EnvelopeIdentifier/ctid: {1}/{2} ", cntr, item.EnvelopeIdentifier, ctid));
                                if (!new ConditionManifestManager().Delete(envelopeIdentifier, ctid, ref statusMessage))
                                {
                                    DisplayMessages(string.Format("  Delete failed: {0} ", statusMessage));
                                }
                                break;

                            case "costmanifest":
                                DisplayMessages(string.Format("{0}. Deleting CostManifest by EnvelopeIdentifier/ctid: {1}/{2} ", cntr, item.EnvelopeIdentifier, ctid));
                                if (!new CostManifestManager().Delete(envelopeIdentifier, ctid, ref statusMessage))
                                {
                                    DisplayMessages(string.Format("  Delete failed: {0} ", statusMessage));
                                }
                                break;

                            case "competencyframework":                                     //CompetencyFramework
                                DisplayMessages(string.Format("{0}. Deleting CompetencyFramework by EnvelopeIdentifier/ctid: {1}/{2} ", cntr, item.EnvelopeIdentifier, ctid));
                                if (!new CompetencyFrameworkManager().Delete(ctid, ref statusMessage))
                                {
                                    DisplayMessages(string.Format("  Delete failed: {0} ", statusMessage));
                                }
                                break;

                            case "conceptscheme":                                     //
                            case "skos:conceptscheme":
                                DisplayMessages(string.Format("{0}. Deleting ConceptScheme by EnvelopeIdentifier/ctid: {1}/{2} ", cntr, item.EnvelopeIdentifier, ctid));
                                if (!new ConceptSchemeManager().Delete(envelopeIdentifier, ctid, ref statusMessage))
                                {
                                    DisplayMessages(string.Format("  Delete failed: {0} ", statusMessage));
                                }
                                break;

                            case "pathway":
                                DisplayMessages(string.Format("{0}. Deleting Pathway by EnvelopeIdentifier/ctid: {1}/{2} ", cntr, item.EnvelopeIdentifier, ctid));
                                if (!new PathwayManager().Delete(envelopeIdentifier, ctid, ref statusMessage))
                                {
                                    DisplayMessages(string.Format("  Delete failed: {0} ", statusMessage));
                                }
                                break;

                            case "pathwayset":
                                DisplayMessages(string.Format("{0}. Deleting PathwaySet by EnvelopeIdentifier/ctid: {1}/{2} ", cntr, item.EnvelopeIdentifier, ctid));
                                if (!new PathwaySetManager().Delete(envelopeIdentifier, ctid, ref statusMessage))
                                {
                                    DisplayMessages(string.Format("  Delete failed: {0} ", statusMessage));
                                }
                                break;

                            case "transfervalueprofile":
                                DisplayMessages(string.Format("{0}. Deleting transfervalue by Ctid: {1} ", cntr, ctid));
                                if (!new TransferValueProfileManager().Delete(ctid, ref statusMessage))
                                {
                                    DisplayMessages(string.Format("  Delete failed: {0} ", statusMessage));
                                }
                                break;

                            default:
                                //default to credential
                                DisplayMessages(string.Format("{0}. Deleting Credential ({2}) by EnvelopeIdentifier/ctid: {1}/{3} ", cntr, item.EnvelopeIdentifier, ctdlType, ctid));
                                if (!new CredentialManager().Delete(ctid, ref statusMessage))
                                {
                                    DisplayMessages(string.Format("  Delete failed: {0} ", statusMessage));
                                }
                                break;
                            }
                        }
                        catch (Exception ex)
                        {
                            LoggingHelper.LogError(ex, string.Format("Exception encountered in envelopeId: {0}", item.EnvelopeIdentifier), false, "CredentialFinder Import exception");
                            //importError = ex.Message;
                        }

                        if (maxRecords > 0 && cntr > maxRecords)
                        {
                            break;
                        }
                    }                     //foreach ( ReadEnvelope item in list )

                    if ((maxRecords > 0 && cntr > maxRecords) || cntr > pTotalRows)
                    {
                        isComplete = true;
                        DisplayMessages(string.Format("Delete EARLY EXIT. Completed {0} records out of a total of {1} ", cntr, pTotalRows));
                    }
                    pageNbr++;
                }                 //while
                                  //delete from elastic
                if (cntr > 0)
                {
                    messages = new List <string>();
                    ElasticHelper.HandlePendingDeletes(ref messages);
                }

                importResults = string.Format("HandleDeletes - Processed {0} records, with {1} exceptions. \r\n", cntr, exceptionCtr);
                if (!string.IsNullOrWhiteSpace(importNote))
                {
                    importResults += importNote;
                }
            }
            catch (Exception ex)
            {
                LoggingHelper.LogError(ex, "Import.HandleDeletes");
            }
            //actually only attepted at this time, need to account for errors!
            recordsDeleted = cntr;
            return(importResults);
        }