예제 #1
0
        public MilkSessionView(IEnumerable <Milk> milks, DateTime dateToDisplay, TraqType traqType)
        {
            if (milks == null)
            {
                throw new ArgumentNullException();
            }

            SessionDate     = dateToDisplay.Date;
            DailyMilks      = milks.Where(milk => milk.StartTimePst.Date == SessionDate).OrderByDescending(milk => milk.StartTimePst);
            Total           = milks.Count();
            IsMaxDate       = !(milks.Any(milk => milk.StartTimePst >= SessionDate.AddDays(1)));
            IsMinDate       = !(milks.Any(milk => milk.StartTimePst < SessionDate));
            IsActiveSession = milks.Any(milk => milk.EndTimeUtc == null);
            ChorerStats     = milks.GroupBy(milk => milk.Chorer)
                              .Select(group => new ChorerSessionStat()
            {
                UserName = group.First().Chorer?.GetDescription() ?? "Unknown",
                Total    = group.Count()
            });
            HourlyVolumeStats = milks.Where(milk => milk.Volume != null).Select(group => new ValueDateSessionStat()
            {
                Date  = group.StartTimePst,
                Value = (int)group.Volume
            });
            DailyVolumeStats = milks.Where(milk => milk.Volume != null)
                               .GroupBy(milk => milk.StartTimePst.Date).Select(group => new ValueDateSessionStat()
            {
                Date  = group.First().StartTimePst,
                Value = group.Sum(g => (int)g.Volume)
            });
            TraqType = traqType;
        }
예제 #2
0
        public bool CanBuy(bool IsPreferred, bool IsAdmin)
        {
            if (IsAdmin)
            {
                return(true);
            }

            var timeNow    = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, _pstZone);
            var timeCanBuy = SessionDate.AddDays(-1 * _buyDayMinimum).AddHours(2);

            return(timeNow >= (IsPreferred ? timeCanBuy.AddDays(-1) : timeCanBuy));
        }
예제 #3
0
        public DiaperChangeView(IEnumerable <Diaper> diapers, DateTime dateToDisplay)
        {
            if (diapers == null)
            {
                throw new ArgumentNullException();
            }

            SessionDate = dateToDisplay.Date;
            Total       = diapers.Count();
            IsMaxDate   = !(diapers.Any(diaper => diaper.ChangeTimePst >= SessionDate.AddDays(1)));
            IsMinDate   = !(diapers.Any(diaper => diaper.ChangeTimePst < SessionDate));
            ChorerStats = diapers.GroupBy(diaper => diaper.Chorer)
                          .Select(group => new ChorerSessionStat()
            {
                UserName = group.First().Chorer?.GetDescription() ?? "Unknown",
                Total    = group.Count()
            });
            DailyChanges = diapers.Where(diaper => diaper.ChangeTimePst.Date == SessionDate).OrderByDescending(diaper => diaper.ChangeTimePst);
        }
예제 #4
0
 public SettlementSession GetPrevious()
 {
     return(new SettlementSession(Instrument, Instrument.ThisOrPreviousTradingDay(SessionDate.AddDays(-1))));
 }
예제 #5
0
 public SettlementSession GetNext()
 {
     return(new SettlementSession(Instrument, Instrument.ThisOrNextTradingDay(SessionDate.AddDays(1))));
 }