package com.imt.intimamedia.commands.patient { import com.adobe.cairngorm.control.CairngormEvent; import com.imt.flex.cairngormExtended.command.SuperCommand; import com.imt.intimamedia.business.PatientDelegate; import com.imt.intimamedia.events.patient.SearchAppointmentsEvent; import com.imt.intimamedia.model.ApplicationModelLocator; import com.imt.intimamedia.views.common.ImtToaster; import com.imt.intimamedia.views.physician.patient.PatientFile; import com.imt.intimamedia.vo.AppointmentVo; import com.imt.intimamedia.vo.ReturnObjectVo; import com.imt.intimamedia.vo.TreatmentVo; import mx.collections.ArrayCollection; import mx.controls.Alert; import mx.core.Application; import mx.resources.ResourceManager; import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; /** * Commande de recherche d'un patient */ public class SearchAppointmentsCommand extends SuperCommand { public var _dispatcher : PatientFile; private var _treatmentList : ArrayCollection = new ArrayCollection(); private var _criteria : String; /** * Excecution de la commande * * @param event Evénement de type CairngormEvent * @return void */ override public function execute( event : CairngormEvent ) : void { super.execute( event ); var delegate : PatientDelegate = new PatientDelegate( this ); var searchAppointmentsEvent : SearchAppointmentsEvent = SearchAppointmentsEvent( event ); delegate.searchAppointments( searchAppointmentsEvent.criteria, ApplicationModelLocator.getInstance().token ); _criteria = searchAppointmentsEvent.criteria; } /** * Résultat de la commande * * @param result Un objet * @return void */ override public function result( result : Object ) : void { var resultEvent : ResultEvent = ResultEvent( result ); var returnObjectVo : ReturnObjectVo = resultEvent.result as ReturnObjectVo; ApplicationModelLocator.getInstance().token = returnObjectVo.token; ApplicationModelLocator.getInstance().listOfAppointments.source = returnObjectVo.value as Array; ApplicationModelLocator.getInstance().appointmentNumber = (returnObjectVo.value as Array).length; ApplicationModelLocator.getInstance().appointmentSelected = ApplicationModelLocator.getInstance().listOfAppointments.getItemAt(ApplicationModelLocator.getInstance().appointmentNumber-1) as AppointmentVo; for each (var appointmentVo : AppointmentVo in ApplicationModelLocator.getInstance().listOfAppointments) { _treatmentList.source = appointmentVo.treatments; appointmentVo.treatmentCollection.removeAll(); for each (var treatmentVo : TreatmentVo in _treatmentList) appointmentVo.treatmentCollection.addItem(treatmentVo); } if (_criteria.length > 0) { _dispatcher = this.getDispatcher(this); _dispatcher.updatePatientFile(); } //ApplicationModelLocator.getInstance().application.menuPhysician.patient.patientFile.dg.enabled = true; super.result( result ); } /** * Résultat de la commande * * @param result Un objet * @return void */ override public function fault( fault : Object ) : void { super.fault( fault ); if (( fault as FaultEvent ).fault.faultString == ApplicationModelLocator.getInstance().ERROR_SESSION ) { ApplicationModelLocator.displaySessionExpired( fault as FaultEvent ); } else { var toastMessage : ImtToaster = new ImtToaster(); toastMessage.titleMessage = ResourceManager.getInstance().getString('labels', 'error.title'); toastMessage.message = ResourceManager.getInstance().getString('labels', 'error.searchAppointments') + " (" + ResourceManager.getInstance().getString('errors', ( fault as FaultEvent ).fault.faultString) +")"; toastMessage.level = ImtToaster.ERROR; ApplicationModelLocator.getInstance().toaster.toast( toastMessage ); } } } }