Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to create queries for different quantities?

Tags:

c#

wpf

nhibernate

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?

like image 326
Gustavo Gonçalves Avatar asked Apr 08 '26 08:04

Gustavo Gonçalves


1 Answers

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);
like image 99
Mr Mush Avatar answered Apr 10 '26 00:04

Mr Mush



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!