/// <summary> /// Método que solicita a lista de locações do veiculo com código passado como parâmetro na referência do Web Service, recebe a String de resposta e transforma em uma estrutura de dados de melhor compreensão para o resto do programa /// </summary> /// <param name="idVeiculo">Código do veiculos do qual se deseja consultar as locações</param> /// <returns>List com objetos da classe Locação do Veiculo de Parâmetro</returns> public List <Locacao> RecuperarLocacoesPorVeiculo(int idVeiculo) { WebServiceReferencia.wsLocadoraClient proxy = new WebServiceReferencia.wsLocadoraClient(); String resultado = proxy.ConsultarLocacoesVeiculo(idVeiculo).ToString(); String[] mensagem = resultado.Split('~'); int tamanhoArray = Convert.ToInt32(mensagem[0]); List <Locacao> locacoes = new List <Locacao>(); if (tamanhoArray > 0) { String[] locacoesString = mensagem[1].Split('@'); foreach (String s in locacoesString) { String[] dadosLocacao = s.Split('#'); Locacao l = new Locacao(); l.setLocalDevolucao(dadosLocacao[0]); l.setLocalRetirada(dadosLocacao[1]); DateTime dtDevolucao = Convert.ToDateTime(dadosLocacao[2]); DateTime dtRetirada = Convert.ToDateTime(dadosLocacao[3]); String horaDevolucao = dadosLocacao[4]; String horaRetirada = dadosLocacao[5]; String[] devolucaoQuebrado = horaDevolucao.Split(':'); String[] retiradaQuebrado = horaRetirada.Split(':'); TimeSpan tsDevolucao = new TimeSpan(Convert.ToInt32(devolucaoQuebrado[0]), Convert.ToInt32(devolucaoQuebrado[1]), 0); TimeSpan tsRetirada = new TimeSpan(Convert.ToInt32(retiradaQuebrado[0]), Convert.ToInt32(retiradaQuebrado[1]), 0); dtDevolucao = dtDevolucao.Date + tsDevolucao; dtRetirada = dtRetirada.Date + tsRetirada; l.setDataHoraDevolucao(dtDevolucao); l.setDataHoraRetirada(dtRetirada); locacoes.Add(l); } } return(locacoes); }
/// <summary> /// Método que recolhe os dados preenchidos pelo usuário, valida as datas para não estarem inválidas e após isso, envia a requisição de locação para o servidor através da interface de Web Service /// </summary> private void botaoConfirmar_Click(object sender, EventArgs e) { Locacao loc = new Locacao(); DateTime retirada = dateDataRetirada.Value.Date; int retiradaHora = dateHoraRetirada.Value.Hour; int retiradaMinuto = dateHoraRetirada.Value.Minute; TimeSpan tsRetirada = new TimeSpan(retiradaHora, retiradaMinuto, 0); retirada = retirada.Date + tsRetirada; DateTime devolucao = dateDataDevolucao.Value.Date; int devolucaoHora = dateHoraDevolucao.Value.Hour; int devolucaoMinuto = dateHoraDevolucao.Value.Minute; TimeSpan tsDevolucao = new TimeSpan(devolucaoHora, devolucaoMinuto, 0); devolucao = devolucao.Date + tsDevolucao; loc.setDataHoraRetirada(retirada); loc.setDataHoraDevolucao(devolucao); loc.setIdadeCondutor(Convert.ToInt32(spinnerIdadeCondutor.Text)); loc.setLocalDevolucao(boxLocalDevolucao.Text); loc.setLocalRetirada(boxLocalRetirada.Text); loc.setNomeCondutor(boxNomeMotorista.Text); loc.setNumeroCartao(boxNumeroCartao.Text); loc.setParcelasCartao(Convert.ToInt32(spinnerNumeroParcelas.Text)); loc.setIdVeiculoReferencia(selecionado.getIdVeiculo()); int comparacao = devolucao.CompareTo(retirada); if (comparacao <= 0) { MessageBox.Show("A devolução está sendo agendada para antes da data de retirada.", "Incorreto!", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { DateTime hoje = DateTime.Today; comparacao = hoje.CompareTo(retirada); if (comparacao >= 1) { MessageBox.Show("A retirada está sendo marcada para antes de agora.", "Incorreto!", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { WebServiceCliente wsc = new WebServiceCliente(); bool sucesso = wsc.EfetuarLocacao(loc); if (sucesso) { MessageBox.Show("Locação efetuada com sucesso.", "Finalizado!", MessageBoxButtons.OK, MessageBoxIcon.Information); this.Dispose(); } else { MessageBox.Show("Locação não realizada. Na data e horário solicitados já há uma reserva.", "Tente novamete", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } } }
/// <summary> /// Método solicita a locacao de um veiculo na referência do Web Service, enviando a String com todos os parâmetros da locação e indicando o sucesso da operação. /// </summary> /// <param name="loc">Objeto da classe locação com todos os atributos da locação solicitada.</param> /// <returns>Boolean indicando o sucesso e o insucesso da operação.</returns> public bool EfetuarLocacao(Locacao loc) { String locacao = loc.getIdVeiculoReferencia() + "#" + loc.getParcelasCartao() + "#" + loc.getNumeroCartao() + "#" + loc.getNomeCondutor() + "#" + loc.getIdadeCondutor() + "#" + loc.getLocalRetirada() + "#" + loc.getLocalDevolucao() + "#" + loc.getDataHoraRetirada() + "#" + loc.getDataHoraDevolucao(); WebServiceReferencia.wsLocadoraClient proxy = new WebServiceReferencia.wsLocadoraClient(); bool sucesso = Convert.ToBoolean(proxy.EfetuarLocacao(locacao)); return(sucesso); }