private async Task <RevenueModelByRcc> RevenueByRcc <RType>(ResolveFieldContext context, QueryTemplate <RType> query, DateTime date, int rcc) where RType : IRevenue
        {
            if (context.ThrowIfInvalidAuthorization() == false)
            {
                return(null);
            }
            var rcckeys = context.GetSiteKeysByRcc();
            List <RevenueModelByRcc> results = new List <RevenueModelByRcc>();

            if (rcckeys.ContainsKey(rcc) == false)
            {
                context.Errors.Add(new GraphQL.ExecutionError("대상 RCC의 지역 사이트는 소유하지 않았습니다"));
                return(null);
            }
            IEnumerable <int> siteKeys = rcckeys[rcc];

            using (IStatelessSession session = mysqlDataAccessor.SessionFactory.OpenStatelessSession())
            {
                var result = await query(session, date, siteKeys);

                RevenueModelByRcc line = new RevenueModelByRcc {
                    rcc = rcc, sumofmoney = result.Sum(x => x.Revenue)
                };
                return(line);
            }
        }
        private async Task <IEnumerable <RevenueModelByRcc> > RevenueByAll <RType>(ResolveFieldContext context, QueryTemplate <RType> query, DateTime date) where RType : IRevenue
        {
            if (context.ThrowIfInvalidAuthorization() == false)
            {
                return(null);
            }
            var rcckeys = context.GetSiteKeysByRcc();
            List <RevenueModelByRcc> results = new List <RevenueModelByRcc>();

            using (IStatelessSession session = mysqlDataAccessor.SessionFactory.OpenStatelessSession())
            {
                foreach (int rcc in rcckeys.Keys)
                {
                    IEnumerable <int> siteKeys = rcckeys[rcc];
                    var rows = await query(session, date, siteKeys);

                    RevenueModelByRcc line = new RevenueModelByRcc {
                        rcc = rcc, sumofmoney = rows.Sum(x => x.Revenue)
                    };
                    line.sites = rows.Select(x => new RevenueBySite {
                        siteid = x.Siteid, sumofmoney = x.Revenue
                    });
                    results.Add(line);
                }
                return(results);
            }
        }