Tuesday, 19 August 2014

MVC ViewModel Pattern

View Model

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using DataAccessLayer.Models;

namespace DataAccessLayer.ViewModels
{
    public class EmployeeViewModel
    {
        public long Emp_Id { get; set; }
        public string Emp_Name { get; set; }
        public Nullable<long> DepartmentId { get; set; }
        public string DepartMentName { get; set; }

        public EmployeeViewModel()
        {
       
        }

        public EmployeeViewModel ConvertToViewModel(Employee emp)
        {
            EmployeeViewModel empvm = new EmployeeViewModel();
            empvm.Emp_Id = emp.Emp_Id;
            empvm.Emp_Name = emp.Emp_Name;
            empvm.DepartmentId = emp.DepartmentId;
            empvm.DepartMentName = emp.Department.DepartmentName;
            return empvm;
        }

        public Employee ConvertToModel(EmployeeViewModel empvm)
        {
            Employee emp = new Employee();
            emp.Emp_Id = empvm.Emp_Id;
            emp.Emp_Name = empvm.Emp_Name;
            emp.DepartmentId = empvm.DepartmentId;
            return emp;
        }

        public List<EmployeeViewModel> ConvertToList(List<Employee> EmpList)
        {
            List<EmployeeViewModel> emplist = new List<EmployeeViewModel>();
            foreach (Employee emp in EmpList)
            {
                EmployeeViewModel Emprec = ConvertToViewModel(emp);
                emplist.Add(Emprec);
            }
            return emplist;
        }
    }
}

Repository

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using DataAccessLayer.Models;
using DataAccessLayer.ViewModels;

namespace Repository
{
    public class EmployeeRepository
    {
        DBEntities _dbconn = new DBEntities();

        public IEnumerable<EmployeeViewModel> GetAllEmployee()
        {
            EmployeeViewModel empvm = new EmployeeViewModel();
            return (empvm.ConvertToList(_dbconn.Employees.ToList()));
        }
    }
}

Controller 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Repository;

namespace MvcApplication1.Controllers
{
    public class EmployeeController : Controller
    {
        //
        // GET: /Employee/

        public ActionResult Index()
        {
            EmployeeRepository emprepo = new EmployeeRepository();
            return View(emprepo.GetAllEmployee());
        }
    }
}

No comments:

Post a Comment