コード例 #1
0
        private async void Calculate()
        {
            if ((Until - Since).TotalDays <= 0)
            {
                return;
            }
            ResponseModel response = await _pk.GetSessionsInPeriod(_userId, Since, Until);

            List <ParkingSession> sessions = new List <ParkingSession>((List <ParkingSession>)response.Data);
            TimeSpan ts = Until - Since;


            const int hr = 24;
            List <KeyValuePair <int, double> > result = new List <KeyValuePair <int, double> >();

            for (int i = 0; i < hr; i++)
            {
                List <ParkingSession> tmpPs = sessions.FindAll(ps => ps.PaymentDt != null && ps.ExitDt != null);
                int fromPast = tmpPs.Count(ps => ps.EntryDt.Hour == i || ps.ExitDt.Value.Hour == i);

                int fromActive = sessions.Count(ps => ps.PaymentDt != null && ps.ExitDt == null);


                double rate = (fromPast + fromActive) / (ts.TotalDays + 1);
                result.Add(new KeyValuePair <int, double>(i, rate));
            }

            Statistics = result;
        }