I have a leave__c as a custom object. It contains 3 fields:
Employee Name (lookup to User), Leave Start Date (Date) and Leave End Date (Date).
Example: User "John" is on leave from Start Date "4th Jan 2018" to End Date "12th Jan 2018". Like wise there can be multiple leave records for different users. 
I want to generate a apex logic such that for month of January (1st Jan to 31t Jan 2018), weekwise how many users are on leave. I want to displa this info in VF Page in table format for reporting purpose.

So I am planning to create a wrapper as below:

dateWiseWrapper{
	Date leaveDate;
	Boolean isOnLeave;
}

weekWiseWrapper{
	Integer weekNumber;
	Integer NumberofLeaves;
	List<DateWiseWrapper> //Max 7 days
}

UserWrapper{
	User u;
	List<weekWiseWrapper>; //Max 4 weeks
}

UserWeekwiseResultWrapper{
	List<UserWrapper> userWrapperList;
}

Does my wrapper looks correct?
Can you please help me out on how do I proceed with the apex logic