package tripvisModel.controllers { import flash.events.EventDispatcher; import mx.collections.ArrayCollection; import tripvisModel.MoneyAmount; import tripvisModel.SimpleTripItem; import tripvisModel.TripItem; [Event(name="tripItemAdded", type="tripvisModel.controllers.BasketControllerEvent")] [Event(name="tripItemsCleared", type="tripvisModel.controllers.BasketControllerEvent")] [Event(name="tripItemRemoved", type="tripvisModel.controllers.BasketControllerEvent")] [Event(name="tripItemUpdated", type="tripvisModel.controllers.BasketControllerEvent")] public class BasketController extends EventDispatcher { internal var _basketTripItems: ArrayCollection = new ArrayCollection(); public function BasketController() { } public function addSimpleTripItem(simpleTripItem: SimpleTripItem): void { var tripItem: TripItem = new TripItem(simpleTripItem); this._basketTripItems.addItem(tripItem); dispatchEvent( new BasketControllerEvent('tripItemAdded', tripItem) ); } public function removeTripItem(tripItem: TripItem): void { _basketTripItems.removeItemAt( _basketTripItems.getItemIndex(tripItem) ); dispatchEvent( new BasketControllerEvent('tripItemRemoved', tripItem) ); } public function clearTripItems(): void { _basketTripItems.removeAll(); dispatchEvent( new BasketControllerEvent('tripItemsCleared') ); } public function updateTripItemStartDate(tripItem: TripItem, startDate: Date): void { tripItem.timePeriod.startDate = startDate; dispatchEvent( new BasketControllerEvent('tripItemUpdated', tripItem) ); } public function updateTripItemEndDate(tripItem: TripItem, endDate: Date): void { tripItem.timePeriod.endDate = endDate; dispatchEvent( new BasketControllerEvent('tripItemUpdated', tripItem) ); } public function updateTripItemCost(tripItem: TripItem, moneyAmount: MoneyAmount): void { tripItem.cost.amount = moneyAmount.amount; tripItem.cost.currency = moneyAmount.currency; dispatchEvent( new BasketControllerEvent('tripItemUpdated', tripItem) ); } } }