public async Task AddAsync(SmsProvider provider, string countryCode, SmsDeliveryStatus status) { var entity = await _tableStorage.GetDataAsync(SmsProviderInfoEntity.GeneratePartitionKey(provider), SmsProviderInfoEntity.GenerateRowKey(countryCode)); if (entity == null) { entity = SmsProviderInfoEntity.Create(provider, countryCode, status); await _tableStorage.TryInsertAsync(entity); } else { await _tableStorage.MergeAsync(SmsProviderInfoEntity.GeneratePartitionKey(provider), SmsProviderInfoEntity.GenerateRowKey(countryCode), infoEntity => { switch (status) { case SmsDeliveryStatus.Delivered: infoEntity.DeliveredCount++; break; case SmsDeliveryStatus.Failed: infoEntity.DeliveryFailedCount++; break; case SmsDeliveryStatus.Unknown: infoEntity.UnknownCount++; break; default: throw new ArgumentOutOfRangeException(nameof(status), status, null); } return(infoEntity); }); } }
public async Task <IEnumerable <ISmsProviderInfo> > GetAllByProviderAsync(SmsProvider provider) { return(await _tableStorage.GetDataAsync(SmsProviderInfoEntity.GeneratePartitionKey(provider))); }