public async Task <IResult <IMessageOutput> > Handle(TreatmentSessionInput input, CancellationToken cancellationToken) { var validationResult = Validator.Validate(input); if (validationResult.Errors.Count > 0) { return(new Result <IMessageOutput>(validationResult.Errors)); } var patient = await PatientRepository.SingleOrDefaultAsync(p => p.ReferenceId == input.PatientReferenceId, cancellationToken); var dentalTeam = await DentalTeamRepository.SingleOrDefaultAsync(dt => dt.ReferenceId == input.DentalTeamReferenceId, cancellationToken); var treatment = await TreatmentRepository.SingleOrDefaultAsync(t => t.ReferenceId == input.TreatmentReferenceId, cancellationToken); var treatmentSession = new TreatmentSession() { PatientId = patient.Id, DentalTeamId = dentalTeam.Id, TreatmentId = treatment.Id, Start = input.Start.Value, End = input.End.Value }; await TreatmentSessionRepository.AddAsync(treatmentSession, cancellationToken); await UoW.SaveAsync(cancellationToken); return(new Result <IMessageOutput>( value: new MessageOutput("Treatment Session successfully created."), type: ResultType.Created )); }
private TreatmentSession CreateTreatmentSession( Guid patientId, Guid dentalTeamId, Guid treatmentId, DateTimeOffset start, DateTimeOffset end, TreatmentSessionStatus status) { var treatmentSession = new TreatmentSession { PatientId = patientId, DentalTeamId = dentalTeamId, TreatmentId = treatmentId, Start = start, End = end, Status = status }; ServiceProvider.GetRequiredService <IWriteRepository <TreatmentSession> >() .AddAsync(treatmentSession, default) .GetAwaiter() .GetResult(); ServiceProvider.GetRequiredService <IUnitOfWork>().Save(); return(ServiceProvider.GetRequiredService <IReadRepository <TreatmentSession> >() .AsNoTracking() .Include(ts => ts.Patient) .Include(ts => ts.DentalTeam) .Include(ts => ts.Treatment) .FirstOrDefault()); }