private void Initialize(SaveMechanicInputDto mechanic, EntityDependency[] dependencies) { RegisterCommandRepositoryFactory <Mechanic>(() => new MechanicCommandRepository()); RootEntity = new Mechanic { Id = mechanic.MechanicId, Name = mechanic.Name }; Enqueue(new SaveEntityCommandOperation <Mechanic>(RootEntity, dependencies)); Enqueue(new DeleteLinksCommandOperation <Mechanic>(RootEntity, "UnlinkVehiclesFromMechanic")); if (mechanic.Vehicles?.Any() == true) { foreach (var dto in mechanic.Vehicles) { ILinkedAggregateCommandOperation operation; if (dto is CarInputDto) { operation = new AddLinkedAggregateCommandOperation <Mechanic, SaveCarCommandAggregate, CarInputDto>( RootEntity, (CarInputDto)dto, new EntityDependency[] { new EntityDependency { Entity = RootEntity, Selector = "Vehicles" } } ); Enqueue(operation); } else if (dto is TruckInputDto) { operation = new AddLinkedAggregateCommandOperation <Mechanic, SaveTruckCommandAggregate, TruckInputDto>( RootEntity, (TruckInputDto)dto, new EntityDependency[] { new EntityDependency { Entity = RootEntity, Selector = "Vehicles" } } ); Enqueue(operation); } else if (dto is VehicleInputDto) { operation = new AddLinkedAggregateCommandOperation <Mechanic, SaveVehicleCommandAggregate, VehicleInputDto>( RootEntity, (VehicleInputDto)dto, new EntityDependency[] { new EntityDependency { Entity = RootEntity, Selector = "Vehicles" } } ); Enqueue(operation); } else { throw new NotImplementedException(); } } } }
public SaveMechanicCommandAggregate(SaveMechanicInputDto mechanic, EntityDependency[] dependencies = null) : base(new DomainFramework.DataAccess.RepositoryContext(MechanicServicesSeveralVehiclesConnectionClass.GetConnectionName())) { Initialize(mechanic, dependencies); }