Example #1
0
        public EventoResultado CriarPreco(List <ApresentacaoSetorPrecoModel> precos, int EventoID, int LocalID)
        {
            if (precos == null || precos.Count == 0 || EventoID == 0 || LocalID == 0)
            {
                this.Resultado.FluxoCriacao.Precos.Erro("Parâmetros inválidos");
                return(this.Resultado);
            }

            Evento evento = new Evento();

            evento.Control.ID    = EventoID;
            evento.LocalID.Valor = LocalID;

            this.Resultado.Evento = evento;



            Task.Run(() => GerenciaFilaDistribuicaoPreco(precos));

            using (BD bd = new BD())
            {
                this.empresaID = Local.getEmpresaID(evento.LocalID.Valor, bd);

                int corID   = Configuracao.GetInt(Configuracao.Keys.PrecoCorID, ConfigurationManager.AppSettings["ConfigVersion"]);
                var precoBD = new Preco(this.UsuarioID);

                foreach (var precoCriar in precos)
                {
                    precoBD.ApresentacaoSetorID.Valor = precoCriar.ApresentacaoSetorID;
                    precoBD.Valor.Valor                = precoCriar.Valor;
                    precoBD.Nome.Valor                 = precoCriar.PrecoNome;
                    precoBD.CorID.Valor                = corID;
                    precoBD.Impressao.Valor            = Utils.Enums.GetChar(precoCriar.Impressao).ToString();
                    precoBD.Quantidade.Valor           = 0;
                    precoBD.QuantidadePorCliente.Valor = 0;
                    precoBD.IRVende = false;

                    try
                    {
                        precoBD.Inserir(this.Resultado.Evento.Control.ID, precoCriar.SetorID, precoCriar.ApresentacaoID, true, bd);

                        precoCriar.PrecoID = precoBD.Control.ID;
                        precoCriar.Status.OK();

                        var precoDistribuicao = new PrecoDistribuicao(precoBD.Control.ID, precoCriar.VendeIR, precoCriar.VendeCanaisProprios);
                        this.Precos.Add(precoDistribuicao);
                        this.filaPreco.Enqueue(precoDistribuicao);
                    }
                    catch (Exception ex)
                    {
                        precoCriar.Status.Erro(ex.Message);
                    }
                }
            }
            if (precos.All(t => t.Status.Status == StatusCriacao.enumStatus.Erro))
            {
                this.Resultado.FluxoCriacao.Precos.Erro(precos[0].Status.MsgErro);
            }
            return(this.Resultado);
        }
Example #2
0
        /// <summary>
        /// Inseri novo(a) Preco na lista
        /// </summary>
        /// <returns></returns>
        public override bool Inserir()
        {
            try
            {
                bool ok = preco.Inserir();
                if (ok)
                {
                    lista.Add(preco.Control.ID);
                    Indice = lista.Count - 1;
                }

                return(ok);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Example #3
0
        private void CriaPrecoSetor(BD bd, PrecoVendaModel precoInfo)
        {
            int corID               = Configuracao.GetInt(Configuracao.Keys.PrecoCorID, ConfigurationManager.AppSettings["ConfigVersion"]);
            var precoBD             = new Preco(this.UsuarioID);
            var apresentacaoSetorBD = new ApresentacaoSetor();

            foreach (var precoCriar in precoInfo.SetorValores)
            {
                foreach (var apresentacaoSetor in this.Resultado.Setores.Where(c => c.SetorID.Equals(precoCriar.SetorID)).ToList())
                {
                    precoBD.ApresentacaoSetorID.Valor = apresentacaoSetor.ApresentacaoSetorID;
                    precoBD.Valor.Valor                = precoCriar.Valor.Value;
                    precoBD.Nome.Valor                 = precoInfo.Descricao;
                    precoBD.CorID.Valor                = corID;
                    precoBD.Impressao.Valor            = Utils.Enums.GetChar(precoInfo.Impressao).ToString();
                    precoBD.Quantidade.Valor           = 0;
                    precoBD.QuantidadePorCliente.Valor = 0;
                    precoBD.IRVende = false;

                    try
                    {
                        precoBD.Inserir(this.Resultado.Evento.Control.ID, apresentacaoSetor.SetorID, apresentacaoSetor.ApresentacaoID, true, bd);

                        if (precoInfo.Principal)
                        {
                            apresentacaoSetorBD.Control.ID = apresentacaoSetor.ApresentacaoSetorID;
                            apresentacaoSetorBD.AtualizarPrecoPrincipal(bd, precoBD.Control.ID);
                        }


                        precoCriar.PrecoID = precoBD.Control.ID;
                        precoCriar.Status.OK();

                        var precoDistribuicao = new PrecoDistribuicao(precoBD.Control.ID, precoInfo.VendeIR, precoInfo.VendeCanaisProprios);
                        this.Precos.Add(precoDistribuicao);
                        this.filaPreco.Enqueue(precoDistribuicao);
                    }
                    catch (Exception ex)
                    {
                        precoCriar.Status.Erro(ex.Message);
                    }
                }
            }
        }
Example #4
0
        public void GerenciarItems(BD bd, int SerieID, List <EstruturaSerieItem> lstSerieItem)
        {
            Preco             preco = new Preco(this.Control.UsuarioID);
            ApresentacaoSetor aps   = new ApresentacaoSetor();

            int apresentacaoSetorID = 0;

            foreach (EstruturaSerieItem item in lstSerieItem)
            {
                this.Control.ID                     = 0;
                this.EventoID.Valor                 = item.EventoID;
                this.ApresentacaoID.Valor           = item.ApresentacaoID;
                this.SetorID.Valor                  = item.SetorID;
                this.Promocional.Valor              = item.Promocional;
                this.QuantidadePorPromocional.Valor = item.QuantidadePorPromocional;
                this.SerieID.Valor                  = SerieID;
                this.PrecoID.Valor                  = 0;

                switch (item.Acao)
                {
                //Criar o preço antes e depois criar o serieitem
                case Enumerators.TipoAcaoPreco.AssociarECriar:

                    apresentacaoSetorID = lstSerieItem
                                          .Where(c => c.ApresentacaoID == item.ApresentacaoID && c.SetorID == item.SetorID && c.ApresentacaoSetorID != 0)
                                          .Select(c => c.ApresentacaoSetorID).FirstOrDefault();

                    if (apresentacaoSetorID == 0)
                    {
                        apresentacaoSetorID = aps.ApresentacaoSetorID(item.ApresentacaoID, item.SetorID);
                    }


                    preco.ApresentacaoSetorID.Valor = item.ApresentacaoSetorID = apresentacaoSetorID;
                    preco.Nome.Valor                 = item.Preco;
                    preco.CorID.Valor                = item.CorID;
                    preco.Quantidade.Valor           = 0;
                    preco.QuantidadePorCliente.Valor = 0;
                    preco.Valor.Valor                = Convert.ToDecimal(item.Valor);
                    preco.Impressao.Valor            = Preco.IMPRESSAO_AMBOS;


                    preco.Inserir(item.EventoID, item.SetorID, item.ApresentacaoID, true, bd);

                    //preco.Inserir(bd);

                    this.PrecoID.Valor = preco.Control.ID;
                    this.Inserir(bd);
                    break;

                //Não existe, precisa criar
                case Enumerators.TipoAcaoPreco.Associar:
                    this.PrecoID.Valor = item.PrecoID;
                    this.Inserir(bd);
                    break;

                case Enumerators.TipoAcaoPreco.Remover:
                    this.Excluir(item.SerieItemID);
                    break;

                case Enumerators.TipoAcaoPreco.Alterar:
                    this.Control.ID    = item.SerieItemID;
                    this.PrecoID.Valor = item.PrecoID;
                    this.Atualizar(bd);
                    break;

                case Enumerators.TipoAcaoPreco.Manter:
                default:
                    break;
                }
            }
        }
Example #5
0
        private List <Programacao> MontarProgramacao(Sala sala, List <Filme> filmes, List <Sala> salas, List <Programacao> programacoes)
        {
            BD                bd                 = new BD();
            Apresentacao      oApresentacao      = new Apresentacao();
            ApresentacaoSetor oApresentacaoSetor = new ApresentacaoSetor();
            Preco             oPreco             = new Preco();
            CanalPreco        oCanalPreco        = new CanalPreco();

            foreach (var programacao in programacoes)
            {
                try
                {
                    var eventoID = filmes.Where(c => c.FilmeID == programacao.IDFilme).Select(c => c.EventoID).FirstOrDefault();
                    var setorID  = salas.Where(c => c.CodSala == programacao.CodSala).Select(c => c.SetorID).FirstOrDefault();

                    if (eventoID == 0)
                    {
                        continue;
                    }

                    int apresentacaoID = Convert.ToInt32(bd.ConsultaValor("SELECT ID FROM tApresentacao (NOLOCK) WHERE CodigoProgramacao = '" + programacao.IDProg + "'"));

                    if (apresentacaoID > 0)
                    {
                        programacao.ApresentacaoID = apresentacaoID;
                        continue;
                    }

                    bd.IniciarTransacao();

                    oApresentacao.Limpar();
                    oApresentacao.EventoID.Valor            = eventoID;
                    oApresentacao.Horario.Valor             = Convert.ToDateTime(programacao.DataSessao);
                    oApresentacao.DisponivelVenda.Valor     = true;
                    oApresentacao.DisponivelAjuste.Valor    = true;
                    oApresentacao.DisponivelRelatorio.Valor = true;
                    oApresentacao.CodigoProgramacao.Valor   = programacao.IDProg;
                    oApresentacao.Inserir(bd);

                    oApresentacaoSetor.Limpar();
                    oApresentacaoSetor.ApresentacaoID.Valor = oApresentacao.Control.ID;
                    oApresentacaoSetor.SetorID.Valor        = setorID;
                    oApresentacaoSetor.NVendeLugar.Valor    = Convert.ToBoolean(programacao.NVendLuga);
                    oApresentacaoSetor.Inserir(bd);

                    foreach (var preco in programacao.Ingressos)
                    {
                        int precoID = Convert.ToInt32(bd.ConsultaValor("SELECT ID FROM tPreco (NOLOCK) WHERE CodigoCinema = '" + preco.CodIngress + "' AND ApresentacaoSetorID = " + oApresentacaoSetor.Control.ID));
                        if (precoID > 0)
                        {
                            continue;
                        }

                        oPreco.Limpar();
                        oPreco.ApresentacaoSetorID.Valor = oApresentacaoSetor.Control.ID;
                        oPreco.Nome.Valor         = preco.CodIngress;
                        oPreco.Valor.Valor        = Convert.ToDecimal(preco.Valor);
                        oPreco.CodigoCinema.Valor = preco.CodIngress;
                        oPreco.CorID.Valor        = 1;
                        oPreco.Inserir(eventoID, setorID, oApresentacao.Control.ID, false, bd);

                        preco.PrecoID = oPreco.Control.ID;

                        //Distribuição de Preços por Canal
                        oCanalPreco.Limpar();
                        oCanalPreco.CanalID.Valor = Canal.CANAL_INTERNET;
                        oCanalPreco.PrecoID.Valor = oPreco.Control.ID;
                        oCanalPreco.Inserir(bd, false);
                    }

                    bd.FinalizarTransacao();
                }
                catch
                {
                    bd.DesfazerTransacao();
                }
                finally
                {
                    bd.Fechar();
                }
            }
            return(programacoes);
        }