Skip to content

Commit 371bc1e

Browse files
author
Ivo Salmre
committed
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

File tree

56 files changed

+3571
-205
lines changed

Some content is hidden

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

56 files changed

+3571
-205
lines changed

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)