├── AboutTheLabs.pdf ├── LICENSE ├── README.md └── Student ├── Extras ├── BBSPA_ListGenerator │ ├── BBSPA_ListGenerator.sln │ └── BBSPA_ListGenerator │ │ ├── App.config │ │ ├── BBSPA_ListGenerator.csproj │ │ ├── Models │ │ ├── RandomCustomerGenerator.cs │ │ └── SharePointListFactory.cs │ │ ├── Program.cs │ │ ├── Properties │ │ └── AssemblyInfo.cs │ │ └── packages.config ├── CustomerFactoryAPI.swagger.json ├── Demos │ ├── CptLabsDatabase.sql │ └── CustomerOrderingwithAzureSQL.zip ├── ProductCatalog.xlsx └── ProductImages │ ├── batman.jpg │ ├── captainamerica.jpg │ ├── coloringbook.jpg │ ├── crateocrayons.jpg │ ├── crayons.jpg │ ├── easel.jpg │ ├── etchasketch.jpg │ ├── flyingsquirrel.jpg │ ├── gijoe.jpg │ ├── godzilla.jpg │ ├── greenhornet.jpg │ ├── helicopter.jpg │ ├── hulk.jpg │ ├── indyracecar.jpg │ ├── speedboat.jpg │ ├── stomperbully.jpg │ └── twitterfollower.jpg └── Modules ├── 01_GettingStarted ├── Lab.pdf ├── Lab.xps ├── Lab │ ├── CategoriesAllowedValues.txt │ ├── Customers.xlsx │ ├── Expenses.xlsx │ └── Solution │ │ ├── Lab1-CustomerSearchSolution.zip │ │ └── Lab1-ExpenseTrackerSolution.zip ├── Slides.pdf └── Slides.xps ├── 02_DataDrivenCanvasApps ├── Demo │ └── RelativeStylingDemo.zip ├── Lab.pdf ├── Lab.xps ├── Lab │ └── Solution │ │ ├── CustomerOrdering-SolutionForLab2Exercise2.zip │ │ ├── CustomerOrdering-SolutionForLab2Exercise3.zip │ │ ├── CustomerOrdering-SolutionForLab2Exercise4.zip │ │ ├── CustomerOrdering-SolutionForLab2Exercise5.zip │ │ └── CustomerOrdering-SolutionForLab2Final.zip ├── Slides.pdf └── Slides.xps ├── 03_ShoppingCart ├── Demo │ ├── Component Demo.msapp │ └── EditFormsversusPatchDemo.zip ├── Lab.pdf ├── Lab.xps ├── Lab │ └── Solution │ │ ├── CustomerOrdering-SolutionForLab3Exercise2.zip │ │ └── CustomerOrdering-SolutionforLab3Final.zip ├── Slides.pdf ├── Slides.xps └── readme.txt ├── 04_DesigningFlows ├── Demo │ ├── GenerateWordDocumentwithCustomerLetter.zip │ └── SendEmailcontainingHTMLTablewithCustomerData.zip ├── Lab.pdf ├── Lab.xps ├── Lab │ ├── CustomerLetterTemplate.docx │ ├── Solution │ │ └── TrackTweetsabout#PowerApps-Lab4.zip │ └── Tweets.xlsx ├── Slides.pdf └── Slides.xps ├── 05_Approvals ├── Demo │ └── CleanUpSharePointCustomerListContent.zip ├── Lab.pdf ├── Lab.xps ├── Slides.pdf └── Slides.xps ├── 06_ExternalSystems ├── Demo │ ├── Power-BI-Datasets-API.swagger.json │ └── UseHTTPActiontoImportDataintoSharePointCustomersList.zip ├── Lab.pdf ├── Lab.xps ├── Lab │ ├── AppIcon.png │ ├── CustomConnectorInfo.txt │ ├── Power-BI-Datasets-API.swagger.json │ ├── PowerBIDatasetManger.zip │ └── Solution │ │ └── CustomersAPI.swagger.json ├── Slides.pdf └── Slides.xps ├── 07_CommonDataService ├── Lab.pdf ├── Lab.xps ├── Lab │ └── ProductManagement.zip ├── Slides.pdf └── Slides.xps ├── 08_PowerAppsPortals ├── Lab.pdf ├── Lab.xps ├── Lab │ ├── DisplayProductsUsingLiquid.html │ ├── landingpage.png │ └── wingtip_logo.png ├── Slides.pdf └── Slides.xps └── 09_PowerBI ├── Lab.pdf ├── Lab.xps ├── Lab └── Wingtip Sales Analysis.pbix ├── Slides.pdf └── Slides.xps /AboutTheLabs.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/AboutTheLabs.pdf -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Critical Path Training 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## Power Platform Master Class 2 | This repo contains the student files for **PPMC: Power Platform Master Class**. 3 | -------------------------------------------------------------------------------- /Student/Extras/BBSPA_ListGenerator/BBSPA_ListGenerator.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.28307.572 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BBSPA_ListGenerator", "BBSPA_ListGenerator\BBSPA_ListGenerator.csproj", "{153EE245-B87F-410B-A01C-D347452D284C}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {153EE245-B87F-410B-A01C-D347452D284C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {153EE245-B87F-410B-A01C-D347452D284C}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {153EE245-B87F-410B-A01C-D347452D284C}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {153EE245-B87F-410B-A01C-D347452D284C}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {918F39FE-7172-4F8E-97B7-6EEF6223FC91} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /Student/Extras/BBSPA_ListGenerator/BBSPA_ListGenerator/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Student/Extras/BBSPA_ListGenerator/BBSPA_ListGenerator/BBSPA_ListGenerator.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {153EE245-B87F-410B-A01C-D347452D284C} 8 | Exe 9 | BBSPA_ListGenerator 10 | BBSPA_ListGenerator 11 | v4.6.1 12 | 512 13 | true 14 | true 15 | 16 | 17 | AnyCPU 18 | true 19 | full 20 | false 21 | bin\Debug\ 22 | DEBUG;TRACE 23 | prompt 24 | 4 25 | 26 | 27 | AnyCPU 28 | pdbonly 29 | true 30 | bin\Release\ 31 | TRACE 32 | prompt 33 | 4 34 | 35 | 36 | 37 | ..\packages\Microsoft.SharePointOnline.CSOM.16.1.9021.1200\lib\net45\Microsoft.Office.Client.Policy.dll 38 | 39 | 40 | ..\packages\Microsoft.SharePointOnline.CSOM.16.1.9021.1200\lib\net45\Microsoft.Office.Client.TranslationServices.dll 41 | 42 | 43 | ..\packages\Microsoft.SharePointOnline.CSOM.16.1.9021.1200\lib\net45\Microsoft.Office.SharePoint.Tools.dll 44 | 45 | 46 | ..\packages\Microsoft.SharePointOnline.CSOM.16.1.9021.1200\lib\net45\Microsoft.Online.SharePoint.Client.Tenant.dll 47 | 48 | 49 | ..\packages\Microsoft.SharePointOnline.CSOM.16.1.9021.1200\lib\net45\Microsoft.ProjectServer.Client.dll 50 | 51 | 52 | ..\packages\Microsoft.SharePointOnline.CSOM.16.1.9021.1200\lib\net45\Microsoft.SharePoint.Client.dll 53 | 54 | 55 | ..\packages\Microsoft.SharePointOnline.CSOM.16.1.9021.1200\lib\net45\Microsoft.SharePoint.Client.DocumentManagement.dll 56 | 57 | 58 | ..\packages\Microsoft.SharePointOnline.CSOM.16.1.9021.1200\lib\net45\Microsoft.SharePoint.Client.Publishing.dll 59 | 60 | 61 | ..\packages\Microsoft.SharePointOnline.CSOM.16.1.9021.1200\lib\net45\Microsoft.SharePoint.Client.Runtime.dll 62 | 63 | 64 | ..\packages\Microsoft.SharePointOnline.CSOM.16.1.9021.1200\lib\net45\Microsoft.SharePoint.Client.Runtime.Windows.dll 65 | 66 | 67 | ..\packages\Microsoft.SharePointOnline.CSOM.16.1.9021.1200\lib\net45\Microsoft.SharePoint.Client.Search.dll 68 | 69 | 70 | ..\packages\Microsoft.SharePointOnline.CSOM.16.1.9021.1200\lib\net45\Microsoft.SharePoint.Client.Search.Applications.dll 71 | 72 | 73 | ..\packages\Microsoft.SharePointOnline.CSOM.16.1.9021.1200\lib\net45\Microsoft.SharePoint.Client.Taxonomy.dll 74 | 75 | 76 | ..\packages\Microsoft.SharePointOnline.CSOM.16.1.9021.1200\lib\net45\Microsoft.SharePoint.Client.UserProfiles.dll 77 | 78 | 79 | ..\packages\Microsoft.SharePointOnline.CSOM.16.1.9021.1200\lib\net45\Microsoft.SharePoint.Client.WorkflowServices.dll 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | Designer 100 | 101 | 102 | 103 | 104 | -------------------------------------------------------------------------------- /Student/Extras/BBSPA_ListGenerator/BBSPA_ListGenerator/Models/RandomCustomerGenerator.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace BBSPA_ListGenerator { 8 | 9 | #region "Classes for generating sample customer data" 10 | 11 | public class CustomerLocationData { 12 | public string AreaCode { get; set; } 13 | public string City { get; set; } 14 | public string State { get; set; } 15 | public string ZipCode { get; set; } 16 | } 17 | 18 | public class CustomerData { 19 | public string FirstName { get; set; } 20 | public string LastName { get; set; } 21 | public string Company { get; set; } 22 | public string EmailAddress { get; set; } 23 | public string WorkPhone { get; set; } 24 | public string HomePhone { get; set; } 25 | public string Address { get; set; } 26 | public string City { get; set; } 27 | public string State { get; set; } 28 | public string ZipCode { get; set; } 29 | } 30 | 31 | #endregion 32 | 33 | class RandomCustomerGenerator { 34 | 35 | private static Random RandomNumberGenerator = new Random(7); 36 | private static int customerCount = 0; 37 | 38 | #region "Sample Customer Creation Data" 39 | 40 | private static string[] FemaleFirstNames = new string[] { 41 | "Abby", "Abigail", "Ada", "Addie", "Adela", "Adele", "Adeline", "Adrian", "Adriana", "Adrienne", "Agnes", "Aida", "Aileen", "Aimee", "Aisha", "Alana", 42 | "Alba", "Alberta", "Alejandra", "Alexandra", "Alexandria", "Alexis", "Alfreda", "Alice", "Alicia", "Aline", "Alisa", "Alisha", "Alison", "Alissa", "Allie", "Allison", 43 | "Allyson", "Alma", "Alta", "Althea", "Alyce", "Alyson", "Alyssa", "Amalia", "Amanda", "Amber", "Amelia", "Amie", "Amparo", "Amy", "Ana", "Anastasia", 44 | "Andrea", "Angel", "Angela", "Angelia", "Angelica", "Angelina", "Angeline", "Angelique", "Angelita", "Angie", "Anita", "Ann", "Anna", "Annabelle", "Anne", "Annette", 45 | "Annie", "Annmarie", "Antoinette", "Antonia", "April", "Araceli", "Arlene", "Arline", "Ashlee", "Ashley", "Audra", "Audrey", "Augusta", "Aurelia", "Aurora", "Autumn", 46 | "Ava", "Avis", "Barbara", "Barbra", "Beatrice", "Beatriz", "Becky", "Belinda", "Benita", "Bernadette", "Bernadine", "Bernice", "Berta", "Bertha", "Bertie", "Beryl", 47 | "Bessie", "Beth", "Bethany", "Betsy", "Bette", "Bettie", "Betty", "Bettye", "Beulah", "Beverley", "Beverly", "Bianca", "Billie", "Blanca", "Blanche", "Bobbi", 48 | "Bobbie", "Bonita", "Bonnie", "Brandi", "Brandie", "Brandy", "Brenda", "Briana", "Brianna", "Bridget", "Bridgett", "Bridgette", "Brigitte", "Britney", "Brittany", "Brittney", 49 | "Brooke", "Caitlin", "Callie", "Camille", "Candace", "Candice", "Candy", "Cara", "Carey", "Carissa", "Carla", "Carlene", "Carly", "Carmela", "Carmella", "Carmen", 50 | "Carol", "Carole", "Carolina", "Caroline", "Carolyn", "Carrie", "Casandra", "Casey", "Cassandra", "Cassie", "Catalina", "Catherine", "Cathleen", "Cathryn", "Cathy", "Cecelia", 51 | "Cecile", "Cecilia", "Celeste", "Celia", "Celina", "Chandra", "Charity", "Charlene", "Charlotte", "Charmaine", "Chasity", "Chelsea", "Cheri", "Cherie", "Cherry", "Cheryl", 52 | "Chris", "Christa", "Christi", "Christian", "Christie", "Christina", "Christine", "Christy", "Chrystal", "Cindy", "Claire", "Clara", "Clare", "Clarice", "Clarissa", "Claudette", 53 | "Claudia", "Claudine", "Cleo", "Coleen", "Colette", "Colleen", "Concepcion", "Concetta", "Connie", "Constance", "Consuelo", "Cora", "Corina", "Corine", "Corinne", "Cornelia", 54 | "Corrine", "Courtney", "Cristina", "Crystal", "Cynthia", "Daisy", "Dale", "Dana", "Danielle", "Daphne", "Darcy", "Darla", "Darlene", "Dawn", "Deana", "Deann", 55 | "Deanna", "Deanne", "Debbie", "Debora", "Deborah", "Debra", "Dee", "Deena", "Deidre", "Deirdre", "Delia", "Della", "Delores", "Deloris", "Dena", "Denise", 56 | "Desiree", "Diana", "Diane", "Diann", "Dianna", "Dianne", "Dina", "Dionne", "Dixie", "Dollie", "Dolly", "Dolores", "Dominique", "Dona", "Donna", "Dora", 57 | "Doreen", "Doris", "Dorothea", "Dorothy", "Dorthy", "Earlene", "Earline", "Earnestine", "Ebony", "Eddie", "Edith", "Edna", "Edwina", "Effie", "Eileen", "Elaine", 58 | "Elba", "Eleanor", "Elena", "Elinor", "Elisa", "Elisabeth", "Elise", "Eliza", "Elizabeth", "Ella", "Ellen", "Elma", "Elnora", "Eloise", "Elsa", "Elsie", 59 | "Elva", "Elvia", "Elvira", "Emilia", "Emily", "Emma", "Enid", "Erica", "Ericka", "Erika", "Erin", "Erma", "Erna", "Ernestine", "Esmeralda", "Esperanza", 60 | "Essie", "Estela", "Estella", "Estelle", "Ester", "Esther", "Ethel", "Etta", "Eugenia", "Eula", "Eunice", "Eva", "Evangelina", "Evangeline", "Eve", "Evelyn", 61 | "Faith", "Fannie", "Fanny", "Fay", "Faye", "Felecia", "Felicia", "Fern", "Flora", "Florence", "Florine", "Flossie", "Fran", "Frances", "Francesca", "Francine", 62 | "Francis", "Francisca", "Frankie", "Freda", "Freida", "Frieda", "Gabriela", "Gabrielle", "Gail", "Gale", "Gay", "Gayle", "Gena", "Geneva", "Genevieve", "Georgette", 63 | "Georgia", "Georgina", "Geraldine", "Gertrude", "Gilda", "Gina", "Ginger", "Gladys", "Glenda", "Glenna", "Gloria", "Goldie", "Grace", "Gracie", "Graciela", "Greta", 64 | "Gretchen", "Guadalupe", "Gwen", "Gwendolyn", "Haley", "Hallie", "Hannah", "Harriet", "Harriett", "Hattie", "Hazel", "Heather", "Heidi", "Helen", "Helena", "Helene", 65 | "Helga", "Henrietta", "Herminia", "Hester", "Hilary", "Hilda", "Hillary", "Hollie", "Holly", "Hope", "Ida", "Ila", "Ilene", "Imelda", "Imogene", "Ina", 66 | "Ines", "Inez", "Ingrid", "Irene", "Iris", "Irma", "Isabel", "Isabella", "Isabelle", "Iva", "Ivy", "Jackie", "Jacklyn", "Jaclyn", "Jacqueline", "Jacquelyn", 67 | "Jaime", "James", "Jami", "Jamie", "Jan", "Jana", "Jane", "Janell", "Janelle", "Janet", "Janette", "Janice", "Janie", "Janine", "Janis", "Janna", 68 | "Jannie", "Jasmine", "Jayne", "Jean", "Jeanette", "Jeanie", "Jeanine", "Jeanne", "Jeannette", "Jeannie", "Jeannine", "Jenifer", "Jenna", "Jennie", "Jennifer", "Jenny", 69 | "Jeri", "Jerri", "Jerry", "Jessica", "Jessie", "Jewel", "Jewell", "Jill", "Jillian", "Jimmie", "Jo", "Joan", "Joann", "Joanna", "Joanne", "Jocelyn", 70 | "Jodi", "Jodie", "Jody", "Johanna", "John", "Johnnie", "Jolene", "Joni", "Jordan", "Josefa", "Josefina", "Josephine", "Josie", "Joy", "Joyce", "Juana", 71 | "Juanita", "Judith", "Judy", "Julia", "Juliana", "Julianne", "Julie", "Juliet", "Juliette", "June", "Justine", "Kaitlin", "Kara", "Karen", "Kari", "Karin", 72 | "Karina", "Karla", "Karyn", "Kasey", "Kate", "Katelyn", "Katharine", "Katherine", "Katheryn", "Kathie", "Kathleen", "Kathrine", "Kathryn", "Kathy", "Katie", "Katina", 73 | "Katrina", "Katy", "Kay", "Kaye", "Kayla", "Keisha", "Kelley", "Kelli", "Kellie", "Kelly", "Kelsey", "Kendra", "Kenya", "Keri", "Kerri", "Kerry", 74 | "Kim", "Kimberley", "Kimberly", "Kirsten", "Kitty", "Kris", "Krista", "Kristen", "Kristi", "Kristie", "Kristin", "Kristina", "Kristine", "Kristy", "Krystal", "Lacey", 75 | "Lacy", "Ladonna", "Lakeisha", "Lakisha", "Lana", "Lara", "Latasha", "Latisha", "Latonya", "Latoya", "Laura", "Laurel", "Lauren", "Lauri", "Laurie", "Laverne", 76 | "Lavonne", "Lawanda", "Lea", "Leah", "Leann", "Leanna", "Leanne", "Lee", "Leigh", "Leila", "Lela", "Lelia", "Lena", "Lenora", "Lenore", "Leola", 77 | "Leona", "Leonor", "Lesa", "Lesley", "Leslie", "Lessie", "Leta", "Letha", "Leticia", "Letitia", "Lidia", "Lila", "Lilia", "Lilian", "Liliana", "Lillian", 78 | "Lillie", "Lilly", "Lily", "Lina", "Linda", "Lindsay", "Lindsey", "Lisa", "Liz", "Liza", "Lizzie", "Lois", "Lola", "Lolita", "Lora", "Loraine", 79 | "Lorena", "Lorene", "Loretta", "Lori", "Lorie", "Lorna", "Lorraine", "Lorrie", "Lottie", "Lou", "Louella", "Louisa", "Louise", "Lourdes", "Luann", "Lucia", 80 | "Lucile", "Lucille", "Lucinda", "Lucy", "Luella", "Luisa", "Lula", "Lupe", "Luz", "Lydia", "Lynda", "Lynette", "Lynn", "Lynne", "Lynnette", "Mabel", 81 | "Mable", "Madeleine", "Madeline", "Madelyn", "Madge", "Mae", "Magdalena", "Maggie", "Mai", "Malinda", "Mallory", "Mamie", "Mandy", "Manuela", "Mara", "Marcella", 82 | "Marci", "Marcia", "Marcie", "Marcy", "Margaret", "Margarita", "Margery", "Margie", "Margo", "Margret", "Marguerite", "Mari", "Maria", "Marian", "Mariana", "Marianne", 83 | "Maribel", "Maricela", "Marie", "Marietta", "Marilyn", "Marina", "Marion", "Marisa", "Marisol", "Marissa", "Maritza", "Marjorie", "Marla", "Marlene", "Marquita", "Marsha", 84 | "Marta", "Martha", "Martina", "Marva", "Mary", "Maryann", "Maryanne", "Maryellen", "Marylou", "Matilda", "Mattie", "Maude", "Maura", "Maureen", "Mavis", "Maxine", 85 | "May", "Mayra", "Meagan", "Megan", "Meghan", "Melanie", "Melba", "Melinda", "Melisa", "Melissa", "Melody", "Melva", "Mercedes", "Meredith", "Merle", "Mia", 86 | "Michael", "Michele", "Michelle", "Milagros", "Mildred", "Millicent", "Millie", "Mindy", "Minerva", "Minnie", "Miranda", "Miriam", "Misty", "Mitzi", "Mollie", "Molly", 87 | "Mona", "Monica", "Monique", "Morgan", "Muriel", "Myra", "Myrna", "Myrtle", "Nadia", "Nadine", "Nancy", "Nanette", "Nannie", "Naomi", "Natalia", "Natalie", 88 | "Natasha", "Nelda", "Nell", "Nellie", "Nettie", "Neva", "Nichole", "Nicole", "Nikki", "Nina", "Nita", "Noelle", "Noemi", "Nola", "Nona", "Nora", 89 | "Noreen", "Norma", "Odessa", "Ofelia", "Ola", "Olga", "Olive", "Olivia", "Ollie", "Opal", "Ophelia", "Ora", "Paige", "Pam", "Pamela", "Pansy", 90 | "Pat", "Patrica", "Patrice", "Patricia", "Patsy", "Patti", "Patty", "Paula", "Paulette", "Pauline", "Pearl", "Pearlie", "Peggy", "Penelope", "Penny", "Petra", 91 | "Phoebe", "Phyllis", "Polly", "Priscilla", "Queen", "Rachael", "Rachel", "Rachelle", "Rae", "Ramona", "Randi", "Raquel", "Reba", "Rebecca", "Rebekah", "Regina", 92 | "Rena", "Rene", "Renee", "Reva", "Reyna", "Rhea", "Rhoda", "Rhonda", "Rita", "Robbie", "Robert", "Roberta", "Robin", "Robyn", "Rochelle", "Ronda", 93 | "Rosa", "Rosalie", "Rosalind", "Rosalinda", "Rosalyn", "Rosanna", "Rosanne", "Rosario", "Rose", "Roseann", "Rosella", "Rosemarie", "Rosemary", "Rosetta", "Rosie", "Roslyn", 94 | "Rowena", "Roxanne", "Roxie", "Ruby", "Ruth", "Ruthie", "Sabrina", "Sadie", "Sallie", "Sally", "Samantha", "Sandra", "Sandy", "Sara", "Sarah", "Sasha", 95 | "Saundra", "Savannah", "Selena", "Selma", "Serena", "Shana", "Shanna", "Shannon", "Shari", "Sharlene", "Sharon", "Sharron", "Shauna", "Shawn", "Shawna", "Sheena", 96 | "Sheila", "Shelby", "Shelia", "Shelley", "Shelly", "Sheree", "Sheri", "Sherri", "Sherrie", "Sherry", "Sheryl", "Shirley", "Silvia", "Simone", "Socorro", "Sofia", 97 | "Sondra", "Sonia", "Sonja", "Sonya", "Sophia", "Sophie", "Stacey", "Staci", "Stacie", "Stacy", "Stefanie", "Stella", "Stephanie", "Sue", "Summer", "Susan", 98 | "Susana", "Susanna", "Susanne", "Susie", "Suzanne", "Suzette", "Sybil", "Sylvia", "Tabatha", "Tabitha", "Tamara", "Tameka", "Tamera", "Tami", "Tamika", "Tammi", 99 | "Tammie", "Tammy", "Tamra", "Tania", "Tanisha", "Tanya", "Tara", "Tasha", "Taylor", "Teresa", "Teri", "Terra", "Terri", "Terrie", "Terry", "Tessa", 100 | "Thelma", "Theresa", "Therese", "Tia", "Tiffany", "Tina", "Tisha", "Tommie", "Toni", "Tonia", "Tonya", "Tracey", "Traci", "Tracie", "Tracy", "Tricia", 101 | "Trina", "Trisha", "Trudy", "Twila", "Ursula", "Valarie", "Valeria", "Valerie", "Vanessa", "Velma", "Vera", "Verna", "Veronica", "Vicki", "Vickie", "Vicky", 102 | "Victoria", "Vilma", "Viola", "Violet", "Virgie", "Virginia", "Vivian", "Vonda", "Wanda", "Wendi", "Wendy", "Whitney", "Wilda", "Willa", "Willie", "Wilma", 103 | "Winifred", "Winnie", "Yesenia", "Yolanda", "Young", "Yvette", "Yvonne", "Zelma" 104 | }; 105 | 106 | private static string[] MaleFirstNames = new string[] { 107 | "Aaron", "Abdul", "Abe", "Abel", "Abraham", "Abram", "Adam", "Adolfo", 108 | "Adrian", "Ahmed", "Al", "Alan", "Albert", "Alberto", "Alden", "Alec", "Alejandro", "Alex", "Alexander", "Alexis", "Alfonzo", "Alfred", "Allan", "Alonso", 109 | "Alonzo", "Alphonse", "Alphonso", "Alton", "Alva", "Alvaro", "Alvin", "Amado", "Ambrose", "Amos", "Anderson", "Andre", "Andrea", "Andres", "Andrew", "Andy", 110 | "Angel", "Angelo", "Anibal", "Anthony", "Antione", "Antoine", "Anton", "Antone", "Antonia", "Antonio", "Antony", "Antwan", "Archie", "Arden", "Ariel", "Arlen", 111 | "Arlie", "Armand", "Armando", "Arnold", "Arnoldo", "Arnulfo", "Aron", "Arron", "Art", "Arthur", "Arturo", "Asa", "Ashley", "Aubrey", "August", "Augustine", 112 | "Augustus", "Aurelio", "Austin", "Avery", "Barney", "Barrett", "Barry", "Bart", "Barton", "Basil", "Beau", "Ben", "Benedict", "Benito", "Benjamin", "Bennett", 113 | "Bennie", "Benny", "Benton", "Bernard", "Bernardo", "Bernie", "Berry", "Bert", "Bertram", "Bill", "Billie", "Billy", "Blaine", "Blair", "Blake", "Bo", 114 | "Bob", "Bob", "Bob", "Bob", "Bob", "Bob", "Bob", "Bob", "Bob", "Bobbie", "Bobby", "Booker", "Boris", "Boyce", "Boyd", "Brad", 115 | "Bradford", "Bradley", "Bradly", "Brady", "Brain", "Branden", "Brandon", "Brant", "Brendan", "Brendon", "Brent", "Brenton", "Bret", "Brett", "Brian", "Brice", 116 | "Britt", "Brock", "Broderick", "Brooks", "Bruce", "Bruno", "Bryan", "Bryant", "Bryce", "Bryon", "Buck", "Bud", "Buddy", "Buford", "Burl", "Burt", 117 | "Burton", "Buster", "Byron", "Caleb", "Calvin", "Cameron", "Carey", "Carl", "Carlo", "Carlos", "Carlton", "Carmelo", "Carmen", "Carmine", "Carol", "Carrol", 118 | "Carroll", "Carson", "Carter", "Cary", "Casey", "Cecil", "Cedric", "Cedrick", "Cesar", "Chad", "Chadwick", "Chance", "Chang", "Charles", "Charley", "Charlie", 119 | "Chas", "Chase", "Chauncey", "Chester", "Chet", "Chi", "Chong", "Chris", "Christian", "Christoper", "Christopher", "Chuck", "Chung", "Clair", "Clarence", "Clark", 120 | "Claud", "Claude", "Claudio", "Clay", "Clayton", "Clement", "Clemente", "Cleo", "Cletus", "Cleveland", "Cliff", "Clifford", "Clifton", "Clint", "Clinton", "Clyde", 121 | "Cody", "Colby", "Cole", "Coleman", "Colin", "Collin", "Colton", "Columbus", "Connie", "Conrad", "Cordell", "Corey", "Cornelius", "Cornell", "Cortez", "Cory", 122 | "Courtney", "Coy", "Craig", "Cristobal", "Cristopher", "Cruz", "Curt", "Curtis", "Cyril", "Cyrus", "Dale", "Dallas", "Dalton", "Damian", "Damien", "Damion", 123 | "Damon", "Dan", "Dana", "Dane", "Danial", "Daniel", "Danilo", "Dannie", "Danny", "Dante", "Darell", "Daren", "Darin", "Dario", "Darius", "Darnell", 124 | "Daron", "Darrel", "Darrell", "Darren", "Darrick", "Darrin", "Darron", "Darryl", "Darwin", "Daryl", "Dave", "David", "Davis", "Dean", "Deandre", "Deangelo", 125 | "Dee", "Del", "Delbert", "Delmar", "Delmer", "Demarcus", "Demetrius", "Denis", "Dennis", "Denny", "Denver", "Deon", "Derek", "Derick", "Derrick", "Deshawn", 126 | "Desmond", "Devin", "Devon", "Dewayne", "Dewey", "Dewitt", "Dexter", "Dick", "Diego", "Dillon", "Dino", "Dion", "Dirk", "Domenic", "Domingo", "Dominic", 127 | "Dominick", "Dominique", "Don", "Donald", "Dong", "Donn", "Donnell", "Donnie", "Donny", "Donovan", "Donte", "Dorian", "Dorsey", "Doug", "Douglas", "Douglass", 128 | "Doyle", "Drew", "Duane", "Dudley", "Duncan", "Dustin", "Dusty", "Dwain", "Dwayne", "Dwight", "Dylan", "Earl", "Earle", "Earnest", "Ed", "Eddie", 129 | "Eddy", "Edgar", "Edgardo", "Edison", "Edmond", "Edmund", "Edmundo", "Eduardo", "Edward", "Edwardo", "Edwin", "Efrain", "Efren", "Elbert", "Elden", "Eldon", 130 | "Eldridge", "Eli", "Elias", "Elijah", "Eliseo", "Elisha", "Elliot", "Elliott", "Ellis", "Ellsworth", "Elmer", "Elmo", "Eloy", "Elroy", "Elton", "Elvin", 131 | "Elvis", "Elwood", "Emanuel", "Emerson", "Emery", "Emil", "Emile", "Emilio", "Emmanuel", "Emmett", "Emmitt", "Emory", "Enoch", "Enrique", "Erasmo", "Eric", 132 | "Erich", "Erick", "Erik", "Erin", "Ernest", "Ernesto", "Ernie", "Errol", "Ervin", "Erwin", "Esteban", "Ethan", "Eugene", "Eugenio", "Eusebio", "Evan", 133 | "Everett", "Everette", "Ezekiel", "Ezequiel", "Ezra", "Fabian", "Faustino", "Fausto", "Federico", "Felipe", "Felix", "Felton", "Ferdinand", "Fermin", "Fernando", "Fidel", 134 | "Filiberto", "Fletcher", "Florencio", "Florentino", "Floyd", "Forest", "Forrest", "Foster", "Frances", "Francesco", "Francis", "Francisco", "Frank", "Frankie", "Franklin", "Franklyn", 135 | "Fred", "Freddie", "Freddy", "Frederic", "Frederick", "Fredric", "Fredrick", "Freeman", "Fritz", "Gabriel", "Gail", "Gale", "Galen", "Garfield", "Garland", "Garret", 136 | "Garrett", "Garry", "Garth", "Gary", "Gaston", "Gavin", "Gayle", "Gaylord", "Genaro", "Gene", "Geoffrey", "George", "Gerald", "Geraldo", "Gerard", "Gerardo", 137 | "German", "Gerry", "Gil", "Gilbert", "Gilberto", "Gino", "Giovanni", "Giuseppe", "Glen", "Glenn", "Gonzalo", "Gordon", "Grady", "Graham", "Graig", "Grant", 138 | "Granville", "Greg", "Gregg", "Gregorio", "Gregory", "Grover", "Guadalupe", "Guillermo", "Gus", "Gustavo", "Guy", "Hai", "Hal", "Hank", "Hans", "Harlan", 139 | "Harland", "Harley", "Harold", "Harris", "Harrison", "Harry", "Harvey", "Hassan", "Hayden", "Haywood", "Heath", "Hector", "Henry", "Herb", "Herbert", "Heriberto", 140 | "Herman", "Herschel", "Hershel", "Hilario", "Hilton", "Hipolito", "Hiram", "Hobert", "Hollis", "Homer", "Hong", "Horace", "Horacio", "Hosea", "Houston", "Howard", 141 | "Hoyt", "Hubert", "Huey", "Hugh", "Hugo", "Humberto", "Hung", "Hunter", "Hyman", "Ian", "Ignacio", "Ike", "Ira", "Irvin", "Irving", "Irwin", 142 | "Isaac", "Isaiah", "Isaias", "Isiah", "Isidro", "Ismael", "Israel", "Isreal", "Issac", "Ivan", "Ivory", "Jacinto", "Jack", "Jackie", "Jackson", "Jacob", 143 | "Jacques", "Jae", "Jaime", "Jake", "Jamaal", "Jamal", "Jamar", "Jame", "Jamel", "James", "Jamey", "Jamie", "Jamison", "Jan", "Jared", "Jarod", 144 | "Jarred", "Jarrett", "Jarrod", "Jarvis", "Jason", "Jasper", "Javier", "Jay", "Jayson", "Jc", "Jean", "Jed", "Jeff", "Jefferey", "Jefferson", "Jeffery", 145 | "Jeffrey", "Jeffry", "Jerald", "Jeramy", "Jere", "Jeremiah", "Jeremy", "Jermaine", "Jerold", "Jerome", "Jeromy", "Jerrell", "Jerrod", "Jerrold", "Jerry", "Jess", 146 | "Jesse", "Jessie", "Jesus", "Jewel", "Jewell", "Jim", "Jimmie", "Jimmy", "Joan", "Joaquin", "Jody", "Joe", "Joel", "Joesph", "Joey", "John", 147 | "Johnathan", "Johnathon", "Johnie", "Johnnie", "Johnny", "Johnson", "Jon", "Jonah", "Jonas", "Jonathan", "Jonathon", "Jordan", "Jordon", "Jorge", "Jose", "Josef", 148 | "Joseph", "Josh", "Joshua", "Josiah", "Jospeh", "Josue", "Juan", "Jude", "Judson", "Jules", "Julian", "Julio", "Julius", "Junior", "Justin", "Kareem", 149 | "Karl", "Kasey", "Keenan", "Keith", "Kelley", "Kelly", "Kelvin", "Ken", "Kendall", "Kendrick", "Keneth", "Kenneth", "Kennith", "Kenny", "Kent", "Kenton", 150 | "Kermit", "Kerry", "Keven", "Kevin", "Kieth", "Kim", "King", "Kip", "Kirby", "Kirk", "Korey", "Kory", "Kraig", "Kris", "Kristofer", "Kristopher", 151 | "Kurt", "Kurtis", "Kyle", "Lacy", "Lamar", "Lamont", "Lance", "Landon", "Lane", "Lanny", "Larry", "Lauren", "Laurence", "Lavern", "Laverne", "Lawerence", 152 | "Lawrence", "Lazaro", "Leandro", "Lee", "Leif", "Leigh", "Leland", "Lemuel", "Len", "Lenard", "Lenny", "Leo", "Leon", "Leonard", "Leonardo", "Leonel", 153 | "Leopoldo", "Leroy", "Les", "Lesley", "Leslie", "Lester", "Levi", "Lewis", "Lincoln", "Lindsay", "Lindsey", "Lino", "Linwood", "Lionel", "Lloyd", "Logan", 154 | "Lon", "Long", "Lonnie", "Lonny", "Loren", "Lorenzo", "Lou", "Louie", "Louis", "Lowell", "Loyd", "Lucas", "Luciano", "Lucien", "Lucio", "Lucius", 155 | "Luigi", "Luis", "Luke", "Lupe", "Luther", "Lyle", "Lyman", "Lyndon", "Lynn", "Lynwood", "Mac", "Mack", "Major", "Malcolm", "Malcom", "Malik", 156 | "Man", "Manual", "Manuel", "Marc", "Marcel", "Marcelino", "Marcellus", "Marcelo", "Marco", "Marcos", "Marcus", "Margarito", "Maria", "Mariano", "Mario", "Marion", 157 | "Mark", "Markus", "Marlin", "Marlon", "Marquis", "Marshall", "Martin", "Marty", "Marvin", "Mary", "Mason", "Mathew", "Matt", "Matthew", "Maurice", "Mauricio", 158 | "Mauro", "Max", "Maximo", "Maxwell", "Maynard", "Mckinley", "Mel", "Melvin", "Merle", "Merlin", "Merrill", "Mervin", "Micah", "Michael", "Michal", "Michale", 159 | "Micheal", "Michel", "Mickey", "Miguel", "Mike", "Mikel", "Milan", "Miles", "Milford", "Millard", "Milo", "Milton", "Minh", "Miquel", "Mitch", "Mitchel", 160 | "Mitchell", "Modesto", "Mohamed", "Mohammad", "Mohammed", "Moises", "Monroe", "Monte", "Monty", "Morgan", "Morris", "Morton", "Mose", "Moses", "Moshe", "Murray", 161 | "Myles", "Myron", "Napoleon", "Nathan", "Nathanael", "Nathanial", "Nathaniel", "Neal", "Ned", "Neil", "Nelson", "Nestor", "Neville", "Newton", "Nicholas", "Nick", 162 | "Nickolas", "Nicky", "Nicolas", "Nigel", "Noah", "Noble", "Noe", "Noel", "Nolan", "Norbert", "Norberto", "Norman", "Normand", "Norris", "Numbers", "Octavio", 163 | "Odell", "Odis", "Olen", "Olin", "Oliver", "Ollie", "Omar", "Omer", "Oren", "Orlando", "Orval", "Orville", "Oscar", "Osvaldo", "Oswaldo", "Otha", 164 | "Otis", "Otto", "Owen", "Pablo", "Palmer", "Paris", "Parker", "Pasquale", "Pat", "Patricia", "Patrick", "Paul", "Pedro", "Percy", "Perry", "Pete", 165 | "Peter", "Phil", "Philip", "Phillip", "Pierre", "Porfirio", "Porter", "Preston", "Prince", "Quentin", "Quincy", "Quinn", "Quintin", "Quinton", "Rafael", "Raleigh", 166 | "Ralph", "Ramiro", "Ramon", "Randal", "Randall", "Randell", "Randolph", "Randy", "Raphael", "Rashad", "Raul", "Ray", "Rayford", "Raymon", "Raymond", "Raymundo", 167 | "Reed", "Refugio", "Reggie", "Reginald", "Reid", "Reinaldo", "Renaldo", "Renato", "Rene", "Reuben", "Rex", "Rey", "Reyes", "Reynaldo", "Rhett", "Ricardo", 168 | "Rich", "Richard", "Richie", "Rick", "Rickey", "Rickie", "Ricky", "Rico", "Rigoberto", "Riley", "Rob", "Robbie", "Robby", "Robert", "Roberto", "Robin", 169 | "Robt", "Rocco", "Rocky", "Rod", "Roderick", "Rodger", "Rodney", "Rodolfo", "Rodrick", "Rodrigo", "Rogelio", "Roger", "Roland", "Rolando", "Rolf", "Rolland", 170 | "Roman", "Romeo", "Ron", "Ronald", "Ronnie", "Ronny", "Roosevelt", "Rory", "Rosario", "Roscoe", "Rosendo", "Ross", "Roy", "Royal", "Royce", "Ruben", 171 | "Rubin", "Rudolf", "Rudolph", "Rudy", "Rueben", "Rufus", "Rupert", "Russ", "Russel", "Russell", "Rusty", "Ryan", "Sal", "Salvador", "Salvatore", "Sam", 172 | "Sammie", "Sammy", "Samual", "Samuel", "Sandy", "Sanford", "Sang", "Santiago", "Santo", "Santos", "Saul", "Scot", "Scott", "Scottie", "Scotty", "Sean", 173 | "Sebastian", "Sergio", "Seth", "Seymour", "Shad", "Shane", "Shannon", "Shaun", "Shawn", "Shayne", "Shelby", "Sheldon", "Shelton", "Sherman", "Sherwood", "Shirley", 174 | "Shon", "Sid", "Sidney", "Silas", "Simon", "Sol", "Solomon", "Son", "Sonny", "Spencer", "Stacey", "Stacy", "Stan", "Stanford", "Stanley", "Stanton", 175 | "Stefan", "Stephan", "Stephen", "Sterling", "Steve", "Steven", "Stevie", "Stewart", "Stuart", "Sung", "Sydney", "Sylvester", "Tad", "Tanner", "Taylor", "Ted", 176 | "Teddy", "Teodoro", "Terence", "Terrance", "Terrell", "Terrence", "Terry", "Thad", "Thaddeus", "Thanh", "Theo", "Theodore", "Theron", "Thomas", "Thurman", "Tim", 177 | "Timmy", "Timothy", "Titus", "Tobias", "Toby", "Tod", "Todd", "Tom", "Tomas", "Tommie", "Tommy", "Toney", "Tony", "Tory", "Tracey", "Tracy", 178 | "Travis", "Trent", "Trenton", "Trevor", "Trey", "Trinidad", "Tristan", "Troy", "Truman", "Tuan", "Ty", "Tyler", "Tyree", "Tyrell", "Tyron", "Tyrone", 179 | "Tyson", "Ulysses", "Val", "Valentin", "Valentine", "Van", "Vance", "Vaughn", "Vern", "Vernon", "Vicente", "Victor", "Vince", "Vincent", "Vincenzo", "Virgil", 180 | "Virgilio", "Vito", "Von", "Wade", "Waldo", "Walker", "Wallace", "Wally", "Walter", "Walton", "Ward", "Warner", "Warren", "Waylon", "Wayne", "Weldon", 181 | "Wendell", "Werner", "Wes", "Wesley", "Weston", "Whitney", "Wilber", "Wilbert", "Wilbur", "Wilburn", "Wiley", "Wilford", "Wilfred", "Wilfredo", "Will", "Willard", 182 | "William", "Williams", "Willian", "Willie", "Willis", "Willy", "Wilmer", "Wilson", "Wilton", "Winford", "Winfred", "Winston", "Wm", "Woodrow", "Wyatt", "Xavier", 183 | "Yong", "Young", "Zachariah", "Zachary", "Zachery", "Zack", "Zackary", "Zane" 184 | }; 185 | 186 | private static string[] LastNames = new string[] { 187 | "Abbott", "Acosta", "Adams", "Adkins", "Aguilar", "Albert", "Alexander", "Alford", "Allen", "Alston", "Alvarado", "Alvarez", "Anderson", "Andrews", "Anthony", "Armstrong", 188 | "Arnold", "Ashley", "Atkins", "Atkinson", "Austin", "Avery", "Ayala", "Ayers", "Bailey", "Baird", "Baker", "Baldwin", "Ball", "Ballard", "Banks", "Barber", 189 | "Barker", "Barlow", "Barnes", "Barnett", "Barr", "Barrera", "Barrett", "Barron", "Barry", "Bartlett", "Barton", "Bass", "Bates", "Battle", "Bauer", "Baxter", 190 | "Beach", "Bean", "Beard", "Beasley", "Beck", "Becker", "Bell", "Bender", "Benjamin", "Bennett", "Benson", "Bentley", "Benton", "Berg", "Berger", "Bernard", 191 | "Berry", "Best", "Bird", "Bishop", "Black", "Blackburn", "Blackwell", "Blair", "Blake", "Blanchard", "Blankenship", "Blevins", "Bolton", "Bond", "Bonner", "Booker", 192 | "Boone", "Booth", "Bowen", "Bowers", "Bowman", "Boyd", "Boyer", "Boyle", "Bradford", "Bradley", "Bradshaw", "Brady", "Branch", "Bray", "Brennan", "Brewer", 193 | "Bridges", "Briggs", "Bright", "Britt", "Brock", "Brooks", "Brown", "Browning", "Bruce", "Bryan", "Bryant", "Buchanan", "Buck", "Buckley", "Buckner", "Bullock", 194 | "Burch", "Burgess", "Burke", "Burks", "Burnett", "Burns", "Burris", "Burt", "Burton", "Bush", "Butler", "Byers", "Byrd", "Cabrera", "Cain", "Calderon", 195 | "Caldwell", "Calhoun", "Callahan", "Camacho", "Cameron", "Campbell", "Campos", "Cannon", "Cantrell", "Cantu", "Cardenas", "Carey", "Carlson", "Carney", "Carpenter", "Carr", 196 | "Carrillo", "Carroll", "Carson", "Carter", "Carver", "Case", "Casey", "Cash", "Castaneda", "Castillo", "Castro", "Cervantes", "Chambers", "Chan", "Chandler", "Chaney", 197 | "Chang", "Chapman", "Charles", "Chase", "Chavez", "Chen", "Cherry", "Christensen", "Christian", "Church", "Clark", "Clarke", "Clay", "Clayton", "Clements", "Clemons", 198 | "Cleveland", "Cline", "Cobb", "Cochran", "Coffey", "Cohen", "Cole", "Coleman", "Collier", "Collins", "Colon", "Combs", "Compton", "Conley", "Conner", "Conrad", 199 | "Contreras", "Conway", "Cook", "Cooke", "Cooley", "Cooper", "Copeland", "Cortez", "Cote", "Cotton", "Cox", "Craft", "Craig", "Crane", "Crawford", "Crosby", 200 | "Cross", "Cruz", "Cummings", "Cunningham", "Curry", "Curtis", "Dale", "Dalton", "Daniel", "Daniels", "Daugherty", "Davenport", "David", "Davidson", "Davis", "Dawson", 201 | "Day", "Dean", "Decker", "Dejesus", "Delacruz", "Delaney", "Deleon", "Delgado", "Dennis", "Diaz", "Dickerson", "Dickson", "Dillard", "Dillon", "Dixon", "Dodson", 202 | "Dominguez", "Donaldson", "Donovan", "Dorsey", "Dotson", "Douglas", "Downs", "Doyle", "Drake", "Dudley", "Duffy", "Duke", "Duncan", "Dunlap", "Dunn", "Duran", 203 | "Durham", "Dyer", "Eaton", "Edwards", "Elliott", "Ellis", "Ellison", "Emerson", "England", "English", "Erickson", "Espinoza", "Estes", "Estrada", "Evans", "Everett", 204 | "Ewing", "Farley", "Farmer", "Farrell", "Faulkner", "Ferguson", "Fernandez", "Ferrell", "Fields", "Figueroa", "Finch", "Finley", "Fischer", "Fisher", "Fitzgerald", "Fitzpatrick", 205 | "Fleming", "Fletcher", "Flores", "Flowers", "Floyd", "Flynn", "Foley", "Forbes", "Ford", "Foreman", "Foster", "Fowler", "Fox", "Francis", "Franco", "Frank", 206 | "Franklin", "Franks", "Frazier", "Frederick", "Freeman", "French", "Frost", "Fry", "Frye", "Fuentes", "Fuller", "Fulton", "Gaines", "Gallagher", "Gallegos", "Galloway", 207 | "Gamble", "Garcia", "Gardner", "Garner", "Garrett", "Garrison", "Garza", "Gates", "Gay", "Gentry", "George", "Gibbs", "Gibson", "Gilbert", "Giles", "Gill", 208 | "Gillespie", "Gilliam", "Gilmore", "Glass", "Glenn", "Glover", "Goff", "Golden", "Gomez", "Gonzales", "Gonzalez", "Good", "Goodman", "Goodwin", "Gordon", "Gould", 209 | "Graham", "Grant", "Graves", "Gray", "Green", "Greene", "Greer", "Gregory", "Griffin", "Griffith", "Grimes", "Gross", "Guerra", "Guerrero", "Guthrie", "Gutierrez", 210 | "Guy", "Guzman", "Hahn", "Hale", "Haley", "Hall", "Hamilton", "Hammond", "Hampton", "Hancock", "Haney", "Hansen", "Hanson", "Hardin", "Harding", "Hardy", 211 | "Harmon", "Harper", "Harrell", "Harrington", "Harris", "Harrison", "Hart", "Hartman", "Harvey", "Hatfield", "Hawkins", "Hayden", "Hayes", "Haynes", "Hays", "Head", 212 | "Heath", "Hebert", "Henderson", "Hendricks", "Hendrix", "Henry", "Hensley", "Henson", "Herman", "Hernandez", "Herrera", "Herring", "Hess", "Hester", "Hewitt", "Hickman", 213 | "Hicks", "Higgins", "Hill", "Hines", "Hinton", "Hobbs", "Hodge", "Hodges", "Hoffman", "Hogan", "Holcomb", "Holden", "Holder", "Holland", "Holloway", "Holman", 214 | "Holmes", "Holt", "Hood", "Hooper", "Hoover", "Hopkins", "Hopper", "Horn", "Horne", "Horton", "House", "Houston", "Howard", "Howe", "Howell", "Hubbard", 215 | "Huber", "Hudson", "Huff", "Huffman", "Hughes", "Hull", "Humphrey", "Hunt", "Hunter", "Hurley", "Hurst", "Hutchinson", "Hyde", "Ingram", "Irwin", "Jackson", 216 | "Jacobs", "Jacobson", "James", "Jarvis", "Jefferson", "Jenkins", "Jennings", "Jensen", "Jimenez", "Johns", "Johnson", "Johnston", "Jones", "Jordan", "Joseph", "Joyce", 217 | "Joyner", "Juarez", "Justice", "Kane", "Kaufman", "Keith", "Keller", "Kelley", "Kelly", "Kemp", "Kennedy", "Kent", "Kerr", "Key", "Kidd", "Kim", 218 | "King", "Kinney", "Kirby", "Kirk", "Kirkland", "Klein", "Kline", "Knapp", "Knight", "Knowles", "Knox", "Koch", "Kramer", "Lamb", "Lambert", "Lancaster", 219 | "Landry", "Lane", "Lang", "Langley", "Lara", "Larsen", "Larson", "Lawrence", "Lawson", "Le", "Leach", "Leblanc", "Lee", "Leon", "Leonard", "Lester", 220 | "Levine", "Levy", "Lewis", "Lindsay", "Lindsey", "Little", "Livingston", "Lloyd", "Logan", "Long", "Lopez", "Lott", "Love", "Lowe", "Lowery", "Lucas", 221 | "Luna", "Lynch", "Lynn", "Lyons", "Macdonald", "Macias", "Mack", "Madden", "Maddox", "Maldonado", "Malone", "Mann", "Manning", "Marks", "Marquez", "Marsh", 222 | "Marshall", "Martin", "Martinez", "Mason", "Massey", "Mathews", "Mathis", "Matthews", "Maxwell", "May", "Mayer", "Maynard", "Mayo", "Mays", "McBride", "McCall", 223 | "McCarthy", "McCarty", "McClain", "McClure", "McConnell", "McCormick", "McCoy", "McCray", "McCullough", "McDaniel", "McDonald", "McDowell", "McFadden", "McFarland", "McGee", "McGowan", 224 | "McGuire", "McIntosh", "McIntyre", "McKay", "McKee", "McKenzie", "McKinney", "McKnight", "McLaughlin", "Mclean", "McLeod", "McMahon", "McMillan", "McNeil", "McPherson", "Meadows", 225 | "Medina", "Mejia", "Melendez", "Melton", "Mendez", "Mendoza", "Mercado", "Mercer", "Merrill", "Merritt", "Meyer", "Meyers", "Michael", "Middleton", "Miles", "Miller", 226 | "Mills", "Miranda", "Mitchell", "Molina", "Monroe", "Montgomery", "Montoya", "Moody", "Moon", "Mooney", "Moore", "Morales", "Moran", "Moreno", "Morgan", "Morin", 227 | "Morris", "Morrison", "Morrow", "Morse", "Morton", "Moses", "Mosley", "Moss", "Mueller", "Mullen", "Mullins", "Munoz", "Murphy", "Murray", "Myers", "Nash", 228 | "Navarro", "Neal", "Nelson", "Newman", "Newton", "Nguyen", "Nichols", "Nicholson", "Nielsen", "Nieves", "Nixon", "Noble", "Noel", "Nolan", "Norman", "Norris", 229 | "Norton", "Nunez", "OBrien", "Ochoa", "OConnor", "Odom", "Odonnell", "Oliver", "Olsen", "Olson", "Oneal", "Oneil", "Oneill", "Orr", "Ortega", "Ortiz", 230 | "Osborn", "Osborne", "Owen", "Owens", "Pace", "Pacheco", "Padilla", "Page", "Palmer", "Park", "Parker", "Parks", "Parrish", "Parsons", "Pate", "Patel", 231 | "Patrick", "Patterson", "Patton", "Paul", "Payne", "Pearson", "Peck", "Pena", "Pennington", "Perez", "Perkins", "Perry", "Peters", "Petersen", "Peterson", "Petty", 232 | "Phelps", "Phillips", "Pickett", "Pierce", "Pittman", "Pitts", "Pollard", "Poole", "Pope", "Porter", "Potter", "Potts", "Powell", "Powers", "Pratt", "Preston", 233 | "Price", "Prince", "Pruitt", "Puckett", "Pugh", "Quinn", "Ramirez", "Ramos", "Ramsey", "Randall", "Randolph", "Rasmussen", "Ratliff", "Ray", "Raymond", "Reed", 234 | "Reese", "Reeves", "Reid", "Reilly", "Reyes", "Reynolds", "Rhodes", "Rice", "Rich", "Richard", "Richards", "Richardson", "Richmond", "Riddle", "Riggs", "Riley", 235 | "Rios", "Rivas", "Rivera", "Rivers", "Roach", "Robbins", "Roberson", "Roberts", "Robertson", "Robinson", "Robles", "Rocha", "Rodgers", "Rodriguez", "Rodriquez", "Rogers", 236 | "Rojas", "Rollins", "Roman", "Romero", "Rosa", "Rosales", "Rosario", "Rose", "Ross", "Roth", "Rowe", "Rowland", "Roy", "Ruiz", "Rush", "Russell", 237 | "Russo", "Rutledge", "Ryan", "Salas", "Salazar", "Salinas", "Sampson", "Sanchez", "Sanders", "Sandoval", "Sanford", "Santana", "Santiago", "Santos", "Sargent", "Saunders", 238 | "Savage", "Sawyer", "Schmidt", "Schneider", "Schroeder", "Schultz", "Schwartz", "Scott", "Sears", "Sellers", "Serrano", "Sexton", "Shaffer", "Shannon", "Sharp", "Sharpe", 239 | "Shaw", "Shelton", "Shepard", "Shepherd", "Sheppard", "Sherman", "Shields", "Short", "Silva", "Simmons", "Simon", "Simpson", "Sims", "Singleton", "Skinner", "Slater", 240 | "Sloan", "Small", "Smith", "Snider", "Snow", "Snyder", "Solis", "Solomon", "Sosa", "Soto", "Sparks", "Spears", "Spence", "Spencer", "Stafford", "Stanley", 241 | "Stanton", "Stark", "Steele", "Stein", "Stephens", "Stephenson", "Stevens", "Stevenson", "Stewart", "Stokes", "Stone", "Stout", "Strickland", "Strong", "Stuart", "Suarez", 242 | "Sullivan", "Summers", "Sutton", "Swanson", "Sweeney", "Sweet", "Sykes", "Talley", "Tanner", "Tate", "Taylor", "Terrell", "Terry", "Thomas", "Thompson", "Thornton", 243 | "Tillman", "Todd", "Torres", "Townsend", "Tran", "Travis", "Trevino", "Trujillo", "Tucker", "Turner", "Tyler", "Tyson", "Underwood", "Valdez", "Valencia", "Valentine", 244 | "Valenzuela", "Vance", "Vang", "Vargas", "Vasquez", "Vaughan", "Vaughn", "Vazquez", "Vega", "Velasquez", "Velazquez", "Velez", "Villarreal", "Vincent", "Vinson", "Wade", 245 | "Wagner", "Walker", "Wall", "Wallace", "Waller", "Walls", "Walsh", "Walter", "Walters", "Walton", "Ward", "Ware", "Warner", "Warren", "Washington", "Waters", 246 | "Watkins", "Watson", "Watts", "Weaver", "Webb", "Weber", "Webster", "Weeks", "Weiss", "Welch", "Wells", "West", "Wheeler", "Whitaker", "White", "Whitehead", 247 | "Whitfield", "Whitley", "Whitney", "Wiggins", "Wilcox", "Wilder", "Wiley", "Wilkerson", "Wilkins", "Wilkinson", "William", "Williams", "Williamson", "Willis", "Wilson", "Winters", 248 | "Wise", "Witt", "Wolf", "Wolfe", "Wong", "Wood", "Woodard", "Woods", "Woodward", "Wooten", "Workman", "Wright", "Wyatt", "Wynn", "Yang", "Yates", 249 | "York", "Young", "Zamora", "Zimmerman" 250 | }; 251 | 252 | 253 | private static string[] CompanyNames = new string[] { 254 | "Acme Corp", "Ajax", "ARCAM Corporation", "Arlesdale Railway", "Astromech", "Benthic Petroleum", "Biffco", "Binford", "Black Mesa Research Facility", "Blaidd Dwrg Nuclear Power Plant", "Blue Sun Corporation", "Bluth Company", "Brown Streak Railroad", "Central Perk", "ComTron", "Contoso", 255 | "Crudgington Brewery", "Culdee Fell Railway", "Cyberdyne Systems", "Daystrom Data Concepts", "Deon International", "DHARMA Initiative", "Digivation Industries", "Dinoco", "Dirk Gently's Holistic Detective Agency", "Doublemeat Palace", "Duff Beer", "Dunder Mifflin", "Ecumena", "Ewing Oil", "Ewing Oil", "Fabrikam", 256 | "FrobozzCo International - Zork ", "Global Dynamics", "Grand Trunk Semaphore Company", "Grayson Sky Domes, Ltd.", "Grim Reaper Airways", "Groovy Smoothie", "Hanso Foundation", "Hishii Industries", "Incom Corporation", "InGen", "Initech", "Itex", "Izon", "Jupiter Mining Corporation", "Khumalo", "KrebStarLexCorp", 257 | "Krusty Burger", "Kwik-E-Mart", "Liandri Mining Corporation", "LuthorCorp", "Medical Mechanica", "Mel's Diner", "Metacortex", "Dunder Mifflin Paper Company", "Milliways", "Mishima ZaibatsuRAMJAC Corporation", "Muffin Buffalo", "Nordyne Defense Dynamics", "North Western Railway", "Oceanic Airlines", "Office of Scientific Intelligence7", "Onion Pacific Railroad", 258 | "Peach Pit", "Porter Automobiles", "Prescott Pharmaceuticals", "Rekall", "Rovers Return", "Roxxon", "Roxxon", "Scavo's Pizzeria", "Scrooge McDuck's", "Sheinhardt Wig Company", "Shelbyville Nuclear Power Plant", "Shinra Electric Power Company", "Shinra Electric Power Companyworld, Final Fantasy VII", "Sirius Cybernetics Corp", "Slate Rock & Gravel Company", "Soar Airlines", 259 | "Soylent Corporation", "Springfield Nuclear Power Plant", "Strickland Propane", "Tagruato", "The Crab Shack", "The Hanso Foundation", "The Regal Beagle", "Total Bastard Airlines", "Trade Federation", "Tricell", "Trioptimum Corporation", "Tyrell Corporation", "Umbrella Corporation", "Union Aerospace Corporation", "Uplink Corporation", "Vandelay Industries", 260 | "VersaLife Corporation", "Vol\x00e9e Airlines", "W.C. Boggs & Co.", "Wallaby Airlines", "WarioWare, Inc.", "Wayne Enterprises", "Yoyodyne Propulsion Systems", "Zorg Industries", "Zorin Industries" 261 | }; 262 | 263 | 264 | private static string[] StreetNames = new string[] { 265 | "Main Street", "Church Street", "Main Street North", "High Street", "Main Street South", 266 | "Elm Street", "Washington Street", "Main Street West", "Main Street East", "Chestnut Street", 267 | "2nd Street", "Park Avenue", "Broad Street", "Walnut Street", "Maple Street", "Maple Avenue", 268 | "Water Street", "Center Street", "Pine Street", "Market Street", "Oak Street", "South Street", 269 | "Union Street", "North Street", "3rd Street", "River Road", "School Street", "Court Street", 270 | "Prospect Street", "Spring Street", "Washington Avenue", "Park Street", "Front Street", 271 | "Central Avenue", "Cherry Street", "Cedar Street", "4th Street", "Franklin Street", "Jefferson Street", 272 | "1st Street", "Highland Avenue", "Mill Street", "West Street", "Bridge Street", "Spruce Street", 273 | "Jackson Street", "Pleasant Street", "5th Street", "Academy Street", "Madison Avenue", 274 | "Pearl Street", "Park Place", "Pennsylvania Avenue", "State Street", "Adams Street", 275 | "East Street", "Madison Street", "Ridge Road", "Church Road", "Elizabeth Street", 276 | "Green Street", "Grove Street", "Hill Street", "Lincoln Avenue", "Locust Street", 277 | "Jefferson Avenue", "Lincoln Street", "11th Street", "Dogwood Drive", "Liberty Street", 278 | "River Street", "Route 30", "Vine Street", "12th Street", "2nd Avenue", "Hillside Avenue", 279 | "Route 1", "10th Street", "4th Street West", "6th Street", "7th Street", "Delaware Avenue", 280 | "Meadow Lane", "Winding Way", "3rd Street West", "5th Avenue", "9th Street", "Broadway", 281 | "Clinton Street", "Monroe Street", "New Street", "Railroad Street", "Route 6", "3rd Avenue", 282 | "Beech Street", "Cherry Lane", "Hickory Lane", "Lake Street", "2nd Street West", "Charles Street", 283 | "Colonial Drive", "Front Street North", "Laurel Lane", "Oak Lane", "Railroad Avenue", "Summit Avenue", 284 | "Valley Road", "Williams Street", "Willow Street", "13th Street", "1st Avenue", "7th Avenue", "8th Street", 285 | "Division Street", "Harrison Street", "King Street", "Mill Road", "Poplar Street", "Route 29", "Virginia Avenue", 286 | "Woodland Drive", "4th Avenue", "4th Street North", "Arch Street", "Brookside Drive", "Cambridge Court", 287 | "Canterbury Court", "College Street", "Creek Road", "Fairway Drive", "Heather Lane", "Highland Drive", 288 | "Holly Drive", "Mulberry Street", "Myrtle Avenue", "Penn Street", "Prospect Avenue", "Route 32", "Smith Street", 289 | "Sunset Drive", "5th Street North", "Bank Street", "Canal Street", "Cedar Lane", "Colonial Avenue", "Dogwood Lane", 290 | "Durham Road", "Grant Avenue", "Hamilton Street", "John Street", "Primrose Lane", "Riverside Drive", "Route 10", 291 | "Surrey Lane", "Valley View Drive", "5th Street West", "6th Street North", "6th Street West", "Beechwood Drive", 292 | "Buckingham Drive", "Cedar Avenue", "Circle Drive", "Clark Street", "Deerfield Drive", "Elm Avenue", "Essex Court", 293 | "Fairview Avenue", "Forest Drive", "Franklin Court", "Garden Street", "George Street", "Henry Street", "James Street", 294 | "Lafayette Avenue", "Lakeview Drive", "Laurel Street", "Lilac Lane", "Maple Lane", "Oak Avenue", "Oxford Court", 295 | "Ridge Avenue", "Route 11", "Route 70", "Taylor Street", "Walnut Avenue", "Warren Street", "Woodland Avenue", 296 | "2nd Street East", "2nd Street North", "Aspen Court", "Atlantic Avenue", "Church Street North", "Cottage Street", 297 | "Devon Road", "Franklin Avenue", "Garfield Avenue", "Glenwood Avenue", "Grant Street", "Hillside Drive", "Hilltop Road", 298 | "Lafayette Street", "Linden Street", "Locust Lane", "Olive Street", "Orange Street", "Orchard Street", "Park Drive", 299 | "Race Street", "Route 4", "Route 41", "Route 7", "Route 9", "Windsor Court", "York Road", "3rd Street East", 300 | "3rd Street North", "5th Street South", "6th Avenue", "Arlington Avenue", "Belmont Avenue", "Berkshire Drive", 301 | "Cedar Court", "Chapel Street", "Chestnut Avenue", "Clay Street", "College Avenue", "Creekside Drive", "Crescent Street", 302 | "Cypress Court", "Devonshire Drive", "Front Street South", "Fulton Street", "Grove Avenue", "Hillcrest Avenue", 303 | "Inverness Drive", "Jackson Avenue", "Laurel Drive", "Magnolia Avenue", "Magnolia Drive", "Mechanic Street", "Route 20", 304 | "Route 202", "Summit Street", "Tanglewood Drive", "Wall Street", "William Street", "Windsor Drive", "York Street", 305 | "8th Avenue", "8th Street South", "8th Street West", "Ann Street", "Brown Street", "Buttonwood Drive", "Cambridge Drive", 306 | "Cambridge Road", "Cardinal Drive", "Carriage Drive", "Cemetery Road", "Church Street South", "Cobblestone Court", 307 | "Columbia Street", "Cooper Street", "Depot Street", "Edgewood Drive", "Elmwood Avenue", "Evergreen Lane", "Fawn Lane", 308 | "Fieldstone Drive", "Forest Street", "Hawthorne Lane", "Heritage Drive", "Hickory Street", "Hillcrest Drive", 309 | "Howard Street", "Jefferson Court", "Lantern Lane", "Magnolia Court", "Meadow Street", "Pin Oak Drive", "Queen Street", 310 | "Redwood Drive", "Ridge Street", "Rose Street", "Route 100", "Route 44", "Sherman Street", "Strawberry Lane", 311 | "Street Road", "Sunset Avenue", "Sycamore Drive", "Valley Drive", "Westminster Drive", "Wood Street", "12th Street East", 312 | "9th Street West", "Augusta Drive", "Briarwood Drive", "Bridle Lane", "Brook Lane", "Canterbury Drive", "Catherine Street", 313 | "Cleveland Street", "Country Lane", "Durham Court", "Eagle Road", "Eagle Street", "Edgewood Road", "Euclid Avenue", 314 | "Forest Avenue", "Grand Avenue", "Hamilton Road", "Harrison Avenue", "Hartford Road", "Heather Court", "Holly Court", 315 | "Ivy Court", "Lake Avenue", "Lawrence Street", "Lexington Drive", "Madison Court", "Morris Street", "Mulberry Court", 316 | "Mulberry Lane", "Myrtle Street", "Old York Road", "Orchard Avenue", "Orchard Lane", "Pheasant Run", "Rosewood Drive", 317 | "Route 17", "Sheffield Drive", "Sherwood Drive", "Sycamore Lane", "Sycamore Street", "Victoria Court", "Warren Avenue", 318 | "West Avenue", "Woodland Road", "14th Street", "4th Street South", "5th Street East", "Adams Avenue", "Amherst Street", 319 | "Andover Court", "Ashley Court", "Aspen Drive", "B Street", "Bay Street", "Bayberry Drive", "Brandywine Drive", "Briarwood Court", 320 | "Bridle Court", "Broad Street West", "Canterbury Road", "Cleveland Avenue", "Country Club Drive", "Country Club Road", "Cross Street", 321 | "Devon Court", "East Avenue", "Evergreen Drive", "Fairview Road", "Fawn Court", "Glenwood Drive", "Hanover Court", "Hawthorne Avenue", 322 | "Homestead Drive", "Hudson Street", "Ivy Lane", "Jones Street", "Lexington Court", "Linda Lane", "Linden Avenue", "Maiden Lane", "Manor Drive", 323 | "Marshall Street", "Monroe Drive", "North Avenue", "Overlook Circle", "Oxford Road", "Parker Street", "Roberts Road", "Roosevelt Avenue", 324 | "Route 2", "Route 27", "Route 5", "Route 64", "Schoolhouse Lane", "Shady Lane", "Somerset Drive", "Spruce Avenue", "State Street East", 325 | "Summer Street", "Valley View Road", "Virginia Street", "White Street", "Willow Avenue", "Willow Drive", "Willow Lane" 326 | }; 327 | 328 | private static CustomerLocationData[] CustomerLocations = new CustomerLocationData[]{ 329 | new CustomerLocationData{ City="Mobile", State="AL", ZipCode="36695", AreaCode="251" }, 330 | new CustomerLocationData{ City="Mobile", State="AL", ZipCode="36606", AreaCode="251" }, 331 | new CustomerLocationData{ City="Birmingham", State="AL", ZipCode="35242", AreaCode="205" }, 332 | new CustomerLocationData{ City="Birmingham", State="AL", ZipCode="35226", AreaCode="205" }, 333 | new CustomerLocationData{ City="Tuscaloosa", State="AL", ZipCode="35404", AreaCode="205" }, 334 | new CustomerLocationData{ City="Tuscaloosa", State="AL", ZipCode="35404", AreaCode="205" }, 335 | new CustomerLocationData{ City="Tuscaloosa", State="AL", ZipCode="35404", AreaCode="205" }, 336 | new CustomerLocationData{ City="Phoenix", State="AZ", ZipCode="85044", AreaCode="480" }, 337 | new CustomerLocationData{ City="Phoenix", State="AZ", ZipCode="85018", AreaCode="602" }, 338 | new CustomerLocationData{ City="Phoenix", State="AZ", ZipCode="85022", AreaCode="602" }, 339 | new CustomerLocationData{ City="Scottsdale", State="AZ", ZipCode="85266", AreaCode="480" }, 340 | new CustomerLocationData{ City="Scottsdale", State="AZ", ZipCode="85250", AreaCode="480" }, 341 | new CustomerLocationData{ City="Phoenix", State="AZ", ZipCode="85042", AreaCode="602" }, 342 | new CustomerLocationData{ City="Surprise", State="AZ", ZipCode="85374", AreaCode="623" }, 343 | new CustomerLocationData{ City="Tempe", State="AZ", ZipCode="85281", AreaCode="480" }, 344 | new CustomerLocationData{ City="Tempe", State="AZ", ZipCode="85283", AreaCode="480" }, 345 | new CustomerLocationData{ City="Tucson", State="AZ", ZipCode="85711", AreaCode="520" }, 346 | new CustomerLocationData{ City="Tucson", State="AZ", ZipCode="85716", AreaCode="520" }, 347 | new CustomerLocationData{ City="Tucson", State="AZ", ZipCode="85748", AreaCode="520" }, 348 | new CustomerLocationData{ City="Tucson", State="AZ", ZipCode="85714", AreaCode="520" }, 349 | new CustomerLocationData{ City="Alameda", State="CA", ZipCode="94501", AreaCode="510" }, 350 | new CustomerLocationData{ City="Anaheim", State="CA", ZipCode="92808", AreaCode="714" }, 351 | new CustomerLocationData{ City="Anaheim", State="CA", ZipCode="92802", AreaCode="714" }, 352 | new CustomerLocationData{ City="San Diego", State="CA", ZipCode="92111", AreaCode="858" }, 353 | new CustomerLocationData{ City="Burbank", State="CA", ZipCode="91504", AreaCode="818" }, 354 | new CustomerLocationData{ City="Los Angeles", State="CA", ZipCode="90022", AreaCode="323" }, 355 | new CustomerLocationData{ City="Compton", State="CA", ZipCode="90220", AreaCode="310" }, 356 | new CustomerLocationData{ City="Eureka", State="CA", ZipCode="95501", AreaCode="707" }, 357 | new CustomerLocationData{ City="Folsom", State="CA", ZipCode="95630", AreaCode="916" }, 358 | new CustomerLocationData{ City="Fresno", State="CA", ZipCode="93710", AreaCode="559" }, 359 | new CustomerLocationData{ City="Fresno", State="CA", ZipCode="93722", AreaCode="559" }, 360 | new CustomerLocationData{ City="Fresno", State="CA", ZipCode="93726", AreaCode="559" }, 361 | new CustomerLocationData{ City="Huntington Beach", State="CA", ZipCode="92646", AreaCode="714" }, 362 | new CustomerLocationData{ City="Irvine", State="CA", ZipCode="92602", AreaCode="714" }, 363 | new CustomerLocationData{ City="Los Angeles", State="CA", ZipCode="90048", AreaCode="323" }, 364 | new CustomerLocationData{ City="Los Angeles", State="CA", ZipCode="90017", AreaCode="213" }, 365 | new CustomerLocationData{ City="Long Beach", State="CA", ZipCode="90815", AreaCode="562" }, 366 | new CustomerLocationData{ City="Los Angeles", State="CA", ZipCode="90041", AreaCode="323" }, 367 | new CustomerLocationData{ City="Los Angeles", State="CA", ZipCode="90016", AreaCode="310" }, 368 | new CustomerLocationData{ City="Manhattan Beach", State="CA", ZipCode="90266", AreaCode="310" }, 369 | new CustomerLocationData{ City="Napa", State="CA", ZipCode="94558", AreaCode="707" }, 370 | new CustomerLocationData{ City="Napa", State="CA", ZipCode="94559", AreaCode="707" }, 371 | new CustomerLocationData{ City="Rancho Cucamonga", State="CA", ZipCode="91730", AreaCode="909" }, 372 | new CustomerLocationData{ City="Sacramento", State="CA", ZipCode="95825", AreaCode="916" }, 373 | new CustomerLocationData{ City="Sacramento", State="CA", ZipCode="95818", AreaCode="916" }, 374 | new CustomerLocationData{ City="Sacramento", State="CA", ZipCode="95823", AreaCode="916" }, 375 | new CustomerLocationData{ City="San Francisco", State="CA", ZipCode="94103", AreaCode="415" }, 376 | new CustomerLocationData{ City="San Francisco", State="CA", ZipCode="94118", AreaCode="415" }, 377 | new CustomerLocationData{ City="San Jose", State="CA", ZipCode="95133", AreaCode="408" }, 378 | new CustomerLocationData{ City="San Jose", State="CA", ZipCode="95125", AreaCode="408" }, 379 | new CustomerLocationData{ City="San Jose", State="CA", ZipCode="95134", AreaCode="408" }, 380 | new CustomerLocationData{ City="San Jose", State="CA", ZipCode="95124", AreaCode="408" }, 381 | new CustomerLocationData{ City="San Jose", State="CA", ZipCode="95129", AreaCode="408" }, 382 | new CustomerLocationData{ City="Ventura", State="CA", ZipCode="93003", AreaCode="805" }, 383 | new CustomerLocationData{ City="Boulder", State="CO", ZipCode="80301", AreaCode="303" }, 384 | new CustomerLocationData{ City="Colorado Springs", State="CO", ZipCode="80918", AreaCode="719" }, 385 | new CustomerLocationData{ City="Denver", State="CO", ZipCode="80231", AreaCode="303" }, 386 | new CustomerLocationData{ City="Denver", State="CO", ZipCode="80238", AreaCode="303" }, 387 | new CustomerLocationData{ City="Fort Collins", State="CO", ZipCode="80525", AreaCode="970" }, 388 | new CustomerLocationData{ City="Fort Collins", State="CO", ZipCode="80525", AreaCode="970" }, 389 | new CustomerLocationData{ City="Glenwood Springs", State="CO", ZipCode="81601", AreaCode="970" }, 390 | new CustomerLocationData{ City="Grand Junction", State="CO", ZipCode="81505", AreaCode="970" }, 391 | new CustomerLocationData{ City="Pueblo", State="CO", ZipCode="81008", AreaCode="719" }, 392 | new CustomerLocationData{ City="Colorado Springs", State="CO", ZipCode="80906", AreaCode="719" }, 393 | new CustomerLocationData{ City="Colorado Springs", State="CO", ZipCode="80906", AreaCode="719" }, 394 | new CustomerLocationData{ City="Colorado Springs", State="CO", ZipCode="80906", AreaCode="719" }, 395 | new CustomerLocationData{ City="Colorado Springs", State="CO", ZipCode="80906", AreaCode="719" }, 396 | new CustomerLocationData{ City="Colorado Springs", State="CO", ZipCode="80906", AreaCode="719" }, 397 | new CustomerLocationData{ City="Colorado Springs", State="CO", ZipCode="80906", AreaCode="719" }, 398 | new CustomerLocationData{ City="Westminster", State="CO", ZipCode="80023", AreaCode="303" }, 399 | new CustomerLocationData{ City="Westminster", State="CO", ZipCode="80021", AreaCode="303" }, 400 | new CustomerLocationData{ City="New Britain", State="CT", ZipCode="06053", AreaCode="860" }, 401 | new CustomerLocationData{ City="Greenwich", State="CT", ZipCode="06830", AreaCode="203" }, 402 | new CustomerLocationData{ City="Greenwich", State="CT", ZipCode="06830", AreaCode="203" }, 403 | new CustomerLocationData{ City="Greenwich", State="CT", ZipCode="06830", AreaCode="203" }, 404 | new CustomerLocationData{ City="Greenwich", State="CT", ZipCode="06830", AreaCode="203" }, 405 | new CustomerLocationData{ City="Greenwich", State="CT", ZipCode="06830", AreaCode="203" }, 406 | new CustomerLocationData{ City="Greenwich", State="CT", ZipCode="06830", AreaCode="203" }, 407 | new CustomerLocationData{ City="North Haven", State="CT", ZipCode="06473", AreaCode="203" }, 408 | new CustomerLocationData{ City="Stamford", State="CT", ZipCode="06901", AreaCode="203" }, 409 | new CustomerLocationData{ City="Trumbull", State="CT", ZipCode="06611", AreaCode="203" }, 410 | new CustomerLocationData{ City="Trumbull", State="CT", ZipCode="06611", AreaCode="203" }, 411 | new CustomerLocationData{ City="Waterbury", State="CT", ZipCode="06704", AreaCode="203" }, 412 | new CustomerLocationData{ City="Waterford", State="CT", ZipCode="06385", AreaCode="860" }, 413 | new CustomerLocationData{ City="Windsor", State="CT", ZipCode="06095", AreaCode="860" }, 414 | new CustomerLocationData{ City="Brandon", State="FL", ZipCode="33511", AreaCode="813" }, 415 | new CustomerLocationData{ City="Riverview", State="FL", ZipCode="33578", AreaCode="813" }, 416 | new CustomerLocationData{ City="Cape Coral", State="FL", ZipCode="33909", AreaCode="239" }, 417 | new CustomerLocationData{ City="Cape Coral", State="FL", ZipCode="33914", AreaCode="239" }, 418 | new CustomerLocationData{ City="Clearwater", State="FL", ZipCode="33759", AreaCode="727" }, 419 | new CustomerLocationData{ City="Clermont", State="FL", ZipCode="34711", AreaCode="352" }, 420 | new CustomerLocationData{ City="Miami", State="FL", ZipCode="33189", AreaCode="305" }, 421 | new CustomerLocationData{ City="Miami", State="FL", ZipCode="33143", AreaCode="305" }, 422 | new CustomerLocationData{ City="Miami", State="FL", ZipCode="33143", AreaCode="305" }, 423 | new CustomerLocationData{ City="Miami", State="FL", ZipCode="33143", AreaCode="305" }, 424 | new CustomerLocationData{ City="Miami", State="FL", ZipCode="33143", AreaCode="305" }, 425 | new CustomerLocationData{ City="Miami", State="FL", ZipCode="33143", AreaCode="305" }, 426 | new CustomerLocationData{ City="Miami", State="FL", ZipCode="33143", AreaCode="305" }, 427 | new CustomerLocationData{ City="Miami", State="FL", ZipCode="33143", AreaCode="305" }, 428 | new CustomerLocationData{ City="Miami", State="FL", ZipCode="33156", AreaCode="305" }, 429 | new CustomerLocationData{ City="Daytona Beach", State="FL", ZipCode="32114", AreaCode="386" }, 430 | new CustomerLocationData{ City="Orlando", State="FL", ZipCode="32803", AreaCode="407" }, 431 | new CustomerLocationData{ City="Orlando", State="FL", ZipCode="32803", AreaCode="407" }, 432 | new CustomerLocationData{ City="Orlando", State="FL", ZipCode="32803", AreaCode="407" }, 433 | new CustomerLocationData{ City="Orlando", State="FL", ZipCode="32803", AreaCode="407" }, 434 | new CustomerLocationData{ City="Fort Lauderdale", State="FL", ZipCode="33306", AreaCode="954" }, 435 | new CustomerLocationData{ City="Gainesville", State="FL", ZipCode="32608", AreaCode="352" }, 436 | new CustomerLocationData{ City="Tampa", State="FL", ZipCode="33611", AreaCode="813" }, 437 | new CustomerLocationData{ City="Greenacres", State="FL", ZipCode="33463", AreaCode="561" }, 438 | new CustomerLocationData{ City="Orlando", State="FL", ZipCode="32837", AreaCode="407" }, 439 | new CustomerLocationData{ City="Jacksonville Beach", State="FL", ZipCode="32250", AreaCode="904" }, 440 | new CustomerLocationData{ City="Jacksonville", State="FL", ZipCode="32224", AreaCode="904" }, 441 | new CustomerLocationData{ City="Jacksonville", State="FL", ZipCode="32257", AreaCode="904" }, 442 | new CustomerLocationData{ City="Jacksonville", State="FL", ZipCode="32246", AreaCode="904" }, 443 | new CustomerLocationData{ City="Jacksonville", State="FL", ZipCode="32222", AreaCode="904" }, 444 | new CustomerLocationData{ City="Miami", State="FL", ZipCode="33196", AreaCode="305" }, 445 | new CustomerLocationData{ City="Naples", State="FL", ZipCode="34119", AreaCode="239" }, 446 | new CustomerLocationData{ City="Naples", State="FL", ZipCode="34109", AreaCode="239" }, 447 | new CustomerLocationData{ City="Wesley Chapel", State="FL", ZipCode="33544", AreaCode="813" }, 448 | new CustomerLocationData{ City="Wesley Chapel", State="FL", ZipCode="33544", AreaCode="813" }, 449 | new CustomerLocationData{ City="Wesley Chapel", State="FL", ZipCode="33544", AreaCode="813" }, 450 | new CustomerLocationData{ City="Wesley Chapel", State="FL", ZipCode="33544", AreaCode="813" }, 451 | new CustomerLocationData{ City="Tampa", State="FL", ZipCode="33618", AreaCode="813" }, 452 | new CustomerLocationData{ City="Sarasota", State="FL", ZipCode="34232", AreaCode="941" }, 453 | new CustomerLocationData{ City="Kissimmee", State="FL", ZipCode="34747", AreaCode="321" }, 454 | new CustomerLocationData{ City="Kissimmee", State="FL", ZipCode="34747", AreaCode="321" }, 455 | new CustomerLocationData{ City="Kissimmee", State="FL", ZipCode="34747", AreaCode="321" }, 456 | new CustomerLocationData{ City="Pensacola", State="FL", ZipCode="32514", AreaCode="850" }, 457 | new CustomerLocationData{ City="Pensacola", State="FL", ZipCode="32503", AreaCode="850" }, 458 | new CustomerLocationData{ City="Pensacola", State="FL", ZipCode="32503", AreaCode="850" }, 459 | new CustomerLocationData{ City="Pensacola", State="FL", ZipCode="32503", AreaCode="850" }, 460 | new CustomerLocationData{ City="Pensacola", State="FL", ZipCode="32503", AreaCode="850" }, 461 | new CustomerLocationData{ City="Pensacola", State="FL", ZipCode="32506", AreaCode="850" }, 462 | new CustomerLocationData{ City="Tallahassee", State="FL", ZipCode="32309", AreaCode="850" }, 463 | new CustomerLocationData{ City="Tallahassee", State="FL", ZipCode="32301", AreaCode="850" }, 464 | new CustomerLocationData{ City="Venice", State="FL", ZipCode="34293", AreaCode="941" }, 465 | new CustomerLocationData{ City="Venice", State="FL", ZipCode="34293", AreaCode="941" }, 466 | new CustomerLocationData{ City="Venice", State="FL", ZipCode="34293", AreaCode="941" }, 467 | new CustomerLocationData{ City="Venice", State="FL", ZipCode="34293", AreaCode="941" }, 468 | new CustomerLocationData{ City="Venice", State="FL", ZipCode="34292", AreaCode="941" }, 469 | new CustomerLocationData{ City="Vero Beach", State="FL", ZipCode="32966", AreaCode="772" }, 470 | new CustomerLocationData{ City="Acworth", State="GA", ZipCode="30101", AreaCode="678" }, 471 | new CustomerLocationData{ City="Athens", State="GA", ZipCode="30606", AreaCode="706" }, 472 | new CustomerLocationData{ City="Atlanta", State="GA", ZipCode="30307", AreaCode="404" }, 473 | new CustomerLocationData{ City="Atlanta", State="GA", ZipCode="30307", AreaCode="404" }, 474 | new CustomerLocationData{ City="Atlanta", State="GA", ZipCode="30307", AreaCode="404" }, 475 | new CustomerLocationData{ City="Atlanta", State="GA", ZipCode="30363", AreaCode="678" }, 476 | new CustomerLocationData{ City="Atlanta", State="GA", ZipCode="30346", AreaCode="678" }, 477 | new CustomerLocationData{ City="Atlanta", State="GA", ZipCode="30346", AreaCode="678" }, 478 | new CustomerLocationData{ City="Atlanta", State="GA", ZipCode="30346", AreaCode="678" }, 479 | new CustomerLocationData{ City="Atlanta", State="GA", ZipCode="30346", AreaCode="678" }, 480 | new CustomerLocationData{ City="Augusta", State="GA", ZipCode="30909", AreaCode="706" }, 481 | new CustomerLocationData{ City="Austell", State="GA", ZipCode="30106", AreaCode="678" }, 482 | new CustomerLocationData{ City="Atlanta", State="GA", ZipCode="30326", AreaCode="404" }, 483 | new CustomerLocationData{ City="Atlanta", State="GA", ZipCode="30326", AreaCode="404" }, 484 | new CustomerLocationData{ City="Atlanta", State="GA", ZipCode="30326", AreaCode="404" }, 485 | new CustomerLocationData{ City="Atlanta", State="GA", ZipCode="30326", AreaCode="404" }, 486 | new CustomerLocationData{ City="Atlanta", State="GA", ZipCode="30324", AreaCode="404" }, 487 | new CustomerLocationData{ City="Columbus", State="GA", ZipCode="31904", AreaCode="706" }, 488 | new CustomerLocationData{ City="Fayetteville", State="GA", ZipCode="30214", AreaCode="770" }, 489 | new CustomerLocationData{ City="Norcross", State="GA", ZipCode="30092", AreaCode="770" }, 490 | new CustomerLocationData{ City="Atlanta", State="GA", ZipCode="30329", AreaCode="404" }, 491 | new CustomerLocationData{ City="Savannah", State="GA", ZipCode="31404", AreaCode="912" }, 492 | new CustomerLocationData{ City="Savannah", State="GA", ZipCode="31404", AreaCode="912" }, 493 | new CustomerLocationData{ City="Savannah", State="GA", ZipCode="31419", AreaCode="912" }, 494 | new CustomerLocationData{ City="Baton Rouge", State="LA", ZipCode="70816", AreaCode="225" }, 495 | new CustomerLocationData{ City="Baton Rouge", State="LA", ZipCode="70809", AreaCode="225" }, 496 | new CustomerLocationData{ City="Baton Rouge", State="LA", ZipCode="70809", AreaCode="225" }, 497 | new CustomerLocationData{ City="Baton Rouge", State="LA", ZipCode="70809", AreaCode="225" }, 498 | new CustomerLocationData{ City="Baton Rouge", State="LA", ZipCode="70809", AreaCode="225" }, 499 | new CustomerLocationData{ City="Covington", State="LA", ZipCode="70433", AreaCode="985" }, 500 | new CustomerLocationData{ City="Lafayette", State="LA", ZipCode="70501", AreaCode="337" }, 501 | new CustomerLocationData{ City="Lafayette", State="LA", ZipCode="70508", AreaCode="337" }, 502 | new CustomerLocationData{ City="Lake Charles", State="LA", ZipCode="70601", AreaCode="337" }, 503 | new CustomerLocationData{ City="Shreveport", State="LA", ZipCode="71105", AreaCode="318" }, 504 | new CustomerLocationData{ City="Dorchester", State="MA", ZipCode="02125", AreaCode="617" }, 505 | new CustomerLocationData{ City="Dorchester", State="MA", ZipCode="02125", AreaCode="617" }, 506 | new CustomerLocationData{ City="Dorchester", State="MA", ZipCode="02125", AreaCode="617" }, 507 | new CustomerLocationData{ City="Dorchester", State="MA", ZipCode="02125", AreaCode="617" }, 508 | new CustomerLocationData{ City="Braintree", State="MA", ZipCode="02184", AreaCode="781" }, 509 | new CustomerLocationData{ City="Hanover", State="MA", ZipCode="02339", AreaCode="781" }, 510 | new CustomerLocationData{ City="Marlborough", State="MA", ZipCode="01752", AreaCode="508" }, 511 | new CustomerLocationData{ City="Marlborough", State="MA", ZipCode="01752", AreaCode="508" }, 512 | new CustomerLocationData{ City="North Attleboro", State="MA", ZipCode="02760", AreaCode="508" }, 513 | new CustomerLocationData{ City="North Dartmouth", State="MA", ZipCode="02747", AreaCode="508" }, 514 | new CustomerLocationData{ City="Revere", State="MA", ZipCode="02151", AreaCode="781" }, 515 | new CustomerLocationData{ City="Saugus", State="MA", ZipCode="01906", AreaCode="781" }, 516 | new CustomerLocationData{ City="Wareham", State="MA", ZipCode="02571", AreaCode="508" }, 517 | new CustomerLocationData{ City="Worcester", State="MA", ZipCode="01605", AreaCode="508" }, 518 | new CustomerLocationData{ City="Bedford", State="NH", ZipCode="03110", AreaCode="603" }, 519 | new CustomerLocationData{ City="Bedford", State="NH", ZipCode="03110", AreaCode="603" }, 520 | new CustomerLocationData{ City="Concord", State="NH", ZipCode="03301", AreaCode="603" }, 521 | new CustomerLocationData{ City="Nashua", State="NH", ZipCode="03063", AreaCode="603" }, 522 | new CustomerLocationData{ City="Nashua", State="NH", ZipCode="03060", AreaCode="603" }, 523 | new CustomerLocationData{ City="Burlington", State="NJ", ZipCode="08016", AreaCode="609" }, 524 | new CustomerLocationData{ City="Cherry Hill", State="NJ", ZipCode="08002", AreaCode="856" }, 525 | new CustomerLocationData{ City="Clark", State="NJ", ZipCode="07066", AreaCode="732" }, 526 | new CustomerLocationData{ City="Edgewater", State="NJ", ZipCode="07020", AreaCode="201" }, 527 | new CustomerLocationData{ City="Hackensack", State="NJ", ZipCode="07601", AreaCode="201" }, 528 | new CustomerLocationData{ City="Jersey City", State="NJ", ZipCode="07310", AreaCode="201" }, 529 | new CustomerLocationData{ City="Mount Laurel", State="NJ", ZipCode="08054", AreaCode="856" }, 530 | new CustomerLocationData{ City="Paramus", State="NJ", ZipCode="07652", AreaCode="201" }, 531 | new CustomerLocationData{ City="Princeton", State="NJ", ZipCode="08540", AreaCode="609" }, 532 | new CustomerLocationData{ City="Riverdale", State="NJ", ZipCode="07457", AreaCode="973" }, 533 | new CustomerLocationData{ City="Rockaway", State="NJ", ZipCode="07866", AreaCode="973" }, 534 | new CustomerLocationData{ City="Albuquerque", State="NM", ZipCode="87112", AreaCode="505" }, 535 | new CustomerLocationData{ City="Albuquerque", State="NM", ZipCode="87110", AreaCode="505" }, 536 | new CustomerLocationData{ City="Albuquerque", State="NM", ZipCode="87111", AreaCode="505" }, 537 | new CustomerLocationData{ City="Rio Rancho", State="NM", ZipCode="87124", AreaCode="505" }, 538 | new CustomerLocationData{ City="Roswell", State="NM", ZipCode="88201", AreaCode="575" }, 539 | new CustomerLocationData{ City="Santa Fe", State="NM", ZipCode="87507", AreaCode="505" }, 540 | new CustomerLocationData{ City="Amsterdam", State="NY", ZipCode="12010", AreaCode="518" }, 541 | new CustomerLocationData{ City="Brooklyn", State="NY", ZipCode="11217", AreaCode="718" }, 542 | new CustomerLocationData{ City="Brooklyn", State="NY", ZipCode="11217", AreaCode="718" }, 543 | new CustomerLocationData{ City="Brooklyn", State="NY", ZipCode="11217", AreaCode="718" }, 544 | new CustomerLocationData{ City="Brooklyn", State="NY", ZipCode="11218", AreaCode="718" }, 545 | new CustomerLocationData{ City="Brooklyn", State="NY", ZipCode="11217", AreaCode="718" }, 546 | new CustomerLocationData{ City="Amherst", State="NY", ZipCode="14228", AreaCode="716" }, 547 | new CustomerLocationData{ City="Bronx", State="NY", ZipCode="10451", AreaCode="718" }, 548 | new CustomerLocationData{ City="Brooklyn", State="NY", ZipCode="11210", AreaCode="718" }, 549 | new CustomerLocationData{ City="Syracuse", State="NY", ZipCode="13219", AreaCode="315" }, 550 | new CustomerLocationData{ City="Syracuse", State="NY", ZipCode="13219", AreaCode="315" }, 551 | new CustomerLocationData{ City="Flushing", State="NY", ZipCode="11354", AreaCode="347" }, 552 | new CustomerLocationData{ City="Brooklyn", State="NY", ZipCode="11239", AreaCode="718" }, 553 | new CustomerLocationData{ City="Schenectady", State="NY", ZipCode="12302", AreaCode="518" }, 554 | new CustomerLocationData{ City="Rochester", State="NY", ZipCode="14626", AreaCode="585" }, 555 | new CustomerLocationData{ City="Rochester", State="NY", ZipCode="14626", AreaCode="585" }, 556 | new CustomerLocationData{ City="New York", State="NY", ZipCode="10035", AreaCode="212" }, 557 | new CustomerLocationData{ City="Mount Vernon", State="NY", ZipCode="10550", AreaCode="914" }, 558 | new CustomerLocationData{ City="Schenectady", State="NY", ZipCode="12304", AreaCode="518" }, 559 | new CustomerLocationData{ City="Schenectady", State="NY", ZipCode="12304", AreaCode="518" }, 560 | new CustomerLocationData{ City="Schenectady", State="NY", ZipCode="12304", AreaCode="518" }, 561 | new CustomerLocationData{ City="Buffalo", State="NY", ZipCode="14216", AreaCode="716" }, 562 | new CustomerLocationData{ City="Bronx", State="NY", ZipCode="10463", AreaCode="718" }, 563 | new CustomerLocationData{ City="Bronx", State="NY", ZipCode="10463", AreaCode="718" }, 564 | new CustomerLocationData{ City="Riverhead", State="NY", ZipCode="11901", AreaCode="631" }, 565 | new CustomerLocationData{ City="White Plains", State="NY", ZipCode="10601", AreaCode="914" }, 566 | new CustomerLocationData{ City="Asheville", State="NC", ZipCode="28805", AreaCode="828" }, 567 | new CustomerLocationData{ City="Asheville", State="NC", ZipCode="28805", AreaCode="828" }, 568 | new CustomerLocationData{ City="Asheville", State="NC", ZipCode="28805", AreaCode="828" }, 569 | new CustomerLocationData{ City="Asheville", State="NC", ZipCode="28805", AreaCode="828" }, 570 | new CustomerLocationData{ City="Asheville", State="NC", ZipCode="28805", AreaCode="828" }, 571 | new CustomerLocationData{ City="Cary", State="NC", ZipCode="27518", AreaCode="919" }, 572 | new CustomerLocationData{ City="Cary", State="NC", ZipCode="27519", AreaCode="919" }, 573 | new CustomerLocationData{ City="Charlotte", State="NC", ZipCode="28227", AreaCode="704" }, 574 | new CustomerLocationData{ City="Charlotte", State="NC", ZipCode="28277", AreaCode="704" }, 575 | new CustomerLocationData{ City="Charlotte", State="NC", ZipCode="28204", AreaCode="704" }, 576 | new CustomerLocationData{ City="Charlotte", State="NC", ZipCode="28216", AreaCode="704" }, 577 | new CustomerLocationData{ City="Durham", State="NC", ZipCode="27713", AreaCode="919" }, 578 | new CustomerLocationData{ City="Durham", State="NC", ZipCode="27707", AreaCode="919" }, 579 | new CustomerLocationData{ City="Greensboro", State="NC", ZipCode="27408", AreaCode="336" }, 580 | new CustomerLocationData{ City="Greensboro", State="NC", ZipCode="27407", AreaCode="336" }, 581 | new CustomerLocationData{ City="Greensboro", State="NC", ZipCode="27410", AreaCode="336" }, 582 | new CustomerLocationData{ City="Greenville", State="NC", ZipCode="27834", AreaCode="252" }, 583 | new CustomerLocationData{ City="Hickory", State="NC", ZipCode="28602", AreaCode="828" }, 584 | new CustomerLocationData{ City="Monroe", State="NC", ZipCode="28110", AreaCode="704" }, 585 | new CustomerLocationData{ City="Raleigh", State="NC", ZipCode="27609", AreaCode="919" }, 586 | new CustomerLocationData{ City="Raleigh", State="NC", ZipCode="27613", AreaCode="919" }, 587 | new CustomerLocationData{ City="Raleigh", State="NC", ZipCode="27616", AreaCode="919" }, 588 | new CustomerLocationData{ City="Raleigh", State="NC", ZipCode="27617", AreaCode="919" }, 589 | new CustomerLocationData{ City="Wake Forest", State="NC", ZipCode="27587", AreaCode="919" }, 590 | new CustomerLocationData{ City="Winston Salem", State="NC", ZipCode="27105", AreaCode="336" }, 591 | new CustomerLocationData{ City="Winston Salem", State="NC", ZipCode="27103", AreaCode="336" }, 592 | new CustomerLocationData{ City="Amherst", State="OH", ZipCode="44001", AreaCode="440" }, 593 | new CustomerLocationData{ City="Beavercreek", State="OH", ZipCode="45431", AreaCode="937" }, 594 | new CustomerLocationData{ City="Cincinnati", State="OH", ZipCode="45255", AreaCode="513" }, 595 | new CustomerLocationData{ City="Cleveland", State="OH", ZipCode="44111", AreaCode="216" }, 596 | new CustomerLocationData{ City="Cincinnati", State="OH", ZipCode="45251", AreaCode="513" }, 597 | new CustomerLocationData{ City="Columbus", State="OH", ZipCode="43219", AreaCode="614" }, 598 | new CustomerLocationData{ City="Columbus", State="OH", ZipCode="43240", AreaCode="614" }, 599 | new CustomerLocationData{ City="Dayton", State="OH", ZipCode="45440", AreaCode="937" }, 600 | new CustomerLocationData{ City="Toledo", State="OH", ZipCode="43623", AreaCode="419" }, 601 | new CustomerLocationData{ City="Albany", State="OR", ZipCode="97322", AreaCode="541" }, 602 | new CustomerLocationData{ City="Bend", State="OR", ZipCode="97701", AreaCode="541" }, 603 | new CustomerLocationData{ City="Eugene", State="OR", ZipCode="97402", AreaCode="541" }, 604 | new CustomerLocationData{ City="Portland", State="OR", ZipCode="97216", AreaCode="503" }, 605 | new CustomerLocationData{ City="Portland", State="OR", ZipCode="97217", AreaCode="503" }, 606 | new CustomerLocationData{ City="Salem", State="OR", ZipCode="97301", AreaCode="503" }, 607 | new CustomerLocationData{ City="Springfield", State="OR", ZipCode="97477", AreaCode="541" }, 608 | new CustomerLocationData{ City="Beaverton", State="OR", ZipCode="97006", AreaCode="503" }, 609 | new CustomerLocationData{ City="Allentown", State="PA", ZipCode="18104", AreaCode="610" }, 610 | new CustomerLocationData{ City="Altoona", State="PA", ZipCode="16601", AreaCode="814" }, 611 | new CustomerLocationData{ City="Philadelphia", State="PA", ZipCode="19150", AreaCode="267" }, 612 | new CustomerLocationData{ City="Glen Mills", State="PA", ZipCode="19342", AreaCode="610" }, 613 | new CustomerLocationData{ City="Erie", State="PA", ZipCode="16509", AreaCode="814" }, 614 | new CustomerLocationData{ City="Reading", State="PA", ZipCode="19606", AreaCode="484" }, 615 | new CustomerLocationData{ City="Allentown", State="PA", ZipCode="18109", AreaCode="610" }, 616 | new CustomerLocationData{ City="Pittsburgh", State="PA", ZipCode="15238", AreaCode="412" }, 617 | new CustomerLocationData{ City="Harrisburg", State="PA", ZipCode="17111", AreaCode="717" }, 618 | new CustomerLocationData{ City="Harrisburg", State="PA", ZipCode="17112", AreaCode="717" }, 619 | new CustomerLocationData{ City="Lancaster", State="PA", ZipCode="17602", AreaCode="717" }, 620 | new CustomerLocationData{ City="Philadelphia", State="PA", ZipCode="19134", AreaCode="215" }, 621 | new CustomerLocationData{ City="Philadelphia", State="PA", ZipCode="19152", AreaCode="267" }, 622 | new CustomerLocationData{ City="Philadelphia", State="PA", ZipCode="19116", AreaCode="215" }, 623 | new CustomerLocationData{ City="Philadelphia", State="PA", ZipCode="19148", AreaCode="215" }, 624 | new CustomerLocationData{ City="Philadelphia", State="PA", ZipCode="19131", AreaCode="267" }, 625 | new CustomerLocationData{ City="Pottstown", State="PA", ZipCode="19464", AreaCode="484" }, 626 | new CustomerLocationData{ City="Lincoln", State="RI", ZipCode="02865", AreaCode="401" }, 627 | new CustomerLocationData{ City="Smithfield", State="RI", ZipCode="02917", AreaCode="401" }, 628 | new CustomerLocationData{ City="Warwick", State="RI", ZipCode="02886", AreaCode="401" }, 629 | new CustomerLocationData{ City="Warwick", State="RI", ZipCode="02886", AreaCode="401" }, 630 | new CustomerLocationData{ City="Aiken", State="SC", ZipCode="29803", AreaCode="803" }, 631 | new CustomerLocationData{ City="Charleston", State="SC", ZipCode="29407", AreaCode="843" }, 632 | new CustomerLocationData{ City="Columbia", State="SC", ZipCode="29209", AreaCode="803" }, 633 | new CustomerLocationData{ City="Columbia", State="SC", ZipCode="29229", AreaCode="803" }, 634 | new CustomerLocationData{ City="Columbia", State="SC", ZipCode="29212", AreaCode="803" }, 635 | new CustomerLocationData{ City="Florence", State="SC", ZipCode="29501", AreaCode="843" }, 636 | new CustomerLocationData{ City="Myrtle Beach", State="SC", ZipCode="29577", AreaCode="843" }, 637 | new CustomerLocationData{ City="Myrtle Beach", State="SC", ZipCode="29588", AreaCode="843" }, 638 | new CustomerLocationData{ City="Brentwood", State="TN", ZipCode="37027", AreaCode="615" }, 639 | new CustomerLocationData{ City="Chattanooga", State="TN", ZipCode="37421", AreaCode="423" }, 640 | new CustomerLocationData{ City="Clarksville", State="TN", ZipCode="37040", AreaCode="931" }, 641 | new CustomerLocationData{ City="Knoxville", State="TN", ZipCode="37934", AreaCode="865" }, 642 | new CustomerLocationData{ City="Knoxville", State="TN", ZipCode="37919", AreaCode="865" }, 643 | new CustomerLocationData{ City="Maryville", State="TN", ZipCode="37801", AreaCode="865" }, 644 | new CustomerLocationData{ City="Memphis", State="TN", ZipCode="38117", AreaCode="901" }, 645 | new CustomerLocationData{ City="Memphis", State="TN", ZipCode="38119", AreaCode="901" }, 646 | new CustomerLocationData{ City="Murfreesboro", State="TN", ZipCode="37129", AreaCode="615" }, 647 | new CustomerLocationData{ City="Nashville", State="TN", ZipCode="37214", AreaCode="615" }, 648 | new CustomerLocationData{ City="San Antonio", State="TX", ZipCode="78209", AreaCode="210" }, 649 | new CustomerLocationData{ City="Amarillo", State="TX", ZipCode="79121", AreaCode="806" }, 650 | new CustomerLocationData{ City="Arlington", State="TX", ZipCode="76015", AreaCode="817" }, 651 | new CustomerLocationData{ City="Austin", State="TX", ZipCode="78759", AreaCode="512" }, 652 | new CustomerLocationData{ City="Austin", State="TX", ZipCode="78723", AreaCode="512" }, 653 | new CustomerLocationData{ City="Austin", State="TX", ZipCode="78758", AreaCode="512" }, 654 | new CustomerLocationData{ City="Austin", State="TX", ZipCode="78749", AreaCode="512" }, 655 | new CustomerLocationData{ City="Austin", State="TX", ZipCode="78704", AreaCode="512" }, 656 | new CustomerLocationData{ City="Austin", State="TX", ZipCode="78748", AreaCode="512" }, 657 | new CustomerLocationData{ City="San Antonio", State="TX", ZipCode="78232", AreaCode="210" }, 658 | new CustomerLocationData{ City="Dallas", State="TX", ZipCode="75204", AreaCode="214" }, 659 | new CustomerLocationData{ City="Dallas", State="TX", ZipCode="75204", AreaCode="214" }, 660 | new CustomerLocationData{ City="Dallas", State="TX", ZipCode="75204", AreaCode="214" }, 661 | new CustomerLocationData{ City="Dallas", State="TX", ZipCode="75204", AreaCode="214" }, 662 | new CustomerLocationData{ City="Dallas", State="TX", ZipCode="75204", AreaCode="214" }, 663 | new CustomerLocationData{ City="Dallas", State="TX", ZipCode="75204", AreaCode="214" }, 664 | new CustomerLocationData{ City="Dallas", State="TX", ZipCode="75204", AreaCode="214" }, 665 | new CustomerLocationData{ City="Dallas", State="TX", ZipCode="75204", AreaCode="214" }, 666 | new CustomerLocationData{ City="Fort Worth", State="TX", ZipCode="76132", AreaCode="817" }, 667 | new CustomerLocationData{ City="Dallas", State="TX", ZipCode="75231", AreaCode="214" }, 668 | new CustomerLocationData{ City="Dallas", State="TX", ZipCode="75237", AreaCode="469" }, 669 | new CustomerLocationData{ City="Fort Worth", State="TX", ZipCode="76120", AreaCode="817" }, 670 | new CustomerLocationData{ City="El Paso", State="TX", ZipCode="79925", AreaCode="915" }, 671 | new CustomerLocationData{ City="El Paso", State="TX", ZipCode="79936", AreaCode="915" }, 672 | new CustomerLocationData{ City="El Paso", State="TX", ZipCode="79936", AreaCode="915" }, 673 | new CustomerLocationData{ City="El Paso", State="TX", ZipCode="79912", AreaCode="915" }, 674 | new CustomerLocationData{ City="Austin", State="TX", ZipCode="78730", AreaCode="512" }, 675 | new CustomerLocationData{ City="Houston", State="TX", ZipCode="77007", AreaCode="713" }, 676 | new CustomerLocationData{ City="Houston", State="TX", ZipCode="77082", AreaCode="281" }, 677 | new CustomerLocationData{ City="Houston", State="TX", ZipCode="77024", AreaCode="713" }, 678 | new CustomerLocationData{ City="Houston", State="TX", ZipCode="77096", AreaCode="713" }, 679 | new CustomerLocationData{ City="Houston", State="TX", ZipCode="77040", AreaCode="713" }, 680 | new CustomerLocationData{ City="Houston", State="TX", ZipCode="77025", AreaCode="713" }, 681 | new CustomerLocationData{ City="Houston", State="TX", ZipCode="77094", AreaCode="281" }, 682 | new CustomerLocationData{ City="Dallas", State="TX", ZipCode="75220", AreaCode="214" }, 683 | new CustomerLocationData{ City="Lubbock", State="TX", ZipCode="79423", AreaCode="806" }, 684 | new CustomerLocationData{ City="Lubbock", State="TX", ZipCode="79407", AreaCode="806" }, 685 | new CustomerLocationData{ City="San Antonio", State="TX", ZipCode="78253", AreaCode="210" }, 686 | new CustomerLocationData{ City="San Antonio", State="TX", ZipCode="78253", AreaCode="210" }, 687 | new CustomerLocationData{ City="San Antonio", State="TX", ZipCode="78253", AreaCode="210" }, 688 | new CustomerLocationData{ City="San Antonio", State="TX", ZipCode="78244", AreaCode="210" }, 689 | new CustomerLocationData{ City="San Antonio", State="TX", ZipCode="78258", AreaCode="210" }, 690 | new CustomerLocationData{ City="San Antonio", State="TX", ZipCode="78223", AreaCode="210" }, 691 | new CustomerLocationData{ City="San Antonio", State="TX", ZipCode="78250", AreaCode="210" }, 692 | new CustomerLocationData{ City="San Antonio", State="TX", ZipCode="78245", AreaCode="210" }, 693 | new CustomerLocationData{ City="Houston", State="TX", ZipCode="77042", AreaCode="713" }, 694 | new CustomerLocationData{ City="Houston", State="TX", ZipCode="77063", AreaCode="713" }, 695 | new CustomerLocationData{ City="Houston", State="TX", ZipCode="77069", AreaCode="281" }, 696 | new CustomerLocationData{ City="Salt Lake City", State="UT", ZipCode="84121", AreaCode="801" }, 697 | new CustomerLocationData{ City="Layton", State="UT", ZipCode="84041", AreaCode="801" }, 698 | new CustomerLocationData{ City="Riverdale", State="UT", ZipCode="84405", AreaCode="801" }, 699 | new CustomerLocationData{ City="Salt Lake City", State="UT", ZipCode="84101", AreaCode="801" }, 700 | new CustomerLocationData{ City="Charlottesville", State="VA", ZipCode="22911", AreaCode="434" }, 701 | new CustomerLocationData{ City="Chesapeake", State="VA", ZipCode="23320", AreaCode="757" }, 702 | new CustomerLocationData{ City="Chesapeake", State="VA", ZipCode="23322", AreaCode="757" }, 703 | new CustomerLocationData{ City="Chesapeake", State="VA", ZipCode="23322", AreaCode="757" }, 704 | new CustomerLocationData{ City="Chesapeake", State="VA", ZipCode="23321", AreaCode="757" }, 705 | new CustomerLocationData{ City="Richmond", State="VA", ZipCode="23225", AreaCode="804" }, 706 | new CustomerLocationData{ City="Richmond", State="VA", ZipCode="23225", AreaCode="804" }, 707 | new CustomerLocationData{ City="Fredericksburg", State="VA", ZipCode="22401", AreaCode="540" }, 708 | new CustomerLocationData{ City="Fredericksburg", State="VA", ZipCode="22407", AreaCode="540" }, 709 | new CustomerLocationData{ City="Richmond", State="VA", ZipCode="23230", AreaCode="804" }, 710 | new CustomerLocationData{ City="Richmond", State="VA", ZipCode="23231", AreaCode="804" }, 711 | new CustomerLocationData{ City="Virginia Beach", State="VA", ZipCode="23451", AreaCode="757" }, 712 | new CustomerLocationData{ City="Virginia Beach", State="VA", ZipCode="23462", AreaCode="757" }, 713 | new CustomerLocationData{ City="Virginia Beach", State="VA", ZipCode="23454", AreaCode="757" }, 714 | new CustomerLocationData{ City="Virginia Beach", State="VA", ZipCode="23454", AreaCode="757" }, 715 | new CustomerLocationData{ City="Virginia Beach", State="VA", ZipCode="23453", AreaCode="757" }, 716 | new CustomerLocationData{ City="Glen Allen", State="VA", ZipCode="23059", AreaCode="804" }, 717 | new CustomerLocationData{ City="Glen Allen", State="VA", ZipCode="23059", AreaCode="804" }, 718 | new CustomerLocationData{ City="Williamsburg", State="VA", ZipCode="23185", AreaCode="757" }, 719 | new CustomerLocationData{ City="Williamsburg", State="VA", ZipCode="23188", AreaCode="757" }, 720 | new CustomerLocationData{ City="Winchester", State="VA", ZipCode="22603", AreaCode="540" }, 721 | new CustomerLocationData{ City="Bellevue", State="WA", ZipCode="98006", AreaCode="425" }, 722 | new CustomerLocationData{ City="Issaquah", State="WA", ZipCode="98027", AreaCode="425" }, 723 | new CustomerLocationData{ City="Spokane", State="WA", ZipCode="99218", AreaCode="509" }, 724 | new CustomerLocationData{ City="Seattle", State="WA", ZipCode="98125", AreaCode="206" }, 725 | new CustomerLocationData{ City="Redmond", State="WA", ZipCode="98052", AreaCode="425" }, 726 | new CustomerLocationData{ City="Vancouver", State="WA", ZipCode="98684", AreaCode="360" }, 727 | new CustomerLocationData{ City="Vancouver", State="WA", ZipCode="98665", AreaCode="360" }, 728 | new CustomerLocationData{ City="Vancouver", State="WA", ZipCode="98662", AreaCode="360" }, 729 | new CustomerLocationData{ City="Seattle", State="WA", ZipCode="98126", AreaCode="206" } 730 | }; 731 | 732 | #endregion 733 | 734 | #region "Utility methods for getting random customer data" 735 | 736 | private static string GetNextCompany() { 737 | int index = RandomNumberGenerator.Next(0, CompanyNames.Length); 738 | return CompanyNames[index]; 739 | } 740 | 741 | private static string GetNextFemaleFirstName() { 742 | int index = RandomNumberGenerator.Next(0, FemaleFirstNames.Length); 743 | return FemaleFirstNames[index]; 744 | } 745 | 746 | private static string GetNextMaleFirstName() { 747 | int index = RandomNumberGenerator.Next(0, MaleFirstNames.Length); 748 | return MaleFirstNames[index]; 749 | } 750 | 751 | private static string GetNextLastName() { 752 | int index = RandomNumberGenerator.Next(0, LastNames.Length); 753 | return LastNames[index]; 754 | } 755 | 756 | private static string GetNextAddress() { 757 | int StreetNumberDigitCount = RandomNumberGenerator.Next(2, 5); 758 | string StreetNumber = RandomNumberGenerator.Next(14, Convert.ToInt32(Math.Pow(10, StreetNumberDigitCount))).ToString(); 759 | string StreetName = StreetNames[RandomNumberGenerator.Next(0, StreetNames.Length)]; 760 | return StreetNumber + " " + StreetName; 761 | } 762 | 763 | private static string GetNextPhoneNumber() { 764 | return ("1(" + RandomNumberGenerator.Next(2, 9).ToString() + RandomNumberGenerator.Next(0, 9).ToString() + RandomNumberGenerator.Next(0, 9).ToString() + ")" + RandomNumberGenerator.Next(2, 9).ToString() + RandomNumberGenerator.Next(0, 9).ToString() + RandomNumberGenerator.Next(0, 9).ToString() + "-" + RandomNumberGenerator.Next(0, 9).ToString() + RandomNumberGenerator.Next(0, 9).ToString() + RandomNumberGenerator.Next(0, 9).ToString() + RandomNumberGenerator.Next(0, 9).ToString()); 765 | } 766 | 767 | private static string GetNextPhoneNumber(string AreaCode) { 768 | 769 | string FirstDigit = RandomNumberGenerator.Next(1, 9).ToString(); 770 | string SecondDigit = RandomNumberGenerator.Next(0, 9).ToString(); 771 | 772 | return ("1(" + AreaCode + ")" + 773 | FirstDigit + FirstDigit + FirstDigit + 774 | "-" + 775 | SecondDigit + SecondDigit + SecondDigit + SecondDigit); 776 | } 777 | 778 | private static CustomerLocationData GetNextCustomerLocation() { 779 | 780 | int index = RandomNumberGenerator.Next(0, CustomerLocations.Length); 781 | return CustomerLocations[index]; 782 | } 783 | 784 | #endregion 785 | 786 | public static CustomerData GetNextCustomer() { 787 | 788 | CustomerLocationData customerLocation = GetNextCustomerLocation(); 789 | 790 | string Address = GetNextAddress(); 791 | string City = customerLocation.City; 792 | string State = customerLocation.State; 793 | string ZipCode = customerLocation.ZipCode; 794 | string AreaCode = customerLocation.AreaCode; 795 | string WorkPhoneNumber = GetNextPhoneNumber(AreaCode); 796 | string HomePhoneNumber = GetNextPhoneNumber(AreaCode); 797 | 798 | string Gender = "F"; 799 | if (RandomNumberGenerator.Next(1, 100) > 42) { Gender = "M"; } 800 | 801 | string FirstName = ""; 802 | if (Gender.Equals("F")) { 803 | FirstName = GetNextFemaleFirstName(); 804 | } 805 | else { 806 | FirstName = GetNextMaleFirstName(); 807 | } 808 | 809 | string LastName = GetNextLastName(); 810 | string Company = GetNextCompany(); 811 | string EmailAddress = (FirstName + "." + LastName + "@" + Company + ".com").Replace(" ", "").Replace("'", ""); 812 | 813 | CustomerData newCustomer = new CustomerData { 814 | FirstName = FirstName, 815 | LastName = LastName, 816 | Company = Company, 817 | EmailAddress = EmailAddress, 818 | WorkPhone = WorkPhoneNumber, 819 | HomePhone = HomePhoneNumber, 820 | Address = Address, 821 | City = City, 822 | State = State, 823 | ZipCode = ZipCode 824 | }; 825 | 826 | customerCount += 1; 827 | 828 | return newCustomer; 829 | 830 | } 831 | 832 | public static IEnumerable GetCustomerList() { 833 | return GetCustomerList(10); 834 | } 835 | 836 | public static IEnumerable GetCustomerList(int CustomerCount) { 837 | return GetCustomerList(CustomerCount, true); 838 | } 839 | 840 | public static IEnumerable GetCustomerList(int CustomerCount, bool Predictable) { 841 | if (Predictable) { 842 | RandomNumberGenerator = new Random(714); 843 | } 844 | else { 845 | RandomNumberGenerator = new Random(Guid.NewGuid().GetHashCode()); 846 | } 847 | List list = new List(CustomerCount); 848 | for (int i = 1; i <= CustomerCount; i++) { 849 | list.Add(GetNextCustomer()); 850 | } 851 | return list; 852 | } 853 | 854 | } 855 | 856 | 857 | 858 | 859 | } 860 | -------------------------------------------------------------------------------- /Student/Extras/BBSPA_ListGenerator/BBSPA_ListGenerator/Models/SharePointListFactory.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.SharePoint.Client; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Configuration; 5 | using System.Linq; 6 | using System.Security; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | 10 | namespace BBSPA_ListGenerator { 11 | 12 | class SharePointListFactory { 13 | 14 | #region "Variables to track ClientContext, Site and Web" 15 | 16 | static string siteUrl = ConfigurationManager.AppSettings["targetSiteUrl"]; 17 | static ClientContext clientContext = new ClientContext(siteUrl); 18 | static Site siteCollection = clientContext.Site; 19 | static Web site = clientContext.Web; 20 | 21 | static SharePointListFactory() { 22 | string userName = ConfigurationManager.AppSettings["userName"]; 23 | string password = ConfigurationManager.AppSettings["password"]; 24 | SecureString securePassword = new SecureString(); 25 | foreach (char c in password) { 26 | securePassword.AppendChar(c); 27 | }; 28 | clientContext.Credentials = new SharePointOnlineCredentials(userName, securePassword); 29 | clientContext.Load(site); 30 | clientContext.Load(site.Lists); 31 | clientContext.Load(site.ContentTypes); 32 | clientContext.ExecuteQuery(); 33 | } 34 | 35 | #endregion 36 | 37 | #region "Variables and helper methods for site columns, content types and lists" 38 | 39 | static Field CreateSiteColumn(string fieldName, string fieldDisplayName, string fieldType) { 40 | 41 | Console.WriteLine("Creating " + fieldName + " site column..."); 42 | 43 | // delete existing field if it exists 44 | try { 45 | Field fld = site.Fields.GetByInternalNameOrTitle(fieldName); 46 | fld.DeleteObject(); 47 | clientContext.ExecuteQuery(); 48 | } 49 | catch { } 50 | 51 | string fieldXML = @" " + 55 | ""; 56 | 57 | Field field = site.Fields.AddFieldAsXml(fieldXML, true, AddFieldOptions.DefaultValue); 58 | clientContext.Load(field); 59 | clientContext.ExecuteQuery(); 60 | return field; 61 | } 62 | 63 | static void DeleteContentType(string contentTypeName) { 64 | 65 | try { 66 | foreach (var ct in site.ContentTypes) { 67 | if (ct.Name.Equals(contentTypeName)) { 68 | ct.DeleteObject(); 69 | Console.WriteLine("Deleting existing " + ct.Name + " content type..."); 70 | clientContext.ExecuteQuery(); 71 | break; 72 | } 73 | } 74 | } 75 | catch { } 76 | 77 | } 78 | 79 | static ContentType CreateContentType(string contentTypeName, string baseContentType) { 80 | 81 | DeleteContentType(contentTypeName); 82 | 83 | ContentTypeCreationInformation contentTypeCreateInfo = new ContentTypeCreationInformation(); 84 | contentTypeCreateInfo.Name = contentTypeName; 85 | contentTypeCreateInfo.ParentContentType = site.ContentTypes.GetById(baseContentType); ; 86 | contentTypeCreateInfo.Group = "Critical Path Training"; 87 | ContentType ctype = site.ContentTypes.Add(contentTypeCreateInfo); 88 | clientContext.ExecuteQuery(); 89 | return ctype; 90 | 91 | } 92 | 93 | static void DeleteList(string listTitle) { 94 | try { 95 | List list = site.Lists.GetByTitle(listTitle); 96 | list.DeleteObject(); 97 | Console.WriteLine("Deleting existing " + listTitle + " list..."); 98 | clientContext.ExecuteQuery(); 99 | } 100 | catch { } 101 | } 102 | 103 | #endregion 104 | 105 | public static void CreateAllLists() { 106 | DeleteOrderDetailsList(); 107 | DeleteOrdersList(); 108 | DeleteCustomersList(); 109 | CreateCustomersList(8, 8); 110 | CreateOrdersList(); 111 | CreateOrderDetailsList(); 112 | Console.WriteLine(); 113 | Console.WriteLine("All lists have been created"); 114 | Console.WriteLine(); 115 | } 116 | 117 | #region "Customers List" 118 | 119 | static List listCustomers; 120 | 121 | public static void CreateCustomersList(int CustomerCount, int BatchSize) { 122 | 123 | Console.WriteLine("Creating customers list..."); 124 | 125 | ListCreationInformation listInformationCustomers = new ListCreationInformation(); 126 | listInformationCustomers.Title = "Customers"; 127 | listInformationCustomers.Url = "Lists/Customers"; 128 | listInformationCustomers.QuickLaunchOption = QuickLaunchOptions.On; 129 | listInformationCustomers.TemplateType = (int)ListTemplateType.GenericList; 130 | listCustomers = site.Lists.Add(listInformationCustomers); 131 | listCustomers.OnQuickLaunch = true; 132 | listCustomers.EnableAttachments = false; 133 | listCustomers.Update(); 134 | clientContext.ExecuteQuery(); 135 | 136 | var fldTitle = listCustomers.Fields.GetByInternalNameOrTitle("Title"); 137 | fldTitle.Title = "Last Name"; 138 | fldTitle.Update(); 139 | clientContext.ExecuteQuery(); 140 | 141 | listCustomers.Fields.Add(site.Fields.GetByInternalNameOrTitle("FirstName")); 142 | listCustomers.Fields.Add(site.Fields.GetByInternalNameOrTitle("Company")); 143 | listCustomers.Fields.Add(site.Fields.GetByInternalNameOrTitle("EMail")); 144 | listCustomers.Fields.Add(site.Fields.GetByInternalNameOrTitle("WorkPhone")); 145 | listCustomers.Fields.Add(site.Fields.GetByInternalNameOrTitle("HomePhone")); 146 | listCustomers.Fields.Add(site.Fields.GetByInternalNameOrTitle("WorkAddress")); 147 | listCustomers.Fields.Add(site.Fields.GetByInternalNameOrTitle("WorkCity")); 148 | listCustomers.Fields.Add(site.Fields.GetByInternalNameOrTitle("WorkState")); 149 | listCustomers.Fields.Add(site.Fields.GetByInternalNameOrTitle("WorkZip")); 150 | clientContext.ExecuteQuery(); 151 | 152 | listCustomers.DefaultView.ViewFields.Add("FirstName"); 153 | listCustomers.DefaultView.ViewFields.Add("Company"); 154 | listCustomers.DefaultView.ViewFields.Add("EMail"); 155 | listCustomers.DefaultView.Update(); 156 | clientContext.ExecuteQuery(); 157 | 158 | clientContext.Load(listCustomers); 159 | clientContext.ExecuteQuery(); 160 | 161 | PopulateCustomersList(CustomerCount, BatchSize); 162 | } 163 | 164 | static void DeleteCustomersList() { 165 | DeleteList("Customers"); 166 | } 167 | 168 | static void PopulateCustomersList(int CustomerCount, int BatchSize) { 169 | Console.WriteLine("Adding sample Customers list items..."); 170 | 171 | int customerCounter = 0; 172 | int batchCounter = 0; 173 | int batchStart = 1; 174 | 175 | var customers = RandomCustomerGenerator.GetCustomerList(CustomerCount); 176 | 177 | foreach (var customer in customers) { 178 | // increment counters 179 | customerCounter += 1; 180 | batchCounter += 1; 181 | // add new customer item 182 | ListItem newCustomer = listCustomers.AddItem(new ListItemCreationInformation()); 183 | newCustomer["Title"] = customer.LastName; 184 | newCustomer["FirstName"] = customer.FirstName; 185 | newCustomer["Company"] = customer.Company; 186 | newCustomer["HomePhone"] = customer.HomePhone; 187 | newCustomer["WorkPhone"] = customer.WorkPhone; 188 | newCustomer["EMail"] = customer.EmailAddress; 189 | newCustomer["WorkAddress"] = customer.Address; 190 | newCustomer["WorkCity"] = customer.City; 191 | newCustomer["WorkState"] = customer.State; 192 | newCustomer["WorkZip"] = customer.ZipCode; 193 | newCustomer.Update(); 194 | if (batchCounter >= BatchSize) { 195 | clientContext.ExecuteQuery(); 196 | batchCounter = 0; 197 | batchStart = customerCounter + 1; 198 | } 199 | } 200 | clientContext.ExecuteQuery(); 201 | 202 | } 203 | 204 | static bool CustomersListExists() { 205 | if (listCustomers == null || listCustomers.ServerObjectIsNull == null || listCustomers.ServerObjectIsNull == true) { 206 | try { 207 | listCustomers = clientContext.Web.Lists.GetByTitle("Customers"); 208 | clientContext.Load(listCustomers); 209 | clientContext.ExecuteQuery(); 210 | if (listCustomers == null || listCustomers.ServerObjectIsNull == null || listCustomers.ServerObjectIsNull == true) { 211 | return false; 212 | } 213 | } 214 | catch { 215 | return false; 216 | } 217 | } 218 | return true; 219 | } 220 | 221 | #endregion 222 | 223 | #region "Orders List" 224 | 225 | static List listOrders; 226 | 227 | public static void CreateOrdersList() { 228 | 229 | Console.WriteLine("Creating orders list..."); 230 | 231 | if (CustomersListExists()) { 232 | ListCreationInformation listInformationOrders = new ListCreationInformation(); 233 | listInformationOrders.Title = "Orders"; 234 | listInformationOrders.Url = "Lists/Orders"; 235 | listInformationOrders.QuickLaunchOption = QuickLaunchOptions.On; 236 | listInformationOrders.TemplateType = (int)ListTemplateType.GenericList; 237 | listOrders = site.Lists.Add(listInformationOrders); 238 | listOrders.OnQuickLaunch = true; 239 | listOrders.EnableAttachments = false; 240 | listOrders.Update(); 241 | clientContext.ExecuteQuery(); 242 | 243 | clientContext.Load(listOrders.DefaultView.ViewFields); 244 | clientContext.ExecuteQuery(); 245 | 246 | listOrders.DefaultView.ViewFields.RemoveAll(); 247 | listOrders.DefaultView.ViewFields.Add("ID"); 248 | listOrders.DefaultView.ViewFields.Add("Title"); 249 | listOrders.DefaultView.Update(); 250 | clientContext.ExecuteQuery(); 251 | 252 | string fldCustomerLookupXml = @""; 253 | FieldLookup fldCustomerLookup = 254 | clientContext.CastTo(listOrders.Fields.AddFieldAsXml(fldCustomerLookupXml, 255 | true, 256 | AddFieldOptions.DefaultValue)); 257 | 258 | // add cusotmer lookup field 259 | fldCustomerLookup.LookupField = "Title"; 260 | fldCustomerLookup.LookupList = listCustomers.Id.ToString(); 261 | fldCustomerLookup.Indexed = true; 262 | fldCustomerLookup.RelationshipDeleteBehavior = RelationshipDeleteBehaviorType.Cascade; 263 | fldCustomerLookup.Update(); 264 | 265 | // add order date field 266 | string fldOrderDateXml = @""; 267 | FieldDateTime fldOrderDate = 268 | clientContext.CastTo(listOrders.Fields.AddFieldAsXml(fldOrderDateXml, 269 | true, 270 | AddFieldOptions.DefaultValue)); 271 | fldOrderDate.DisplayFormat = DateTimeFieldFormatType.DateOnly; 272 | fldOrderDate.Update(); 273 | 274 | // add order date field 275 | string fldOrderAmountXml = @""; 276 | FieldCurrency fldOrderAmount = 277 | clientContext.CastTo(listOrders.Fields.AddFieldAsXml(fldOrderAmountXml, 278 | true, 279 | AddFieldOptions.DefaultValue)); 280 | fldOrderAmount.Update(); 281 | 282 | clientContext.ExecuteQuery(); 283 | 284 | clientContext.Load(listOrders); 285 | clientContext.ExecuteQuery(); 286 | 287 | } 288 | else { 289 | Console.WriteLine("Cannot create Orders list because Customer list does not exist."); 290 | } 291 | 292 | } 293 | 294 | public static void DeleteOrdersList() { 295 | if (OrdersListExists()) { 296 | // delete customer lookup column if it exists 297 | ExceptionHandlingScope scope = new ExceptionHandlingScope(clientContext); 298 | using (scope.StartScope()) { 299 | using (scope.StartTry()) { 300 | var col = listOrders.Fields.GetByInternalNameOrTitle("Customer"); 301 | col.DeleteObject(); 302 | listOrders.Update(); 303 | } 304 | using (scope.StartCatch()) { } 305 | } 306 | clientContext.ExecuteQuery(); 307 | 308 | // delete orders list 309 | DeleteList("Orders"); 310 | listOrders = null; 311 | } 312 | } 313 | 314 | public static bool OrdersListExists() { 315 | if (listOrders == null || listOrders.ServerObjectIsNull == null || listOrders.ServerObjectIsNull == true) { 316 | try { 317 | listOrders = clientContext.Web.Lists.GetByTitle("Orders"); 318 | clientContext.Load(listOrders); 319 | clientContext.ExecuteQuery(); 320 | if (listOrders == null || (listOrders.ServerObjectIsNull == null && listOrders.ServerObjectIsNull == true)) { 321 | return false; 322 | } 323 | } 324 | catch { 325 | return false; 326 | } 327 | } 328 | return true; 329 | 330 | } 331 | 332 | #endregion 333 | 334 | #region "OrderDetails list" 335 | 336 | static List listOrderDetails; 337 | 338 | public static void CreateOrderDetailsList() { 339 | 340 | Console.WriteLine("Creating order details list..."); 341 | 342 | if (OrdersListExists()) { 343 | ListCreationInformation listInformationOrderDetails = new ListCreationInformation(); 344 | listInformationOrderDetails.Title = "OrderDetails"; 345 | listInformationOrderDetails.Url = "Lists/OrderDetails"; 346 | listInformationOrderDetails.QuickLaunchOption = QuickLaunchOptions.On; 347 | listInformationOrderDetails.TemplateType = (int)ListTemplateType.GenericList; 348 | listOrderDetails = site.Lists.Add(listInformationOrderDetails); 349 | listOrderDetails.OnQuickLaunch = true; 350 | listOrderDetails.EnableAttachments = false; 351 | listOrderDetails.Update(); 352 | clientContext.ExecuteQuery(); 353 | 354 | listOrderDetails.DefaultView.ViewFields.RemoveAll(); 355 | listOrderDetails.DefaultView.ViewFields.Add("ID"); 356 | listOrderDetails.DefaultView.Update(); 357 | clientContext.ExecuteQuery(); 358 | 359 | var fldTitle = listOrderDetails.Fields.GetByInternalNameOrTitle("Title"); 360 | fldTitle.Required = false; 361 | fldTitle.Update(); 362 | clientContext.ExecuteQuery(); 363 | 364 | string fldOrderLookupXml = @""; 365 | FieldLookup fldOrderLookup = 366 | clientContext.CastTo(listOrderDetails.Fields.AddFieldAsXml(fldOrderLookupXml, 367 | true, 368 | AddFieldOptions.AddFieldInternalNameHint)); 369 | 370 | // add cusotmer lookup field 371 | fldOrderLookup.LookupField = "ID"; 372 | fldOrderLookup.LookupList = listOrders.Id.ToString(); 373 | fldOrderLookup.Indexed = true; 374 | fldOrderLookup.RelationshipDeleteBehavior = RelationshipDeleteBehaviorType.Cascade; 375 | fldOrderLookup.Update(); 376 | 377 | // add quantity field 378 | string fldQuantityXml = @""; 379 | FieldNumber fldQuantity = 380 | clientContext.CastTo(listOrderDetails.Fields.AddFieldAsXml(fldQuantityXml, 381 | true, 382 | AddFieldOptions.DefaultValue)); 383 | fldQuantity.Update(); 384 | 385 | // add product field 386 | string fldProductXml = @""; 387 | FieldText fldProduct = 388 | clientContext.CastTo(listOrderDetails.Fields.AddFieldAsXml(fldProductXml, 389 | true, 390 | AddFieldOptions.DefaultValue)); 391 | fldProduct.Update(); 392 | 393 | string fldSalesAmountXml = @""; 394 | FieldCurrency fldSalesAmount = 395 | clientContext.CastTo(listOrderDetails.Fields.AddFieldAsXml(fldSalesAmountXml, 396 | true, 397 | AddFieldOptions.DefaultValue)); 398 | fldSalesAmount.Update(); 399 | 400 | clientContext.ExecuteQuery(); 401 | 402 | //listOrderDetails.DefaultView.ViewFields.Remove("Title"); 403 | listOrderDetails.DefaultView.Update(); 404 | clientContext.ExecuteQuery(); 405 | } 406 | else { 407 | Console.WriteLine("Cannot create OrderDetails list because Orders list does not exist."); 408 | } 409 | 410 | } 411 | 412 | public static void DeleteOrderDetailsList() { 413 | if (OrderDetailsListExists()) { 414 | 415 | // delete customer lookup column if it exists 416 | ExceptionHandlingScope scope = new ExceptionHandlingScope(clientContext); 417 | using (scope.StartScope()) { 418 | using (scope.StartTry()) { 419 | var col = listOrderDetails.Fields.GetByInternalNameOrTitle("OrderId"); 420 | col.DeleteObject(); 421 | listOrderDetails.Update(); 422 | } 423 | using (scope.StartCatch()) { } 424 | } 425 | 426 | DeleteList("OrderDetails"); 427 | 428 | } 429 | } 430 | 431 | public static bool OrderDetailsListExists() { 432 | 433 | if (listOrderDetails == null || listOrderDetails.ServerObjectIsNull == null || listOrderDetails.ServerObjectIsNull == true) { 434 | try { 435 | listOrderDetails = clientContext.Web.Lists.GetByTitle("OrderDetails"); 436 | clientContext.Load(listOrderDetails); 437 | clientContext.ExecuteQuery(); 438 | } 439 | catch { 440 | return false; 441 | } 442 | if (listOrderDetails == null || (listOrderDetails.ServerObjectIsNull == null && listOrderDetails.ServerObjectIsNull == true)) { 443 | return false; 444 | } 445 | } 446 | return true; 447 | } 448 | 449 | #endregion 450 | 451 | #region "Expenses List" 452 | 453 | public static void CreateExpensesLists() { 454 | DeleteExpenseListTypes(); 455 | CreateExpenseSiteColumns(); 456 | CreateExpenseContentTypes(); 457 | CreateExpensesList(); 458 | CreateExpenseBudgetsList(); 459 | } 460 | 461 | static FieldChoice fldExpenseCategory; 462 | static FieldDateTime fldExpenseDate; 463 | static FieldCurrency fldExpenseAmount; 464 | 465 | 466 | static FieldText fldExpenseBudgetYear; 467 | static FieldText fldExpenseBudgetQuarter; 468 | static FieldCurrency fldExpenseBudgetAmount; 469 | 470 | static ContentType ctypeExpense; 471 | static ContentType ctypeExpenseBudgetItem; 472 | 473 | static List listExpenses; 474 | static List listExpenseBudgets; 475 | 476 | static void DeleteExpenseListTypes() { 477 | DeleteList("Expenses"); 478 | DeleteList("Expense Budgets"); 479 | DeleteContentType("Expense Item"); 480 | DeleteContentType("Expense Budget Item"); 481 | } 482 | 483 | class ExpenseCategory { 484 | public const string OfficeSupplies = "Office Supplies"; 485 | public const string Marketing = "Marketing"; 486 | public const string Operations = "Operations"; 487 | public const string ResearchAndDevelopment = "Research & Development"; 488 | public static string[] GetAll() { 489 | string[] AllCategories = { OfficeSupplies, Marketing, Operations, ResearchAndDevelopment }; 490 | return AllCategories; 491 | } 492 | } 493 | 494 | static void CreateExpenseSiteColumns() { 495 | 496 | fldExpenseCategory = clientContext.CastTo(CreateSiteColumn("ExpenseCategory", "Expense Category", "Choice")); 497 | string[] choicesExpenseCategory = ExpenseCategory.GetAll(); 498 | fldExpenseCategory.Choices = choicesExpenseCategory; 499 | fldExpenseCategory.Update(); 500 | clientContext.ExecuteQuery(); 501 | 502 | 503 | fldExpenseDate = clientContext.CastTo(CreateSiteColumn("ExpenseDate", "Expense Date", "DateTime")); ; 504 | fldExpenseDate.DisplayFormat = DateTimeFieldFormatType.DateOnly; 505 | fldExpenseDate.Update(); 506 | 507 | fldExpenseAmount = clientContext.CastTo(CreateSiteColumn("ExpenseAmount", "Expense Amount", "Currency")); 508 | fldExpenseAmount.MinimumValue = 0; 509 | 510 | fldExpenseBudgetYear = clientContext.CastTo(CreateSiteColumn("ExpenseBudgetYear", "Budget Year", "Text")); 511 | 512 | fldExpenseBudgetQuarter = clientContext.CastTo(CreateSiteColumn("ExpenseBudgetQuarter", "Budget Quarter", "Text")); 513 | fldExpenseBudgetQuarter.Update(); 514 | 515 | fldExpenseBudgetAmount = clientContext.CastTo(CreateSiteColumn("ExpenseBudgetAmount", "Budget Amount", "Currency")); 516 | 517 | clientContext.ExecuteQuery(); 518 | } 519 | 520 | static void CreateExpenseContentTypes() { 521 | 522 | ctypeExpense = CreateContentType("Expense Item", "0x01"); 523 | ctypeExpense.Update(true); 524 | clientContext.Load(ctypeExpense.FieldLinks); 525 | clientContext.ExecuteQuery(); 526 | 527 | FieldLinkCreationInformation fldLinkExpenseCategory = new FieldLinkCreationInformation(); 528 | fldLinkExpenseCategory.Field = fldExpenseCategory; 529 | ctypeExpense.FieldLinks.Add(fldLinkExpenseCategory); 530 | ctypeExpense.Update(true); 531 | 532 | // add site columns 533 | FieldLinkCreationInformation fldLinkExpenseDate = new FieldLinkCreationInformation(); 534 | fldLinkExpenseDate.Field = fldExpenseDate; 535 | ctypeExpense.FieldLinks.Add(fldLinkExpenseDate); 536 | ctypeExpense.Update(true); 537 | 538 | // add site columns 539 | FieldLinkCreationInformation fldLinkExpenseAmount = new FieldLinkCreationInformation(); 540 | fldLinkExpenseAmount.Field = fldExpenseAmount; 541 | ctypeExpense.FieldLinks.Add(fldLinkExpenseAmount); 542 | ctypeExpense.Update(true); 543 | 544 | clientContext.ExecuteQuery(); 545 | 546 | ctypeExpenseBudgetItem = CreateContentType("Expense Budget Item", "0x01"); 547 | ctypeExpenseBudgetItem.Update(true); 548 | clientContext.Load(ctypeExpenseBudgetItem.FieldLinks); 549 | clientContext.ExecuteQuery(); 550 | 551 | FieldLinkCreationInformation fldLinkExpenseBudgetCategory = new FieldLinkCreationInformation(); 552 | fldLinkExpenseBudgetCategory.Field = fldExpenseCategory; 553 | ctypeExpenseBudgetItem.FieldLinks.Add(fldLinkExpenseBudgetCategory); 554 | ctypeExpenseBudgetItem.Update(true); 555 | 556 | FieldLinkCreationInformation fldLinkExpenseBudgetYear = new FieldLinkCreationInformation(); 557 | fldLinkExpenseBudgetYear.Field = fldExpenseBudgetYear; 558 | ctypeExpenseBudgetItem.FieldLinks.Add(fldLinkExpenseBudgetYear); 559 | ctypeExpenseBudgetItem.Update(true); 560 | 561 | FieldLinkCreationInformation fldLinkExpenseBudgetQuarter = new FieldLinkCreationInformation(); 562 | fldLinkExpenseBudgetQuarter.Field = fldExpenseBudgetQuarter; 563 | ctypeExpenseBudgetItem.FieldLinks.Add(fldLinkExpenseBudgetQuarter); 564 | ctypeExpenseBudgetItem.Update(true); 565 | 566 | FieldLinkCreationInformation fldLinkExpenseBudgetAmount = new FieldLinkCreationInformation(); 567 | fldLinkExpenseBudgetAmount.Field = fldExpenseBudgetAmount; 568 | ctypeExpenseBudgetItem.FieldLinks.Add(fldLinkExpenseBudgetAmount); 569 | ctypeExpenseBudgetItem.Update(true); 570 | 571 | clientContext.ExecuteQuery(); 572 | 573 | } 574 | 575 | static void CreateExpensesList() { 576 | 577 | string listTitle = "Expenses"; 578 | string listUrl = "Lists/Expenses"; 579 | 580 | // delete document library if it already exists 581 | ExceptionHandlingScope scope = new ExceptionHandlingScope(clientContext); 582 | using (scope.StartScope()) { 583 | using (scope.StartTry()) { 584 | site.Lists.GetByTitle(listTitle).DeleteObject(); 585 | } 586 | using (scope.StartCatch()) { } 587 | } 588 | 589 | ListCreationInformation lci = new ListCreationInformation(); 590 | lci.Title = listTitle; 591 | lci.Url = listUrl; 592 | lci.TemplateType = (int)ListTemplateType.GenericList; 593 | listExpenses = site.Lists.Add(lci); 594 | listExpenses.OnQuickLaunch = true; 595 | listExpenses.EnableFolderCreation = false; 596 | listExpenses.Update(); 597 | 598 | 599 | // attach JSLink script to default view for client-side rendering 600 | //listExpenses.DefaultView.JSLink = AppRootFolderRelativeUrl + "scripts/CustomersListCSR.js"; 601 | listExpenses.DefaultView.Update(); 602 | listExpenses.Update(); 603 | clientContext.Load(listExpenses); 604 | clientContext.Load(listExpenses.Fields); 605 | var titleField = listExpenses.Fields.GetByInternalNameOrTitle("Title"); 606 | titleField.Title = "Expense Description"; 607 | titleField.Update(); 608 | clientContext.ExecuteQuery(); 609 | 610 | listExpenses.ContentTypesEnabled = true; 611 | listExpenses.ContentTypes.AddExistingContentType(ctypeExpense); 612 | listExpenses.Update(); 613 | clientContext.Load(listExpenses.ContentTypes); 614 | clientContext.ExecuteQuery(); 615 | 616 | ContentType existing = listExpenses.ContentTypes[0]; 617 | existing.DeleteObject(); 618 | clientContext.ExecuteQuery(); 619 | 620 | View viewProducts = listExpenses.DefaultView; 621 | 622 | viewProducts.ViewFields.Add("ExpenseCategory"); 623 | viewProducts.ViewFields.Add("ExpenseDate"); 624 | viewProducts.ViewFields.Add("ExpenseAmount"); 625 | viewProducts.Update(); 626 | 627 | clientContext.ExecuteQuery(); 628 | 629 | PopulateExpensesList(); 630 | 631 | } 632 | 633 | static void CreateExpenseBudgetsList() { 634 | 635 | string listTitle = "Expense Budgets"; 636 | string listUrl = "Lists/ExpenseBudgets"; 637 | 638 | // delete document library if it already exists 639 | ExceptionHandlingScope scope = new ExceptionHandlingScope(clientContext); 640 | using (scope.StartScope()) { 641 | using (scope.StartTry()) { 642 | site.Lists.GetByTitle(listTitle).DeleteObject(); 643 | } 644 | using (scope.StartCatch()) { } 645 | } 646 | 647 | ListCreationInformation lci = new ListCreationInformation(); 648 | lci.Title = listTitle; 649 | lci.Url = listUrl; 650 | lci.TemplateType = (int)ListTemplateType.GenericList; 651 | listExpenseBudgets = site.Lists.Add(lci); 652 | listExpenseBudgets.OnQuickLaunch = true; 653 | listExpenseBudgets.EnableFolderCreation = false; 654 | listExpenseBudgets.Update(); 655 | 656 | listExpenseBudgets.DefaultView.Update(); 657 | listExpenseBudgets.Update(); 658 | clientContext.Load(listExpenseBudgets); 659 | clientContext.Load(listExpenseBudgets.Fields); 660 | var titleField = listExpenseBudgets.Fields.GetByInternalNameOrTitle("Title"); 661 | titleField.Title = "Expense Budget"; 662 | titleField.Update(); 663 | clientContext.ExecuteQuery(); 664 | 665 | listExpenseBudgets.ContentTypesEnabled = true; 666 | listExpenseBudgets.ContentTypes.AddExistingContentType(ctypeExpenseBudgetItem); 667 | listExpenseBudgets.Update(); 668 | clientContext.Load(listExpenseBudgets.ContentTypes); 669 | clientContext.ExecuteQuery(); 670 | 671 | ContentType existing = listExpenseBudgets.ContentTypes[0]; 672 | existing.DeleteObject(); 673 | clientContext.ExecuteQuery(); 674 | 675 | View viewProducts = listExpenseBudgets.DefaultView; 676 | 677 | viewProducts.ViewFields.Add("ExpenseCategory"); 678 | viewProducts.ViewFields.Add("ExpenseBudgetYear"); 679 | viewProducts.ViewFields.Add("ExpenseBudgetQuarter"); 680 | viewProducts.ViewFields.Add("ExpenseBudgetAmount"); 681 | viewProducts.Update(); 682 | 683 | clientContext.ExecuteQuery(); 684 | 685 | PopulateExpenseBudgetsList(); 686 | 687 | } 688 | 689 | static void AddExpense(string Description, string Category, DateTime Date, decimal Amount) { 690 | 691 | ListItem newItem = listExpenses.AddItem(new ListItemCreationInformation()); 692 | newItem["Title"] = Description; 693 | newItem["ExpenseCategory"] = Category; 694 | newItem["ExpenseDate"] = Date; 695 | newItem["ExpenseAmount"] = Amount; 696 | 697 | newItem.Update(); 698 | clientContext.ExecuteQuery(); 699 | 700 | Console.Write("."); 701 | } 702 | 703 | static void PopulateExpensesList() { 704 | 705 | Console.Write("Adding expenses"); 706 | 707 | // January 2019 708 | AddExpense("Water Bill", ExpenseCategory.Operations, new DateTime(2019, 1, 3), 133.44m); 709 | AddExpense("Verizon - Telephone Expenses", ExpenseCategory.Operations, new DateTime(2019, 1, 3), 328.40m); 710 | AddExpense("Electricity Bill", ExpenseCategory.Operations, new DateTime(2019, 1, 5), 824.90m); 711 | AddExpense("Cleaning Supplies", ExpenseCategory.OfficeSupplies, new DateTime(2019, 1, 8), 89.40m); 712 | AddExpense("Coffee Supplies", ExpenseCategory.OfficeSupplies, new DateTime(2019, 1, 18), 23.90m); 713 | AddExpense("Google Ad Words", ExpenseCategory.Marketing, new DateTime(2019, 1, 21), 478.33m); 714 | AddExpense("Postage Stamps", ExpenseCategory.OfficeSupplies, new DateTime(2019, 1, 21), 20.00m); 715 | AddExpense("Paper clips", ExpenseCategory.OfficeSupplies, new DateTime(2019, 1, 24), 12.50m); 716 | AddExpense("Toy Stress Tester", ExpenseCategory.ResearchAndDevelopment, new DateTime(2019, 1, 28), 2400.00m); 717 | AddExpense("Office Depot supply run", ExpenseCategory.OfficeSupplies, new DateTime(2019, 1, 29), 184.30m); 718 | 719 | // Feb 2019 720 | AddExpense("Water Bill", ExpenseCategory.Operations, new DateTime(2019, 2, 1), 138.02m); 721 | AddExpense("Verizon - Telephone Expenses", ExpenseCategory.Operations, new DateTime(2019, 2, 1), 297.47m); 722 | AddExpense("Electricity Bill", ExpenseCategory.Operations, new DateTime(2019, 2, 1), 789.77m); 723 | AddExpense("Pencils", ExpenseCategory.OfficeSupplies, new DateTime(2019, 2, 1), 8.95m); 724 | AddExpense("Coffee Supplies", ExpenseCategory.OfficeSupplies, new DateTime(2019, 2, 1), 74.55m); 725 | AddExpense("Cleaning Supplies", ExpenseCategory.OfficeSupplies, new DateTime(2019, 2, 1), 45.67m); 726 | AddExpense("Postage Stamps", ExpenseCategory.OfficeSupplies, new DateTime(2019, 2, 1), 32.34m); 727 | AddExpense("Paper clips", ExpenseCategory.OfficeSupplies, new DateTime(2019, 2, 1), 20m); 728 | AddExpense("Toy Stress Tester", ExpenseCategory.ResearchAndDevelopment, new DateTime(2019, 2, 1), 2400m); 729 | AddExpense("Office Depot supply run", ExpenseCategory.OfficeSupplies, new DateTime(2019, 2, 1), 196.44m); 730 | AddExpense("TV Ads - East Coast", ExpenseCategory.Marketing, new DateTime(2019, 2, 1), 2800m); 731 | AddExpense("TV Ads - West Coast", ExpenseCategory.Marketing, new DateTime(2019, 2, 1), 2400m); 732 | 733 | // March 2019 734 | AddExpense("Water Bill", ExpenseCategory.Operations, new DateTime(2019, 3, 1), 142.99m); 735 | AddExpense("Verizon - Telephone Expenses", ExpenseCategory.Operations, new DateTime(2019, 3, 1), 304.21m); 736 | AddExpense("Electricity Bill", ExpenseCategory.Operations, new DateTime(2019, 3, 1), 804.33m); 737 | AddExpense("Coffee Supplies", ExpenseCategory.OfficeSupplies, new DateTime(2019, 3, 1), 44.23m); 738 | AddExpense("Google Ad Words", ExpenseCategory.Marketing, new DateTime(2019, 3, 1), 500m); 739 | AddExpense("Printer Paper", ExpenseCategory.OfficeSupplies, new DateTime(2019, 3, 1), 48.20m); 740 | AddExpense("Postage Stamps", ExpenseCategory.OfficeSupplies, new DateTime(2019, 3, 1), 20m); 741 | AddExpense("Toner Cartridges for Printer", ExpenseCategory.OfficeSupplies, new DateTime(2019, 3, 1), 220.34m); 742 | AddExpense("Paper clips", ExpenseCategory.OfficeSupplies, new DateTime(2019, 3, 1), 8.95m); 743 | AddExpense("Pencils", ExpenseCategory.OfficeSupplies, new DateTime(2019, 3, 1), 12.30m); 744 | 745 | // April 2019 746 | AddExpense("Water Bill", ExpenseCategory.Operations, new DateTime(2019, 4, 1), 138.34m); 747 | AddExpense("Verizon - Telephone Expenses", ExpenseCategory.Operations, new DateTime(2019, 4, 1), 344.32m); 748 | AddExpense("Electricity Bill", ExpenseCategory.Operations, new DateTime(2019, 4, 1), 812.90m); 749 | AddExpense("Cleaning Supplies", ExpenseCategory.OfficeSupplies, new DateTime(2019, 4, 1), 32.45m); 750 | AddExpense("Toy Stress Tester", ExpenseCategory.ResearchAndDevelopment, new DateTime(2019, 4, 1), 2400m); 751 | AddExpense("Google Ad Words", ExpenseCategory.Marketing, new DateTime(2019, 4, 1), 500m); 752 | AddExpense("Print Ad in People Magazine", ExpenseCategory.Marketing, new DateTime(2019, 4, 1), 1200m); 753 | AddExpense("Coffee Supplies", ExpenseCategory.OfficeSupplies, new DateTime(2019, 4, 1), 34.20m); 754 | AddExpense("Toner Cartridges for Printer", ExpenseCategory.OfficeSupplies, new DateTime(2019, 4, 1), 127.88m); 755 | 756 | 757 | // May 2019 758 | AddExpense("Water Bill", ExpenseCategory.Operations, new DateTime(2019, 5, 1), 152.55m); 759 | AddExpense("Verizon - Telephone Expenses", ExpenseCategory.Operations, new DateTime(2019, 5, 1), 320.45m); 760 | AddExpense("Electricity Bill", ExpenseCategory.Operations, new DateTime(2019, 5, 1), 783.44m); 761 | AddExpense("Google Ad Words", ExpenseCategory.Marketing, new DateTime(2019, 5, 1), 23.90m); 762 | AddExpense("Toner Cartridges for Printer", ExpenseCategory.OfficeSupplies, new DateTime(2019, 5, 1), 240.50m); 763 | AddExpense("Printer Paper", ExpenseCategory.OfficeSupplies, new DateTime(2019, 5, 1), 22.32m); 764 | AddExpense("Postage Stamps", ExpenseCategory.OfficeSupplies, new DateTime(2019, 5, 1), 20m); 765 | AddExpense("Paper clips", ExpenseCategory.OfficeSupplies, new DateTime(2019, 5, 1), 8.95m); 766 | 767 | 768 | // June 2019 769 | AddExpense("Water Bill", ExpenseCategory.Operations, new DateTime(2019, 6, 1), 138.44m); 770 | AddExpense("Verizon - Telephone Expenses", ExpenseCategory.Operations, new DateTime(2019, 6, 1), 332.78m); 771 | AddExpense("Electricity Bill", ExpenseCategory.Operations, new DateTime(2019, 6, 1), 802.44m); 772 | AddExpense("Coffee Supplies", ExpenseCategory.OfficeSupplies, new DateTime(2019, 6, 1), 34.22m); 773 | AddExpense("Pencils", ExpenseCategory.OfficeSupplies, new DateTime(2019, 6, 1), 8.95m); 774 | AddExpense("Print Ad in People Magazine", ExpenseCategory.Marketing, new DateTime(2019, 6, 1), 1200m); 775 | AddExpense("Cleaning Supplies", ExpenseCategory.OfficeSupplies, new DateTime(2019, 6, 1), 24.10m); 776 | AddExpense("Toner Cartridges for Printer", ExpenseCategory.OfficeSupplies, new DateTime(2019, 6, 1), 132.20m); 777 | AddExpense("Paper clips", ExpenseCategory.OfficeSupplies, new DateTime(2019, 6, 1), 8.95m); 778 | AddExpense("Google Ad Words", ExpenseCategory.Marketing, new DateTime(2019, 6, 1), 500m); 779 | 780 | // July 2019 781 | AddExpense("Water Bill", ExpenseCategory.Operations, new DateTime(2019, 7, 1), 135.22m); 782 | AddExpense("Verizon - Telephone Expenses", ExpenseCategory.Operations, new DateTime(2019, 7, 1), 333.11m); 783 | AddExpense("Electricity Bill", ExpenseCategory.Operations, new DateTime(2019, 7, 1), 798.25m); 784 | AddExpense("Pencils", ExpenseCategory.OfficeSupplies, new DateTime(2019, 7, 1), 8.95m); 785 | AddExpense("Office Depot supply run", ExpenseCategory.OfficeSupplies, new DateTime(2019, 7, 1), 212.41m); 786 | AddExpense("Coffee Supplies", ExpenseCategory.OfficeSupplies, new DateTime(2019, 7, 1), 46.78m); 787 | AddExpense("Particle Accelerator", ExpenseCategory.ResearchAndDevelopment, new DateTime(2019, 7, 1), 4800m); 788 | 789 | // August 2019 790 | AddExpense("Water Bill", ExpenseCategory.Operations, new DateTime(2019, 8, 1), 142.20m); 791 | AddExpense("Verizon - Telephone Expenses", ExpenseCategory.Operations, new DateTime(2019, 8, 1), 345.80m); 792 | AddExpense("Electricity Bill", ExpenseCategory.Operations, new DateTime(2019, 8, 1), 814.87m); 793 | AddExpense("TV Ads - Southeast", ExpenseCategory.Marketing, new DateTime(2019, 8, 1), 2800m); 794 | AddExpense("Toy Stress Tester", ExpenseCategory.ResearchAndDevelopment, new DateTime(2019, 8, 1), 2400m); 795 | AddExpense("Postage Stamps", ExpenseCategory.OfficeSupplies, new DateTime(2019, 8, 1), 8.95m); 796 | AddExpense("Google Ad Words", ExpenseCategory.Marketing, new DateTime(2019, 8, 1), 500m); 797 | AddExpense("Server computer", ExpenseCategory.Operations, new DateTime(2019, 8, 1), 2500m); 798 | AddExpense("Office chairs", ExpenseCategory.OfficeSupplies, new DateTime(2019, 8, 1), 890.10m); 799 | 800 | 801 | // September 2019 802 | AddExpense("Water Bill", ExpenseCategory.Operations, new DateTime(2019, 9, 1), 136.10m); 803 | AddExpense("Verizon - Telephone Expenses", ExpenseCategory.Operations, new DateTime(2019, 9, 1), 326.01m); 804 | AddExpense("Electricity Bill", ExpenseCategory.Operations, new DateTime(2019, 9, 1), 802.90m); 805 | AddExpense("Cleaning Supplies", ExpenseCategory.OfficeSupplies, new DateTime(2019, 9, 1), 42.34m); 806 | AddExpense("Pencils", ExpenseCategory.OfficeSupplies, new DateTime(2019, 9, 1), 8.95m); 807 | AddExpense("Printer Paper", ExpenseCategory.OfficeSupplies, new DateTime(2019, 9, 1), 86.10m); 808 | AddExpense("Postage Stamps", ExpenseCategory.OfficeSupplies, new DateTime(2019, 9, 1), 20m); 809 | AddExpense("Toner Cartridges for Printer", ExpenseCategory.OfficeSupplies, new DateTime(2019, 9, 1), 190.50m); 810 | AddExpense("Paper clips", ExpenseCategory.OfficeSupplies, new DateTime(2019, 9, 1), 8.95m); 811 | AddExpense("Server computer", ExpenseCategory.Operations, new DateTime(2019, 9, 1), 3200m); 812 | AddExpense("Google Ad Words", ExpenseCategory.Marketing, new DateTime(2019, 9, 1), 500m); 813 | 814 | 815 | // October 2019 816 | AddExpense("Water Bill", ExpenseCategory.Operations, new DateTime(2019, 10, 1), 141.33m); 817 | AddExpense("Verizon - Telephone Expenses", ExpenseCategory.Operations, new DateTime(2019, 10, 1), 322.55m); 818 | AddExpense("Electricity Bill", ExpenseCategory.Operations, new DateTime(2019, 10, 1), 832.50m); 819 | AddExpense("Coffee Supplies", ExpenseCategory.OfficeSupplies, new DateTime(2019, 10, 1), 35.34m); 820 | AddExpense("TV Ads - Southeast", ExpenseCategory.Marketing, new DateTime(2019, 10, 1), 4800m); 821 | AddExpense("Postage Stamps", ExpenseCategory.OfficeSupplies, new DateTime(2019, 10, 1), 20m); 822 | AddExpense("Office Depot supply run", ExpenseCategory.OfficeSupplies, new DateTime(2019, 10, 1), 107.33m); 823 | AddExpense("Server computer", ExpenseCategory.Operations, new DateTime(2019, 10, 1), 2800m); 824 | AddExpense("Pencils", ExpenseCategory.OfficeSupplies, new DateTime(2019, 10, 1), 8.95m); 825 | AddExpense("Coffee Supplies", ExpenseCategory.OfficeSupplies, new DateTime(2019, 10, 1), 30.66m); 826 | AddExpense("Slide rule", ExpenseCategory.ResearchAndDevelopment, new DateTime(2019, 10, 1), 48.50m); 827 | 828 | 829 | // November 2019 830 | AddExpense("Water Bill", ExpenseCategory.Operations, new DateTime(2019, 11, 1), 140.10m); 831 | AddExpense("Verizon - Telephone Expenses", ExpenseCategory.Operations, new DateTime(2019, 11, 1), 321.98m); 832 | AddExpense("Electricity Bill", ExpenseCategory.Operations, new DateTime(2019, 11, 1), 842.90m); 833 | AddExpense("Cleaning Supplies", ExpenseCategory.OfficeSupplies, new DateTime(2019, 11, 1), 42.11m); 834 | AddExpense("TV Ads - West Coast", ExpenseCategory.Marketing, new DateTime(2019, 11, 1), 4800m); 835 | AddExpense("File cabinet", ExpenseCategory.OfficeSupplies, new DateTime(2019, 11, 1), 120m); 836 | AddExpense("Printer Paper", ExpenseCategory.OfficeSupplies, new DateTime(2019, 11, 1), 220.34m); 837 | AddExpense("Google Ad Words", ExpenseCategory.Marketing, new DateTime(2019, 11, 1), 500m); 838 | AddExpense("Postage Stamps", ExpenseCategory.OfficeSupplies, new DateTime(2019, 11, 1), 20m); 839 | AddExpense("Coffee Supplies", ExpenseCategory.OfficeSupplies, new DateTime(2019, 11, 1), 28.35m); 840 | 841 | // December 2019 842 | AddExpense("Water Bill", ExpenseCategory.Operations, new DateTime(2019, 12, 1), 326.48m); 843 | AddExpense("Verizon - Telephone Expenses", ExpenseCategory.Operations, new DateTime(2019, 12, 1), 345.32m); 844 | AddExpense("Electricity Bill", ExpenseCategory.Operations, new DateTime(2019, 12, 1), 840.66m); 845 | AddExpense("Pencils", ExpenseCategory.OfficeSupplies, new DateTime(2019, 12, 1), 8.95m); 846 | AddExpense("Printer Paper", ExpenseCategory.OfficeSupplies, new DateTime(2019, 12, 1), 34.20m); 847 | AddExpense("Google Ad Words", ExpenseCategory.Marketing, new DateTime(2019, 12, 1), 500m); 848 | AddExpense("Cleaning Supplies", ExpenseCategory.OfficeSupplies, new DateTime(2019, 12, 1), 144.50m); 849 | AddExpense("Particle Accelerator", ExpenseCategory.ResearchAndDevelopment, new DateTime(2019, 12, 1), 1200m); 850 | AddExpense("Pencils", ExpenseCategory.OfficeSupplies, new DateTime(2019, 12, 1), 8.95m); 851 | AddExpense("TV Ads - Southeast", ExpenseCategory.Marketing, new DateTime(2019, 12, 1), 1200m); 852 | AddExpense("Science Calculator", ExpenseCategory.ResearchAndDevelopment, new DateTime(2019, 12, 1), 120m); 853 | AddExpense("TV Ads - East Coast", ExpenseCategory.Marketing, new DateTime(2019, 12, 1), 1800m); 854 | AddExpense("TV Ads - West Coast", ExpenseCategory.Marketing, new DateTime(2019, 12, 1), 900m); 855 | AddExpense("Coffee Supplies", ExpenseCategory.OfficeSupplies, new DateTime(2019, 12, 1), 45.33m); 856 | AddExpense("Google Ad Words", ExpenseCategory.Marketing, new DateTime(2019, 12, 1), 500m); 857 | AddExpense("Office chairs", ExpenseCategory.OfficeSupplies, new DateTime(2019, 12, 1), 780.32m); 858 | 859 | Console.WriteLine(); 860 | Console.WriteLine(); 861 | } 862 | 863 | static void AddExpenseBudget(string Category, string Year, string Quarter, decimal Amount) { 864 | 865 | ListItem newItem = listExpenseBudgets.AddItem(new ListItemCreationInformation()); 866 | newItem["Title"] = Category + " for " + Quarter.ToString() + " of " + Year.ToString(); 867 | newItem["ExpenseCategory"] = Category; 868 | newItem["ExpenseBudgetYear"] = Year; 869 | newItem["ExpenseBudgetQuarter"] = Quarter; 870 | newItem["ExpenseBudgetAmount"] = Amount; 871 | 872 | newItem.Update(); 873 | clientContext.ExecuteQuery(); 874 | 875 | Console.Write("."); 876 | } 877 | 878 | static void PopulateExpenseBudgetsList() { 879 | 880 | Console.Write("Adding expense budgets"); 881 | 882 | AddExpenseBudget(ExpenseCategory.OfficeSupplies, "2019", "Q1", 1000m); 883 | AddExpenseBudget(ExpenseCategory.Marketing, "2019", "Q1", 7500m); 884 | AddExpenseBudget(ExpenseCategory.Operations, "2019", "Q1", 7000m); 885 | AddExpenseBudget(ExpenseCategory.ResearchAndDevelopment, "2019", "Q1", 5000m); 886 | 887 | AddExpenseBudget(ExpenseCategory.OfficeSupplies, "2019", "Q2", 1000m); 888 | AddExpenseBudget(ExpenseCategory.Marketing, "2019", "Q2", 7500m); 889 | AddExpenseBudget(ExpenseCategory.Operations, "2019", "Q2", 7000m); 890 | AddExpenseBudget(ExpenseCategory.ResearchAndDevelopment, "2019", "Q2", 5000m); 891 | 892 | AddExpenseBudget(ExpenseCategory.OfficeSupplies, "2019", "Q3", 1000m); 893 | AddExpenseBudget(ExpenseCategory.Marketing, "2019", "Q3", 10000m); 894 | AddExpenseBudget(ExpenseCategory.Operations, "2019", "Q3", 7000m); 895 | AddExpenseBudget(ExpenseCategory.ResearchAndDevelopment, "2019", "Q3", 5000m); 896 | 897 | AddExpenseBudget(ExpenseCategory.OfficeSupplies, "2019", "Q4", 1000m); 898 | AddExpenseBudget(ExpenseCategory.Marketing, "2019", "Q4", 10000m); 899 | AddExpenseBudget(ExpenseCategory.Operations, "2019", "Q4", 7000m); 900 | AddExpenseBudget(ExpenseCategory.ResearchAndDevelopment, "2019", "Q4", 5000m); 901 | 902 | 903 | Console.WriteLine(); 904 | Console.WriteLine(); 905 | } 906 | 907 | #endregion 908 | 909 | } 910 | } 911 | -------------------------------------------------------------------------------- /Student/Extras/BBSPA_ListGenerator/BBSPA_ListGenerator/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace BBSPA_ListGenerator { 8 | class Program { 9 | static void Main() { 10 | 11 | // create Customers list and add a dozen customer items 12 | // SharePointListFactory.CreateCustomersList(12, 12); 13 | 14 | 15 | SharePointListFactory.CreateAllLists(); 16 | 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Student/Extras/BBSPA_ListGenerator/BBSPA_ListGenerator/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("BBSPA_ListGenerator")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("BBSPA_ListGenerator")] 13 | [assembly: AssemblyCopyright("Copyright © 2019")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("153ee245-b87f-410b-a01c-d347452d284c")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /Student/Extras/BBSPA_ListGenerator/BBSPA_ListGenerator/packages.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Student/Extras/CustomerFactoryAPI.swagger.json: -------------------------------------------------------------------------------- 1 | { 2 | "swagger": "2.0", 3 | "info": { 4 | "title": "CustomerFactoryApi", 5 | "description": "Sample custom connector providing sample customer data", 6 | "version": "1.0" 7 | }, 8 | "host": "cptlabs.azurewebsites.net", 9 | "basePath": "/api/", 10 | "schemes": [ "https" ], 11 | "consumes": [], 12 | "produces": [], 13 | "paths": { 14 | "/NextCustomer": { 15 | "get": { 16 | "responses": { 17 | "default": { 18 | "description": "default", 19 | "schema": { 20 | "type": "object", 21 | "properties": { "firstName": { "type": "string", "description": "firstName" }, 22 | "lastName": { "type": "string", "description": "lastName" }, 23 | "company": { "type": "string", "description": "company" }, 24 | "emailAddress": { "type": "string", "description": "emailAddress" }, 25 | "workPhone": { "type": "string", "description": "workPhone" }, 26 | "homePhone": { "type": "string", "description": "homePhone" }, 27 | "address": { "type": "string", "description": "address" }, 28 | "city": { "type": "string", "description": "city" }, 29 | "state": { "type": "string", "description": "state" }, 30 | "zipcode": { "type": "string", "description": "zipcode" } 31 | } 32 | } 33 | } 34 | }, 35 | "summary": "Get Next Customer", 36 | "description": "Operation to get customer data from random set of customers", 37 | "operationId": "NextCustomer", 38 | "parameters": [] 39 | } 40 | } 41 | }, 42 | "definitions": {}, 43 | "parameters": {}, 44 | "responses": {}, 45 | "securityDefinitions": {}, 46 | "security": [], 47 | "tags": [] 48 | } -------------------------------------------------------------------------------- /Student/Extras/Demos/CptLabsDatabase.sql: -------------------------------------------------------------------------------- 1 | 2 | IF OBJECT_ID(N'[dbo].[FK_CustomerOrders]', 'F') IS NOT NULL ALTER TABLE [Orders] DROP CONSTRAINT [FK_CustomerOrders]; 3 | IF OBJECT_ID(N'[dbo].[FK_OrderOrderDetails]', 'F') IS NOT NULL ALTER TABLE [OrderDetails] DROP CONSTRAINT [FK_OrderOrderDetails]; 4 | IF OBJECT_ID(N'[dbo].[FK_ProductOrderDetails]', 'F') IS NOT NULL ALTER TABLE [OrderDetails] DROP CONSTRAINT [FK_ProductOrderDetails]; 5 | IF OBJECT_ID(N'[dbo].[Customers]', 'U') IS NOT NULL DROP TABLE [Customers]; 6 | IF OBJECT_ID(N'[dbo].[Orders]', 'U') IS NOT NULL DROP TABLE [Orders]; 7 | IF OBJECT_ID(N'[dbo].[OrderDetails]', 'U') IS NOT NULL DROP TABLE [OrderDetails]; 8 | IF OBJECT_ID(N'[dbo].[Products]', 'U') IS NOT NULL DROP TABLE [Products]; 9 | 10 | 11 | CREATE TABLE [Customers] ( 12 | [CustomerId] [int] NOT NULL IDENTITY, 13 | [FirstName] [nvarchar](max) NOT NULL , 14 | [LastName] [nvarchar] (max) NOT NULL , 15 | [Company] [nvarchar](max), 16 | [EmailAddress] [nvarchar](max), 17 | [WorkPhone] [nvarchar](max), 18 | [HomePhone] [nvarchar](max), 19 | [Address] [nvarchar](max), 20 | [City] [nvarchar](max), 21 | [State] [nvarchar](max), 22 | [Zipcode] [nvarchar](max), 23 | CONSTRAINT [PK_Customers] PRIMARY KEY ([CustomerId]) 24 | ) 25 | 26 | CREATE TABLE [Orders] ( 27 | [OrderId] [int] NOT NULL IDENTITY, 28 | [CustomerId] [int] NOT NULL, 29 | [OrderDate] [datetime] NOT NULL, 30 | [OrderAmount] [decimal](18, 2) NOT NULL, 31 | CONSTRAINT [PK_Orders] PRIMARY KEY ([OrderId]) 32 | ) 33 | 34 | CREATE INDEX [IX_CustomerId] ON [Orders]([CustomerId]) 35 | 36 | 37 | CREATE TABLE [OrderDetails] ( 38 | [Id] [int] NOT NULL IDENTITY, 39 | [OrderId] [int] NOT NULL, 40 | [ProductId] [int] NOT NULL, 41 | [Quantity] [int] NOT NULL, 42 | [Total] [decimal](18, 2) NOT NULL, 43 | CONSTRAINT [PK_OrderDetails] PRIMARY KEY ([Id]) 44 | ) 45 | 46 | CREATE INDEX [IX_OrderId] ON [OrderDetails]([OrderId]) 47 | CREATE INDEX [IX_ProductId] ON [OrderDetails]([ProductId]) 48 | 49 | CREATE TABLE [Products] ( 50 | [ProductId] [int] NOT NULL IDENTITY, 51 | [Product] [nvarchar](max), 52 | [Category] [nvarchar](max), 53 | [ListPrice] [decimal](18, 2) NOT NULL, 54 | [Description] [nvarchar](max), 55 | [ProductImage] [nvarchar](max) 56 | CONSTRAINT [PK_Products] PRIMARY KEY ([ProductId]) 57 | ) 58 | 59 | ALTER TABLE [Orders] ADD CONSTRAINT [FK_CustomerOrders] FOREIGN KEY ([CustomerId]) REFERENCES [Customers] ([CustomerId]) ON DELETE CASCADE 60 | ALTER TABLE [OrderDetails] ADD CONSTRAINT [FK_OrderOrderDetails] FOREIGN KEY ([OrderId]) REFERENCES [Orders] ([OrderId]) ON DELETE CASCADE 61 | ALTER TABLE [OrderDetails] ADD CONSTRAINT [FK_ProductOrderDetails] FOREIGN KEY ([ProductId]) REFERENCES [Products] ([ProductId]) ON DELETE CASCADE 62 | 63 | INSERT INTO Products (Product, Category, ListPrice, Description, ProductImage) VALUES ('Batman Action Figure', 'Action Figures', 14.95, 'A super hero who sometimes plays the role of a dark knight.', 'https://cptlabs.blob.core.windows.net/images/batman.jpg') 64 | INSERT INTO Products (Product, Category, ListPrice, Description, ProductImage) VALUES ('Captain America Action Figure', 'Action Figures', 12.95, 'A super action figure that protects freedom and the American way of life.', 'https://cptlabs.blob.core.windows.net/images/captainamerica.jpg') 65 | INSERT INTO Products (Product, Category, ListPrice, Description, ProductImage) VALUES ('GI Joe Action Figure', 'Action Figures', 14.95, 'A classic action figure from the 1970s.', 'https://cptlabs.blob.core.windows.net/images/gijoe.jpg') 66 | INSERT INTO Products (Product, Category, ListPrice, Description, ProductImage) VALUES ('Green Hulk Action Figure', 'Action Figures', 9.95, 'An overly muscular action figure that strips naked when angry.', 'https://cptlabs.blob.core.windows.net/images/hulk.jpg') 67 | INSERT INTO Products (Product, Category, ListPrice, Description, ProductImage) VALUES ('Godzilla Action Figure', 'Action Figures', 19.95, 'The classic and adorable action figure from those old Japanese movies.', 'https://cptlabs.blob.core.windows.net/images/godzilla.jpg') 68 | INSERT INTO Products (Product, Category, ListPrice, Description, ProductImage) VALUES ('Twitter Follower Action Figure', 'Action Figures', 1, 'An inexpensive action figure you can never have too many of.', 'https://cptlabs.blob.core.windows.net/images/twitterfollower.jpg') 69 | INSERT INTO Products (Product, Category, ListPrice, Description, ProductImage) VALUES ('Crayloa Crayon Set', 'Arts and Crafts', 2.49, 'A very fun set of crayons in every color.', 'https://cptlabs.blob.core.windows.net/images/crayons.jpg') 70 | INSERT INTO Products (Product, Category, ListPrice, Description, ProductImage) VALUES ('Sponge Bob Coloring Book', 'Arts and Crafts', 2.95, 'A drawing extravaganza based on America''s most recognizable celebrity.', 'https://cptlabs.blob.core.windows.net/images/coloringbook.jpg') 71 | INSERT INTO Products (Product, Category, ListPrice, Description, ProductImage) VALUES ('Easel with Supply Trays', 'Arts and Crafts', 49.95, 'A serious easel for serious young artists.', 'https://cptlabs.blob.core.windows.net/images/easel.jpg') 72 | INSERT INTO Products (Product, Category, ListPrice, Description, ProductImage) VALUES ('Crate o'' Crayons', 'Arts and Crafts', 14.95, 'More crayons that you can shake a stick at.', 'https://cptlabs.blob.core.windows.net/images/crateocrayons.jpg') 73 | INSERT INTO Products (Product, Category, ListPrice, Description, ProductImage) VALUES ('Etch A Sketch', 'Arts and Crafts', 12.95, 'A strategic planning tool for the Romney campaign.', 'https://cptlabs.blob.core.windows.net/images/etchasketch.jpg') 74 | INSERT INTO Products (Product, Category, ListPrice, Description, ProductImage) VALUES ('Green Hornet', 'Remote Control', 24.95, 'A fast car for crusin'' the strip at night.', 'https://cptlabs.blob.core.windows.net/images/greenhornet.jpg') 75 | INSERT INTO Products (Product, Category, ListPrice, Description, ProductImage) VALUES ('Stomper Bully', 'Remote Control', 29.95, 'A great toy that can crush and destroy all your other toys.', 'https://cptlabs.blob.core.windows.net/images/stomperbully.jpg') 76 | INSERT INTO Products (Product, Category, ListPrice, Description, ProductImage) VALUES ('Indy Race Car', 'Remote Control', 19.95, 'The fastest remote control race car on the market today.', 'https://cptlabs.blob.core.windows.net/images/indyracecar.jpg') 77 | INSERT INTO Products (Product, Category, ListPrice, Description, ProductImage) VALUES ('Turbo-boost Speedboat', 'Remote Control', 32.95, 'The preferred water vehicle of gun runners and drug kingpins.', 'https://cptlabs.blob.core.windows.net/images/speedboat.jpg') 78 | INSERT INTO Products (Product, Category, ListPrice, Description, ProductImage) VALUES ('Flying Squirrel', 'Remote Control', 69.95, 'A stealthy remote control plane that flies on the down-low and under the radar.', 'https://cptlabs.blob.core.windows.net/images/flyingsquirrel.jpg') 79 | INSERT INTO Products (Product, Category, ListPrice, Description, ProductImage) VALUES ('Seal Team 6 Helicopter', 'Remote Control', 59.95, 'A serious helicopter that can open up a can of whoop-ass when required.', 'https://cptlabs.blob.core.windows.net/images/helicopter.jpg') -------------------------------------------------------------------------------- /Student/Extras/Demos/CustomerOrderingwithAzureSQL.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Extras/Demos/CustomerOrderingwithAzureSQL.zip -------------------------------------------------------------------------------- /Student/Extras/ProductCatalog.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Extras/ProductCatalog.xlsx -------------------------------------------------------------------------------- /Student/Extras/ProductImages/batman.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Extras/ProductImages/batman.jpg -------------------------------------------------------------------------------- /Student/Extras/ProductImages/captainamerica.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Extras/ProductImages/captainamerica.jpg -------------------------------------------------------------------------------- /Student/Extras/ProductImages/coloringbook.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Extras/ProductImages/coloringbook.jpg -------------------------------------------------------------------------------- /Student/Extras/ProductImages/crateocrayons.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Extras/ProductImages/crateocrayons.jpg -------------------------------------------------------------------------------- /Student/Extras/ProductImages/crayons.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Extras/ProductImages/crayons.jpg -------------------------------------------------------------------------------- /Student/Extras/ProductImages/easel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Extras/ProductImages/easel.jpg -------------------------------------------------------------------------------- /Student/Extras/ProductImages/etchasketch.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Extras/ProductImages/etchasketch.jpg -------------------------------------------------------------------------------- /Student/Extras/ProductImages/flyingsquirrel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Extras/ProductImages/flyingsquirrel.jpg -------------------------------------------------------------------------------- /Student/Extras/ProductImages/gijoe.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Extras/ProductImages/gijoe.jpg -------------------------------------------------------------------------------- /Student/Extras/ProductImages/godzilla.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Extras/ProductImages/godzilla.jpg -------------------------------------------------------------------------------- /Student/Extras/ProductImages/greenhornet.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Extras/ProductImages/greenhornet.jpg -------------------------------------------------------------------------------- /Student/Extras/ProductImages/helicopter.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Extras/ProductImages/helicopter.jpg -------------------------------------------------------------------------------- /Student/Extras/ProductImages/hulk.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Extras/ProductImages/hulk.jpg -------------------------------------------------------------------------------- /Student/Extras/ProductImages/indyracecar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Extras/ProductImages/indyracecar.jpg -------------------------------------------------------------------------------- /Student/Extras/ProductImages/speedboat.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Extras/ProductImages/speedboat.jpg -------------------------------------------------------------------------------- /Student/Extras/ProductImages/stomperbully.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Extras/ProductImages/stomperbully.jpg -------------------------------------------------------------------------------- /Student/Extras/ProductImages/twitterfollower.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Extras/ProductImages/twitterfollower.jpg -------------------------------------------------------------------------------- /Student/Modules/01_GettingStarted/Lab.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/01_GettingStarted/Lab.pdf -------------------------------------------------------------------------------- /Student/Modules/01_GettingStarted/Lab.xps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/01_GettingStarted/Lab.xps -------------------------------------------------------------------------------- /Student/Modules/01_GettingStarted/Lab/CategoriesAllowedValues.txt: -------------------------------------------------------------------------------- 1 | ["Marketing", "Office Supplies", "Operations", "Research & Development"] 2 | 3 | -------------------------------------------------------------------------------- /Student/Modules/01_GettingStarted/Lab/Customers.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/01_GettingStarted/Lab/Customers.xlsx -------------------------------------------------------------------------------- /Student/Modules/01_GettingStarted/Lab/Expenses.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/01_GettingStarted/Lab/Expenses.xlsx -------------------------------------------------------------------------------- /Student/Modules/01_GettingStarted/Lab/Solution/Lab1-CustomerSearchSolution.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/01_GettingStarted/Lab/Solution/Lab1-CustomerSearchSolution.zip -------------------------------------------------------------------------------- /Student/Modules/01_GettingStarted/Lab/Solution/Lab1-ExpenseTrackerSolution.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/01_GettingStarted/Lab/Solution/Lab1-ExpenseTrackerSolution.zip -------------------------------------------------------------------------------- /Student/Modules/01_GettingStarted/Slides.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/01_GettingStarted/Slides.pdf -------------------------------------------------------------------------------- /Student/Modules/01_GettingStarted/Slides.xps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/01_GettingStarted/Slides.xps -------------------------------------------------------------------------------- /Student/Modules/02_DataDrivenCanvasApps/Demo/RelativeStylingDemo.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/02_DataDrivenCanvasApps/Demo/RelativeStylingDemo.zip -------------------------------------------------------------------------------- /Student/Modules/02_DataDrivenCanvasApps/Lab.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/02_DataDrivenCanvasApps/Lab.pdf -------------------------------------------------------------------------------- /Student/Modules/02_DataDrivenCanvasApps/Lab.xps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/02_DataDrivenCanvasApps/Lab.xps -------------------------------------------------------------------------------- /Student/Modules/02_DataDrivenCanvasApps/Lab/Solution/CustomerOrdering-SolutionForLab2Exercise2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/02_DataDrivenCanvasApps/Lab/Solution/CustomerOrdering-SolutionForLab2Exercise2.zip -------------------------------------------------------------------------------- /Student/Modules/02_DataDrivenCanvasApps/Lab/Solution/CustomerOrdering-SolutionForLab2Exercise3.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/02_DataDrivenCanvasApps/Lab/Solution/CustomerOrdering-SolutionForLab2Exercise3.zip -------------------------------------------------------------------------------- /Student/Modules/02_DataDrivenCanvasApps/Lab/Solution/CustomerOrdering-SolutionForLab2Exercise4.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/02_DataDrivenCanvasApps/Lab/Solution/CustomerOrdering-SolutionForLab2Exercise4.zip -------------------------------------------------------------------------------- /Student/Modules/02_DataDrivenCanvasApps/Lab/Solution/CustomerOrdering-SolutionForLab2Exercise5.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/02_DataDrivenCanvasApps/Lab/Solution/CustomerOrdering-SolutionForLab2Exercise5.zip -------------------------------------------------------------------------------- /Student/Modules/02_DataDrivenCanvasApps/Lab/Solution/CustomerOrdering-SolutionForLab2Final.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/02_DataDrivenCanvasApps/Lab/Solution/CustomerOrdering-SolutionForLab2Final.zip -------------------------------------------------------------------------------- /Student/Modules/02_DataDrivenCanvasApps/Slides.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/02_DataDrivenCanvasApps/Slides.pdf -------------------------------------------------------------------------------- /Student/Modules/02_DataDrivenCanvasApps/Slides.xps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/02_DataDrivenCanvasApps/Slides.xps -------------------------------------------------------------------------------- /Student/Modules/03_ShoppingCart/Demo/Component Demo.msapp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/03_ShoppingCart/Demo/Component Demo.msapp -------------------------------------------------------------------------------- /Student/Modules/03_ShoppingCart/Demo/EditFormsversusPatchDemo.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/03_ShoppingCart/Demo/EditFormsversusPatchDemo.zip -------------------------------------------------------------------------------- /Student/Modules/03_ShoppingCart/Lab.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/03_ShoppingCart/Lab.pdf -------------------------------------------------------------------------------- /Student/Modules/03_ShoppingCart/Lab.xps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/03_ShoppingCart/Lab.xps -------------------------------------------------------------------------------- /Student/Modules/03_ShoppingCart/Lab/Solution/CustomerOrdering-SolutionForLab3Exercise2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/03_ShoppingCart/Lab/Solution/CustomerOrdering-SolutionForLab3Exercise2.zip -------------------------------------------------------------------------------- /Student/Modules/03_ShoppingCart/Lab/Solution/CustomerOrdering-SolutionforLab3Final.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/03_ShoppingCart/Lab/Solution/CustomerOrdering-SolutionforLab3Final.zip -------------------------------------------------------------------------------- /Student/Modules/03_ShoppingCart/Slides.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/03_ShoppingCart/Slides.pdf -------------------------------------------------------------------------------- /Student/Modules/03_ShoppingCart/Slides.xps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/03_ShoppingCart/Slides.xps -------------------------------------------------------------------------------- /Student/Modules/03_ShoppingCart/readme.txt: -------------------------------------------------------------------------------- 1 | this is just a placeholder file -------------------------------------------------------------------------------- /Student/Modules/04_DesigningFlows/Demo/GenerateWordDocumentwithCustomerLetter.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/04_DesigningFlows/Demo/GenerateWordDocumentwithCustomerLetter.zip -------------------------------------------------------------------------------- /Student/Modules/04_DesigningFlows/Demo/SendEmailcontainingHTMLTablewithCustomerData.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/04_DesigningFlows/Demo/SendEmailcontainingHTMLTablewithCustomerData.zip -------------------------------------------------------------------------------- /Student/Modules/04_DesigningFlows/Lab.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/04_DesigningFlows/Lab.pdf -------------------------------------------------------------------------------- /Student/Modules/04_DesigningFlows/Lab.xps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/04_DesigningFlows/Lab.xps -------------------------------------------------------------------------------- /Student/Modules/04_DesigningFlows/Lab/CustomerLetterTemplate.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/04_DesigningFlows/Lab/CustomerLetterTemplate.docx -------------------------------------------------------------------------------- /Student/Modules/04_DesigningFlows/Lab/Solution/TrackTweetsabout#PowerApps-Lab4.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/04_DesigningFlows/Lab/Solution/TrackTweetsabout#PowerApps-Lab4.zip -------------------------------------------------------------------------------- /Student/Modules/04_DesigningFlows/Lab/Tweets.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/04_DesigningFlows/Lab/Tweets.xlsx -------------------------------------------------------------------------------- /Student/Modules/04_DesigningFlows/Slides.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/04_DesigningFlows/Slides.pdf -------------------------------------------------------------------------------- /Student/Modules/04_DesigningFlows/Slides.xps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/04_DesigningFlows/Slides.xps -------------------------------------------------------------------------------- /Student/Modules/05_Approvals/Demo/CleanUpSharePointCustomerListContent.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/05_Approvals/Demo/CleanUpSharePointCustomerListContent.zip -------------------------------------------------------------------------------- /Student/Modules/05_Approvals/Lab.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/05_Approvals/Lab.pdf -------------------------------------------------------------------------------- /Student/Modules/05_Approvals/Lab.xps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/05_Approvals/Lab.xps -------------------------------------------------------------------------------- /Student/Modules/05_Approvals/Slides.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/05_Approvals/Slides.pdf -------------------------------------------------------------------------------- /Student/Modules/05_Approvals/Slides.xps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/05_Approvals/Slides.xps -------------------------------------------------------------------------------- /Student/Modules/06_ExternalSystems/Demo/Power-BI-Datasets-API.swagger.json: -------------------------------------------------------------------------------- 1 | { 2 | "swagger": "2.0", 3 | "info": { 4 | "title": "Power BI Connector", 5 | "description": "A custom connector to manage Power BI datasets using the Power BI Service API", 6 | "version": "1.0" 7 | }, 8 | "host": "api.powerbi.com", 9 | "basePath": "/v1.0/myorg/", 10 | "schemes": [ 11 | "https" 12 | ], 13 | "consumes": [], 14 | "produces": [], 15 | "paths": { 16 | "/groups/{workspaceId}/datasets": { 17 | "get": { 18 | "responses": { 19 | "default": { 20 | "description": "default", 21 | "schema": { 22 | "type": "object", 23 | "properties": { 24 | "@odata.context": { 25 | "type": "string", 26 | "description": "@odata.context", 27 | "x-ms-summary": "@odata.context" 28 | }, 29 | "value": { 30 | "type": "array", 31 | "items": { 32 | "type": "object", 33 | "properties": { 34 | "id": { 35 | "type": "string", 36 | "description": "id", 37 | "x-ms-summary": "id" 38 | }, 39 | "name": { 40 | "type": "string", 41 | "description": "name", 42 | "x-ms-summary": "name" 43 | }, 44 | "addRowsAPIEnabled": { 45 | "type": "boolean", 46 | "description": "addRowsAPIEnabled", 47 | "x-ms-summary": "addRowsAPIEnabled" 48 | }, 49 | "configuredBy": { 50 | "type": "string", 51 | "description": "configuredBy", 52 | "x-ms-summary": "configuredBy" 53 | }, 54 | "isRefreshable": { 55 | "type": "boolean", 56 | "description": "isRefreshable", 57 | "x-ms-summary": "isRefreshable" 58 | }, 59 | "isEffectiveIdentityRequired": { 60 | "type": "boolean", 61 | "description": "isEffectiveIdentityRequired", 62 | "x-ms-summary": "isEffectiveIdentityRequired" 63 | }, 64 | "isEffectiveIdentityRolesRequired": { 65 | "type": "boolean", 66 | "description": "isEffectiveIdentityRolesRequired", 67 | "x-ms-summary": "isEffectiveIdentityRolesRequired" 68 | }, 69 | "isOnPremGatewayRequired": { 70 | "type": "boolean", 71 | "description": "isOnPremGatewayRequired", 72 | "x-ms-summary": "isOnPremGatewayRequired" 73 | } 74 | } 75 | }, 76 | "description": "value", 77 | "x-ms-summary": "value" 78 | } 79 | } 80 | } 81 | } 82 | }, 83 | "summary": "Get Datasets in Workspace", 84 | "operationId": "GetDatasetsInWorkspace", 85 | "parameters": [ 86 | { 87 | "name": "workspaceId", 88 | "in": "path", 89 | "required": true, 90 | "type": "string" 91 | } 92 | ], 93 | "description": "Get Datasets in Workspace" 94 | } 95 | }, 96 | "/groups/": { 97 | "get": { 98 | "responses": { 99 | "default": { 100 | "description": "default", 101 | "schema": { 102 | "type": "object", 103 | "properties": { 104 | "@odata.context": { 105 | "type": "string", 106 | "description": "@odata.context", 107 | "x-ms-summary": "@odata.context" 108 | }, 109 | "@odata.count": { 110 | "type": "integer", 111 | "format": "int32", 112 | "description": "@odata.count", 113 | "x-ms-summary": "@odata.count" 114 | }, 115 | "value": { 116 | "type": "array", 117 | "items": { 118 | "type": "object", 119 | "properties": { 120 | "id": { 121 | "type": "string", 122 | "description": "id", 123 | "x-ms-summary": "id" 124 | }, 125 | "isReadOnly": { 126 | "type": "boolean", 127 | "description": "isReadOnly", 128 | "x-ms-summary": "isReadOnly" 129 | }, 130 | "isOnDedicatedCapacity": { 131 | "type": "boolean", 132 | "description": "isOnDedicatedCapacity", 133 | "x-ms-summary": "isOnDedicatedCapacity" 134 | }, 135 | "name": { 136 | "type": "string", 137 | "description": "name", 138 | "x-ms-summary": "name" 139 | } 140 | } 141 | }, 142 | "description": "value", 143 | "x-ms-summary": "value" 144 | } 145 | } 146 | } 147 | } 148 | }, 149 | "summary": "Get Workspaces", 150 | "description": "Used to get list of workspaces for currrent user", 151 | "operationId": "GetWorkspaces", 152 | "parameters": [] 153 | } 154 | }, 155 | "/groups/{workspaceId}/datasets/{datasetId}/refreshes": { 156 | "get": { 157 | "responses": { 158 | "default": { 159 | "description": "default", 160 | "schema": { 161 | "type": "object", 162 | "properties": { 163 | "@odata.context": { 164 | "type": "string", 165 | "description": "@odata.context", 166 | "x-ms-summary": "@odata.context" 167 | }, 168 | "value": { 169 | "type": "array", 170 | "items": { 171 | "type": "object", 172 | "properties": { 173 | "id": { 174 | "type": "integer", 175 | "format": "int32", 176 | "description": "id", 177 | "x-ms-summary": "id" 178 | }, 179 | "refreshType": { 180 | "type": "string", 181 | "description": "refreshType", 182 | "x-ms-summary": "refreshType" 183 | }, 184 | "startTime": { 185 | "type": "string", 186 | "format": "date-time", 187 | "description": "startTime", 188 | "x-ms-summary": "startTime" 189 | }, 190 | "endTime": { 191 | "type": "string", 192 | "format": "date-time", 193 | "description": "endTime", 194 | "x-ms-summary": "endTime" 195 | }, 196 | "serviceExceptionJson": { 197 | "type": "object", 198 | "properties": { 199 | "error": { 200 | "type": "object", 201 | "properties": { 202 | "code": { 203 | "type": "string", 204 | "description": "code", 205 | "x-ms-summary": "code" 206 | }, 207 | "pbi.error": { 208 | "type": "object", 209 | "properties": { 210 | "code": { 211 | "type": "string", 212 | "description": "code", 213 | "x-ms-summary": "code" 214 | }, 215 | "details": { 216 | "type": "array", 217 | "items": { 218 | "type": "object", 219 | "properties": { 220 | "code": { 221 | "type": "string", 222 | "description": "code", 223 | "x-ms-summary": "code" 224 | }, 225 | "detail": { 226 | "type": "object", 227 | "properties": { 228 | "type": { 229 | "type": "integer", 230 | "format": "int32", 231 | "description": "type", 232 | "x-ms-summary": "type" 233 | }, 234 | "value": { 235 | "type": "string", 236 | "format": "date-time", 237 | "description": "value", 238 | "x-ms-summary": "value" 239 | } 240 | }, 241 | "description": "detail", 242 | "x-ms-summary": "detail" 243 | } 244 | } 245 | }, 246 | "description": "details", 247 | "x-ms-summary": "details" 248 | }, 249 | "exceptionCulprit": { 250 | "type": "integer", 251 | "format": "int32", 252 | "description": "exceptionCulprit", 253 | "x-ms-summary": "exceptionCulprit" 254 | } 255 | }, 256 | "description": "pbi.error", 257 | "x-ms-summary": "pbi.error" 258 | } 259 | }, 260 | "description": "error", 261 | "x-ms-summary": "error" 262 | } 263 | }, 264 | "description": "serviceExceptionJson", 265 | "x-ms-summary": "serviceExceptionJson" 266 | }, 267 | "status": { 268 | "type": "string", 269 | "description": "status", 270 | "x-ms-summary": "status" 271 | } 272 | } 273 | }, 274 | "description": "value", 275 | "x-ms-summary": "value" 276 | } 277 | } 278 | } 279 | } 280 | }, 281 | "summary": "Get Dataset Refreshes", 282 | "operationId": "GetDatasetRefreshes", 283 | "parameters": [ 284 | { 285 | "name": "workspaceId", 286 | "in": "path", 287 | "required": true, 288 | "type": "string" 289 | }, 290 | { 291 | "name": "datasetId", 292 | "in": "path", 293 | "required": true, 294 | "type": "string" 295 | } 296 | ], 297 | "description": "Get Dataset Refreshes" 298 | }, 299 | "post": { 300 | "responses": { 301 | "default": { 302 | "description": "default", 303 | "schema": { 304 | "type": "object", 305 | "properties": {} 306 | } 307 | } 308 | }, 309 | "summary": "Refresh Dataset", 310 | "description": "Refreshes Dataset", 311 | "operationId": "RefreshDataset", 312 | "parameters": [ 313 | { 314 | "name": "workspaceId", 315 | "in": "path", 316 | "required": true, 317 | "type": "string" 318 | }, 319 | { 320 | "name": "datasetId", 321 | "in": "path", 322 | "required": true, 323 | "type": "string" 324 | } 325 | ] 326 | } 327 | } 328 | }, 329 | "definitions": {}, 330 | "parameters": {}, 331 | "responses": {}, 332 | "securityDefinitions": { 333 | "oauth2_auth": { 334 | "type": "oauth2", 335 | "flow": "accessCode", 336 | "authorizationUrl": "https://login.windows.net/common/oauth2/authorize", 337 | "tokenUrl": "https://login.windows.net/common/oauth2/authorize", 338 | "scopes": {} 339 | } 340 | }, 341 | "security": [ 342 | { 343 | "oauth2_auth": [] 344 | } 345 | ], 346 | "tags": [] 347 | } -------------------------------------------------------------------------------- /Student/Modules/06_ExternalSystems/Demo/UseHTTPActiontoImportDataintoSharePointCustomersList.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/06_ExternalSystems/Demo/UseHTTPActiontoImportDataintoSharePointCustomersList.zip -------------------------------------------------------------------------------- /Student/Modules/06_ExternalSystems/Lab.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/06_ExternalSystems/Lab.pdf -------------------------------------------------------------------------------- /Student/Modules/06_ExternalSystems/Lab.xps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/06_ExternalSystems/Lab.xps -------------------------------------------------------------------------------- /Student/Modules/06_ExternalSystems/Lab/AppIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/06_ExternalSystems/Lab/AppIcon.png -------------------------------------------------------------------------------- /Student/Modules/06_ExternalSystems/Lab/CustomConnectorInfo.txt: -------------------------------------------------------------------------------- 1 | Application ID 2 | 11111111-2222-3333-4444-555555555555 3 | 4 | Application Secret 5 | h2oneLp*QIe6cK5u@9nbXlfi*SkYDz@Y 6 | 7 | Resource URL 8 | https://analysis.windows.net/powerbi/api -------------------------------------------------------------------------------- /Student/Modules/06_ExternalSystems/Lab/Power-BI-Datasets-API.swagger.json: -------------------------------------------------------------------------------- 1 | { 2 | "swagger": "2.0", 3 | "info": { 4 | "title": "Power BI Connector", 5 | "description": "A custom connector to manage Power BI datasets using the Power BI Service API", 6 | "version": "1.0" 7 | }, 8 | "host": "api.powerbi.com", 9 | "basePath": "/v1.0/myorg/", 10 | "schemes": [ 11 | "https" 12 | ], 13 | "consumes": [], 14 | "produces": [], 15 | "paths": { 16 | "/groups/{workspaceId}/datasets": { 17 | "get": { 18 | "responses": { 19 | "default": { 20 | "description": "default", 21 | "schema": { 22 | "type": "object", 23 | "properties": { 24 | "@odata.context": { 25 | "type": "string", 26 | "description": "@odata.context", 27 | "x-ms-summary": "@odata.context" 28 | }, 29 | "value": { 30 | "type": "array", 31 | "items": { 32 | "type": "object", 33 | "properties": { 34 | "id": { 35 | "type": "string", 36 | "description": "id", 37 | "x-ms-summary": "id" 38 | }, 39 | "name": { 40 | "type": "string", 41 | "description": "name", 42 | "x-ms-summary": "name" 43 | }, 44 | "addRowsAPIEnabled": { 45 | "type": "boolean", 46 | "description": "addRowsAPIEnabled", 47 | "x-ms-summary": "addRowsAPIEnabled" 48 | }, 49 | "configuredBy": { 50 | "type": "string", 51 | "description": "configuredBy", 52 | "x-ms-summary": "configuredBy" 53 | }, 54 | "isRefreshable": { 55 | "type": "boolean", 56 | "description": "isRefreshable", 57 | "x-ms-summary": "isRefreshable" 58 | }, 59 | "isEffectiveIdentityRequired": { 60 | "type": "boolean", 61 | "description": "isEffectiveIdentityRequired", 62 | "x-ms-summary": "isEffectiveIdentityRequired" 63 | }, 64 | "isEffectiveIdentityRolesRequired": { 65 | "type": "boolean", 66 | "description": "isEffectiveIdentityRolesRequired", 67 | "x-ms-summary": "isEffectiveIdentityRolesRequired" 68 | }, 69 | "isOnPremGatewayRequired": { 70 | "type": "boolean", 71 | "description": "isOnPremGatewayRequired", 72 | "x-ms-summary": "isOnPremGatewayRequired" 73 | } 74 | } 75 | }, 76 | "description": "value", 77 | "x-ms-summary": "value" 78 | } 79 | } 80 | } 81 | } 82 | }, 83 | "summary": "Get Datasets in Workspace", 84 | "operationId": "GetDatasetsInWorkspace", 85 | "parameters": [ 86 | { 87 | "name": "workspaceId", 88 | "in": "path", 89 | "required": true, 90 | "type": "string" 91 | } 92 | ], 93 | "description": "Get Datasets in Workspace" 94 | } 95 | }, 96 | "/groups/": { 97 | "get": { 98 | "responses": { 99 | "default": { 100 | "description": "default", 101 | "schema": { 102 | "type": "object", 103 | "properties": { 104 | "@odata.context": { 105 | "type": "string", 106 | "description": "@odata.context", 107 | "x-ms-summary": "@odata.context" 108 | }, 109 | "@odata.count": { 110 | "type": "integer", 111 | "format": "int32", 112 | "description": "@odata.count", 113 | "x-ms-summary": "@odata.count" 114 | }, 115 | "value": { 116 | "type": "array", 117 | "items": { 118 | "type": "object", 119 | "properties": { 120 | "id": { 121 | "type": "string", 122 | "description": "id", 123 | "x-ms-summary": "id" 124 | }, 125 | "isReadOnly": { 126 | "type": "boolean", 127 | "description": "isReadOnly", 128 | "x-ms-summary": "isReadOnly" 129 | }, 130 | "isOnDedicatedCapacity": { 131 | "type": "boolean", 132 | "description": "isOnDedicatedCapacity", 133 | "x-ms-summary": "isOnDedicatedCapacity" 134 | }, 135 | "name": { 136 | "type": "string", 137 | "description": "name", 138 | "x-ms-summary": "name" 139 | } 140 | } 141 | }, 142 | "description": "value", 143 | "x-ms-summary": "value" 144 | } 145 | } 146 | } 147 | } 148 | }, 149 | "summary": "Get Workspaces", 150 | "description": "Used to get list of workspaces for currrent user", 151 | "operationId": "GetWorkspaces", 152 | "parameters": [] 153 | } 154 | }, 155 | "/groups/{workspaceId}/datasets/{datasetId}/refreshes": { 156 | "get": { 157 | "responses": { 158 | "default": { 159 | "description": "default", 160 | "schema": { 161 | "type": "object", 162 | "properties": { 163 | "@odata.context": { 164 | "type": "string", 165 | "description": "@odata.context", 166 | "x-ms-summary": "@odata.context" 167 | }, 168 | "value": { 169 | "type": "array", 170 | "items": { 171 | "type": "object", 172 | "properties": { 173 | "id": { 174 | "type": "integer", 175 | "format": "int32", 176 | "description": "id", 177 | "x-ms-summary": "id" 178 | }, 179 | "refreshType": { 180 | "type": "string", 181 | "description": "refreshType", 182 | "x-ms-summary": "refreshType" 183 | }, 184 | "startTime": { 185 | "type": "string", 186 | "format": "date-time", 187 | "description": "startTime", 188 | "x-ms-summary": "startTime" 189 | }, 190 | "endTime": { 191 | "type": "string", 192 | "format": "date-time", 193 | "description": "endTime", 194 | "x-ms-summary": "endTime" 195 | }, 196 | "serviceExceptionJson": { 197 | "type": "object", 198 | "properties": { 199 | "error": { 200 | "type": "object", 201 | "properties": { 202 | "code": { 203 | "type": "string", 204 | "description": "code", 205 | "x-ms-summary": "code" 206 | }, 207 | "pbi.error": { 208 | "type": "object", 209 | "properties": { 210 | "code": { 211 | "type": "string", 212 | "description": "code", 213 | "x-ms-summary": "code" 214 | }, 215 | "details": { 216 | "type": "array", 217 | "items": { 218 | "type": "object", 219 | "properties": { 220 | "code": { 221 | "type": "string", 222 | "description": "code", 223 | "x-ms-summary": "code" 224 | }, 225 | "detail": { 226 | "type": "object", 227 | "properties": { 228 | "type": { 229 | "type": "integer", 230 | "format": "int32", 231 | "description": "type", 232 | "x-ms-summary": "type" 233 | }, 234 | "value": { 235 | "type": "string", 236 | "format": "date-time", 237 | "description": "value", 238 | "x-ms-summary": "value" 239 | } 240 | }, 241 | "description": "detail", 242 | "x-ms-summary": "detail" 243 | } 244 | } 245 | }, 246 | "description": "details", 247 | "x-ms-summary": "details" 248 | }, 249 | "exceptionCulprit": { 250 | "type": "integer", 251 | "format": "int32", 252 | "description": "exceptionCulprit", 253 | "x-ms-summary": "exceptionCulprit" 254 | } 255 | }, 256 | "description": "pbi.error", 257 | "x-ms-summary": "pbi.error" 258 | } 259 | }, 260 | "description": "error", 261 | "x-ms-summary": "error" 262 | } 263 | }, 264 | "description": "serviceExceptionJson", 265 | "x-ms-summary": "serviceExceptionJson" 266 | }, 267 | "status": { 268 | "type": "string", 269 | "description": "status", 270 | "x-ms-summary": "status" 271 | } 272 | } 273 | }, 274 | "description": "value", 275 | "x-ms-summary": "value" 276 | } 277 | } 278 | } 279 | } 280 | }, 281 | "summary": "Get Dataset Refreshes", 282 | "operationId": "GetDatasetRefreshes", 283 | "parameters": [ 284 | { 285 | "name": "workspaceId", 286 | "in": "path", 287 | "required": true, 288 | "type": "string" 289 | }, 290 | { 291 | "name": "datasetId", 292 | "in": "path", 293 | "required": true, 294 | "type": "string" 295 | } 296 | ], 297 | "description": "Get Dataset Refreshes" 298 | }, 299 | "post": { 300 | "responses": { 301 | "default": { 302 | "description": "default", 303 | "schema": { 304 | "type": "object", 305 | "properties": {} 306 | } 307 | }, 308 | "202": { 309 | "description": "default", 310 | "schema": { 311 | "type": "object", 312 | "properties": {} 313 | } 314 | } 315 | 316 | }, 317 | "summary": "Refresh Dataset", 318 | "description": "Refreshes Dataset", 319 | "operationId": "RefreshDataset", 320 | "parameters": [ 321 | { 322 | "name": "workspaceId", 323 | "in": "path", 324 | "required": true, 325 | "type": "string" 326 | }, 327 | { 328 | "name": "datasetId", 329 | "in": "path", 330 | "required": true, 331 | "type": "string" 332 | } 333 | ] 334 | } 335 | } 336 | }, 337 | "definitions": {}, 338 | "parameters": {}, 339 | "responses": {}, 340 | "securityDefinitions": { 341 | "oauth2_auth": { 342 | "type": "oauth2", 343 | "flow": "accessCode", 344 | "authorizationUrl": "https://login.windows.net/common/oauth2/authorize", 345 | "tokenUrl": "https://login.windows.net/common/oauth2/authorize", 346 | "scopes": {} 347 | } 348 | }, 349 | "security": [ 350 | { 351 | "oauth2_auth": [] 352 | } 353 | ], 354 | "tags": [] 355 | } -------------------------------------------------------------------------------- /Student/Modules/06_ExternalSystems/Lab/PowerBIDatasetManger.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/06_ExternalSystems/Lab/PowerBIDatasetManger.zip -------------------------------------------------------------------------------- /Student/Modules/06_ExternalSystems/Lab/Solution/CustomersAPI.swagger.json: -------------------------------------------------------------------------------- 1 | { 2 | "swagger": "2.0", 3 | "info": { 4 | "title": "CustomersAPI", 5 | "description": "A custom connector to retrieve customer data", 6 | "version": "1.0" 7 | }, 8 | "host": "subliminalsystems.com", 9 | "basePath": "/api/", 10 | "schemes": [ 11 | "http" 12 | ], 13 | "consumes": [], 14 | "produces": [], 15 | "paths": { 16 | "/Customers/": { 17 | "get": { 18 | "responses": { 19 | "default": { 20 | "description": "default", 21 | "schema": { 22 | "type": "object", 23 | "properties": { 24 | "value": { 25 | "type": "array", 26 | "items": { 27 | "type": "object", 28 | "properties": { 29 | "CustomerId": { 30 | "type": "integer", 31 | "format": "int32", 32 | "description": "CustomerId" 33 | }, 34 | "FirstName": { 35 | "type": "string", 36 | "description": "FirstName" 37 | }, 38 | "LastName": { 39 | "type": "string", 40 | "description": "LastName" 41 | } 42 | } 43 | }, 44 | "description": "value" 45 | } 46 | } 47 | } 48 | } 49 | }, 50 | "summary": "Get Customers", 51 | "description": "An operation to get customer data", 52 | "operationId": "GetCustomers", 53 | "x-ms-visibility": "important", 54 | "parameters": [ 55 | { 56 | "name": "$select", 57 | "in": "query", 58 | "required": true, 59 | "type": "string", 60 | "default": "LastName,FirstName,CustomerId", 61 | "x-ms-visibility": "internal" 62 | }, 63 | { 64 | "name": "$filter", 65 | "in": "query", 66 | "required": false, 67 | "type": "string", 68 | "default": "length(LastName) gt 0", 69 | "x-ms-visibility": "important" 70 | } 71 | ] 72 | } 73 | }, 74 | "/Customers({CustomerId})": { 75 | "get": { 76 | "responses": { 77 | "default": { 78 | "description": "default", 79 | "schema": {} 80 | } 81 | }, 82 | "summary": "Get Customer", 83 | "operationId": "GetCustomer", 84 | "description": "an operation to retrieve a single customer", 85 | "x-ms-visibility": "important", 86 | "parameters": [ 87 | { 88 | "name": "CustomerId", 89 | "in": "path", 90 | "required": true, 91 | "type": "integer", 92 | "x-ms-visibility": "important" 93 | } 94 | ] 95 | } 96 | } 97 | }, 98 | "definitions": {}, 99 | "parameters": {}, 100 | "responses": {}, 101 | "securityDefinitions": {}, 102 | "security": [], 103 | "tags": [] 104 | } -------------------------------------------------------------------------------- /Student/Modules/06_ExternalSystems/Slides.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/06_ExternalSystems/Slides.pdf -------------------------------------------------------------------------------- /Student/Modules/06_ExternalSystems/Slides.xps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/06_ExternalSystems/Slides.xps -------------------------------------------------------------------------------- /Student/Modules/07_CommonDataService/Lab.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/07_CommonDataService/Lab.pdf -------------------------------------------------------------------------------- /Student/Modules/07_CommonDataService/Lab.xps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/07_CommonDataService/Lab.xps -------------------------------------------------------------------------------- /Student/Modules/07_CommonDataService/Lab/ProductManagement.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/07_CommonDataService/Lab/ProductManagement.zip -------------------------------------------------------------------------------- /Student/Modules/07_CommonDataService/Slides.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/07_CommonDataService/Slides.pdf -------------------------------------------------------------------------------- /Student/Modules/07_CommonDataService/Slides.xps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/07_CommonDataService/Slides.xps -------------------------------------------------------------------------------- /Student/Modules/08_PowerAppsPortals/Lab.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/08_PowerAppsPortals/Lab.pdf -------------------------------------------------------------------------------- /Student/Modules/08_PowerAppsPortals/Lab.xps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/08_PowerAppsPortals/Lab.xps -------------------------------------------------------------------------------- /Student/Modules/08_PowerAppsPortals/Lab/DisplayProductsUsingLiquid.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | All Categories 5 | Action Figures 6 | Arts and Crafts 7 | Remote Control 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | {% entityview logical_name:'cptlabs_product', name:"Active Products", page_size: 50 %} 16 | 17 | {% assign category = request.params['category'] %} 18 | 19 | {% if category %} 20 | {% assign products = entityview.records | where: "cptlabs_productcategory.label", category | order_by: "cptlabs_productcode" %} 21 | {% else %} 22 | {% assign products = entityview.records | order_by: "cptlabs_productcode" %} 23 | {% endif %} 24 | 25 | {% for item in products %} 26 | 27 | 28 | {{ item.cptlabs_productname }} 29 | 30 | 31 | {{ item.cptlabs_productdescription }} 32 | {{ item.cptlabs_productcategory.label }} 33 | 34 | 35 | 36 | 37 | {% endfor %} 38 | {% endentityview %} 39 | 40 | -------------------------------------------------------------------------------- /Student/Modules/08_PowerAppsPortals/Lab/landingpage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/08_PowerAppsPortals/Lab/landingpage.png -------------------------------------------------------------------------------- /Student/Modules/08_PowerAppsPortals/Lab/wingtip_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/08_PowerAppsPortals/Lab/wingtip_logo.png -------------------------------------------------------------------------------- /Student/Modules/08_PowerAppsPortals/Slides.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/08_PowerAppsPortals/Slides.pdf -------------------------------------------------------------------------------- /Student/Modules/08_PowerAppsPortals/Slides.xps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/08_PowerAppsPortals/Slides.xps -------------------------------------------------------------------------------- /Student/Modules/09_PowerBI/Lab.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/09_PowerBI/Lab.pdf -------------------------------------------------------------------------------- /Student/Modules/09_PowerBI/Lab.xps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/09_PowerBI/Lab.xps -------------------------------------------------------------------------------- /Student/Modules/09_PowerBI/Lab/Wingtip Sales Analysis.pbix: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/09_PowerBI/Lab/Wingtip Sales Analysis.pbix -------------------------------------------------------------------------------- /Student/Modules/09_PowerBI/Slides.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/09_PowerBI/Slides.pdf -------------------------------------------------------------------------------- /Student/Modules/09_PowerBI/Slides.xps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CriticalPathTraining/PowerPlatformMasterClass/3d1febfafa6d05877afab3d660e86833883fdb91/Student/Modules/09_PowerBI/Slides.xps --------------------------------------------------------------------------------