public MicroOrmComparison.UI.Models.Employee Add(MicroOrmComparison.UI.Models.Employee employee)
 {
     var employeeToInsert = AutoMapper.Mapper.Map<MicroOrmComparison.UI.Models.Employee, Employee>(employee);
     using (var db = new EmployeeDb())
     {
         db.Employees.AddOrUpdate(employeeToInsert);
         if (employeeToInsert.Addresses != null)
         {
             foreach (var address in employeeToInsert.Addresses)
             {
                 db.Addresses.AddOrUpdate(address);
             }
         }
         if (employeeToInsert.AssignedRoles != null)
         {
             foreach (var roleId in employeeToInsert.AssignedRoles.Select(x => x.Id).Distinct())
             {
                 var roleToInsert = new AssignedRole
                 {
                     EmployeeId = employeeToInsert.Id,
                     RoleId = roleId
                 };
                 db.AssignedRoles.Add(roleToInsert);
             }
         }
         db.SaveChanges();
         employee.Id = employeeToInsert.Id;
     }
     return employee;
 }
 public MicroOrmComparison.UI.Models.Employee GetById(int employeeId)
 {
     Employee employee = null;
     using (var db = new EmployeeDb())
     {
         db.Configuration.LazyLoadingEnabled = false;
         employee = db.Employees.FirstOrDefault(x => x.Id == employeeId);
     }
     return AutoMapper.Mapper.Map<Employee, MicroOrmComparison.UI.Models.Employee>(employee);
 }
 public IEnumerable<MicroOrmComparison.UI.Models.Employee> GetAll()
 {
     List<Employee> listOfEmployees;
     using (var db = new EmployeeDb())
     {
         db.Configuration.LazyLoadingEnabled = false;
         listOfEmployees = db.Employees.ToList();
     }
     return AutoMapper.Mapper.Map<List<Employee>, List<MicroOrmComparison.UI.Models.Employee>>(listOfEmployees);
 }
        public MicroOrmComparison.UI.Models.Employee GetFullEmployeeInfo(int employeeId)
        {
            Employee employeeToShow = null;

            using (var db = new EmployeeDb())
            {
                db.Configuration.LazyLoadingEnabled = false;
                employeeToShow = db.Employees.FirstOrDefault(x => x.Id == employeeId);
                if (employeeToShow != null)
                {
                    employeeToShow.Addresses = db.Addresses.Where(x => x.EmployeeId == employeeId).ToList();
                    employeeToShow.AssignedRoles = db.AssignedRoles.Where(x => x.EmployeeId == employeeId).ToList();
                }
            }

            return AutoMapper.Mapper.Map<Employee, MicroOrmComparison.UI.Models.Employee>(employeeToShow);
        }
 public void Remove(int id)
 {
     using (var db = new EmployeeDb())
     {
         var employeeToRemove = db.Employees.First(x => x.Id == id);
         if (employeeToRemove.Addresses != null)
         {
             db.Addresses.RemoveRange(employeeToRemove.Addresses);
         }
         if (employeeToRemove.AssignedRoles != null)
         {
             db.AssignedRoles.RemoveRange(employeeToRemove.AssignedRoles);
         }
         db.Employees.Remove(employeeToRemove);
         db.SaveChanges();
     }
 }
 public void RemoveRole(int employeeId, int roleId)
 {
     using (var db = new EmployeeDb())
     {
         db.AssignedRoles.Remove(db.AssignedRoles.FirstOrDefault(ar => ar.RoleId == roleId && ar.EmployeeId == employeeId));
         db.SaveChanges();
     }
 }