public void RequestAppointmentSetOfADay(Action <FixedAppointmentSet> appointmentSetAvailable, AggregateIdentifier id, Action <string> errorCallback) { if (cachedDayReadmodels.ContainsKey(id)) { var readModel = cachedDayReadmodels[id]; appointmentSetAvailable(new FixedAppointmentSet(readModel.Identifier, readModel.AggregateVersion, readModel.Appointments)); return; } connectionService.RequestAppointmentsOfADay( (appointments, aggregateId, aggregateVersion) => { medicalPracticeRepository.RequestMedicalPractice( practice => { var newReadModel = new AppointmentsOfADayReadModel(eventBus, patientsRepository, labelRepository, practice, appointments, aggregateId, aggregateVersion, errorCallback); if (!cachedDayReadmodels.ContainsKey(aggregateId)) { cachedDayReadmodels.Add(aggregateId, newReadModel); } appointmentSetAvailable(new FixedAppointmentSet(newReadModel.Identifier, newReadModel.AggregateVersion, newReadModel.Appointments)); }, aggregateId.MedicalPracticeId, aggregateId.PracticeVersion, errorCallback ); }, id.Date, id.MedicalPracticeId, errorCallback ); }
public void RequestLastestReadModelVersion(Action <uint> readModelVersionAvailable, AggregateIdentifier id, Action <string> errorCallback) { if (cachedDayReadmodels.ContainsKey(id)) { readModelVersionAvailable(cachedDayReadmodels[id].AggregateVersion); return; } connectionService.RequestAppointmentsOfADay( (appointments, aggregateId, aggregateVersion) => { medicalPracticeRepository.RequestMedicalPractice( practice => { var newReadModel = new AppointmentsOfADayReadModel(eventBus, patientsRepository, labelRepository, practice, appointments, aggregateId, aggregateVersion, errorCallback); if (!cachedDayReadmodels.ContainsKey(aggregateId)) { cachedDayReadmodels.Add(aggregateId, newReadModel); } readModelVersionAvailable(cachedDayReadmodels[id].AggregateVersion); }, aggregateId.MedicalPracticeId, aggregateId.PracticeVersion, errorCallback ); }, id.Date, id.MedicalPracticeId, errorCallback ); }