public Salesperson ReadSalespersonFromDataFile()
        {
            Salesperson salesperson = new Salesperson();


            //Initialize a Filestream Object
            StreamReader sr = new StreamReader(_dataFilePath);


            //Initialize XML serilizer object
            XmlSerializer deserializer = new XmlSerializer(typeof(Salesperson));


            using (sr)
            {
                object xmlObj = deserializer.Deserialize(sr);


                Console.WriteLine(xmlObj);


                salesperson = (Salesperson)xmlObj;
            }


            return(salesperson);
        }
Exemple #2
0
        /// <summary>
        /// setup the new salesperson object with the initial data
        /// Note: To maintain the pattern of only the Controller changing the data this method should
        ///       return a Salesperson object with the initial data to the controller. For simplicity in
        ///       this demo, the ConsoleView object is allowed to access the Salesperson object's properties.
        /// </summary>
        public Salesperson DisplaySetupAccount()
        {
            Salesperson salesperson = new Salesperson();

            ConsoleUtil.HeaderText = "Account Setup";
            ConsoleUtil.DisplayReset();

            ConsoleUtil.DisplayPromptMessage("Enter your First Name: ");
            salesperson.FirstName = Console.ReadLine();
            ConsoleUtil.DisplayMessage("");

            ConsoleUtil.DisplayPromptMessage("Enter your Last Name: ");
            salesperson.LastName = Console.ReadLine();
            ConsoleUtil.DisplayMessage("");

            ConsoleUtil.DisplayPromptMessage("Enter your Account ID: ");
            salesperson.AccountID = Console.ReadLine();
            ConsoleUtil.DisplayMessage("");

            ConsoleUtil.DisplayPromptMessage("Enter your Starting City: ");
            salesperson.StartingCity = Console.ReadLine();
            ConsoleUtil.DisplayMessage("");

            ConsoleUtil.DisplayReset();
            ConsoleUtil.DisplayMessage("Your account is setup.");

            DisplayContinuePrompt();

            return(salesperson);
        }
        private void ManageMainMenuScreen()
        {
            MenuOption userMenuChoice;

            _consoleView.DisplayWelcomeScreen();

            userMenuChoice = _consoleView.MainMenu();

            switch (userMenuChoice)
            {
            case MenuOption.None:
                break;

            case MenuOption.SetupAccount:
                _salesperson = _consoleView.DisplaySetupAccount();

                ManageApplicationLoop();
                break;

            case MenuOption.StartFromSave:
                DisplayLoadAccountInfo();
                ManageApplicationLoop();
                break;

            case MenuOption.Exit:
                break;

            default:
                ConsoleUtil.DisplayMessage("I have no words that explain how amazed I am you got this to display");
                break;
            }
        }
        /// <summary>
        /// display load account information
        /// </summary>
        private void DisplayLoadAccountInfo()
        {
            bool maxAttemptsExceeded = false;
            bool loadAccountInfo     = false;

            //
            // note: rather than pass null value, method is overloaded
            //
            if (_salesperson.AccountID != "")
            {
                loadAccountInfo = _consoleView.DisplayLoadAccountInfo(_salesperson, out maxAttemptsExceeded);
            }
            else
            {
                loadAccountInfo = _consoleView.DisplayLoadAccountInfo(out maxAttemptsExceeded);
            }

            if (loadAccountInfo && !maxAttemptsExceeded)
            {
                //CsvServices csvServices = new CsvServices(DataSettings.dataFilePathCsv);
                XmlServices xmlServices = new XmlServices(DataSettings.dataFilePathXml);

                //_salesperson = csvServices.ReadSalespersonFromDataFile();
                _salesperson = xmlServices.ReadSalespersonFromDataFile();

                _consoleView.DisplayConfirmLoadAccountInfo(_salesperson);
            }
        }
        public bool DisplaySaveAccountInfo(Salesperson salesperson, out bool maxAttemptsExceeded)
        {
            string userResponse;

            maxAttemptsExceeded = false;

            ConsoleUtil.HeaderText = "Save Account";
            ConsoleUtil.DisplayReset();

            ConsoleUtil.DisplayMessage("The current account information.");
            DisplayAccountInfo(salesperson, false);

            ConsoleUtil.DisplayMessage("");
            userResponse = ConsoleValidator.GetYesNoFromUser(MAXIMUM_ATTEMPTS, "Save the account information?", out maxAttemptsExceeded);

            if (maxAttemptsExceeded)
            {
                ConsoleUtil.DisplayMessage("It appears you are having difficulty. You will return to the main menu.");
                return(false);
            }
            else
            {
                //
                // Note use of ternary operator.
                //
                return(userResponse.ToLower() == "yes" ? true : false);
            }
        }
        /// <summary>
        /// setup the new salesperson object with the initial data
        /// Note: To maintain the pattern of only the Controller changing the data this method should
        ///       return a Salesperson object with the initial data to the controller. For simplicity in
        ///       this demo, the ConsoleView object is allowed to access the Salesperson object's properties.
        /// </summary>
        public Salesperson DisplaySetupAccount()
        {
            Salesperson salesperson = new Salesperson();

            ConsoleUtil.HeaderText = "Account Setup";
            ConsoleUtil.DisplayReset();

            ConsoleUtil.DisplayMessage("Setup your account now.");
            ConsoleUtil.DisplayMessage("");

            salesperson.FirstName = ValidateString("Enter your First Name: ", "Unknown", out bool attemptsExceeded, 3);
            ConsoleUtil.DisplayMessage("");

            salesperson.LastName = ValidateString("Enter your Last Name: ", "Unknown", out attemptsExceeded, 3);
            ConsoleUtil.DisplayMessage("");

            salesperson.Age = ValidateInt("Enter your age: ", out attemptsExceeded, 3);
            ConsoleUtil.DisplayMessage("");

            salesperson.AccountID = ValidateString("Enter your Account ID: ", "Unknown", out attemptsExceeded, 3);
            ConsoleUtil.DisplayMessage("");

            DisplayAddInventory(salesperson);

            ConsoleUtil.DisplayMessage("");

            ConsoleUtil.DisplayReset();

            ConsoleUtil.DisplayMessage("Your account is setup");

            DisplayContinuePrompt();

            return(salesperson);
        }
        public bool DisplaySaveAccountInfo(Salesperson _salesperson, out bool maxAttemptsExceeded)
        {
            maxAttemptsExceeded = false;
            string userResponse;

            ConsoleUtil.HeaderText = "Save Account";
            ConsoleUtil.DisplayReset();

            ConsoleUtil.DisplayMessage("The current account info.");
            DisplayAccountInfo(_salesperson);

            ConsoleUtil.DisplayMessage("");
            userResponse = ConsoleValidator.GetYesNoFromUser(maxAttempts, "Save account info?", out maxAttemptsExceeded);

            if (maxAttemptsExceeded)
            {
                ConsoleUtil.DisplayMessage("It appears you are having difficult, we will return you" +
                                           "to the main menu");
                return(false);
            }
            else
            {
                return(userResponse == "yes" ? true : false);
            }
        }
        public Salesperson DisplaySetupAccount()
        {
            Salesperson salesperson = new Salesperson();

            ConsoleUtil.HeaderText = "Account Setup";
            ConsoleUtil.DisplayReset();

            ConsoleUtil.DisplayMessage("Setup your account now.");
            ConsoleUtil.DisplayMessage("");

            ConsoleUtil.DisplayPromptMessage("Enter your first name: ");
            salesperson.FirstName = Console.ReadLine();
            ConsoleUtil.DisplayMessage("");

            ConsoleUtil.DisplayPromptMessage("Enter your last name: ");
            salesperson.LastName = Console.ReadLine();
            ConsoleUtil.DisplayMessage("");

            ConsoleUtil.DisplayPromptMessage("Enter your account ID: ");
            salesperson.AccountID = Console.ReadLine();
            ConsoleUtil.DisplayMessage("");

            ConsoleUtil.DisplayMessage("Product Types");
            ConsoleUtil.DisplayMessage("");

            ConsoleUtil.DisplayMessage("");

            ConsoleUtil.DisplayReset();

            ConsoleUtil.DisplayMessage("Your account is setup");

            DisplayContinuePrompt();

            return(salesperson);
        }
        /// <summary>
        /// display the current account information
        /// </summary>

        public void DisplayAccountInfo(Salesperson salesperson)
        {
            ConsoleUtil.HeaderText = "Account Info";
            ConsoleUtil.DisplayReset();

            ConsoleUtil.DisplayMessage("First Name: " + salesperson.FirstName);
            ConsoleUtil.DisplayMessage("Last Name: " + salesperson.LastName);
            ConsoleUtil.DisplayMessage("Account ID: " + salesperson.AccountID);
            ConsoleUtil.DisplayMessage("Product Type: " + salesperson.Inventory.Type);
            ConsoleUtil.DisplayMessage("Current Inventory: " + salesperson.Inventory.NumberOfUnits);
            ConsoleUtil.DisplayMessage("Age: " + salesperson.Age);
            ConsoleUtil.DisplayMessage("Cities traveled:");

            foreach (string city in salesperson.CitiesVisited)
            {
                ConsoleUtil.DisplayMessage(city);
            }

            if (salesperson.IsHockeyFan)
            {
                ConsoleUtil.DisplayMessage("Is a hockey fan, NICE.");
            }
            else
            {
                ConsoleUtil.DisplayMessage("Is not a hockey fan, LAME.");
            }

            DisplayContinuePrompt();
        }
Exemple #10
0
        public void WriteJsonFile(Salesperson salesperson)
        {
            StreamWriter sWriter;

            try
            {
                sWriter = new StreamWriter(DataSettings.dataFilePathJson);
            }
            catch (UnauthorizedAccessException ex)
            {
                Console.WriteLine("You need more permissions to run the application. Try running it as an admin.");
                Console.WriteLine(ex);
                throw;
            }
            catch (DirectoryNotFoundException)
            {
                File.Create(DataSettings.dataFilePathJson);
                sWriter = new StreamWriter(DataSettings.dataFilePathJson);
            }
            catch (PathTooLongException)
            {
                Console.WriteLine("The path is too long.");
                throw;
            }

            using (sWriter)
            {
                sWriter.Write(JsonConvert.SerializeObject(salesperson, Formatting.Indented));
            }
        }
Exemple #11
0
 private void DisplaySetupAccount()
 {
     //
     // setup initial salesperson account
     //
     _salesperson = _consoleView.DisplaySetupAccount();
     _salesperson.Logs.Push(DateTime.Now + " ... Account Created!");
 }
Exemple #12
0
        /// <summary>
        /// method to manage the application setup and control loop
        /// </summary>
        private void ManageApplicationLoop()
        {
            MenuOption userMenuChoice;

            _consoleView.DisplayWelcomeScreen();

            //
            // setup initial salespersons account
            //
            _salesperson = _consoleView.DisplaySetupAccount();

            //
            // application loop
            //
            while (_usingApplication)
            {
                //
                // get a menu choice from the user
                //
                userMenuChoice = _consoleView.DisplayGetUserMenuChoice();

                //
                // choose an action based on the user menu choice
                //
                switch (userMenuChoice)
                {
                case MenuOption.None:
                    break;

                case MenuOption.Travel:
                    Travel();
                    break;

                case MenuOption.DisplayCities:
                    DisplayCities();
                    break;

                case MenuOption.DisplayAccountInfo:
                    DisplayAccountInfo();
                    break;

                case MenuOption.Exit:
                    _usingApplication = false;
                    break;

                default:
                    break;
                }
            }

            _consoleView.DisplayClosingScreen();

            //
            // close the application
            //
            Environment.Exit(1);
        }
        /// <summary>
        /// display the current account information
        /// </summary>
        ///         /// <param name="salesperson">Salesperson object</param>
        public void DisplayAccountInfo(Salesperson salesperson)
        {
            ConsoleUtil.HeaderText = "Account Info";
            ConsoleUtil.DisplayReset();

            DisplayAccountDetail(salesperson);

            DisplayContinuePrompt();
        }
        public void DisplayConfirmLoadAccountInfo(Salesperson salesperson)
        {
            ConsoleUtil.HeaderText = "Load Account";
            ConsoleUtil.DisplayReset();

            ConsoleUtil.DisplayMessage("Account information loaded.");

            DisplayAccountInfo(salesperson, false);
        }
        public Controller()
        {
            InitializeController();

            _consoleView = new ConsoleView();

            _salesperson = new Salesperson();

            ManageApplicationLoop();
        }
        public void WriteSalespersonToDataFile(Salesperson salesperson)
        {
            string salespersonData;
            char   delineator = ',';

            StringBuilder sb = new StringBuilder();

            //
            // add salesperson and product info to string
            //
            sb.Clear();
            sb.Append(salesperson.FirstName + delineator);
            sb.Append(salesperson.LastName + delineator);
            sb.Append(salesperson.AccountID + delineator);
            sb.Append(salesperson.CurrentStock.Type.ToString() + delineator);
            sb.Append(salesperson.CurrentStock.NumberOfUnits.ToString() + delineator);
            sb.Append(salesperson.CurrentStock.OnBackorder.ToString());
            sb.Append(Environment.NewLine);

            //
            // add cities traveled to the string
            //
            foreach (string city in salesperson.CitiesVisited)
            {
                sb.Append(city + delineator);
            }

            //
            // remove the last delineator
            //
            if (sb.Length != 0)
            {
                sb.Length--;
            }

            //
            // convert StringBuilder object to a string
            //
            salespersonData = sb.ToString();

            // initialize a FileStream object for writing
            FileStream wfileStream = File.OpenWrite(DataSettings.dataFilePathCsv);

            // wrap the FieldStream object in a using statement to ensure of the dispose
            using (wfileStream)
            {
                // wrap the FileStream object in a StreamWriter object to simplify writing strings
                StreamWriter sWriter = new StreamWriter(wfileStream);

                using (sWriter)
                {
                    sWriter.Write(salespersonData);
                }
            }
        }
Exemple #17
0
        public void ManageApplicationLoop()
        {
            MenuOption userMenuChoice;

            _consoleView.DisplayWelcomeScreen();

            _salesperson = _consoleView.DisplaySetupAccount();

            while (_usingApplication)
            {

                userMenuChoice = _consoleView.DisplayGetUserMenuChoice();

                switch (userMenuChoice)
                {
                    case MenuOption.None:
                        break;
                    case MenuOption.Travel:
                        Travel();
                        break;
                    case MenuOption.Buy:
                        Buy();
                        break;
                    case MenuOption.Sell:
                        Sell();
                        break;
                    case MenuOption.DisplayInventory:
                        DisplayInventory();
                        break;
                    case MenuOption.DisplayCities:
                        DisplayCities();
                        break;
                    case MenuOption.DisplayAccountInfo:
                        DisplayAccountInfo();
                        break;
                    case MenuOption.SaveAccountInfo:
                        SaveAccountInfo();
                        break;
                    case MenuOption.LoadAccountInfo:
                        LoadAccountInfo();
                        break;
                    case MenuOption.Exit:
                        _usingApplication = false;
                        break;
                    default:
                        break;
                }
            }

            _consoleView.DisplayClosingScreen();

            Environment.Exit(1);

        }
Exemple #18
0
        /// <summary>
        /// display the current account information
        /// </summary>
        public void DisplayAccountInfo(Salesperson salesperson)
        {
            ConsoleUtil.HeaderText = "Account Info";
            ConsoleUtil.DisplayReset();

            ConsoleUtil.DisplayMessage("First Name: " + salesperson.FirstName);
            ConsoleUtil.DisplayMessage("Last Name: " + salesperson.LastName);
            ConsoleUtil.DisplayMessage("Account ID: " + salesperson.AccountID);

            DisplayContinuePrompt();
        }
        /// <summary>
        /// tells user of successful save of account and travel info
        /// </summary>
        /// <param name="_salesperson"></param>
        public void DisplayConfirmSaveAccountInfo(Salesperson _salesperson)
        {
            ConsoleUtil.HeaderText = "Save Account";
            ConsoleUtil.DisplayReset();

            ConsoleUtil.DisplayMessage("Account information has been successfully saved\n");

            DisplayAccountDetails(_salesperson);

            DisplayContinuePrompt();
        }
Exemple #20
0
        public void DisplayProdToBuyandSell(Salesperson salesperson)
        {
            ConsoleUtil.HeaderText = "Choosing another product";
            ConsoleUtil.DisplayReset();
            Product.ProductType oldProduct = new Product.ProductType();

            oldProduct = salesperson.CurrentStock.Type;

            int attempts = 0;

            bool productSelected = false;

            while (MAXIMUM_ATTEMPTS > attempts && !productSelected)
            {
                ConsoleUtil.DisplayMessage("Enter on of the following products to buy and sell: ");
                ConsoleUtil.DisplayPromptMessage(Product.ProductType.Dancing.ToString() +
                                                 " " + Product.ProductType.Furry.ToString() + " " + Product.ProductType.Spotted.ToString() + " : ");
                string ProductType = Console.ReadLine();
                switch (UppercaseFirst(ProductType))
                {
                case "Furry":
                    salesperson.CurrentStock.Type = Product.ProductType.Furry;
                    productSelected = true;
                    break;

                case "Dancing":
                    salesperson.CurrentStock.Type = Product.ProductType.Dancing;
                    productSelected = true;
                    break;

                case "Spotted":
                    salesperson.CurrentStock.Type = Product.ProductType.Spotted;
                    productSelected = true;
                    break;

                default:
                    ConsoleUtil.DisplayMessage("You did not enter one of the Available products");
                    salesperson.CurrentStock.Type = Product.ProductType.None;
                    break;
                }
                attempts++;
            }

            if (oldProduct == salesperson.CurrentStock.Type)
            {
                ConsoleUtil.DisplayMessage("You decided not change the product you were selling");
            }
            else if (oldProduct != salesperson.CurrentStock.Type)
            {
                ConsoleUtil.DisplayMessage("You discard your " + oldProduct.ToString() + " product to make room for " + salesperson.CurrentStock.Type + " product.");
                salesperson.CurrentStock.ResetProductAmount();
            }
            DisplayContinuePrompt();
        }
Exemple #21
0
        public void WriteSalespersonToDataFile(Salesperson salesperson)
        {
            XmlSerializer serializer = new XmlSerializer(typeof(Salesperson), new XmlRootAttribute("Salesperson"));

            StreamWriter sWriter = new StreamWriter(_dataFilePath);

            using (sWriter)
            {
                serializer.Serialize(sWriter, salesperson);
            }
        }
Exemple #22
0
        public void DisplayConfirmLoadAccountInfo(Salesperson salesperson)
        {
            ConsoleUtil.HeaderText = "Load Account";
            ConsoleUtil.DisplayReset();

            ConsoleUtil.DisplayMessage("Account information loaded");

            DisplayAccountDetail(salesperson);

            DisplayContinuePrompt();
        }
        /// <summary>
        /// display a list of the cities traveled
        /// </summary>

        public void DisplayCitiesTraveled(Salesperson salesperson)
        {
            ConsoleUtil.HeaderText = "Cities Traveled";
            ConsoleUtil.DisplayReset();

            foreach (string city in salesperson.CitiesVisited)
            {
                ConsoleUtil.DisplayMessage(city);
            }

            DisplayContinuePrompt();
        }
        public void DisplayLogs(Salesperson salesperson)
        {
            ConsoleUtil.HeaderText = "Logs";
            ConsoleUtil.DisplayReset();

            foreach (string log in salesperson.Logs)
            {
                ConsoleUtil.DisplayMessage(log);
            }

            DisplayContinuePrompt();
        }
Exemple #25
0
        private void ReadAccountInfo()
        {
            bool active;

            active = _consoleView.DisplayLoadAccountInfo(out bool attempted, _jsonService.ReadJsonFile());
            if (active)
            {
                _salesperson = _jsonService.ReadJsonFile();
                _consoleView.DisplayConfirmLoadAccountInfo(_salesperson);
                _salesperson.Logs.Push(DateTime.Now + " ... Account Information Loaded!");
            }
        }
Exemple #26
0
        public Salesperson ReadJsonFile()
        {
            Salesperson  salesPerson = new Salesperson();
            StreamReader sReader     = new StreamReader(DataSettings.dataFilePathJson);

            using (sReader)
            {
                salesPerson = JsonConvert.DeserializeObject <Salesperson>(sReader.ReadToEnd());
            }

            return(salesPerson);
        }
        /// <summary>
        /// display the inventory information to the user
        /// </summary>
        /// <param name="_salesperson"></param>

        public void DisplayInventory(Salesperson _salesperson)
        {
            ConsoleUtil.HeaderText = "Current Inventory";
            ConsoleUtil.DisplayReset();

            if (_salesperson.Inventory.OnBackorder == true)
            {
                DisplayBackOrderNotification(_salesperson, _salesperson.Inventory.NumberOfUnits);
            }

            ConsoleUtil.DisplayMessage($"Current Inventory: {_salesperson.Inventory.NumberOfUnits} {_salesperson.Inventory.Type} units.");

            DisplayContinuePrompt();
        }
Exemple #28
0
        public static void SaveAccountInfo(Salesperson salesperson)
        {
            // instantiate an XmlSerializer object with the object class
            XmlSerializer serializer = new XmlSerializer(typeof(Salesperson));

            // instantiate a StreamWriter object with the data file loation
            StreamWriter sWriter = new StreamWriter("AccountInfo.xml");

            // write the serialized data to the xml file
            using (sWriter)
            {
                serializer.Serialize(sWriter, salesperson);
            }
        }
Exemple #29
0
        /// <summary>
        /// Display all cities traveled to in chronological order
        /// </summary>
        /// <param name="salesperson"></param>
        public void DisplayCitiesTraveled(Salesperson salesperson)
        {
            ConsoleUtil.HeaderText = "CitiesVisited";
            ConsoleUtil.DisplayReset();
            ConsoleUtil.DisplayMessage("Cities you have visited:");
            int inc = 0;

            foreach (string city in salesperson.CitiesVisited)
            {
                inc++;
                ConsoleUtil.DisplayMessage(inc + ". " + city);
            }
            DisplayContinuePrompt();
        }
        /// <summary>
        /// display a list of the cities traveled
        /// </summary>
        public void DisplayCitiesTraveled(Salesperson salesperson)
        {
            ConsoleUtil.DisplayReset();

            ConsoleUtil.DisplayMessage("You have traveled to the following cities.");
            ConsoleUtil.DisplayMessage("");

            foreach (string city in salesperson.CitiesVisited)
            {
                ConsoleUtil.DisplayMessage(city);
            }

            DisplayContinuePrompt();
        }