221 lines
8.3 KiB
C#
221 lines
8.3 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 UDFManager : ManagerBase<UserDefinedField, UDFModel>
|
|
{
|
|
public UDFManager(EnVisageEntities dbContext)
|
|
: base(dbContext)
|
|
{
|
|
}
|
|
protected override UserDefinedField InitInstance()
|
|
{
|
|
return new UserDefinedField { Id = Guid.NewGuid() };
|
|
}
|
|
|
|
protected override UserDefinedField RetrieveReadOnlyById(Guid key)
|
|
{
|
|
return DataTable.AsNoTracking().FirstOrDefault(t => t.Id == key);
|
|
}
|
|
public UDFModel Load(Guid? Id)
|
|
{
|
|
var udf = this.DataTable.Where(x => x.Id == Id.Value).FirstOrDefault();
|
|
if (udf != null && udf.Id != Guid.Empty)
|
|
return new UDFModel()
|
|
{
|
|
Id = udf.Id,
|
|
CreatorId = udf.CreatorId,
|
|
|
|
DefaultValue = udf.DefaultValue,
|
|
Description = udf.Description,
|
|
DomainId = udf.DomainId,
|
|
Label = udf.Label,
|
|
Name = udf.Name,
|
|
Required = udf.Required,
|
|
SortOrder = udf.SortOrder,
|
|
Status = udf.Status,
|
|
Type = udf.Type
|
|
};
|
|
else
|
|
return new UDFModel();
|
|
}
|
|
public override DbSet<UserDefinedField> DataTable
|
|
{
|
|
get
|
|
{
|
|
return DbContext.UserDefinedFields;
|
|
}
|
|
}
|
|
public override UserDefinedField Save(UDFModel model)
|
|
{
|
|
|
|
var udf = this.Load(model.Id);
|
|
|
|
model.LastUpdate = DateTime.Now;
|
|
|
|
return base.Save(model);
|
|
}
|
|
public void Delete(Guid Id)
|
|
{
|
|
var udf = this.Load(Id, false);
|
|
if (udf == null || udf.Id == Guid.Empty)
|
|
return;
|
|
var values=this.DbContext.UserDefinedValues.Where(x => x.UserDefinedFieldId == udf.Id).ToList();
|
|
if (values.Count > 0)
|
|
this.DbContext.UserDefinedValues.RemoveRange(values);
|
|
this.DataTable.Remove(udf);
|
|
if (IsContextLocal)
|
|
DbContext.SaveChanges();
|
|
}
|
|
public List<UDFValueCollection> LoadCollection(Guid parentId, UserDefinedFieldDomain type)
|
|
{
|
|
var vmCollectionList = new List<UDFValueCollection>();
|
|
var udfs = this.DbContext.UserDefinedFields.Where(x => x.DomainId == (int) type && x.Status);
|
|
foreach (var udf in udfs)
|
|
{
|
|
var m = new UDFModel()
|
|
{
|
|
Id = udf.Id,
|
|
CreatorId = udf.CreatorId,
|
|
DefaultValue = udf.DefaultValue,
|
|
Description = udf.Description,
|
|
DomainId = udf.DomainId,
|
|
Label = udf.Label,
|
|
Name = udf.Name,
|
|
Required = udf.Required,
|
|
SortOrder = udf.SortOrder,
|
|
Status = udf.Status,
|
|
Type = udf.Type
|
|
};
|
|
var vmCollection = new UDFValueCollection()
|
|
{
|
|
Id = m.Id,
|
|
Type = m.Type
|
|
};
|
|
var vm = new UDFValueModel();
|
|
var udfvs = this.DbContext.UserDefinedValues.Where(x => x.UserDefinedFieldId == udf.Id && x.ParentId == parentId).FirstOrDefault();
|
|
if (udfvs != null && udfvs.Id != Guid.Empty)
|
|
{
|
|
vm = new UDFValueModel()
|
|
{
|
|
Id = udfvs.Id,
|
|
UserDefinedFieldId = m.Id,
|
|
CreatorId = udfvs.CreatorId,
|
|
Value = udfvs.Value,
|
|
ParentId = udfvs.ParentId,
|
|
Label = m.Label,
|
|
DefaultValue = m.DefaultValue,
|
|
Required=m.Required,
|
|
Area = m.DomainId
|
|
};
|
|
}
|
|
else
|
|
{
|
|
vm = new UDFValueModel()
|
|
{
|
|
DefaultValue = m.DefaultValue,
|
|
Value = m.DefaultValue,
|
|
UserDefinedFieldId = m.Id,
|
|
Id = Guid.Empty,
|
|
Label = m.Label,
|
|
Required = m.Required,
|
|
Area= m.DomainId
|
|
};
|
|
}
|
|
vmCollection.Values = vm;
|
|
vmCollectionList.Add(vmCollection);
|
|
}
|
|
return vmCollectionList;
|
|
}
|
|
public IQueryable<UDFModel> LoadUDFListByArea(int area)
|
|
{
|
|
return UdfModelBasicQuery.Where(x => x.DomainId == area);
|
|
}
|
|
public void saveValue(UDFValueModel model, Guid LabelId, Guid ParentId, Guid UserID)
|
|
{
|
|
if (model.Id == Guid.Empty && ! string.IsNullOrEmpty(model.Value) && model.Value != model.DefaultValue)
|
|
{
|
|
var udfv = new UserDefinedValue()
|
|
{
|
|
Id = Guid.NewGuid(),
|
|
UserDefinedFieldId = LabelId,
|
|
Status = true,
|
|
CreatorId = UserID,
|
|
EntryTimeStamp = DateTime.Now,
|
|
LastUpdate = DateTime.Now,
|
|
ModifiedById = UserID,
|
|
ParentId = ParentId,
|
|
Value = model.Value
|
|
|
|
};
|
|
this.DbContext.UserDefinedValues.Add(udfv);
|
|
}
|
|
else {
|
|
var udfv = this.DbContext.UserDefinedValues.Where(x => x.Id == model.Id).FirstOrDefault();
|
|
if (udfv != null && udfv.Id != Guid.Empty)
|
|
{
|
|
//check to see if the value has changed and its not the default value
|
|
if (udfv.Value != model.Value && model.Value != model.DefaultValue)
|
|
{
|
|
udfv.LastUpdate = DateTime.Now;
|
|
udfv.ModifiedById = UserID;
|
|
udfv.Value = model.Value;
|
|
this.DbContext.Entry(udfv).State = EntityState.Modified;
|
|
}//if the value has changed and its the default value remove the value record
|
|
else if (udfv.Value != model.Value && model.Value == model.DefaultValue)
|
|
{
|
|
this.DbContext.UserDefinedValues.Remove(udfv);
|
|
this.DbContext.Entry(udfv).State = EntityState.Deleted;
|
|
}
|
|
}
|
|
else if (model.Value != model.DefaultValue)
|
|
{
|
|
udfv = new UserDefinedValue()
|
|
{
|
|
Id = Guid.NewGuid(),
|
|
UserDefinedFieldId = LabelId,
|
|
Status = true,
|
|
CreatorId = UserID,
|
|
EntryTimeStamp = DateTime.Now,
|
|
LastUpdate = DateTime.Now,
|
|
ModifiedById = UserID,
|
|
ParentId = ParentId,
|
|
Value = model.Value
|
|
|
|
};
|
|
this.DbContext.UserDefinedValues.Add(udfv);
|
|
}
|
|
}
|
|
if (this.IsContextLocal)
|
|
this.DbContext.SaveChanges();
|
|
}
|
|
public IQueryable<UDFModel> UdfModelBasicQuery
|
|
{
|
|
get
|
|
{
|
|
return from c in DbContext.UserDefinedFields.AsNoTracking()
|
|
select new UDFModel()
|
|
{
|
|
Id = c.Id,
|
|
CreatorId = c.CreatorId,
|
|
|
|
DefaultValue = c.DefaultValue,
|
|
Description = c.Description,
|
|
DomainId = c.DomainId,
|
|
Label = c.Label,
|
|
Name = c.Name,
|
|
Required = c.Required,
|
|
SortOrder = c.SortOrder,
|
|
Status = c.Status,
|
|
Type = c.Type
|
|
};
|
|
}
|
|
}
|
|
}
|
|
}
|