Example #1
0
        public bool Atualizar(tCancelamentoLote CancelamentoLote)
        {
            #region strQuery
            string strQuery = @"UPDATE 
                                    tCancelamentoLote
                                SET
                                     CodigoCancelamento = @CodigoCancelamento
	                                ,EventoID = @EventoID
	                                ,CancelamentoLoteModeloMotivoID = @CancelamentoLoteModeloMotivoID
	                                ,MotivoCancelamento = @MotivoCancelamento
	                                ,UsuarioID = @UsuarioID
	                                ,DataCancelamento = @DataCancelamento
	                                ,Status = @Status
	                                ,DataMovimentacao = @DataMovimentacao
                                WHERE
	                                ID = @ID"    ;
            #endregion

            object param = new
            {
                ID = CancelamentoLote.ID,
                CodigoCancelamento             = CancelamentoLote.CodigoCancelamento,
                EventoID                       = CancelamentoLote.EventoID,
                CancelamentoLoteModeloMotivoID = CancelamentoLote.CancelamentoLoteModeloMotivoID,
                MotivoCancelamento             = CancelamentoLote.MotivoCancelamento,
                UsuarioID                      = CancelamentoLote.UsuarioID,
                DataCancelamento               = CancelamentoLote.DataCancelamento.ToString("yyyyMMddHHmmss"),
                Status           = CancelamentoLote.Status,
                DataMovimentacao = CancelamentoLote.DataMovimentacao.ToString("yyyyMMddHHmmss")
            };

            bool result = conIngresso.Execute(strQuery, param) > 0;
            return(result);
        }
Example #2
0
 private tCancelamentoLote addResultComApresentacoes(tCancelamentoLote canc, tCancelamentoLoteApresentacao apr)
 {
     if (canc.Apresentacoes == null)
     {
         canc.Apresentacoes = new List <tCancelamentoLoteApresentacao>();
     }
     canc.Apresentacoes.Add(apr);
     return(canc);
 }
Example #3
0
        public tCancelamentoLote ConsultarComApresentacoes(int ID)
        {
            #region strQuery
            string strQuery = @"SELECT
	                                cl.ID, cl.CodigoCancelamento, cl.EventoID, cl.CancelamentoLoteModeloMotivoID, cl.MotivoCancelamento, cl.UsuarioID, dbo.StringToDateTime(DataCancelamento) AS DataCancelamento, Status, dbo.StringToDateTime(DataMovimentacao) AS DataMovimentacao
                                    ,cla.ID, cla.CancelamentoLoteID, cla.ApresentacaoID, cla.Status
                                FROM
	                                tCancelamentoLote (NOLOCK) AS cl
                                    INNER JOIN tCancelamentoLoteApresentacao (NOLOCK) AS cla ON cl.ID = cla.CancelamentoLoteID
                                WHERE
	                                cl.ID = @ID"    ;
            #endregion
            tCancelamentoLote result = conIngresso.Query <tCancelamentoLote, tCancelamentoLoteApresentacao, tCancelamentoLote>(strQuery, addResultComApresentacoes, new { ID = ID }).FirstOrDefault();
            return(result);
        }
Example #4
0
        public tCancelamentoLote Consultar(int ID)
        {
            #region strQuery
            string strQuery = @"SELECT
	                                ID
	                                ,CodigoCancelamento
	                                ,EventoID
	                                ,CancelamentoLoteModeloMotivoID
	                                ,MotivoCancelamento
	                                ,UsuarioID
	                                ,dbo.StringToDateTime(DataCancelamento) AS DataCancelamento
	                                ,Status
	                                ,dbo.StringToDateTime(DataMovimentacao) AS DataMovimentacao
                                FROM
	                                tCancelamentoLote (NOLOCK)
                                WHERE
	                                ID = @ID"    ;
            #endregion

            tCancelamentoLote result = conIngresso.Query <tCancelamentoLote>(strQuery, new { ID = ID }).FirstOrDefault();
            return(result);
        }
Example #5
0
        public RetornoModel <string> ConfirmarCancelamento(List <int> apresentacoesID, int eventoID, int motivoID, string motivo, int usuarioID)
        {
            DateTime          now        = DateTime.Now;
            tCancelamentoLote cancelLote = new tCancelamentoLote
            {
                CancelamentoLoteModeloMotivoID = motivoID,
                DataCancelamento   = now,
                DataMovimentacao   = now,
                EventoID           = eventoID,
                MotivoCancelamento = motivo,
                UsuarioID          = usuarioID,
                CodigoCancelamento = now.ToString("yyMMddHHmmss")
            };

            try
            {
                string codigoCancelamento = ado.GerarCancelamento(cancelLote, apresentacoesID);

                if (!string.IsNullOrEmpty(codigoCancelamento))
                {
                    return new RetornoModel <string> {
                               Mensagem = "OK", Retorno = codigoCancelamento, Sucesso = true
                    }
                }
                ;
                else
                {
                    throw new Exception();
                }
            }
            catch
            {
                return(new RetornoModel <string> {
                    Sucesso = false, Mensagem = "Ocorreu um erro ao gerar o cancelamento", Retorno = string.Empty
                });
            }
        }
Example #6
0
        public tCancelamentoLote ConsultarProximoSolicitado()
        {
            #region strQuery
            string strQuery = @"SELECT TOP 1
	                                ID
	                                ,CodigoCancelamento
	                                ,EventoID
	                                ,CancelamentoLoteModeloMotivoID
	                                ,MotivoCancelamento
	                                ,UsuarioID
	                                ,dbo.StringToDateTime(DataCancelamento) AS DataCancelamento
	                                ,Status
	                                ,dbo.StringToDateTime(DataMovimentacao) AS DataMovimentacao
                                FROM
	                                tCancelamentoLote (NOLOCK)
                                WHERE
	                                DataCancelamento = DataMovimentacao
                                ORDER BY
                                    ID";
            #endregion

            tCancelamentoLote result = conIngresso.Query <tCancelamentoLote>(strQuery).FirstOrDefault();
            return(result);
        }
Example #7
0
        public string GerarCancelamento(tCancelamentoLote cancelLote, List <int> apresentacoesID)
        {
            conIngresso.Open();
            DbTransaction Transaction = conIngresso.BeginTransaction();

            string query = @"INSERT INTO [dbo].[tCancelamentoLote]
                                ([CodigoCancelamento]
                                ,[EventoID]
                                ,[CancelamentoLoteModeloMotivoID]
                                ,[MotivoCancelamento]
                                ,[UsuarioID]
                                ,[DataCancelamento]
                                ,[Status]
                                ,[DataMovimentacao])
                        OUTPUT inserted.ID
                            VALUES
                               (@codigoCancelamentoTemp
                               ,@eventoID
                               ,@cancelamentoMotivoID
                               ,@motivoCancelamento
                               ,@usuarioID
                               ,@dataCancelamento
                               ,'S'
                               ,@dataMovimentacao)";

            try
            {
                //INSERE o CancelamentoLote usando a data de cancelamento como código temporário
                cancelLote.ID = conIngresso.Query <int>(query, new
                {
                    codigoCancelamentoTemp = cancelLote.CodigoCancelamento,
                    eventoID             = cancelLote.EventoID,
                    cancelamentoMotivoID = cancelLote.CancelamentoLoteModeloMotivoID,
                    motivoCancelamento   = cancelLote.MotivoCancelamento,
                    usuarioID            = cancelLote.UsuarioID,
                    dataCancelamento     = cancelLote.DataCancelamento.ToString("yyyyMMddHHmmss"),
                    dataMovimentacao     = cancelLote.DataMovimentacao.ToString("yyyyMMddHHmmss")
                }, transaction: Transaction).FirstOrDefault();

                if (cancelLote.ID > 0)
                {
                    cancelLote.CodigoCancelamento = string.Format("CM{0}", cancelLote.ID.ToString().PadLeft(10, '0'));

                    query = @"UPDATE [dbo].[tCancelamentoLote]
                                SET [CodigoCancelamento] = @codigoCancelamento
                                WHERE ID = @ID";

                    if (conIngresso.Execute(query, new { codigoCancelamento = cancelLote.CodigoCancelamento, ID = cancelLote.ID }, transaction: Transaction) == 1)
                    {
                        query = @"SELECT TOP 1 EmpresaID FROM tLocal(NOLOCK)
                              INNER JOIN tEvento(NOLOCK) ON tLocal.ID = tEvento.LocalID
                               WHERE tEvento.ID = @eventoID";

                        //Pega a empresa das apresentações selecionadas
                        int empresaID = conIngresso.Query <int>(query, new
                        {
                            eventoID = cancelLote.EventoID
                        }, transaction: Transaction).FirstOrDefault();

                        query = "";

                        //Percorre as apresentacoes e insere os registros equivalentes na tCancelamentoLoteApresentacao e tCancelamentoLoteRepasse além de fazer update na tApresentacao
                        foreach (var aprID in apresentacoesID)
                        {
                            query += string.Format(@"INSERT INTO [dbo].[tCancelamentoLoteApresentacao]
                                      ([CancelamentoLoteID]
                                      ,[ApresentacaoID]
                                      ,[Status])
                                VALUES
                                      (@cancelamentoLoteID
                                      ,{0}
                                      ,'S');
                               
                               UPDATE [dbo].[tApresentacao]
                               SET [DisponivelVenda] = 'F'
                                  ,[Cancelada] = 'T'
                                   WHERE ID = {0};
                                
                              INSERT INTO [dbo].[tCancelamentoLoteRepasse]
                                  ([CancelamentoLoteID]
                                  ,[EventoID]
                                  ,[ApresentacaoID]
                                  ,[EmpresaID]
                                  ,[DataCancelamento]
                                  ,[Status])
                              VALUES
                                  (@cancelamentoLoteID
                                  ,@eventoID
                                  ,{0}
                                  ,@empresaID
                                  ,@dataCancelamento
                                  ,'B')
                                  ", aprID);
                        }

                        //Persiste os dados nas tabelas tCancelamentoLoteRepasse, tCancelamentoLoteApresentacao e tApresentacao, e ve se o número de linhas afetadas é 3 vezes (número de tabelas afetadas) o número de apresentações
                        if (conIngresso.Execute(query, new { cancelamentoLoteID = cancelLote.ID, eventoID = cancelLote.EventoID, empresaID = empresaID, dataCancelamento = cancelLote.DataCancelamento.ToString("yyyyMMddHHmmss") }, transaction: Transaction) == (apresentacoesID.Count * 3))
                        {
                            Transaction.Commit();
                            return(cancelLote.CodigoCancelamento);
                        }
                    }
                }

                Transaction.Rollback();
                return(string.Empty);
            }
            catch (Exception ex)
            {
                Transaction.Rollback();
                throw ex;
            }
            finally
            {
                conIngresso.Close();
            }
        }
Example #8
0
 public bool Atualizar(tCancelamentoLote CancelamentoLote)
 {
     return(ado.Atualizar(CancelamentoLote));
 }