public static IEnumerable <HistoryResponseModel> ToResponseModel(this BaseHistoryModel baseModel) { switch (baseModel) { case CashinModel cashin: yield return(cashin.ToResponseModel()); break; case CashoutModel cashout: yield return(cashout.ToResponseModel()); break; case TradeModel trade: foreach (var item in trade.ToResponseModel()) { yield return(item); } break; case OrderEventModel orderEvent: yield return(orderEvent.ToResponseModel()); break; } }
/// <summary> /// Converts history models to API response /// </summary> /// <param name="historyModel">Should be only of type CashinModel or CashoutModel</param> /// <param name="assetsHelper"></param> /// <returns></returns> public static async Task <FundsResponseModel> ToFundsResponseModel(this BaseHistoryModel historyModel, IAssetsHelper assetsHelper) { switch (historyModel) { case CashinModel cashin: { var asset = await assetsHelper.GetAssetAsync(cashin.AssetId); return(new FundsResponseModel { Id = cashin.Id, Volume = Math.Abs(cashin.Volume), AssetId = cashin.AssetId, AssetName = asset?.DisplayId ?? cashin.AssetId, Operation = FundsOperation.Deposit, Status = FundsStatus.Completed, Type = FundsType.Undefined, Timestamp = cashin.Timestamp, BlockchainHash = cashin.BlockchainHash }); } case CashoutModel cashout: { var asset = await assetsHelper.GetAssetAsync(cashout.AssetId); return(new FundsResponseModel { Id = cashout.Id, Volume = Math.Abs(cashout.Volume), AssetId = cashout.AssetId, AssetName = asset?.DisplayId ?? cashout.AssetId, Operation = FundsOperation.Withdraw, Status = FundsStatus.Completed, Type = FundsType.Undefined, Timestamp = cashout.Timestamp, BlockchainHash = cashout.BlockchainHash }); } default: return(null); } }
public static HistoryModel ToHistoryModel(this BaseHistoryModel baseModel) { switch (baseModel) { case CashinModel cashin: return(cashin.ToHistoryModel()); case CashoutModel cashout: return(cashout.ToHistoryModel()); case TradeModel trade: return(trade.ToHistoryModel()); case OrderEventModel orderEvent: return(orderEvent.ToHistoryModel()); } throw new ArgumentException($"{baseModel.Id} has unrecognized type"); }