public RelatorioSaida Gerar(List <TipoBaseVenda> dados) { List <Venda> listaVenda = new List <Venda>(); List <Vendedor> listaVendedores = new List <Vendedor>(); List <Cliente> listaClientes = new List <Cliente>(); foreach (var item in dados) { Venda venda = item as Venda; Vendedor vendedor = item as Vendedor; Cliente cliente = item as Cliente; if (venda != null) { listaVenda.Add(venda); } if (vendedor != null) { listaVendedores.Add(vendedor); } if (cliente != null) { listaClientes.Add(cliente); } } var retorno = new RelatorioSaida(); retorno.NumeroClientes = listaClientes.Count; retorno.NumeroVendedores = listaVendedores.Count; retorno.IdVendaMaisCara = listaVenda.FirstOrDefault(d => d.TotalVenda == listaVenda.Max(c => c.TotalVenda)).SaleId; List <KeyValuePair <string, double> > VendedoresTotalVendas = new List <KeyValuePair <string, double> >(); foreach (var item in listaVenda) { if (VendedoresTotalVendas.Exists(c => c.Key == item.SalesmanName)) { //atualiza var idxVendedor = VendedoresTotalVendas.FindIndex(c => c.Key == item.SalesmanName); VendedoresTotalVendas[idxVendedor] = new KeyValuePair <string, double>(item.SalesmanName, VendedoresTotalVendas[idxVendedor].Value + item.TotalVenda); } else { //insere VendedoresTotalVendas.Add(new KeyValuePair <string, double>(item.SalesmanName, item.TotalVenda)); } } retorno.PiorVendedor = VendedoresTotalVendas.FirstOrDefault(d => d.Value == VendedoresTotalVendas.Min(c => c.Value)).Key; return(retorno); }
public void Grava(string arquivoOrigem, RelatorioSaida relatorio) { var arquivoSaida = arquivoOrigem.Replace("\\data\\in", "\\data\\out"); StringBuilder sb = new StringBuilder(); sb.AppendLine("Clientes no arquivo de entrada: " + relatorio.NumeroClientes); sb.AppendLine("Vendedores no arquivo de entrada: " + relatorio.NumeroVendedores); sb.AppendLine("ID da venda mais cara: " + relatorio.IdVendaMaisCara); sb.AppendLine("Pior vendedor: " + relatorio.PiorVendedor); Directory.CreateDirectory(arquivoSaida.Substring(0, arquivoSaida.LastIndexOf("\\"))); File.Create(arquivoSaida).Close(); File.WriteAllText(arquivoSaida, sb.ToString()); }