public async Task ValidateCustomerWhenCustomerhasNullFirstname_ReturnsFalse()
        {
            AfiCustomer customer = _fixture.Create <AfiCustomer>();

            customer.FirstName = null;

            var result = await _validationService.ValidateCustomerEntity(customer);

            Assert.False(result);
        }
        public async Task ValidateCustomerWhenCustomerhasNullEmailandDob_ReturnsFalse()
        {
            AfiCustomer customer = _fixture.Create <AfiCustomer>();

            customer.Email = null;
            customer.Dob   = null;

            var result = await _validationService.ValidateCustomerEntity(customer);

            Assert.False(result);
        }
 public async Task <int> RegisterCustomer([FromBody] AfiCustomer customer)
 {
     if (await _afiCustomerValidationService.ValidateCustomerEntity(customer))
     {
         return(await _afiCustomerService.RegisterAfiCustomer(customer));
     }
     else
     {
         //Invalid Condition returns -1
         return(await Task.FromResult(-1));
     }
 }
        public async Task ValidateCustomerWhenCustomerhasValidPolicyReferenceNumber_returnstrue(string validPolicy)
        {
            _fixture.Customize <AfiCustomer>(c =>
                                             c.With(p => p.SurName, "Murphy")
                                             .With(p => p.FirstName, "Richard")
                                             .With(p => p.Dob, DateTime.Now)
                                             .With(p => p.AfiCustomerID, 1)
                                             .With(p => p.PolicyReferenceNumber, "AD-234543")
                                             .With(p => p.Email, "*****@*****.**"));

            AfiCustomer customer = _fixture.Create <AfiCustomer>();

            customer.PolicyReferenceNumber = validPolicy;
            customer.Dob = null;
            var result = await _validationService.ValidateCustomerEntity(customer);

            Assert.True(result);
        }
        public async Task ValidateCustomerWhenCustomerAgeIsLessThan18_returnsfalse(DateTime dob)
        {
            _fixture.Customize <AfiCustomer>(c =>
                                             c.With(p => p.SurName, "Murphy")
                                             .With(p => p.FirstName, "Richard")
                                             .With(p => p.Dob, DateTime.Now)
                                             .With(p => p.AfiCustomerID, 1)
                                             .With(p => p.PolicyReferenceNumber, "AD-234543")
                                             .With(p => p.Email, "*****@*****.**"));

            AfiCustomer customer = _fixture.Create <AfiCustomer>();

            customer.Email = null;
            customer.Dob   = dob;
            var result = await _validationService.ValidateCustomerEntity(customer);

            Assert.False(result);
        }
Beispiel #6
0
        public async Task <int> CreateAfiCustomer(AfiCustomer customer)
        {
            var result = await Task.Run(() =>
            {
                try
                {
                    _context.AfiCustomer.Add(customer);
                    _context.SaveChanges();
                }
                catch (Exception)
                {
                    //if error return -2
                    return(-2);
                }
                var Id = customer.AfiCustomerID;
                return(Id);
            });

            return(result);
        }
Beispiel #7
0
 public async Task <int> RegisterAfiCustomer(AfiCustomer customer)
 {
     return(await _customerRepository.CreateAfiCustomer(customer));
 }
Beispiel #8
0
        public async Task <bool> ValidateCustomerEntity(AfiCustomer afiCustomer)
        {
            //Policy holder’s first name and surname are both required and should be between 3 and 50 chars.
            var result = await Task.Run(() =>
            {
                if (string.IsNullOrEmpty(afiCustomer.SurName?.Trim()))
                {
                    return(false);
                }
                if (string.IsNullOrEmpty(afiCustomer.FirstName?.Trim()))
                {
                    return(false);
                }
                if (afiCustomer.FirstName?.Trim().Length < 3 && afiCustomer.FirstName?.Trim().Length > 50)
                {
                    return(false);
                }
                if (afiCustomer.SurName?.Trim().Length < 3 && afiCustomer.SurName?.Trim().Length > 50)
                {
                    return(false);
                }

                //Policy Reference number is required and should match the following format XX-999999.
                //Where XX are any capitalised alpha character followed by a hyphen and 6 numbers.

                if (string.IsNullOrEmpty(afiCustomer.PolicyReferenceNumber?.Trim()))
                {
                    return(false);
                }
                if (afiCustomer.PolicyReferenceNumber?.Trim().Length < 9)
                {
                    return(false);
                }
                if (afiCustomer.Dob == null && string.IsNullOrEmpty(afiCustomer.Email?.Trim()))
                {
                    return(false);
                }
                if (!(afiCustomer.Dob == null) && !string.IsNullOrEmpty(afiCustomer.Email?.Trim()))
                {
                    return(false);
                }

                Regex policyExpression = new Regex(@"^[A-Z]{2}-[0-9]{6}");
                if (!policyExpression.IsMatch(afiCustomer.PolicyReferenceNumber?.Trim()))
                {
                    return(false);
                }

                //If supplied the policy holders email address should contain a string of at least
                //4 alpha numeric chars followed by an ‘@’ sign and then another string of at least
                //2 alpha numeric chars.The email address should end in either ‘.com’ or ‘.co.uk’.

                Regex emailExpression = new Regex(@"^[A-Za-z][A-Za-z0-9]{3,}@[A-Za-z0-9]{2,}.(com|co.uk)$");
                if (!string.IsNullOrEmpty(afiCustomer.Email?.Trim()))
                {
                    if (!emailExpression.IsMatch(afiCustomer.Email.Trim()))
                    {
                        return(false);
                    }
                }

                if (afiCustomer.Dob.HasValue)
                {
                    int age = DateTime.Now.Year - afiCustomer.Dob.Value.Year;
                    if (afiCustomer.Dob.Value > DateTime.Now.AddYears(-age))
                    {
                        age--;
                    }
                    if (age < 18)
                    {
                        return(false);
                    }
                }
                return(true);
            });

            return(result);
        }