using EnVisage.Models; using System; using System.Collections.Generic; using System.Data.Entity; using System.Linq; using System.Web; namespace EnVisage.Code.BLL { public class ExpenditureCategoryManager { private readonly EnVisageEntities _dbContext; private readonly bool _isContexLocal = false; public ExpenditureCategoryManager(EnVisageEntities dbContext) { if (dbContext == null) { _dbContext = new EnVisageEntities(); _isContexLocal = true; } else { _dbContext = dbContext; } } public void Dispose() { if (_isContexLocal) _dbContext.Dispose(); } #region Public Methods /// /// Loads a Expenditure Category from the database. /// /// Unique identifier of the Expenditure Category. /// Indicates that object will not be saved later in the code. Use false if you need to save an updated object. /// A object retrieved from database. public ExpenditureCategory Load(Guid? value, bool isReadOnly = true) { if (value == null || value == Guid.Empty) return new ExpenditureCategory(); return isReadOnly ? _dbContext.ExpenditureCategory.AsNoTracking().FirstOrDefault(t => t.Id == value) : _dbContext.ExpenditureCategory.Find(value); } public void Save(ExpenditureCategoryModel model) { if (model == null) throw new ArgumentNullException("model"); #region Save ExpenditureCategory data ExpenditureCategory dbObj = null; if (model.Id != Guid.Empty) dbObj = _dbContext.ExpenditureCategory.Find(model.Id); if (dbObj == null) { dbObj = new ExpenditureCategory { Id = Guid.NewGuid() }; } model.CopyTo(dbObj); dbObj.CGEFX = "CG"; if (model.Id == Guid.Empty) _dbContext.ExpenditureCategory.Add(dbObj); else _dbContext.Entry(dbObj).State = EntityState.Modified; #endregion if (_isContexLocal) _dbContext.SaveChanges(); } public List> GetCategoriesWithUoMValues() { // SA. ENV-839 var query = (from e in _dbContext.ExpenditureCategory.AsNoTracking() join f in _dbContext.VW_ExpenditureCategory.AsNoTracking() on e.Id equals f.Id orderby f.ExpCategoryWithCcName select new { Id = e.Id, Name = f.ExpCategoryWithCcName, UoMValue = e.UOM.UOMValue }); List> ret = new List>(); foreach (var item in query) { ret.Add(new Tuple(item.Id, item.Name, item.UoMValue)); } return ret; } public Dictionary GetAllCategories() { // SA. ENV-839 var query = (from e in _dbContext.ExpenditureCategory.AsNoTracking() join f in _dbContext.VW_ExpenditureCategory.AsNoTracking() on e.Id equals f.Id orderby f.ExpCategoryWithCcName select new ExpenditureDetail { ExpenditureCategoryId = e.Id, ExpenditureCategoryName = f.ExpCategoryWithCcName, UOMId = e.UOMId, UOMValue = e.UOM.UOMValue, CGEFX = e.CGEFX, CreditId = e.CreditId, GLId = e.GLId, SystemAttributeOne = e.SystemAttributeOne, SystemAttributeTwo = e.SystemAttributeTwo, Type = e.Type ?? 0, UseType = e.UseType ?? 1, }); return query.ToDictionary(t=>t.ExpenditureCategoryId.ToString()); } #endregion } }