async Task ProcessDelete(ChangeQueueItem queueItem) { try { var deleteHandler = _serviceLocator.ResolveDeleteHandler(queueItem.ChangedItemType, queueItem.ChangedItemIdentifierType); var result = await deleteHandler.Delete(queueItem); UpdateQueueItem(queueItem, result.Success); if (result.Success) { var respository = _repositoryServiceLocator.ResolveRepository(queueItem.ChangedItemType, queueItem.ChangedItemIdentifierType); var itemJson = JsonConvert.DeserializeObject(queueItem.ChangedItemId, queueItem.ChangedItemType); respository.Delete(itemJson); } } catch (Exception ex) { //handle exceptions todo. } }
async Task <bool> ProcessCreate(ChangeQueueItem queueItem) { try { KeyValuePair <Type, Type> typeKeyValuePair = GetQueueItemTypes(queueItem); var createHandler = _serviceLocator.ResolveCreateHandler(typeKeyValuePair.Key, typeKeyValuePair.Value); var result = await createHandler.Create(queueItem); UpdateQueueItem(queueItem, result.Success); //should these be to functions? and or have thier own try catches? if (result.Success) { var respository = _repositoryServiceLocator.ResolveRepository(typeKeyValuePair.Key, typeKeyValuePair.Value); var callbackResult = respository.InsertCallBack(result.Result, queueItem.ChangedItemLocalId); var changedItemLocalId = Guid.Empty; Guid.TryParse(queueItem.ChangedItemLocalId, out changedItemLocalId); var otherQueueItemsForTheSameObject = _changeQueueRepository.All(x => x.ChangeItemTypeString == queueItem.ChangeItemTypeString && x.LocalId == changedItemLocalId); if (otherQueueItemsForTheSameObject.Success) { foreach (var changeQueueItem in otherQueueItemsForTheSameObject.Result) { changeQueueItem.ChangedItemId = callbackResult.Result; _changeQueueRepository.Upsert(changeQueueItem); } } } return(result.Success); } catch (Exception ex) { XOFFLoggerSingleton.Instance.LogException(ex, XOFFErrorSeverity.Warning); } return(false); }