Esempio n. 1
0
        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);
        }
Esempio n. 4
0
        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);
        }