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(); } }
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); }