EnVisageOnline/Main/Source/EnVisage/Code/BLL/CreditDepartmentManager.cs

86 lines
2.4 KiB
C#

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;
using EnVisage.Models;
namespace EnVisage.Code.BLL
{
public class CreditDepartmentManager : ManagerBase<CreditDepartment, CreditDepartmentModel>
{
public CreditDepartmentManager(EnVisageEntities dbContext)
: base(dbContext)
{
}
protected override CreditDepartment InitInstance()
{
return new CreditDepartment { Id = Guid.NewGuid() };
}
protected override CreditDepartment RetrieveReadOnlyById(Guid key)
{
return DataTable.AsNoTracking().FirstOrDefault(t => t.Id == key);
}
public override DbSet<CreditDepartment> DataTable
{
get
{
return DbContext.CreditDepartments;
}
}
public CreditDepartmentModel LoadCreditDepartmentModel(Guid departmentId)
{
if (departmentId == Guid.Empty)
return null;
return CreditDepartmentModelBasicQuery.FirstOrDefault(x => x.Id == departmentId);
}
public List<CreditDepartmentModel> LoadCreditDepartments()
{
return CreditDepartmentModelBasicQuery.ToList();
}
public List<CreditDepartmentModel> GetCreditDepartmentsByExpCats(IEnumerable<Guid> expCats)
{
if (expCats == null)
return LoadCreditDepartments();
var result = DbContext.CreditDepartments.Include(x => x.ExpenditureCategory)
.Where(x => x.ExpenditureCategory.Where(e => expCats.Contains(e.Id)).Any())
.Select(x => new CreditDepartmentModel()
{
Id = x.Id,
Name = x.Name,
CreditNumber = x.CreditNumber
}).ToList();
return result;
}
#region Private Members
private IQueryable<CreditDepartmentModel> CreditDepartmentModelBasicQuery
{
get
{
var query = DataTable.Include(x => x.ExpenditureCategory).AsNoTracking()
.Select(x =>
new CreditDepartmentModel()
{
Id = x.Id,
Name = x.Name,
CreditNumber = x.CreditNumber,
ExpenditureCategoryCount = x.ExpenditureCategory.Count
});
return query;
}
}
#endregion
}
}