AirInv Logo  0.1.2
C++ Simulated Airline Inventory Management System library
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
FlightDateHelper.cpp
Go to the documentation of this file.
1 // //////////////////////////////////////////////////////////////////////
2 // Import section
3 // //////////////////////////////////////////////////////////////////////
4 // STL
5 #include <cassert>
6 // STDAIR
7 #include <stdair/basic/BasConst_Inventory.hpp>
8 #include <stdair/bom/BomManager.hpp>
9 #include <stdair/bom/FlightDate.hpp>
10 #include <stdair/bom/SegmentDate.hpp>
11 #include <stdair/bom/SegmentCabin.hpp>
12 #include <stdair/bom/LegCabin.hpp>
13 // AIRINV
17 
18 namespace AIRINV {
19 
20  // ////////////////////////////////////////////////////////////////////
22  updateBookingControls (stdair::FlightDate& ioFlightDate) {
23 
24  // Parse the segment-cabin list and build the pseudo bid price vector.
25  const stdair::SegmentDateList_T& lSDList =
26  stdair::BomManager::getList<stdair::SegmentDate> (ioFlightDate);
27  for (stdair::SegmentDateList_T::const_iterator itSD = lSDList.begin();
28  itSD != lSDList.end(); ++itSD) {
29  const stdair::SegmentDate* lSD_ptr = *itSD;
30  assert (lSD_ptr != NULL);
31 
32  //
33  const stdair::SegmentCabinList_T& lSCList =
34  stdair::BomManager::getList<stdair::SegmentCabin> (*lSD_ptr);
35  for (stdair::SegmentCabinList_T::const_iterator itSC = lSCList.begin();
36  itSC != lSCList.end(); ++itSC) {
37  stdair::SegmentCabin* lSC_ptr = *itSC;
38  assert (lSC_ptr != NULL);
39 
40  // Build the pseudo bid price vector for the segment-cabin.
42 
43  // Update the booking controls using the pseudo bid price vector.
46  }
47  }
48  }
49 
50  // ////////////////////////////////////////////////////////////////////
51  void FlightDateHelper::fillFromRouting(const stdair::FlightDate& iFlightDate){
52  const stdair::SegmentDateList_T& lSegmentDateList =
53  stdair::BomManager::getList<stdair::SegmentDate> (iFlightDate);
54 
55  // Browse the list of segment-dates and update each segment-date.
56  for (stdair::SegmentDateList_T::const_iterator itSegmentDate =
57  lSegmentDateList.begin();
58  itSegmentDate != lSegmentDateList.end(); ++itSegmentDate) {
59  stdair::SegmentDate* lCurrentSegmentDate_ptr = *itSegmentDate;
60  assert (lCurrentSegmentDate_ptr != NULL);
61  SegmentDateHelper::fillFromRouting (*lCurrentSegmentDate_ptr);
62  }
63  }
64 
65  // ////////////////////////////////////////////////////////////////////
67  updateAvailablityPool (const stdair::FlightDate& iFlightDate,
68  const stdair::CabinCode_T& iCabinCode){
69  const stdair::SegmentDateList_T& lSegmentDateList =
70  stdair::BomManager::getList<stdair::SegmentDate> (iFlightDate);
71  for (stdair::SegmentDateList_T::const_iterator itSegmentDate =
72  lSegmentDateList.begin(); itSegmentDate != lSegmentDateList.end();
73  ++itSegmentDate) {
74  const stdair::SegmentDate* lSegmentDate_ptr = *itSegmentDate;
75  assert (lSegmentDate_ptr != NULL);
76  stdair::SegmentCabin& lSegmentCabin =
77  stdair::BomManager::getObject<stdair::SegmentCabin> (*lSegmentDate_ptr,
78  iCabinCode);
79 
80  // Update the availability pool of the segment-cabin to the minimal
81  // availability pool of the member leg-cabins.
82  const stdair::LegCabinList_T& lLegCabinList =
83  stdair::BomManager::getList<stdair::LegCabin> (lSegmentCabin);
84  stdair::Availability_T lAvailabilityPool = stdair::MAXIMAL_AVAILABILITY;
85  for (stdair::LegCabinList_T::const_iterator itLegCabin =
86  lLegCabinList.begin();
87  itLegCabin != lLegCabinList.end(); ++itLegCabin) {
88  const stdair::LegCabin* lLegCabin_ptr = *itLegCabin;
89  assert (lLegCabin_ptr != NULL);
90  const stdair::Availability_T& lLegCabinAvailabilityPool =
91  lLegCabin_ptr->getAvailabilityPool();
92  if (lAvailabilityPool > lLegCabinAvailabilityPool) {
93  lAvailabilityPool = lLegCabinAvailabilityPool;
94  }
95  }
96  lSegmentCabin.setAvailabilityPool (lAvailabilityPool);
97  }
98  }
99 
100 }