public void TestSaveAppointment() { var item = new AppointmentReadModel() { Start = DateTimeOffset.UtcNow, End = DateTimeOffset.Now, AttendeeNames = "Jeff, Mike", Body = "appointment body", Organizer = "Jeff", Subject = "Test Subject", TimeZoneOffset = 5 }; Func <ReadModelContext> contextFactory = () => new ReadModelContext(); IReadModelStorage <AppointmentReadModel> repo = new SqlReadModelStorage(contextFactory); repo.Save(item).Wait(); var task = repo.GetAll(0, 1); task.Wait(); var model = task.Result.SingleOrDefault(); Assert.AreEqual(model.Start, item.Start); }
public async Task CreateAppointment(AppointmentReadModel model) { _logger.DebugWithContext("Adding new appointment to the DB", model); var collection = _db.GetCollection <AppointmentReadModel>("appointments"); await collection.InsertOneAsync(model); }
public async Task Consume(ConsumeContext <IAppointmentFinalizedEvent> context) { var @event = context.Message; var appointment = new AppointmentReadModel(); appointment = _redisService.HashGet <AppointmentReadModel>($"{appointment.RedisKey}", $"{@event.AggregateId}", CommandFlags.PreferMaster); appointment.State = @event.State; appointment.Version = @event.Version; appointment.MedicalHistory = @event.MedicalHistory; appointment.Diagnostic = @event.Diagnostic; _redisService.HashSet($"{appointment.RedisKey}", $"{@event.AggregateId}", appointment, When.Always, CommandFlags.PreferMaster); }
public async Task <Unit> Handle(EventRequest <AppointmentCreatedEvent> request, CancellationToken cancellationToken) { _logger.DebugWithContext($"Handling event {nameof(AppointmentCreatedEvent)} for Aggregate {nameof(Appointment)}", request.Event); var model = new AppointmentReadModel() { Title = request.Event.Title, StartTime = request.Event.StartTime, Duration = request.Event.Duration.ToString(), Id = request.Event.AggregateId }; await _appointmentRepo.CreateAppointment(model); return(new Unit()); }
public void Handle(AppointmentCreated evt) { Debug.WriteLine("AppointmentEventHandler Handle " + evt.ToString()); AppointmentReadModel readModel = new AppointmentReadModel(); readModel.Id = evt.Appointment.Id; readModel.Body = evt.Appointment.Body; readModel.Subject = evt.Appointment.Subject; readModel.Start = evt.Appointment.Start; readModel.End = evt.Appointment.End; readModel.Organizer = evt.Appointment.Organizer; readModel.TimeZoneOffset = evt.Appointment.TimeZoneOffset; readModel.AttendeeNames = String.Concat(", ", evt.Appointment.Attendees.Select(a => a.Name)); var task = this.storage.Save(readModel); task.Wait(); }
public async Task Consume(ConsumeContext <IAppointmentCreatedEvent> context) { var @event = context.Message; var appointment = new AppointmentReadModel { Id = @event.AggregateId, CalendarId = @event.CalendarId, DoctorId = @event.DoctorId, Version = @event.Version, OwnerFamilyName = @event.OwnerFamilyName, OwnerGivenName = @event.OwnerGivenName, OwnerId = @event.OwnerId, PetId = @event.PetId, PetName = @event.PetName, StartingTime = @event.StartingTime, State = @event.State }; _redisService.HashSet($"{appointment.RedisKey}", $"{appointment.Id}", appointment, When.Always, CommandFlags.PreferMaster); }