using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; using System.Xml.Linq; namespace HelpdeskDAL { public class EmployeeDAO { //Using Repository readonly IRepository<Employee> _repo; public EmployeeDAO() { _repo = new HelpdeskRepository<Employee>(); } // // Retrieve Employee by email // public async Task<Employee> GetByEmail(string email) { Employee? selectedEmployee; try { selectedEmployee = await _repo.GetOne(emp => emp.Email == email); } catch (Exception ex) { Debug.WriteLine("Problem in " + GetType().Name + " " + MethodBase.GetCurrentMethod()!.Name + " " + ex.Message); throw; } return selectedEmployee!; } // // Retrieve Employee by Id // public async Task<Employee> GetById(int id) { Employee? selectedEmployee; try { selectedEmployee = await _repo.GetOne(emp => emp.Id == id); } catch (Exception ex) { Debug.WriteLine("Problem in " + GetType().Name + " " + MethodBase.GetCurrentMethod()!.Name + " " + ex.Message); throw; } return selectedEmployee!; } // // Retrieve All Employees // public async Task<List<Employee>> GetAll() { List<Employee> allEmployees; try { allEmployees = await _repo.GetAll(); } catch (Exception ex) { Debug.WriteLine("Problem in " + GetType().Name + " " + MethodBase.GetCurrentMethod()!.Name + " " + ex.Message); throw; } return allEmployees; } // // Add an Employee // public async Task<int> Add(Employee newEmployee) { try { await _repo.Add(newEmployee); } catch (Exception ex) { Debug.WriteLine("Problem in " + GetType().Name + " " + MethodBase.GetCurrentMethod()!.Name + " " + ex.Message); throw; } return newEmployee.Id; } // // Update an Employee // public async Task<UpdateStatus> Update(Employee updatedEmployee) { UpdateStatus status; try { status = await _repo.Update(updatedEmployee); } catch (Exception ex) { Debug.WriteLine("Problem in " + GetType().Name + " " + MethodBase.GetCurrentMethod()!.Name + " " + ex.Message); throw; } return status; } // // Delete an Employee // public async Task<int> Delete(int? id) { int employeesDeleted; try { employeesDeleted = await _repo.Delete((int)id!); } catch (Exception ex) { Debug.WriteLine("Problem in " + GetType().Name + " " + MethodBase.GetCurrentMethod()!.Name + " " + ex.Message); throw; } return employeesDeleted; } } }