/// <summary> /// Saves the collection of PublishRequests into the database for recovery. /// </summary> /// <param name="requestCollection">The request collection.</param> /// <param name="isQueuedRequest">if set to <c>true</c> [is queued request].</param> /// <returns>True if successful otherwise false.</returns> public static bool SaveToDatabase(IEnumerable <PublishRequest> requestCollection, bool isQueuedRequest) { if (requestCollection.Count() > 0) { return(false); } try { using (var databaseContext = new ZentityAdministrationDataContext(Utilities.ZentityConnectionString)) { List <PublishRequestRecovery> requestCollectionDB = new List <PublishRequestRecovery>(); int loopIndexNew = 0; int loopIndexOld = 0; foreach (var sourceRequest in requestCollection) { var existingRequestDB = databaseContext.PublishRequestRecoveries.Where(request => request.InstanceId == sourceRequest.InstanceId).FirstOrDefault(); if (existingRequestDB == default(PublishRequestRecovery)) { PublishRequestRecovery newRequestDB = new PublishRequestRecovery { InstanceId = sourceRequest.InstanceId, DataModelNamespace = sourceRequest.DataModelNamespace, ResourceTypeName = sourceRequest.ResourceTypeName, IsQueuedRequest = isQueuedRequest, QueueOrder = isQueuedRequest ? loopIndexNew++ : 0, ObjectData = sourceRequest.SerializeToXElement() }; requestCollectionDB.Add(newRequestDB); } else { existingRequestDB.IsQueuedRequest = isQueuedRequest; existingRequestDB.QueueOrder = loopIndexOld++; existingRequestDB.ObjectData = sourceRequest.SerializeToXElement(); databaseContext.SubmitChanges(System.Data.Linq.ConflictMode.ContinueOnConflict); } } if (requestCollectionDB.Count > 0) { databaseContext.PublishRequestRecoveries.InsertAllOnSubmit(requestCollectionDB); } databaseContext.SubmitChanges(System.Data.Linq.ConflictMode.ContinueOnConflict); return(true); } } catch (Exception ex) { Globals.TraceMessage(TraceEventType.Error, ex.ToString(), ex.Message); } return(false); }
/// <summary> /// Saves the PublishRequest into database for recovery. /// </summary> /// <param name="isQueuedRequest">if set to <c>true</c> [is queued request].</param> /// <returns>True if successful otherwise false.</returns> internal bool SaveToDatabase(bool isQueuedRequest) { try { using (var databaseContext = new ZentityAdministrationDataContext(Utilities.ZentityConnectionString)) { var existingRequestDB = databaseContext.PublishRequestRecoveries.Where(request => request.InstanceId == this.InstanceId).FirstOrDefault(); if (existingRequestDB == default(PublishRequestRecovery)) { // If this is a queued request then fetch the highest QueueOrder number. int currentQueueOrder = 0; if (isQueuedRequest) { var queueOrderList = databaseContext.PublishRequestRecoveries.Where(request => request.IsQueuedRequest).Select(request => request.QueueOrder); if (queueOrderList.Count() > 0) { currentQueueOrder = queueOrderList.Max(); } } // Create the new PublishRequestRecovery object and add to the database PublishRequestRecovery newPublishRequestDB = new PublishRequestRecovery { InstanceId = this.InstanceId, DataModelNamespace = this.DataModelNamespace, ResourceTypeName = this.ResourceTypeName, IsQueuedRequest = isQueuedRequest, QueueOrder = currentQueueOrder + 1, ObjectData = this.SerializeToXElement() }; databaseContext.PublishRequestRecoveries.InsertOnSubmit(newPublishRequestDB); } else { if (existingRequestDB.IsQueuedRequest && isQueuedRequest == false) { existingRequestDB.QueueOrder = 0; } existingRequestDB.DataModelNamespace = this.DataModelNamespace; existingRequestDB.ResourceTypeName = this.ResourceTypeName; existingRequestDB.IsQueuedRequest = isQueuedRequest; existingRequestDB.ObjectData = this.SerializeToXElement(); } databaseContext.SubmitChanges(System.Data.Linq.ConflictMode.ContinueOnConflict); } } catch (Exception ex) { Globals.TraceMessage(TraceEventType.Error, ex.ToString(), ex.Message); } return(false); }
/// <summary> /// Deserializes PublishRequest from the XElement property (ObjectData) of PublishRequestDB. /// </summary> /// <param name="publishRequestDB">The publish request from DB.</param> /// <returns>PublishRequest from the XElement property (ObjectData) of PublishRequestDB</returns> internal static PublishRequest DeserializeFromXElement(this PublishRequestRecovery publishRequestDB) { Globals.TraceMessage(TraceEventType.Verbose, string.Empty, Properties.Messages.StartedFunctionMessage); if (publishRequestDB != null) { try { DataContractSerializer serializer = new DataContractSerializer(typeof(PublishRequest)); return((PublishRequest)serializer.ReadObject(publishRequestDB.ObjectData.CreateReader(ReaderOptions.OmitDuplicateNamespaces))); } catch (Exception ex) { Globals.TraceMessage(TraceEventType.Error, ex.ToString(), ex.Message); } } Globals.TraceMessage(TraceEventType.Verbose, Properties.Messages.NullEmptyMessage, Properties.Messages.NullEmptyTitle); return(null); }
partial void DeletePublishRequestRecovery(PublishRequestRecovery instance);
partial void UpdatePublishRequestRecovery(PublishRequestRecovery instance);
partial void InsertPublishRequestRecovery(PublishRequestRecovery instance);