public async Task <MeasurementByRcc> GetMeasurementByRccAsync(ResolveFieldContext context, int rcc) { if (context.ThrowIfInvalidAuthorization() == false) { return(null); } var rcckeys = context.GetSiteKeysByRcc(); if (rcckeys.ContainsKey(rcc) == false) { context.Errors.Add(new GraphQL.ExecutionError("대상 RCC의 지역 사이트는 소유하지 않았습니다")); return(null); } MeasurementByRcc measurementByRcc = new MeasurementByRcc(); List <double> socs = new List <double>(); foreach (int siteid in rcckeys[rcc]) { MeasurementBySite site = await GetMeasurementsBySiteIdAsync(siteid); socs.Add(site.meanofsoc); measurementByRcc.countofbms += site.countofbms; measurementByRcc.countofpcs += site.countofpcs; measurementByRcc.countofpv += site.countofpv; measurementByRcc.countofevent += site.countofevent; measurementByRcc.sumofactivepower += site.sumofactivepower; measurementByRcc.sumofpvgeneration += site.sumofpvgeneration; measurementByRcc.sumofcharge += site.sumofcharge; measurementByRcc.sumofdischarge += site.sumofdischarge; } measurementByRcc.meanofsoc = socs.Average(); measurementByRcc.countofsites = rcckeys[rcc].Count; measurementByRcc.rcc = rcc; return(measurementByRcc); }
public async Task <IEnumerable <MeasurementByRcc> > GetMeasurementsAsync(ResolveFieldContext context) { if (context.ThrowIfInvalidAuthorization() == false) { return(null); } var siteKeys = context.GetSiteKeysByRcc(); List <MeasurementByRcc> result = new List <MeasurementByRcc>(); foreach (int rcc in siteKeys.Keys) { MeasurementByRcc measurementByRcc = await GetMeasurementByRccAsync(context, rcc); if (measurementByRcc == null) { continue; } result.Add(measurementByRcc); } return(result); }