public override IReadOnlyCollection <ServiceBase> GetServices() { var primaryService = TherapySession.PrimaryService; var additionalServices = AppointmentAdditionalServices .Select(join => join.AdditionalService) .Concat(new ServiceBase[] { primaryService }) .ToArray(); return(additionalServices); }
public void SetAdditionalServices(IEnumerable <AdditionalService> newAdditionalServices) { var existingAdditionalServices = AppointmentAdditionalServices .Select(service => service.AdditionalService) .ToArray(); var removedAppointmentServices = existingAdditionalServices.Except(newAdditionalServices) .Select(additionalService => AppointmentAdditionalServices.Single(join => join.AdditionalService.Id == additionalService.Id)) .ToArray(); var addedServices = newAdditionalServices.Except(existingAdditionalServices) .Select(additionalService => new AppointmentAdditionalService(additionalService, this)) .ToArray(); AppointmentAdditionalServices.RemoveRange(removedAppointmentServices); AppointmentAdditionalServices.AddRange(addedServices); }