CEL_Payroll/Payroll.BO/Survey/Survey.cs
2024-09-17 14:30:13 +06:00

489 lines
14 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Ease.CoreV35;
using Ease.CoreV35.Model;
using Ease.CoreV35.Caching;
using System.Data.Linq.Mapping;
namespace Payroll.BO
{
[Serializable]
public class Survey : AuditTrailBase
{
#region Cache Store
private static Cache _cache = new Cache(typeof(Survey));
#endregion
#region Constructor
public Survey()
{
_SurveyID = null;
_title = string.Empty;
_categoryID = 0;
_description = string.Empty;
_fromDate = DateTime.MinValue;
_toDate = DateTime.MinValue;
_publishDate = null;
_isPublished = false;
_isForCelyStoped = false;
_surveyType = EnumSurveyType.None;
}
#endregion
#region Properties
#region SurveyID : ID
private ID _SurveyID;
public ID SurveyID
{
get { return _SurveyID; }
set
{
base.OnPropertyChange<ID>("SurveyID", _SurveyID, value);
_SurveyID = value;
}
}
#endregion
#region Title : string
private string _title;
public string Title
{
get { return _title; }
set
{
base.OnPropertyChange<string>("Title", _title, value);
_title = value;
}
}
#endregion
#region CategoryID : int
private int _categoryID;
public int CategoryID
{
get { return _categoryID; }
set
{
base.OnPropertyChange<int>("CategoryID", _categoryID, value);
_categoryID = value;
}
}
#endregion
#region Description : string
private string _description;
public string Description
{
get { return _description; }
set
{
base.OnPropertyChange<string>("Description", _description, value);
_description = value;
}
}
#endregion
#region PublishDate : DateTime
private DateTime? _publishDate;
public DateTime? PublishDate
{
get { return _publishDate; }
set
{
if (this._publishDate != value)
base.OnPropertyChange<DateTime>("PublishDate", _publishDate, value);
_publishDate = value;
}
}
#endregion
#region FromDate : DateTime
private DateTime _fromDate;
public DateTime FromDate
{
get { return _fromDate; }
set
{
base.OnPropertyChange<DateTime>("FromDate", _fromDate, value);
_fromDate = value;
}
}
#endregion
#region ToDate : DateTime
private DateTime _toDate;
public DateTime ToDate
{
get { return _toDate; }
set
{
base.OnPropertyChange<DateTime>("ToDate", _toDate, value);
_toDate = value;
}
}
#endregion
#region Survey Type : EnumSurveyType
private EnumSurveyType _surveyType;
public EnumSurveyType SurveyType
{
get { return _surveyType; }
set
{
base.OnPropertyChange<short>("SurveyType", (short)_surveyType,(short) value);
_surveyType = value;
}
}
#endregion
#region IsForCelyStoped : bool
private bool _isForCelyStoped;
public bool IsForCelyStoped
{
get { return _isForCelyStoped; }
set
{
base.OnPropertyChange<bool>("IsForCelyStoped", _isForCelyStoped, value);
_isForCelyStoped = value;
}
}
#endregion
#region IsPublished : bool
private bool _isPublished;
public bool IsPublished
{
get { return _isPublished; }
set
{
base.OnPropertyChange<bool>("IsPublished", _isPublished, value);
_isPublished = value;
}
}
#endregion
#region Category
private SurveyCategory _category;
public SurveyCategory Category
{
get
{
if (_category == null)
{
_category = SurveyCategory.Get(ID.FromInteger(_categoryID));
}
return _category;
}
set { _category = value; }
}
#endregion
#region SurveyWeightDefinition
private ObjectsTemplate<SurveyWeightDefinition> _SurveyWeightDefinitions;
public ObjectsTemplate<SurveyWeightDefinition> SurveyWeightDefinitions
{
get
{
if (_SurveyWeightDefinitions == null)
{
_SurveyWeightDefinitions = new ObjectsTemplate<SurveyWeightDefinition>();
if (!this.ID.IsUnassigned)
_SurveyWeightDefinitions = SurveyWeightDefinition.GetSurveyWeightDefinition(this.ID);
}
return _SurveyWeightDefinitions;
}
set { _SurveyWeightDefinitions = value; }
}
#endregion
#region Service Factory IPFTransactionService : IPFTransactionService
internal static ISurveyService Service
{
get { return Services.Factory.CreateService<ISurveyService>(typeof(ISurveyService)); }
}
#endregion
#region SurveyQuestion property
private ObjectsTemplate<SurveyQuestion> _surveyQuestions;
public ObjectsTemplate<SurveyQuestion> SurveyQuestions
{
get
{
if (_surveyQuestions == null)
{
_surveyQuestions = new ObjectsTemplate<SurveyQuestion>();
if (!this.ID.IsUnassigned)
_surveyQuestions = SurveyQuestion.GetSurveyQuestion(this.ID);
}
return _surveyQuestions;
}
set { _surveyQuestions = value; }
}
#endregion
#region SurveyQuestion property
private ObjectsTemplate<SurveyOrganization> _surveyOrganizations;
public ObjectsTemplate<SurveyOrganization> SurveyOrganizations
{
get
{
if (_surveyOrganizations == null || _surveyOrganizations.Count==0)
{
_surveyOrganizations = new ObjectsTemplate<SurveyOrganization>();
if (!this.ID.IsUnassigned)
_surveyOrganizations = SurveyOrganization.GetSurveyOrganization(this.ID);
}
return _surveyOrganizations;
}
set { _surveyOrganizations = value; }
}
#endregion
#region SurveyEmployee property
private ObjectsTemplate<SurveyEmployee> _surveyEmployees;
public ObjectsTemplate<SurveyEmployee> SurveyEmployees
{
get
{
if (_surveyEmployees == null)
{
_surveyEmployees = new ObjectsTemplate<SurveyEmployee>();
if (!this.ID.IsUnassigned)
_surveyEmployees = SurveyEmployee.GetSurveyEmployee(this.ID);
}
return _surveyEmployees;
}
set { _surveyEmployees = value; }
}
#endregion
#region SurveyAnswerCount property
private ObjectsTemplate<SurveyAnswerCount> _surveyAnswerCounts;
public ObjectsTemplate<SurveyAnswerCount> SurveyAnswerCounts
{
get
{
if (_surveyAnswerCounts == null)
{
_surveyAnswerCounts = new ObjectsTemplate<SurveyAnswerCount>();
if (!this.ID.IsUnassigned)
_surveyAnswerCounts = SurveyAnswerCount.GetSurveyAnswerCount(this.ID);
}
return _surveyAnswerCounts;
}
set { _surveyAnswerCounts = value; }
}
#endregion
#region SurveyResult property
private ObjectsTemplate<SurveyResult> _surveyResults;
public ObjectsTemplate<SurveyResult> SurveyResults
{
get
{
if (_surveyResults == null)
{
_surveyResults = new ObjectsTemplate<SurveyResult>();
if (!this.ID.IsUnassigned)
_surveyResults = SurveyResult.GetSurveyResult(this.ID);
}
return _surveyResults;
}
set { _surveyResults = value; }
}
#endregion
#endregion
#region Functions
public static Survey Get(ID nID)
{
Survey oSurvey = null;
#region Cache Header
oSurvey = (Survey)_cache["Get", oSurvey];
if (oSurvey != null)
return oSurvey;
#endregion
oSurvey = Survey.Service.Get(nID);
#region Cache Footer
_cache.Add(oSurvey, "Get", oSurvey);
#endregion
return oSurvey;
}
public static ObjectsTemplate<Survey> Get()
{
#region cache header
ObjectsTemplate<Survey> Surveys = _cache["Get"] as ObjectsTemplate<Survey>;
if (Surveys != null)
return Surveys;
#endregion
try
{
Surveys = Service.Get();
}
catch (ServiceException e)
{
throw new Exception(e.Message, e);
}
#region cache footer
_cache.Add(Surveys, "Get");
#endregion
return Surveys;
}
public static ObjectsTemplate<Survey> Get(DateTime today)
{
ObjectsTemplate<Survey> oSurvey = null;
#region Cache Header
oSurvey = (ObjectsTemplate<Survey>)_cache["Get"];
if (oSurvey != null)
return oSurvey;
#endregion
oSurvey = Service.Get(today);
#region Cache Footer
_cache.Add(oSurvey, "Get");
#endregion
return oSurvey;
}
public static ObjectsTemplate<Survey> Get(DateTime fromDT, DateTime toDT)
{
ObjectsTemplate<Survey> oSurvey = null;
oSurvey = Service.Get(fromDT, toDT);
return oSurvey;
}
public static ObjectsTemplate<Survey> Get(int categoryId, DateTime fromDT, DateTime toDT)
{
ObjectsTemplate<Survey> oSurvey = null;
oSurvey = Service.Get(categoryId, fromDT, toDT);
return oSurvey;
}
public static ObjectsTemplate<Survey> GetSurveyForEmployee(Employee oEmp,DateTime dt)
{
ObjectsTemplate<Survey> oNewSurveys = new ObjectsTemplate<Survey>();
ObjectsTemplate<Survey> oSurveys = Survey.Get(dt);
foreach (Survey sr in oSurveys)
{
SurveyEmployee oSurveyEmployee = sr.SurveyEmployees.Find(delegate(SurveyEmployee se) { return se.EmployeeID == oEmp.ID.Integer; });
if (oSurveyEmployee == null)
{
SurveyOrganization oSurveyOrganization = sr.SurveyOrganizations.Find(delegate(SurveyOrganization so) { return so.DepartmentID == oEmp.DepartmentID || so.LocationID == oEmp.LocationID || so.GradeID == oEmp.GradeID; });
if(oSurveyOrganization !=null)
oNewSurveys.Add(sr);
}
else
{
oNewSurveys.Add(sr);
}
}
return oNewSurveys;
}
public static ObjectsTemplate<Survey> Get(int categoryId)
{
#region Cache Header
ObjectsTemplate<Survey> Surveys = _cache["Get", categoryId] as ObjectsTemplate<Survey>;
if (Surveys != null)
return Surveys;
#endregion
try
{
Surveys = Service.Get(categoryId);
}
catch (ServiceException e)
{
throw new Exception(e.Message, e);
}
#region Cache Footer
_cache.Add(Surveys, "Get", categoryId);
#endregion
return Surveys;
}
public ID Save()
{
base.SetAuditTrailProperties();
return Survey.Service.Save(this);
}
public void Delete(ID id)
{
Survey.Service.Delete(id);
}
public void Publish(Survey survey)
{
Survey.Service.Publish(survey);
}
public void Stop(Survey survey)
{
Survey.Service.Stop(survey);
}
#endregion
}
#region ISurvey Service
public interface ISurveyService
{
Survey Get(ID id);
ObjectsTemplate<Survey> Get();
ObjectsTemplate<Survey> Get(int categoryId);
ObjectsTemplate<Survey> Get(DateTime today);
//ObjectsTemplate<Survey> Get(Employee oEmp);
ObjectsTemplate<Survey> Get(DateTime fromDT, DateTime toDT);
ObjectsTemplate<Survey> Get(int categoryId, DateTime fromDT, DateTime toDT);
ID Save(Survey item);
void Delete(ID id);
void Publish(Survey survey);
void Stop(Survey survey);
}
#endregion
}