Ejemplo n.º 1
0
        public ActionResult Search(string query, int?page, int?order)
        {
            page  = page ?? 1;
            order = order ?? 0;
            Lib.Searching.SmlouvaSearchResult res = null;
            var apires = Framework.ApiAuth.IsApiAuth(this,
                                                     parameters: new Framework.ApiCall.CallParameter[] {
                new Framework.ApiCall.CallParameter("query", query),
                new Framework.ApiCall.CallParameter("page", page?.ToString()),
                new Framework.ApiCall.CallParameter("order", order?.ToString())
            }
                                                     );

            if (apires.Authentificated)
            {
                if (string.IsNullOrWhiteSpace(query))
                {
                    return(View("Error404"));
                }

                bool?platnyzaznam = null;  //1 - nic defaultne
                if (
                    System.Text.RegularExpressions.Regex.IsMatch(query.ToLower(), "(^|\\s)id:")
                    ||
                    query.ToLower().Contains("idverze:")
                    ||
                    query.ToLower().Contains("idsmlouvy:")
                    ||
                    query.ToLower().Contains("platnyzaznam:")
                    )
                {
                    platnyzaznam = null;
                }

                res = HlidacStatu.Lib.Data.Smlouva.Search.SimpleSearch(query, page.Value,
                                                                       HlidacStatu.Lib.Data.Smlouva.Search.DefaultPageSize,
                                                                       (HlidacStatu.Lib.Data.Smlouva.Search.OrderResult)order.Value,
                                                                       platnyZaznam: platnyzaznam);


                if (res.IsValid == false)
                {
                    Response.StatusCode = 500;
                    return(Json(new { error = "Bad query", reason = res.ElasticResults.ServerError }, JsonRequestBehavior.AllowGet));
                }
                else
                {
                    var filtered = res.Results
                                   .Select(m => HlidacStatu.Lib.Data.Smlouva.Export(m, apires.ApiCall.UserRoles.Contains("Admin"), false))
                                   .ToArray();

                    return(Content(Newtonsoft.Json.JsonConvert.SerializeObject(new { total = res.Total, items = filtered }, Newtonsoft.Json.Formatting.None), "application/json"));
                }
            }
            else
            {
                Response.StatusCode = 401;
                return(Json(new { error = "Unauthorized" }, JsonRequestBehavior.AllowGet));
            }
        }
Ejemplo n.º 2
0
        public SearchResultDTO <Lib.Data.Smlouva> Hledat([FromUri] string dotaz = null, [FromUri] int?strana = null, [FromUri] int?razeni = null)
        {
            if (strana < 1)
            {
                strana = 1;
            }
            if (strana * ApiV2Controller.DefaultResultPageSize > ApiV2Controller.MaxResultsFromES)
            {
                throw new HttpResponseException(new ErrorMessage(System.Net.HttpStatusCode.BadRequest, $"Hodnota 'strana' nemůže být větší než {ApiV2Controller.MaxResultsFromES / ApiV2Controller.DefaultResultPageSize}"));
            }

            Lib.Searching.SmlouvaSearchResult result = null;

            if (string.IsNullOrWhiteSpace(dotaz))
            {
                throw new HttpResponseException(new ErrorMessage(System.Net.HttpStatusCode.BadRequest, $"Hodnota dotaz chybí."));
            }

            bool?platnyzaznam = null;  //1 - nic defaultne

            if (
                System.Text.RegularExpressions.Regex.IsMatch(dotaz.ToLower(), "(^|\\s)id:")
                ||
                dotaz.ToLower().Contains("idverze:")
                ||
                dotaz.ToLower().Contains("idsmlouvy:")
                ||
                dotaz.ToLower().Contains("platnyzaznam:")
                )
            {
                platnyzaznam = null;
            }

            result = Lib.Data.Smlouva.Search.SimpleSearch(dotaz, strana.Value,
                                                          ApiV2Controller.DefaultResultPageSize,
                                                          (Lib.Data.Smlouva.Search.OrderResult)razeni.Value,
                                                          platnyZaznam: platnyzaznam);

            if (result.IsValid == false)
            {
                throw new HttpResponseException(new ErrorMessage(System.Net.HttpStatusCode.BadRequest, $"Špatně nastavená hodnota dotaz=[{dotaz}]"));
            }
            else
            {
                var filtered = result.ElasticResults.Hits
                               .Select(m =>
                                       Lib.Data.Smlouva.Export(m.Source,
                                                               this.ApiAuth.ApiCall.UserRoles.Contains("Admin") || this.ApiAuth.ApiCall.UserRoles.Contains("KomercniLicence"),
                                                               this.ApiAuth.ApiCall.UserRoles.Contains("Admin") || this.ApiAuth.ApiCall.UserRoles.Contains("KomercniLicence")
                                                               )
                                       )
                               .ToArray();

                return(new SearchResultDTO <Lib.Data.Smlouva>(result.Total, result.Page, filtered));
            }
        }