public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { var jsonObject = JObject.Load(reader); var jobjTipo = jsonObject["tipo"]; int idTipo = jobjTipo["id"].Value <int>(); TipoDeTabelaDePreco tipo = TipoDeTabelaDePreco.Obtem(idTipo); var tabelaDePreco = serializer.Deserialize(jsonObject.CreateReader(), tipo.ConvertePara()); return(tabelaDePreco); }
public async Task <IEnumerable <ITabelaDePreco <int> > > ObtemTabelasDePrecoAsync(IEnumerable <int> idsTabelas, TipoDeTabelaDePreco tipo, PeriodoSimples periodo = null) { PeriodoSimples periodoRequisicao = periodo; string apiPath = new Uri(new Uri(_endpoint), Constantes.URL_TABELA_DE_PRECO).AbsoluteUri; RequisicaoSemConteudo <IEnumerable <ITabelaDePreco <int> > > requisicao = new RequisicaoSemConteudo <IEnumerable <ITabelaDePreco <int> > >(apiPath, _context); if (periodoRequisicao != null) { requisicao.Parameters.Add(new ParametrosDaRequisicao("inicio", periodoRequisicao.Inicio.ToString("yyyy-MM-ddTHH:mm:ss"))); requisicao.Parameters.Add(new ParametrosDaRequisicao("fim", periodoRequisicao.Fim.ToString("yyyy-MM-ddTHH:mm:ss"))); } if (tipo != null) { requisicao.Parameters.Add(new ParametrosDaRequisicao("Tipo", tipo.Id.ToString())); } if (idsTabelas?.Count() > 0) { requisicao.Parameters.Add(new ParametrosDaRequisicao("ids", String.Join(",", idsTabelas))); } System.Threading.CancellationToken cancellationToken = new System.Threading.CancellationToken(); string tabelasSerializadas = await requisicao.ObtemAsync(cancellationToken); IEnumerable <ITabelaDePreco <int> > tabelas = DeserializarTabelas(tabelasSerializadas); return(tabelas); }