Example #1
0
        async Task <Log> getLogAsync(DateTime dt)
        {
            var log = await Fufu.getLogAsync(dt);

            if (log == null)
            {
                return(null);
            }
            // 预处理
            foreach (var f in filters)
            {
                f.PreFilter(log, Logs.Count > 0 ? Logs[Logs.Count - 1] : null);
            }
            // 后处理
            foreach (var f in filters)
            {
                f.Filter(log);
            }
            return(log);
        }
Example #2
0
        async Task getLogAsync(DateTime date)
        {
            if (string.IsNullOrEmpty(Name) || string.IsNullOrEmpty(Password))
            {
                return;
            }

            if (inwork)
            {
                return;
            }

            try {
                inwork = true;
                if (!await Fufu.loginAsync(Name, Password))
                {
                    goto _end_;
                }

                TotalDay  = 0;
                FinishDay = 0;
                Logs.Clear();
                for (int i = date.Day; i > 0; i--)
                {
                    var d   = new DateTime(date.Year, date.Month, i);
                    var log = await Fufu.getLogAsync(d);

                    if (log == null)
                    {
                        continue;
                    }

                    // 预处理
                    foreach (var f in filters)
                    {
                        f.PreFilter(log, Logs.Count > 0 ? Logs[Logs.Count - 1] : null);
                    }

                    // 后处理
                    foreach (var f in filters)
                    {
                        f.Filter(log);
                    }

                    if (Logs.Count > 0)
                    {
                        var l = Logs[Logs.Count - 1];
                        Logs.RemoveAt(Logs.Count - 1);
                        Logs.Add(l);
                    }
                    Logs.Add(log);

                    // 统计
                    if (log.week_code != 0 && log.week_code != 6 && !d.IsNowDay())
                    {
                        TotalDay++;
                        FinishDay += (log.type_in == TimeType.Normal && log.type_out == TimeType.Normal) ? 1 : 0;
                    }
                }
                Ratio  = totalDay > 0 ? (float)finishDay / (float)totalDay : 1;
                Ratio *= 100;
            }
            catch (Exception _e) {
                MessageBox.Show(_e.Message);
                inwork = false;
            }

_end_:
            inwork = false;
        }