public async Task <OperationResult> RemoveAsync(TaskShellAbstraction task) { if (task == default) { return(OperationResult.Failure($"Входное значение {task} не может быть null")); } try { var serializedTasks = await _distributedCache.GetStringAsync($"{_prefixTasks}:{task.CurrencyPairName}"); if (!string.IsNullOrWhiteSpace(serializedTasks)) { var tasks = JsonConvert.DeserializeObject <ICollection <TaskShellAbstraction> >(serializedTasks); if (tasks.Any(r => r.TaskName == task.TaskName)) { tasks.Remove(tasks.Single(r => r.TaskName == task.TaskName)); await _distributedCache.SetStringAsync($"{_prefixTasks}:{task.CurrencyPairName}", JsonConvert.SerializeObject(tasks)); } } } catch (Exception ex) { OperationResult.Failure($"Не удалось удалить {task} в коллекцию tasks", ex); } return(OperationResult.Success()); }
public async Task <OperationResult> AddOrUpdateTaskAsync(TaskShellAbstraction task) { if (string.IsNullOrWhiteSpace(task.TaskName)) { return(OperationResult.Failure($"Входной параметр {task.TaskName} не может быть null или пустым")); } await _distributedCache.SetStringAsync($"{_prefixTasks}:{task.TaskName}", JsonConvert.SerializeObject(task)); return(OperationResult.Success()); }
public async Task <OperationResult <TaskShellAbstraction> > AddOrUpdateAsync(TaskShellAbstraction item) { //TODO: завести валидацию if (item == default) { return(OperationResult <TaskShellAbstraction> .Failure($"Входное значение {item} не может быть null")); } try { var result = await _taskNamesCollectionStorage.AddOrUpdateTaskAsync(item); if (result.IsSuccess) { } var serializedTasks = await _distributedCache.GetStringAsync($"{_prefixTasks}:{item.CurrencyPairName}"); if (string.IsNullOrWhiteSpace(serializedTasks)) { await _distributedCache.SetStringAsync($"{_prefixTasks}:{item.CurrencyPairName}", JsonConvert.SerializeObject(new Collection <TaskShellAbstraction> { item })); } else { var tasks = JsonConvert.DeserializeObject <ICollection <TaskShellAbstraction> >(serializedTasks); if (tasks.Any(r => r.TaskName == item.TaskName)) { var task = tasks.Single(r => r.TaskName == item.TaskName); tasks.Remove(task); } tasks.Add(item); await _distributedCache.SetStringAsync($"{_prefixTasks}:{item.CurrencyPairName}", JsonConvert.SerializeObject(tasks)); } } catch (Exception ex) { OperationResult <TaskShellAbstraction> .Failure($"Не удалось добавить или обновить {item} в коллекцию tasks", ex); } return(OperationResult <TaskShellAbstraction> .Success(item)); }