I am creating a query, which will have various results depending on the parameters received and if a situation is met, will create a filter and a set amount of results for this situation. The filter is ready, but do not know how to set the amount in these situations. Below is the query:
public IEnumerable<ConeSlab> ConsultarPlacasAcompanhamento(String codigoLaminador, Int16 placasAEnfornar, Boolean placasEnfornadas, Int16 placasDesenfornadas, Boolean placasRejeitadas)
{
try
{
var criteria = DetachedCriteria.For<ConeSlab>()
.CreateAlias("Cone", "C")
.CreateAlias("Slab.SlabPDO", "SP")
.Add(Restrictions.Eq("C.Mill", codigoLaminador))
.Add(Restrictions.IsNotNull("C.IdentBeginDtm"))
.Add(Restrictions.IsNotNull("SP.IdentBeginDtm"));
var ordem = "SP.IdentBeginDtm";
Junction disjunction = Restrictions.Disjunction();
//Identificadas
if (placasAEnfornar > 0)
{
ICriterion criterion = Restrictions.Conjunction()
.Add(Restrictions.IsNotNull("SP.IdentEndDtm"))
.Add(Restrictions.IsNull("SP.ChargeDtm"))
.Add(Restrictions.IsNull("SP.RejectDtm"));
**//How to set here?**
disjunction.Add(criterion);
}
//Enfornadas
if (placasEnfornadas)
{
ICriterion criterion = Restrictions.Conjunction()
.Add(Restrictions.IsNotNull("SP.ChargeDtm"))
.Add(Restrictions.IsNull("SP.DischDtm"))
.Add(Restrictions.IsNull("SP.RejectDtm"));
disjunction.Add(criterion);
}
//Desenfornadas
if (placasDesenfornadas > 0)
{
ICriterion criterion = Restrictions.Conjunction()
.Add(Restrictions.IsNotNull("SP.DischDtm"))
.Add(Restrictions.IsNull("SP.MillDtm"))
.Add(Restrictions.IsNull("SP.RejectDtm"));
**//How to set here?**
disjunction.Add(criterion);
}
//Rejeitadas
if (placasRejeitadas)
criteria.Add(Restrictions.IsNull("SP.RejectDtm"));
criteria.Add(disjunction);
return coneSlabRepository.GetListCriteria(criteria, 300, Order.Desc(ordem));
}
catch (Exception ex)
{
Log.Error(AppStrings.EventNatureProgramacaoSequenciamento, LibStrings.MessageExceptionQuery, ex);
throw new LoggedException(ex.Message);
}
}
How do I set individual returns?
Define your SetMaxResult in an Int according to the situation and set it to the Criteria before fetching.
int maxResults = 300; // Default value.
var criteria = DetachedCriteria.For<ConeSlab>()
.CreateAlias("Cone", "C")
.CreateAlias("Slab.SlabPDO", "SP")
.Add(Restrictions.Eq("C.Mill", codigoLaminador))
.Add(Restrictions.IsNotNull("C.IdentBeginDtm"))
.Add(Restrictions.IsNotNull("SP.IdentBeginDtm"));
Junction disjunction = Restrictions.Disjunction();
//Identificadas
if (placasAEnfornar > 0)
{
ICriterion criterion = Restrictions.Conjunction()
.Add(Restrictions.IsNotNull("SP.IdentEndDtm"))
.Add(Restrictions.IsNull("SP.ChargeDtm"))
.Add(Restrictions.IsNull("SP.RejectDtm"));
disjunction.Add(criterion);
maxResults = 10;
}
//Enfornadas
if (placasEnfornadas)
{
ICriterion criterion = Restrictions.Conjunction()
.Add(Restrictions.IsNotNull("SP.ChargeDtm"))
.Add(Restrictions.IsNull("SP.DischDtm"))
.Add(Restrictions.IsNull("SP.RejectDtm"));
disjunction.Add(criterion);
maxResults = 20;
}
//Desenfornadas
if (placasDesenfornadas > 0)
{
ICriterion criterion = Restrictions.Conjunction()
.Add(Restrictions.IsNotNull("SP.DischDtm"))
.Add(Restrictions.IsNull("SP.MillDtm"))
.Add(Restrictions.IsNull("SP.RejectDtm"));
disjunction.Add(criterion);
maxResults = 50;
}
criteria.Add(disjunction);
criteria.SetMaxResults(maxResults);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With