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