/// <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()); } }
/// <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); }