示例#1
0
        public void OptionBuilder_CreateOption_Command_Found_No_SubCommands()
        {
            string expectedCommand         = "Storage";
            int    expectedNumberOfOptions = 0;

            string environmentSetting = $"{{\"UseLiveClient\": \"True\"}}";
            NullLogger <Microsoft.Extensions.Logging.ILogger> logger = new NullLogger <Microsoft.Extensions.Logging.ILogger>();

            BuildEnvironment(environmentSetting);

            CfgCommand command = TestDataBuilder.CreateCfgCommand(expectedCommand);

            CfgCommandList commandList = new CfgCommandList();

            commandList.Commands = new List <CfgCommand>();
            commandList.Commands.Add(command);

            OptionBuilder builder = OptionBuilder.Instance(logger);

            builder.CfgCommands = commandList;

            GetDataHandler handler = new GetDataHandler(new NullLogger <GetDataHandler>());

            List <IOption> selectableOptions = builder.BuildAvailableOptions(handler);

            Assert.AreEqual(expectedNumberOfOptions, selectableOptions.Count);
        }
示例#2
0
        /// <summary>
        /// NetMQ 订阅端
        /// </summary>
        public static void Start()
        {
            var rng     = new Random();
            int zipcode = rng.Next(0, 99);

            Console.WriteLine("接收本地天气预报{0}……", zipcode);

            OnGetData += new GetDataHandler(ProcessData);

            using (var context = NetMQContext.Create())
            {
                using (var subscriber = context.CreateSubscriberSocket())
                {
                    subscriber.Connect("tcp://127.0.0.1:5556");
                    subscriber.Subscribe(zipcode.ToString(CultureInfo.InvariantCulture));
                    //subscriber.Subscribe("");

                    while (true)
                    {
                        string results = subscriber.ReceiveFrameString(Encoding.UTF8);
                        Console.WriteLine(".");

                        string[] split = results.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

                        int zip = int.Parse(split[0]);
                        if (zip == zipcode)
                        {
                            OnGetData(results);
                        }
                    }
                }
            }
        }
示例#3
0
        /// <summary>
        /// 初始缓存信息
        /// </summary>
        /// <param name="key"></param>
        /// <param name="minute">过期时间,单位分</param>
        /// <param name="handler">委托</param>
        public static T Init <T>(string key, double minute, GetDataHandler <T> handler)
        {
            var a         = caches.TryGetValue(key, out CacheObj data);
            var doHandler = false;

            if (!a)
            {
                doHandler = true;
            }
            if (a && data.expTime < DateTime.Now)
            {
                doHandler = true;
            }
            if (!doHandler)
            {
                return((T)data.data);
            }
            var obj = handler();

            data = new CacheObj()
            {
                data = obj, expTime = DateTime.Now.AddMinutes(minute)
            };
            caches.TryRemove(key, out CacheObj obj2);
            caches.TryAdd(key, data);
            return(obj);
        }
示例#4
0
        public GetDataModule(GetDataHandler handler)
        {
            this.handler = handler;

            Get["/servers/{endpoint:url}/Info", true] = async(x, _)
                                                        => await GetServerAsync(x.endpoint);

            Get["/servers/{endpoint:url}/matches/{timestamp:utc_timestamp}", true] = async(x, _)
                                                                                     => await GetMatchAsync(x.endpoint, x.timestamp);

            Get["/servers/Info", true] = async(x, _)
                                         => await GetServersAsync();
        }
示例#5
0
        public void OptionBuilder_CreateOption_Command_Found_One_Option()
        {
            string expectedCommand     = "Storage";
            string expectedSubCommand  = "GetData";
            string expectedOption      = "TestOption";
            string expectedDataType    = "string";
            string expectedDescription = "Option test description";
            string expectedApiName     = "TestApiName";

            int expectedNumberOfOptions = 1;

            string environmentSetting = $"{{\"UseLiveClient\": \"True\"}}";
            NullLogger <Microsoft.Extensions.Logging.ILogger> logger = new NullLogger <Microsoft.Extensions.Logging.ILogger>();

            BuildEnvironment(environmentSetting);

            CfgCommand    command    = TestDataBuilder.CreateCfgCommand(expectedCommand);
            CfgSubCommand subCommand = TestDataBuilder.CreateCfgSubCommand(expectedSubCommand);

            command.SubCommands.Add(subCommand);
            CfgOption option = TestDataBuilder.CreateCfgOption(expectedOption, expectedDataType, expectedDescription, expectedApiName);

            subCommand.Options.Add(option);

            CfgCommandList commandList = new CfgCommandList();

            commandList.Commands = new List <CfgCommand>();
            commandList.Commands.Add(command);

            OptionBuilder builder = OptionBuilder.Instance(logger);

            builder.CfgCommands = commandList;

            GetDataHandler handler = new GetDataHandler(new NullLogger <GetDataHandler>());

            List <IOption> selectableOptions = builder.BuildAvailableOptions(handler);

            Assert.AreEqual(expectedNumberOfOptions, selectableOptions.Count);
            IOption selectableOption = selectableOptions[0];

            Assert.AreEqual(expectedOption, selectableOption.Name);
            Assert.AreEqual(expectedDescription, selectableOption.Description);
            Assert.AreEqual(expectedApiName, selectableOption.ApiName);
            Assert.IsFalse(selectableOption.IsAssigned);
            Assert.IsInstanceOfType(selectableOption, typeof(NumberOption <string>));
        }
示例#6
0
        public void InitThread()
        {
            GetDataHandler getdata = new GetDataHandler(GetData);

            Thread1 = new Thread(new ThreadStart(getdata));

            DealDataHandler dealdata = new DealDataHandler(DealData);

            Thread2 = new Thread(new ThreadStart(dealdata));

            ConvertDataHandler convertdata = new ConvertDataHandler(ConvertData);

            Thread3 = new Thread(new ThreadStart(convertdata));

            ShowDataHandler showdata = new ShowDataHandler(ShowData);

            Thread4 = new Thread(new ThreadStart(showdata));
        }
示例#7
0
        public void OptionBuilder_CreateOption_Command_Found_One_Option_AssignValue()
        {
            string expectedOption      = "TestOption";
            string expectedDataType    = "string";
            string expectedDescription = "Option test description";
            string expectedApiName     = "TestApiName";
            string expectedValue       = "TestValue";

            int expectedNumberOfOptions = 1;

            string environmentSetting          = $"{{\"UseLiveClient\": \"True\"}}";
            NullLogger <GetDataHandler> logger = new NullLogger <GetDataHandler>();

            BuildEnvironment(environmentSetting);

            OptionBuilder  builder           = OptionBuilder.Instance(logger);
            List <IOption> selectableOptions = new List <IOption>();

            selectableOptions.Add(TestDataBuilder.CreateOption(expectedOption, expectedDataType, expectedDescription, expectedApiName));
            Dictionary <string, string> cliOptions = new Dictionary <string, string>();

            cliOptions.Add(expectedOption, expectedValue);

            ISubCommandHandler subCommandHandler = new GetDataHandler(logger)
            {
                SelectableCliOptions = selectableOptions,
                DictOptions          = cliOptions
            };

            bool isValid = builder.AssignValueToCliOptions(subCommandHandler);

            Assert.IsTrue(isValid);
            Assert.AreEqual(expectedNumberOfOptions, subCommandHandler.SelectableCliOptions.Count);
            IOption selectableOption = subCommandHandler.SelectableCliOptions[0];

            Assert.AreEqual(expectedOption, selectableOption.Name);
            Assert.AreEqual(expectedDescription, selectableOption.Description);
            Assert.AreEqual(expectedApiName, selectableOption.ApiName);
            Assert.IsTrue(selectableOption.IsAssigned);
            Assert.AreEqual(expectedValue, selectableOption.Value);

            Assert.IsInstanceOfType(selectableOption, typeof(NumberOption <String>));
        }
示例#8
0
        public void OptionBuilder_CreateOption_No_Commands()
        {
            int    expectedNumberOfOptions = 0;
            string environmentSetting      = $"{{\"UseLiveClient\": \"True\"}}";
            NullLogger <Microsoft.Extensions.Logging.ILogger> logger = new NullLogger <Microsoft.Extensions.Logging.ILogger>();

            BuildEnvironment(environmentSetting);

            // Not commands in the Log
            CfgCommandList commandList = new CfgCommandList();
            OptionBuilder  builder     = OptionBuilder.Instance(logger);

            builder.CfgCommands = commandList;

            GetDataHandler handler = new GetDataHandler(new NullLogger <GetDataHandler>());

            List <IOption> selectableOptions = builder.BuildAvailableOptions(handler);

            Assert.AreEqual(expectedNumberOfOptions, selectableOptions.Count);
        }
示例#9
0
        /// <summary>
        /// 初始缓存信息
        /// </summary>
        /// <param name="key"></param>
        /// <param name="minute">过期时间,单位分</param>
        /// <param name="handler">委托</param>
        public static T Init <T>(string key, double minute, GetDataHandler <T> handler)
        {
            key = "DelegateCache&" + key;
            var cache    = System.Web.HttpRuntime.Cache;
            var cacheObj = cache.Get(key);

            if (cacheObj != null)
            {
                return((T)cacheObj);
            }
            lock (lockObj)
            {
                cacheObj = handler();
                if (cacheObj == null)
                {
                    return(default(T));
                }
                cache.Insert(key, cacheObj, null, DateTime.Now.AddSeconds(minute * 60), System.Web.Caching.Cache.NoSlidingExpiration);
            }
            return((T)cacheObj);
        }
示例#10
0
        protected void InitTable(string tableName, string data, int rowsPerPage, string pageUpButtonName,
                                 string pageDownButtonName, ParseDataHandler parseData, ShowDataHandler showData, ClearDataHandler clearData, GetDataHandler getData)
        {
            lock (this)
            {
                if (!mTableInfos.ContainsKey(tableName))
                {
                    if (parseData == null)
                    {
                        throw new Exception("解析函数不能为空");
                    }
                    else if (showData == null)
                    {
                        throw new Exception("显示函数不能为空");
                    }
                    else if (clearData == null)
                    {
                        throw new Exception("清除函数不能为空");
                    }

                    if (!string.IsNullOrEmpty(data))
                    {
                        TableInfo info = new TableInfo();
                        if (rowsPerPage > 0)
                        {
                            info.mRowsPerPage = rowsPerPage;
                        }
                        info.mCurrentPage    = 1;
                        info.mTotalPage      = (info.mTotalCount + info.mRowsPerPage - 1) / info.mRowsPerPage;
                        info.mCurrentContent = new List <string[]>();
                        info.mPageUpButton   = pageUpButtonName;
                        info.mPageDownButton = pageDownButtonName;
                        info.ParseData       = parseData;
                        info.ShowData        = showData;
                        info.ClearData       = clearData;
                        info.mAllContent     = new List <string[]>();
                        List <string[]> dataList = info.ParseData(data);
                        if (dataList != null)
                        {
                            for (int i = 0; i < dataList.Count; i++)
                            {
                                info.mAllContent.Add(dataList[i]);
                            }
                        }
                        info.mTotalCount = info.mAllContent.Count;
                        info.GetData     = defaultGetData;
                        if (getData != null)
                        {
                            info.GetData = getData;
                        }
                        mTableInfos.Add(tableName, info);
                        if (!string.IsNullOrEmpty(info.mPageUpButton) && !mMaps.ContainsKey(info.mPageUpButton))
                        {
                            mMaps.Add(info.mPageUpButton, info);
                        }
                        if (!string.IsNullOrEmpty(info.mPageDownButton) && !mMaps.ContainsKey(info.mPageDownButton))
                        {
                            mMaps.Add(info.mPageDownButton, info);
                        }
                        updateContent(info);
                    }
                }
            }
        }
示例#11
0
        public static void ManagerMenu(StoreAppContext context, int manager)
        {
            Logic.Customer newCust      = new Logic.Customer();
            GetDataHandler getDBHandler = new GetDataHandler();
            InputDBHandler Inputhandler = new InputDBHandler();

            Logic.Customer getCustomer = new Logic.Customer();
            Logic.Store    getStore    = new Logic.Store();
            Logic.Order    order       = new Logic.Order();
            Logic.Product  items       = new Logic.Product();
            List <Order>   orderList   = new List <Order>();

            bool managerMenu = true;
            bool nextMenu    = false;

            while (managerMenu)
            {
                switch (manager)
                {
                /// <summary>
                /// View Orders History of A Store
                /// </summary>

                case 1:
                    Console.WriteLine("Please Choose A Store:");
                    Console.WriteLine("1. Arlington,TX\n5. Houston,TX\n3. Exit");
                    int storeId = Int32.Parse(Console.ReadLine());

                    if (storeId == 3)
                    {
                        Console.WriteLine("Manager's Options:");
                        Console.WriteLine("1. View Order History Of A Store\n2. Add New Items To Stores\n3. Switch To Customer Menu \n4. Stop");
                        manager = Int32.Parse(Console.ReadLine());
                    }

                    nextMenu = true;
                    while (nextMenu)
                    {
                        try
                        {
                            getStore = getDBHandler.GetStoreFromStoreId(storeId, context);
                            Console.WriteLine("Store Address {0}, {1}, {2}, {3}", getStore.address.street, getStore.address.city, getStore.address.state, getStore.address.zip);
                            Console.WriteLine("Ariel: {0}, Downie: {1}, Suavitel: {2}", getStore.storeInventory.items.NumberofAriel, getStore.storeInventory.items.NumberofDownie, getStore.storeInventory.items.NumberofSuavitel);
                            var enityOrder = context.Orders.Where(order => order.StoreId == storeId).ToList();
                            foreach (var row in enityOrder)
                            {
                                var cust = getDBHandler.GetCustomerDataFromID(row.CustomerId, context);

                                Console.WriteLine("------------------------------------------------------------");
                                Console.WriteLine("Order Id: {0} \nCustomer Id: {1}", row.OrderId, row.CustomerId);
                                Console.WriteLine("Customer Name: " + cust.firstName + " " + cust.lastName);
                                Console.WriteLine("Ariel: {0}, \nDownie: {1} \nSuavitel: {2}", row.Ariel, row.Downie, row.Suavitel);
                                Console.WriteLine();
                            }

                            nextMenu = false;
                            Console.WriteLine("Manager's Options:");
                            Console.WriteLine("1. View Order History Of A Store\n2. Add New Items To Stores\n3. Search User Information By Name \n4. Exit Main Menu \n5.Stop");
                            manager = Int32.Parse(Console.ReadLine());
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine("Error finding store with input store");
                            //error handling
                            Log.Warning("Invalid Store ID");
                            break;
                        }
                    }
                    break;

                /// <summary>
                /// Add new Items
                /// </summary>

                case 2:
                    Console.WriteLine("Please Choose A Store:");
                    Console.WriteLine("1. Arlington,TX\n5. Houston,TX\n3. Exit");
                    storeId = Int32.Parse(Console.ReadLine());
                    if (storeId == 3)
                    {
                        Console.WriteLine("Manager's Options:");
                        Console.WriteLine("1. View Order History Of A Store\n2. Add New Items To Stores\n3. Search User Information By Name \n4. Switch To Customer \n5.Stop");
                        manager = Int32.Parse(Console.ReadLine());
                    }

                    try
                    {
                        getStore = getDBHandler.GetStoreFromStoreId(storeId, context);
                        Console.WriteLine("Store Address {0}, {1}, {2}, {3}", getStore.address.street, getStore.address.city, getStore.address.state, getStore.address.zip);
                        Console.WriteLine("Inventory:\nAriel: {0}, Downie: {1}, Suavitel: {2}", getStore.storeInventory.items.NumberofAriel, getStore.storeInventory.items.NumberofDownie, getStore.storeInventory.items.NumberofSuavitel);

                        bool decided = false;
                        int  ariel;
                        int  downie;
                        int  suavitel;

                        while (!decided)
                        {
                            try
                            {
                                Console.WriteLine("Ariel:");
                                string input = Console.ReadLine();
                                ariel = Int32.Parse(input);
                                Console.WriteLine("Downie:");
                                input  = Console.ReadLine();
                                downie = Int32.Parse(input);
                                Console.WriteLine("Suavitels");
                                input    = Console.ReadLine();
                                suavitel = Int32.Parse(input);


                                Console.WriteLine("You added number of Ariel: {0} || Downie: {1} || Suavitel: {2}",
                                                  ariel, downie, suavitel);
                                Console.WriteLine("Ready To Add New Item? \n1.Yes 2.No");
                                string userInput = UserChoiceHandler.UserOptionHandler(Int32.Parse(Console.ReadLine()), 2);

                                if (userInput == "1")
                                {
                                    decided = true;
                                    Console.WriteLine(". . .\n");


                                    {
                                        order = new Logic.Order();
                                        //uses input handler to input order into DB
                                        var entityStore = context.Store.FirstOrDefault(i => i.StoreId == storeId);



                                        entityStore.Ariel    += ariel;
                                        entityStore.Downie   += downie;
                                        entityStore.Suavitel += suavitel;


                                        context.Store.Update(entityStore);
                                        context.SaveChanges();
                                        try
                                        {
                                            nextMenu = false;
                                            Console.WriteLine("Added New Items Successfully!!!");
                                        }
                                        catch (Exception e)
                                        {
                                            Console.WriteLine("Unable to perform the operation: \n" + e);
                                            //error handling
                                            Log.Error("Unknown Error");
                                        }
                                    }
                                }
                                else if (userInput == "2")
                                {
                                    Console.WriteLine("Please Enter The Amount of Items Again!!!");
                                }
                                else
                                {
                                    Console.WriteLine("Invalid input, please type one of the following options.");
                                    //error handling
                                    Log.Debug("Invalid Input");
                                }
                            }
                            catch (Exception e)
                            {
                                Console.WriteLine("Error! Please Try It Again");
                            }
                        }
                        nextMenu = true;
                        break;
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("Error finding store with input ID" + e.Message);
                        break;
                    }

                /// <summary>
                /// Search Customer By Name
                /// </summary>
                case 3:
                    Console.WriteLine("Enter First Name or Last Name To Search Information: ");
                    string name = Console.ReadLine();

                    nextMenu = true;
                    while (nextMenu)
                    {
                        try
                        {
                            getCustomer = getDBHandler.GetCustomerDataByName(name, context);

                            var entityCustomer = context.Customer.FirstOrDefault(cust => cust.LastName == name || cust.FirstName == name);
                            if (getCustomer != null)
                            {
                                Console.WriteLine("------------------------------------------------------------");
                                Console.WriteLine("Customer Id: {0} \nCustomer username: {1}", getCustomer.customerId, getCustomer.userName);
                                Console.WriteLine("Name: {0} {1}", getCustomer.firstName, getCustomer.lastName);
                                Console.WriteLine("Address");
                                Console.WriteLine("{0}, {1}, {2}, {3}", getCustomer.customerAddress.street, getCustomer.customerAddress.city, getCustomer.customerAddress.state.ToUpper(), getCustomer.customerAddress.zip);
                                Console.WriteLine();
                            }
                            if (getCustomer is null)
                            {
                                Console.WriteLine("No Customer Information");
                            }

                            nextMenu = false;
                            Console.WriteLine("Manager's Options:");
                            Console.WriteLine("1. View Order History Of A Store\n2. Add New Items To Stores\n3. Search User Information By Name \n4. Switch To Customer Menu \n5.Stop");
                            manager = Int32.Parse(Console.ReadLine());
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine("Error! Invalid Input. Please enter name of customer only" + e.Message);
                            break;
                        }
                    }
                    break;

                case 4:
                    Console.Clear();
                    //Move To Customer's Menu
                    Console.WriteLine("1. Sign Up  \n2. Login \n3. Stop");
                    string userChoice     = Console.ReadLine();
                    string customerChoice = UserChoiceHandler.UserOptionHandler(Int32.Parse(userChoice), 4);

                    if (userChoice == "3")
                    {
                        Console.Clear();
                        Console.WriteLine("See You Later");
                        Environment.Exit(0);
                    }
                    else if (userChoice == "1" || userChoice == "2")
                    {
                        Menu.CustomerMenu(context, Int32.Parse(userChoice));
                    }
                    else     //Invalid input
                    {
                        Console.WriteLine("Invalid input, please type one of the following options");
                        //error handling
                        Log.Error("Invalid Input");
                    }
                    break;

                case 5:
                    Console.WriteLine("Bye");
                    Environment.Exit(0);
                    break;

                default:
                    //error handling
                    Log.Error("Invalid Input");
                    break;
                }
            }
        }
示例#12
0
        public static void CustomerMenu(StoreAppContext context, int cust)
        {
            Logic.Customer newCust      = new Logic.Customer();
            GetDataHandler getDBHandler = new GetDataHandler();
            InputDBHandler Inputhandler = new InputDBHandler();

            Logic.Customer getCustomer = new Logic.Customer();
            Logic.Store    getStore    = new Logic.Store();
            Logic.Order    order       = new Logic.Order();
            Logic.Product  items       = new Logic.Product();
            List <Order>   orderList   = new List <Order>();
            string         username    = null;


            string userInput;
            bool   customerMenu = true;
            bool   nextMenu     = false;

            switch (cust)
            {
            /// <summary>
            /// Sign Up New Account
            /// </summary>

            case 1:
                while (customerMenu)
                {
                    if (newCust.IsCustomerNotNull() == false)
                    {
                        if (newCust.userName == null)
                        {
                            Console.WriteLine("What is your username");
                            newCust.userName = Console.ReadLine();

                            /// <summary>
                            /// Check Username To Make Sure It's not Existing
                            /// </summary>

                            var check = getDBHandler.GetCustomerDataFromUsername(newCust.userName, context);
                            if (check != null)
                            {
                                Console.WriteLine("Username Existing. Choose another one");
                                newCust.userName = Console.ReadLine();
                            }
                        }
                        else if (newCust.firstName == null)
                        {
                            Console.WriteLine("What is your first name?");
                            newCust.firstName = Console.ReadLine();
                        }
                        else if (newCust.lastName == null)
                        {
                            Console.WriteLine("What is your last name?");
                            newCust.lastName = Console.ReadLine();
                        }
                        else if (newCust.customerAddress.IsAddressNotNull() == false)
                        {
                            Console.WriteLine("What is your address?");
                            newCust.customerAddress.street = Console.ReadLine();

                            Console.WriteLine("Please enter a city");
                            newCust.customerAddress.city = Console.ReadLine();

                            Console.WriteLine("Please enter a state");
                            newCust.customerAddress.state = Console.ReadLine();

                            Console.WriteLine("Please enter a zip");
                            newCust.customerAddress.zip = Console.ReadLine();
                        }
                    }
                    else
                    {
                        /// <summary>
                        /// Insert New Account Into DB
                        /// </summary>

                        try
                        {
                            Console.WriteLine("1.Yes 2.No");
                            userInput = UserChoiceHandler.UserOptionHandler(Int32.Parse(Console.ReadLine()), 2);
                            Console.WriteLine("Added New Customer Successfully! Welcome, " + newCust.firstName + " " + newCust.lastName);
                            Inputhandler.AddNewCustomer(newCust, context);
                            Console.WriteLine("Please Login With Your Username To Continue");
                            CustomerMenu(context, 2);
                            break;
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine("Unknown exception thrown: " + e);
                        }
                    }
                }
                nextMenu = true;     //resets menu true to go into next menu
                cust     = 2;
                break;

            /// <summary>
            /// Logging Int User Account
            /// </summary>
            case 2:
                while (customerMenu)
                {
                    Console.WriteLine("What is your username?");
                    username = Console.ReadLine();

                    if (getDBHandler.UsernameParser(username, context) == false)
                    {
                        Console.WriteLine("Your UserName is Incorrect. Please Try It Again");
                        break;
                    }
                    else
                    {
                        try
                        {
                            /// <summary>
                            /// Get Customer Information From Logic.Customer
                            /// </summary>
                            getCustomer = getDBHandler.GetCustomerDataFromUsername(username, context);
                            Console.WriteLine("Welcome " + getCustomer.firstName + " " + getCustomer.lastName);
                            nextMenu = true;
                        }
                        catch (NullReferenceException e)
                        {
                            Console.WriteLine("NULL Error " + username + ": " + e.Message + "\n");
                            Log.Error("Null Value");
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine("Unknown exeption " + e);
                            Log.Error("Unknown Error");
                        }
                    }
                    customerMenu = false;     //resets menu true to go into next menu
                }
                break;
            }


            while (nextMenu)
            {
                Console.WriteLine("1. Place order\n2. View your order history\n3. Stop");
                userInput = UserChoiceHandler.UserOptionHandler(Int32.Parse(Console.ReadLine()), 3);
                switch (userInput)
                {
                /// <summary>
                /// Place An Order
                /// </summary>
                case "1":
                    Console.WriteLine("What is your favorite store?\n1.Arlington \n5.Houston");
                    string store = Console.ReadLine();
                    if (getDBHandler.CheckIDParsable(Int32.Parse(store)) == false)
                    {
                        Console.WriteLine("Please Choice Either 1 or 2");
                        break;
                    }
                    else     //if the input only has numbers in it
                    {
                        int storeId = Int32.Parse(store);
                        /// <summary>
                        /// Display Store Information Retrieved From DB
                        /// </summary>
                        try
                        {
                            getStore = getDBHandler.GetStoreFromStoreId(storeId, context);
                            Console.WriteLine("Store Address {0}, {1}, {2}, {3}", getStore.address.street, getStore.address.city, getStore.address.state, getStore.address.zip);
                            Console.WriteLine("Ariel: {0}, Downie: {1}, Suavitel: {2}", getStore.storeInventory.items.NumberofAriel, getStore.storeInventory.items.NumberofDownie, getStore.storeInventory.items.NumberofSuavitel);

                            bool decided = false;
                            int  ariel;
                            int  downie;
                            int  suavitel;

                            while (!decided)
                            {
                                try
                                {
                                    Console.WriteLine("Ariel:");
                                    string input = Console.ReadLine();
                                    ariel = Int32.Parse(input);
                                    Console.WriteLine("Downie:");
                                    input  = Console.ReadLine();
                                    downie = Int32.Parse(input);
                                    Console.WriteLine("Suavitels");
                                    input    = Console.ReadLine();
                                    suavitel = Int32.Parse(input);


                                    Console.WriteLine("You have an order of Ariel: {0} || Downie: {1} || Suavitel: {2}",
                                                      ariel, downie, suavitel);
                                    Console.WriteLine("1.Yes 2.No");
                                    userInput = UserChoiceHandler.UserOptionHandler(Int32.Parse(Console.ReadLine()), 2);

                                    if (userInput == "1")
                                    {
                                        decided = true;
                                        Console.WriteLine(". . .\n");

                                        if (ariel > getStore.storeInventory.items.NumberofAriel || downie > getStore.storeInventory.items.NumberofDownie || suavitel > getStore.storeInventory.items.NumberofSuavitel)
                                        {
                                            Console.WriteLine("Not Enough--Available: ");
                                            Console.WriteLine("Ariel: {0} || Downie: {1} || Suavitel: {2}",
                                                              getStore.storeInventory.items.NumberofAriel.ToString(),
                                                              getStore.storeInventory.items.NumberofDownie.ToString(),
                                                              getStore.storeInventory.items.NumberofSuavitel.ToString());
                                            decided = false;
                                        }
                                        else
                                        {
                                            order = new Logic.Order();
                                            //uses input handler to input order into DB
                                            var entityStore = context.Store.FirstOrDefault(i => i.StoreId == Int32.Parse(store));
                                            if (entityStore != null)
                                            {
                                                order.customer = getCustomer;
                                                order.cartItems.NumberofAriel    = ariel;
                                                order.cartItems.NumberofDownie   = downie;
                                                order.cartItems.NumberofSuavitel = suavitel;
                                                order.ordererAddress             = getCustomer.customerAddress;
                                                order.PlaceOrderTime();
                                                /// <summary>
                                                /// Update Products' Quantities
                                                /// </summary>
                                                entityStore.Ariel    -= ariel;
                                                entityStore.Downie   -= downie;
                                                entityStore.Suavitel -= suavitel;

                                                order.storeLocation.address        = getStore.address;
                                                order.storeLocation.storeInventory = getStore.storeInventory;
                                                order.storeLocation.storeId        = getStore.storeId;
                                            }
                                            context.Store.Update(entityStore);
                                            context.SaveChanges();
                                            try
                                            {
                                                /// <summary>
                                                /// Placed Order Successfully
                                                /// </summary>
                                                Inputhandler.PlaceOrder(order, context);
                                                nextMenu = false;
                                                Console.WriteLine("Order successfully created! Thank you for your business!\nReturning back to customer menue");
                                            }
                                            catch (Exception e)
                                            {
                                                Console.WriteLine("Unable to perform the operation: \n" + e);
                                                Log.Error("Exception Error");
                                            }
                                        }
                                    }
                                    else if (userInput == "2")
                                    {
                                        Console.WriteLine("Please make a new order again");
                                    }
                                    else
                                    {
                                        Console.WriteLine("Invalid input, please type one of the following options.");
                                        Log.Error("Null Value");
                                    }
                                }
                                catch (Exception e)
                                {
                                    Console.WriteLine("Please Enter NUMBER ONLY.");
                                    Log.Error("Non Numerical Error");
                                }
                            }
                            nextMenu = true;
                            break;
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine("Error finding store with input ID: \n");
                        }
                    }
                    break;

                /// <summary>
                /// Display Order History of The customer
                /// </summary>
                case "2":

                    var    enityOrder = context.Orders.Where(user => user.CustomerId == getCustomer.customerId).ToList();
                    string storeInfo;
                    foreach (var row in enityOrder)
                    {
                        if (row.StoreId == 1)
                        {
                            storeInfo = "Arlington,TX";
                        }
                        else
                        {
                            storeInfo = "Houston, TX";
                        }
                        Console.WriteLine("Your Order Id: {0} Store Location:  {1}", row.OrderId, storeInfo);
                        Console.WriteLine("Ariel: {0}, \nDownie: {1} \nSuavitel: {2}", row.Ariel, row.Downie, row.Suavitel);
                        Console.WriteLine();
                    }
                    break;

                case "3":
                    Console.Clear();
                    Console.WriteLine("See You Later");
                    Environment.Exit(0);
                    break;

                default:
                    //error handling
                    Log.Error("Invalid Input");
                    break;
                }
            }
        }
示例#13
0
 public void SetUp()
 {
     file    = new TempFile();
     db      = new LiteDbAdapter(file.Filename);
     handler = new GetDataHandler(db);
 }