コード例 #1
0
        protected void ProcessSubmittalElements(SubmittalElementStatus status, SubmittalElementType type)
        {
            int fseIndex = 0;
            int fseCount = 0;
            XmlSerializationResult          serializationResult = null;
            List <FacilitySubmittalElement> fses = null;
            bool unprocessedOnly = true;

            OnNotification("Fetching " + (unprocessedOnly ? " Unprocessed " : "") + " '" + status.ToString() + "' FSE Records for '" + type.ToString() + "'...");

            fses = Repository.FacilitySubmittalElements.EDTBatchSearch(type, status, unprocessed: unprocessedOnly).ToList();

            fseCount = fses.Count;
            fseIndex = 0;
            OnNotification("Fetched " + (unprocessedOnly ? " Unprocessed " : "") + " '" + status.ToString() + "' FSE Records for " + type.ToString() + ". Processing " + fseCount + " FSE's...");

            foreach (var fse in fses)
            {
                try
                {
                    serializationResult        = Repository.FacilitySubmittalElements.UpdateXmlMetadata(fse, saveChanges: true, ignoreCommonFieldUpdate: true);
                    serializationResult.Xml    = null;
                    serializationResult.Schema = null;
                    serializationResult        = null;
                    OnNotification("Updated XML For '" + type + "' (" + status + ") FSEID: " + fse.ID + " (" + fseIndex + " of " + fseCount + ")");
                }
                catch (Exception ex)
                {
                    OnNotification("Problem updating " + fse.ID + ".", ex: ex);
                }
                fseIndex++;
                CalculateProgress(fseIndex, fseCount);
                GC.Collect();
            }
        }
コード例 #2
0
        public override XElement Process(RegulatorFacilitySubmittalQueryArguments args)
        {
            TransactionScope.WriteQueryArguments(args);
            var regulator = Repository.Regulators.GetByEDTIdentityKey(args.RegulatorCode);

            if (regulator == null)
            {
                throw new Exception("The specified RegulatorCode \"" + args.RegulatorCode + "\" is invalid.");
            }

            if (args.Statuses.Contains(SubmittalElementStatus.Draft))
            {
                throw new Exception("You cannot download Facility Submittals with a Status of Draft");
            }

            bool useFSEXmlCache = EDTConfig.Serialization.RegulatorFacilitySubmittalQuery.UseXmlCache;

            //attach the regulator to this transaction so that we know that this regulator made this transaction easily.
            TransactionScope.Connect(regulator);

            List <FacilitySubmittalElement> fses = new List <FacilitySubmittalElement>();

            fses.AddRange(Repository.FacilitySubmittalElements.EDTSearch(
                              args.SubmittedOnStart,
                              args.SubmittedOnEnd,
                              args.SubmittalElementType,
                              args.CERSID,
                              regulator.ID,
                              args.SubmittalActionOnStart,
                              args.SubmittalActionOnEnd,
                              args.Statuses.ToArray()
                              ).ToList()
                          );

            XmlSerializationResult result = null;

            try
            {
                result = Serializer.Serialize(fses, TransactionScope.Transaction, useFSEXmlCache: useFSEXmlCache);
                TransactionScope.Complete(EDTTransactionStatus.Accepted);
                Serializer.UpdateTransactionStatus(result, TransactionScope.Transaction);
            }
            catch (Exception ex)
            {
                TransactionScope.WriteActivity("Unable to serialize the data.", ex);
                TransactionScope.WriteMessage("Unable to serialize the data.", ex);
                TransactionScope.Complete(EDTTransactionStatus.Rejected);
            }

            TransactionScope.SaveXml(result.Xml, EDTTransactionXmlDirection.Outbound);
            return(result.Xml);
        }