Exemplo n.º 1
0
        public override void Given()
        {
            expectedApiResult = new RegistrationDetails
            {
                ProfileId     = 1,
                Uln           = 1234567890,
                Firstname     = "John",
                Lastname      = "Smith",
                DateofBirth   = DateTime.UtcNow,
                ProviderName  = "Test Provider",
                ProviderUkprn = 1234567,
                PathwayName   = "Pathway",
                PathwayLarId  = "7654321",
                Specialisms   = new List <SpecialismDetails> {
                    new SpecialismDetails {
                        Code = "2345678", Name = "Specialism1"
                    }, new SpecialismDetails {
                        Code = "55567", Name = "Specialism2"
                    }
                },
                AcademicYear = 2020,
                Status       = RegistrationPathwayStatus.Active
            };

            InternalApiClient.GetRegistrationDetailsAsync(AoUkprn, ProfileId).Returns(expectedApiResult);
        }
Exemplo n.º 2
0
        public void ShouldUpdateDraftApprenticeshipApplicationDetails()
        {
            var newRegistrationDetails = new RegistrationDetails
            {
                EmailAddress = "*****@*****.**"
            };

            var candidateReadRepository = new Mock <ICandidateReadRepository>();

            candidateReadRepository.Setup(crr => crr.Get(It.IsAny <Guid>())).Returns(new Candidate {
                RegistrationDetails = newRegistrationDetails
            });
            var getCandidateApplicationsStrategy = new Mock <IGetCandidateApprenticeshipApplicationsStrategy>();

            getCandidateApplicationsStrategy.Setup(gca => gca.GetApplications(It.IsAny <Guid>(), true))
            .Returns(new[] { new ApprenticeshipApplicationSummary {
                                 Status = ApplicationStatuses.Draft
                             } });
            var apprenticeshipApplicationReadRepository = new Mock <IApprenticeshipApplicationReadRepository>();

            apprenticeshipApplicationReadRepository.Setup(
                aprr => aprr.GetForCandidate(It.IsAny <Guid>(), It.IsAny <int>(), false))
            .Returns(new ApprenticeshipApplicationDetail());
            var apprenticeshipApplicationWriteRepository = new Mock <IApprenticeshipApplicationWriteRepository>();

            var saveCandidateStrategy = new SaveCandidateStrategyBuilder().With(candidateReadRepository).With(getCandidateApplicationsStrategy).With(apprenticeshipApplicationReadRepository).With(apprenticeshipApplicationWriteRepository).Build();

            saveCandidateStrategy.SaveCandidate(new Candidate());

            apprenticeshipApplicationWriteRepository.Verify(
                aawr =>
                aawr.Save(It.Is <ApprenticeshipApplicationDetail>(a => a.CandidateDetails.EmailAddress == newRegistrationDetails.EmailAddress)));
        }
        public override void Given()
        {
            var profileId = 1;
            var uln       = 1234567890;

            ViewModel = new ChangeLearnersNameViewModel {
                ProfileId = profileId, Firstname = reqFirstName, Lastname = reqLastName
            };

            mockRegDetails = new RegistrationDetails
            {
                Firstname = existingFirstName,
                Lastname  = existingLastName,
                Uln       = uln,
                ProfileId = profileId,
            };

            InternalApiClient.GetRegistrationDetailsAsync(AoUkprn, ViewModel.ProfileId, RegistrationPathwayStatus.Active)
            .Returns(mockRegDetails);

            InternalApiClient.UpdateRegistrationAsync(Arg.Is <ManageRegistration>
                                                          (x => x.Uln == mockRegDetails.Uln &&
                                                          x.ProfileId == mockRegDetails.ProfileId &&
                                                          x.FirstName == ViewModel.Firstname &&
                                                          x.LastName == ViewModel.Lastname))
            .Returns(true);
        }
        public void ResolveDifferentObjectYieldsDifferentObjects()
        {
            var details1 = new RegistrationDetails
            {
                RegisteredType = typeof(ISimpleInterface),
                Instructions   = new BuildDetails()
            };

            var details2 = new RegistrationDetails
            {
                RegisteredType = typeof(ILifetimeManager),
                Instructions   = new BuildDetails()
            };

            var moqBuilder = new Mock <IObjectConstructor>();

            moqBuilder.Setup(t => t.Build(details1.Instructions)).Returns(new SimpleClass());
            moqBuilder.Setup(t => t.Build(details2.Instructions)).Returns(new TransientLifetimeManager());

            ILifetimeManager manager = new SingletonLifetimeManager(moqBuilder.Object);
            var obj1 = manager.CreateType(details1);
            var obj2 = manager.CreateType(details2);

            Assert.NotEqual(obj1, obj2);
        }
        public RegistrationResult RegisterUser(RegistrationDetails registrationDetails)
        {
            var exists = _registrationRepository.DoesEmailAlreadyExist(registrationDetails.Email);

            if (exists)
            {
                return(new RegistrationResult {
                    Success = false, Message = "The Email is already registered"
                });
            }

            var hashed = _passwordHasher.CreateHash(registrationDetails.Password);

            registrationDetails.Password = hashed;

            var result = _registrationRepository.CreateUser(registrationDetails);

            return(result > 0
                ? new RegistrationResult {
                Success = true, Message = "Registration was successful"
            }
                : new RegistrationResult {
                Success = false, Message = "Registration was unsuccessful, please try again later"
            });
        }
        public void ResolveSameObjectTwiceYieldsSameObject()
        {
            var details1 = new RegistrationDetails
            {
                RegisteredType = typeof(ISimpleInterface),
                Instructions   = new BuildDetails()
            };

            var details2 = new RegistrationDetails
            {
                RegisteredType = typeof(ISimpleInterface),
                Instructions   = new BuildDetails()
            };

            var returnClass = new SimpleClass();

            var moqBuilder = new Mock <IObjectConstructor>();

            moqBuilder.Setup(t => t.Build(details1.Instructions)).Returns(returnClass);
            moqBuilder.Setup(t => t.Build(details2.Instructions)).Returns(returnClass);


            ILifetimeManager manager = new SingletonLifetimeManager(moqBuilder.Object);
            var obj1 = manager.CreateType(details1);
            var obj2 = manager.CreateType(details2);

            Assert.Equal(obj1, obj2);
        }
Exemplo n.º 7
0
        public override void Setup()
        {
            _tokenServiceClient = Substitute.For <ITokenServiceClient>();

            _configuration = new ResultsAndCertificationConfiguration
            {
                ResultsAndCertificationInternalApiSettings = new ResultsAndCertificationInternalApiSettings {
                    Uri = "http://tlevel.api.com"
                }
            };

            _mockHttpResult = new RegistrationDetails
            {
                ProfileId    = 1,
                Uln          = 1234567890,
                Firstname    = "John",
                Lastname     = "Smith",
                DateofBirth  = DateTime.UtcNow,
                ProviderName = "Test Provider (1234567)",
                PathwayName  = "Pathway (7654321)",
                Specialisms  = new List <SpecialismDetails> {
                    new SpecialismDetails {
                        Code = "2345678", Name = "Specialism1"
                    }, new SpecialismDetails {
                        Code = "55567", Name = "Specialism2"
                    }
                },
                AcademicYear = 2020,
                Status       = RegistrationPathwayStatus.Active
            };
        }
        public override void Given()
        {
            _coreCode         = "10000111";
            _providerUkprn    = 12345678;
            ApiClientResponse = true;

            ViewModel = new ReregisterViewModel
            {
                ReregisterProvider = new ReregisterProviderViewModel {
                    ProfileId = ProfileId, SelectedProviderUkprn = _providerUkprn.ToString()
                },
                ReregisterCore = new ReregisterCoreViewModel {
                    ProfileId = ProfileId, SelectedCoreCode = _coreCode
                },
                SpecialismQuestion = new ReregisterSpecialismQuestionViewModel {
                    HasLearnerDecidedSpecialism = false
                },
                ReregisterAcademicYear = new ReregisterAcademicYearViewModel {
                    SelectedAcademicYear = "2020"
                }
            };

            mockApiClientResponse = new RegistrationDetails
            {
                ProfileId     = 1,
                Uln           = Uln,
                ProviderUkprn = _providerUkprn,
                PathwayLarId  = "34567111",
            };

            Loader = new RegistrationLoader(Mapper, Logger, InternalApiClient, BlobStorageService);

            InternalApiClient.GetRegistrationDetailsAsync(AoUkprn, ProfileId, RegistrationPathwayStatus.Withdrawn).Returns(mockApiClientResponse);
            InternalApiClient.ReregistrationAsync(Arg.Any <ReregistrationRequest>()).Returns(ApiClientResponse);
        }
        public override void Given()
        {
            registrationApiClientResponse = new RegistrationDetails
            {
                ProfileId     = 1,
                Uln           = Uln,
                Firstname     = "Test",
                Lastname      = "Last",
                AoUkprn       = AoUkprn,
                ProviderUkprn = 34567890,
                PathwayLarId  = "10000112",
            };

            ViewModel = new ChangeSpecialismQuestionViewModel {
                ProfileId = 1, HasLearnerDecidedSpecialism = false
            };
            Loader = new RegistrationLoader(Mapper, Logger, InternalApiClient, BlobStorageService);

            InternalApiClient.GetRegistrationDetailsAsync(AoUkprn, ViewModel.ProfileId, RegistrationPathwayStatus.Active)
            .Returns(registrationApiClientResponse);

            InternalApiClient.UpdateRegistrationAsync(Arg.Is <ManageRegistration>
                                                          (x => x.Uln == registrationApiClientResponse.Uln &&
                                                          x.FirstName == registrationApiClientResponse.Firstname &&
                                                          x.LastName == registrationApiClientResponse.Lastname &&
                                                          x.ProviderUkprn == registrationApiClientResponse.ProviderUkprn &&
                                                          x.CoreCode == registrationApiClientResponse.PathwayLarId &&
                                                          x.SpecialismCodes.Count() == 0))
            .Returns(ApiClientResponse);
        }
Exemplo n.º 10
0
        public async Task <JsonResult> Post([FromBody] RegistrationDetails credentials)
        {
            JsonResult result;
            var        expiresIn = TimeSpan.FromDays(7);
            //var expiresIn = TimeSpan.FromSeconds(10);

            var identity = await GetClaimsIdentity(credentials.FirstName + credentials.Surname.Replace(" ", string.Empty), credentials.Password);

            if (identity == null)
            {
                var errorResponse = new
                {
                    id         = string.Empty,
                    auth_token = string.Empty,
                    expires_in = (int)expiresIn.TotalSeconds,
                    error      = INVALID_LOGIN_ATTEMPT
                };
                result = new JsonResult(errorResponse);
            }
            else
            {
                var response = new
                {
                    id         = identity.Claims.Single(c => c.Type == "id").Value,
                    auth_token = await _jwtFactory.GenerateEncodedToken(credentials.FirstName + credentials.Surname, identity, expiresIn),
                    expires_in = (int)expiresIn.TotalSeconds,
                    role       = identity.Claims.Single(c => c.Type == "rol").Value
                };

                result = new JsonResult(response);
            }

            return(result);
        }
        /// <inheritdoc />
        protected sealed override void InternalConfigure()
        {
            var dependentConfigTypes = new List <Type>(this.DependentConfigurationTypes.Reverse());

            while (dependentConfigTypes.Any())
            {
                var type = dependentConfigTypes.Last();
                dependentConfigTypes.RemoveAt(dependentConfigTypes.Count - 1);

                var dependentConfig = (JsonConfigurationBase)this.DependentConfigurationTypeToInstanceMap[type];
                dependentConfigTypes.AddRange(dependentConfig.DependentConfigurationTypes);

                this.ProcessConverter(dependentConfig.RegisteredConverters, false);
                this.ProcessInheritedTypeConverterTypes(dependentConfig.RegisteredTypeToDetailsMap.Keys.ToList());
            }

            var converters          = (this.ConvertersToRegister ?? new RegisteredJsonConverter[0]).ToList();
            var handledTypes        = this.ProcessConverter(converters);
            var registrationDetails = new RegistrationDetails(this.GetType());

            foreach (var handledType in handledTypes)
            {
                this.MutableRegisteredTypeToDetailsMap.Add(handledType, registrationDetails);
            }
        }
Exemplo n.º 12
0
        public void ShouldUpdateDraftApprenticeshipApplicationDetails()
        {
            var newRegistrationDetails = new RegistrationDetails
            {
                EmailAddress = "*****@*****.**"
            };

            _candidateReadRepository.Setup(crr => crr.Get(It.IsAny <Guid>())).Returns(new Candidate {
                RegistrationDetails = newRegistrationDetails
            });
            _getCandidateApplicationsStrategy.Setup(gca => gca.GetApplications(It.IsAny <Guid>()))
            .Returns(new[] { new ApprenticeshipApplicationSummary {
                                 Status = ApplicationStatuses.Draft
                             } });
            _apprenticeshipApplicationReadRepository.Setup(
                aprr => aprr.GetForCandidate(It.IsAny <Guid>(), It.IsAny <int>(), false))
            .Returns(new ApprenticeshipApplicationDetail());

            var saveCandidateStrategy = new SaveCandidateStrategy(_candidateWriteRepository.Object,
                                                                  _getCandidateApplicationsStrategy.Object, _candidateReadRepository.Object,
                                                                  _apprenticeshipApplicationWriteRepository.Object, _apprenticeshipApplicationReadRepository.Object, null, null, null);

            saveCandidateStrategy.SaveCandidate(new Candidate());

            _apprenticeshipApplicationWriteRepository.Verify(
                aawr =>
                aawr.Save(It.Is <ApprenticeshipApplicationDetail>(a => a.CandidateDetails.EmailAddress == newRegistrationDetails.EmailAddress)));
        }
        public void Then_Returns_Expected_Results(long aoUkprn, int profileId, RegistrationDetails expectedResponse)
        {
            var actualResult = RegistrationService.GetRegistrationDetailsAsync(aoUkprn, profileId).Result;

            if (actualResult == null)
            {
                expectedResponse.Should().BeNull();
                return;
            }

            actualResult.Uln.Should().Be(expectedResponse.Uln);
            actualResult.Firstname.Should().Be(expectedResponse.Firstname);
            actualResult.Lastname.Should().Be(expectedResponse.Lastname);
            actualResult.DateofBirth.Should().Be(expectedResponse.DateofBirth);
            actualResult.ProviderName.Should().Be(expectedResponse.ProviderName);
            actualResult.PathwayName.Should().Be(expectedResponse.PathwayName);

            actualResult.Specialisms.Should().NotBeNullOrEmpty();
            actualResult.Specialisms.Count().Should().Be(expectedResponse.Specialisms?.Count());

            actualResult.Specialisms.ToList().ForEach(x =>
            {
                expectedResponse.Specialisms?.Select(s => s.Code).Should().Contain(x.Code);
                expectedResponse.Specialisms?.Select(s => s.Name).Should().Contain(x.Name);
            });

            actualResult.AcademicYear.Should().Be(expectedResponse.AcademicYear);
            actualResult.Status.Should().Be(expectedResponse.Status);
        }
Exemplo n.º 14
0
        public int CreateUser(RegistrationDetails registrationDetails)
        {
            using (var connection = new SqlConnection(_connectionString))
            {
                using (var command = new SqlCommand("InsertUser", connection))
                {
                    command.CommandType = CommandType.StoredProcedure;

                    command.Parameters.Add("@FirstName", SqlDbType.NVarChar, 255).Value =
                        registrationDetails.FirstName ?? string.Empty;

                    command.Parameters.Add("@Surname", SqlDbType.NVarChar, 255).Value =
                        registrationDetails.Surname ?? string.Empty;

                    command.Parameters.Add("@Email", SqlDbType.VarChar, 320).Value =
                        registrationDetails.Email;

                    command.Parameters.Add("@PasswordHash", SqlDbType.VarChar, 255).Value =
                        registrationDetails.Password;

                    connection.Open();
                    var result = command.ExecuteNonQuery();

                    return(result);
                }
            }
        }
Exemplo n.º 15
0
        public DataSet GetDataSet(DO_Registrationdetails objRegistration, RegistrationDetails flag)
        {
            DataSet dt = new DataSet();

            conn = co.GetConnection();
            SqlDataAdapter da = new SqlDataAdapter();

            da.SelectCommand             = new SqlCommand("scrl_InSertRegistrationSP", conn);
            da.SelectCommand.CommandType = CommandType.StoredProcedure;
            da.SelectCommand.Parameters.Add("@FlagNo", SqlDbType.Int).Value                        = flag;
            da.SelectCommand.Parameters.Add("@RegistrationId", SqlDbType.Int).Value                = objRegistration.RegistrationId;
            da.SelectCommand.Parameters.Add("@AddedBy", SqlDbType.Int).Value                       = objRegistration.AddedBy;
            da.SelectCommand.Parameters.Add("@RollNo", SqlDbType.Int).Value                        = objRegistration.RollNo;
            da.SelectCommand.Parameters.Add("@Batch", SqlDbType.VarChar, 200).Value                = objRegistration.Batch;
            da.SelectCommand.Parameters.Add("@PoliticalView", SqlDbType.VarChar, 200).Value        = objRegistration.PoliticalView;
            da.SelectCommand.Parameters.Add("@Languages", SqlDbType.VarChar, 200).Value            = objRegistration.Languages;
            da.SelectCommand.Parameters.Add("@NonAchedemicInterest", SqlDbType.VarChar, 200).Value = objRegistration.NonAchedemicInterest;
            da.SelectCommand.Parameters.Add("@OtherPer", SqlDbType.VarChar, 200).Value             = objRegistration.OtherPersonal;
            da.SelectCommand.Parameters.Add("@Phone", SqlDbType.BigInt).Value                      = objRegistration.Phone;
            da.SelectCommand.Parameters.Add("@Mobile", SqlDbType.BigInt).Value                     = objRegistration.Mobile;
            da.SelectCommand.Parameters.Add("@Designation", SqlDbType.VarChar, 200).Value          = objRegistration.Designation;
            da.SelectCommand.Parameters.Add("@University", SqlDbType.VarChar, 200).Value           = objRegistration.University;
            da.SelectCommand.Parameters.Add("@Alumni", SqlDbType.VarChar, 200).Value               = objRegistration.Alunmi;
            da.Fill(dt);
            co.CloseConnection(conn);
            return(dt);
        }
        public override void Given()
        {
            _coreCode         = "10000111";
            _providerUkprn    = 12345678;
            ApiClientResponse = false;

            mockApiClientResponse = new RegistrationDetails
            {
                ProfileId     = 1,
                Uln           = Uln,
                ProviderUkprn = _providerUkprn,
                PathwayLarId  = "70000111",
            };

            ViewModel = new ReregisterViewModel
            {
                ReregisterProvider = new ReregisterProviderViewModel {
                    ProfileId = ProfileId
                },
                ReregisterCore = new ReregisterCoreViewModel {
                    ProfileId = ProfileId, SelectedCoreCode = _coreCode
                }
            };

            Loader = new RegistrationLoader(Mapper, Logger, InternalApiClient, BlobStorageService);

            InternalApiClient.GetRegistrationDetailsAsync(AoUkprn, ProfileId, RegistrationPathwayStatus.Withdrawn).Returns(mockApiClientResponse);
            InternalApiClient.ReregistrationAsync(Arg.Any <ReregistrationRequest>()).Returns(ApiClientResponse);
        }
Exemplo n.º 17
0
        protected void RegisterTypeWithPropertyConstraints(Type type, IReadOnlyCollection <string> constrainToProperties = null)
        {
            new { type }.Must().NotBeNull();

            if (this.RegisteredTypeToDetailsMap.ContainsKey(type))
            {
                throw new DuplicateRegistrationException(
                          Invariant($"Trying to register {type} in {nameof(this.RegisterTypeWithPropertyConstraints)} but it is already registered."),
                          new[] { type });
            }

            try
            {
                if (type.IsClass)
                {
                    var bsonClassMap = this.AutomaticallyBuildBsonClassMap(type, constrainToProperties);
                    BsonClassMap.RegisterClassMap(bsonClassMap);
                    var registrationDetails = new RegistrationDetails(this.GetType());
                    this.MutableRegisteredTypeToDetailsMap.Add(type, registrationDetails);
                }
            }
            catch (Exception ex)
            {
                throw new BsonConfigurationException(Invariant($"Failed to run {nameof(BsonClassMap.RegisterClassMap)} on {type.FullName}"), ex);
            }
        }
Exemplo n.º 18
0
        public override void Given()
        {
            _providerUkprn = 12345678;

            mockApiClientResponse = new RegistrationDetails
            {
                ProfileId     = 1,
                ProviderUkprn = 3425678,
                PathwayLarId  = "20000113",
            };

            var mockProviderPathwayDetailsApiClientResponse = new List <PathwayDetails>
            {
                new PathwayDetails
                {
                    Id   = 1,
                    Name = "Test",
                    Code = "10000111"
                },
                new PathwayDetails
                {
                    Id   = 2,
                    Name = "Display",
                    Code = "10000112"
                }
            };

            ViewModel = new ChangeProviderViewModel {
                ProfileId = 1, SelectedProviderUkprn = _providerUkprn.ToString()
            };
            Loader = new RegistrationLoader(Mapper, Logger, InternalApiClient, BlobStorageService);

            InternalApiClient.GetRegistrationDetailsAsync(AoUkprn, ViewModel.ProfileId, RegistrationPathwayStatus.Active).Returns(mockApiClientResponse);
            InternalApiClient.GetRegisteredProviderPathwayDetailsAsync(AoUkprn, _providerUkprn).Returns(mockProviderPathwayDetailsApiClientResponse);
        }
        /// <inheritdoc />
        protected sealed override void ProcessRegistrationDetailsPriorToRegistration(
            RegistrationDetails registrationDetails,
            RegistrationTime registrationTime)
        {
            if (registrationDetails == null)
            {
                throw new ArgumentNullException(nameof(registrationDetails));
            }

            if (registrationDetails.TypeToRegister is TypeToRegisterForJson typeToRegisterForJson)
            {
                this.ProcessTypeToRegisterForJson(typeToRegisterForJson);

                // During initialization, we wait until FinalizeInitialization() so that we have ALL
                // of the registered types on hand, to determine which ones participate in a hierarchy.
                // This is required because ParticipatesInHierarchy() requires the whole set of registered
                // types (and specifically to look for a non-abstract class that has inheritors, which
                // is rare/a design smell).  Post-initialization, we are looking at a closed generic type
                // and should determine if it participates in a hierarchy.  There is potentially the case
                // where a non-abstract closed generic class shows up first, we determine it does not
                // participate in a hierarchy because it has no inheritors, and subsequently another
                // closed generic class shows up that inherits from the first type.  Should be rare;
                // cross that bridge when we get there.
                if (registrationTime == RegistrationTime.PostInitialization)
                {
                    this.AddHierarchyParticipatingTypes(new[] { registrationDetails.TypeToRegister.Type });
                }
            }
            else
            {
                throw new NotSupportedException(Invariant($"{nameof(registrationDetails)}.{nameof(RegistrationDetails.TypeToRegister)} is expected to be of type {nameof(TypeToRegisterForJson)}, but found this type: {registrationDetails.TypeToRegister.GetType().ToStringReadable()}."));
            }
        }
        /// <inheritdoc />
        protected sealed override void ProcessRegistrationDetailsPriorToRegistration(
            RegistrationDetails registrationDetails,
            RegistrationTime registrationTime)
        {
            if (registrationDetails == null)
            {
                throw new ArgumentNullException(nameof(registrationDetails));
            }

            if (registrationTime == RegistrationTime.Unknown)
            {
                throw new ArgumentOutOfRangeException(Invariant($"'{nameof(registrationTime)}' == '{RegistrationTime.Unknown}'"), (Exception)null);
            }

            if (registrationDetails.TypeToRegister is TypeToRegisterForBson typeToRegisterForBson)
            {
                // There's nothing to do if it's a generic type definition.
                // The closed generic types will be registered post-initialization.
                // Upon serializing, the serializer will call this.SerializationConfiguration.ThrowOnUnregisteredTypeIfAppropriate,
                // which recurses through the runtime types of the object being serialized
                // and registers any unregistered closed generic types it encounters.
                // Upon deserialization this is handled by ObcBsonDiscriminatorConvention.
                if (typeToRegisterForBson.Type.IsGenericTypeDefinition)
                {
                    return;
                }

                this.ProcessTypeToRegisterForBson(typeToRegisterForBson, registrationDetails.SerializationConfigurationType);
            }
            else
            {
                throw new NotSupportedException(Invariant($"{nameof(registrationDetails)}.{nameof(RegistrationDetails.TypeToRegister)} is expected to be of type {nameof(TypeToRegisterForBson)}, but found this type: {registrationDetails.TypeToRegister.GetType().ToStringReadable()}."));
            }
        }
Exemplo n.º 21
0
        public void BuildGraph(RegistrationDetails details)
        {
            if (details.IsCreated)
            {
                return;
            }

            // Get the constructors. They are already ordered by parameter count descending.
            // Work from most descriptive to least to find one that is resolveable.
            var constructors = details.ResolvedType.GetConstructors();

            foreach (var info in constructors)
            {
                ParameterInfo[] parms = info.GetParameters();

                // If all parameters are registered or it's the default constructor,
                // use this constructor.
                var tempNonGenericCache = new List <Type>();
                foreach (var parm in parms)
                {
                    if (parm.ParameterType.GetTypeInfo().IsGenericType)
                    {
                        tempNonGenericCache.Add(parm.ParameterType.GetGenericTypeDefinition());
                    }
                    else
                    {
                        tempNonGenericCache.Add(parm.ParameterType);
                    }
                }

                // If it's an IEnumerable<T>, we need to do something special I think, but I'm not really sure what.

                if (tempNonGenericCache.All(p => _cache.Contains(p)) || parms.Length == 0)
                {
                    details.Instructions = new BuildDetails
                    {
                        ConstructorToUse = info,
                        TypeToCreate     = details.ResolvedType
                    };

                    // ensure all subdependencies have their trees built as well.
                    foreach (var p in tempNonGenericCache)
                    {
                        RegistrationDetails subDetails = _cache.Get(p);
                        if (subDetails.Instructions == null)
                        {
                            BuildGraph(subDetails);
                        }
                        details.Instructions.Dependencies.Add(subDetails.Instructions);
                    }
                }
            }

            // If no constructor was found, the object can't be constructed so throw an exception.
            if (details.Instructions == null)
            {
                throw new InvalidOperationException($"Cannot find an appropriate constructor for type {details.RegisteredType.FullName}. Either create a default constructor or register more types.");
            }
        }
Exemplo n.º 22
0
 public object CreateType(RegistrationDetails details)
 {
     if (!_createdTypes.ContainsKey(details.RegisteredType))
     {
         _createdTypes.TryAdd(details.RegisteredType, _constructor.Build(details.Instructions));
     }
     return(_createdTypes[details.RegisteredType]);
 }
Exemplo n.º 23
0
        public void UpdateUserProfile(string username, RegistrationDetails profileDetails)
        {
            Condition.Requires(username).IsNotNullOrEmpty();
            Condition.Requires(profileDetails);

            //todo: allow update of name, DOB, address, contact number (not email address as new addresses must be confirmed)

            throw new NotImplementedException();
        }
Exemplo n.º 24
0
 public Candidate()
 {
     RegistrationDetails      = new RegistrationDetails();
     ApplicationTemplate      = new ApplicationTemplate();
     CommunicationPreferences = new CommunicationPreferences();
     HelpPreferences          = new HelpPreferences();
     MonitoringInformation    = new MonitoringInformation();
     SubscriberId             = Guid.NewGuid();
 }
Exemplo n.º 25
0
        /// <inheritdoc />
        protected override void RegisterTypes(IReadOnlyCollection <Type> types)
        {
            var registrationDetails = new RegistrationDetails(this.GetType());

            foreach (var type in types ?? new Type[0])
            {
                this.MutableRegisteredTypeToDetailsMap.Add(type, registrationDetails);
            }
        }
 public void SetUp()
 {
     _mockRegistrationRepository = new Mock <IRegistrationRepository>();
     _mockPasswordHasher         = new Mock <IPasswordHasher>();
     _registrationFacade         =
         new RegistrationFacade(_mockRegistrationRepository.Object, _mockPasswordHasher.Object);
     _registrationDetails = new RegistrationDetails {
         Email = "*****@*****.**", Password = "******"
     };
 }
        /// <inheritdoc />
        protected sealed override void RegisterTypes(IReadOnlyCollection <Type> types)
        {
            new { types }.Must().NotBeNull();

            var discoveredRegistrationDetails = new RegistrationDetails(this.GetType());

            this.MutableRegisteredTypeToDetailsMap.AddRange(types.ToDictionary(k => k, v => discoveredRegistrationDetails));

            this.ProcessInheritedTypeConverterTypes(types);
        }
Exemplo n.º 28
0
 private void PatchRegistrationDetails(RegistrationDetails registrationDetails, SettingsViewModel model)
 {
     registrationDetails.FirstName   = model.Firstname;
     registrationDetails.LastName    = model.Lastname;
     registrationDetails.DateOfBirth = new DateTime(
         // ReSharper disable PossibleInvalidOperationException
         model.DateOfBirth.Year.Value, model.DateOfBirth.Month.Value, model.DateOfBirth.Day.Value);
     // ReSharper restore PossibleInvalidOperationException
     registrationDetails.Address     = _mapper.Map <AddressViewModel, Address>(model.Address);
     registrationDetails.PhoneNumber = model.PhoneNumber;
 }
        public override void Given()
        {
            mockResult = new RegistrationDetails
            {
                ProfileId = 1,
                Firstname = "John",
                Lastname  = "Smith",
            };

            InternalApiClient.GetRegistrationDetailsAsync(AoUkprn, ProfileId, RegistrationPathwayStatus.Active).Returns(mockResult);
        }
Exemplo n.º 30
0
 private User Register(RegistrationDetails details)
 {
     return(new User()
     {
         UserName = details.UserName,
         Password = details.Password,
         FirstName = details.FirstName,
         LastName = details.LastName,
         EMail = details.EMail,
         IsAdmin = false
     });
 }
Exemplo n.º 31
0
		internal DomainSerialException(RegistrationDetails reg) : 
			base("DbCombo error: You have entered an invalid registration key. The registration key you entered is limited to the following domains: '$1', 'www.$1' and 'localhost'. The current domain is '$2'. Please see www.dbcombo.net for a valid key.".Replace("$1",reg.RestrictionString.ToLower()).Replace("$2",HttpContext.Current.Request.Url.Host)){}
Exemplo n.º 32
0
		internal ServerNameSerialException(RegistrationDetails reg) : 
			base("DbCombo error: You have entered an invalid registration key. The registration key you entered is limited to the following server name: '$1'. The current server name is $2. Please see www.dbcombo.net for a valid key.".Replace("$1",reg.RestrictionString).Replace("$2",HttpContext.Current.Server.MachineName)){}
Exemplo n.º 33
0
		internal InvalidVersionException(RegistrationDetails reg) : 
			base("DbCombo error: You have entered an invalid registration key. The registration key you entered is for DbCombo v$1.$2. You are using DbCombo v$4.$5. Please visit www.dbcombo.net and get a registration key for version $4.$5.".Replace("$1",reg.MajorVersion.ToString()).Replace("$2",reg.MinorVersion.ToString()).Replace("$3",reg.Build.ToString()).Replace("$4",Assembly.GetExecutingAssembly().GetName().Version.Major.ToString()).Replace("$5",Assembly.GetExecutingAssembly().GetName().Version.Minor.ToString()).Replace("$6",Assembly.GetExecutingAssembly().GetName().Version.Build.ToString()) ){}
Exemplo n.º 34
0
		internal InvalidLicensingSchemeException(RegistrationDetails reg) : 
			base("DbCombo error: You have entered an invalid registration key. The registration key you entered is for an earlier version to the one that you are using. Please visit www.dbcombo.net and get a registration key for version $1.$2.$3.".Replace("$1",reg.MajorVersion.ToString()).Replace("$2",reg.MinorVersion.ToString()).Replace("$3",reg.Build.ToString())){}