После подготовки слоя доступа к данным, пришло время слоя бизнес логики.
В классе BLLJobs производится подключение к DAL слою (вот тут и пригодился инстанс, сконфигурированный в JobsProvider) извлечение DAL объектов, упаковка их в BLL объекты и предоставление пользовательскому интерфейсу.
using System;
using System.Collections.Generic;
using System.Linq;
namespace Paging
{
/// <summary>
/// //Реализуем BLL
/// </summary>
public class BLLJobs
{
public BLLJobs()
{
JobNm = String.Empty;
JobId = 0;
}
public BLLJobs(String jobNm)
{
JobId = 0;
JobNm = jobNm;
}
public BLLJobs(Int32 jobId, String jobNm)
{
JobId = jobId;
JobNm = jobNm;
}
public int JobId { get; set; }
public string JobNm { get; set; }
//Упаковка объекта из DAL слоя в объект BLL слоя
private static BLLJobs GetJobFromDalJobs(JobDetails record)
{
if (record == null)
return null;
var bllJob = new BLLJobs(record.JobId, record.JobNm);
return bllJob;
}
//Получение списка BLL объектов
private static List<BLLJobs> GetListJobsFromDalJobs(List<JobDetails> recordset)
{
return recordset.Select(record => GetJobFromDalJobs(record)).ToList();
}
//Метод для ObjectDataSource
public static List<BLLJobs> GetJobs()
{
var daLjobscoll = JobsProvider.Instance.GetJobs();
var blLjobscoll = GetListJobsFromDalJobs(daLjobscoll);
return blLjobscoll;
}
//Метод для ObjectDataSource
public static BLLJobs GetJobById(Int32 jobId)
{
var job = JobsProvider.Instance.GetJobById(jobId);
var blljob = GetJobFromDalJobs(job);
return blljob;
}
}
}
Есть некоторое отличие в BLL классе BLLEmployees - придется добавить метод для пейджинга:GetPageIndex, который рассчитывает индекс страницы. в обоих классах BLL слоя совмещены функционал и создание свойств - оберток объекта DAL слоя. Разумно было бы разнести эти моменты в разные классы - но в небольшом демонстрационном проектике все таки внимание больше заострено на самом пейджинге, нежели на проектировании архитектуры. Итак класс BLLEmployees содержит методы, позволяющие подключиться к DAL слою через инстанс (методы GetEmployeeFromDalEmployees и GetListEmployeesFromDalEmployees ), получить данные, упаковать их в BLL объекты и предоставить объекту ObjectdataSource для последующей визуализации.
using System;
using System.Collections.Generic;
using System.Linq;
namespace Paging
{
/// <summary>
/// //Реализуем BLL
/// </summary>
public class BLLEmployees
{
public BLLEmployees()
{
LastName = "";
FirstName = "";
JobId = 0;
EmpId = 0;
}
public BLLEmployees(Int32 empId, Int32 jobId, String firstName, String lastName, Double salary)
{
EmpId = empId;
JobId = jobId;
FirstName = firstName;
LastName = lastName;
Salary = salary;
}
public int EmpId { get; set; }
public int JobId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public double Salary { get; set; }
public String FullName
{
get {return LastName + " " + FirstName;}
}
//Упаковка объекта из DAL слоя в объект BLL слоя
private static BLLEmployees GetEmployeeFromDalEmployees(EmployeeDetails record)
{
if (record == null)
return null;
var BLLEmployee =
new BLLEmployees(record.EmpId, record.JobId, record.FirstName, record.LastName, record.Salary);
return BLLEmployee;
}
//Получение списка BLL объектов
private static List<BLLEmployees> GetListEmployeesFromDalEmployees(List<EmployeeDetails> recordset)
{
if (recordset == null)
return null;
return recordset.Select(record => GetEmployeeFromDalEmployees(record)).ToList();
}
//Метод для ObjectDataSource
public static List<BLLEmployees> GetEmployees(int jobId, int startRowIndex, int maximumRows, String employeesSort)
{
List<BLLEmployees> listEmployees;
var recordset = EmployeesProvider.Instance.GetEmployees(jobId,GetPageIndex(startRowIndex,maximumRows),maximumRows,employeesSort);
listEmployees = GetListEmployeesFromDalEmployees(recordset);
return listEmployees;
}
//Метод для ObjectDataSource
public static Int32 GetEmployeesCount(Int32 jobId)
{
int employeesCount = EmployeesProvider.Instance.GetEmployeesCount(jobId);
return employeesCount;
}
//Расчет индекса страницы для пейджинга
protected static int GetPageIndex(int startRowIndex, int maximumRows)
{
if (maximumRows <= 0)
return 0;
return (int)Math.Floor(startRowIndex / (double)maximumRows);
}
//Обновление колонки "Salary"
public static bool UpdateEmployee(Int32 empId,Double salary)
{
var employee = new EmployeeDetails(empId,0, "", "", salary);
var ret = EmployeesProvider.Instance.UpdateEmployee(employee);
return ret;
}
}
}
В следующем разделе создадим объекты пользовательского интерфейса и настроим их на соответствующие классы BLL.
В классе BLLJobs производится подключение к DAL слою (вот тут и пригодился инстанс, сконфигурированный в JobsProvider) извлечение DAL объектов, упаковка их в BLL объекты и предоставление пользовательскому интерфейсу.
using System;
using System.Collections.Generic;
using System.Linq;
namespace Paging
{
/// <summary>
/// //Реализуем BLL
/// </summary>
public class BLLJobs
{
public BLLJobs()
{
JobNm = String.Empty;
JobId = 0;
}
public BLLJobs(String jobNm)
{
JobId = 0;
JobNm = jobNm;
}
public BLLJobs(Int32 jobId, String jobNm)
{
JobId = jobId;
JobNm = jobNm;
}
public int JobId { get; set; }
public string JobNm { get; set; }
//Упаковка объекта из DAL слоя в объект BLL слоя
private static BLLJobs GetJobFromDalJobs(JobDetails record)
{
if (record == null)
return null;
var bllJob = new BLLJobs(record.JobId, record.JobNm);
return bllJob;
}
//Получение списка BLL объектов
private static List<BLLJobs> GetListJobsFromDalJobs(List<JobDetails> recordset)
{
return recordset.Select(record => GetJobFromDalJobs(record)).ToList();
}
//Метод для ObjectDataSource
public static List<BLLJobs> GetJobs()
{
var daLjobscoll = JobsProvider.Instance.GetJobs();
var blLjobscoll = GetListJobsFromDalJobs(daLjobscoll);
return blLjobscoll;
}
//Метод для ObjectDataSource
public static BLLJobs GetJobById(Int32 jobId)
{
var job = JobsProvider.Instance.GetJobById(jobId);
var blljob = GetJobFromDalJobs(job);
return blljob;
}
}
}
Есть некоторое отличие в BLL классе BLLEmployees - придется добавить метод для пейджинга:GetPageIndex, который рассчитывает индекс страницы. в обоих классах BLL слоя совмещены функционал и создание свойств - оберток объекта DAL слоя. Разумно было бы разнести эти моменты в разные классы - но в небольшом демонстрационном проектике все таки внимание больше заострено на самом пейджинге, нежели на проектировании архитектуры. Итак класс BLLEmployees содержит методы, позволяющие подключиться к DAL слою через инстанс (методы GetEmployeeFromDalEmployees и GetListEmployeesFromDalEmployees ), получить данные, упаковать их в BLL объекты и предоставить объекту ObjectdataSource для последующей визуализации.
using System;
using System.Collections.Generic;
using System.Linq;
namespace Paging
{
/// <summary>
/// //Реализуем BLL
/// </summary>
public class BLLEmployees
{
public BLLEmployees()
{
LastName = "";
FirstName = "";
JobId = 0;
EmpId = 0;
}
public BLLEmployees(Int32 empId, Int32 jobId, String firstName, String lastName, Double salary)
{
EmpId = empId;
JobId = jobId;
FirstName = firstName;
LastName = lastName;
Salary = salary;
}
public int EmpId { get; set; }
public int JobId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public double Salary { get; set; }
public String FullName
{
get {return LastName + " " + FirstName;}
}
//Упаковка объекта из DAL слоя в объект BLL слоя
private static BLLEmployees GetEmployeeFromDalEmployees(EmployeeDetails record)
{
if (record == null)
return null;
var BLLEmployee =
new BLLEmployees(record.EmpId, record.JobId, record.FirstName, record.LastName, record.Salary);
return BLLEmployee;
}
//Получение списка BLL объектов
private static List<BLLEmployees> GetListEmployeesFromDalEmployees(List<EmployeeDetails> recordset)
{
if (recordset == null)
return null;
return recordset.Select(record => GetEmployeeFromDalEmployees(record)).ToList();
}
//Метод для ObjectDataSource
public static List<BLLEmployees> GetEmployees(int jobId, int startRowIndex, int maximumRows, String employeesSort)
{
List<BLLEmployees> listEmployees;
var recordset = EmployeesProvider.Instance.GetEmployees(jobId,GetPageIndex(startRowIndex,maximumRows),maximumRows,employeesSort);
listEmployees = GetListEmployeesFromDalEmployees(recordset);
return listEmployees;
}
//Метод для ObjectDataSource
public static Int32 GetEmployeesCount(Int32 jobId)
{
int employeesCount = EmployeesProvider.Instance.GetEmployeesCount(jobId);
return employeesCount;
}
//Расчет индекса страницы для пейджинга
protected static int GetPageIndex(int startRowIndex, int maximumRows)
{
if (maximumRows <= 0)
return 0;
return (int)Math.Floor(startRowIndex / (double)maximumRows);
}
//Обновление колонки "Salary"
public static bool UpdateEmployee(Int32 empId,Double salary)
{
var employee = new EmployeeDetails(empId,0, "", "", salary);
var ret = EmployeesProvider.Instance.UpdateEmployee(employee);
return ret;
}
}
}
В следующем разделе создадим объекты пользовательского интерфейса и настроим их на соответствующие классы BLL.
Комментариев нет:
Отправить комментарий