public static IEmployee Factory(EContractType contractType, double hourlySalary, double monthlySalary)
        {
            if (contractType == EContractType.HourlySalaryEmployee)
            {
                return(new HourlySalaryEmployee(hourlySalary));
            }
            if (contractType == EContractType.MonthlySalaryEmployee)
            {
                return(new MonthlySalaryEmployee(monthlySalary));
            }

            throw new ApplicationException();
        }
        public static ISalaryFactory SalaryFactoryCreator(EContractType eContractType, double hourlySalary, double monthlySalary)
        {
            switch (eContractType)
            {
            case EContractType.HourlySalaryEmployee:
                return(new HourlySalary(hourlySalary));

            case EContractType.MonthlySalaryEmployee:
                return(new MonthlySalary(monthlySalary));

            default:
                return(null);
            }
        }
        public static double CalculateSalary(EContractType contractType, double hourlySalary, double monthlySalary)
        {
            var calculateSalaryFactory = EmployeeFactory.Factory(contractType, hourlySalary, monthlySalary);

            return(calculateSalaryFactory.CalculateAnnualSalary());
        }