/// <summary> /// Initialised when user logs in /// I probably would have created a container module for this /// </summary> public static UserSessionState Initialise(User user, IRepository <User, UserPet> userRepository, IRepository <Pet, PetMetric> petRepository, IRepository <Animal, AnimalMetric> animalRepository, IRepository <Interaction, MetricInteraction> interactionRepository, IConfiguration config, UserSessionBuilder userSessionBuilder, IContainer container) { //Validator var petRegistrationValidator = new PetRegistrationValidator(animalRepository, petRepository, userRepository); var petCareActionValidator = new PetCareActionValidator(petRepository, interactionRepository); var validator = new UserSessionRequestValidator(user, userRepository, petRepository, petRegistrationValidator, petCareActionValidator); //Persisters var petPersister = container.RecordPersister <Pet>(); var userPetPersister = container.RecordPersister <UserPet>(); var petMetricPersister = container.RecordPersister <PetMetric>(); //Processor var sessionRequestProcessor = new SessionRequestProcessor(user, userRepository, petRepository, interactionRepository, petPersister, userPetPersister, petMetricPersister, userSessionBuilder); return(new UserSessionState(user, userRepository, petRepository, validator, sessionRequestProcessor)); }
public SessionRequestProcessor(User user, IRepository <User, UserPet> users, IRepository <Pet, PetMetric> pets, IRepository <Interaction, MetricInteraction> interactionRepository, IRecordPersister <Pet> petPersister, IRecordPersister <UserPet> userPetPersister, IRecordPersister <PetMetric> petMetricPersister, UserSessionBuilder userSessionBuilder) { _user = user; _users = users; _pets = pets; _interactionRepository = interactionRepository; _petPersister = petPersister; _userPetPersister = userPetPersister; _petMetricPersister = petMetricPersister; _userSessionBuilder = userSessionBuilder; }