/// <summary> /// Store name-description pair into database. /// Change source xml to update description at request creation page. /// </summary> /// <param name="db">An instance of <see cref="OnboardingDbContext"/>.</param> public static void AddOrUpdateDescriptions(OnboardingDbContext db) { Logger.Debug("Updating descriptions by retrieving from source depot..."); SystemHelpers.SyncDepot(); var xmlDoc = new XmlDocument(); xmlDoc.Load(Constants.DescriptionFilePath); var list = xmlDoc.GetElementsByTagName("Descriptions")[0].ChildNodes; for (var i = 0; i < list.Count; i++) { var entity = new Description { Name = list[i].Name, Content = list[i].InnerText }; if (db.Descriptions.Any(e => e.Name == entity.Name)) { db.Descriptions.Attach(entity); db.Entry(entity).State = EntityState.Modified; } else { db.Descriptions.Add(entity); } } var num = db.SaveChanges(); Logger.Debug(num + " descriptions have been updated in database"); }
/// <summary> /// Store ScopeName-ScopeId pair into database. /// To prevent duplication, do not add if the ScopeId already exists. /// </summary> /// <param name="db">An instance of <see cref="OnboardingDbContext"/>.</param> public static void AddOrUpdateScopes(OnboardingDbContext db) { Logger.Debug("Updating Scopes by retrieving from source depot..."); SystemHelpers.SyncDepot(); var xmlDoc = new XmlDocument(); xmlDoc.Load(Constants.RbacpolicyPath + Constants.ScopesFilename); var nameList = xmlDoc.GetElementsByTagName("DisplayName"); var idList = xmlDoc.GetElementsByTagName("ScopeId"); if (nameList != null) { for (var i = 0; i < nameList.Count; i++) { var entity = new Scope { ScopeName = nameList[i].InnerText, ScopeId = idList[i].InnerText }; if (db.Scopes.Any(e => e.ScopeId == entity.ScopeId)) { db.Scopes.Attach(entity); db.Entry(entity).State = EntityState.Modified; } else { db.Scopes.Add(entity); } } } var num = db.SaveChanges(); Logger.Debug(num + " Scopes have been updated in database"); }
private static void UpdateDbInfo(OnboardingDbContext db) { //DbHelpers.AddOrUpdateTaskSets(db); //DbHelpers.AddOrUpdateScopes(db); DbHelpers.AddOrUpdateDescriptions(db); DbHelpers.AddOrUpdateExistingSpts(db); }
private static void HandleRequests(OnboardingDbContext db) { foreach (var request in DbHelpers.UncompletedRequests(db)) { //ct.ThrowIfCancellationRequested(); Logger.Info("Handling request with id [" + request.RequestId + "], type [" + request.Type + "] state [" + request.State + "]"); switch (request.State) { case RequestState.Created: HandleCreated(request); break; case RequestState.PendingReview: HandlePendingReview(request); break; case RequestState.ReviewCompleted: HandleReviewCompleted(request); break; case RequestState.RTDQueued: HandleRtdQueued(request); break; case RequestState.RTDApproved: HandleRtdApproved(request); break; } } }
/// <summary> /// Get all the requests that are not in state Completed or Canceled. /// So that can handle each request in the list /// </summary> /// <param name="db">An instance of <see cref="OnboardingDbContext"/>.</param> /// <returns>Requests that are not in state Completed or Canceled.</returns> public static IQueryable <OnboardingRequest> UncompletedRequests(OnboardingDbContext db) { return (from d in db.OnboardingRequests where d.State != RequestState.Completed && d.State != RequestState.Canceled select d); }
public static void Main() { InitializeClients(); using (var db = new OnboardingDbContext()) { UpdateDbInfo(db); HandleRequests(db); db.SaveChanges(); } CloseClients(); //Console.WriteLine("done"); //Console.WriteLine("Hit enter..."); //Console.Read(); }
/// <summary> /// Store filename-xml pair into database. /// </summary> /// <param name="db">An instance of <see cref="OnboardingDbContext"/>.</param> public static void AddOrUpdateExistingSpts(OnboardingDbContext db) { Logger.Debug("Updating ExistingSpts by retrieving from source depot..."); SystemHelpers.SyncDepot(); foreach (var file in Directory.EnumerateFiles(Constants.ProductCatalogPath, "*.xml")) { var xmlDoc = new XmlDocument(); xmlDoc.Load(file); var dirObjs = xmlDoc.GetElementsByTagName("DirectoryChanges")[0].ChildNodes; XmlNode targetObj = null; for (var i = 0; i < dirObjs.Count; i++) { if (XmlHelpers.IsValidSpt(dirObjs[i].OuterXml)) { targetObj = dirObjs[i]; } } if (targetObj != null) { var tempDoc = new XmlDocument(); tempDoc.LoadXml(targetObj.OuterXml); var entity = new ExistingSpt { Name = XmlHelpers.GetFileNameFromPath(file), XmlContent = targetObj.OuterXml, ServiceType = tempDoc.GetElementsByTagName("ServiceType")[0].InnerText }; if (db.ExistingSpts.Any(e => e.Name == entity.Name)) { db.ExistingSpts.Attach(entity); db.Entry(entity).State = EntityState.Modified; } else { db.ExistingSpts.Add(entity); } } } var num = db.SaveChanges(); Logger.Debug(num + " ExistingSpts have been updated in database"); }