/// <summary>
 /// Check if the input number is existence in the database
 /// </summary>
 /// <param name="number"></param>
 public NumberModel CheckDuplicate(NumberModel number)
 {
     try
     {
         using (SqlConnection con = new SqlConnection(_connectionString))
         {
             con.Open();
             cmd = new SqlCommand($"Select * from NumberList where number='{number.PhoneNumber}'", con);
             cmd.ExecuteNonQuery();
             rdr = cmd.ExecuteReader();
             //find the phonenumber, if exist
             while (rdr.Read())
             {
                 NumberModel foundnumber = new NumberModel
                 {
                     Id              = Convert.ToInt32(rdr[0]),
                     PhoneNumber     = Convert.ToInt32(rdr[1]),
                     NetworkProvider = Convert.ToString(rdr[2])
                 };
                 return(foundnumber);
             }
             return(null);
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Exemple #2
0
        /// <summary>
        /// Check Feng Shui of single input number
        /// </summary>
        /// <param name="number"></param>
        public static bool CheckSingleNumber(NumberModel number)
        {
            int firstSum  = 0;
            int secondSum = 0;
            int phone     = number.PhoneNumber;         //create a temp phonenumber variable for calculation

            if (tabooList.Contains(phone % 100))
            {
                return(false);                                            //if last 2 digit in tabooList, not good FengShui
            }
            else
            {
                for (int i = 0; i < 10; i++)
                {
                    if (i < 5)                    //the last 5 digit sum will be 2nd-sum
                    {
                        secondSum += phone % 10;
                        phone      = phone / 10;
                    }
                    else                    //the first 4 digit(the first digit is 0) will be 1st-sum
                    {
                        firstSum += phone % 10;
                        phone     = phone / 10;
                    }
                }
                Convert.ToString(firstSum);                 //Convert sum to String to get the right proportion for 24/28 (no mislead to 12/14)
                Convert.ToString(secondSum);
                if (sumProportion.Contains($"{firstSum}/{secondSum}") && nicePairList.Contains(number.PhoneNumber % 100))
                {
                    return(true);
                }
            }
            return(false);
        }
Exemple #3
0
        /// <summary>
        /// Check if the input number has existed in database,
        /// if existed return the number,
        /// if not return null
        /// </summary>
        /// <param name="number"></param>
        /// <returns></returns>
        public static NumberModel CheckDuplicate(NumberModel number)
        {
            //GetAppSettingsFile();
            var numberDal = new NumberDAL();

            if (numberDal.CheckDuplicate(number) == null)
            {
                return(null);
            }
            return(number);
        }
 /// <summary>
 /// Add the given number to database(has been checked existence)
 /// </summary>
 /// <param name="number"></param>
 public void AddNumber(NumberModel number)
 {
     try
     {
         using (SqlConnection con = new SqlConnection(_connectionString))
         {
             con.Open();
             cmd = new SqlCommand($"INSERT INTO NumberList VALUES((SELECT max(Id)+1 FROM NumberList),{number.PhoneNumber},'{number.NetworkProvider}')", con);
             cmd.ExecuteNonQuery();
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Exemple #5
0
        /// <summary>
        /// Add the input number to database if not existed
        /// </summary>
        /// <param name="numberModel"></param>
        public static void AddNumberToDb(NumberModel number)
        {
            var numberDal = new NumberDAL();

            numberDal.AddNumber(number);
        }
        /// <summary>
        /// Respond based on the user's choice
        /// </summary>
        /// <param name="choice"></param>
        public static void Choose(int choice)
        {
            switch (choice)
            {
            case 1:
                Console.WriteLine("\n\t|---------------------------------------|");
                Console.WriteLine("\t|All the known good Feng Shui numbers\t|");
                Console.WriteLine("\t|Phone Number \t|\tProvider\t|");
                NumberController.GetList(null);
                break;

            case 2:
                Console.WriteLine("\n\t|---------------------------------------|");
                Console.WriteLine("\t|The good Feng Shui Viettel numbers\t|");
                Console.WriteLine("\t|Phone Number \t|\tProvider\t|");
                NumberController.GetList("Viettel");
                break;

            case 3:
                Console.WriteLine("\n\t|---------------------------------------|");
                Console.WriteLine("\t|The known good Feng Shui Mobi numbers\t|");
                Console.WriteLine("\t|Phone Number \t|\tProvider\t|");
                NumberController.GetList("Mobi");
                break;

            case 4:
                Console.WriteLine("\n\t|---------------------------------------|");
                Console.WriteLine("\t|The known good Feng Shui Vina numbers\t|");
                Console.WriteLine("\t|Phone Number \t|\tProvider\t|");
                NumberController.GetList("Vina");
                break;

            case 5:
                NumberModel number = AddPhone();                         //create a NumberModel object to contain data
                if (number.PhoneNumber == 999)
                {
                    break;                                                            //Check again to make sure when the number is 999 will break and back to main menu
                }
                NumberModel checkDuplicate = NumberController.CheckDuplicate(number); //check if the number has existed in database
                if (checkDuplicate == null)                                           //if not existed, add to db and check FengShui
                {
                    NumberController.AddNumberToDb(number);
                    Console.WriteLine($"0{number.PhoneNumber} has been added to the database");
                    bool check = NumberController.CheckSingleNumber(number);
                    if (check)
                    {
                        Console.WriteLine($"0{number.PhoneNumber} is a Good Feng Shui Number");
                    }
                    else
                    {
                        Console.WriteLine($"0{number.PhoneNumber} is a Not Good Feng Shui Number");
                    }
                    break;
                }
                else                         //if existed, print the alert and FengShui status
                {
                    bool check = NumberController.CheckSingleNumber(number);
                    Console.WriteLine($"0{number.PhoneNumber} has been existed in the database");
                    Console.Write($"and ");
                    if (check)
                    {
                        Console.WriteLine($"0{number.PhoneNumber} is a Good Feng Shui Number");
                    }
                    else
                    {
                        Console.WriteLine($"0{number.PhoneNumber} is a Not Good Feng Shui Number");
                    }
                    break;
                }

            case 6:
                Console.WriteLine("----------------------------------------------------------------------------------------------------------------------");
                Console.WriteLine("(1). The last 2 num chars is taboo: ");
                Console.WriteLine("If this rule is violated, other criterias at (2) are not checked in any case.");
                Console.WriteLine("00, 66, 04, 45, 85, 27, 67, ");
                Console.WriteLine("17, 57, 97, 98, 58, 42, 82 69");
                Console.WriteLine("(2) Good feng shui numbers: match all criteria below:");
                Console.WriteLine("Total first 5 nums / Total last 5 nums: matches 1 in 2 conditions: 24 / 29 or 24 / 28");
                Console.WriteLine("Last nice pair of numbers: 19, 24, 26, 37, 34 ");
                break;

            default:
                break;
            }
        }
        /// <summary>
        /// Menu to add a new phonenumber and check Validation, if valid return the phonenumber to continue check FengShui
        /// </summary>
        /// <returns></returns>
        public static NumberModel AddPhone()
        {
            int    phoneNumber = 0;
            int    choiceProvider;
            string networkProvider = "";

            do
            {
                Console.WriteLine("\n\t|---------------------------------------------\t|");
                Console.WriteLine("\t|Please choose the providers (Enter number):\t|");
                Console.WriteLine("\t|1/Viettel: 086xxx, 096xxx, 097xxx\t\t|");
                Console.WriteLine("\t|2/Mobi: 089xxx, 090xxx, 093xxx\t\t\t|");
                Console.WriteLine("\t|3/Vina: 088xxx, 091xxx, 094xxx\t\t\t|");
                Console.WriteLine("\t|----------------------------------------------\t|");
                Console.Write("\t\tPlease choose: ");
                int.TryParse(Console.ReadLine(), out choiceProvider);
            }while (choiceProvider != 1 && choiceProvider != 2 && choiceProvider != 3);
            switch (choiceProvider)
            {
            case 1:
                networkProvider = "Viettel";
                do
                {
                    Console.WriteLine("\nPlease input the phone number (Enter 999 to comeback)");
                    Console.WriteLine("Viettel phone number has to start with 086,096,097 and has 10 digit");
                    Console.Write("Input number: ");
                    int.TryParse(Console.ReadLine(), out phoneNumber);
                    if (phoneNumber == 999)
                    {
                        break;
                    }
                } while (phoneNumber / 10000000 != 86 && phoneNumber / 10000000 != 96 && phoneNumber / 10000000 != 97 && phoneNumber.ToString().Length != 9);

                break;

            case 2:
                networkProvider = "Mobi";
                do
                {
                    Console.WriteLine("\nPlease input the phone number (Enter 999 to comeback)");
                    Console.WriteLine("Mobi phone number has to start with 089, 090, 093 and has 10 digit");
                    Console.Write("Input number: ");
                    int.TryParse(Console.ReadLine(), out phoneNumber);
                    if (phoneNumber == 999)
                    {
                        break;
                    }
                } while (phoneNumber / 10000000 != 89 && phoneNumber / 10000000 != 90 && phoneNumber / 10000000 != 93 && phoneNumber.ToString().Length != 9);

                break;

            case 3:
                networkProvider = "Vina";
                do
                {
                    Console.WriteLine("\nPlease input the phone number (Enter 999 to comeback)");
                    Console.WriteLine("Vina phone number has to start with 088, 091, 094 and has 10 digit");
                    Console.Write("Input number: ");
                    int.TryParse(Console.ReadLine(), out phoneNumber);
                    if (phoneNumber == 999)
                    {
                        break;
                    }
                } while (phoneNumber / 10000000 != 88 && phoneNumber / 10000000 != 91 && phoneNumber / 10000000 != 94 && phoneNumber.ToString().Length != 9);
                break;

            default:
                break;
            }
            //Create NumberModel object and continue to check FengShui
            NumberModel number = new NumberModel
            {
                PhoneNumber     = phoneNumber,
                NetworkProvider = networkProvider
            };

            return(number);
        }