public async Task <List <Card> > QueryJobPosting(int fromNumber, string keywords, int size)
        {
            var client = new HttpClient();

            HttpResponseMessage response = null;
            RootDSLObject       dsl      = new RootDSLObject();

            try
            {
                dsl.from               = fromNumber;
                dsl.size               = size;
                dsl.query              = new Query();
                dsl.query.@bool        = new Bool();
                [email protected]   = new List <Must>();
                [email protected] = new List <Filter>();
                [email protected](new Must
                {
                    match = new
                    {
                        Answer = keywords
                    }
                });

                [email protected](new Must
                {
                    match = new
                    {
                        Question = keywords
                    }
                });
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }

            var json = JsonConvert.SerializeObject(dsl);
            var data = new StringContent(json, Encoding.UTF8, "application/json");

            response = await client.PostAsync(baseUrl + "_search", data);

            var result = response.Content.ReadAsStringAsync().Result;

            try
            {
                RootResponseObject list = JsonConvert
                                          .DeserializeObject <RootResponseObject>(result);
                List <Card> listsCards = new List <Card>();
                foreach (var item in list.hits.hits)
                {
                    listsCards.Add(item._source);
                }
                return(listsCards);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.InnerException);
                return(new List <Card>());
            }
        }
        public async Task <List <Card> > QueryJobPosting(int fromNumber, string keywords, int size, CardType?cardType)
        {
            var    client = new HttpClient();
            string result = "";
            HttpResponseMessage response = null;

            if (string.IsNullOrEmpty(keywords.Replace(" ", "")))
            {
                string finalQueryString = baseUrl + "_search?" + "q=Type:" + (int)cardType + "&from=" + fromNumber + "&size=" + size;
                response = await client.GetAsync(finalQueryString);

                result = response.Content.ReadAsStringAsync().Result;
            }
            else
            {
                RootDSLObject dsl = new RootDSLObject();
                try
                {
                    dsl.from               = fromNumber;
                    dsl.size               = size;
                    dsl.query              = new Query();
                    dsl.query.@bool        = new Bool();
                    [email protected]   = new List <Must>();
                    [email protected] = new List <Filter>();
                    [email protected](new Must
                    {
                        match = new
                        {
                            Answer = keywords
                        }
                    });

                    [email protected](new Must
                    {
                        match = new
                        {
                            Question = keywords
                        }
                    });
                    [email protected](new Filter
                    {
                        term = new
                        {
                            Type = cardType
                        }
                    });
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }

                var json = JsonConvert.SerializeObject(dsl);
                var data = new StringContent(json, Encoding.UTF8, "application/json");
                response = await client.PostAsync(baseUrl + "_search", data);

                result = response.Content.ReadAsStringAsync().Result;
            }



            try
            {
                RootResponseObject list = JsonConvert
                                          .DeserializeObject <RootResponseObject>(result);
                List <Card> listsCards = new List <Card>();
                foreach (var item in list.hits.hits)
                {
                    listsCards.Add(item._source);
                }
                return(listsCards);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.InnerException);
                return(new List <Card>());
            }
        }