Skip to content

Commit 371bc1e

Browse files
Adding new version of operational report that uses improved CB API for GetReservations
v2 Operational Report uses GetReservations() instead of GetReservationsWithRateDetails()
1 parent e81a1af commit 371bc1e

56 files changed

Lines changed: 3571 additions & 205 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CBOperationsReportTool.csproj

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,10 @@
2626
</ItemGroup>
2727

2828
<ItemGroup>
29-
<Page Update="UI\AppPages\appPageOperationalReport.xaml">
29+
<Page Update="UI\AppPages\appPageOperationalReport_v2.xaml">
30+
<XamlRuntime>$(DefaultXamlRuntime)</XamlRuntime>
31+
</Page>
32+
<Page Update="UI\AppPages\appPageOperationalReport_v1.xaml">
3033
<XamlRuntime>$(DefaultXamlRuntime)</XamlRuntime>
3134
</Page>
3235
<Page Update="UI\AppPages\appPageOperationalReportList.xaml">
@@ -54,13 +57,19 @@
5457
<Page Update="UI\ListControls\uiCBPropertyPicker.xaml">
5558
<XamlRuntime>$(DefaultXamlRuntime)</XamlRuntime>
5659
</Page>
57-
<Page Update="UI\ListControls\uiOccupancyChangesList.xaml">
60+
<Page Update="UI\ListControls\uiDailyOccupancyChangesListItem_v2.xaml">
61+
<XamlRuntime>$(DefaultXamlRuntime)</XamlRuntime>
62+
</Page>
63+
<Page Update="UI\ListControls\uiOccupancyChangesList_v2.xaml">
64+
<XamlRuntime>$(DefaultXamlRuntime)</XamlRuntime>
65+
</Page>
66+
<Page Update="UI\ListControls\uiOccupancyChangesList_v1.xaml">
5867
<XamlRuntime>$(DefaultXamlRuntime)</XamlRuntime>
5968
</Page>
6069
<Page Update="UI\ListControls\uiDailyOccupancyChangesListHeader.xaml">
6170
<XamlRuntime>$(DefaultXamlRuntime)</XamlRuntime>
6271
</Page>
63-
<Page Update="UI\ListControls\uiDailyOccupancyChangesListItem.xaml">
72+
<Page Update="UI\ListControls\uiDailyOccupancyChangesListItem_v1.xaml">
6473
<XamlRuntime>$(DefaultXamlRuntime)</XamlRuntime>
6574
</Page>
6675
<Page Update="UI\ListControls\uiReservationListItem.xaml">

CloudbedsApp/CloudbedsDailyOperationsReportManager.DailyReport.cs renamed to CloudbedsApp/CloudbedsDailyOperationsReportManager_v1.DailyReport.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
/// <summary>
1010
/// </summary>
11-
internal partial class CloudbedsDailyOperationsReportManager
11+
internal partial class CloudbedsDailyOperationsReportManager_v1
1212
{
1313
/// <summary>
1414
/// Daily report for operations

CloudbedsApp/CloudbedsDailyOperationsReportManager.cs renamed to CloudbedsApp/CloudbedsDailyOperationsReportManager_v1.cs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
/// <summary>
1414
/// Manages daily operations report items
1515
/// </summary>
16-
internal partial class CloudbedsDailyOperationsReportManager
16+
internal partial class CloudbedsDailyOperationsReportManager_v1
1717
{
1818
public ICollection<DailyReport> DailyReports
1919
{ get {
@@ -29,8 +29,8 @@ public ICollection<DailyReport> DailyReports
2929
/// <param name="dateStart"></param>
3030
/// <param name="dateEnd"></param>
3131
/// <param name="reservationSet"></param>
32-
public CloudbedsDailyOperationsReportManager(DateTime dateStart, DateTime dateEnd,
33-
ICollection<CloudbedsReservationWithRooms> reservationSet)
32+
public CloudbedsDailyOperationsReportManager_v1(DateTime dateStart, DateTime dateEnd,
33+
ICollection<CloudbedsReservationWithRooms_v1> reservationSet)
3434
{
3535
_dailyReports = GenerateDailyReportSet(dateStart, dateEnd, reservationSet).AsReadOnly();
3636
}
@@ -81,7 +81,7 @@ public CsvDataGenerator GenerateCsvReport()
8181
/// <param name="dateEnd"></param>
8282
/// <param name="reservationSet"></param>
8383
/// <returns></returns>
84-
private List<DailyReport> GenerateDailyReportSet (DateTime dateStart, DateTime dateEnd, ICollection<CloudbedsReservationWithRooms> reservationSet)
84+
private List<DailyReport> GenerateDailyReportSet (DateTime dateStart, DateTime dateEnd, ICollection<CloudbedsReservationWithRooms_v1> reservationSet)
8585
{
8686
var outSet = new List<DailyReport>();
8787
var dateCurrent = dateStart.Date;
@@ -104,7 +104,7 @@ private List<DailyReport> GenerateDailyReportSet (DateTime dateStart, DateTime d
104104
/// <param name="dateCurrent"></param>
105105
/// <param name="reservationSet"></param>
106106
/// <returns></returns>
107-
private DailyReport GenerateDailyReportSet_SingleDate(DateTime dateTarget, ICollection<CloudbedsReservationWithRooms> reservationSet)
107+
private DailyReport GenerateDailyReportSet_SingleDate(DateTime dateTarget, ICollection<CloudbedsReservationWithRooms_v1> reservationSet)
108108
{
109109
int numCheckIns = 0;
110110
int numCheckInsWithUnassignedRooms = 0;
@@ -165,7 +165,7 @@ private DailyReport GenerateDailyReportSet_SingleDate(DateTime dateTarget, IColl
165165
/// <param name="thisReservation"></param>
166166
/// <returns></returns>
167167
/// <exception cref="NotImplementedException"></exception>
168-
private CheckInsInfo DateCheck_CalculateNumberForReservation_CheckIns(DateTime dateTarget, CloudbedsReservationWithRooms thisReservation)
168+
private CheckInsInfo DateCheck_CalculateNumberForReservation_CheckIns(DateTime dateTarget, CloudbedsReservationWithRooms_v1 thisReservation)
169169
{
170170

171171
//If it is canceleld, ignore it
@@ -181,7 +181,7 @@ private CheckInsInfo DateCheck_CalculateNumberForReservation_CheckIns(DateTime d
181181
foreach(var thisRoom in thisReservation.ReservationRooms)
182182
{
183183

184-
if(thisRoom.Room_Status != CloudbedsReservationRoom.RoomStatus_Cancelled)
184+
if(thisRoom.Room_Status != CloudbedsReservationRoom_v1.RoomStatus_Cancelled)
185185
{
186186
if (thisRoom.Room_CheckIn == dateTarget)
187187
{
@@ -212,7 +212,7 @@ private CheckInsInfo DateCheck_CalculateNumberForReservation_CheckIns(DateTime d
212212
/// <param name="thisReservation"></param>
213213
/// <returns></returns>
214214
/// <exception cref="NotImplementedException"></exception>
215-
private CheckOutsInfo DateCheck_CalculateNumberForReservation_CheckOuts(DateTime dateTarget, CloudbedsReservationWithRooms thisReservation)
215+
private CheckOutsInfo DateCheck_CalculateNumberForReservation_CheckOuts(DateTime dateTarget, CloudbedsReservationWithRooms_v1 thisReservation)
216216
{
217217
//If it is canceleld, ignore it
218218
if (thisReservation.Reservation_Status == CloudbedsReservationStatus.STATUS_CANCELED)
@@ -225,7 +225,7 @@ private CheckOutsInfo DateCheck_CalculateNumberForReservation_CheckOuts(DateTime
225225
var listRoomIds = new List<string>();
226226
foreach (var thisRoom in thisReservation.ReservationRooms)
227227
{
228-
if (thisRoom.Room_Status != CloudbedsReservationRoom.RoomStatus_Cancelled)
228+
if (thisRoom.Room_Status != CloudbedsReservationRoom_v1.RoomStatus_Cancelled)
229229
{
230230

231231
if (thisRoom.Room_CheckOut == dateTarget)
@@ -257,7 +257,7 @@ private CheckOutsInfo DateCheck_CalculateNumberForReservation_CheckOuts(DateTime
257257
/// <param name="thisReservation"></param>
258258
/// <returns></returns>
259259
/// <exception cref="NotImplementedException"></exception>
260-
private int DateCheck_CalculateNumberForReservation_Stayovers(DateTime compareDate, CloudbedsReservationWithRooms thisReservation)
260+
private int DateCheck_CalculateNumberForReservation_Stayovers(DateTime compareDate, CloudbedsReservationWithRooms_v1 thisReservation)
261261
{
262262
//If it is canceleld, ignore it
263263
if (thisReservation.Reservation_Status == CloudbedsReservationStatus.STATUS_CANCELED)
@@ -270,7 +270,7 @@ private int DateCheck_CalculateNumberForReservation_Stayovers(DateTime compareDa
270270
foreach (var thisRoom in thisReservation.ReservationRooms)
271271
{
272272
//If it is NOT a cacelled reservation
273-
if (thisRoom.Room_Status != CloudbedsReservationRoom.RoomStatus_Cancelled)
273+
if (thisRoom.Room_Status != CloudbedsReservationRoom_v1.RoomStatus_Cancelled)
274274
{
275275

276276
//if ((compareDate > thisRoom.Room_CheckIn) &&

CloudbedsApp/CloudbedsDailyOperationsReportManager_ResRoomDetails.DailyReportSet.cs renamed to CloudbedsApp/CloudbedsDailyOperationsReportManager_v1_ResRoomDetails.DailyReportSet.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
/// <summary>
1010
/// </summary>
11-
internal partial class CloudbedsDailyOperationsReportManager_ResRoomDetails
11+
internal partial class CloudbedsDailyOperationsReportManager_v1_ResRoomDetails
1212
{
1313

1414
/// <summary>
@@ -21,13 +21,13 @@ public class DailyReportSet
2121
/// <summary>
2222
/// The sub reservations active on this date
2323
/// </summary>
24-
readonly IReadOnlyCollection<CloudbedsReservationRoom> _resRoomsForDate;
24+
readonly IReadOnlyCollection<CloudbedsReservationRoom_v1> _resRoomsForDate;
2525

2626

2727
/// <summary>
2828
/// All the sub reservations that intersect with this date
2929
/// </summary>
30-
public IReadOnlyCollection<CloudbedsReservationRoom> SubReservations
30+
public IReadOnlyCollection<CloudbedsReservationRoom_v1> SubReservations
3131
{
3232
get
3333
{
@@ -42,10 +42,10 @@ public IReadOnlyCollection<CloudbedsReservationRoom> SubReservations
4242
/// <param name="reservationRoomsForDate"></param>
4343
public DailyReportSet(
4444
DateTime date,
45-
ICollection<CloudbedsReservationRoom> reservationRoomsForDate)
45+
ICollection<CloudbedsReservationRoom_v1> reservationRoomsForDate)
4646
{
4747
this.Date = date;
48-
_resRoomsForDate = new List<CloudbedsReservationRoom>(reservationRoomsForDate).AsReadOnly();
48+
_resRoomsForDate = new List<CloudbedsReservationRoom_v1>(reservationRoomsForDate).AsReadOnly();
4949
}
5050
}
5151
}

CloudbedsApp/CloudbedsDailyOperationsReportManager_ResRoomDetails.cs renamed to CloudbedsApp/CloudbedsDailyOperationsReportManager_v1_ResRoomDetails.cs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@
99
using System.Text;
1010
using System.Threading;
1111
using System.Web;
12-
using static CloudbedsDailyOperationsReportManager;
12+
using static CloudbedsDailyOperationsReportManager_v1;
1313

1414
/// <summary>
1515
/// Produces a more detailed report showing every reservation that intersects with a given date
1616
/// Has a row for every [date]x[sub-reservation]
1717
/// </summary>
18-
internal partial class CloudbedsDailyOperationsReportManager_ResRoomDetails
18+
internal partial class CloudbedsDailyOperationsReportManager_v1_ResRoomDetails
1919
{
2020
private readonly ReadOnlyCollection<DailyReportSet> _dateRangeReportSet;
2121

@@ -26,8 +26,8 @@ internal partial class CloudbedsDailyOperationsReportManager_ResRoomDetails
2626
/// <param name="dateStart"></param>
2727
/// <param name="dateEnd"></param>
2828
/// <param name="reservationSet"></param>
29-
public CloudbedsDailyOperationsReportManager_ResRoomDetails(DateTime dateStart, DateTime dateEnd,
30-
ICollection<CloudbedsReservationWithRooms> reservationSet)
29+
public CloudbedsDailyOperationsReportManager_v1_ResRoomDetails(DateTime dateStart, DateTime dateEnd,
30+
ICollection<CloudbedsReservationWithRooms_v1> reservationSet)
3131
{
3232
_dateRangeReportSet = GenerateDateRangeReportSet(dateStart, dateEnd, reservationSet).AsReadOnly();
3333
}
@@ -97,7 +97,7 @@ public CsvDataGenerator GenerateCsvReport(string prefixResValues = "res:", strin
9797
/// <param name="date"></param>
9898
/// <param name="subReservation"></param>
9999
/// <returns></returns>
100-
private static string helper_GenerateStateStateForDate(DateTime date, CloudbedsReservationRoom subReservation)
100+
private static string helper_GenerateStateStateForDate(DateTime date, CloudbedsReservationRoom_v1 subReservation)
101101
{
102102
if (date < subReservation.Room_CheckIn)
103103
{
@@ -129,7 +129,7 @@ private static string helper_GenerateStateStateForDate(DateTime date, CloudbedsR
129129
/// <param name="dateEnd"></param>
130130
/// <param name="reservationSet"></param>
131131
/// <returns></returns>
132-
private List<DailyReportSet> GenerateDateRangeReportSet(DateTime dateStart, DateTime dateEnd, ICollection<CloudbedsReservationWithRooms> reservationSet)
132+
private List<DailyReportSet> GenerateDateRangeReportSet(DateTime dateStart, DateTime dateEnd, ICollection<CloudbedsReservationWithRooms_v1> reservationSet)
133133
{
134134
var outSet = new List<DailyReportSet>();
135135
var dateCurrent = dateStart.Date;
@@ -156,9 +156,9 @@ private List<DailyReportSet> GenerateDateRangeReportSet(DateTime dateStart, Date
156156
/// <param name="dateCurrent"></param>
157157
/// <param name="reservationSet"></param>
158158
/// <returns></returns>
159-
private DailyReportSet GenerateDailyReportSet_SingleDate(DateTime dateTarget, ICollection<CloudbedsReservationWithRooms> reservationSet)
159+
private DailyReportSet GenerateDailyReportSet_SingleDate(DateTime dateTarget, ICollection<CloudbedsReservationWithRooms_v1> reservationSet)
160160
{
161-
List<CloudbedsReservationRoom> outputSetOfSubReservation = new List<CloudbedsReservationRoom>();
161+
List<CloudbedsReservationRoom_v1> outputSetOfSubReservation = new List<CloudbedsReservationRoom_v1>();
162162
//============================================================================
163163
//Look at each reservation in the set and see if it effects this date.
164164
//Reservations may have multiple rooms with different check in/out dates
@@ -182,7 +182,7 @@ private DailyReportSet GenerateDailyReportSet_SingleDate(DateTime dateTarget, IC
182182
/// <param name="appendTo_subReservations"></param>
183183
/// <param name="thisReservation"></param>
184184
/// <exception cref="NotImplementedException"></exception>
185-
private void helper_addSubReservationsWithIntersectingDates(DateTime dateTarget, List<CloudbedsReservationRoom> appendTo_subReservations, CloudbedsReservationWithRooms thisReservation)
185+
private void helper_addSubReservationsWithIntersectingDates(DateTime dateTarget, List<CloudbedsReservationRoom_v1> appendTo_subReservations, CloudbedsReservationWithRooms_v1 thisReservation)
186186
{
187187
foreach(var thisSubReservation in thisReservation.ReservationRooms)
188188
{
@@ -196,7 +196,7 @@ private void helper_addSubReservationsWithIntersectingDates(DateTime dateTarget,
196196
/// <param name="dateTarget"></param>
197197
/// <param name="thisSubReservation"></param>
198198
/// <param name="appendTo_subReservations"></param>
199-
private void helper_addSubReservationsWithIntersectingDates_subReservation(DateTime dateTarget, CloudbedsReservationRoom thisSubReservation, List<CloudbedsReservationRoom> appendTo_subReservations)
199+
private void helper_addSubReservationsWithIntersectingDates_subReservation(DateTime dateTarget, CloudbedsReservationRoom_v1 thisSubReservation, List<CloudbedsReservationRoom_v1> appendTo_subReservations)
200200
{
201201
//If sub reservation is BEFORE the date, do nothing
202202
if(dateTarget < thisSubReservation.Room_CheckIn)

CloudbedsApp/CloudbedsDailyOperationsReportManager_helpers.cs renamed to CloudbedsApp/CloudbedsDailyOperationsReportManager_v1_helpers.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
/// <summary>
1010
/// </summary>
11-
internal partial class CloudbedsDailyOperationsReportManager
11+
internal partial class CloudbedsDailyOperationsReportManager_v1
1212
{
1313

1414
struct CheckInsInfo
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+

2+
using System;
3+
using System.IO;
4+
using System.Text;
5+
using System.Threading;
6+
using System.Web;
7+
using System.Collections.Generic;
8+
9+
/// <summary>
10+
/// </summary>
11+
internal partial class CloudbedsDailyOperationsReportManager_v2
12+
{
13+
/// <summary>
14+
/// Daily report for operations
15+
/// </summary>
16+
public class DailyReport
17+
{
18+
public readonly DateTime Date;
19+
public readonly int NumberCheckIns;
20+
public readonly int NumberStayOvers;
21+
public readonly int NumberCheckOuts;
22+
public readonly int NumberCheckIns_RoomNotAssigned;
23+
public readonly int NumberRoomTurnoversRequired;
24+
25+
private readonly ICollection<string> _checkInRoomIds;
26+
private readonly ICollection<string> _checkOutRoomIds;
27+
public DailyReport(
28+
DateTime date,
29+
int numberCheckIns,
30+
int numberStayOvers,
31+
int numberCheckOuts,
32+
int numCheckInsWithUnassignedRooms,
33+
ICollection<string> checkInRoomIds,
34+
ICollection<string> checkOutsRoomIds)
35+
{
36+
this.Date = date;
37+
this.NumberCheckIns = numberCheckIns;
38+
this.NumberStayOvers = numberStayOvers;
39+
this.NumberCheckOuts = numberCheckOuts;
40+
41+
this.NumberCheckIns_RoomNotAssigned = numCheckInsWithUnassignedRooms;
42+
_checkInRoomIds = checkInRoomIds;
43+
_checkOutRoomIds = checkOutsRoomIds;
44+
45+
this.NumberRoomTurnoversRequired = CalculateSetOverlap(checkInRoomIds, checkOutsRoomIds);
46+
}
47+
48+
/// <summary>
49+
/// Looks for overlap
50+
/// </summary>
51+
/// <param name="set1"></param>
52+
/// <param name="set2"></param>
53+
/// <returns></returns>
54+
private static int CalculateSetOverlap(ICollection<string> set1, ICollection<string> set2)
55+
{
56+
//Empty set?
57+
if ((set1 == null) || (set1.Count == 0))
58+
{ return 0; }
59+
60+
61+
//Empty set?
62+
if ((set2 == null) || (set2.Count == 0))
63+
{ return 0; }
64+
65+
int overlap = 0;
66+
foreach(var thisMember_set1 in set1)
67+
{
68+
69+
if(set2.Contains(thisMember_set1))
70+
{
71+
overlap++;
72+
}
73+
}
74+
75+
return overlap;
76+
}
77+
}
78+
}

0 commit comments

Comments
 (0)