public int Inserir(HistoriaReporteAbuso entidade)
        {
            string SQL = @" INSERT INTO HistoriaReporteAbuso     
                (Nome,
                HistoriaID,
                Inativo,
                Mensagem,
                DataCadastro,
                EmailCrt) 
                VALUES    
                (@Nome,
                @HistoriaID,
                @Inativo,
                @Mensagem,
                @DataCadastro,
                " + Criptografar(entidade.Email) + @"); " +
                         " SELECT ID = SCOPE_IDENTITY()";

            using (DbConnection con = _db.CreateConnection())
            {
                con.Open();
                entidade.ID = con.Query <int>(SQL, entidade).FirstOrDefault();
                con.Close();
            }
            return(entidade.ID);
        }
        public HistoriaReporteAbuso Carregar(int historiaID, string email)
        {
            HistoriaReporteAbuso entidade = null;
            string SQL = @"SELECT TOP 1 ID
                    ,Nome
                    ," + Decriptografar("EmailCrt") + @" as Email
                    ,HistoriaID
                    ,Inativo
                    ,Mensagem
                    ,DataCadastro
                FROM 
                    HistoriaReporteAbuso
                WHERE HistoriaID = @HistoriaID AND " + Decriptografar("EmailCrt") + @" = @Email";

            using (DbConnection con = _db.CreateConnection())
            {
                con.Open();

                entidade = con.Query <HistoriaReporteAbuso>(SQL, new
                {
                    Email      = email,
                    HistoriaID = historiaID
                }).FirstOrDefault();

                con.Close();
            }

            return(entidade);
        }
 public void Salvar(HistoriaReporteAbuso reporte)
 {
     if (reporte.ID > 0)
     {
         dal.Atualizar(reporte);
     }
     else
     {
         dal.Inserir(reporte);
     }
 }
        public void InativarReporte(HistoriaReporteAbuso entidade)
        {
            string SQL = @"UPDATE HistoriaReporteAbuso SET  
                    Inativo=@Inativo
                    WHERE ID=@ID ";

            using (DbConnection con = _db.CreateConnection())
            {
                con.Open();
                con.Execute(SQL, entidade);
                con.Close();
            }
        }
        public void Atualizar(HistoriaReporteAbuso entidade)
        {
            string SQL = @"UPDATE HistoriaReporteAbuso SET  
                    (Nome = @Nome
                  ,EmailCrt=" + Criptografar(entidade.Email) + @"
                  ,DataCadastro=@DataCadastro
                  ,Inativo=@Inativo
                  ,Mensagem=@Mensagem
                  ,HistoriaID=@HistoriaID)
                    WHERE ID=@ID ";

            using (DbConnection con = _db.CreateConnection())
            {
                con.Open();
                con.Execute(SQL, entidade);
                con.Close();
            }
        }
        public RetornoModel ReportarAbuso(HistoriaReporteAbuso model, int quantidadeAbuso)
        {
            if (model.HistoriaID == 0)
            {
                return(new RetornoModel()
                {
                    Sucesso = false, Mensagem = "História deve ser informado"
                });
            }
            if (string.IsNullOrEmpty(model.Email))
            {
                return(new RetornoModel()
                {
                    Sucesso = false, Mensagem = "Email deve ser informado"
                });
            }
            if (string.IsNullOrEmpty(model.Nome))
            {
                return(new RetornoModel()
                {
                    Sucesso = false, Mensagem = "Nome deve ser informado"
                });
            }
            if (string.IsNullOrEmpty(model.Mensagem))
            {
                return(new RetornoModel()
                {
                    Sucesso = false, Mensagem = "Mensagem deve ser informada"
                });
            }
            if (!model.Email.IsValidMail())
            {
                return(new RetornoModel()
                {
                    Sucesso = false, Mensagem = "Email inválido"
                });
            }
            if (dal.Carregar(model.HistoriaID, model.Email) != null)
            {
                return(new RetornoModel()
                {
                    Sucesso = false, Mensagem = "Você só pode reportar Abuso uma única vez por História"
                });
            }
            model.DataCadastro = DateTime.Now;
            Salvar(model);
            HistoriaADO hAdo = new HistoriaADO();

            hAdo.InserirLog(model.HistoriaID);
            hAdo.AdicionarAbuso(model.HistoriaID);
            Historia    historia = hAdo.Carregar(model.HistoriaID);
            IndicadoADO iAdo     = new IndicadoADO();
            Indicado    indicado = iAdo.Carregar(historia.IndicadoID ?? 0);

            if (!indicado.RemoverGaleria)
            {
                if (quantidadeAbuso <= iAdo.QtdeReportsAbuso(indicado.ID))
                {
                    iAdo.InserirLog(indicado.ID);
                    iAdo.RemoverGaleriaAbuso(indicado.ID);
                }
            }

            return(new RetornoModel()
            {
                Sucesso = true, Mensagem = "OK!"
            });
        }