示例#1
0
        /// <summary>
        /// Apaga os dados do tipo de perda.
        /// </summary>
        /// <param name="tipoPerda"></param>
        /// <returns></returns>
        public Colosoft.Business.DeleteResult ApagarTipoPerda(Entidades.TipoPerda tipoPerda)
        {
            tipoPerda.Require("tipoPerda").NotNull();

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

                return(session.Execute(false).ToDeleteResult());
            }
        }
示例#2
0
        /// <summary>
        /// Valida a existencia do tipo de perda.
        /// </summary>
        /// <param name="tipoPerda"></param>
        /// <returns></returns>
        public IMessageFormattable[] ValidaExistencia(Entidades.TipoPerda tipoPerda)
        {
            var mensagens = new List <string>();

            // Handler para tratar o resultado da consulta de validação
            var tratarResultado = new Func <string, Colosoft.Query.QueryCallBack>(mensagem =>
                                                                                  (sender, query, result) =>
            {
                if (result.Select(f => f.GetInt32(0)).FirstOrDefault() > 0 &&
                    !mensagens.Contains(mensagem))
                {
                    mensagens.Add(mensagem);
                }
            });

            var consulta = SourceContext.Instance.CreateMultiQuery();

            var adicionaConsulta = new Action <Type, string, string, char>((tipo, nomeCampo, nome, genero) =>
            {
                consulta.Add(SourceContext.Instance.CreateQuery()
                             .From(new Colosoft.Query.EntityInfo(tipo.FullName))
                             .Where(String.Format("{0}=?id", nomeCampo))
                             .Add("?id", tipoPerda.IdTipoPerda)
                             .Count(),

                             tratarResultado(String.Format(
                                                 "Este tipo de perda não pode ser excluído por possuir {0} relacionad{1}s ao mesmo.",
                                                 nome, genero)));
            });

            adicionaConsulta(typeof(Glass.Data.Model.TrocaDevolucao), "IdTipoPerda", "trocas/devoluções", 'o');
            adicionaConsulta(typeof(Glass.Data.Model.PerdaChapaVidro), "IdTipoPerda", "perdas de chapa de vidro", 'a');
            adicionaConsulta(typeof(Glass.Data.Model.SubtipoPerda), "IdTipoPerda", "subtipos de perda", 'o');
            adicionaConsulta(typeof(Glass.Data.Model.DadosReposicao), "TipoPerdaRepos", "reposições de peça anteriores", 'a');
            adicionaConsulta(typeof(Glass.Data.Model.ProdutoPedidoProducao), "TipoPerda", "reposições de peça (pedido)", 'a');
            adicionaConsulta(typeof(Glass.Data.Model.ProdutoPedidoProducao), "TipoPerdaRepos", "reposições de peça", 'a');

            consulta.Execute();

            return(mensagens.Select(f => f.GetFormatter()).ToArray());
        }