private static void SaveTaskChanges(SavingTask task) { var document = XDocument.Load(task.FilePath); foreach (var entityToDelete in task.EntitiesToDelete) { if (TryRemoveElementFromParentById(document, PersistenceConstants.Categories, entityToDelete)) { continue; } if (TryRemoveElementFromParentById(document, PersistenceConstants.StandingOrders, entityToDelete)) { continue; } TryRemoveElementFromParentById(document, PersistenceConstants.Requests, entityToDelete); } foreach (var categoryEntity in task.CategoriesToUpdate) { UpdateElementInParent(document, PersistenceConstants.Categories, categoryEntity.PersistentId, categoryEntity.Serialize()); } foreach (var requestEntity in task.RequestsToUpdate) { UpdateElementInParent(document, PersistenceConstants.Requests, requestEntity.PersistentId, requestEntity.Serialize()); } foreach (var standingOrderEntity in task.StandingOrdersToUpdate) { UpdateElementInParent(document, PersistenceConstants.StandingOrders, standingOrderEntity.PersistentId, standingOrderEntity.Serialize()); } document.Save(task.FilePath); }
public string[] UpdateStandingOrdersToCurrentMonth() { var currentMonthLastDay = _applicationContext.Now.Date.LastDayOfMonth(); var standingOrdersToUpdate = _allStandingOrders.Where(r => r.FirstBookDate.Date <= currentMonthLastDay).ToList(); var task = new SavingTask(FilePath); var newCreatedRequestsEntityIds = new List<string>(); foreach(var standingOrder in standingOrdersToUpdate) { var bookDate = standingOrder.GetNextPaymentDateTime(); while(bookDate != null && bookDate.Value <= currentMonthLastDay) { var newRequest = standingOrder.CreateRequest(bookDate.Value); _allRequests.Add(newRequest); newCreatedRequestsEntityIds.Add(newRequest.PersistentId); standingOrder.LastBookedDate = bookDate.Value; bookDate = standingOrder.GetNextPaymentDateTime(); task.RequestsToUpdate.Add(newRequest.Clone()); } task.StandingOrdersToUpdate.Add(standingOrder.Clone()); } _persistenceHandler.SaveChanges(task); return newCreatedRequestsEntityIds.ToArray(); }
private static void SaveTaskChanges(SavingTask task) { var document = XDocument.Load(task.FilePath); foreach (var entityToDelete in task.EntitiesToDelete) { if (TryRemoveElementFromParentById(document, PersistenceConstants.Categories, entityToDelete)) continue; if (TryRemoveElementFromParentById(document, PersistenceConstants.StandingOrders, entityToDelete)) continue; TryRemoveElementFromParentById(document, PersistenceConstants.Requests, entityToDelete); } foreach (var categoryEntity in task.CategoriesToUpdate) { UpdateElementInParent(document, PersistenceConstants.Categories, categoryEntity.PersistentId, categoryEntity.Serialize()); } foreach (var requestEntity in task.RequestsToUpdate) { UpdateElementInParent(document, PersistenceConstants.Requests, requestEntity.PersistentId, requestEntity.Serialize()); } foreach (var standingOrderEntity in task.StandingOrdersToUpdate) { UpdateElementInParent(document, PersistenceConstants.StandingOrders, standingOrderEntity.PersistentId, standingOrderEntity.Serialize()); } document.Save(task.FilePath); }
public string[] UpdateStandingOrdersToCurrentMonth(int year, int month) { var currentMonthLastDay = new DateTime(year, month, 1).LastDayOfMonth(); var standingOrdersToUpdate = _allStandingOrders.Where(r => r.FirstBookDate.Date <= currentMonthLastDay).ToList(); var task = new SavingTask(FilePath); var newCreatedRequestsEntityIds = new List <string>(); foreach (var standingOrder in standingOrdersToUpdate) { var bookDate = standingOrder.GetNextPaymentDateTime(); while (bookDate != null && bookDate.Value <= currentMonthLastDay) { var newRequest = standingOrder.CreateRequest(bookDate.Value); _allRequests.Add(newRequest); newCreatedRequestsEntityIds.Add(newRequest.PersistentId); standingOrder.LastBookedDate = bookDate.Value; bookDate = standingOrder.GetNextPaymentDateTime(); task.RequestsToUpdate.Add(newRequest.Clone()); } task.StandingOrdersToUpdate.Add(standingOrder.Clone()); } _persistenceHandler.SaveChanges(task); return(newCreatedRequestsEntityIds.ToArray()); }
public void SaveChanges(SavingTask task) { lock (_lockObject) { _tasksToWork.Enqueue(task); } if (!_isWorkerThreadRunning) { _isWorkerThreadRunning = true; ThreadPool.QueueUserWorkItem(OnWorkTasks); } }
public void SaveChanges(SavingTask task) { lock (_lockObject) { _tasksToWork.Enqueue(task); } if (!_isWorkerThreadRunning) { _isWorkerThreadRunning = true; ThreadPool.QueueUserWorkItem(OnWorkTasks); } }
public void DeleteCategory(string persistentId) { EnsureRepositoryOpen("CreateRequest"); var savingTask = new SavingTask(FilePath); var categoryEntityImp = _allCategories.Single(r => r.PersistentId == persistentId); _allCategories.Remove(categoryEntityImp); savingTask.EntitiesToDelete.Add(categoryEntityImp.PersistentId); foreach (var request in _allRequests.Where(r => r.Category != null && r.Category.PersistentId == categoryEntityImp.PersistentId)) { request.Category = null; savingTask.RequestsToUpdate.Add(request.Clone()); } _persistenceHandler.SaveChanges(savingTask); }
public void DeleteCategory(string persistentId) { EnsureRepositoryOpen("CreateRequest"); var savingTask = new SavingTask(FilePath); var categoryEntityImp = _allCategories.Single(r => r.PersistentId == persistentId); _allCategories.Remove(categoryEntityImp); savingTask.EntitiesToDelete.Add(categoryEntityImp.PersistentId); foreach (var request in _allRequests.Where(r => r.Category != null && r.Category.PersistentId == categoryEntityImp.PersistentId)) { request.Category = null; savingTask.RequestsToUpdate.Add(request.Clone()); } _persistenceHandler.SaveChanges(savingTask); }