private void ProcessDocument(FileSystemWatcher fileWatcher,
                                     BuildContext context, ReferenceDocument document,
                                     IList <BuildConfiguration> configurations)
        {
            try
            {
                if (!document.BeginEdit(fileWatcher))
                {
                    return;
                }

                // For each configuration, retrieve the processor (visitor) and
                // process the document...
                int itemCount = configurations.Count;
                for (int i = 0; i < itemCount; i++)
                {
                    BuildConfiguration configuration = configurations[i];

                    string configName = configuration.Name;
                    if (_dictVisitors.ContainsKey(configName))
                    {
                        ReferenceTocVisitor visitor = _dictVisitors[configName];
                        if (visitor != null && visitor.IsInitialized)
                        {
                            visitor.Visit(document);
                        }
                    }
                }
            }
            finally
            {
                document.EndEdit();
            }
        }
Exemple #2
0
        private void AddSampleData()
        {
            using (var db = new MarjieiDb())
            {
                if (db.ReferenceDocuments.Any())
                {
                    return;
                }

                foreach (var file in Directory.GetFiles(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)))
                {
                    var fi = new FileInfo(file);
                    if (fi.Extension == ".docx" || fi.Extension == ".pdf")
                    {
                        var doc = new ReferenceDocument
                        {
                            Title        = file,
                            DocumentType = DocumentType.Book.ToString(),
                            Author       = Environment.UserName,
                            //ReferenceFile = File.ReadAllBytes(file),
                        };
                        doc.DocumentId = Convert.ToInt32(db.InsertWithIdentity(doc));
                    }
                }
            }
        }
Exemple #3
0
        private void ProcessDocuments(BuildContext context)
        {
            if (_listDocuments == null || _listDocuments.Count == 0)
            {
                return;
            }
            if (_listConfigurations.Count == 0)
            {
                return;
            }

            FileSystemWatcher fileWatcher = null;

            try
            {
                fileWatcher = new FileSystemWatcher();

                // Initialize the configurations and get them ready for processing...
                for (int i = 0; i < _listConfigurations.Count; i++)
                {
                    _listConfigurations[i].Initialize(context);
                }

                int itemCount = _listDocuments.Count;
                for (int i = 0; i < itemCount; i++)
                {
                    ReferenceDocument document = _listDocuments[i];
                    if (document == null || document.IsEmpty)
                    {
                        continue;
                    }

                    this.ProcessDocument(fileWatcher, context, document);
                }

                // Un-initialize the configurations after the processing...
                for (int i = 0; i < _listConfigurations.Count; i++)
                {
                    _listConfigurations[i].Uninitialize();
                }
            }
            finally
            {
                if (fileWatcher != null)
                {
                    fileWatcher.EnableRaisingEvents = false;
                    fileWatcher.Dispose();
                    fileWatcher = null;
                }
            }
        }
        private async void Button_Invalidate_Bill_Clicked(object sender, EventArgs e)
        {
            string vMessage = string.Format("¿Estás seguro que deseas anular la factura N*{0}?", ActualBill.ConsecutiveNumber);
            var    vAnswer  = await DisplayAlert("Anular Factura", vMessage, "Si", "No");

            if (vAnswer)
            {
                ReferenceDocument vReferenceDocument = new ReferenceDocument();
                vReferenceDocument.ReferenceCode         = "01";
                vReferenceDocument.ReferenceDocumentType = "01";//Por ahora siempre Factura Electronica
                vReferenceDocument.ReferenceDescription  = "Factura rechazada con disconformidades";

                DebitCreditNoteBillRequest vDebitCreditNoteRequest = new DebitCreditNoteBillRequest {
                    SSOT              = App.SSOT,
                    User              = App.ActualUser,
                    ClientBill        = ActualBill,
                    ReferenceDocument = vReferenceDocument
                };

                var vInvalidateBillClient = new BusinessProxy.Bill.InvalidateBill();
                var vResponse             = await vInvalidateBillClient.GetDataAsync(vDebitCreditNoteRequest);

                if (vResponse != null)
                {
                    if (vResponse.IsSuccessful)
                    {
                        await DisplayAlert("", "La factura se ha anulado", "Ok");
                    }
                    else
                    {
                        await DisplayAlert("", vResponse.TechnicalMessage, "Ok");
                    }
                }
                else
                {
                    await DisplayAlert("", "Problema al contactar el servidor", "Ok");
                }
            }
        }
        private void ProcessDocuments(BuildContext context)
        {
            if (_listDocuments == null || _listDocuments.Count == 0)
            {
                return;
            }

            List <BuildConfiguration> listConfigurations =
                new List <BuildConfiguration>();

            // List out enabled Sandcastle Assist and the Plugin configurations...
            IBuildNamedList <BuildConfiguration> dicAssistConfigs
                = _engineSettings.Configurations;

            if (dicAssistConfigs != null && dicAssistConfigs.Count != 0)
            {
                foreach (ReferenceConfiguration config in dicAssistConfigs)
                {
                    // It must be both enabled to be used and active/valid...
                    if (config.Enabled && config.IsActive &&
                        String.Equals(config.Category, "ReferenceTocVisitor",
                                      StringComparison.OrdinalIgnoreCase))
                    {
                        // Make sure there is a handler of this configuration...
                        if (_dictVisitors.ContainsKey(config.Name))
                        {
                            listConfigurations.Add(config);
                        }
                    }
                }
            }
            IBuildNamedList <BuildConfiguration> dicPluginConfigs
                = _engineSettings.PluginConfigurations;

            if (dicPluginConfigs != null && dicPluginConfigs.Count != 0)
            {
                foreach (ReferenceConfiguration config in dicPluginConfigs)
                {
                    // It must be both enabled to be used and active/valid...
                    if (config.Enabled && config.IsActive &&
                        String.Equals(config.Category, "ReferenceTocVisitor",
                                      StringComparison.OrdinalIgnoreCase))
                    {
                        // Make sure there is a handler of this configuration...
                        if (_dictVisitors.ContainsKey(config.Name))
                        {
                            listConfigurations.Add(config);
                        }
                    }
                }
            }
            if (listConfigurations.Count == 0)
            {
                return;
            }
            // Initialize the configurations and get them ready for processing...
            for (int i = 0; i < listConfigurations.Count; i++)
            {
                listConfigurations[i].Initialize(context);
            }

            FileSystemWatcher fileWatcher = null;

            try
            {
                fileWatcher = new FileSystemWatcher();
                int itemCount = _listDocuments.Count;

                for (int i = 0; i < itemCount; i++)
                {
                    ReferenceDocument document = _listDocuments[i];
                    if (document == null || document.IsEmpty)
                    {
                        continue;
                    }

                    this.ProcessDocument(fileWatcher, context,
                                         document, listConfigurations);
                }

                // Un-initialize the configurations after the processing...
                for (int i = 0; i < listConfigurations.Count; i++)
                {
                    listConfigurations[i].Uninitialize();
                }
            }
            finally
            {
                if (fileWatcher != null)
                {
                    fileWatcher.EnableRaisingEvents = false;
                    fileWatcher.Dispose();
                    fileWatcher = null;
                }
            }
        }
        private bool ProcessTocVisitors(BuildContext context, BuildGroupContext groupContext)
        {
            // We need the list of the available configurations from the
            // reference settings...
            BuildSettings settings = context.Settings;

            Debug.Assert(settings != null,
                         "The settings is not associated with the context.");
            if (settings == null)
            {
                return(false);
            }
            BuildEngineSettingsList listSettings = settings.EngineSettings;

            Debug.Assert(listSettings != null,
                         "The settings does not include the engine settings.");
            if (listSettings == null || listSettings.Count == 0)
            {
                return(false);
            }
            _engineSettings = listSettings[BuildEngineType.Reference] as ReferenceEngineSettings;

            Debug.Assert(_engineSettings != null,
                         "The settings does not include the reference engine settings.");
            if (_engineSettings == null)
            {
                return(false);
            }

            string tocFilePath = Path.Combine(this.WorkingDirectory,
                                              groupContext["$TocFile"]);

            if (File.Exists(tocFilePath))
            {
                _listDocuments = new List <ReferenceDocument>();

                ReferenceDocument document = new ReferenceDocument(
                    tocFilePath, ReferenceDocumentType.TableOfContents);

                _listDocuments.Add(document);
            }

            if (_listDocuments == null || _listDocuments.Count == 0)
            {
                return(false);
            }

            // 1. Create all the reference visitors...
            this.PrepareVisitors(context);
            if (_dictVisitors == null || _dictVisitors.Count == 0)
            {
                return(true);
            }

            // 2. Initialize all the reference visitors...
            ICollection <ReferenceTocVisitor> listVisitors = _dictVisitors.Values;

            foreach (ReferenceTocVisitor visitor in listVisitors)
            {
                visitor.Initialize(context, _group);
            }

            // 3. Process the configurations...
            this.ProcessDocuments(context);

            // 4. Un-initialize all the reference visitors...
            foreach (ReferenceTocVisitor visitor in listVisitors)
            {
                visitor.Uninitialize();
            }

            return(true);
        }
        public override IDeepCopyable CopyTo(IDeepCopyable other)
        {
            var dest = other as AdverseEvent;

            if (dest == null)
            {
                throw new ArgumentException("Can only copy to an object of the same type", "other");
            }

            base.CopyTo(dest);
            if (Identifier != null)
            {
                dest.Identifier = (Hl7.Fhir.Model.Identifier)Identifier.DeepCopy();
            }
            if (CategoryElement != null)
            {
                dest.CategoryElement = (Code <Hl7.Fhir.Model.AdverseEvent.AdverseEventCategory>)CategoryElement.DeepCopy();
            }
            if (Type != null)
            {
                dest.Type = (Hl7.Fhir.Model.CodeableConcept)Type.DeepCopy();
            }
            if (Subject != null)
            {
                dest.Subject = (Hl7.Fhir.Model.ResourceReference)Subject.DeepCopy();
            }
            if (DateElement != null)
            {
                dest.DateElement = (Hl7.Fhir.Model.FhirDateTime)DateElement.DeepCopy();
            }
            if (Reaction != null)
            {
                dest.Reaction = new List <Hl7.Fhir.Model.ResourceReference>(Reaction.DeepCopy());
            }
            if (Location != null)
            {
                dest.Location = (Hl7.Fhir.Model.ResourceReference)Location.DeepCopy();
            }
            if (Seriousness != null)
            {
                dest.Seriousness = (Hl7.Fhir.Model.CodeableConcept)Seriousness.DeepCopy();
            }
            if (Outcome != null)
            {
                dest.Outcome = (Hl7.Fhir.Model.CodeableConcept)Outcome.DeepCopy();
            }
            if (Recorder != null)
            {
                dest.Recorder = (Hl7.Fhir.Model.ResourceReference)Recorder.DeepCopy();
            }
            if (EventParticipant != null)
            {
                dest.EventParticipant = (Hl7.Fhir.Model.ResourceReference)EventParticipant.DeepCopy();
            }
            if (DescriptionElement != null)
            {
                dest.DescriptionElement = (Hl7.Fhir.Model.FhirString)DescriptionElement.DeepCopy();
            }
            if (SuspectEntity != null)
            {
                dest.SuspectEntity = new List <Hl7.Fhir.Model.AdverseEvent.SuspectEntityComponent>(SuspectEntity.DeepCopy());
            }
            if (SubjectMedicalHistory != null)
            {
                dest.SubjectMedicalHistory = new List <Hl7.Fhir.Model.ResourceReference>(SubjectMedicalHistory.DeepCopy());
            }
            if (ReferenceDocument != null)
            {
                dest.ReferenceDocument = new List <Hl7.Fhir.Model.ResourceReference>(ReferenceDocument.DeepCopy());
            }
            if (Study != null)
            {
                dest.Study = new List <Hl7.Fhir.Model.ResourceReference>(Study.DeepCopy());
            }
            return(dest);
        }
Exemple #8
0
        protected override bool OnExecute(BuildContext context)
        {
            Debug.Assert(_group != null);
            if (_group == null)
            {
                return(false);
            }

            ReferenceGroupContext groupContext =
                context.GroupContexts[_group.Id] as ReferenceGroupContext;

            if (groupContext == null)
            {
                throw new BuildException(
                          "The group context is not provided, and it is required by the build system.");
            }

            // Create the documents...
            string reflectionFile = groupContext["$ReflectionFile"];
            string refInfoFile    = Path.ChangeExtension(reflectionFile, ".org");

            string workingDir = this.WorkingDirectory;

            _listDocuments = new List <ReferenceDocument>();
            // the reflection file...
            ReferenceDocument document = new ReferenceDocument(
                Path.Combine(workingDir, refInfoFile),
                ReferenceDocumentType.Reflection);

            _listDocuments.Add(document);
            // the comment files...
            IList <string> commentFiles = groupContext.CommentFiles;

            if (commentFiles != null && commentFiles.Count != 0)
            {
                for (int i = 0; i < commentFiles.Count; i++)
                {
                    document = new ReferenceDocument(commentFiles[i],
                                                     ReferenceDocumentType.Comments);
                    _listDocuments.Add(document);
                }
            }

            if (_listDocuments == null || _listDocuments.Count == 0)
            {
                return(false);
            }

            // We need the list of the available configurations from the
            // reference settings...
            BuildSettings settings = context.Settings;

            Debug.Assert(settings != null,
                         "The settings is not associated with the context.");
            if (settings == null)
            {
                return(false);
            }
            BuildEngineSettingsList listSettings = settings.EngineSettings;

            Debug.Assert(listSettings != null,
                         "The settings does not include the engine settings.");
            if (listSettings == null || listSettings.Count == 0)
            {
                return(false);
            }
            _engineSettings = listSettings[BuildEngineType.Reference] as ReferenceEngineSettings;

            Debug.Assert(_engineSettings != null,
                         "The settings does not include the reference engine settings.");
            if (_engineSettings == null)
            {
                return(false);
            }

            // 1. Create all the reference visitors...
            this.PrepareVisitors(context);
            if ((_dictVisitors == null || _dictVisitors.Count == 0) ||
                (_listConfigurations == null || _listConfigurations.Count == 0))
            {
                return(true);
            }

            // 2. Initialize all the reference visitors...
            ICollection <ReferenceVisitor> listVisitors = _dictVisitors.Values;

            foreach (ReferenceVisitor visitor in listVisitors)
            {
                visitor.Initialize(context, _group);
            }

            // 3. Process the configurations...
            this.ProcessDocuments(context);

            // 4. Un-initialize all the reference visitors...
            foreach (ReferenceVisitor visitor in listVisitors)
            {
                visitor.Uninitialize();
            }

            return(true);
        }
 public ReferenceDocumentDetails(AssociateReferenceDetail reference, ReferenceDocument referenceDocument)
 {
     this.Reference = reference;
     this.ReferenceDocument = referenceDocument;
 }
        private void UpdateReferences(Associate associate, Site sourceSite, Associate originalAssociate)
        {
            var preExistingDocuments = new List<ReferenceDocumentDetails>();
            this.GatherListOfPreExistingDocumentsInNewReferences(preExistingDocuments, associate.AssociateReferenceDetails);

            foreach (ReferenceDocumentDetails referenceDocumentDetails in preExistingDocuments)
            {
                this.MomentaDb.Documents.ApplyCurrentValues(referenceDocumentDetails.ReferenceDocument.Document);

                referenceDocumentDetails.Reference.ReferenceDocuments.Remove(referenceDocumentDetails.ReferenceDocument);
            }

            // Add any new references
            // We cannot use a foreach loop because when you call originalAssociate.AssociateReferenceDetails.Add(reference),
            // the entity gets removed from associate.AssociateReferenceDetails, thus rendering the existing enumerator
            // invalid, causing an exception
            // http://stackoverflow.com/questions/5538974/the-relationship-could-not-be-changed-because-one-or-more-of-the-foreign-key-pro
            while (associate.AssociateReferenceDetails.Any(r => r.ID <= 0))
            {
                AssociateReferenceDetail associateReferenceDetail =
                    associate.AssociateReferenceDetails.First(r => r.ID <= 0);

                foreach (AssociateReferenceDetail subReference in associateReferenceDetail.SubReferences)
                {
                    subReference.ContactPermission = associateReferenceDetail.ContactPermission;

                    foreach (ReferenceDocument referenceDocument in subReference.ReferenceDocuments)
                    {
                        this.SetReferenceDocumentEntityState(referenceDocument);
                    }
                }

                originalAssociate.AssociateReferenceDetails.Add(associateReferenceDetail);

                foreach (ReferenceDocument referenceDocument in associateReferenceDetail.ReferenceDocuments)
                {
                    this.SetReferenceDocumentEntityState(referenceDocument);
                }
            }

            // Update any changes in existing references
            // After all the new references have been added to originalAssociate.AssociateReferenceDetails
            // and thus removed from associate.AssociateReferenceDetails (see above), the remainder references
            // must be the updates.
            foreach (AssociateReferenceDetail reference in associate.AssociateReferenceDetails)
            {
                AssociateReferenceDetail originalReference =
                    originalAssociate.AssociateReferenceDetails.FirstOrDefault(r => r.ID == reference.ID);

                if (originalReference == null)
                {
                    /* this can happen if the page was loaded whilst the reference exists but it
                       was since deleted in another session. */
                    continue;
                }

                if (sourceSite == Site.AssociatePortal && originalReference.LockedOnPortal)
                {
                    /*
                     * this can happen if they hack the reference ids submitted to the server or if they resubmit an old request.
                     * if the reference should be locked for editing on the Associate Portal and the source is AP then skip it.
                     */
                    continue;
                }

                this.MomentaDb.AssociateReferenceDetails.ApplyCurrentValues(reference);

                foreach (ReferenceDocument refDoc in reference.ReferenceDocuments)
                {
                    this.ApplyReferenceDocumentUpdates(sourceSite, refDoc);
                }

                // Add any new accountants (see above notes about adding new references)
                while (reference.SubReferences.Any(a => a.ID <= 0))
                {
                    AssociateReferenceDetail subReference = reference.SubReferences.First(a => a.ID <= 0);
                    subReference.ContactPermission = reference.ContactPermission;
                    originalReference.SubReferences.Add(subReference);

                    foreach (ReferenceDocument referenceDocument in subReference.ReferenceDocuments)
                    {
                        this.SetReferenceDocumentEntityState(referenceDocument);
                    }
                }

                // Update any changes in existing accountants
                foreach (AssociateReferenceDetail accountant in reference.SubReferences)
                {
                    accountant.ContactPermission = reference.ContactPermission;
                    AssociateReferenceDetail originalSubReference = this.MomentaDb.AssociateReferenceDetails.FirstOrDefault(r => r.ID == accountant.ID);

                    this.MomentaDb.AssociateReferenceDetails.ApplyCurrentValues(accountant);

                    foreach (ReferenceDocument refDoc in accountant.ReferenceDocuments)
                    {
                        this.ApplyReferenceDocumentUpdates(sourceSite, refDoc);
                    }
                }
            }

            foreach (ReferenceDocumentDetails referenceDocumentDetails in preExistingDocuments)
            {
                AssociateReferenceDetail reference = referenceDocumentDetails.Reference;

                var rd = new ReferenceDocument
                {
                    ReferenceId = reference.ID,
                    DocumentId = referenceDocumentDetails.ReferenceDocument.DocumentId
                };

                reference.ReferenceDocuments.Add(rd);
            }
        }
        private void SetReferenceDocumentEntityState(ReferenceDocument referenceDocument)
        {
            // We only want EF to attempt to update the fields in Document not DocumentFull.
            this.MomentaDb.ObjectStateManager.ChangeObjectState(
                referenceDocument.Document,
                EntityState.Modified);

            this.MomentaDb.ObjectStateManager.ChangeObjectState(
                referenceDocument.Document.DocumentFull,
                EntityState.Unchanged);
        }
        private void ApplyReferenceDocumentUpdates(Site sourceSite, ReferenceDocument refDoc)
        {
            string qualifiedEntitySetName =
                this.MomentaDb.DefaultContainerName + "." + ObjectContext.GetEntitySetName(this.MomentaDb, refDoc.Document);

            EntityKey entityKey = refDoc.Document.EntityKey
                ?? new EntityKey(qualifiedEntitySetName, "DocumentId", refDoc.Document.DocumentId);

            object o;

            if (!this.MomentaDb.TryGetObjectByKey(entityKey, out o))
            {
                return;
            }

            var originalReferenceDocument = (Document)o;

            bool approvedStatusToUse = (sourceSite == Site.Admin)
                ? refDoc.Document.Approved
                : originalReferenceDocument.Approved;

            this.MomentaDb.Documents.ApplyCurrentValues(refDoc.Document);

            originalReferenceDocument.Approved = approvedStatusToUse;
        }