public void CalcularVelocidadeMediaDeCadaPiloto(Dictionary <int, DadosCorridaPiloto> pDadosVoltaPilotos) { StringBuilder velocidadeMediaByPiloto = new StringBuilder(); var formatString = "|{0,-35}|{1,-35}|{2,-35}|"; velocidadeMediaByPiloto.AppendLine() .AppendFormat(Culture, formatString, "Código Piloto", "Nome Piloto", "Velocidade Média") .AppendLine(); String primeiraLinha = CriarLinhaFormatadoraColunasTabelas(velocidadeMediaByPiloto); velocidadeMediaByPiloto.Insert(0, primeiraLinha); velocidadeMediaByPiloto.Append(primeiraLinha).AppendLine(); // constroi relatorio da velocidade Média de Cada Piloto pDadosVoltaPilotos.ToList().ForEach(x => { velocidadeMediaByPiloto.AppendFormat(Culture, formatString, x.Value.Piloto.Codigo.ToString("D3"), x.Value.Piloto.NomePiloto, x.Value.VelocidadeMediaCorrida.ToString()).AppendLine(); }); //acrescenta no relatorio Final título seção Velcidade Média por Piloto RelatorioFinal.Append(Environment.NewLine).AppendLine().Append("-> [ VELOCIDADE MÉDIA POR PILOTO ]").AppendLine().AppendLine(); //append no relatorio Final dados sobre MELHOR VOLTA POR PILOTO RelatorioFinal.Append(velocidadeMediaByPiloto.ToString()); }
public void CalcularMelhorVoltaDeCadaPiloto(Dictionary <int, DadosCorridaPiloto> pDadosVoltaPilotos) { var melhorVoltaByPilotoRelatorio = new StringBuilder(); var formatString = "|{0,-35}|{1,-35}|{2,-35}|"; melhorVoltaByPilotoRelatorio.AppendLine() .AppendFormat(Culture, formatString, "Código Piloto", "Nome Piloto", "Melhor Volta") .AppendLine(); string primeiraLinha = CriarLinhaFormatadoraColunasTabelas(melhorVoltaByPilotoRelatorio); melhorVoltaByPilotoRelatorio.Insert(0, primeiraLinha); melhorVoltaByPilotoRelatorio.Append(primeiraLinha).AppendLine(); // constrói relatório da melhor Volta De Cada Piloto pDadosVoltaPilotos.ToList().ForEach(elem => { int codigoPiloto = elem.Key; String nomePiloto = elem.Value.Piloto.NomePiloto; TimeSpan melhorVolta = elem.Value.MelhorVolta; melhorVoltaByPilotoRelatorio.AppendFormat(Culture, formatString, codigoPiloto.ToString("D4"), nomePiloto, melhorVolta.ToString(@"hh\:mm\:ss\:fff")).AppendLine(); }); //acrescenta no relatório Final título como: [ MELHOR VOLTA POR PILOTO ] RelatorioFinal.AppendLine().AppendLine().Append("-> [ MELHOR VOLTA POR PILOTO ]").AppendLine().AppendLine(); //append no relatório Final dados sobre MELHOR VOLTA POR PILOTO RelatorioFinal.Append(melhorVoltaByPilotoRelatorio.ToString()); }
public void CalcularMelhorVoltaDaCorrida(Dictionary <int, DadosCorridaPiloto> pDadosVoltaPilotos) { StringBuilder melhorVoltaDaCorrida = new StringBuilder(); var formatString = "|{0,-35}|{1,-35}|{2,-35}|"; melhorVoltaDaCorrida.AppendLine() .AppendFormat(Culture, formatString, "Código Piloto", "Nome Piloto", "Tempo da Volta") .AppendLine(); String primeiraLinha = CriarLinhaFormatadoraColunasTabelas(melhorVoltaDaCorrida); melhorVoltaDaCorrida.Insert(0, primeiraLinha); melhorVoltaDaCorrida.Append(primeiraLinha).AppendLine(); //hashmap que sera retornado. OBS é um LinkedHashMap pois ele sempre preserva a ordem de insercão //pilotos ordenados pelo menor tempo de volta var pilotosOrdenadosByMenorTempoVolta = new Dictionary <int, DadosCorridaPiloto>(); //ordena o dicionário pelo menor tempo de volta de cada piloto pDadosVoltaPilotos.ToList().OrderBy(x => x.Value.MelhorVolta).ToList() .ForEach(x => pilotosOrdenadosByMenorTempoVolta.Add(x.Key, x.Value)); DadosCorridaPiloto dadosMelhorPiloto = pilotosOrdenadosByMenorTempoVolta.FirstOrDefault().Value; int codigoPiloto = dadosMelhorPiloto.Piloto.Codigo; String nomePiloto = dadosMelhorPiloto.Piloto.NomePiloto; TimeSpan melhorVolta = dadosMelhorPiloto.MelhorVolta; melhorVoltaDaCorrida.AppendFormat(Culture, formatString, codigoPiloto.ToString("D3"), nomePiloto, melhorVolta.ToString(@"hh\:mm\:ss\:fff")).AppendLine(); //acrescenta no relatorio Final título seção MELHOR VOLTA POR PILOTO RelatorioFinal.AppendLine().AppendLine().Append("-> [ MELHOR VOLTA DA CORRIDA ]").AppendLine().AppendLine(); //append no relatorio Final dados sobre MELHOR VOLTA POR PILOTO RelatorioFinal.Append(melhorVoltaDaCorrida.ToString()); }
public void CalcularClassificacaoFinalPilotos(Dictionary <int, DadosCorridaPiloto> pPosicaoFinal) { StringBuilder classificacaoFinal = new StringBuilder(); var formatString = "|{0,-30}|{1,-30}|{2,-30}|{3,-30}|{4,-30}|{5,-30}|"; classificacaoFinal.AppendLine() .AppendFormat(Culture, formatString, "Posição Chegada", "Código Piloto", "Nome Piloto", "Qtde Voltas Completadas", "Tempo Total de Prova", "Tempo de Chegada Após Vencedor") .AppendLine(); String primeiraLinha = CriarLinhaFormatadoraColunasTabelas(classificacaoFinal); classificacaoFinal.Insert(0, primeiraLinha); classificacaoFinal.Append(primeiraLinha).AppendLine(); TimeSpan tempoChegadaVencedor = pPosicaoFinal.FirstOrDefault().Value.HoraUltimaVolta; int count = 1; // constrói relatorio da classificação final de cada piloto pPosicaoFinal.ToList().ForEach(x => { int codigoPiloto = x.Key; string nomePiloto = x.Value.Piloto.NomePiloto; int qtdVoltas = x.Value.NumeroDeVoltasTotais; string tempoTotal = x.Value.TempoTotalCorrida.ToString(@"hh\:mm\:ss\:fff"); TimeSpan horaChegada = x.Value.HoraUltimaVolta; string diferencaToVencedor = (tempoChegadaVencedor.CompareTo(horaChegada) == 0) ? "(Não se Aplica)" : TimeSpanUtils.OperarTimeSpans(horaChegada, tempoChegadaVencedor, ETimeSpanOperacao.Subtracao).ToString(@"hh\:mm\:ss\:fff"); classificacaoFinal.AppendFormat(Culture, formatString, count++, codigoPiloto.ToString("D3"), nomePiloto, qtdVoltas, tempoTotal, diferencaToVencedor).AppendLine(); }); RelatorioFinal.Append("[ RESULTADO FINAL DA CORRIDA (CLASSIFICAÇÃO) E DIFERENÇA DE TEMPO DE CHEGADA DE CADA PILOTO PARA O VENCEDOR ]").AppendLine().AppendLine(); RelatorioFinal.Append(classificacaoFinal.ToString()); }