예제 #1
0
        /// <summary>
        /// Salva os dados da instancia.
        /// </summary>
        /// <param name="session"></param>
        /// <returns></returns>
        public override Colosoft.Business.SaveResult Save(Colosoft.Data.IPersistenceSession session)
        {
            /* Chamado 45472. */
            if (Nome.Contains("$") || Descricao.Contains("$") || Nome.Contains("'") || Descricao.Contains("'"))
            {
                return(new Colosoft.Business.SaveResult(false,
                                                        "O Nome/Descrição do beneficiamento não podem conter os caracteres Cifrão e Aspas.".GetFormatter()));
            }

            var validador = Microsoft.Practices.ServiceLocation.ServiceLocator
                            .Current.GetInstance <IValidadorBenefConfig>();

            var resultadoValidacao = validador.ValidaAtualizacao(this);

            if (resultadoValidacao.Length > 0)
            {
                return(new Colosoft.Business.SaveResult(false, resultadoValidacao.Join(" ")));
            }

            // Calcula a sequência somente quando o beneficiamento não existir no banco.
            if (!this.ExistsInStorage && this.Filhos.Count() > 0)
            {
                // Recupera o número da sequencia
                this.NumSeq = validador.ObtemNumeroSequencia(this);
            }

            return(base.Save(session));
        }
예제 #2
0
        /// <summary>
        /// Salva os dados da entidade.
        /// </summary>
        /// <param name="session"></param>
        /// <returns></returns>
        public override Colosoft.Business.SaveResult Save(Colosoft.Data.IPersistenceSession session)
        {
            if (IdSubgrupoProd.HasValue)
            {
                //Se o tipo do subgrupo do produto for chapa de vidro, não pode ter materia-prima associada, apenas produto base.
                if (Subgrupo.TipoSubgrupo == Data.Model.TipoSubgrupoProd.ChapasVidro && BaixasEstoque.Count > 0)
                {
                    return(new Colosoft.Business.SaveResult(false, "Produtos de subgrupo do tipo Chapas de Vidro, não podem ter matéria-prima associada.".GetFormatter()));
                }

                //Se o tipo do subgrupo do produto for chapa de vidro ou chapas de vidro laminado, obriga a informar produto base.
                if ((Subgrupo.TipoSubgrupo == Data.Model.TipoSubgrupoProd.ChapasVidro || Subgrupo.TipoSubgrupo == Data.Model.TipoSubgrupoProd.ChapasVidroLaminado) && !IdProdBase.HasValue)
                {
                    return(new Colosoft.Business.SaveResult(false, "Produtos de subgrupo do tipo Chapas de Vidro e Chapas de Vidro Laminado, devem ser informados o Produto Base.".GetFormatter()));
                }
            }

            var validador = Microsoft.Practices.ServiceLocation.ServiceLocator
                            .Current.GetInstance <IValidadorProduto>();

            var resultadoValidacao = validador.ValidaAtualizacao(this);

            if (resultadoValidacao.Length > 0)
            {
                return(new Colosoft.Business.SaveResult(false, resultadoValidacao.Join(" ")));
            }

            return(base.Save(session));
        }
예제 #3
0
        /// <summary>
        /// Salva o log de alteração do Grupo
        /// </summary>
        /// <param name="session"></param>
        /// <returns></returns>
        public override Colosoft.Business.SaveResult Save(Colosoft.Data.IPersistenceSession session)
        {
            if (ExistsInStorage)
            {
                #region Log

                if (ChangedProperties.Contains("IdGrupo"))
                {
                    var planoContasAnterior = Microsoft.Practices.ServiceLocation.ServiceLocator
                                              .Current.GetInstance <IProvedorPlanoContas>()
                                              .ObtemPlanoContas(IdConta);

                    var logAlteracao = ObterLogAlteracao();

                    logAlteracao.ValorAnterior = planoContasAnterior.Grupo.Descricao;
                    logAlteracao.ValorAtual    = Grupo.Descricao;
                    logAlteracao.Campo         = "Grupo";

                    logAlteracao.Save(session);
                }

                #endregion
            }

            return(base.Save(session));
        }
예제 #4
0
        public override Colosoft.Business.SaveResult Save(Colosoft.Data.IPersistenceSession session)
        {
            if (string.IsNullOrEmpty(ChaveAcesso))
            {
                return(new Colosoft.Business.SaveResult(false, "A chave de acesso não foi informada".GetFormatter()));
            }

            ChaveAcesso = Glass.Formatacoes.RetiraCaracteresEspeciais(ChaveAcesso).Replace(" ", "");

            if (ChaveAcesso.Length != 44)
            {
                return(new Colosoft.Business.SaveResult(false, "Chave de acesso inválida.".GetFormatter()));
            }

            var validador = Microsoft.Practices.ServiceLocation.ServiceLocator
                            .Current.GetInstance <IValidadorChaveAcesso>();

            var resultadoValidacao = validador.ValidaAtualizacao(this);

            if (resultadoValidacao.Length > 0)
            {
                return(new Colosoft.Business.SaveResult(false, resultadoValidacao.Join(" ")));
            }

            return(base.Save(session));
        }
예제 #5
0
        /// <summary>
        /// Registra na sessão de persistencia o log da exclusão da entidade.
        /// </summary>
        /// <param name="sessao"></param>
        /// <param name="entidade"></param>
        public void RegistraExclusao(Colosoft.Data.IPersistenceSession sessao, Colosoft.Business.IEntity entidade)
        {
            // Verifica se está apagando uma entidade existente
            if (entidade.ExistsInStorage && !entidade.InstanceState.Parameters.Contains(IgnoreExclusaoParameterName))
            {
                var cancelamentoAttribute = entidade.GetType()
                                            .GetCustomAttributes(typeof(ControleAlteracaoAttribute), false)
                                            .FirstOrDefault() as ControleAlteracaoAttribute;

                if (cancelamentoAttribute != null && cancelamentoAttribute.TabelaCancelamento.HasValue)
                {
                    dynamic entidade2 = entidade;

                    var logs = Data.DAL.LogCancelamentoDAO.Instance.ObtemLogs(Glass.Data.Helper.UserInfo.GetUserInfo.CodUser,
                                                                              cancelamentoAttribute.TabelaCancelamento.Value, entidade.Uid, entidade2.DataModel, null, false);

                    foreach (Data.Model.LogCancelamento log in logs)
                    {
                        if (log.IdLogCancelamento == 0)
                        {
                            // Define o novo identificador virtual
                            log.IdLogCancelamento = Colosoft.Business.EntityTypeManager.Instance.GenerateInstanceUid(typeof(Data.Model.LogCancelamento));
                        }

                        // Adiciona a entrada do log para inserir no banco
                        sessao.Insert(log, (string[])null);
                    }
                }
            }
        }
예제 #6
0
        /// <summary>
        /// Método acionado para salvar as alterações do setor.
        /// </summary>
        /// <param name="session"></param>
        /// <returns></returns>
        public override Colosoft.Business.SaveResult Save(Colosoft.Data.IPersistenceSession session)
        {
            // Limpa os beneficiamentos do setor
            SetorBeneficiamentos.Clear();

            //So pode gerenciar a fornada se o setor for forno
            if (!Forno)
            {
                GerenciarFornada = false;
            }

            var validador = Microsoft.Practices.ServiceLocation.ServiceLocator
                            .Current.GetInstance <IProvedorSetor>();

            var resultadoValidacao = validador.ValidaAtualizacao(this);

            if (resultadoValidacao.Length > 0)
            {
                return(new Colosoft.Business.SaveResult(false, resultadoValidacao.Join(" ")));
            }

            var salvar = base.Save(session);

            // Reseta a lista de setores
            Glass.Data.Helper.Utils.GetSetores = null;

            return(salvar);
        }
예제 #7
0
 /// <summary>
 /// Salva os dados do resultad.
 /// </summary>
 /// <param name="session"></param>
 /// <returns></returns>
 public SaveResult Save(Colosoft.Data.IPersistenceSession session)
 {
     if (_save == null)
     {
         return(new SaveResult(true, null));
     }
     return(_save(session));
 }
예제 #8
0
        /// <summary>
        /// Sobrescreve o método que adiciona o grupo de cliente.
        /// </summary>
        /// <param name="session"></param>
        /// <returns></returns>
        public override Colosoft.Business.SaveResult Save(Colosoft.Data.IPersistenceSession session)
        {
            var validador = Microsoft.Practices.ServiceLocation.ServiceLocator
                            .Current.GetInstance <IValidadorGrupoCliente>();
            var resultadoValidacao = validador.ValidaInsercao(this);

            if (resultadoValidacao.Length > 0)
            {
                return(new Colosoft.Business.SaveResult(false, resultadoValidacao.Join(" ")));
            }
            return(base.Save(session));
        }
예제 #9
0
        /// <summary>
        /// Apaga os dados da entidade.
        /// </summary>
        /// <param name="session"></param>
        /// <returns></returns>
        public override Colosoft.Business.DeleteResult Delete(Colosoft.Data.IPersistenceSession session)
        {
            var retornoValidacao = Microsoft.Practices.ServiceLocation.ServiceLocator
                                   .Current.GetInstance <IValidadorOperadoraCartao>().ValidarPodeAlterar(this);

            if (!retornoValidacao)
            {
                return(new Colosoft.Business.DeleteResult(false, retornoValidacao.Message));
            }

            return(base.Delete(session));
        }
예제 #10
0
        /// <summary>
        /// Salva os dados da instancia.
        /// </summary>
        /// <param name="session"></param>
        /// <returns></returns>
        public override Colosoft.Business.SaveResult Save(Colosoft.Data.IPersistenceSession session)
        {
            if (!ExistsInStorage && NumSeq == 0)
            {
                var validador = Microsoft.Practices.ServiceLocation.ServiceLocator
                                .Current.GetInstance <IValidadorRotaCliente>();

                // Recupera o número de sequencia.
                NumSeq = validador.ObtemNumeroSequencia(this);
            }

            return(base.Save(session));
        }
예제 #11
0
        /// <summary>
        /// Apaga os dados da entidade.
        /// </summary>
        /// <param name="session"></param>
        /// <returns></returns>
        public override Colosoft.Business.DeleteResult Delete(Colosoft.Data.IPersistenceSession session)
        {
            var validador = Microsoft.Practices.ServiceLocation.ServiceLocator
                            .Current.GetInstance <IValidadorUnidadeMedida>();

            var resultadoValidacao = validador.ValidaExistencia(this);

            if (resultadoValidacao.Length > 0)
            {
                return(new Colosoft.Business.DeleteResult(false, resultadoValidacao.Join(" ")));
            }

            return(base.Delete(session));
        }
예제 #12
0
        /// <summary>
        /// Salva os dados da instancia.
        /// </summary>
        /// <param name="session"></param>
        /// <returns></returns>
        public override Colosoft.Business.SaveResult Save(Colosoft.Data.IPersistenceSession session)
        {
            var validador = Microsoft.Practices.ServiceLocation.ServiceLocator
                            .Current.GetInstance <IValidadorFabricanteFerragem>();

            var resultadoValidacao = validador.ValidarAtualizacao(this);

            if (!resultadoValidacao)
            {
                return(new Colosoft.Business.SaveResult(false, resultadoValidacao.Message));
            }

            return(base.Save(session));
        }
예제 #13
0
        /// <summary>
        /// Salva os dados da entidade.
        /// </summary>
        /// <param name="session"></param>
        /// <returns></returns>
        public override Colosoft.Business.SaveResult Save(Colosoft.Data.IPersistenceSession session)
        {
            var validador = Microsoft.Practices.ServiceLocation.ServiceLocator
                            .Current.GetInstance <IValidadorFerragem>();

            var resultadoValidacao = validador.ValidarAtualizacao(this);

            if (resultadoValidacao.Length > 0)
            {
                return(new Colosoft.Business.SaveResult(false, resultadoValidacao.Join(" ")));
            }

            // Define a última data de alteração
            DataAlteracao = DateTime.Now;

            return(base.Save(session));
        }
예제 #14
0
        /// <summary>
        /// Método usado para apagar a natureza de operação.
        /// </summary>
        /// <param name="session"></param>
        /// <returns></returns>
        public override Colosoft.Business.DeleteResult Delete(Colosoft.Data.IPersistenceSession session)
        {
            var validador = ServiceLocator.Current.GetInstance <IValidadorNaturezaOperacao>();

            // Valida a existencia da natureza de operação
            var validacaoExistencia = validador.ValidaExistencia(this);

            if (validacaoExistencia.Length > 0)
            {
                return(new Colosoft.Business.DeleteResult(false,
                                                          new Colosoft.Text.JoinMessageFormattable(
                                                              "Não é possível excluir essa natureza de operação.".GetFormatter(), " ",
                                                              validacaoExistencia.First())));
            }

            return(base.Delete(session));
        }
예제 #15
0
        /// <summary>
        /// Salva os dados da entidade.
        /// </summary>
        /// <param name="session"></param>
        /// <returns></returns>
        public override Colosoft.Business.SaveResult Save(Colosoft.Data.IPersistenceSession session)
        {
            if (!ExistsInStorage)
            {
                string msgErro;
                var    retornoValidacao = Microsoft.Practices.ServiceLocation.ServiceLocator
                                          .Current.GetInstance <IValidadorCartaoNaoIdentificado>().VerificarPodeInserir(NumAutCartao, TipoCartao, out msgErro);

                if (!retornoValidacao)
                {
                    return(new Colosoft.Business.SaveResult(false, msgErro.GetFormatter()));
                }

                Situacao = Data.Model.SituacaoCartaoNaoIdentificado.Ativo;
            }

            return(base.Save(session));
        }
예제 #16
0
        /// <summary>
        /// Apaga os dados do produto.
        /// </summary>
        /// <param name="session"></param>
        /// <returns></returns>
        public override Colosoft.Business.DeleteResult Delete(Colosoft.Data.IPersistenceSession session)
        {
            var validador = Microsoft.Practices.ServiceLocation.ServiceLocator
                            .Current.GetInstance <IValidadorProduto>();

            var resultadoValidacao = validador.ValidaExistencia(this);

            if (resultadoValidacao.Length > 0)
            {
                return(new Colosoft.Business.DeleteResult(false, resultadoValidacao.Join(" ")));
            }

            // Apaga os produtos/loja
            session.Delete <Data.Model.ProdutoLoja>(Colosoft.Query.ConditionalContainer
                                                    .Parse("IdProd=?idProd").Add("?idProd", this.IdProd));

            return(base.Delete(session));
        }
예제 #17
0
        public override Colosoft.Business.DeleteResult Delete(Colosoft.Data.IPersistenceSession session)
        {
            var validador = Microsoft.Practices.ServiceLocation.ServiceLocator
                            .Current.GetInstance <IValidadorClassificacaoRoteiroProducao>();

            var resultadoValidacao = validador.ValidaExistencia(this);

            if (resultadoValidacao.Length > 0)
            {
                return(new Colosoft.Business.DeleteResult(false, resultadoValidacao.Join(" ")));
            }

            var deleteResult = OnDeleting();

            if (!deleteResult)
            {
                return(deleteResult);
            }

            foreach (var r in Roteiros)
            {
                r.IdClassificacaoRoteiroProducao = 0;
                var saveResult = r.Save(session);
                if (!saveResult)
                {
                    return(new Colosoft.Business.DeleteResult(false, saveResult.Message));
                }
            }

            session.Delete(DataModel, (action, result) =>
            {
                if (result.Success)
                {
                    Roteiros.Clear();
                    OnDeleted(true, null);
                }
                else
                {
                    OnDeleted(false, result.FailureMessage.GetFormatter());
                }
            });

            return(new Colosoft.Business.DeleteResult(true, null));
        }
예제 #18
0
        /// <summary>
        /// Método acionado para apagar a entidade.
        /// </summary>
        /// <param name="session"></param>
        /// <returns></returns>
        public override Colosoft.Business.DeleteResult Delete(Colosoft.Data.IPersistenceSession session)
        {
            if (SubgrupoSistema)
            {
                return(new Colosoft.Business.DeleteResult(false, "Não é possível apagar um subgrupo do sistema".GetFormatter()));
            }

            var validador = Microsoft.Practices.ServiceLocation.ServiceLocator
                            .Current.GetInstance <IValidadorSubgrupoProd>();

            var resultadoValidacao = validador.ValidaExistencia(this);

            if (resultadoValidacao.Length > 0)
            {
                return(new Colosoft.Business.DeleteResult(false, resultadoValidacao.Join(" ")));
            }

            return(base.Delete(session));
        }
예제 #19
0
        /// <summary>
        /// Salva os dados da instancia.
        /// </summary>
        /// <param name="session"></param>
        /// <returns></returns>
        public override Colosoft.Business.SaveResult Save(Colosoft.Data.IPersistenceSession session)
        {
            if (this.Codigo == this.Descricao)
            {
                return(new Colosoft.Business.SaveResult(false,
                                                        "O código e a descrição da unidade de medida não podem ser os mesmos.".GetFormatter()));
            }

            var validador = Microsoft.Practices.ServiceLocation.ServiceLocator
                            .Current.GetInstance <IValidadorUnidadeMedida>();

            var resultadoValidacao = validador.ValidaAtualizacao(this);

            if (resultadoValidacao.Length > 0)
            {
                return(new Colosoft.Business.SaveResult(false, resultadoValidacao.Join(" ")));
            }

            return(base.Save(session));
        }
예제 #20
0
        /// <summary>
        /// Salva todos os dados gerados na conversão.
        /// </summary>
        /// <param name="session">Sessão de persistencia que será usada para salva os dados.</param>
        /// <returns>Resultado da operação.</returns>
        public Colosoft.Business.SaveResult Salvar(Colosoft.Data.IPersistenceSession session)
        {
            Colosoft.Business.SaveResult resultado;

            foreach (var produto in this._produtosRetalhos)
            {
                resultado = produto.Save(session);
                if (!resultado)
                {
                    return(resultado);
                }
            }

            foreach (var retalhoProducao in this._retalhosProducao)
            {
                session.Insert(retalhoProducao);
            }

            return(this.Solucao.Save(session));
        }
예제 #21
0
        /// <summary>
        /// Apaga os dados da instancia.
        /// </summary>
        /// <param name="session"></param>
        /// <returns></returns>
        public override Colosoft.Business.DeleteResult Delete(Colosoft.Data.IPersistenceSession session)
        {
            var validador = Microsoft.Practices.ServiceLocation.ServiceLocator
                            .Current.GetInstance <IValidadorParcelas>();

            var resultadoValidacao = validador.ValidaExistencia(this);

            if (resultadoValidacao.Length > 0)
            {
                return(new Colosoft.Business.DeleteResult(false, resultadoValidacao.Join(" ")));
            }

            // Apaga as parcelas não usar associadas
            session.Delete <Glass.Data.Model.ParcelasNaoUsar>(
                Colosoft.Query.ConditionalContainer
                .Parse("IdParcela=?idParcela")
                .Add("?idParcela", IdParcela));

            return(base.Delete(session));
        }
예제 #22
0
        /// <summary>
        /// Salva os dados do funcionário.
        /// </summary>
        /// <param name="session"></param>
        /// <returns></returns>
        public override Colosoft.Business.SaveResult Save(Colosoft.Data.IPersistenceSession session)
        {
            // Se qualquer um que não seja Administrador tentar alterar qualquer funcionário para administrador, impede
            if (Glass.Data.Helper.UserInfo.GetUserInfo.TipoUsuario != (uint)Glass.Data.Helper.Utils.TipoFuncionario.Administrador &&
                !Glass.Data.Helper.UserInfo.GetUserInfo.IsAdminSync &&
                IdTipoFunc == (int)Glass.Data.Helper.Utils.TipoFuncionario.Administrador)
            {
                return(new Colosoft.Business.SaveResult(false,
                                                        "O usuário logado não possui permissão para alterar o tipo de funcionário para administrador".GetFormatter()));
            }

            if (IdLoja == 0)
            {
                return(new Colosoft.Business.SaveResult(false, "Selecione a loja do funcionário.".GetFormatter()));
            }

            // Verifica se o funcionário não é mais um marcador de produção
            if (IdTipoFunc != (uint)Glass.Data.Helper.Utils.TipoFuncionario.MarcadorProducao)
            {
                // Limpa os setores associados
                FuncionarioSetores.Clear();
            }

            if (!ExistsInStorage)
            {
                AtualizarMenuseFuncoes();
                TipoPedido = "1,2";
            }

            var validador = Microsoft.Practices.ServiceLocation.ServiceLocator
                            .Current.GetInstance <IProvedorFuncionario>();

            var resultadoValidacao = validador.ValidaAtualizacao(this);

            if (resultadoValidacao.Length > 0)
            {
                return(new Colosoft.Business.SaveResult(false, resultadoValidacao.Join(" ")));
            }

            return(base.Save(session));
        }
예제 #23
0
        /// <summary>
        /// Apaga a configuração do beneficiamento.
        /// </summary>
        /// <param name="session"></param>
        /// <returns></returns>
        public override Colosoft.Business.DeleteResult Delete(Colosoft.Data.IPersistenceSession session)
        {
            var validador = Microsoft.Practices.ServiceLocation.ServiceLocator
                            .Current.GetInstance <IValidadorBenefConfig>();

            // Verifica se este beneficiamento ou seus filhos estão sendo usados em alguma tabela,
            // se estiverem, não permite que este beneficiamento seja excluído
            if (validador.EmUso(this))
            {
                // Altera a situação para inativo
                this.Situacao = Glass.Situacao.Inativo;
                var resultado = Save(session);
                if (!resultado)
                {
                    return(new Colosoft.Business.DeleteResult(false, resultado.Message));
                }

                return(new Colosoft.Business.DeleteResult(true, null));
            }

            return(base.Delete(session));
        }
예제 #24
0
        /// <summary>
        /// Salva os dados do resultado.
        /// </summary>
        /// <param name="session"></param>
        /// <returns></returns>
        public Colosoft.Business.SaveResult Salvar(Colosoft.Data.IPersistenceSession session)
        {
            var resultadoFinal = new Colosoft.Business.SaveResult();

            if ((_planoContaDevolucaoPagto != null && !(resultadoFinal = _planoContaDevolucaoPagto.Save(session))) ||
                (_planoContaEntrada != null && !(resultadoFinal = _planoContaEntrada.Save(session))) ||
                (_planoContaEstorno != null && !(resultadoFinal = _planoContaEstorno.Save(session))) ||
                (_planoContaEstornoChequeDev != null && !(resultadoFinal = _planoContaEstornoChequeDev.Save(session))) ||
                (_planoContaEstornoDevolucaoPagto != null && !(resultadoFinal = _planoContaEstornoDevolucaoPagto.Save(session))) ||
                (_planoContaEstornoEntrada != null && !(resultadoFinal = _planoContaEstornoEntrada.Save(session))) ||
                (_planoContaEstornoRecPrazo != null && !(resultadoFinal = _planoContaEstornoRecPrazo.Save(session))) ||
                (_planoContaFunc != null && !(resultadoFinal = _planoContaFunc.Save(session))) ||
                (_planoContaRecChequeDev != null && !(resultadoFinal = _planoContaRecChequeDev.Save(session))) ||
                (_planoContaRecPrazo != null && !(resultadoFinal = _planoContaRecPrazo.Save(session))) ||
                (_planoContaVista != null && !(resultadoFinal = _planoContaVista.Save(session))) ||
                (_tipoCartaoCredito != null && !(resultadoFinal = _tipoCartaoCredito.Save(session))))
            {
                return(resultadoFinal);
            }

            return(new Colosoft.Business.SaveResult(true, null));
        }
예제 #25
0
        /// <summary>
        /// Salva os dados da instancia.
        /// </summary>
        /// <param name="session"></param>
        /// <returns></returns>
        public override Colosoft.Business.SaveResult Save(Colosoft.Data.IPersistenceSession session)
        {
            var resultado = base.Save(session);

            if (ExistsInStorage && Situacao == Situacao.Inativo)
            {
                var resultadoValidacao = Microsoft.Practices.ServiceLocation.ServiceLocator
                                         .Current.GetInstance <IValidadorParcelas>().ValidaSituacao(IdParcela);

                if (resultadoValidacao.Length > 0)
                {
                    return(new Colosoft.Business.SaveResult(false, resultadoValidacao.Join(" ")));
                }
            }

            if (resultado && !ExistsInStorage)
            {
                // Recuper ao provedor de parcelas não usar
                var provedorParcelasNaoUsar = Microsoft.Practices.ServiceLocation.ServiceLocator
                                              .Current.GetInstance <IProvedorParcelasNaoUsar>();

                // Cria a relação de parcelas não usar
                var naoUsar = provedorParcelasNaoUsar.CriarParcelasNaoUsar(this);

                foreach (var i in naoUsar)
                {
                    // Salva a parcela não usar
                    var resultado2 = i.Save(session);
                    if (!resultado2)
                    {
                        return(resultado2);
                    }
                }
            }

            return(resultado);
        }
예제 #26
0
        /// <summary>
        /// Salva os dados da entidade.
        /// </summary>
        /// <param name="session"></param>
        /// <returns></returns>
        public override Colosoft.Business.SaveResult Save(Colosoft.Data.IPersistenceSession session)
        {
            var validador = Microsoft.Practices.ServiceLocation.ServiceLocator
                            .Current.GetInstance <IValidadorOperadoraCartao>();

            if (ExistsInStorage)
            {
                var retornoValidacao = validador.ValidarPodeAlterar(this);
                if (!retornoValidacao)
                {
                    return(new Colosoft.Business.SaveResult(false, retornoValidacao.Message));
                }
            }
            else
            {
                var retornoValidacao = validador.ValidarPodeInserir(this);
                if (!retornoValidacao)
                {
                    return(new Colosoft.Business.SaveResult(false, retornoValidacao.Message));
                }
            }

            return(base.Save(session));
        }
예제 #27
0
        /// <summary>
        /// Sobrescreve o método de salvamento da entidade de SubgrupoProd.
        /// </summary>
        public override Colosoft.Business.SaveResult Save(Colosoft.Data.IPersistenceSession session)
        {
            var validador = Microsoft.Practices.ServiceLocation.ServiceLocator
                            .Current.GetInstance <IValidadorSubgrupoProd>();

            // Executa a validação
            var resultadoValidacao = validador.ValidaAtualizacao(this);

            if (resultadoValidacao.Length > 0)
            {
                return(new Colosoft.Business.SaveResult(false, resultadoValidacao.Join(" ")));
            }

            // Salva o subgrupo.
            var resultado = base.Save(session);

            // Retorna em caso de erro.
            if (!resultado)
            {
                return(resultado);
            }

            return(resultado);
        }
예제 #28
0
        /// <summary>
        /// Método usado para salvar a entidade.
        /// </summary>
        /// <param name="session"></param>
        /// <returns></returns>
        public override Colosoft.Business.SaveResult Save(Colosoft.Data.IPersistenceSession session)
        {
            var validador = ServiceLocator.Current.GetInstance <IValidadorNaturezaOperacao>();

            // Verifica se o código interno está sendo alterado
            if (this.ExistsInStorage && this.ChangedProperties.Contains("CodInterno"))
            {
                if (!string.IsNullOrEmpty(this.CodInterno))
                {
                    // Valida a existencia da natureza de operação
                    var validacaoExistencia = validador.ValidaExistencia(this);
                    if (validacaoExistencia.Length > 0)
                    {
                        return(new Colosoft.Business.SaveResult(false,
                                                                new Colosoft.Text.JoinMessageFormattable(
                                                                    "Não é possível alterar o código dessa natureza de operação.".GetFormatter(), " ",
                                                                    validacaoExistencia.First())));
                    }
                }
                else
                {
                    return(new Colosoft.Business.SaveResult(false,
                                                            "Não é possível alterar o código da natureza de operação padrão.".GetFormatter()));
                }
            }

            // Valida o código interno
            var resultadoValidacao = validador.ValidaCodigoInterno(this);

            if (resultadoValidacao != null)
            {
                return(new Colosoft.Business.SaveResult(false, resultadoValidacao));
            }

            return(base.Save(session));
        }
예제 #29
0
 /// <summary>
 /// Executa a sessão de persistencia verificando se o resultado for válido.
 /// </summary>
 /// <param name="deleteResult"></param>
 /// <param name="session"></param>
 /// <returns></returns>
 public static Colosoft.Business.DeleteResult Execute(this Colosoft.Business.DeleteResult deleteResult, Colosoft.Data.IPersistenceSession session)
 {
     deleteResult.Require("deleteResult").NotNull();
     session.Require("session").NotNull();
     if (!deleteResult)
     {
         return(deleteResult);
     }
     return(session.Execute(false).ToDeleteResult());
 }
예제 #30
0
 /// <summary>
 /// Executa a sessão de persistencia verificando se o resultado for válido.
 /// </summary>
 /// <param name="saveResult"></param>
 /// <param name="session"></param>
 /// <returns></returns>
 public static Colosoft.Business.SaveResult Execute(this Colosoft.Business.SaveResult saveResult, Colosoft.Data.IPersistenceSession session)
 {
     saveResult.Require("saveResult").NotNull();
     session.Require("session").NotNull();
     if (!saveResult)
     {
         return(saveResult);
     }
     return(session.Execute(false).ToSaveResult());
 }