Пример #1
0
        public async Task <DateTime> CreateNewSnapshotAsync(WGApiClient client)
        {
            var stats = client.GetPlayerTankStatsAsync(ID);
            var marks = client.GetPlayerMarksAsync(ID);
            await Task.WhenAll(stats, marks);

            var             marksDict  = marks.Result.ToDictionary(m => m.TankID, m => m.Mark);
            Func <int, int> tryGetMark = id =>
            {
                if (marksDict.TryGetValue(id, out int mark))
                {
                    return(mark);
                }
                return(0);
            };

            var newSnapshot = stats.Result.Select(s => new TankStatistics(s.TankID, s.Stats, tryGetMark(s.TankID)));

            DateTime now = DateTime.Now;

            if (false == AvailableDates.Any() || CreateIntermediateSnapshot(Load(AvailableDates.Max()), newSnapshot).Any())
            {
                await SaveAsync(newSnapshot, now);

                return(now);
            }
            return(DateTime.MinValue);
        }
Пример #2
0
        public bool IsDateAvailable(DateTime start, DateTime end)
        {
            if (!AvailableDates.Any(date => date.StartDate <= start && date.EndDate >= end))
            {
                return(false);
            }

            foreach (var contract in Contracts)
            {
                if (start > contract.CheckIn && start < contract.CheckOut)
                {
                    return(false);
                }

                if (end > contract.CheckIn && end < contract.CheckOut)
                {
                    return(false);
                }

                if (start < contract.CheckIn && end > contract.CheckOut)
                {
                    return(false);
                }
            }

            return(true);
        }