public static MergeRowTree CreatePseudoTableRowTree( IEnumerable<PseudoTableRow> rows )
 {
     var rand = new Random();
     var children = new MergeDataTreeChild<PseudoTableRow, PseudoChildRow>( "Things",
                                                                            childFields.AsReadOnly(),
                                                                            data => /*Randomness.FlipCoin()*/
                                                                            false
                                                                            	? new[]
                                                                            	  	{ new PseudoChildRow( rand.Next( 20 ) ), new PseudoChildRow( rand.Next( 20 ) ) }
                                                                            	: new PseudoChildRow[ 0 ],
                                                                            null );
     return MergeDataTreeOps.CreateRowTree( tableFields.AsReadOnly(), rows, new List<MergeDataTreeChild<PseudoTableRow>> { children }.AsReadOnly() );
 }
        public static MergeRowTree CreatePseudoTableRowTree(IEnumerable <PseudoTableRow> rows)
        {
            var rand     = new Random();
            var children = new MergeDataTreeChild <PseudoTableRow, PseudoChildRow>("Things",
                                                                                   childFields.AsReadOnly(),
                                                                                   data =>             /*Randomness.FlipCoin()*/
                                                                                   false
                                                                                                ? new[]
                                                                                   { new PseudoChildRow(rand.Next(20)), new PseudoChildRow(rand.Next(20)) }
                                                                                                : new PseudoChildRow[0],
                                                                                   null);

            return(MergeDataTreeOps.CreateRowTree(tableFields.AsReadOnly(), rows, new List <MergeDataTreeChild <PseudoTableRow> > {
                children
            }.AsReadOnly()));
        }
        public void PracticesMerge()
        {
            var practiceData = new PracticeMockData(
                "Entymology Associates of Rock Chester",
                new[] { "*****@*****.**", "*****@*****.**", "*****@*****.**", "*****@*****.**" }.Select(s => new PracticeManagerMockData(s)),
                new[]
            {
                new PhysicianMockData("*****@*****.**", "Joan", "Ann"), new PhysicianMockData("*****@*****.**", "Johnny", "Ann"),
                new PhysicianMockData("*****@*****.**", "Billy", "Pullman"), new PhysicianMockData("*****@*****.**", "William", "Smithers")
            });

            var practiceFields = new List <MergeField <PracticeMockData> >(MergeFieldOps.CreateBasicField(new PracticeName()).ToCollection());
            var managerFields  =
                new List <MergeField <PracticeManagerMockData> >(MergeFieldOps.CreateBasicField(new MergeFields.PracticeManagerMergeFields.Email()).ToCollection());
            var physicianFields =
                new List <MergeField <PhysicianMockData> >(
                    new[]
            {
                MergeFieldOps.CreateBasicField(new MergeFields.PhysicianMergeFields.Email()), MergeFieldOps.CreateBasicField(new FirstName()),
                MergeFieldOps.CreateBasicField(new LastName())
            });

            var managersChild = new MergeDataTreeChild <PracticeMockData, PracticeManagerMockData>(
                "PracticeManagers",
                managerFields.AsReadOnly(),
                data => data.Managers);
            var physiciansChild = new MergeDataTreeChild <PracticeMockData, PhysicianMockData>("Physicians", physicianFields.AsReadOnly(), data => data.Physicians);
            var mergeTree       = MergeDataTreeOps.CreateRowTree(
                practiceFields.AsReadOnly(),
                practiceData.ToCollection(),
                new List <MergeDataTreeChild <PracticeMockData> > {
                managersChild, physiciansChild
            }.AsReadOnly());

            using (var templateStream = File.OpenRead(testingPracticesWordTemplatePath)) {
                using (var destinationStream = File.Create(getFilePath("practices_merge_test"))) {
                    MergeOps.CreateMsWordDoc(mergeTree, true, templateStream, destinationStream);
                    doneCreating = DateTime.Now;
                }
            }
        }
        public void PracticesMerge()
        {
            var practiceData = new PracticeMockData(
                "Entymology Associates of Rock Chester",
                new[] { "*****@*****.**", "*****@*****.**", "*****@*****.**", "*****@*****.**" }.Select( s => new PracticeManagerMockData( s ) ),
                new[]
                    {
                        new PhysicianMockData( "*****@*****.**", "Joan", "Ann" ), new PhysicianMockData( "*****@*****.**", "Johnny", "Ann" ),
                        new PhysicianMockData( "*****@*****.**", "Billy", "Pullman" ), new PhysicianMockData( "*****@*****.**", "William", "Smithers" )
                    } );

            var practiceFields = new List<MergeField<PracticeMockData>>( MergeFieldOps.CreateBasicField( new PracticeName() ).ToSingleElementArray() );
            var managerFields = new List<MergeField<PracticeManagerMockData>>( MergeFieldOps.CreateBasicField( new MergeFields.PracticeManagerMergeFields.Email() ).ToSingleElementArray() );
            var physicianFields =
                new List<MergeField<PhysicianMockData>>(
                    new[]
                        {
                            MergeFieldOps.CreateBasicField( new MergeFields.PhysicianMergeFields.Email() ), MergeFieldOps.CreateBasicField( new FirstName() ),
                            MergeFieldOps.CreateBasicField( new LastName() )
                        } );

            var managersChild = new MergeDataTreeChild<PracticeMockData, PracticeManagerMockData>(
                "PracticeManagers",
                managerFields.AsReadOnly(),
                data => data.Managers );
            var physiciansChild = new MergeDataTreeChild<PracticeMockData, PhysicianMockData>( "Physicians", physicianFields.AsReadOnly(), data => data.Physicians );
            var mergeTree = MergeDataTreeOps.CreateRowTree(
                practiceFields.AsReadOnly(),
                practiceData.ToSingleElementArray(),
                new List<MergeDataTreeChild<PracticeMockData>> { managersChild, physiciansChild }.AsReadOnly() );

            using( var templateStream = File.OpenRead( testingPracticesWordTemplatePath ) ) {
                using( var destinationStream = File.Create( getFilePath( "practices_merge_test" ) ) ) {
                    MergeOps.CreateMsWordDoc( mergeTree, true, templateStream, destinationStream );
                    doneCreating = DateTime.Now;
                }
            }
        }