public List <UsageBlock> UsageListForGivenTimeFrame(DateTime startTime, DateTime endTime) { List <UsageModel> filteredUsages = ComposeListOfUsages(startTime, endTime); List <UsageBlock> blockList = new List <UsageBlock>(); UsageBlock block = new UsageBlock(); foreach (UsageModel usage in filteredUsages) { if (block.StartTime == default && block.EndTime == default) { block.StartTime = usage.StartTime; block.EndTime = usage.EndTime; } if ((usage.StartTime - block.EndTime) <= TimeSpan.FromMilliseconds((int)Res)) { block.EndTime = usage.EndTime; } else { blockList.Add(block); block = new UsageBlock(usage.StartTime, usage.EndTime); } } if (!blockList.Any(sm => sm.Id == block.Id)) { blockList.Add(block); } return(blockList); }
public List <UsageBlock> NotUsageListForGivenTimeFrame(DateTime startTime, DateTime endTime) { List <UsageBlock> usageList = UsageListForGivenTimeFrame(startTime, endTime); List <UsageBlock> notUsageList = new List <UsageBlock>(); UsageBlock notUsageBlock = new UsageBlock(); bool isValueWrittenInRound; foreach (UsageBlock block in usageList) { isValueWrittenInRound = false; if (notUsageBlock.StartTime == default && notUsageBlock.EndTime == default && !isValueWrittenInRound) { notUsageBlock.StartTime = block.EndTime; isValueWrittenInRound = true; } if (notUsageBlock.EndTime == default && notUsageBlock.StartTime != default && !isValueWrittenInRound) { notUsageBlock.EndTime = block.StartTime; isValueWrittenInRound = true; } if (notUsageBlock.StartTime != default && notUsageBlock.EndTime != default && isValueWrittenInRound) { notUsageList.Add(notUsageBlock); notUsageBlock = new UsageBlock { StartTime = block.EndTime }; } } return(notUsageList); }