/// <summary> /// Apaga os dados da conta do banco. /// </summary> /// <param name="contaBanco"></param> /// <returns></returns> public Colosoft.Business.DeleteResult ApagarContaBanco(Entidades.ContaBanco contaBanco) { contaBanco.Require("contaBanco").NotNull(); using (var session = SourceContext.Instance.CreateSession()) { var resultado = contaBanco.Delete(session); if (!resultado) { return(resultado); } return(session.Execute(false).ToDeleteResult()); } }
/// <summary> /// Valida a existencia da conta. /// </summary> /// <param name="contaBanco"></param> /// <returns></returns> IMessageFormattable[] Entidades.IValidadorContaBanco.ValidaExistencia(Entidades.ContaBanco contaBanco) { var mensagens = new List <string>(); // Handler para criar a consulta padrão da existencia do registro var criarConsulta = new Func <Type, Colosoft.Query.Queryable>(type => SourceContext.Instance.CreateQuery() .From(new Colosoft.Query.EntityInfo(type.FullName)) .Count() .Where("IdContaBanco=?id") .Add("?id", contaBanco.IdContaBanco)); // 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.Add(mensagem); } }); SourceContext.Instance.CreateMultiQuery() // Verifica se existe algum pagamento associado à esta conta bancária .Add(criarConsulta(typeof(Data.Model.PagtoPagto)), tratarResultado("Esta conta bancária não pode ser excluída por haver pagamentos relacionados à mesma.")) // Verifica se existe alguma movimentação para esta conta bancária .Add(criarConsulta(typeof(Data.Model.MovBanco)), tratarResultado("Esta conta bancária não pode ser excluída por haver movimentações relacionadas à mesma.")) // Verifica se existe alguma parcela de cartão para esta conta bancária .Add(SourceContext.Instance.CreateQuery() .From <Data.Model.ContasReceber>() .Where("IdContaBanco=?id AND IsParcelaCartao=?parcelaCartao") .Add("?id", contaBanco.IdContaBanco) .Add("?parcelaCartao", true) .Count(), tratarResultado("Esta conta bancária não pode ser excluída por haver parcela(s) de cartão relacionada(s) à mesma.")) // Verifica se existe alguma associação com esta conta bancária .Add(criarConsulta(typeof(Data.Model.AssocContaBanco)), tratarResultado("Esta conta bancária não pode ser excluída por haver associações em configurações relacionadas à mesma.")) .Execute(); return(mensagens.Select(f => f.GetFormatter()).ToArray()); }