using GraphQL;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BodyshopPartner.Utils.Queries
{
    class JobsQueries
    {
        private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();

        public static async Task<string> CheckSupplementByClaimNo(string ClmNo)
        {
            if (string.IsNullOrEmpty(ClmNo))
                return null;

            var r = new GraphQLRequest
            {
                Query = @"query QUERY_JOB_BY_CLM_NO($clm_no: String!) {
                              jobs(where: {clm_no: {_eq: $clm_no}}) {
                                id
                              }
                            }",
                Variables = new
                {
                    clm_no = ClmNo
                }
            };

            try
            {
                var d = await Utils.GraphQL.ExecuteQuery(r);
                return d?.jobs?[0]?.id;

            }
            catch (ArgumentOutOfRangeException Ex)
            {
                logger.Trace(Ex, "No jobs returned in GQL query.");
                return null;
            }
            catch (Exception Ex)
            {
                logger.Error(Ex, "Querying for jobs by clm_no failed.");
                return null;
            }
        }
    }
}
