I need to return on a REST data from two tables, to be consumed in an Android / IOS App, developed with xamarin. As I return a DTO, I found it good to bring data from two tables in this DTO, but I find it somewhat gambi. The other solution would be to return two DTOs, there would be two services, one filling the Release Listview and the other filling out the Listview of Items. I do not know what the best approach would be. Below my DTO.
public class LiberacaoItensDTO
{
//Mapeamento dos campos, pois estava dando erro de cast e assim resolveu
public LiberacaoItensDTO()
{
Mapper.Initialize(cfg =>
{
cfg.CreateMap<LiberacaoItensDTO, Liberacao>()
.ForMember(d => d.DataLib, opt => opt.MapFrom(src => DataLib.ToString()));
});
}
//Dados da tabela Liberação
public int IdLiberacao { get; set; }
[DefaultValue(0)]
public int IdOrcamento { get; set; }
[DefaultValue(0)]
public int IdVendedor { get; set; }
public string Vendedor { get; set; }
public int IdFilial { get; set; }
public string Filial { get; set; }
[DefaultValue(0)]
public float? DataLib { get; set; }
public int IdCliente { get; set; }
public string Cliente { get; set; }
public string TipoVenda { get; set; }
[DefaultValue(0)]
public float Juros { get; set; }
[DefaultValue(0)]
public float Desconto { get; set; }
[DefaultValue(0)]
public double Vencimento { get; set; }
[DefaultValue(0)]
public double Acrescimo { get; set; }
[DefaultValue(0)]
public float Entrada { get; set; }
//Dados da tabela de ItensLib
public int IdProduto { get; set; }
public string Produto { get; set; }
[DefaultValue(0)]
public float Qtde { get; set; }
[DefaultValue(0)]
public float Unitario { get; set; }
[DefaultValue(0)]
public float CustoDiario { get; set; }
[DefaultValue(0)]
public double UltCondicao { get; set; }
[DefaultValue(0)]
public float Total { get; set; }
}
Method to bring DTO into service
public List<LiberacaoDTO> getAutoriza(int idorcamento)
{
var lista = contexto.Liberacoes??????? Faria um Join com as duas tabelas, liberacao e itenslib
.Where(lib => lib.IdOrcamento == idorcamento)
.Select(lib => new LiberacaoItensDTO
{
//Aqui coloco os campos retornados
}).ToList();
return lista;
}