/// <inheritdoc />
        public CreateContactDetailResult CreateContactDetail(
            long personId,
            DateTime created,
            DateTime captured,
            string emailAddress,
            DateTime?emailVerificationCompletion)
        {
            CreateContactDetailResult toReturn = null;

            object sprocParameters =
                new
            {
                Person_Id    = personId,
                Created      = created,
                Captured     = captured,
                EmailAddress = emailAddress,
                EmailVerificationCompletion = emailVerificationCompletion,
            };

            toReturn =
                this.ExecuteStoredProcedureSingularResult <CreateContactDetailResult>(
                    "Create_ContactDetail",
                    sprocParameters);

            return(toReturn);
        }
        private void InsertRecordsIntoDatabase(Person person)
        {
            // 1) Person
            this.loggerProvider.Debug(
                $"Invoking " +
                $"{nameof(IDataCaptureDatabaseAdapter)}.{nameof(IDataCaptureDatabaseAdapter.CreatePerson)}...");

            CreatePersonResult createPersonResult =
                this.dataCaptureDatabaseAdapter.CreatePerson(
                    DateTime.UtcNow,
                    person.Enrolled.Value,
                    person.FirstName,
                    person.LastName);

            this.loggerProvider.Info(
                $"Created: {createPersonResult}.");

            long personId = createPersonResult.Id;

            // Now we have an id for Person, insert into the satellite tables.
            // 2) ContactDetail
            this.loggerProvider.Debug(
                $"Invoking " +
                $"{nameof(IDataCaptureDatabaseAdapter)}.{nameof(IDataCaptureDatabaseAdapter.CreateContactDetail)}...");

            CreateContactDetailResult createContactDetailResult =
                this.dataCaptureDatabaseAdapter.CreateContactDetail(
                    personId,
                    DateTime.UtcNow,
                    person.ContactDetail.Captured.Value,
                    person.ContactDetail.EmailAddress,
                    person.ContactDetail.EmailVerificationCompletion);

            this.loggerProvider.Info($"Created: {createContactDetailResult}.");

            this.InsertIntoOneToManyTables(personId, person);
        }
Ejemplo n.º 3
0
        public void Create_EmailAddressDoesNotExistAlready_NoExceptionThrown()
        {
            // Arrange
            ReadPersonResult readPersonResult = null;

            CreatePersonResult createPersonResult = new CreatePersonResult()
            {
                Id = 123,
            };

            CreateContactDetailResult createContactDetailResult =
                new CreateContactDetailResult()
            {
                Id = 456,
            };

            CreateConsentResult createConsentResult = new CreateConsentResult()
            {
                Id = 789,
            };

            CreateCookieResult createCookieResult = new CreateCookieResult()
            {
                Id = 345,
            };

            CreateRouteResult createRouteResult = new CreateRouteResult()
            {
                Id = 678,
            };

            PersonManager personManager = this.CreatePersonManagerInstance(
                mockDataCaptureDatabaseAdapter =>
            {
                mockDataCaptureDatabaseAdapter
                .Setup(x => x.ReadPerson(
                           It.IsAny <string>()))
                .Returns(readPersonResult);

                mockDataCaptureDatabaseAdapter
                .Setup(x => x.CreatePerson(
                           It.IsAny <DateTime>(),
                           It.IsAny <DateTime>(),
                           It.IsAny <string>(),
                           It.IsAny <string>()))
                .Returns(createPersonResult);

                mockDataCaptureDatabaseAdapter
                .Setup(x => x.CreateContactDetail(
                           It.IsAny <long>(),
                           It.IsAny <DateTime>(),
                           It.IsAny <DateTime>(),
                           It.IsAny <string>(),
                           It.IsAny <DateTime?>()))
                .Returns(createContactDetailResult);

                mockDataCaptureDatabaseAdapter
                .Setup(x => x.CreateConsent(
                           It.IsAny <long>(),
                           It.IsAny <DateTime>(),
                           It.IsAny <DateTime>(),
                           It.IsAny <bool?>()))
                .Returns(createConsentResult);

                mockDataCaptureDatabaseAdapter
                .Setup(x => x.CreateCookie(
                           It.IsAny <long>(),
                           It.IsAny <DateTime>(),
                           It.IsAny <DateTime>(),
                           It.IsAny <string>()))
                .Returns(createCookieResult);

                mockDataCaptureDatabaseAdapter
                .Setup(x => x.CreateRoute(
                           It.IsAny <long>(),
                           It.IsAny <DateTime>(),
                           It.IsAny <DateTime>(),
                           It.IsAny <string>()))
                .Returns(createRouteResult);
            });

            Person person = new Person()
            {
                Consent = new Consent()
                {
                    GdprConsentDeclared = DateTime.Parse("2018-11-19 08:30:21"),
                    GdprConsentGiven    = true,
                },
                Cookie = new Cookie()
                {
                    Captured         = DateTime.Parse("2018-11-19 08:31:11"),
                    CookieIdentifier = "ABC0123456789",
                },
                Route = new Route()
                {
                    Captured        = DateTime.Parse("2018-11-19 08:29:03"),
                    RouteIdentifier = "ZYX9876543210",
                },
                ContactDetail = new ContactDetail()
                {
                    Captured     = DateTime.Parse("2018-11-18 08:30:21"),
                    EmailAddress = "*****@*****.**",
                    EmailVerificationCompletion = DateTime.Parse("2018-11-18 13:00:23"),
                },
                Enrolled  = DateTime.Parse("2018-11-18 08:30:20"),
                FirstName = "Joe",
                LastName  = "Bloggs",
            };

            PersonRecordExistsAlreadyException thrownException = null;

            // Act
            try
            {
                personManager.Create(person);
            }
            catch (PersonRecordExistsAlreadyException personRecordExistsAlreadyException)
            {
                thrownException = personRecordExistsAlreadyException;
            }

            // Assert
            Assert.IsNull(thrownException);
        }