Пример #1
0
        static void Main(string[] args)
        {
            //Create the employee object.
            Employee employee = new Employee()
            {
                Name           = "Sanjay",
                JobDescription = "IT Professional",
                Department     = "IT",
                EmployeeTypeID = 1
            };

            //Create the abstract factory object.
            IComputerFactory factory = new EmployeeSystemFactory().Create(employee);

            //use the abstract factory object while creating the client and then
            //get the system details.
            EmployeeSystemManager manager = new EmployeeSystemManager(factory);

            employee.ComputerDetails = manager.GetSystemDetails();

            //store the employee into the database.
            using (DesignPatternDBContext context = new DesignPatternDBContext())
            {
                context.Employees.Add(employee);
                context.SaveChanges();
            }
            Console.WriteLine("Employee inserted successfully.");
            Console.ReadKey();
        }
Пример #2
0
        static void Main(string[] args)
        {
            // Create the Employee Object
            Employee employee = new Employee()
            {
                Name           = "Pranaya",
                JobDescription = "Manager",
                Department     = "HR",
                EmployeeTypeID = 1
            };

            // Create the abstract factory object
            IComputerFactory factory = new EmployeeSystemFactory().Create(employee);
            // use the abstract factory object while creating the client and
            // then get the system details
            EmployeeSystemManager manager = new EmployeeSystemManager(factory);

            employee.ComputerDetails = manager.GetSystemDetails();
            // Store the Employee into the database
            using (DesignPatternDBEntities dBEntities = new DesignPatternDBEntities())
            {
                dBEntities.Employees.Add(employee);
                dBEntities.SaveChanges();
            }
            Console.WriteLine("Employee data inserted");
            Console.ReadKey();
        }
Пример #3
0
        public async Task <IActionResult> Create([Bind("Id,Name,JobDescription,Number,Department,HourlyPay,Bonus,EmployeeTypeId")] EmployeeSystemDesignPatterns.Models.EmployeeModels.Employee employee)
        {
            if (ModelState.IsValid)
            {
                //For Simple Factory
                //EmployeeManagerFactory empFactory = new EmployeeManagerFactory();
                //var empManager = empFactory.createFactory(employee.EmployeeTypeId);
                //employee.Bonus = empManager.getBonus();
                //employee.HourlyPay = empManager.getPay();

                //For Factory Method Design Pattern
                EmployeeManagerFactory empFactory = new EmployeeManagerFactory();
                var baseEmployeeFactory           = empFactory.createEmployeeTypeFactory(employee);
                baseEmployeeFactory.ComputeAllowances();

                //For Abstract Factory Method Pattern
                EmployeeSystemFactory employeeSystemFactory = new EmployeeSystemFactory();
                var createdFactory            = employeeSystemFactory.Create(employee);
                EmployeeSystemManager manager = new EmployeeSystemManager(createdFactory);
                employee.ComputerDetails = manager.getSystemDetails();

                _context.Add(employee);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }

            // ViewBag.EmployeeTypeID = new SelectList(_context.EmployeeTypes, "EmployeeTypesId", "EmpType", employee.EmployeeTypeId);
            return(View(employee));

            //return View(employee);
        }
Пример #4
0
        public ActionResult Create([Bind(Include = "Id,Name,JobDescription,Number,Department,HourlyPay,Bonus,EmployeeTypeId")] Employee employee)
        {
            if (ModelState.IsValid)
            {
                #region SimpleFactory
                //EmployeeManagerFactory empFactory = new EmployeeManagerFactory();
                //IEmployeeManager empManager = empFactory.GetEmployeeManager(employee.EmployeeTypeId);
                //employee.HourlyPay = empManager.GetPay();
                //employee.Bonus = empManager.GetBonus();
                #endregion
                BaseEmployeeFactory empFactory = new EmployeeManagerFactory().CreateFactory(employee);
                empFactory.ApplySalary();

                //abstract factory
                IComputerFactory      factory = new EmployeeSystemFactory().Create(employee);
                EmployeeSystemManager manager = new EmployeeSystemManager(factory);
                employee.ComputerDetails = manager.GetSystemDetails();

                db.Employees.Add(employee);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            ViewBag.EmployeeTypeId = new SelectList(db.Employee_Type, "Id", "EmployeeType", employee.EmployeeTypeId);
            return(View(employee));
        }
Пример #5
0
        public ActionResult Create([Bind(Include = "Id,Name,JobDesc,Number,Department,HourlyPay,Bonus,EmployeeTypeId")] Employee employee)
        {
            if (ModelState.IsValid)
            {
                //EmployeeManagerFactory empFactory = new EmployeeManagerFactory();
                //IEmployeeManager empManager = empFactory.GetEmployeeManager(employee.EmployeeTypeId);
                //if (empManager != null)
                //{
                //    employee.Bonus = empManager.GetBonus();
                //    employee.HourlyPay = empManager.GetHourlyPay();
                //}

                BaseEmployeeFactory employeeFactory = new EmployeeManagerFactory().CreateFactory(employee);
                employeeFactory.ApplySalary();

                IComputerFactory      computerFactory = new EmployeeSystemFactory().Create(employee);
                EmployeeSystemManager manager         = new EmployeeSystemManager(computerFactory);
                employee.ComputerDetails = manager.GetSystemDetails();

                db.Employees.Add(employee);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            ViewBag.EmployeeTypeId = new SelectList(db.EmployeeTypes, "Id", "Types", employee.EmployeeTypeId);
            return(View(employee));
        }
        public async Task <IActionResult> Edit(int id, Employee employee)
        {
            if (id != employee.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    IComputerFactory      factory = new EmployeeSystemFactory().Create(employee);
                    EmployeeSystemManager manager = new EmployeeSystemManager(factory);
                    employee.ComputerDetails = manager.GetSystemDetails();
                    db.Update(employee);
                    await db.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!EmployeeExists(employee.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["DepartmentId"]   = new SelectList(db.Departments, "Id", "DepartmentName", employee.DepartmentId);
            ViewData["EmployeeTypeId"] = new SelectList(db.EmployeeTypes, "Id", "EmployeeTypeName", employee.EmployeeTypeId);
            return(View(employee));
        }
Пример #7
0
        static void Main(string[] args)
        {
            #region factory method pattern
            //contract employee
            var employee = new FactoryMethod.Employee
            {
                //EmployeeTypeID = 1,
                EmployeeTypeID   = 2,
                Bonus            = 100,
                HourlyPay        = 40,
                HouseAllowance   = 40,
                MedicalAllowance = 30
            };
            BaseEmployeeFactory empFactory =
                new EmployeeManagerFactory().CreateFactory(employee);
            empFactory.ApplySalary();
            Console.WriteLine($"Employee: {employee.EmployeeTypeID}{Environment.NewLine} " +
                              $"House Allowance: {employee.HouseAllowance}{Environment.NewLine} " +
                              $"Medical Allowance: {employee.MedicalAllowance}");
            #endregion

            #region Abstract Factory Method
            var abstractFactoryEmployee   = new Employee {
            };
            IComputerFactory      factory = new EmployeeSystemFactory().Create(abstractFactoryEmployee);
            EmployeeSystemManager manager = new EmployeeSystemManager(factory);
            abstractFactoryEmployee.ComputerDetails = manager.GetSystemDetails();
            Console.WriteLine($"Computer Details: {abstractFactoryEmployee.ComputerDetails}{Environment.NewLine} " +
                              $"Job Description: {abstractFactoryEmployee.JobDescription}");
            #endregion

            #region Singleton Pattern

            /*
             * Assuming Singleton is created from employee class
             * we refer to the GetInstance property from the Singleton class
             */
            DesignPatterns.Singleton.Singleton fromEmployee = DesignPatterns.Singleton.Singleton.GetInstance;
            fromEmployee.PrintDetails("From Employee");

            /*
             * Assuming Singleton is created from student class
             * we refer to the GetInstance property from the Singleton class
             */
            DesignPatterns.Singleton.Singleton fromStudent = DesignPatterns.Singleton.Singleton.GetInstance;
            fromStudent.PrintDetails("From Student");
            #endregion

            #region Decorator Pattern
            ICar         car       = new Suzuki();
            CarDecorator decorator = new OfferPrice(car);
            Console.WriteLine(string.Format("Make :{0}  Price:{1} " +
                                            "DiscountPrice : {2}"
                                            , decorator.Make, decorator.GetPrice().ToString(),
                                            decorator.GetDiscountedPrice().ToString()));
            #endregion

            Console.ReadLine();
        }
Пример #8
0
        public void GetEmployeeAbstractFactoryData(Employee emp)
        {
            BaseAbstractFactory a = new FactoryMethod().CreateFactory(emp);

            a.ApplySalary();
            IComputerFactory      computerFactory       = new EmployeeSystemFactory().CreateFactory(emp);
            EmployeeSystemManager employeeSystemManager = new EmployeeSystemManager(computerFactory);

            emp.ComputerDetails = employeeSystemManager.GetSystemDetails();
            Console.WriteLine("BONUS : " + emp.Bonus.ToString() + " ;PAY " + emp.Salary.ToString() + " ;House " + emp.HouseAllowance.ToString() + " ;Medical " + emp.MedicalAllowance.ToString() + " ;ComputerDetails " + emp.ComputerDetails.ToString());
        }
        public async Task <IActionResult> Create([Bind("Id,Name,JobDescription,Number,Department,HourlyPay,Bonus,EmployeeTypeId,HouseAllowances,MedicalAllowances,ComputerDetails")] Employee employee)
        {
            if (ModelState.IsValid)
            {
                IComputerFactory      computerFactory       = new EmployeeSystemFactory().Create(employee);
                EmployeeSystemManager employeeSystemManager = new EmployeeSystemManager(computerFactory);
                employee.ComputerDetails = employeeSystemManager.GetSystemDetails();
                _context.Add(employee);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["EmployeeTypeId"] = new SelectList(_context.EmployeeType, "Id", "EmployeeType1", employee.EmployeeTypeId);
            return(View(employee));
        }
Пример #10
0
        public ActionResult Edit([Bind(Include = "Id,Name,JobDescription,Number,Department,HourlyPay,Bonus,EmployeeTypeID,HouseAllowance,MedicalAllowance")] Employee employee)
        {
            if (ModelState.IsValid)
            {
                BaseEmployeeFactory empFactory = new EmployeeManagerFactory().CreateFactory(employee);
                empFactory.ApplySalary();
                IComputerFactory      factory = new EmployeeSystemFactory().Create(employee);
                EmployeeSystemManager manager = new EmployeeSystemManager(factory);
                employee.ComputerDetails = manager.GetSystemDetails();

                db.Entry(employee).State = EntityState.Modified;
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }
            return(View(employee));
        }
        public async Task <IActionResult> Create(Employee employee)
        {
            if (ModelState.IsValid)
            {
                IComputerFactory      factory = new EmployeeSystemFactory().Create(employee);
                EmployeeSystemManager manager = new EmployeeSystemManager(factory);
                employee.ComputerDetails = manager.GetSystemDetails();
                db.Add(employee);
                await db.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["DepartmentId"]   = new SelectList(db.Departments, "Id", "DepartmentName", employee.DepartmentId);
            ViewData["EmployeeTypeId"] = new SelectList(db.EmployeeTypes, "Id", "EmployeeTypeName", employee.EmployeeTypeId);
            return(View(employee));
        }
Пример #12
0
        public ActionResult Create([Bind(Include = "Id,Name,JobDescription,Number,Department,HourlyPay,Bonus,EmployeeTypeID")] Employee employee)
        {
            if (ModelState.IsValid)
            {
                BaseEmployeeFactory empFactory = new Factory.FactoryMethod.EmployeeManagerFactory().CreateFactory(employee);
                empFactory.ApplySalary();
                IComputerFactory      factory = new EmployeeSystemFactory().Create(employee);
                EmployeeSystemManager manager = new EmployeeSystemManager(factory);
                employee.ComputerDetails = manager.GetSystemDetails();
                db.Employees.Add(employee);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            ViewBag.EmployeeTypeID = new SelectList(db.Employee_Type, "Id", "EmployeeType", employee.EmployeeTypeID);
            return(View(employee));
        }
        public ActionResult Create([Bind(Include = "Id,Name,JobDescription,Number,Department,HourlyPay,Bonus,EmployeeTypeID")] Employee employee)
        {
            if (ModelState.IsValid)
            {
                IComputerFactory      factory = new EmployeeSystemFactory().Create(employee);
                EmployeeSystemManager manager = new EmployeeSystemManager(factory);
                employee.ComputerDetails = manager.GetSystemDetails();
                Factory.EmployeeManagerFactory empFactory = new Factory.EmployeeManagerFactory();


                //Factory Method Pattern
                //BaseEmployeeFactory empfactory = new EmployeeManagerFactory().CreateFactory(employee);
                //empfactory.ApplySalary();

                //Factory Pattern
                //Factory.EmployeeManagerFactory empFactory = new Factory.EmployeeManagerFactory();
                //IEmployeeManager empManager = empFactory.GetEmployeeManager(employee.EmployeeTypeID);
                //employee.Bonus = empManager.GetBonus();
                //employee.HourlyPay = empManager.GetPay();


                //if(employee.EmployeeTypeID==1)
                //{
                //    employee.HourlyPay = 8;
                //    employee.Bonus = 10;
                //}
                //else if(employee.EmployeeTypeID==2)
                //{
                //    employee.HourlyPay = 12;
                //    employee.Bonus = 5;
                //}

                db.Employees.Add(employee);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            ViewBag.EmployeeTypeID = new SelectList(db.Employee_Type, "Id", "EmployeeType", employee.EmployeeTypeID);
            return(View(employee));
        }
Пример #14
0
        public void MainMethodFactory()
        {
            //empTypep as Parmanent Employee or Contract Employee - 1,2
            #region Simple factory design
            ////->The Object needs to be extended to subclasses
            ////->The Classes doesn't know what exact sub-classes it has to create
            ////->The Product implementation tend to change over time and the client remains unchanged
            //int empType = 1;
            //EmployeeManagerFactory empMgrFactory = new EmployeeManagerFactory();
            //var objFactory = empMgrFactory.GetEmployeeManager(empType);
            //var bonus = objFactory.GetBonus();
            //var pay = objFactory.GetPay();
            //Console.WriteLine("Employee Type: {0} has bonus: {1} and pay: {2}", empType, bonus, pay);

            #endregion

            #region Factory Method
            //EmployeeModel emp = new EmployeeModel();
            //emp.EmployeeId = 2;
            //BaseEmployeeFactory employeeFactory = new DesignPattern.FactoryDesign.FactoryMethod.EmployeeManagerFactory()
            //    .CreateFactory(emp);
            //employeeFactory.ApplySalary();

            //Console.WriteLine("Employee Type: {0} has bonus: {1} and pay: {2}", emp.EmployeeId, emp.Bonus, emp.Pay);
            #endregion

            #region Abstract Factory
            EmployeeModel emp = new EmployeeModel();
            emp.EmployeeId     = 1;
            emp.JobDescription = "Manger";
            IComputerFactory      factory = new EmployeeSystemFactory().Create(emp);
            EmployeeSystemManager manager = new EmployeeSystemManager(factory);
            var res = manager.GetSysteDetails();
            Console.WriteLine(res);

            #endregion
        }