private List <AggregateRoot> DeleteAllAssociatedSessionAndUnassignFormateursAndLieux(Guid formationId)
        {
            var aggregatesToPublish = new List <AggregateRoot>();
            var trainersUnassigner  = new Unassigner <Trainer, TrainerNotExistsException>(EventBus);
            var locationUnassigner  = new Unassigner <Location, LocationNotExistsException>(EventBus);

            var allSessions = _sessionQueries.GetAll(formationId);

            foreach (var sessionResult in allSessions)
            {
                trainersUnassigner.Unassign(sessionResult.TrainerId, sessionResult.SessionStart, sessionResult.Duration);
                locationUnassigner.Unassign(sessionResult.LocationId, sessionResult.SessionStart, sessionResult.Duration);

                var session = GetAggregate <Session>(sessionResult.SessionId);
                session.Delete();
                aggregatesToPublish.Add(session);
            }

            aggregatesToPublish.AddRange(trainersUnassigner.GetUnassignedAggregates());
            aggregatesToPublish.AddRange(locationUnassigner.GetUnassignedAggregates());

            return(aggregatesToPublish);
        }
 public CardAssignment(AssignedBehavior use, Unassigner unassigner)
 {
     this.unassigner = unassigner;
     this.use        = use;
 }