Ejemplo n.º 1
0
        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.
            }
        }
Ejemplo n.º 2
0
        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);
        }