コード例 #1
0
        /// <summary>
        /// Apaga os dados do beneficiamento.
        /// </summary>
        /// <param name="benefConfig"></param>
        /// <returns></returns>
        public Colosoft.Business.DeleteResult ApagarBenefConfig(Entidades.BenefConfig benefConfig)
        {
            benefConfig.Require("benefConfig").NotNull();

            using (var session = SourceContext.Instance.CreateSession())
            {
                var resultado = benefConfig.Delete(session);
                if (!resultado)
                {
                    return(resultado);
                }

                return(session.Execute(false).ToDeleteResult());
            }
        }
コード例 #2
0
        /// <summary>
        /// Valida a atualização da configuração do beneficiamento.
        /// </summary>
        /// <param name="benefConfig"></param>
        /// <returns></returns>
        IMessageFormattable[] Entidades.IValidadorBenefConfig.ValidaAtualizacao(Entidades.BenefConfig benefConfig)
        {
            if (!benefConfig.IdParent.HasValue)
            {
                // Não permite que sejam inseridos beneficiamentos com o mesmo nome.
                var consulta = SourceContext.Instance.CreateQuery()
                               .From <Data.Model.BenefConfig>()
                               .Where("(Nome=?nome OR Descricao=?descricao) AND IdParent IS NULL")
                               .Add("?nome", benefConfig.Nome)
                               .Add("?descricao", benefConfig.Descricao);

                if (benefConfig.ExistsInStorage)
                {
                    consulta.WhereClause
                    .And("IdBenefConfig<>?idBenefConfig")
                    .Add("?idBenefConfig", benefConfig.IdBenefConfig);
                }

                if (consulta.ExistsResult())
                {
                    return new IMessageFormattable[]
                           {
                               "Já foi inserido um beneficiamento com este nome/descrição.".GetFormatter()
                           }
                }
                ;
            }

            return(new IMessageFormattable[0]);
        }

        /// <summary>
        /// Recupera o numero da sequencia para o beneficiamento informado.
        /// </summary>
        /// <param name="benefConfig"></param>
        /// <returns></returns>
        int Entidades.IValidadorBenefConfig.ObtemNumeroSequencia(Entidades.BenefConfig benefConfig)
        {
            return(SourceContext.Instance.CreateQuery()
                   .From <Data.Model.BenefConfig>()
                   .Select("MAX(NumSeq)")
                   .Execute()
                   .Select(f => f.GetInt32(0))
                   .FirstOrDefault() + 1);
        }

        /// <summary>
        /// Verifica se a configuração do beneficiamento está em uso
        /// em alguma parte do sistema.
        /// </summary>
        /// <param name="benefConfig"></param>
        /// <returns></returns>
        bool Entidades.IValidadorBenefConfig.EmUso(Entidades.BenefConfig benefConfig)
        {
            var models = new Type[]
            {
                typeof(Glass.Data.Model.MaterialProjetoBenef),
                typeof(Glass.Data.Model.ProdutosCompraBenef),
                typeof(Glass.Data.Model.ProdutoOrcamentoBenef),
                typeof(Glass.Data.Model.ProdutoPedidoBenef),
                typeof(Glass.Data.Model.ProdutoPedidoEspelhoBenef),
                typeof(Glass.Data.Model.ProdutoBenef),
                typeof(Glass.Data.Model.ProdutoTrocaDevolucaoBenef),
                typeof(Glass.Data.Model.PecaModeloBenef),
                typeof(Glass.Data.Model.PecaItemProjBenef),
                typeof(Glass.Data.Model.ProdutoTrocadoBenef)
            };

            var qtdeReferencias = 0;

            var consultaReferencias = SourceContext.Instance.CreateMultiQuery();

            // Cria as consultas para as models
            foreach (var i in models)
            {
                consultaReferencias.Add(SourceContext.Instance.CreateQuery()
                                        .From(new Colosoft.Query.EntityInfo(i.FullName, "t"))
                                        .InnerJoin <Data.Model.BenefConfig>("t.IdBenefConfig = bc.IdBenefConfig", "bc")
                                        .Where("t.IdBenefConfig=?id OR bc.IdParent=?id")
                                        .Add("?id", benefConfig.IdBenefConfig)
                                        .Count(), (sender, query, result) =>
                                        qtdeReferencias += result.Select(f => f.GetInt32(0)).FirstOrDefault());
            }


            consultaReferencias.Execute();

            // Verifica se este beneficiamento ou seus filhos estão sendo usados em alguma tabela
            return(qtdeReferencias > 0);
        }