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();
            }
        }
Exemple #2
0
        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();
 }
Exemple #4
0
        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();
            }
        }