示例#1
0
        private static void Main(string[] args)
        {
            //// each test shall be run on separate run - colors conflicts and handles conflicts
            //var tests = new InternalTests();
            ////tests.PrintDefaultColors();
            //tests.PrintCustomColors();
            //return;



            ConsoleManager helper = new ConsoleManager();

            //helper.ReplaceConsoleColor(ConsoleColor.DarkCyan, Color.Salmon);
            helper.ReplaceConsoleColors(
                new Tuple <ConsoleColor, Color>(ConsoleColor.DarkCyan, Color.Chocolate),
                new Tuple <ConsoleColor, Color>(ConsoleColor.Blue, Color.DodgerBlue),
                new Tuple <ConsoleColor, Color>(ConsoleColor.Yellow, Color.Gold),
                new Tuple <ConsoleColor, Color>(ConsoleColor.DarkBlue, Color.MidnightBlue));

            IConsole          console = new SystemConsole(helper, isFullScreen: false);
            ConsoleOperations ops     = new ConsoleOperations(console);

            TestCommands test = new TestCommands(console);

            //PrintColorsMessages(console);
            //PrintAllNamedColors(helper, console);
            //PrintFrames(ops, console);
            //PrintTables(ops);

            console.ReadLine();
        }
示例#2
0
        static void Main(string[] args)
        {
            IImputOutput viewer = new ConsoleOperations();
            ControlApp   app    = new ControlApp(viewer);

            app.Start(args);
        }
示例#3
0
        private static void PrintTables(ConsoleOperations ops)
        {
            var tableFrameColor   = new ConsoleFontColor(Color.Silver, Color.Black);
            var tableHeaderColor  = new ConsoleFontColor(Color.White, Color.Black);
            var tableOddRowColor  = new ConsoleFontColor(Color.Black, Color.Silver);
            var tableEvenRowColor = new ConsoleFontColor(Color.Black, Color.DimGray);

            TableStyle tableStyle = new TableStyle(
                tableFrameColor,
                tableHeaderColor,
                tableOddRowColor,
                tableEvenRowColor,
                @"|-||||-||-|--", // simple, ascii table
                ' ',
                TableLargeRowContentBehavior.Ellipsis);

            var headers = new[] { "Row 1", "Longer row 2", "Third row" };
            var values  = new[]
            {
                new[] { "1", "2", "3" },
                new[] { "10", "223423", "3" },
                new[] { "1", "2", "3" },
                new[] { "12332 ", "22332423", "3223434234" },
                new[] { "1df ds fsd fsfs fsdf s", "2234  4234 23", "3 23423423" },
            };

            ops.WriteTabelaricData(5, 5, 50, headers, values, tableStyle);

            Console.ReadLine();
        }
示例#4
0
        private static void Main(string[] args)
        {
            var coreController = new CoreConsoleController();
            ////helper.ReplaceConsoleColor(ConsoleColor.DarkCyan, Color.Salmon);

            //controller.ReplaceConsoleColors(
            //    new Tuple<ConsoleColor, Color>(ConsoleColor.DarkCyan, Color.Chocolate),
            //    new Tuple<ConsoleColor, Color>(ConsoleColor.Blue, Color.DodgerBlue),
            //    new Tuple<ConsoleColor, Color>(ConsoleColor.Yellow, Color.Gold),
            //    new Tuple<ConsoleColor, Color>(ConsoleColor.DarkBlue, Color.MidnightBlue));

            IConsole console = new CoreConsole(coreController);

            ConsoleOperations ops = new ConsoleOperations(console);

            SplitterTest(console);
            PrintColorsMessages(console);
            PrintAllNamedColors(coreController, console);
            PrintFrames(ops, console);
            PrintTables(console);

            SimulateConsole(console);

            Console.WriteLine("Holding console window open. Press ENTER to quit for good.");
            console.ReadLine();
        }
示例#5
0
        private static void PrintFrames(ConsoleOperations ops, IConsole console)
        {
            var        text1Colors          = new ConsoleFontColor(Color.Gold, Color.Black);
            var        text2Colors          = new ConsoleFontColor(Color.Brown, Color.Black);
            var        text3Colors          = new ConsoleFontColor(Color.Black, Color.Silver);
            var        frame2Colors         = new ConsoleFontColor(Color.Silver, Color.Black);
            var        solidFrameTextColors = new ConsoleFontColor(Color.Red, Color.Yellow);
            var        solidFrameColors     = new ConsoleFontColor(Color.Yellow, Color.Black);
            FrameStyle block3Frame          = new FrameStyle(frame2Colors, text3Colors, @"┌─┐││└─┘", '░');
            FrameStyle doubleFrame          = new FrameStyle(frame2Colors, text3Colors, @"╔═╗║║╚═╝", '▒');
            FrameStyle solidFrame           = new FrameStyle(solidFrameColors, solidFrameTextColors, @"▄▄▄██▀▀▀", '▓');

            ops.WriteTextBox(5, 5, 50, 7,
                             @"Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis. Maecenas malesuada elit lectus felis, malesuada ultricies. Curabitur et ligula. Ut molestie a, ultricies porta urna. Vestibulum commodo volutpat a, convallis ac, laoreet enim. Phasellus fermentum in, dolor.",
                             text1Colors);
            ops.WriteTextBox(25, 15, 80, 37,
                             @"Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis. Maecenas malesuada elit lectus felis, malesuada ultricies. Curabitur et ligula. Ut molestie a, ultricies porta urna. Vestibulum commodo volutpat a, convallis ac, laoreet enim. Phasellus fermentum in, dolor. Pellentesque facilisis. Nulla imperdiet sit amet magna. Vestibulum dapibus, mauris nec malesuada fames ac turpis velit, rhoncus eu, luctus et interdum adipiscing wisi. Aliquam erat ac ipsum. Integer aliquam purus. Quisque lorem tortor fringilla sed, vestibulum id, eleifend justo vel bibendum sapien massa ac turpis faucibus orci luctus non, consectetuer lobortis quis, varius in, purus.",
                             text2Colors);

            ops.WriteTextBox(new Rectangle(26, 26, 60, 20),
                             @"Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis. Maecenas malesuada elit lectus felis, malesuada ultricies. Curabitur et ligula. Ut molestie a, ultricies porta urna. Vestibulum commodo volutpat a, convallis ac, laoreet enim. Phasellus fermentum in, dolor. Pellentesque facilisis. Nulla imperdiet sit amet magna. Vestibulum dapibus, mauris nec malesuada fames ac turpis velit, rhoncus eu, luctus et interdum adipiscing wisi. Aliquam erat ac ipsum. Integer aliquam purus. Quisque lorem tortor fringilla sed, vestibulum id, eleifend justo vel bibendum sapien massa ac turpis faucibus orci luctus non, consectetuer lobortis quis, varius in, purus.",
                             block3Frame);
            ops.WriteTextBox(new Rectangle(80, 10, 30, 7),
                             @"Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis.",
                             doubleFrame);
            ops.WriteTextBox(new Rectangle(100, 20, 25, 7),
                             @"Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis.",
                             solidFrame);

            console.WriteText(0, 20, "", Color.Gray, Color.Black); // reset

            Console.ReadLine();
            console.Clear();
        }
        //public WebSite(int retryCount, int delay, string userAgent)
        //{
        //    RetryCount = retryCount;
        //    Delay = delay;
        //    UserAgent = userAgent;
        //}

        /// <summary>
        /// Exports the users for the current website.
        /// </summary>
        public (string, string) ExportUsers()
        {
            ConsoleOperations.WriteToConsole("Exporting users for website: " + SourceSiteUrl, ConsoleColor.White);

            var    domainToSearch       = ConfigurationManager.AppSettings[Constants.AppSettings.DomainToSearchKey];
            var    exportReportFileName = ConfigurationManager.AppSettings[Constants.AppSettings.UserExportSiteMapReportKey];
            var    batchSize            = ConfigurationManager.AppSettings[Constants.AppSettings.BatchSizeKey];
            var    csvOperation         = new CSVOperations();
            string completedSite        = string.Empty;
            string erroredSite          = string.Empty;

            try
            {
                var userInformationList = Web.SiteUserInfoList;
                var camlQuery           = CamlQuery.CreateAllItemsQuery(int.Parse(batchSize), new string[] { "FieldValuesAsText" });
                ClientContext.ExecutingWebRequest += delegate(object sender, WebRequestEventArgs e)
                {
                    e.WebRequestExecutor.WebRequest.UserAgent = UserAgent;
                };

                List <ListItem> items = new List <ListItem>();
                do
                {
                    ListItemCollection listItemCollection = userInformationList.GetItems(camlQuery);
                    ClientContext.Load(listItemCollection);
                    //ClientContext.ExecuteQuery();
                    ClientContext.ExecuteQueryWithIncrementalRetry(RetryCount, Delay);


                    items.AddRange(listItemCollection);
                    camlQuery.ListItemCollectionPosition = listItemCollection.ListItemCollectionPosition;
                } while (camlQuery.ListItemCollectionPosition != null);

                ConsoleOperations.WriteToConsole($"Extracted all users for {SourceSiteUrl}", ConsoleColor.Green);
                IEnumerable <User> domainUsers = GetDesiredDomainUsers(items, domainToSearch);

                ConsoleOperations.WriteToConsole($"Writing Users List for {SourceSiteUrl}. Total users found are: " + domainUsers.Count(), ConsoleColor.Yellow);

                bool isSuccess = csvOperation.WriteCsv(domainUsers, exportReportFileName);
                if (isSuccess)
                {
                    completedSite = SourceSiteUrl;
                }
                else
                {
                    erroredSite = SourceSiteUrl;
                }
            }
            catch (Exception ex)
            {
                ConsoleOperations.WriteToConsole($"Error in Exporting users {ex.Message}", ConsoleColor.Red);
                erroredSite = SourceSiteUrl;
            }

            return(completedSite, erroredSite);
        }
示例#7
0
        static void Main(string[] args)
        {
            var consoleService = new ConsoleOperations();

            consoleService.Write("PLease enter your name");
            var name   = consoleService.Read();
            var player = new Player(name, consoleService);
            var game   = new Game(player, consoleService);

            game.Start();
        }
示例#8
0
        /// <summary>
        /// Recurses the sub webs of a site collection and generate the list of webs for further processing.
        /// </summary>
        public void RecursSubWebs()
        {
            Logger.Log("Reading webs for " + ModernWeb.SourceSiteUrl);
            Console.WriteLine("Reading webs for " + ModernWeb.SourceSiteUrl);

            if (ModernWeb != null)
            {
                var authManagerSource = new AuthenticationManager();

                using (var sourceContext = authManagerSource.GetSharePointOnlineAuthenticatedContextTenant(ModernWeb.SourceSiteUrl, ModernWeb.SourceUserName, ModernWeb.SourcePassword))
                {
                    Logger.Log("Created context for " + ModernWeb.SourceSiteUrl);

                    sourceContext.ExecutingWebRequest += delegate(object sender, WebRequestEventArgs e)
                    {
                        e.WebRequestExecutor.WebRequest.UserAgent = UserAgent;
                    };

                    var rootWeb = sourceContext.Web;
                    try
                    {
                        sourceContext.Load(rootWeb,
                                           website => website.RoleDefinitions,
                                           website => website.WebTemplate,
                                           website => website.Webs,
                                           website => website.Title,
                                           website => website.Url);
                        //sourceContext.ExecuteQueryRetry();
                        sourceContext.ExecuteQueryWithIncrementalRetry(RetryCount, Delay);

                        ModernWeb.ClientContext = sourceContext;
                        ModernWeb.Web           = rootWeb;

                        ModernWebsList.Add(ModernWeb);

                        //Get all the webs for the current root site
                        Logger.Log("Calling GetAllSubWebs for " + ModernWeb.SourceSiteUrl);
                        var websList = GetAllSubWebs(sourceContext, rootWeb);

                        websList?.ForEach(web =>
                        {
                            ModernWeb = web;
                            RecursSubWebs();
                        });
                    }
                    catch (Exception ex)
                    {
                        Logger.LogError("Problem in RecursSubWebs for" + ModernWeb.SourceSiteUrl + Environment.NewLine + ex.Message);
                        ConsoleOperations.WriteToConsole("Problem in RecursSubWebs for: " + ModernWeb.SourceSiteUrl + Environment.NewLine + "Error Message: " + ex.Message, ConsoleColor.Red);
                    }
                }
            }
        }
示例#9
0
        static void Main(string[] args)
        {
            var refiller = new Refiller.SolarRefiller();

            var firstCoffeeMachine = new CoffeeMachine(true, 12, 10, 10, 0, refiller);

            var consoleServices = new ConsoleOperations();

            var coffeeMachineScreen = new CofeeMachineScreen(consoleServices, firstCoffeeMachine);

            coffeeMachineScreen.Interact();
        }
示例#10
0
        public void RollsDice()
        {
            //arrange

            IConsoleService testServices = new ConsoleOperations();
            Player          testPlayer   = new Player("Alex", testServices);
            Game            testGame     = new Game(testPlayer, testServices);

            //act
            testGame.Start();

            //Assert
            //Assert.Contains();
            // Assert.AreEqual();
        }
示例#11
0
        private static void Main(string[] args)
        {
            ConsoleController controller = new ConsoleController();

            //helper.ReplaceConsoleColor(ConsoleColor.DarkCyan, Color.Salmon);
            controller.ReplaceConsoleColors(
                new Tuple <ConsoleColor, Color>(ConsoleColor.DarkCyan, Color.Chocolate),
                new Tuple <ConsoleColor, Color>(ConsoleColor.Blue, Color.DodgerBlue),
                new Tuple <ConsoleColor, Color>(ConsoleColor.Yellow, Color.Gold),
                new Tuple <ConsoleColor, Color>(ConsoleColor.DarkBlue, Color.MidnightBlue));

            IConsole          console = new SystemConsole(controller, ConsoleStartConfiguration.Colorfull);
            ConsoleOperations ops     = new ConsoleOperations(console);

            TestCommands test = new TestCommands(console);

            console.WaitBeforeQuit();
        }
        /// <summary>
        /// Adds the controls.
        /// </summary>
        /// <param name="sourceContext">The source context.</param>
        /// <param name="newModernPage">The new modern page.</param>
        /// <param name="pageName">Name of the page.</param>
        private void AddControls(ClientContext sourceContext, ClientSidePage newModernPage, string pageName)
        {
            try
            {
                var sourcePage         = ClientSidePage.Load(sourceContext, pageName); //newModernPage.Controls;
                var controlsCollection = sourcePage.Controls;

                foreach (var control in controlsCollection)
                {
                    newModernPage.AddControl(control);
                    //var webparttoadd = newmodernpage.instantiatedefaultwebpart(defaultclientsidewebparts.)
                }
                newModernPage.Save();
            }
            catch (Exception ex)
            {
                ConsoleOperations.WriteToConsole("Problem with adding controls to page", ConsoleColor.Yellow);
            }
        }
示例#13
0
        static void Main(string[] args)
        {
            var communication = new ConsoleOperations();

            var validations = new List <IValidation>
            {
                new IsNotNullValidator(),
                new CorrectColorValidator(),
                new CorrectColorCountValidator()
            };

            var userColorProvider     = new UserColorsProvider(validations, communication);
            var initialColorsProvider = new InitialColorsProvider(new RandomNumberGenerator());
            var initialColors         = initialColorsProvider.ProvideColors();


            var game = new Game(communication, userColorProvider);

            game.Play(initialColors);
        }
        /// <summary>
        /// Creates the page with web parts.
        /// </summary>
        /// <param name="sourceContext">The source context.</param>
        /// <param name="targetContext">The target context.</param>
        /// <param name="targetWeb">The target web.</param>
        /// <param name="sourceItem">The source item.</param>
        /// <param name="pageName">Name of the page.</param>
        /// <returns>ListItem.</returns>
        public override ListItem CreatePageWithWebParts(ClientContext sourceContext, ClientContext targetContext, Web targetWeb, ListItem sourceItem, string pageName)
        {
            ListItem targetItem = null;

            Logger.Log("Into CreatePageWithWebParts for " + pageName);

            if (targetWeb != null)
            {
                try
                {
                    var wikiPageRelativeUrl = targetWeb.EnsureWikiPage(sourceItem.ParentList.Title, pageName); //.AddWikiPage(Constants.ModernPageLibrary, pageName);
                    var wikiPage            = targetWeb.GetFileByServerRelativeUrl(targetWeb.ServerRelativeUrl + "/" + wikiPageRelativeUrl);

                    targetItem = wikiPage.ListItemAllFields;
                    targetContext.Load(wikiPage);
                    targetContext.Load(targetItem, i => i.DisplayName);
                    targetContext.ExecuteQueryWithIncrementalRetry(RetryCount, Delay);

                    var webPartOps  = new WebPartOperation(Logger, RetryCount, Delay);
                    var webpartList = webPartOps.ExportWebPart(sourceContext, sourceItem.File);
                    webPartOps.ImportWebParts(targetContext, targetWeb, webpartList, wikiPage);

                    AddContent(targetContext, targetItem, sourceItem, Constants.WikiPageContentControl);

                    if (targetItem != null && sourceItem.HasUniqueRoleAssignments)
                    {
                        ManagePermissions(sourceContext, targetContext, sourceItem, targetItem);
                    }

                    UpdateSystemFields(targetContext, targetItem, sourceItem);
                }
                catch (Exception ex)
                {
                    ConsoleOperations.WriteToConsole("Exception in migrating the page: " + pageName + " on " + sourceContext.Web.Url, ConsoleColor.Red);
                    Logger.LogError("Error in CreatePageWithWebParts for WikiPage " + pageName + Environment.NewLine + ex.Message);
                    //throw ex;
                }
            }

            return(targetItem);
        }
        /// <summary>
        /// Gets password from the user and converts to Secure String
        /// </summary>
        /// <param name="label">The label.</param>
        /// <returns>SecureString.</returns>
        private static SecureString GetSecureString(string label)
        {
            SecureString sStrPwd = new SecureString();

            try
            {
                ConsoleOperations.WriteToConsole(label, ConsoleColor.Yellow);

                for (ConsoleKeyInfo keyInfo = Console.ReadKey(true); keyInfo.Key != ConsoleKey.Enter; keyInfo = Console.ReadKey(true))
                {
                    if (keyInfo.Key == ConsoleKey.Backspace)
                    {
                        if (sStrPwd.Length > 0)
                        {
                            sStrPwd.RemoveAt(sStrPwd.Length - 1);
                            Console.SetCursorPosition(Console.CursorLeft - 1, Console.CursorTop);
                            Console.Write(" ");
                            Console.SetCursorPosition(Console.CursorLeft - 1, Console.CursorTop);
                        }
                    }
                    else if (keyInfo.Key != ConsoleKey.Enter)
                    {
                        Console.Write("*");
                        sStrPwd.AppendChar(keyInfo.KeyChar);
                    }
                }
                Console.WriteLine("");
            }
            catch (Exception e)
            {
                sStrPwd = null;
                Console.WriteLine(e.Message);
            }

            return(sStrPwd);
        }
        /// <summary>
        /// Creates the page with web parts.
        /// </summary>
        /// <param name="sourceContext">The source context.</param>
        /// <param name="targetContext">The target context.</param>
        /// <param name="targetWeb">The target web.</param>
        /// <param name="sourceItem">The source item.</param>
        /// <param name="pageName">Name of the page.</param>
        /// <returns>ListItem.</returns>
        public override ListItem CreatePageWithWebParts(ClientContext sourceContext, ClientContext targetContext, Web targetWeb, ListItem sourceItem, string pageName)
        {
            ListItem repostPageListItem = null;

            Logger.Log("Into CreatePageWithWebParts for " + pageName);

            if (targetWeb != null)
            {
                try
                {
                    var sitePagesList    = targetWeb.Lists.GetByTitle(Constants.ModernPageLibrary);
                    var listContentTypes = sitePagesList.ContentTypes;

                    targetContext.Load(targetWeb);
                    targetContext.Load(listContentTypes, ctypes => ctypes.Include(c => c.Name, c => c.Id));
                    targetContext.Load(sitePagesList);
                    targetContext.Load(sitePagesList.RootFolder);
                    targetContext.ExecuteQueryWithIncrementalRetry(RetryCount, Delay);

                    //var pageTitle = "RepostPage.aspx";
                    //sitePagesList.RootFolder.Files.AddTemplateFile(sitePagesList.RootFolder.ServerRelativeUrl + "/" + pageName, TemplateFileType.ClientSidePage);
                    var repostPage = targetWeb.AddClientSidePage(pageName, true);
                    if (repostPage != null)
                    {
                        repostPageListItem = repostPage.PageListItem;

                        repostPageListItem["ContentTypeId"]  = listContentTypes.FirstOrDefault(ct => ct.Name == Constants.RepostPageContentType).Id; //sourceItem["ContentTypeId"];//"0x0101009D1CB255DA76424F860D91F20E6C4118002A50BFCFB7614729B56886FADA02339B00874A802FBA36B64BAB7A47514EAAB232";
                        repostPageListItem["PageLayoutType"] = sourceItem["PageLayoutType"];
                        repostPageListItem["PromotedState"]  = sourceItem["PromotedState"];                                                          //"2";

                        repostPageListItem["Title"] = sourceItem.Client_Title;
                        //repostPageListItem["ClientSideApplicationId"] = "b6917cb1-93a0-4b97-a84d-7cf49975d4ec";

                        repostPageListItem["_OriginalSourceSiteId"] = targetContext.Site.Id;
                        repostPageListItem["_OriginalSourceWebId"]  = targetWeb.Id;
                        repostPageListItem["_OriginalSourceListId"] = sitePagesList.Id;
                        repostPageListItem["_OriginalSourceItemId"] = repostPageListItem["UniqueId"].ToString();

                        repostPageListItem["_OriginalSourceUrl"] = sourceItem["_OriginalSourceUrl"];
                        repostPageListItem["Description"]        = sourceItem["Description"];//"Repost Page Description";
                        repostPageListItem["BannerImageUrl"]     = sourceItem["BannerImageUrl"];
                        repostPageListItem["FirstPublishedDate"] = sourceItem["FirstPublishedDate"];

                        repostPageListItem.Update();

                        targetContext.Load(repostPageListItem, i => i.DisplayName);
                        targetContext.ExecuteQueryWithIncrementalRetry(RetryCount, Delay);

                        repostPage.PromoteAsNewsArticle();

                        if (repostPageListItem != null && sourceItem.HasUniqueRoleAssignments)
                        {
                            ManagePermissions(sourceContext, targetContext, sourceItem, repostPageListItem);
                        }

                        UpdateSystemFields(targetContext, repostPageListItem, sourceItem);
                    }
                }
                catch (Exception ex)
                {
                    Logger.LogError("Error in CreatePageWithWebParts for RepostPage " + pageName + Environment.NewLine + ex.Message);
                    ConsoleOperations.WriteToConsole("Exception in migrating the page: " + pageName + " on " + sourceContext.Web.Url, ConsoleColor.Red);
                    //throw ex;
                }
            }

            return(repostPageListItem);
        }
示例#17
0
        /// <summary>
        /// Creates the page.
        /// </summary>
        /// <param name="sourcePageItemsCollection">The source page items collection.</param>
        /// <param name="sourceContext">The source context.</param>
        /// <param name="targetContext">The target context.</param>
        /// <param name="targetWeb">The target web.</param>
        private ListItem CreatePage(ListItemCollection sourcePageItemsCollection, ClientContext sourceContext, ClientContext targetContext, Web targetWeb)
        {
            ListItem targetItem = null;

            if (sourcePageItemsCollection != null && sourcePageItemsCollection.Count > 0)
            {
                foreach (var sourceItem in sourcePageItemsCollection)
                {
                    var fileRef  = sourceItem[Constants.FileRef].ToString();
                    var pageName = fileRef.Substring(fileRef.LastIndexOf('/') + 1);

                    ConsoleOperations.WriteToConsole("Processing page: " + fileRef, ConsoleColor.Yellow);
                    Logger.Log("Processing page: " + fileRef);



                    try
                    {
                        switch (sourceItem.ContentType.Name)
                        {
                        case Constants.ModernPageContentType:
                            //Sometimes Wiki Pages have 'Site Page' content Type. Additional check for that
                            //TODO: Use Dependency Injection/Factory Model
                            if (sourceItem[Constants.WikiPageContentControl] == null)
                            {
                                SitePage modernPage = new SitePage(Logger, RetryCount, Delay);
                                targetItem = modernPage.CreatePageWithWebParts(sourceContext, targetContext, targetWeb, sourceItem, pageName);
                            }
                            else
                            {
                                WikiPage wikiPage = new WikiPage(Logger, RetryCount, Delay);
                                targetItem = wikiPage.CreatePageWithWebParts(sourceContext, targetContext, targetWeb, sourceItem, pageName);
                            }

                            ConsoleOperations.WriteToConsole("Processed page: " + fileRef, ConsoleColor.Green);
                            Logger.Log("Processed page: " + fileRef);
                            break;

                        case Constants.WikiPageContentType:
                            //TODO: If a page is present then avoid adding duplicate webparts
                            WikiPage wikPage = new WikiPage(Logger, RetryCount, Delay);
                            targetItem = wikPage.CreatePageWithWebParts(sourceContext, targetContext, targetWeb, sourceItem, pageName);

                            ConsoleOperations.WriteToConsole("Processed page: " + fileRef, ConsoleColor.Green);
                            Logger.Log("Processed page: " + fileRef);

                            break;

                        case Constants.RepostPageContentType:
                            RepostPage repostPage = new RepostPage(Logger, RetryCount, Delay);
                            targetItem = repostPage.CreatePageWithWebParts(sourceContext, targetContext, targetWeb, sourceItem, pageName);

                            ConsoleOperations.WriteToConsole("Processed page: " + fileRef, ConsoleColor.Green);
                            Logger.Log("Processed page: " + fileRef);

                            break;

                        case Constants.WebPartPageContentType:
                            //TODO - Multiple webpart Zone
                            WebPartPage webPartPage = new WebPartPage(Logger, RetryCount, Delay);
                            webPartPage.CreatePageWithWebParts(sourceContext, targetContext, targetWeb, sourceItem, pageName);

                            ConsoleOperations.WriteToConsole("Processed page: " + fileRef, ConsoleColor.Green);
                            Logger.Log("Processed page: " + fileRef);
                            break;
                        }
                    }
                    catch (Exception ex)
                    {
                        Logger.LogError("Exception in WebsOperation for page content type identification. " + ex.Message);
                    }
                }
            }

            return(targetItem);
        }
示例#18
0
        /// <inheritdoc />
        public void Run(IConsole console)
        {
            console.Clear();
            var exitGuid = new Guid(@"a7725515-7f82-4c18-9c36-343003bdf20d");

            var menuItems = new ConsoleMenuItem[]
            {
                new ConsoleMenuItem
                {
                    Enabled = true,
                    Caption = "menu item number one",
                    Code    = Guid.NewGuid()
                },
                new ConsoleMenuItem
                {
                    Enabled = true,
                    Caption = "menu item number two",
                    Code    = Guid.NewGuid()
                },
                new ConsoleMenuItem
                {
                    Enabled = false,
                    Caption = "menu item number three",
                    Code    = Guid.NewGuid()
                },
                new ConsoleMenuItem
                {
                    Enabled = true,
                    Caption = "menu item number four with very long description",
                    Code    = Guid.NewGuid()
                },
                new ConsoleMenuItem
                {
                    Enabled = false,
                    Caption = "menu item number five",
                    Code    = Guid.NewGuid()
                },
                new ConsoleMenuItem
                {
                    Enabled = true,
                    Caption = "menu item number six",
                    Code    = Guid.NewGuid()
                },
                new ConsoleMenuItem
                {
                    Enabled = true,
                    Caption = "Exit menu DEMO",
                    Code    = exitGuid
                }
            };

            var menuStyling = new MenuStyles
            {
                ActiveItem   = new ConsoleFontColor(Color.Red, Color.Black),
                DisabledItem = new ConsoleFontColor(Color.Gray, Color.Black),
                NormalItem   = new ConsoleFontColor(Color.WhiteSmoke, Color.Black),
                SelectedItem = new ConsoleFontColor(Color.Black, Color.LightGray),
                Alignment    = TextAlign.Center
            };

            var aConsole = new AtomicConsole(console);

            int menuStartY       = 6;
            int menuStartX       = 5;
            int menuContentWidth = 25;

            var frameColors    = new ConsoleFontColor(Color.Yellow, Color.Black);
            var boxInnerColors = new ConsoleFontColor(Color.WhiteSmoke, Color.Black);
            var frameStyle     = new FrameStyle(frameColors, boxInnerColors, @"┌─┐││└─┘", ' ');

            var ops = new ConsoleOperations(aConsole);

            ops.WriteTextBox(new Rectangle(menuStartX - 1, menuStartY - 1, menuContentWidth + 2, menuItems.Length + 2), "", frameStyle);

            var menu = new ConsoleMenu(aConsole, new Rectangle(menuStartX, menuStartY, menuContentWidth, 0), menuItems, menuStyling);

            menu.RenderAll();

            ConsoleMenuItem result = null;

            while (result == null || result.Code != exitGuid)
            {
                result = menu.Focus(resetActiveItem: true);

                aConsole.CleanLineSync(0, Color.Black);
                aConsole.RunAtomicOperations(ac =>
                {
                    aConsole.SetCursorPosition(0, 0);
                    aConsole.PrintColorfullText(
                        new KeyValuePair <ConsoleFontColor, string>(new ConsoleFontColor(Color.BlanchedAlmond, Color.Black), @"Selected menu: "),
                        new KeyValuePair <ConsoleFontColor, string>(new ConsoleFontColor(Color.Gold, Color.Black), result?.Caption ?? "#NULL#")
                        );
                });
                Thread.Sleep(1000);
            }

            aConsole.SetCursorPosition(0, menuStartY + menuItems.Length + 1);
            aConsole.ShowCursor();

            aConsole.WaitForNextPage();
        }
        static void Main(string[] args)
        {
            IAsyncLogger  logger             = O365GroupsFactory.GetLogger(new string[] { Constants.AppSettings.LoggerInstanceKey }) as IAsyncLogger;
            var           siteMapFileName    = ConfigurationManager.AppSettings[Constants.AppSettings.UserExportSiteMapKey];
            var           siteMapSheetName   = ConfigurationManager.AppSettings[Constants.AppSettings.SiteMapSheetKey];
            var           retryCount         = int.Parse(ConfigurationManager.AppSettings[Constants.AppSettings.RetryCountKey]);
            var           delay              = int.Parse(ConfigurationManager.AppSettings[Constants.AppSettings.DelayKey]);
            var           userAgent          = ConfigurationManager.AppSettings[Constants.AppSettings.UserAgentKey];
            List <string> completedSitesList = new List <string>();
            List <string> erroredSitesList   = new List <string>();

            ConsoleOperations.WriteToConsole("Reading Files...", ConsoleColor.White);
            var csvOperation   = new CSVOperations();
            var siteMapDetails = csvOperation.ReadFile(Constants.AppSettings.UserExportSiteMapKey, siteMapFileName, siteMapSheetName).Cast <UserExportSiteMapReport>().ToList();

            if (siteMapDetails != null)
            {
                SecureString sourcePassword = GetSecureString(Constants.PasswordMessageSource);
                //Stopwatch watch = new Stopwatch();
                //watch.Start();

                List <WebSite> websList = new List <WebSite>();
                ConsoleOperations.WriteToConsole("Processing read sites from CSV", ConsoleColor.White);

                foreach (var siteMap in siteMapDetails)
                {
                    logger.Log("Reading " + siteMap.SourceSiteUrl);


                    var website = new WebSite
                    {
                        SourceSiteUrl  = siteMap.SourceSiteUrl.Trim(),
                        SourceUserName = siteMap.SourceUser.Trim(),
                        SourcePassword = sourcePassword,
                        Delay          = delay,
                        RetryCount     = retryCount,
                        UserAgent      = userAgent
                    };
                    websList.Add(website);
                }

                try
                {
                    WebsUtility websOperation = new WebsUtility(retryCount, delay, userAgent);
                    websOperation.WebSiteList = websList;
                    (completedSitesList, erroredSitesList) = websOperation.ExportUsersList();
                }
                catch (Exception ex)
                {
                    ConsoleOperations.WriteToConsole("Error ocurred: " + ex.Message, ConsoleColor.Red);
                }

                //watch.Stop();
                logger.Log("Processing complete");
                ConsoleOperations.WriteToConsole($"Processing Complete; Total successful site count: {completedSitesList.Count}. The completed list is as follows:", ConsoleColor.Green);
                completedSitesList.ForEach(site =>
                {
                    ConsoleOperations.WriteToConsole(site, ConsoleColor.DarkCyan);
                });

                ConsoleOperations.WriteToConsole("Total Errored sites: " + erroredSitesList.Count, ConsoleColor.Red);
                if (erroredSitesList.Count > 0)
                {
                    ConsoleOperations.WriteToConsole("List: ", ConsoleColor.Red);
                    erroredSitesList.ForEach(site =>
                    {
                        ConsoleOperations.WriteToConsole(site, ConsoleColor.Red);
                    });
                }

                Console.ReadLine();
                //Console.WriteLine("Elapsed Time " + watch.Elapsed.ToString());
            }
        }
        private static void Main(string[] args)
        {
            ConsoleColorsHelper helper = new ConsoleColorsHelper();

            //helper.ReplaceConsoleColor(ConsoleColor.DarkCyan, Color.Salmon);
            helper.ReplaceConsoleColors(
                new Tuple <ConsoleColor, Color>(ConsoleColor.DarkCyan, Color.Chocolate),
                new Tuple <ConsoleColor, Color>(ConsoleColor.Blue, Color.DodgerBlue),
                new Tuple <ConsoleColor, Color>(ConsoleColor.Yellow, Color.Gold),
                new Tuple <ConsoleColor, Color>(ConsoleColor.DarkBlue, Color.MidnightBlue)
                );

            IConsole          console = new SystemConsole(helper);
            ConsoleOperations ops     = new ConsoleOperations(console);

            console.WriteText(0, 0, "test message", Color.Red, Color.Black);
            console.WriteText(0, 1, "test message 2", Color.Cyan, Color.YellowGreen);
            console.WriteText(0, 2, "test message 3d ds sfsdfsad ", Color.Orange, Color.Plum);
            console.WriteText(0, 3, "test messaf sdf s sfsdfsad ", Color.DarkOliveGreen, Color.Silver);
            console.WriteText(0, 4, "tsd fsfsd fds fsd f fa fas fad ", Color.AliceBlue, Color.PaleVioletRed);
            console.WriteText(0, 5, "tsd fsfsd fds fsd f fa fas fad ", Color.Blue, Color.CadetBlue);
            console.WriteText(0, 6, "tsd fsdfsdfsd fds fa fas fad ", Color.Maroon, Color.ForestGreen);

            // lol: http://stackoverflow.com/questions/3811973/why-is-darkgray-lighter-than-gray
            console.WriteText(0, 10, "test message", Color.Gray, Color.Black);
            console.WriteText(0, 11, "test message 2", Color.DarkGray, Color.Black);
            console.WriteText(0, 12, "test message 3d ds sfsdfsad ", Color.DimGray, Color.Black);
            console.WriteText(0, 20, "", Color.Gray, Color.Black); // reset

            var props = typeof(Color).GetProperties(BindingFlags.Static | BindingFlags.Public).Where(p => p.PropertyType == typeof(Color));

            foreach (var propertyInfo in props)
            {
                Color        c  = (Color)propertyInfo.GetValue(null);
                ConsoleColor cc = helper.FindClosestColor(c);
                Console.ForegroundColor = cc;
                Console.WriteLine("{0,-25} {1,-18} #{2,-8}", propertyInfo.Name, Enum.GetName(typeof(ConsoleColor), cc), c.ToArgb().ToString("X"));
            }

            var             text1Colors          = new ConsoleFontColor(Color.Gold, Color.Black);
            var             text2Colors          = new ConsoleFontColor(Color.Brown, Color.Black);
            var             text3Colors          = new ConsoleFontColor(Color.Black, Color.Silver);
            var             frame2Colors         = new ConsoleFontColor(Color.Silver, Color.Black);
            var             solidFrameTextColors = new ConsoleFontColor(Color.Red, Color.Yellow);
            var             solidFrameColors     = new ConsoleFontColor(Color.Yellow, Color.Black);
            FrameDefinition block3Frame          = new FrameDefinition(frame2Colors, text3Colors, @"┌─┐││└─┘", '░');
            FrameDefinition doubleFrame          = new FrameDefinition(frame2Colors, text3Colors, @"╔═╗║║╚═╝", '▒');
            FrameDefinition solidFrame           = new FrameDefinition(solidFrameColors, solidFrameTextColors, @"▄▄▄██▀▀▀", '▓');

            //console.Clear();
            ops.WriteTextBox(5, 5, 50, 7, @"Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis. Maecenas malesuada elit lectus felis, malesuada ultricies. Curabitur et ligula. Ut molestie a, ultricies porta urna. Vestibulum commodo volutpat a, convallis ac, laoreet enim. Phasellus fermentum in, dolor.", text1Colors);
            ops.WriteTextBox(25, 15, 80, 37, @"Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis. Maecenas malesuada elit lectus felis, malesuada ultricies. Curabitur et ligula. Ut molestie a, ultricies porta urna. Vestibulum commodo volutpat a, convallis ac, laoreet enim. Phasellus fermentum in, dolor. Pellentesque facilisis. Nulla imperdiet sit amet magna. Vestibulum dapibus, mauris nec malesuada fames ac turpis velit, rhoncus eu, luctus et interdum adipiscing wisi. Aliquam erat ac ipsum. Integer aliquam purus. Quisque lorem tortor fringilla sed, vestibulum id, eleifend justo vel bibendum sapien massa ac turpis faucibus orci luctus non, consectetuer lobortis quis, varius in, purus.", text2Colors);

            ops.WriteTextBox(new Rectangle(26, 26, 60, 20),
                             @"Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis. Maecenas malesuada elit lectus felis, malesuada ultricies. Curabitur et ligula. Ut molestie a, ultricies porta urna. Vestibulum commodo volutpat a, convallis ac, laoreet enim. Phasellus fermentum in, dolor. Pellentesque facilisis. Nulla imperdiet sit amet magna. Vestibulum dapibus, mauris nec malesuada fames ac turpis velit, rhoncus eu, luctus et interdum adipiscing wisi. Aliquam erat ac ipsum. Integer aliquam purus. Quisque lorem tortor fringilla sed, vestibulum id, eleifend justo vel bibendum sapien massa ac turpis faucibus orci luctus non, consectetuer lobortis quis, varius in, purus.",
                             block3Frame);
            ops.WriteTextBox(new Rectangle(80, 10, 30, 7),
                             @"Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis.",
                             doubleFrame);
            ops.WriteTextBox(new Rectangle(100, 20, 25, 7),
                             @"Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis.",
                             solidFrame);

            console.WriteText(0, 20, "", Color.Gray, Color.Black); // reset


            Console.ReadLine();
        }
        /// <summary>
        /// Creates a modern page with web parts.
        /// </summary>
        /// <param name="sourceContext">The source context.</param>
        /// <param name="targetContext">The target context.</param>
        /// <param name="targetWeb">The target web.</param>
        /// <param name="sourceItem">The source item.</param>
        /// <param name="pageName">Name of the page.</param>
        /// <returns>ListItem.</returns>
        public override ListItem CreatePageWithWebParts(ClientContext sourceContext, ClientContext targetContext, Web targetWeb, ListItem sourceItem, string pageName)
        {
            ListItem targetItem = null;

            Logger.Log("Into CreatePageWithWebParts for " + pageName);

            try
            {
                var newClientSidePage = targetWeb.AddClientSidePage(pageName, true);

                try
                {
                    var sourcePage = ClientSidePage.Load(sourceContext, pageName);

                    if (sourcePage.PageHeader.ImageServerRelativeUrl != null)
                    {
                        newClientSidePage.PageHeader.ImageServerRelativeUrl = sourcePage.PageHeader.ImageServerRelativeUrl.ToLower().Replace(sourceContext.Web.Url, targetContext.Web.Url);
                    }

                    newClientSidePage.PageTitle  = sourcePage.PageTitle;
                    newClientSidePage.LayoutType = sourcePage.LayoutType;

                    if (sourcePage.LayoutType == ClientSidePageLayoutType.Home)
                    {
                        newClientSidePage.RemovePageHeader();
                    }

                    if (sourcePage.CommentsDisabled)
                    {
                        newClientSidePage.DisableComments();
                    }
                }
                catch (Exception ex)
                {
                    ConsoleOperations.WriteToConsole("Problem in fetching source page: " + pageName + " at: " + sourceContext.Web.Url + ex.Message, ConsoleColor.Red);
                    Logger.LogError("Problem in fetching source page: " + pageName + " at: " + sourceContext.Web.Url + ex.Message);
                }

                if (!string.IsNullOrEmpty(Convert.ToString(sourceItem[Constants.PromotedState])))
                {
                    if (Convert.ToInt32(sourceItem[Constants.PromotedState]) == 2)
                    {
                        newClientSidePage.PromoteAsNewsArticle();
                    }
                }
                newClientSidePage.Save();

                targetItem = newClientSidePage.PageListItem;

                targetContext.Load(targetItem, i => i.DisplayName);
                targetContext.ExecuteQueryWithIncrementalRetry(RetryCount, Delay);

                AddContent(targetContext, targetItem, sourceItem, Constants.ModernPageContentControl);

                if (targetItem != null && sourceItem.HasUniqueRoleAssignments)
                {
                    ManagePermissions(sourceContext, targetContext, sourceItem, targetItem);
                }

                UpdateSystemFields(targetContext, targetItem, sourceItem);

                //newClientSidePage.Publish();
            }
            catch (Exception ex)
            {
                Logger.LogError("Error in CreatePageWithWebParts for ModernPage " + pageName + Environment.NewLine + ex.Message);
                ConsoleOperations.WriteToConsole("Exception in migrating the page: " + pageName + " on " + sourceContext.Web.Url, ConsoleColor.Red);
                //throw ex;
            }
            //AddControls(sourceContext, newClientSidePage, pageName);


            //var webpartList = WebPartOperation.ExportWebPart(sourceContext, sourceItem.File);
            //WebPartOperation.ImportWebParts(targetContext, web, webpartList, newClientSidePage.PageListItem.File);

            return(targetItem);
        }