0
I’m having this mistake when I try to perform a query with the Entity within a Iqueryable.
"LINQ to Entities does not recognize the method 'Boolean Checkpast values(Int32)' method, and this method cannot be Translated into a store Expression."
public ActionResult AjaxHandler(jQueryDataTableParamModel param, string unidade, bool
filtraPorLoja = false, bool filtraSerial = false, int cadastro = 0, int opcaobusca = 0,
string valorbusca = ""){
param.iDisplayLength = param.iDisplayLength == 0 ? 10 : param.iDisplayLength;
var EhLicenciado = User.IsInRole("Licenciado");
var sortColumnIndex = Convert.ToInt32(Request["iSortCol_0"]);
var sortDirection = Request["sSortDir_0"];
var clientes = _uow.ClienteApp.Obter();
#region Filtro Loja
if (EhLicenciado)
{
Usuario userLicenciado = _uow.UsuarioApp.FindByUserName(User.Identity.Name);
var glUserLic = _uow.GrupoLojaApp.ObterPorId(userLicenciado.GrupoLojaID).ID;
clientes = clientes.Where(a => a.GrupoLoja.Where(c => c.ID == glUserLic).ToList().Count > 0);
}
else
{
if (filtraPorLoja) clientes = clientes.Where(c => c.UnidadeDeVendaId.Equals(unidade));
}
#endregion
#region Filtro Status
if (cadastro != 0)
{
switch (cadastro)
{
case 1:
clientes = clientes.Where(a => a.TipoClienteId == 1);
break;
case 2:
clientes = clientes.Where(a => a.TipoClienteId == 2);
break;
case 3:
clientes = clientes.Where(a => a.TipoClienteId == 3);
break;
default:
clientes = clientes != null ? clientes : null;
break;
}
}
#endregion
#region Filtro Serial
if (filtraSerial && (!string.IsNullOrEmpty(param.sSearch) || !string.IsNullOrWhiteSpace(param.sSearch)) && param.sSearch.Length >= 3)
clientes = clientes.Where(c => c.AparelhosCompra.Where(d => d.Serial.ToUpper().Contains(param.sSearch.ToUpper())).Count() > 0);
#endregion
#region Filtro Busca Cliente
if (!filtraSerial && !string.IsNullOrEmpty(param.sSearch) && param.sSearch.Length >= 3)
clientes = clientes.Where(a => a.FiltroCliente.Trim().ToUpper().Contains(param.sSearch.ToString().Trim().ToUpper()));
else
{
if (opcaobusca != 0)
{
switch (opcaobusca)
{
case 1:
clientes = !string.IsNullOrEmpty(valorbusca) || !string.IsNullOrWhiteSpace(valorbusca) ?
clientes.Where(a => a.ProtheusId.ToString().ToUpper().Trim().Contains(valorbusca.ToString().ToUpper().Trim()))
: clientes;
break;
case 2:
clientes = !string.IsNullOrEmpty(valorbusca) || !string.IsNullOrWhiteSpace(valorbusca) ?
clientes.Where(a => a.Nome.ToString().ToUpper().Trim().Contains(valorbusca.ToString().ToUpper().Trim()))
: clientes;
break;
case 3:
clientes = !string.IsNullOrEmpty(valorbusca) || !string.IsNullOrWhiteSpace(valorbusca) ?
clientes.Where(a => a.Cnpj.ToString().ToUpper().Trim().Contains(valorbusca.ToString().ToUpper().Trim()))
: clientes;
break;
case 4:
clientes = !string.IsNullOrEmpty(valorbusca) || !string.IsNullOrWhiteSpace(valorbusca) ?
clientes.Where(a => a.Telefone.ToString().ToUpper().Trim().Contains(valorbusca.ToString().ToUpper().Trim()))
: clientes;
break;
default:
clientes = clientes != null ? clientes : null;
break;
}
}
else
{
if (!string.IsNullOrEmpty(valorbusca) || !string.IsNullOrWhiteSpace(valorbusca))
{
if (filtraSerial && valorbusca.Length >= 3)
clientes = clientes.Where(c => c.AparelhosCompra.Where(d => d.Serial.ToUpper().Contains(valorbusca.Trim().ToUpper())).Count() > 0);
else
clientes = clientes.Where(a => a.FiltroCliente.Trim().ToUpper().Contains(valorbusca.ToString().Trim().ToUpper()));
}
else
clientes = clientes != null ? clientes : null;
}
}
#endregion
#region sortColumnIndex
switch (sortColumnIndex)
{
case 2:
clientes = sortDirection == "asc" ? clientes.OrderBy(a => a.ProtheusId) : clientes.OrderByDescending(a => a.ProtheusId);
break;
case 3:
clientes = sortDirection == "asc" ? clientes.OrderBy(a => a.Nome) : clientes.OrderByDescending(a => a.Nome);
break;
case 4:
clientes = sortDirection == "asc" ? clientes.OrderBy(a => a.ProtheusId == null || a.ProtheusId == "") : clientes.OrderByDescending(a => a.ProtheusId == null || a.ProtheusId == "");
break;
}
#endregion
#region clientesComFiltro
*****var clienteSelect = clientes.Select(c =>
new
{
ClienteId = c.ClienteId.ToString(),
EnviadoProtheus = (c.ProtheusId != null ^ c.ProtheusId != ""),
Sincronizar = c.SincronizarComProtheus ? true : false,
c.ProtheusId,
Nome = c.Nome.TrimEnd(),
NomeReduz = c.NomeReduz.TrimEnd(),
Cnpj = c.Cnpj.TrimEnd(),
Endereco = c.Endereco.TrimEnd() + " " + c.Bairro.TrimEnd() + " " + c.Municipio.TrimEnd() + " " + c.CodigoEstado.TrimEnd(),
c.Cep,
DataNascimento = (c.DataNascimento.Day < 10 ? "0" + c.DataNascimento.Day : c.DataNascimento.Day.ToString()) + "/" + (c.DataNascimento.Month < 10 ? "0" + c.DataNascimento.Month : c.DataNascimento.Month.ToString()) + "/" + c.DataNascimento.Year,
c.Celular,
c.Telefone,
UnidadeDeVenda = c.UnidadeDeVenda != null ? c.UnidadeDeVenda.ADK_NOME : "",
c.UnidadeDeVendaId,
c.TipoPessoa,
c.Ativo,
BloqDesbloq = c.Ativo ? "<a class='btn btn-danger btn-block btn-xs' title='Bloquear Cliente' onclick='bloquearOuDesbloquear(" + c.ClienteId.ToString() + ")' ><span class='glyphicon glyphicon-ban-circle'></span></a>"
: "<a class='btn btn-success btn-block btn-xs' title='Desbloquear Cliente' onclick='bloquearOuDesbloquear(" + c.ClienteId.ToString() + ")' ><span class='glyphicon glyphicon-ok'></span></a>",
Status = c.Status.TrimEnd(),
c.Canal,
c.Sexo,
TipoCadClienteId = c.TipoClienteId,
TipoCadCliente = c.TipoClienteId == 1 ? "ANÁLISE" : c.TipoClienteId == 2 ? "PROSPECTIVO" : c.TipoClienteId == 3 ? "CLIENTE" : "",
TemTituloVencido = _uow.ClienteApp.VerificarTitulosVencidos(c.ClienteId),
});*****
var clientesComFiltro = clienteSelect.ToPagedList(param.iDisplayStart / param.iDisplayLength, param.iDisplayLength);
#endregion
var json = Json(new
{
param.sEcho,
iTotalRecords = clientesComFiltro.Count(),
iTotalDisplayRecords = clientes.Count(),
aaData = clientesComFiltro.ToArray()
},
JsonRequestBehavior.AllowGet);
return json;
And the method you’re pulling would be this one.
public bool VerificarTitulosVencidos(int clienteId, int diasVencidos)
{
var clientConvertido = Convert.ToString(clienteId);
var testando = _db.TitulosVencidos.Any(c => c.DIASVENC >= diasVencidos && c.ID_CLIENTE == clientConvertido);
return testando;
}
you are passing only 1 parameter in the Checkpast method that requires 2
– Marcos Junior
In this case it is architected with DDD, I pass the second parameter in the service layer.
– Ian Fonteles
But in this part of the code it is not receiving, it is missing to transport this parameter to this layer. Or you’re calling the method in the wrong layer
– Leandro Angelo