/// <summary> /// Rotina utilizada para Gerar os transfers. /// </summary> /// <param name="_Sheet"></param> /// <returns></returns> public List<Transfer> GerarTransfers(String _Sheet) { DataTable _Table = new Excel(Source).RetornarTudoSheet(_Sheet); Passageiro _Passageiro = new Passageiro(Source); Voo _VooChegada = new Voo(Source); Voo _VooRetorno = new Voo(Source); Char[] _Char = Environment.NewLine.ToCharArray(); foreach (DataRow _Row in _Table.Rows) { try { //IFormatProvider _Culture = new System.Globalization.CultureInfo("pt-BR", true); _Passageiro.Nome = _Row[0].ToString(); _Passageiro.Documento = _Row[1].ToString(); _VooChegada.Data = DateTime.Parse(_Row[2].ToString().Split(_Char).Last().ToString()); _VooChegada.CidadeOrigem = _Row[3].ToString().Split(_Char).Last().ToString(); _VooChegada.CidadeDestino = _Row[4].ToString().Split(_Char).Last().ToString(); _VooChegada.CompanhiaAerea = _Row[5].ToString().Split(_Char).Last().ToString(); _VooChegada.NumeroVoo = _Row[6].ToString().Split(_Char).Last().ToString(); _VooChegada.HorarioSaida = DateTime.Parse(_Row[7].ToString().Split(_Char).Last().ToString()); _VooChegada.HorarioChegada = DateTime.Parse(_Row[8].ToString().Split(_Char).Last().ToString()); _VooRetorno.Data = DateTime.Parse(_Row[9].ToString().Split(_Char).First().ToString()); _VooRetorno.CidadeOrigem = _Row[10].ToString().Split(_Char).First().ToString(); _VooRetorno.CidadeDestino = _Row[11].ToString().Split(_Char).First().ToString(); _VooRetorno.CompanhiaAerea = _Row[12].ToString().Split(_Char).First().ToString(); _VooRetorno.NumeroVoo = _Row[13].ToString().Split(_Char).First().ToString(); _VooRetorno.HorarioSaida = DateTime.Parse(_Row[14].ToString().Split(_Char).First().ToString()); _VooRetorno.HorarioChegada = DateTime.Parse(_Row[15].ToString().Split(_Char).First().ToString()); _Passageiro.VooChegada = _VooChegada; _Passageiro.VooRetorno = _VooRetorno; Passageiros.Add(_Passageiro); _Passageiro = new Passageiro(Source); _VooChegada = new Voo(Source); _VooRetorno = new Voo(Source); } catch { //Gerar Log do ocorrido e em qual linha e continuar, no final verificar o logo e exibir para o usuário corrigir as pendências. //Não exibir o resultado caso o log seja maior que 0. exibir o log. LogErro _Erro = new LogErro(); continue; } } List<Passageiro> _PassageirosOrdenados = Passageiros.OrderBy(x => x.VooChegada.NumeroVoo).ToList(); List<IGrouping<String, Passageiro>> _PassageirosAgrupados = _PassageirosOrdenados.GroupBy(x => x.VooChegada.NumeroVoo).ToList(); List<Transfer> _Transfers = new List<Transfer>(); foreach (IGrouping<String, Passageiro> _PassageiroOrdenado in _PassageirosAgrupados) { Transfer _Transfer = new Transfer(Source); int _CapacidadeMax = Veiculo.GetCapacidadeMaxima(); if (_PassageiroOrdenado.Count() > _CapacidadeMax) { List<Passageiro> _PassageirosTemp = _PassageiroOrdenado.ToList(); int _Max = (_PassageirosTemp.Count / _CapacidadeMax); for (int i = 0; i <= _Max; i++) { _Transfer.Nome = String.Format("Transfer {0}.{1}", _PassageirosAgrupados.IndexOf(_PassageiroOrdenado) + 1, i); if (_PassageirosTemp.Count > _CapacidadeMax) { _Transfer.Passageiros = _PassageirosTemp.Take(_CapacidadeMax).ToList(); } else { _Transfer.Passageiros = _PassageirosTemp.Take(_PassageirosTemp.Count).ToList(); } _Transfer.Veiculo = new Veiculo(Source).CarregarVeiculoCapacidade(_Transfer.Passageiros.Count); _Transfers.Add(_Transfer); _PassageirosTemp.RemoveRange(0, _Transfer.Passageiros.Count); _Transfer = new Transfer(Source); } } else { _Transfer.Nome = String.Format("Transfer {0}", _PassageirosAgrupados.IndexOf(_PassageiroOrdenado) + 1); _Transfer.Passageiros = _PassageiroOrdenado.ToList(); _Transfer.Veiculo = new Veiculo(Source).CarregarVeiculoCapacidade(_Transfer.Passageiros.Count); _Transfers.Add(_Transfer); } } return _Transfers; }
/// <summary> /// Rotina utilizada para inserir voo de chegada a sheet do Excel. /// </summary> /// <param name="_Sheet"></param> /// <param name="_Transfer"></param> public void InsertPassageiroSheetRetorno(String _Sheet, Transfer _Transfer) { using (ConectarEx()) { ExcelWorkbook _WorkBook = ConexaoEx.Workbook; ExcelWorksheet _WorkSheet = _WorkBook.Worksheets.Where(x => String.Format("TransferRetorno_{0}", _Sheet) == x.Name).First(); int _Start = _WorkSheet.Dimension.End.Row; int _StartE = _WorkSheet.Dimension.End.Row; foreach (Passageiro _Passageiro in _Transfer.Passageiros) { _Start = _Start + 1; _WorkSheet.InsertRow(_Start, 1); if (_Transfer.Passageiros.IndexOf(_Passageiro) == _Transfer.Passageiros.Count -1) { _StartE = _StartE + 1; String _MergeA = String.Format("A{0}:A{1}", _StartE, _StartE + _Transfer.Passageiros.Count - 1); String _MergeJ = String.Format("J{0}:J{1}", _StartE, _StartE + _Transfer.Passageiros.Count - 1); String _MergeK = String.Format("K{0}:K{1}", _StartE, _StartE + _Transfer.Passageiros.Count - 1); _WorkSheet.Cells[_MergeA].Merge = true; _WorkSheet.Cells[_MergeA].Style.HorizontalAlignment = ExcelHorizontalAlignment.Center; _WorkSheet.Cells[_MergeA].Style.VerticalAlignment = ExcelVerticalAlignment.Center; _WorkSheet.Cells[String.Format("A{0}", _StartE)].Value = _Transfer.Nome; _WorkSheet.Cells[_MergeJ].Merge = true; _WorkSheet.Cells[_MergeJ].Style.HorizontalAlignment = ExcelHorizontalAlignment.Center; _WorkSheet.Cells[_MergeJ].Style.VerticalAlignment = ExcelVerticalAlignment.Center; _WorkSheet.Cells[String.Format("J{0}", _StartE)].Value = _Transfer.Veiculo.Nome; _WorkSheet.Cells[_MergeK].Merge = true; _WorkSheet.Cells[_MergeK].Style.HorizontalAlignment = ExcelHorizontalAlignment.Center; _WorkSheet.Cells[_MergeK].Style.VerticalAlignment = ExcelVerticalAlignment.Center; _WorkSheet.Cells[String.Format("K{0}", _StartE)].Value = _Transfer.Veiculo.ValorViagem; _WorkSheet.Cells[String.Format("K{0}", _StartE)].Style.Numberformat.Format = @"R$ #,##0.00"; } _WorkSheet.Cells[String.Format("B{0}", _Start)].Value = _Passageiro.Nome; _WorkSheet.Cells[String.Format("C{0}", _Start)].Value = _Passageiro.Documento; _WorkSheet.Cells[String.Format("D{0}", _Start)].Value = _Passageiro.VooRetorno.NumeroVoo; _WorkSheet.Cells[String.Format("E{0}", _Start)].Value = _Passageiro.VooRetorno.CidadeOrigem; _WorkSheet.Cells[String.Format("F{0}", _Start)].Value = _Passageiro.VooRetorno.CidadeDestino; _WorkSheet.Cells[String.Format("H{0}", _Start)].Value = _Passageiro.VooRetorno.HorarioSaida.ToShortTimeString(); _WorkSheet.Cells[String.Format("I{0}", _Start)].Value = _Passageiro.VooRetorno.HorarioChegada.ToShortTimeString(); } if (ConexaoEx.Stream.CanWrite) { ConexaoEx.Save(); } } }