예제 #1
0
        public static FantasyDate AddYears(this FantasyDate date, int y)
        {
            var outDate = new FantasyDate(date);

            outDate.IncrementYears(y);
            return(outDate);
        }
예제 #2
0
        public static FantasyDate AddMonths(this FantasyDate date, int m)
        {
            var outDate = new FantasyDate(date);

            outDate.IncrementMonths(m);
            return(outDate);
        }
예제 #3
0
        public static FantasyDate AddDays(this FantasyDate date, int d)
        {
            var outDate = new FantasyDate(date);

            outDate.IncrementDays(d);
            return(outDate);
        }
예제 #4
0
        public static FantasyDate AddDate(this FantasyDate date, int years, int months, int days)
        {
            var outDate = new FantasyDate(date);

            outDate.IncrementYears(years);
            outDate.IncrementMonths(months);
            outDate.IncrementDays(days);
            return(outDate);
        }
예제 #5
0
        public IActionResult CampaignLiveDisplay(int campaignId)
        {
            var context  = PFDAL.GetContext();
            var campaign = context.Campaign.Find(campaignId);

            if (campaign == null || campaign.CampaignId == 0)
            {
                return(NotFound());
            }

            var model = new LiveDisplayModel()
            {
                ActivePlayer = Player,
                CampaignId   = campaignId,
                CampaignName = campaign.CampaignName,
                FantasyDate  = "{}",
                ChatRoom     = new PFDBCommon.DBModels.ChatRoom
                {
                    ChatRoomId   = -1,
                    ChatRoomName = "NONE"
                }
            };

            var campaignData = context.CampaignData.Where(x => x.CampaignId == campaign.CampaignId);

            if (campaignData != null)
            {
                var campaignDate = campaignData.FirstOrDefault(x => x.Key == PFConfig.STR_FANTASYDATE);
                if (campaignDate != null)
                {
                    var seasons      = context.Season.ToList();
                    var months       = context.Month.ToList();
                    var CurrentDate  = new FantasyDate(campaignDate.Value);
                    var CurrentMonth = months.FirstOrDefault(x => x.MonthOrder == CurrentDate.Month);
                    var grandDate    = $"YEAR {CurrentDate.Year} AA, Season of {seasons.FirstOrDefault(x => x.SeasonId == CurrentMonth.SeasonId)?.Name}, Month of {CurrentMonth?.Name}, Day {CurrentDate.Day}";
                    model.FantasyDate = JsonConvert.SerializeObject(new { grandDate, date = campaignDate.Value, monthName = CurrentMonth.Name, day = CurrentDate.Day, campaignId });
                }

                var displayMap = campaignData.FirstOrDefault(x => x.Key == PFConfig.STR_LIVEDISPLAYMAP);
                if (displayMap != null)
                {
                    model.MapPath = displayMap.Value;
                }

                var mapData = campaignData.FirstOrDefault(x => x.Key == PFConfig.STR_LIVEDISPLAYMAPDATA);
                if (mapData != null)
                {
                    model.MapSaveData = mapData.Value;
                }
            }
            return(View("LiveDisplay", model));
        }
예제 #6
0
        public LiveEvent(TrackedEvent evt)
        {
            _dateNextOccurring = new FantasyDate(evt.DateOccurring);
            _dateLastOccurred  = string.IsNullOrWhiteSpace(evt.DateLastOccurred) ? null : new FantasyDate(evt.DateLastOccurred);

            _name           = evt.Name;
            _notes          = evt.Notes;
            _reoccurFreq    = evt.ReoccurFreq;
            _eventId        = evt.TrackedEventId;
            _location       = evt.Location;
            _campaignId     = evt.CampaignId;
            _eventType      = (TrackedEventType)evt.TrackedEventType;
            _data           = evt.TrackedEventData;
            _activeEvent    = false;
            _continentId    = evt.ContinentId ?? 0;
            _eventFrequency = (TrackedEventFrequency)evt.TrackedEventFreq;
        }
예제 #7
0
        public IActionResult UpdateDate(int campaignId)
        {
            var context = PFDAL.GetContext();
            var data    = context.CampaignData.Where(x => x.CampaignId == campaignId);
            var date    = data.FirstOrDefault(x => x.Key.Equals(PFConfig.STR_FANTASYDATE))?.Value;

            if (!string.IsNullOrWhiteSpace(date))
            {
                var seasons      = context.Season.ToList();
                var months       = context.Month.ToList();
                var CurrentDate  = new FantasyDate(date);
                var CurrentMonth = months.FirstOrDefault(x => x.MonthOrder == CurrentDate.Month);
                var grandDate    = $"YEAR {CurrentDate.Year} AA, Season of {seasons.FirstOrDefault(x => x.SeasonId == CurrentMonth.SeasonId)?.Name}, Month of {CurrentMonth?.Name}, Day {CurrentDate.Day}";
                _hubContext.Clients.All.SendAsync("ReceiveDate", new { grandDate, date, monthName = CurrentMonth.Name, day = CurrentDate.Day, campaignId });
                // TODO - only send update to clients connected to the campaignId

                return(Ok());
            }

            return(BadRequest("No date found for campaign " + campaignId));
        }
예제 #8
0
 public int DaysUntil(FantasyDate evt)
 {
     return(DateNextOccurring.DaysSince(evt));
 }
예제 #9
0
 public int DaysSince(FantasyDate evt)
 {
     return(DateLastOccurred.DaysSince(evt));
 }