public static SortDescriptor <Data.VZ.VerejnaZakazka> GetSort(int iorder)
            {
                VerejnaZakazkaSearchData.VZOrderResult order = (VerejnaZakazkaSearchData.VZOrderResult)iorder;

                SortDescriptor <Data.VZ.VerejnaZakazka> s = new SortDescriptor <Data.VZ.VerejnaZakazka>().Field(f => f.Field("_score").Descending());

                switch (order)
                {
                case VerejnaZakazkaSearchData.VZOrderResult.DateAddedDesc:
                    s = new SortDescriptor <Data.VZ.VerejnaZakazka>().Field(m => m.Field(f => f.DatumUverejneni).Descending());
                    break;

                case VerejnaZakazkaSearchData.VZOrderResult.DateAddedAsc:
                    s = new SortDescriptor <Data.VZ.VerejnaZakazka>().Field(m => m.Field(f => f.DatumUverejneni).Ascending());
                    break;

                case VerejnaZakazkaSearchData.VZOrderResult.DateSignedDesc:
                    s = new SortDescriptor <Data.VZ.VerejnaZakazka>().Field(m => m.Field(f => f.DatumUzavreniSmlouvy).Descending());
                    break;

                case VerejnaZakazkaSearchData.VZOrderResult.DateSignedAsc:
                    s = new SortDescriptor <Data.VZ.VerejnaZakazka>().Field(m => m.Field(f => f.DatumUzavreniSmlouvy).Ascending());
                    break;

                case VerejnaZakazkaSearchData.VZOrderResult.PriceAsc:
                    s = new SortDescriptor <Data.VZ.VerejnaZakazka>().Field(m => m.Field(f => f.KonecnaHodnotaBezDPH).Ascending());
                    break;

                case VerejnaZakazkaSearchData.VZOrderResult.PriceDesc:
                    s = new SortDescriptor <Data.VZ.VerejnaZakazka>().Field(m => m.Field(f => f.KonecnaHodnotaBezDPH).Descending());
                    break;

                case VerejnaZakazkaSearchData.VZOrderResult.FastestForScroll:
                    s = new SortDescriptor <Data.VZ.VerejnaZakazka>().Field(f => f.Field("_doc"));
                    break;

                case VerejnaZakazkaSearchData.VZOrderResult.CustomerAsc:
                    s = new SortDescriptor <Data.VZ.VerejnaZakazka>().Field(f => f.Field(ff => ff.Zadavatel.Jmeno).Ascending());
                    break;

                case VerejnaZakazkaSearchData.VZOrderResult.ContractorAsc:
                    s = new SortDescriptor <Data.VZ.VerejnaZakazka>().Field(f => f.Field("dodavatele.jmeno").Ascending());
                    break;

                case VerejnaZakazkaSearchData.VZOrderResult.LastUpdate:
                    s = new SortDescriptor <Data.VZ.VerejnaZakazka>().Field(f => f.Field("lastUpdated").Descending());
                    break;

                case VerejnaZakazkaSearchData.VZOrderResult.PosledniZmena:
                    s = new SortDescriptor <Data.VZ.VerejnaZakazka>().Field(f => f.Field("posledniZmena").Descending());
                    break;

                case VerejnaZakazkaSearchData.VZOrderResult.Relevance:
                default:
                    break;
                }

                return(s);
            }
 public static Nest.ISearchResponse <VerejnaZakazka> RawSearch(string jsonQuery, int page, int pageSize, VerejnaZakazkaSearchData.VZOrderResult order = VerejnaZakazkaSearchData.VZOrderResult.Relevance,
                                                               AggregationContainerDescriptor <VerejnaZakazka> anyAggregation = null
                                                               )
 {
     return(RawSearch(GetRawQuery(jsonQuery), page, pageSize, order, anyAggregation));
 }
            public static Nest.ISearchResponse <VerejnaZakazka> RawSearch(Nest.QueryContainer query, int page, int pageSize, VerejnaZakazkaSearchData.VZOrderResult order = VerejnaZakazkaSearchData.VZOrderResult.Relevance,
                                                                          AggregationContainerDescriptor <VerejnaZakazka> anyAggregation = null
                                                                          )
            {
                page = page - 1;
                if (page < 0)
                {
                    page = 0;
                }


                AggregationContainerDescriptor <VerejnaZakazka> baseAggrDesc = null;

                baseAggrDesc = anyAggregation == null ?
                               null //new AggregationContainerDescriptor<VerejnaZakazka>().Sum("sumKc", m => m.Field(f => f.Castka))
                        : anyAggregation;

                Func <AggregationContainerDescriptor <VerejnaZakazka>, AggregationContainerDescriptor <VerejnaZakazka> > aggrFunc
                    = (aggr) => { return(baseAggrDesc); };



                var     client  = Lib.ES.Manager.GetESClient();
                Indices indexes = client.ConnectionSettings.DefaultIndex;


                var res = client
                          .Search <VerejnaZakazka>(s => s
                                                   .Index(indexes)
                                                   .Size(pageSize)
                                                   .From(page * pageSize)
                                                   .Query(q => query)
                                                   //.Source(m => m.Excludes(e => e.Field(o => o.Prilohy)))
                                                   .Sort(ss => GetSort((int)order))
                                                   .Aggregations(aggrFunc)

                                                   );

                if (res.IsValid == false)
                {
                    Lib.ES.Manager.LogQueryError <VerejnaZakazka>(res);
                }

                //Audit.Add(Audit.Operations.Search, "", "", "VerejnaZakazka", res.IsValid ? "valid" : "invalid", query., null);

                return(res);
            }
 public static SortDescriptor <Data.VZ.VerejnaZakazka> GetSort(string sorder)
 {
     VerejnaZakazkaSearchData.VZOrderResult order = VerejnaZakazkaSearchData.VZOrderResult.Relevance;
     Enum.TryParse <VerejnaZakazkaSearchData.VZOrderResult>(sorder, out order);
     return(GetSort(order));
 }