public void AdicionarAcoes(int ClienteID, int Entrega, List <EstruturaAssinaturaAcao> Items, int usuarioID) { try { this.ExcluirAcoes(ClienteID); //AssinaturaHistorico oHistorico = new AssinaturaHistorico(); foreach (var item in Items) { this.Limpar(); this.AssinaturaClienteID.Valor = Convert.ToInt32(item.AssinaturaClienteID); this.ClienteID.Valor = ClienteID; this.PrecoTipoID.Valor = Convert.ToInt32(item.PrecoTipo); this.EntregaID.Valor = Entrega; this.AgregadoID.Valor = item.AgregadoID; this.Acao.Valor = Convert.ToString((char)AssinaturaCliente.ToAcao(item.Acao)); this.Processado.Valor = false; this.AgregadoID.Valor = item.AgregadoID; this.Inserir(); } } finally { bd.Fechar(); } }
public void FilarminicaImportar(int entregaID) { List <string> listaCPF = this.AlimentarListaCPF(); List <Assinaturas.Models.AcaoProvisoria> listaProvisoria = new List <Models.AcaoProvisoria>(); var estruturaIdentificacaoUsuario = new IRLib.ClientObjects.EstruturaReservaInternet { CaixaID = 488695, CanalID = 2276, UsuarioID = 11003, LojaID = 3394, EmpresaID = 653, }; BD bdAux = new BD(); #region CPF a CPF foreach (string cpf in listaCPF.Distinct()) { try { var objeto = new { ID = 0, CPF = string.Empty, Assinatura = string.Empty, Setor = string.Empty, Lugar = string.Empty, Acao = string.Empty, Preco = string.Empty, FormaPagamento = string.Empty, Parcelas = 0, NotaFiscal = string.Empty, Indice = 0, }; var lista = VendaBilheteria.ToAnonymousList(objeto); #region Buscar Lugares do CPF string sql = @" SELECT f.ID, f.CPF, f.Assinatura, f.Setor, f.Lugar, fa.Acao, fp.Preco, fh.FormaPagamento, fh.Parcelas, fh.NotaFiscal FROM tFilarmonica f (NOLOCK) INNER JOIN tFilarmonicaAcao fa (NOLOCK) ON fa.FilarmonicaID = f.ID INNER JOIN tFilarmonicaHistorico fh (NOLOCK) ON fa.tFilarmonicaHistoricoID = fh.ID LEFT JOIN tFilarmonicaPreco fp (NOLOCK) ON fa.FilarmonicaPrecoID = fp.ID WHERE CPF = '" + cpf + "' AND fa.Acao <> 'D'"; if (!bd.Consulta(sql).Read()) { continue; } int i = 1; do { lista.Add(new { ID = bd.LerInt("ID"), CPF = cpf, Assinatura = bd.LerString("Assinatura"), Setor = bd.LerString("Setor"), Lugar = bd.LerString("Lugar"), Acao = bd.LerString("Acao"), Preco = bd.LerString("Preco"), FormaPagamento = bd.LerString("FormaPagamento"), Parcelas = bd.LerInt("Parcelas"), NotaFiscal = bd.LerString("NotaFiscal"), Indice = i }); i++; } while (bd.Consulta().Read()); bd.FecharConsulta(); #endregion decimal valorTotal = Convert.ToDecimal(bd.ConsultaValor( @" SELECT SUM(Valor) FROM tFilarmonica f (NOLOCK) INNER JOIN tFilarmonicaAcao fa (NOLOCK) ON fa.FilarmonicaID = f.ID INNER JOIN tFilarmonicaPreco fp (NOLOCK) ON fa.FilarmonicaPrecoID = fp.ID WHERE CPF = '" + cpf + "'")); bd.FecharConsulta(); #region Busca ClienteID int clienteID = Convert.ToInt32(bd.ConsultaValor("SELECT TOP 1 ID FROM tCliente WHERE CPF = '" + cpf + "'")); if (clienteID == 0) { throw new Exception("Não existe cliente com CPF : " + cpf); } bd.FecharConsulta(); Cliente oCliente = new Cliente(estruturaIdentificacaoUsuario.UsuarioID); oCliente.Ler(clienteID); ClienteEndereco oClienteEndereco = new ClienteEndereco(); oClienteEndereco.Nome.Valor = oCliente.Nome.Valor; oClienteEndereco.CPF.Valor = oCliente.CPF.Valor; oClienteEndereco.ClienteID.Valor = oCliente.Control.ID; oClienteEndereco.Endereco.Valor = oCliente.EnderecoCliente.Valor; oClienteEndereco.Numero.Valor = oCliente.NumeroCliente.Valor; oClienteEndereco.Complemento.Valor = oCliente.ComplementoCliente.Valor; oClienteEndereco.Bairro.Valor = oCliente.BairroCliente.Valor; oClienteEndereco.CEP.Valor = oCliente.CEPCliente.Valor; oClienteEndereco.Cidade.Valor = oCliente.CidadeCliente.Valor; oClienteEndereco.Estado.Valor = oCliente.EstadoCliente.Valor; oClienteEndereco.EnderecoPrincipal.Valor = true; oClienteEndereco.EnderecoTipoID.Valor = 1; int ClienteEnderecoID = oClienteEndereco.VerificaEnderecoCliente(oCliente.Control.ID, oCliente.CEPCliente.Valor); if (ClienteEnderecoID == 0) { oClienteEndereco.Inserir(bd); } else { oClienteEndereco.Control.ID = ClienteEnderecoID; oClienteEndereco.Atualizar(bd); } #endregion #region Preenche item a item a assinatura do cliente listaProvisoria.Clear(); foreach (var item in lista) { sql = string.Format( @" SELECT TOP 1 a.ID AS AssinaturaID, l.ID AS LugarID, an.ID AS AssinaturaAnoID, s.ID AS SetorID FROM tAssinatura a (NOLOCK) INNER JOIN tAssinaturaAno an (NOLOCK) ON an.AssinaturaID = a.ID INNER JOIN tAssinaturaItem ai (NOLOCK) ON ai.AssinaturaAnoID = an.ID INNER JOIN tSetor s (NOLOCK) ON s.ID = ai.SetorID INNER JOIN tLugar l (NOLOCK) ON l.SetorID = s.ID WHERE a.Nome = '{0}' AND s.Nome = '{1}' AND l.Codigo = '{2}' ", item.Assinatura, item.Setor, item.Lugar); if (!bd.Consulta(sql).Read()) { throw new Exception("Não foi possível encontrar o Lugar: Código " + item.Lugar); } listaProvisoria.Add(new Models.AcaoProvisoria() { ClienteID = clienteID, AssinaturaID = bd.LerInt("AssinaturaID"), LugarID = bd.LerInt("LugarID"), AssinaturaAnoID = bd.LerInt("AssinaturaAnoID"), SetorID = bd.LerInt("SetorID"), IndiceImportar = item.Indice }); } bd.FecharConsulta(); #endregion try { bd.IniciarTransacao(); //listaProvisoria = new AssinaturaCliente().EfetuarAcoes(bd, clienteID, Usuario.INTERNET_USUARIO_ID, listaProvisoria); foreach (var item in listaProvisoria) { AssinaturaCliente assinaturaCLiente = new AssinaturaCliente(); assinaturaCLiente.Reservar(bd, clienteID, item.AssinaturaID, item.SetorID, item.LugarID, DateTime.Now.Year + 1, estruturaIdentificacaoUsuario, 0); item.AssinaturaClienteID = assinaturaCLiente.Control.ID; } List <IRLib.ClientObjects.Assinaturas.EstruturaAssinaturaAcao> listaNova = new List <IRLib.ClientObjects.Assinaturas.EstruturaAssinaturaAcao>(); foreach (var item in lista) { int precoTipoID = 0; if (item.Acao == "R") { precoTipoID = Convert.ToInt32( bdAux.ConsultaValor( string.Format( @" SELECT DISTINCT pt.ID FROM tAssinatura a (NOLOCK) INNER JOIN tAssinaturaAno an (NOLOCK) ON an.AssinaturaID = a.ID INNER JOIN tAssinaturaItem ai (NOLOCK) ON ai.AssinaturaAnoID = an.ID INNER JOIN tSetor s (NOLOCK) ON s.ID = ai.SetorID INNER JOIN tPrecoTipo pt (NOLOCK) ON pt.ID = ai.PrecoTipoID WHERE a.Nome = '{0}' AND s.Nome = '{1}' AND pt.Nome = '{2}' ", item.Assinatura, item.Setor, item.Preco))); if (precoTipoID == 0) { throw new Exception("O preco tipo " + item.Preco + " não existe"); } } var acaoProvisoria = listaProvisoria.Where(c => c.IndiceImportar == item.Indice).FirstOrDefault(); acaoProvisoria.PrecoTipoID = precoTipoID; acaoProvisoria.Acao = (AssinaturaCliente.EnumAcao)Convert.ToChar(item.Acao); bdAux.FecharConsulta(); listaNova.Add(new ClientObjects.Assinaturas.EstruturaAssinaturaAcao() { AssinaturaClienteID = acaoProvisoria.AssinaturaClienteID.ToString(), PrecoTipo = acaoProvisoria.PrecoTipoID.ToString(), Acao = item.Acao }); } new AssinaturaAcaoProvisoria().AdicionarAcoes(bd, clienteID, entregaID, listaNova, estruturaIdentificacaoUsuario.UsuarioID); var listaFinal = new IRLib.AssinaturaAcaoProvisoria().BuscarLista(clienteID, false); string senha = string.Empty; if (listaFinal.Where(c => c.Acao == AssinaturaCliente.EnumAcao.Renovar).Count() > 0) { senha = new AssinaturaCliente().Vender(bd, clienteID, estruturaIdentificacaoUsuario.UsuarioID, lista.FirstOrDefault().FormaPagamento, lista.FirstOrDefault().Parcelas, string.Empty, string.Empty, string.Empty, estruturaIdentificacaoUsuario, listaFinal.Where(c => c.Acao == AssinaturaCliente.EnumAcao.Renovar).ToList(), 0, entregaID, 10, false, oCliente.Email.Valor); } new AssinaturaCliente().EfetuarAcoes(bd, clienteID, estruturaIdentificacaoUsuario.UsuarioID, listaFinal.Where(c => c.Acao == AssinaturaCliente.EnumAcao.Trocar).ToList()); bd.Executar("UPDATE tFilarmonica SET Importado = 'T' WHERE CPF = '" + cpf + "'"); if (!string.IsNullOrEmpty(senha)) { valorTotal += 10; decimal valorVenda = Convert.ToDecimal(bd.ConsultaValor("SELECT ValorTotal FROM tVendaBilheteria WHERE Senha = '" + senha + "'")); if (valorVenda != valorTotal) { throw new Exception("O Valor total da venda está incompativel com o valor da assinatura."); } } bd.FinalizarTransacao(); } catch (Exception) { bd.DesfazerTransacao(); throw; } } catch (Exception ex) { bdAux.Fechar(); bd.Executar("UPDATE tFilarmonica SET Importado = 'F', MotivoErro = '" + ex.Message.Replace("'", "") + "' WHERE CPF = '" + cpf + "'"); } } #endregion }
// passar o Usuario logado no sistema public AssinaturaClienteLista_B() { assinaturaCliente = new AssinaturaCliente(); }
public void Importar(int id) { BD bd = new BD(); try { var obj = new { ID = 0, ClienteID = 0, AssinaturaID = 0, Lugares = new List <int>(), AssinaturaAnoID = 0, SetorID = 0, BloqueioID = 0, ExtintoBloqueioID = 0, }; var listaAnonina = VendaBilheteria.ToAnonymousList(obj); string sql = @" SELECT DISTINCT ac.UserId AS ID, ac.ClienteID, a.ID AS AssinaturaID, ac.LugarID, ac.LugarID1,ac.LugarID2,ac.LugarID3,ac.LugarID4,ac.LugarID5, an.ID AS AssinaturaAnoID, ac.SetorID, a.BloqueioID, a.ExtintoBloqueioID FROM AssinantesCultura ac (NOLOCK) INNER JOIN tAssinatura a (NOLOCK) ON a.ID = ac.AssinaturaID INNER JOIN tAssinaturaAno an (NOLOCK) ON a.ID = an.AssinaturaID WHERE ac.SetorID IS NOT NULL AND ac.Importado = 0 AND a.ID = " + id; if (!bd.Consulta(sql).Read()) { throw new Exception("Não existem mais assinaturas a serem importadas."); } do { List <int> lugares = new List <int>(); if (bd.LerInt("LugarID") > 0) { lugares.Add(bd.LerInt("LugarID")); } if (bd.LerInt("LugarID1") > 0) { lugares.Add(bd.LerInt("LugarID1")); } if (bd.LerInt("LugarID2") > 0) { lugares.Add(bd.LerInt("LugarID2")); } if (bd.LerInt("LugarID3") > 0) { lugares.Add(bd.LerInt("LugarID3")); } if (bd.LerInt("LugarID4") > 0) { lugares.Add(bd.LerInt("LugarID4")); } if (bd.LerInt("LugarID5") > 0) { lugares.Add(bd.LerInt("LugarID5")); } listaAnonina.Add(new { ID = bd.LerInt("ID"), ClienteID = bd.LerInt("ClienteID"), AssinaturaID = bd.LerInt("AssinaturaID"), Lugares = lugares, AssinaturaAnoID = bd.LerInt("AssinaturaAnoID"), SetorID = bd.LerInt("SetorID"), BloqueioID = bd.LerInt("BloqueioID"), ExtintoBloqueioID = bd.LerInt("ExtintoBloqueioID"), }); } while (bd.Consulta().Read()); bd.FecharConsulta(); foreach (var assinatura in listaAnonina) { try { foreach (int lugarID in assinatura.Lugares) { List <int> ingressos = new List <int>(); AssinaturaCliente oAssinaturaCliente = new AssinaturaCliente(); sql = string.Format(@" SELECT i.ID, i.Status, i.BloqueioID FROM tAssinaturaAno an (NOLOCK) INNER JOIN tAssinaturaItem ai (NOLOCK) ON an.ID = ai.AssinaturaAnoID INNER JOIN tIngresso i (NOLOCK) ON i.ApresentacaoID = ai.ApresentacaoID AND i.SetorID = ai.SetorID WHERE an.ID = {0} AND i.LugarID = {1} AND PrecoTipoID = 8 ", assinatura.AssinaturaAnoID, lugarID); if (!bd.Consulta(sql).Read()) { throw new Exception("Não foi possível encontrar os ingressos desta assinatura."); } int bloqueioID = bd.LerInt("BloqueioID"); do { if (bd.LerString("Status") != Ingresso.DISPONIVEL && bd.LerString("Status") != Ingresso.BLOQUEADO) { throw new Exception("Ingresso com status: " + bd.LerString("Status")); } ingressos.Add(bd.LerInt("ID")); } while (bd.Consulta().Read()); bd.FecharConsulta(); oAssinaturaCliente.Limpar(); oAssinaturaCliente.ClienteID.Valor = assinatura.ClienteID; oAssinaturaCliente.AssinaturaID.Valor = assinatura.AssinaturaID; oAssinaturaCliente.PrecoTipoID.Valor = 0; oAssinaturaCliente.LugarID.Valor = lugarID; oAssinaturaCliente.AssinaturaAnoID.Valor = assinatura.AssinaturaAnoID; oAssinaturaCliente.VendaBilheteriaID.Valor = 0; oAssinaturaCliente.SetorID.Valor = assinatura.SetorID; oAssinaturaCliente.Acao.Valor = Convert.ToChar((AssinaturaCliente.EnumStatus.Aguardando)).ToString(); string status = string.Empty; if (bloqueioID == assinatura.ExtintoBloqueioID) { oAssinaturaCliente.Status.Valor = Convert.ToChar((AssinaturaCliente.EnumStatus.Indisponivel)).ToString(); bloqueioID = assinatura.ExtintoBloqueioID; } else { oAssinaturaCliente.Status.Valor = Convert.ToChar((AssinaturaCliente.EnumStatus.Aguardando)).ToString(); bloqueioID = assinatura.BloqueioID; } try { bd.IniciarTransacao(); oAssinaturaCliente.Inserir(bd); if (ingressos.Count != 10) { throw new Exception("Quantidade de ingressos diferente de 10!!!!"); } foreach (var ingresso in ingressos) { if (bd.Executar( string.Format( @"UPDATE tIngresso SET Status = 'B', BloqueioID = {0}, ClienteID = {1}, AssinaturaClienteID = {2} WHERE ID = {3} ", bloqueioID, assinatura.ClienteID, oAssinaturaCliente.Control.ID, ingresso)) != 1) { throw new Exception("Não foi possível atualizar o ingresso: " + ingresso); } } bd.Executar("UPDATE AssinantesCultura SET Importado = 1, Erro = '' WHERE UserID = " + assinatura.ID); bd.FinalizarTransacao(); } catch (Exception ex) { bd.DesfazerTransacao(); throw ex; } } } catch (Exception ex) { bd.Executar("UPDATE AssinantesCultura SET Importado = 0, Erro = '" + ex.Message + "' WHERE UserID = " + assinatura.ID); } } } finally { bd.Fechar(); } }